mirror of
https://github.com/cwinfo/yggdrasil-go.git
synced 2024-11-09 16:20:26 +00:00
Merge pull request #286 from neilalexander/fixndp
Fix ICMPv6 behaviour when populating peermacs
This commit is contained in:
commit
a8e6b864fd
@ -175,14 +175,17 @@ func (i *icmpv6) parse_packet_tun(datain []byte, datamac *[]byte) ([]byte, error
|
|||||||
case ipv6.ICMPTypeNeighborAdvertisement:
|
case ipv6.ICMPTypeNeighborAdvertisement:
|
||||||
if datamac != nil {
|
if datamac != nil {
|
||||||
var addr address.Address
|
var addr address.Address
|
||||||
|
var target address.Address
|
||||||
var mac macAddress
|
var mac macAddress
|
||||||
copy(addr[:], ipv6Header.Src[:])
|
copy(addr[:], ipv6Header.Src[:])
|
||||||
|
copy(target[:], datain[48:64])
|
||||||
copy(mac[:], (*datamac)[:])
|
copy(mac[:], (*datamac)[:])
|
||||||
neighbor := i.peermacs[addr]
|
// i.tun.core.log.Printf("Learning peer MAC %x for %x\n", mac, target)
|
||||||
|
neighbor := i.peermacs[target]
|
||||||
neighbor.mac = mac
|
neighbor.mac = mac
|
||||||
neighbor.learned = true
|
neighbor.learned = true
|
||||||
neighbor.lastadvertisement = time.Now()
|
neighbor.lastadvertisement = time.Now()
|
||||||
i.peermacs[addr] = neighbor
|
i.peermacs[target] = neighbor
|
||||||
}
|
}
|
||||||
return nil, errors.New("No response needed")
|
return nil, errors.New("No response needed")
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user