Page MenuHomeFreeBSD

D46867.id144103.diff
No OneTemporary

D46867.id144103.diff

diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
--- a/sys/net/pfvar.h
+++ b/sys/net/pfvar.h
@@ -1602,7 +1602,6 @@
char any[0];
} hdr;
- struct pf_krule *nat_rule; /* nat/rdr rule applied to packet */
struct pf_addr *src; /* src address */
struct pf_addr *dst; /* dst address */
u_int16_t *sport;
diff --git a/sys/netpfil/pf/pf.c b/sys/netpfil/pf/pf.c
--- a/sys/netpfil/pf/pf.c
+++ b/sys/netpfil/pf/pf.c
@@ -5131,7 +5131,6 @@
}
if (nr->natpass)
r = NULL;
- pd->nat_rule = nr;
}
while (r != NULL) {
@@ -7900,7 +7899,7 @@
error = EMSGSIZE;
KMOD_IPSTAT_INC(ips_cantfrag);
if (r_rt != PF_DUPTO) {
- if (s && pd->nat_rule != NULL)
+ if (s && s->nat_rule.ptr != NULL)
PACKET_UNDO_NAT(m0, pd,
(ip->ip_hl << 2) + (ip_off & IP_OFFMASK),
s);
@@ -8113,7 +8112,7 @@
else {
in6_ifstat_inc(ifp, ifs6_in_toobig);
if (r_rt != PF_DUPTO) {
- if (s && pd->nat_rule != NULL)
+ if (s && s->nat_rule.ptr != NULL)
PACKET_UNDO_NAT(m0, pd,
((caddr_t)ip6 - m0->m_data) +
sizeof(struct ip6_hdr), s);
@@ -8771,7 +8770,7 @@
struct pfi_kkif *kif, struct pf_kstate *s,
struct pf_krule *r, struct pf_krule *a)
{
- struct pf_krule *tr, *nr;
+ struct pf_krule *tr;
int dir = pd->dir;
int dirndx;
@@ -8823,10 +8822,12 @@
pf_counter_u64_add_protected(&ri->r->bytes[dirndx], pd->tot_len);
}
}
+
tr = r;
- nr = (s != NULL) ? s->nat_rule.ptr : pd->nat_rule;
- if (nr != NULL && r == &V_pf_default_rule)
- tr = nr;
+ if (s != NULL && s->nat_rule.ptr != NULL &&
+ r == &V_pf_default_rule)
+ tr = s->nat_rule.ptr;
+
if (tr->src.addr.type == PF_ADDR_TABLE)
pfr_update_stats(tr->src.addr.p.tbl,
(s == NULL) ? pd->src :

File Metadata

Mime Type
text/plain
Expires
Sat, Oct 11, 6:27 AM (14 h, 57 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
23566064
Default Alt Text
D46867.id144103.diff (1 KB)

Event Timeline