diff options
| author | neingeist <[email protected]> | 2022-06-24 00:35:08 +0200 | 
|---|---|---|
| committer | neingeist <[email protected]> | 2022-06-24 14:07:29 +0200 | 
| commit | d774220311b2d44c770e7431ec663c8875488a1e (patch) | |
| tree | 1645e8ebc353ac933316dc272c766edbc9d2cf4a | |
| parent | 44eb5ea262e64fe2d564c7888c9bc5999e43e927 (diff) | |
🐛 Fix restricting address family when watching for changes
| -rw-r--r-- | addr.go | 8 | 
1 files changed, 8 insertions, 0 deletions
@@ -7,12 +7,14 @@ import (  	"net"  	"github.com/vishvananda/netlink" +	"github.com/vishvananda/netlink/nl"  )  type AddrSet struct {  	linkAttrs netlink.LinkAttrs  	linkChan  chan netlink.LinkUpdate  	addrChan  chan netlink.AddrUpdate +	family    Family  	addrs map[string]net.IP  } @@ -37,6 +39,7 @@ func InterfaceAddrs(iface string, family Family) (*AddrSet, error) {  		return nil, fmt.Errorf("netlink.LinkByName %v: %v", iface, err)  	} else {  		addrs.linkAttrs = *link.Attrs() +		addrs.family = family  	}  	// list @@ -91,6 +94,11 @@ func (addrs *AddrSet) Read() error {  				continue  			} +			addrUpdateFamily := Family(nl.GetIPFamily(addrUpdate.LinkAddress.IP)) +			if addrs.family != netlink.FAMILY_ALL && addrUpdateFamily != addrs.family { +				continue +			} +  			// XXX: scope and other filters?  			addrs.updateAddr(netlink.Addr{  				IPNet: &addrUpdate.LinkAddress,  | 
