Use ICMPv6 NDP target instead of source address when populating peermacs

This commit is contained in:
Neil Alexander 2018-12-26 11:51:21 +00:00
parent 4e5906bf23
commit 9eeb482587
No known key found for this signature in database
GPG Key ID: A02A2019A2BB0944

View File

@ -175,10 +175,13 @@ func (i *icmpv6) parse_packet_tun(datain []byte, datamac *[]byte) ([]byte, error
case ipv6.ICMPTypeNeighborAdvertisement:
if datamac != nil {
var addr address.Address
var target address.Address
var mac macAddress
copy(addr[:], ipv6Header.Src[:])
copy(target[:], datain[48:64])
copy(mac[:], (*datamac)[:])
neighbor := i.peermacs[addr]
// i.tun.core.log.Println("Learning peer MAC", mac, "for", target)
neighbor := i.peermacs[target]
neighbor.mac = mac
neighbor.learned = true
neighbor.lastadvertisement = time.Now()