Page MenuHomeFreeBSD

D46291.diff
No OneTemporary

D46291.diff

diff --git a/sys/net/pfvar.h b/sys/net/pfvar.h
--- a/sys/net/pfvar.h
+++ b/sys/net/pfvar.h
@@ -2533,6 +2533,7 @@
void pf_krule_free(struct pf_krule *);
void pf_krule_clear_counters(struct pf_krule *);
+void pf_addr_copyout(struct pf_addr_wrap *);
#endif
/* The fingerprint functions can be linked into userland programs (tcpdump) */
diff --git a/sys/netpfil/pf/pf_ioctl.c b/sys/netpfil/pf/pf_ioctl.c
--- a/sys/netpfil/pf/pf_ioctl.c
+++ b/sys/netpfil/pf/pf_ioctl.c
@@ -129,7 +129,6 @@
static int pf_commit_rules(u_int32_t, int, char *);
static int pf_addr_setup(struct pf_kruleset *,
struct pf_addr_wrap *, sa_family_t);
-static void pf_addr_copyout(struct pf_addr_wrap *);
static void pf_src_node_copy(const struct pf_ksrc_node *,
struct pf_src_node *);
#ifdef ALTQ
@@ -1525,7 +1524,7 @@
return (error);
}
-static void
+void
pf_addr_copyout(struct pf_addr_wrap *addr)
{
diff --git a/sys/netpfil/pf/pf_nl.c b/sys/netpfil/pf/pf_nl.c
--- a/sys/netpfil/pf/pf_nl.c
+++ b/sys/netpfil/pf/pf_nl.c
@@ -416,7 +416,6 @@
nlattr_add_addr_wrap(struct nl_writer *nw, int attrtype, struct pf_addr_wrap *a)
{
int off = nlattr_add_nested(nw, attrtype);
- int num;
nlattr_add_in6_addr(nw, PF_AT_ADDR, &a->v.a.addr.v6);
nlattr_add_in6_addr(nw, PF_AT_MASK, &a->v.a.mask.v6);
@@ -425,22 +424,10 @@
if (a->type == PF_ADDR_DYNIFTL) {
nlattr_add_string(nw, PF_AT_IFNAME, a->v.ifname);
- num = 0;
- if (a->p.dyn != NULL)
- num = a->p.dyn->pfid_acnt4 + a->p.dyn->pfid_acnt6;
- nlattr_add_u32(nw, PF_AT_DYNCNT, num);
+ nlattr_add_u32(nw, PF_AT_DYNCNT, a->p.dyncnt);
} else if (a->type == PF_ADDR_TABLE) {
- struct pfr_ktable *kt;
-
nlattr_add_string(nw, PF_AT_TABLENAME, a->v.tblname);
- num = -1;
- kt = a->p.tbl;
- if ((kt->pfrkt_flags & PFR_TFLAG_ACTIVE) &&
- kt->pfrkt_root != NULL)
- kt = kt->pfrkt_root;
- if (kt->pfrkt_flags & PFR_TFLAG_ACTIVE)
- num = kt->pfrkt_cnt;
- nlattr_add_u32(nw, PF_AT_TBLCNT, num);
+ nlattr_add_u32(nw, PF_AT_TBLCNT, a->p.tblcnt);
}
nlattr_set_len(nw, off);
@@ -462,9 +449,13 @@
static bool
nlattr_add_rule_addr(struct nl_writer *nw, int attrtype, struct pf_rule_addr *r)
{
+ struct pf_addr_wrap aw = {0};
int off = nlattr_add_nested(nw, attrtype);
- nlattr_add_addr_wrap(nw, PF_RAT_ADDR, &r->addr);
+ bcopy(&(r->addr), &aw, sizeof(struct pf_addr_wrap));
+ pf_addr_copyout(&aw);
+
+ nlattr_add_addr_wrap(nw, PF_RAT_ADDR, &aw);
nlattr_add_u16(nw, PF_RAT_SRC_PORT, r->port[0]);
nlattr_add_u16(nw, PF_RAT_DST_PORT, r->port[1]);
nlattr_add_u8(nw, PF_RAT_NEG, r->neg);

File Metadata

Mime Type
text/plain
Expires
Tue, Feb 4, 5:07 AM (21 h, 14 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
16448324
Default Alt Text
D46291.diff (2 KB)

Event Timeline