Skip to content
Snippets Groups Projects
Verified Commit 7836e14b authored by Vladimír Čunát's avatar Vladimír Čunát
Browse files

lib/utils kr_sockaddr_key_same_addr(): more precision

... in case of IPv6 link-local addresses.
The casting isn't very nice, but we certainly rely on `family` being
always on the same offset anyway (and it's ensured by standards).
parent 46c0dbe0
No related branches found
No related tags found
2 merge requests!1327Update manager branch with the newest changes from master,!1286daemon/network: Use trie_t instead of map_t for network endpoints
......@@ -395,8 +395,8 @@ struct sockaddr *kr_sockaddr_from_key(struct sockaddr_storage *dst,
bool kr_sockaddr_key_same_addr(const char *key_a, const char *key_b)
{
const struct kr_sockaddr_key *kkey_a = (struct kr_sockaddr_key *) key_a;
const struct kr_sockaddr_key *kkey_b = (struct kr_sockaddr_key *) key_b;
const struct kr_sockaddr_in6_key *kkey_a = (struct kr_sockaddr_in6_key *) key_a;
const struct kr_sockaddr_in6_key *kkey_b = (struct kr_sockaddr_in6_key *) key_b;
if (kkey_a->family != kkey_b->family)
return false;
......@@ -407,6 +407,8 @@ bool kr_sockaddr_key_same_addr(const char *key_a, const char *key_b)
offset = offsetof(struct kr_sockaddr_in_key, address);
break;
case AF_INET6:
if (unlikely(kkey_a->scope != kkey_b->scope))
return false;
offset = offsetof(struct kr_sockaddr_in6_key, address);
break;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment