2023-05-29 07:16:50 +00:00
|
|
|
//go:build linux || darwin
|
|
|
|
|
|
2021-08-22 14:58:39 -07:00
|
|
|
package netlink
|
|
|
|
|
|
2023-05-29 06:44:58 +00:00
|
|
|
import (
|
|
|
|
|
"github.com/vishvananda/netlink"
|
|
|
|
|
)
|
|
|
|
|
|
2021-09-07 02:35:39 +00:00
|
|
|
func (n *NetLink) AddrList(link Link, family int) (
|
|
|
|
|
addresses []Addr, err error) {
|
2023-05-29 06:44:58 +00:00
|
|
|
netlinkLink := linkToNetlinkLink(&link)
|
|
|
|
|
netlinkAddresses, err := netlink.AddrList(netlinkLink, family)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
addresses = make([]Addr, len(netlinkAddresses))
|
|
|
|
|
for i := range netlinkAddresses {
|
|
|
|
|
addresses[i].Network = netIPNetToNetipPrefix(netlinkAddresses[i].IPNet)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return addresses, nil
|
2021-08-23 21:12:28 +00:00
|
|
|
}
|
|
|
|
|
|
2023-05-29 06:44:58 +00:00
|
|
|
func (n *NetLink) AddrReplace(link Link, addr Addr) error {
|
|
|
|
|
netlinkLink := linkToNetlinkLink(&link)
|
|
|
|
|
netlinkAddress := netlink.Addr{
|
|
|
|
|
IPNet: netipPrefixToIPNet(addr.Network),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return netlink.AddrReplace(netlinkLink, &netlinkAddress)
|
2021-08-22 14:58:39 -07:00
|
|
|
}
|