summaryrefslogtreecommitdiffstats
path: root/sys/net/pf.c
diff options
context:
space:
mode:
authorhenning <henning@openbsd.org>2012-09-18 10:11:52 +0000
committerhenning <henning@openbsd.org>2012-09-18 10:11:52 +0000
commit08263cb1b79db2a3882e28adb4bf1ab2f466a144 (patch)
treebab510e3b895c2a2d154b32cfb3e96b830b5337b /sys/net/pf.c
parentPrint the wieght in the show rib detail output. OK sthen@, henning@ (diff)
downloadwireguard-openbsd-08263cb1b79db2a3882e28adb4bf1ab2f466a144.tar.xz
wireguard-openbsd-08263cb1b79db2a3882e28adb4bf1ab2f466a144.zip
prio 0 is valid, therefore, I chose an "impossible" value for prio meaning
"not set" and used a PF_PRIO_NOTSET define for it. now that means that everything that creates a struct pf_rule doesn't get away with bzero'ing it, which turned out to be not so nice. so get rid of PF_PRIO_NOTSET, instead, make a rule+state flag PFSTATE_SETPRIO which indicates wether the prio should be set. ok benno claudio mikeb
Diffstat (limited to 'sys/net/pf.c')
-rw-r--r--sys/net/pf.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/sys/net/pf.c b/sys/net/pf.c
index 16330ca7cf6..de049198099 100644
--- a/sys/net/pf.c
+++ b/sys/net/pf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pf.c,v 1.810 2012/08/30 11:43:36 mikeb Exp $ */
+/* $OpenBSD: pf.c,v 1.811 2012/09/18 10:11:53 henning Exp $ */
/*
* Copyright (c) 2001 Daniel Hartmeier
@@ -2524,7 +2524,7 @@ pf_send_tcp(const struct pf_rule *r, sa_family_t af,
m->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
m->m_pkthdr.pf.tag = rtag;
m->m_pkthdr.rdomain = rdom;
- if (r && r->set_prio[0] != PF_PRIO_NOTSET)
+ if (r && (r->scrub_flags & PFSTATE_SETPRIO))
m->m_pkthdr.pf.prio = r->set_prio[0];
#ifdef ALTQ
@@ -2648,7 +2648,7 @@ pf_send_icmp(struct mbuf *m, u_int8_t type, u_int8_t code, sa_family_t af,
m0->m_pkthdr.pf.flags |= PF_TAG_GENERATED;
m0->m_pkthdr.rdomain = rdomain;
- if (r && r->set_prio[0] != PF_PRIO_NOTSET)
+ if (r && (r->scrub_flags & PFSTATE_SETPRIO))
m0->m_pkthdr.pf.prio = r->set_prio[0];
#ifdef ALTQ
@@ -3277,11 +3277,9 @@ pf_rule_to_actions(struct pf_rule *r, struct pf_rule_actions *a)
if (r->max_mss)
a->max_mss = r->max_mss;
a->flags |= (r->scrub_flags & (PFSTATE_NODF|PFSTATE_RANDOMID|
- PFSTATE_SETTOS|PFSTATE_SCRUB_TCP));
- if (r->set_prio[0] != PF_PRIO_NOTSET)
- a->set_prio[0] = r->set_prio[0];
- if (r->set_prio[1] != PF_PRIO_NOTSET)
- a->set_prio[1] = r->set_prio[1];
+ PFSTATE_SETTOS|PFSTATE_SCRUB_TCP|PFSTATE_SETPRIO));
+ a->set_prio[0] = r->set_prio[0];
+ a->set_prio[1] = r->set_prio[1];
}
#define PF_TEST_ATTRIB(t, a) \
@@ -3317,7 +3315,6 @@ pf_test_rule(struct pf_pdesc *pd, struct pf_rule **rm, struct pf_state **sm,
u_int8_t icmptype = 0, icmpcode = 0;
bzero(&act, sizeof(act));
- act.set_prio[0] = act.set_prio[1] = PF_PRIO_NOTSET;
bzero(sns, sizeof(sns));
act.rtableid = pd->rdomain;
SLIST_INIT(&rules);
@@ -6887,11 +6884,11 @@ done:
pf_tag_packet(pd.m, s->tag, s->rtableid[pd.didx]);
if (pqid || (pd.tos & IPTOS_LOWDELAY)) {
qid = s->pqid;
- if (s->set_prio[1] != PF_PRIO_NOTSET)
+ if (s->state_flags & PFSTATE_SETPRIO)
pd.m->m_pkthdr.pf.prio = s->set_prio[1];
} else {
qid = s->qid;
- if (s->set_prio[0] != PF_PRIO_NOTSET)
+ if (s->state_flags & PFSTATE_SETPRIO)
pd.m->m_pkthdr.pf.prio = s->set_prio[0];
}
} else {
@@ -6899,11 +6896,11 @@ done:
r->set_tos);
if (pqid || (pd.tos & IPTOS_LOWDELAY)) {
qid = r->pqid;
- if (r->set_prio[1] != PF_PRIO_NOTSET)
+ if (r->scrub_flags & PFSTATE_SETPRIO)
pd.m->m_pkthdr.pf.prio = r->set_prio[1];
} else {
qid = r->qid;
- if (r->set_prio[0] != PF_PRIO_NOTSET)
+ if (r->scrub_flags & PFSTATE_SETPRIO)
pd.m->m_pkthdr.pf.prio = r->set_prio[0];
}
}