summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTero Marttila <[email protected]>2022-06-24 15:51:21 +0300
committerGitHub <[email protected]>2022-06-24 15:51:21 +0300
commitd65f28d10991354b3af0168001a4beea6b8242f9 (patch)
tree1645e8ebc353ac933316dc272c766edbc9d2cf4a
parent44eb5ea262e64fe2d564c7888c9bc5999e43e927 (diff)
parentd774220311b2d44c770e7431ec663c8875488a1e (diff)
Merge pull request #6 from neingeist/fix/restrict-familyHEADmasterdevel
🐛 Fix restricting address family when watching for changes
-rw-r--r--addr.go8
1 files changed, 8 insertions, 0 deletions
diff --git a/addr.go b/addr.go
index 0b7e301..d4c277c 100644
--- a/addr.go
+++ b/addr.go
@@ -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,