-
Notifications
You must be signed in to change notification settings - Fork 797
Open
Description
Let's consider following code:
link := &netlink.Dummy{
LinkAttrs: netlink.LinkAttrs{
Flags: net.FlagUp,
Name: "ntest",
},
}
if err := netlink.LinkAdd(link); err != nil {
fmt.Println("add", err)
return
}
addr := &netlink.Addr{
IPNet: &net.IPNet{
IP: net.ParseIP("192.168.22.19"),
Mask: net.CIDRMask(24, 32),
},
}
if err := netlink.AddrAdd(link, addr); err != nil {
fmt.Println("add addr", err)
return
}The code should add 192.168.22.19 address to device ntest, but it also adds broadcast address, which is some scenarios breaks eg. adding routes with error=invalid argument.
[root@machine] ip -4 a s ntest
6488: ntest: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
inet 192.168.22.19/24 brd 192.168.22.255 scope global ntest
valid_lft forever preferred_lft foreverFor me presented code should be equivalent to what following ip command does:
[root@root@machine] ip l a ntest type dummy
[root@root@machine] ip a a 192.168.22.19/24 dev ntest
[root@root@machine] ip -4 a s ntest
6489: ntest: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN group default
inet 192.168.22.19/24 scope global ntest
valid_lft forever preferred_lft foreverNot to this:
[root@root@machine] ip a a 192.168.22.19/24 brd 192.168.22.255 dev ntest
[root@root@machine] ip -4 a s ntest
6489: ntest: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default
inet 192.168.22.19/24 brd 192.168.22.255 scope global ntest
valid_lft forever preferred_lft foreveriptool makes end user responsibility to specify broadcast address if it is needed.
In my opinion this library should behave in the same way
The proposal for this issue is:
jjastrze-ovh@9a85a61
Metadata
Metadata
Assignees
Labels
No labels