Use the packet's address family instead of the rule's when selecting a

replacement address for an rdr rule. Some rdr rules have no address family
(when the replacement is a table and no other criterion implies one AF).
In this case, pf would fail to select a replacement address and drop the
packet due to translation failure.

Found by:	Gustavo A. Baratto
This commit is contained in:
Daniel Hartmeier 2005-01-20 18:07:35 +00:00
parent 9086083a9a
commit d4f925e4df
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=140518

View file

@ -2362,7 +2362,7 @@ pf_get_translation(struct pf_pdesc *pd, struct mbuf *m, int off, int direction,
}
break;
case PF_RDR: {
if (pf_map_addr(r->af, r, saddr, naddr, NULL, sn))
if (pf_map_addr(pd->af, r, saddr, naddr, NULL, sn))
return (NULL);
if (r->rpool.proxy_port[1]) {