mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 00:25:01 +00:00
lib: optimize apply_mask_ipv6()
This commit is contained in:
parent
caff7905e2
commit
32ca973920
24
lib/prefix.c
24
lib/prefix.c
@ -660,23 +660,13 @@ masklen2ip6 (const int masklen, struct in6_addr *netmask)
|
|||||||
void
|
void
|
||||||
apply_mask_ipv6 (struct prefix_ipv6 *p)
|
apply_mask_ipv6 (struct prefix_ipv6 *p)
|
||||||
{
|
{
|
||||||
u_char *pnt;
|
assert (p->prefixlen >= 0 && p->prefixlen <= IPV6_MAX_BITLEN);
|
||||||
int index;
|
u_int32_t *addr_word = (u_int32_t *) &p->prefix;
|
||||||
int offset;
|
u_int32_t *mask_word = (u_int32_t *) (maskbytes6 + p->prefixlen);
|
||||||
|
*addr_word++ &= *mask_word++;
|
||||||
index = p->prefixlen / 8;
|
*addr_word++ &= *mask_word++;
|
||||||
|
*addr_word++ &= *mask_word++;
|
||||||
if (index < 16)
|
*addr_word &= *mask_word;
|
||||||
{
|
|
||||||
pnt = (u_char *) &p->prefix;
|
|
||||||
offset = p->prefixlen % 8;
|
|
||||||
|
|
||||||
pnt[index] &= maskbit[offset];
|
|
||||||
index++;
|
|
||||||
|
|
||||||
while (index < 16)
|
|
||||||
pnt[index++] = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
Loading…
Reference in New Issue
Block a user