pkg/{encapsulation,mesh}: abstract encapsulation

This commit abstracts away encapsulation to more easily allow for
different types of encapsulation or compatibility with other networking
solutions.
This commit is contained in:
Lucas Servén Marín
2019-05-13 18:30:00 +02:00
parent d7ad946ff4
commit cd6eeeb1e7
7 changed files with 169 additions and 46 deletions

View File

@@ -68,3 +68,21 @@ func SetAddress(index int, cidr *net.IPNet) error {
}
return netlink.AddrReplace(link, &netlink.Addr{IPNet: cidr})
}
// DeleteAddresses removes all IP addresses of an interface.
func DeleteAddresses(index int) error {
link, err := netlink.LinkByIndex(index)
if err != nil {
return fmt.Errorf("failed to get link: %s", err)
}
addrs, err := netlink.AddrList(link, netlink.FAMILY_ALL)
if err != nil {
return err
}
for _, addr := range addrs {
if err := netlink.AddrDel(link, &addr); err != nil {
return fmt.Errorf("failed to delete address: %s", err)
}
}
return nil
}