f-28: fix: add proper dhcp handle
Signed-off-by: GnomeZworc <nicolas.boufidjeline@g3e.fr>
This commit is contained in:
parent
848f965883
commit
32b78a84f9
3 changed files with 46 additions and 35 deletions
|
|
@ -81,27 +81,31 @@ func createSubnet(db *badger.DB, subnetName string, d subnetData) error {
|
|||
switch d.mode {
|
||||
case "vxlan":
|
||||
if err := netns.Call(d.vpc, func() error {
|
||||
return netif.AddrAdd(d.bridge, d.interfaceIP)
|
||||
if err := netif.AddrAdd(d.bridge, d.interfaceIP); err != nil {
|
||||
return fmt.Errorf("add addr: %w", err)
|
||||
}
|
||||
if err := netif.RouteAdd(d.bridge, d.cidr); err != nil {
|
||||
return fmt.Errorf("add route: %w", err)
|
||||
}
|
||||
if err := ebtables.DropARPToGateway(vethI, d.interfaceIP.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
return ebtables.DropDHCP(vethI, d.interfaceIP.String())
|
||||
}); err != nil {
|
||||
return fmt.Errorf("add addr to bridge in netns: %w", err)
|
||||
return fmt.Errorf("configure netns: %w", err)
|
||||
}
|
||||
case "bridge":
|
||||
if err := netns.Call(d.vpc, func() error {
|
||||
return netif.RouteAdd(d.bridge, d.cidr)
|
||||
if err := netif.AddrAdd(d.bridge, d.interfaceIP); err != nil {
|
||||
return fmt.Errorf("add addr: %w", err)
|
||||
}
|
||||
if err := netif.RouteAdd(d.bridge, d.cidr); err != nil {
|
||||
return fmt.Errorf("add route: %w", err)
|
||||
}
|
||||
return ebtables.DropDHCP(vethI, d.interfaceIP.String())
|
||||
}); err != nil {
|
||||
return fmt.Errorf("add route in netns: %w", err)
|
||||
return fmt.Errorf("configure netns: %w", err)
|
||||
}
|
||||
case "bridge":
|
||||
}
|
||||
|
||||
switch d.mode {
|
||||
case "vxlan":
|
||||
if err := ebtables.DropARPToGateway(d.bridge, d.interfaceIP.String()); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := ebtables.DropDHCP(d.bridge); err != nil {
|
||||
return err
|
||||
}
|
||||
case "bridge":
|
||||
}
|
||||
|
||||
return startDHCP(db, subnetName, d)
|
||||
|
|
|
|||
|
|
@ -70,18 +70,18 @@ func stopDHCP(db *badger.DB, subnetName string, d subnetData) error {
|
|||
|
||||
func deleteSubnetVxlan(d subnetData) error {
|
||||
vxlanIface := fmt.Sprintf("vxlan-%d", d.vxlanID)
|
||||
|
||||
if err := ebtables.DeleteARPToGateway(d.bridge, d.interfaceIP.String()); err != nil {
|
||||
return fmt.Errorf("delete ebtables arp rule: %w", err)
|
||||
}
|
||||
if err := ebtables.DeleteDHCP(d.bridge); err != nil {
|
||||
return fmt.Errorf("delete ebtables dhcp rule: %w", err)
|
||||
}
|
||||
vethI := "v-" + d.subnetID + "-i"
|
||||
|
||||
if err := netns.Call(d.vpc, func() error {
|
||||
if err := ebtables.DeleteARPToGateway(vethI, d.interfaceIP.String()); err != nil {
|
||||
return fmt.Errorf("delete ebtables arp rule: %w", err)
|
||||
}
|
||||
if err := ebtables.DeleteDHCP(vethI, d.interfaceIP.String()); err != nil {
|
||||
return fmt.Errorf("delete ebtables dhcp rule: %w", err)
|
||||
}
|
||||
return netif.DeleteLink(d.bridge)
|
||||
}); err != nil {
|
||||
return fmt.Errorf("delete bridge in netns: %w", err)
|
||||
return fmt.Errorf("delete netns resources: %w", err)
|
||||
}
|
||||
|
||||
if err := netif.DeleteLink(vxlanIface); err != nil {
|
||||
|
|
@ -99,10 +99,15 @@ func deleteSubnetVxlan(d subnetData) error {
|
|||
}
|
||||
|
||||
func deleteSubnetBridge(d subnetData) error {
|
||||
vethI := "v-" + d.subnetID + "-i"
|
||||
|
||||
if err := netns.Call(d.vpc, func() error {
|
||||
if err := ebtables.DeleteDHCP(vethI, d.interfaceIP.String()); err != nil {
|
||||
return fmt.Errorf("delete ebtables dhcp rule: %w", err)
|
||||
}
|
||||
return netif.DeleteLink(d.bridge)
|
||||
}); err != nil {
|
||||
return fmt.Errorf("delete bridge in netns: %w", err)
|
||||
return fmt.Errorf("delete netns resources: %w", err)
|
||||
}
|
||||
|
||||
if err := netif.DeleteLink("v-" + d.subnetID + "-e"); err != nil {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue