SUNRPC: compare scopeid for link-local addresses
For ipv6 link-local addresses, sunrpc do not compare those scope id. This patch let sunrpc compares scope id only on link-local addresses. Signed-off-by: Mi Jinlong <mijinlong@cn.fujitsu.com> Reviewed-by: Chuck Lever <chuck.lever@oracle.com> Reviewed-by: Jeff Layton <jlayton@redhat.com> Signed-off-by: J. Bruce Fields <bfields@redhat.com>
This commit is contained in:
parent
849a1cf13d
commit
038c01598e
|
@ -218,7 +218,13 @@ static inline bool __rpc_cmp_addr6(const struct sockaddr *sap1,
|
||||||
{
|
{
|
||||||
const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1;
|
const struct sockaddr_in6 *sin1 = (const struct sockaddr_in6 *)sap1;
|
||||||
const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
|
const struct sockaddr_in6 *sin2 = (const struct sockaddr_in6 *)sap2;
|
||||||
return ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr);
|
|
||||||
|
if (!ipv6_addr_equal(&sin1->sin6_addr, &sin2->sin6_addr))
|
||||||
|
return false;
|
||||||
|
else if (ipv6_addr_type(&sin1->sin6_addr) & IPV6_ADDR_LINKLOCAL)
|
||||||
|
return sin1->sin6_scope_id == sin2->sin6_scope_id;
|
||||||
|
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline bool __rpc_copy_addr6(struct sockaddr *dst,
|
static inline bool __rpc_copy_addr6(struct sockaddr *dst,
|
||||||
|
|
Reference in New Issue