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