Hi,
The type of the local variable hash in pf_map_addr() has right length
but the wrong type. This diff uses the correct type and removes the
useless casts. Both functions uses hash as pf_addr, so no cast is
needed.
OK?
bye,
Jan
Index: net/pf_lb.c
===================================================================
RCS file: /cvs/src/sys/net/pf_lb.c,v
retrieving revision 1.67
diff -u -p -r1.67 pf_lb.c
--- net/pf_lb.c 29 Jul 2020 02:32:13 -0000 1.67
+++ net/pf_lb.c 12 Dec 2020 13:06:49 -0000
@@ -349,7 +349,7 @@ pf_map_addr(sa_family_t af, struct pf_ru
struct pf_addr *naddr, struct pf_addr *init_addr, struct pf_src_node **sns,
struct pf_pool *rpool, enum pf_sn_types type)
{
- unsigned char hash[16];
+ struct pf_addr hash;
struct pf_addr faddr;
struct pf_addr *raddr = &rpool->addr.v.a.addr;
struct pf_addr *rmask = &rpool->addr.v.a.mask;
@@ -460,8 +460,7 @@ pf_map_addr(sa_family_t af, struct pf_ru
}
break;
case PF_POOL_SRCHASH:
- hashidx =
- pf_hash(saddr, (struct pf_addr *)&hash, &rpool->key, af);
+ hashidx = pf_hash(saddr, &hash, &rpool->key, af);
if (rpool->addr.type == PF_ADDR_TABLE ||
rpool->addr.type == PF_ADDR_DYNIFTL) {
@@ -483,8 +482,7 @@ pf_map_addr(sa_family_t af, struct pf_ru
return (1);
pf_addrcpy(naddr, &rpool->counter, af);
} else {
- pf_poolmask(naddr, raddr, rmask,
- (struct pf_addr *)&hash, af);
+ pf_poolmask(naddr, raddr, rmask, &hash, af);
}
break;
case PF_POOL_ROUNDROBIN: