1 // Copyright 2022-2025 The sacloud/iaas-api-go Authors
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 15 package naked
16 17 import "encoding/json"
18 19 // UserSubnet ユーザーサブネット
20 type UserSubnet struct {
21 DefaultRoute string `yaml:"default_route"`
22 NetworkMaskLen int `yaml:"network_mask_len"`
23 }
24 25 // UnmarshalJSON DefaultRouteがからの場合に"0.0.0.0"となることへの対応
26 func (s *UserSubnet) UnmarshalJSON(data []byte) error {
27 type alias UserSubnet
28 var tmp alias
29 err := json.Unmarshal(data, &tmp)
30 if err != nil {
31 return err
32 }
33 if tmp.DefaultRoute == "0.0.0.0" {
34 tmp.DefaultRoute = ""
35 }
36 *s = UserSubnet(tmp)
37 return nil
38 }
39