Fix broadcast addrs for nets smaller than /8
This commit is contained in:
parent
e8b9600ddb
commit
73f5c47fe2
@ -124,7 +124,7 @@ func bcast(ip *net.IPNet) *net.IPNet {
|
|||||||
|
|
||||||
offset := len(bc.IP) - len(bc.Mask)
|
offset := len(bc.IP) - len(bc.Mask)
|
||||||
for i := range bc.IP {
|
for i := range bc.IP {
|
||||||
if i-offset > 0 {
|
if i-offset >= 0 {
|
||||||
bc.IP[i] = ip.IP[i] | ^ip.Mask[i-offset]
|
bc.IP[i] = ip.IP[i] | ^ip.Mask[i-offset]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
30
beacon/beacon_test.go
Normal file
30
beacon/beacon_test.go
Normal file
@ -0,0 +1,30 @@
|
|||||||
|
package beacon
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
var addrToBcast = []struct {
|
||||||
|
addr, bcast string
|
||||||
|
}{
|
||||||
|
{"172.16.32.33/25", "172.16.32.127/25"},
|
||||||
|
{"172.16.32.129/25", "172.16.32.255/25"},
|
||||||
|
{"172.16.32.33/24", "172.16.32.255/24"},
|
||||||
|
{"172.16.32.33/22", "172.16.35.255/22"},
|
||||||
|
{"172.16.32.33/0", "255.255.255.255/0"},
|
||||||
|
{"172.16.32.33/32", "172.16.32.33/32"},
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestBroadcastAddr(t *testing.T) {
|
||||||
|
for _, tc := range addrToBcast {
|
||||||
|
_, net, err := net.ParseCIDR(tc.addr)
|
||||||
|
if err != nil {
|
||||||
|
t.Fatal(err)
|
||||||
|
}
|
||||||
|
bc := bcast(net).String()
|
||||||
|
if bc != tc.bcast {
|
||||||
|
t.Errorf("%q != %q", bc, tc.bcast)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user