@@ -174,7 +174,8 @@ func networkCreateAction(cmd *cobra.Command, args []string) error {
174
174
return err
175
175
}
176
176
177
- if mode == networks .ModeBridged {
177
+ switch mode {
178
+ case networks .ModeBridged :
178
179
if gateway != "" {
179
180
return fmt .Errorf ("network mode %q does not support specifying gateway" , mode )
180
181
}
@@ -183,32 +184,32 @@ func networkCreateAction(cmd *cobra.Command, args []string) error {
183
184
}
184
185
yq := fmt .Sprintf (`.networks.%q = {"mode":%q,"interface":%q}` , name , mode , intf )
185
186
return networkApplyYQ (yq )
186
- }
187
+ default :
188
+ if gateway == "" {
189
+ return fmt .Errorf ("network mode %q requires specifying gateway" , mode )
190
+ }
191
+ if intf != "" {
192
+ return fmt .Errorf ("network mode %q does not support specifying interface" , mode )
193
+ }
194
+ if ! strings .Contains (gateway , "/" ) {
195
+ gateway += "/24"
196
+ }
197
+ gwIP , gwMask , err := net .ParseCIDR (gateway )
198
+ if err != nil {
199
+ return fmt .Errorf ("failed to parse CIDR %q: %w" , gateway , err )
200
+ }
201
+ if gwIP .IsUnspecified () || gwIP .IsLoopback () {
202
+ return fmt .Errorf ("invalid IP address: %v" , gwIP )
203
+ }
204
+ gwMaskStr := "255.255.255.0"
205
+ if gwMask != nil {
206
+ gwMaskStr = net .IP (gwMask .Mask ).String ()
207
+ }
208
+ // TODO: check IP range collision
187
209
188
- if gateway == "" {
189
- return fmt .Errorf ("network mode %q requires specifying gateway" , mode )
190
- }
191
- if intf != "" {
192
- return fmt .Errorf ("network mode %q does not support specifying interface" , mode )
193
- }
194
- if ! strings .Contains (gateway , "/" ) {
195
- gateway += "/24"
196
- }
197
- gwIP , gwMask , err := net .ParseCIDR (gateway )
198
- if err != nil {
199
- return fmt .Errorf ("failed to parse CIDR %q: %w" , gateway , err )
200
- }
201
- if gwIP .IsUnspecified () || gwIP .IsLoopback () {
202
- return fmt .Errorf ("invalid IP address: %v" , gwIP )
203
- }
204
- gwMaskStr := "255.255.255.0"
205
- if gwMask != nil {
206
- gwMaskStr = net .IP (gwMask .Mask ).String ()
210
+ yq := fmt .Sprintf (`.networks.%q = {"mode":%q,"gateway":%q,"netmask":%q,"interface":%q}` , name , mode , gwIP .String (), gwMaskStr , intf )
211
+ return networkApplyYQ (yq )
207
212
}
208
- // TODO: check IP range collision
209
-
210
- yq := fmt .Sprintf (`.networks.%q = {"mode":%q,"gateway":%q,"netmask":%q,"interface":%q}` , name , mode , gwIP .String (), gwMaskStr , intf )
211
- return networkApplyYQ (yq )
212
213
}
213
214
214
215
func networkApplyYQ (yq string ) error {
0 commit comments