poib: assign link-local address according to RFC
RFC 4391 specifies that the IB interface GID should be re-used as IPv6 link-local address. Since the code in in6_get_hw_ifid() ignored IFT_INFINIBAND case, ibX interfaces ended up with the local address borrowed from some other interface, which is non-compliant. Use lowest eight bytes from GID for filling the link-local address, same as Linux. Reviewed by: bz (previous version), ae, hselasky, slavash, Sponsored by: Mellanox Technologies MFC after: 1 week Differential revision: https://reviews.freebsd.org/D20006
This commit is contained in:
parent
d86ecbe993
commit
c4cc609796
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=346596
@ -328,6 +328,14 @@ in6_get_hw_ifid(struct ifnet *ifp, struct in6_addr *in6)
|
||||
NET_EPOCH_EXIT(et);
|
||||
return -1;
|
||||
|
||||
case IFT_INFINIBAND:
|
||||
if (addrlen != 20) {
|
||||
NET_EPOCH_EXIT(et);
|
||||
return -1;
|
||||
}
|
||||
bcopy(addr + 12, &in6->s6_addr[8], 8);
|
||||
break;
|
||||
|
||||
default:
|
||||
NET_EPOCH_EXIT(et);
|
||||
return -1;
|
||||
|
Loading…
Reference in New Issue
Block a user