|
@@ -81,3 +81,25 @@ func deleteVxlan(name string) error {
|
|
|
|
|
|
return nil
|
|
return nil
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+func deleteVxlanByVNI(vni uint32) error {
|
|
|
|
+ defer osl.InitOSContext()()
|
|
|
|
+
|
|
|
|
+ links, err := netlink.LinkList()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return fmt.Errorf("failed to list interfaces while deleting vxlan interface by vni: %v", err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for _, l := range links {
|
|
|
|
+ if l.Type() == "vxlan" && l.(*netlink.Vxlan).VxlanId == int(vni) {
|
|
|
|
+ err = netlink.LinkDel(l)
|
|
|
|
+ if err != nil {
|
|
|
|
+ return fmt.Errorf("error deleting vxlan interface with id %d: %v", vni, err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return fmt.Errorf("could not find a vxlan interface to delete with id %d", vni)
|
|
|
|
+}
|