Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/pf_ioctl.c
Show First 20 Lines • Show All 1,460 Lines • ▼ Show 20 Lines | |||||
{ | { | ||||
bzero(kpool, sizeof(*kpool)); | bzero(kpool, sizeof(*kpool)); | ||||
bcopy(&pool->addr, &kpool->addr, sizeof(kpool->addr)); | bcopy(&pool->addr, &kpool->addr, sizeof(kpool->addr)); | ||||
strlcpy(kpool->ifname, pool->ifname, sizeof(kpool->ifname)); | strlcpy(kpool->ifname, pool->ifname, sizeof(kpool->ifname)); | ||||
} | } | ||||
static void | static void | ||||
pf_kpool_to_pool(const struct pf_kpool *kpool, struct pf_pool *pool) | |||||
{ | |||||
bzero(pool, sizeof(*pool)); | |||||
bcopy(&kpool->key, &pool->key, sizeof(pool->key)); | |||||
bcopy(&kpool->counter, &pool->counter, sizeof(pool->counter)); | |||||
pool->tblidx = kpool->tblidx; | |||||
pool->proxy_port[0] = kpool->proxy_port[0]; | |||||
pool->proxy_port[1] = kpool->proxy_port[1]; | |||||
pool->opts = kpool->opts; | |||||
} | |||||
static int | |||||
pf_pool_to_kpool(const struct pf_pool *pool, struct pf_kpool *kpool) | |||||
{ | |||||
_Static_assert(sizeof(pool->key) == sizeof(kpool->key), ""); | |||||
_Static_assert(sizeof(pool->counter) == sizeof(kpool->counter), ""); | |||||
bzero(kpool, sizeof(*kpool)); | |||||
bcopy(&pool->key, &kpool->key, sizeof(kpool->key)); | |||||
bcopy(&pool->counter, &kpool->counter, sizeof(kpool->counter)); | |||||
kpool->tblidx = pool->tblidx; | |||||
kpool->proxy_port[0] = pool->proxy_port[0]; | |||||
kpool->proxy_port[1] = pool->proxy_port[1]; | |||||
kpool->opts = pool->opts; | |||||
return (0); | |||||
} | |||||
static void | |||||
pf_krule_to_rule(const struct pf_krule *krule, struct pf_rule *rule) | pf_krule_to_rule(const struct pf_krule *krule, struct pf_rule *rule) | ||||
{ | { | ||||
bzero(rule, sizeof(*rule)); | bzero(rule, sizeof(*rule)); | ||||
bcopy(&krule->src, &rule->src, sizeof(rule->src)); | bcopy(&krule->src, &rule->src, sizeof(rule->src)); | ||||
bcopy(&krule->dst, &rule->dst, sizeof(rule->dst)); | bcopy(&krule->dst, &rule->dst, sizeof(rule->dst)); | ||||
Show All 9 Lines | pf_krule_to_rule(const struct pf_krule *krule, struct pf_rule *rule) | ||||
strlcpy(rule->qname, krule->qname, sizeof(rule->qname)); | strlcpy(rule->qname, krule->qname, sizeof(rule->qname)); | ||||
strlcpy(rule->pqname, krule->pqname, sizeof(rule->pqname)); | strlcpy(rule->pqname, krule->pqname, sizeof(rule->pqname)); | ||||
strlcpy(rule->tagname, krule->tagname, sizeof(rule->tagname)); | strlcpy(rule->tagname, krule->tagname, sizeof(rule->tagname)); | ||||
strlcpy(rule->match_tagname, krule->match_tagname, | strlcpy(rule->match_tagname, krule->match_tagname, | ||||
sizeof(rule->match_tagname)); | sizeof(rule->match_tagname)); | ||||
strlcpy(rule->overload_tblname, krule->overload_tblname, | strlcpy(rule->overload_tblname, krule->overload_tblname, | ||||
sizeof(rule->overload_tblname)); | sizeof(rule->overload_tblname)); | ||||
bcopy(&krule->rpool, &rule->rpool, sizeof(krule->rpool)); | pf_kpool_to_pool(&krule->rpool, &rule->rpool); | ||||
rule->evaluations = counter_u64_fetch(krule->evaluations); | rule->evaluations = counter_u64_fetch(krule->evaluations); | ||||
for (int i = 0; i < 2; i++) { | for (int i = 0; i < 2; i++) { | ||||
rule->packets[i] = counter_u64_fetch(krule->packets[i]); | rule->packets[i] = counter_u64_fetch(krule->packets[i]); | ||||
rule->bytes[i] = counter_u64_fetch(krule->bytes[i]); | rule->bytes[i] = counter_u64_fetch(krule->bytes[i]); | ||||
} | } | ||||
/* kif, anchor, overload_tbl are not copied over. */ | /* kif, anchor, overload_tbl are not copied over. */ | ||||
▲ Show 20 Lines • Show All 120 Lines • ▼ Show 20 Lines | #endif /* INET6 */ | ||||
strlcpy(krule->qname, rule->qname, sizeof(rule->qname)); | strlcpy(krule->qname, rule->qname, sizeof(rule->qname)); | ||||
strlcpy(krule->pqname, rule->pqname, sizeof(rule->pqname)); | strlcpy(krule->pqname, rule->pqname, sizeof(rule->pqname)); | ||||
strlcpy(krule->tagname, rule->tagname, sizeof(rule->tagname)); | strlcpy(krule->tagname, rule->tagname, sizeof(rule->tagname)); | ||||
strlcpy(krule->match_tagname, rule->match_tagname, | strlcpy(krule->match_tagname, rule->match_tagname, | ||||
sizeof(rule->match_tagname)); | sizeof(rule->match_tagname)); | ||||
strlcpy(krule->overload_tblname, rule->overload_tblname, | strlcpy(krule->overload_tblname, rule->overload_tblname, | ||||
sizeof(rule->overload_tblname)); | sizeof(rule->overload_tblname)); | ||||
bcopy(&rule->rpool, &krule->rpool, sizeof(krule->rpool)); | ret = pf_pool_to_kpool(&rule->rpool, &krule->rpool); | ||||
if (ret != 0) | |||||
return (ret); | |||||
/* Don't allow userspace to set evaulations, packets or bytes. */ | /* Don't allow userspace to set evaulations, packets or bytes. */ | ||||
/* kif, anchor, overload_tbl are not copied over. */ | /* kif, anchor, overload_tbl are not copied over. */ | ||||
krule->os_fingerprint = rule->os_fingerprint; | krule->os_fingerprint = rule->os_fingerprint; | ||||
krule->rtableid = rule->rtableid; | krule->rtableid = rule->rtableid; | ||||
bcopy(rule->timeout, krule->timeout, sizeof(krule->timeout)); | bcopy(rule->timeout, krule->timeout, sizeof(krule->timeout)); | ||||
▲ Show 20 Lines • Show All 3,152 Lines • Show Last 20 Lines |