func getIfaceAddrs(iface *net.Interface) ([]netlink.Addr, error) { link := &netlink.Device{ netlink.LinkAttrs{ Index: iface.Index, }, } return netlink.AddrList(link, syscall.AF_INET) }
// sets IP4 addr on link removing any existing ones first func setAddr4(link *netlink.Vxlan, ipn *net.IPNet) error { addrs, err := netlink.AddrList(link, syscall.AF_INET) if err != nil { return err } for _, addr := range addrs { if err = netlink.AddrDel(link, &addr); err != nil { return fmt.Errorf("failed to delete IPv4 addr %s from %s", addr.String(), link.Attrs().Name) } } addr := netlink.Addr{ipn, ""} if err = netlink.AddrAdd(link, &addr); err != nil { return fmt.Errorf("failed to add IP address %s to %s: %s", ipn.String(), link.Attrs().Name, err) } return nil }