npf_addr_t
npf_addr_t addr;
memset(&addr, 0, sizeof(npf_addr_t));
npf_addr_t addr;
memset(&addr, 0, sizeof(npf_addr_t));
npf_nat_setaddr(nl_nat_t *nt, int af, npf_addr_t *addr, npf_netmask_t mask)
const npf_addr_t *
_npf_get_addr(const nvlist_t *nvl, const char *name, npf_addr_t *addr)
npf_table_add_entry(nl_table_t *tl, int af, const npf_addr_t *addr,
const npf_addr_t *addr;
if (addr == NULL || alen == 0 || alen > sizeof(npf_addr_t)) {
npf_addr_t addr[3];
_npf_conn_lookup(int fd, const int af, npf_addr_t *addr[2], in_port_t port[2],
npf_nat_lookup(int fd, int af, npf_addr_t *addr[2], in_port_t port[2],
_npf_add_addr(nvlist_t *nvl, const char *name, int af, const npf_addr_t *addr)
int npf_nat_setaddr(nl_nat_t *, int, npf_addr_t *, npf_netmask_t);
int npf_nat_settablefilter(nl_nat_t *, int, npf_addr_t *, npf_netmask_t);
const npf_addr_t *npf_nat_getaddr(nl_nat_t *, size_t *, npf_netmask_t *);
int npf_nat_lookup(int, int, npf_addr_t *[2], in_port_t [2], int, int);
const npf_addr_t *, const npf_netmask_t);
typedef int (*npf_conn_func_t)(unsigned, const npf_addr_t *,
npf_addr_t *addr[2];
npf_addr_t * npc_ips[2];
npf_addr_t addr;
SWAP(npf_addr_t *, enpc.npc_ips[NPF_SRC], enpc.npc_ips[NPF_DST]);
npf_addr_t *addr;
const npf_addr_t *addr;
npf_addr_t *taddr;
void npf_conn_adjkey(npf_connkey_t *, const npf_addr_t *,
unsigned *, npf_addr_t *, uint16_t *);
npf_addr_t *ips, uint16_t *id)
npf_conn_adjkey(npf_connkey_t *key, const npf_addr_t *naddr,
npf_addr_t ips[2];
npf_addr_t const * ips[2];
if (alen1 == 0 || alen1 > sizeof(npf_addr_t) || alen1 != alen2) {
npf_addr_t ips[2];
const npf_addr_t * const *ips = ipv;
const npf_addr_t *addr;
npf_addr_t addr;
bool npf_rwrip(const npf_cache_t *, u_int, const npf_addr_t *);
const npf_addr_t *, const in_port_t);
int npf_napt_rwr(const npf_cache_t *, u_int, const npf_addr_t *,
int npf_npt66_rwr(const npf_cache_t *, u_int, const npf_addr_t *,
uint16_t npf_addr_cksum(uint16_t, int, const npf_addr_t *,
const npf_addr_t *);
uint32_t npf_addr_mix(const int, const npf_addr_t *, const npf_addr_t *);
int npf_addr_cmp(const npf_addr_t *, const npf_netmask_t,
const npf_addr_t *, const npf_netmask_t, const int);
void npf_addr_mask(const npf_addr_t *, const npf_netmask_t,
const int, npf_addr_t *);
void npf_addr_bitor(const npf_addr_t *, const npf_netmask_t,
const int, npf_addr_t *);
const npf_addr_t *, const npf_netmask_t);
const npf_addr_t *, const npf_netmask_t);
int npf_table_lookup(npf_table_t *, const int, const npf_addr_t *);
npf_addr_t * npf_table_getsome(npf_table_t *, const int, unsigned);
in_port_t npf_portmap_get(npf_portmap_t *, int, const npf_addr_t *);
bool npf_portmap_take(npf_portmap_t *, int, const npf_addr_t *, in_port_t);
void npf_portmap_put(npf_portmap_t *, int, const npf_addr_t *, in_port_t);
void npf_nat_getorig(npf_nat_t *, npf_addr_t **, in_port_t *);
void npf_nat_gettrans(npf_nat_t *, npf_addr_t **, in_port_t *);
const char * npf_addr_dump(const npf_addr_t *, int);
npf_addr_cksum(uint16_t cksum, int sz, const npf_addr_t *oaddr,
const npf_addr_t *naddr)
npf_addr_mix(const int alen, const npf_addr_t *a1, const npf_addr_t *a2)
npf_addr_mask(const npf_addr_t *addr, const npf_netmask_t mask,
const int alen, npf_addr_t *out)
npf_addr_bitor(const npf_addr_t *addr, const npf_netmask_t mask,
const int alen, npf_addr_t *out)
npf_addr_cmp(const npf_addr_t *addr1, const npf_netmask_t mask1,
const npf_addr_t *addr2, const npf_netmask_t mask2, const int alen)
npf_addr_t realaddr1, realaddr2;
npc->npc_ips[NPF_SRC] = (npf_addr_t *)&ip->ip_src;
npc->npc_ips[NPF_DST] = (npf_addr_t *)&ip->ip_dst;
npc->npc_ips[NPF_SRC] = (npf_addr_t *)&ip6->ip6_src;
npc->npc_ips[NPF_DST] = (npf_addr_t *)&ip6->ip6_dst;
npf_rwrip(const npf_cache_t *npc, u_int which, const npf_addr_t *addr)
const npf_addr_t *addr, const in_port_t port)
const npf_addr_t *oaddr = npc->npc_ips[which];
const npf_addr_t *addr, const in_addr_t port)
npf_npt66_rwr(const npf_cache_t *npc, u_int which, const npf_addr_t *pref,
npf_addr_t *addr = npc->npc_ips[which];
npf_addr_dump(const npf_addr_t *addr, int alen)
npf_addr_t n_taddr;
npf_addr_t nt_taddr;
npf_addr_t nt_oaddr;
if (!addr || len == 0 || len > sizeof(npf_addr_t)) {
const unsigned which, npf_addr_t *addr)
const npf_addr_t *orig_addr = npc->npc_ips[which];
static inline npf_addr_t *
npf_addr_t *taddr;
const npf_addr_t *addr;
const npf_addr_t *taddr;
npf_addr_t addr;
npf_nat_gettrans(npf_nat_t *nt, npf_addr_t **addr, in_port_t *port)
npf_nat_getorig(npf_nat_t *nt, npf_addr_t **addr, in_port_t *port)
if (alen == 0 || alen > sizeof(npf_addr_t)) {
memcpy(&nt->nt_taddr, taddr, sizeof(npf_addr_t));
memcpy(&nt->nt_oaddr, oaddr, sizeof(npf_addr_t));
npf_portmap_autoget(npf_portmap_t *pm, unsigned alen, const npf_addr_t *addr)
KASSERT(alen && alen <= sizeof(npf_addr_t));
npf_portmap_get(npf_portmap_t *pm, int alen, const npf_addr_t *addr)
const npf_addr_t *addr, in_port_t port)
const npf_addr_t *addr, in_port_t port)
npf_addr_t addr;
const npf_addr_t *addr, const npf_netmask_t mask)
const npf_addr_t *addr, const npf_netmask_t mask)
npf_table_lookup(npf_table_t *t, const int alen, const npf_addr_t *addr)
npf_addr_t te_addr;
npf_addr_t *
table_ent_copyout(const npf_addr_t *addr, const int alen, npf_netmask_t mask,
memcpy(&uent.addr, addr, sizeof(npf_addr_t));
const npf_addr_t *addr, const npf_netmask_t mask)
npfctl_conn_print(unsigned alen, const npf_addr_t *a, const in_port_t *p,
npfctl_copy_address(sa_family_t fam, npf_addr_t *addr, const void *ptr)
memset(addr, 0, sizeof(npf_addr_t));
npfctl_parse_fam_addr(const char *name, sa_family_t *fam, npf_addr_t *addr)
npf_addr_t addr;
npfctl_npt66_calcadj(npf_netmask_t len, const npf_addr_t *pref_in,
const npf_addr_t *pref_out)
const npf_addr_t *addr;
addr = (const npf_addr_t *)words;
const npf_addr_t *addr;
npfctl_print_addrmask(int alen, const char *fmt, const npf_addr_t *addr,
npfctl_addr_iszero(const npf_addr_t *addr)
static const npf_addr_t zero; /* must be static */
return memcmp(addr, &zero, sizeof(npf_addr_t)) == 0;
bool npfctl_addr_iszero(const npf_addr_t *);
char * npfctl_print_addrmask(int, const char *, const npf_addr_t *,
uint16_t npfctl_npt66_calcadj(npf_netmask_t, const npf_addr_t *,
const npf_addr_t *);
const npf_addr_t *, const npf_netmask_t);
npf_addr_t fam_addr;
match_addr(int af, const char *saddr, const npf_addr_t *addr2)
npf_addr_t addr1;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t *addr, lookup_addr;
addr = kmem_zalloc(sizeof(npf_addr_t), KM_SLEEP);
kmem_free(addr, sizeof(npf_addr_t));
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
check_ip4(const npf_addr_t *addr, const char *ipstr)
npf_addr_t addr_storage, *test_addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;
npf_addr_t addr_storage, *addr = &addr_storage;