Skip to content

Commit 41899c4

Browse files
committed
fix: fix creating bridged network interface
Signed-off-by: Dharsan <[email protected]>
1 parent 7ce79e3 commit 41899c4

File tree

1 file changed

+19
-19
lines changed

1 file changed

+19
-19
lines changed

cmd/limactl/network.go

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -182,34 +182,34 @@ func networkCreateAction(cmd *cobra.Command, args []string) error {
182182
if intf == "" {
183183
return fmt.Errorf("network mode %q requires specifying interface", mode)
184184
}
185+
yq := fmt.Sprintf(`.networks.%q = {"mode":%q,"interface":%q}`, name, mode, intf)
186+
return networkApplyYQ(yq)
185187
default:
186188
if gateway == "" {
187189
return fmt.Errorf("network mode %q requires specifying gateway", mode)
188190
}
189191
if intf != "" {
190192
return fmt.Errorf("network mode %q does not support specifying interface", mode)
191193
}
192-
}
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
193209

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)
207212
}
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)
213213
}
214214

215215
func networkApplyYQ(yq string) error {

0 commit comments

Comments
 (0)