Skip to content

Commit c5102cc

Browse files
committed
feat: check that address exists before adding
1 parent 6f880e1 commit c5102cc

1 file changed

Lines changed: 14 additions & 0 deletions

File tree

main.go

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,13 @@ func observeIPv4(link netlink.Link) error {
115115
return fmt.Errorf("parsing IPv4 address failed: %w", err)
116116
}
117117

118+
addrs, err := netlink.AddrList(link, netlink.FAMILY_V4)
119+
for _, address := range addrs {
120+
if address.IP.Equal(addr.IP) {
121+
return nil
122+
}
123+
}
124+
118125
if err := netlink.AddrAdd(link, addr); err != nil {
119126
slog.Warn("could not add IPv4 address", "addr", addr, "err", err)
120127
return nil
@@ -139,6 +146,13 @@ func observeIPv6(link netlink.Link) error {
139146
return fmt.Errorf("parsing IPv6 address failed: %w", err)
140147
}
141148

149+
addrs, err := netlink.AddrList(link, netlink.FAMILY_V6)
150+
for _, address := range addrs {
151+
if address.IP.Equal(addr6.IP) {
152+
return nil
153+
}
154+
}
155+
142156
if err := netlink.AddrAdd(link, addr6); err != nil {
143157
slog.Warn("could not add IPv6 address", "addr6", addr6, "err", err)
144158
return nil

0 commit comments

Comments
 (0)