Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/pf_ioctl.c
Show First 20 Lines • Show All 1,642 Lines • ▼ Show 20 Lines | pf_addr_to_nvaddr(const struct pf_addr *paddr) | ||||
return (nvl); | return (nvl); | ||||
} | } | ||||
static int | static int | ||||
pf_nvpool_to_pool(const nvlist_t *nvl, struct pf_kpool *kpool) | pf_nvpool_to_pool(const nvlist_t *nvl, struct pf_kpool *kpool) | ||||
{ | { | ||||
int error = 0; | int error = 0; | ||||
uint16_t mape[3]; | |||||
bzero(kpool, sizeof(*kpool)); | bzero(kpool, sizeof(*kpool)); | ||||
PFNV_CHK(pf_nvbinary(nvl, "key", &kpool->key, sizeof(kpool->key))); | PFNV_CHK(pf_nvbinary(nvl, "key", &kpool->key, sizeof(kpool->key))); | ||||
if (nvlist_exists_nvlist(nvl, "counter")) { | if (nvlist_exists_nvlist(nvl, "counter")) { | ||||
PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "counter"), | PFNV_CHK(pf_nvaddr_to_addr(nvlist_get_nvlist(nvl, "counter"), | ||||
&kpool->counter)); | &kpool->counter)); | ||||
} | } | ||||
PFNV_CHK(pf_nvint(nvl, "tblidx", &kpool->tblidx)); | PFNV_CHK(pf_nvint(nvl, "tblidx", &kpool->tblidx)); | ||||
PFNV_CHK(pf_nvuint16_array(nvl, "proxy_port", kpool->proxy_port, 2, | PFNV_CHK(pf_nvuint16_array(nvl, "proxy_port", kpool->proxy_port, 2, | ||||
NULL)); | NULL)); | ||||
PFNV_CHK(pf_nvuint8(nvl, "opts", &kpool->opts)); | PFNV_CHK(pf_nvuint8(nvl, "opts", &kpool->opts)); | ||||
if (nvlist_exists_number_array(nvl, "mape")) { | |||||
PFNV_CHK(pf_nvuint16_array(nvl, "mape", mape, 3, NULL)); | |||||
kpool->mape.offset = mape[0]; | |||||
kpool->mape.psidlen = mape[1]; | |||||
kpool->mape.psid = mape[2]; | |||||
} | |||||
errout: | errout: | ||||
return (error); | return (error); | ||||
} | } | ||||
static nvlist_t * | static nvlist_t * | ||||
pf_pool_to_nvpool(const struct pf_kpool *pool) | pf_pool_to_nvpool(const struct pf_kpool *pool) | ||||
{ | { | ||||
nvlist_t *nvl; | nvlist_t *nvl; | ||||
nvlist_t *tmp; | nvlist_t *tmp; | ||||
uint16_t mape[3]; | |||||
nvl = nvlist_create(0); | nvl = nvlist_create(0); | ||||
if (nvl == NULL) | if (nvl == NULL) | ||||
return (NULL); | return (NULL); | ||||
nvlist_add_binary(nvl, "key", &pool->key, sizeof(pool->key)); | nvlist_add_binary(nvl, "key", &pool->key, sizeof(pool->key)); | ||||
tmp = pf_addr_to_nvaddr(&pool->counter); | tmp = pf_addr_to_nvaddr(&pool->counter); | ||||
if (tmp == NULL) | if (tmp == NULL) | ||||
goto error; | goto error; | ||||
nvlist_add_nvlist(nvl, "counter", tmp); | nvlist_add_nvlist(nvl, "counter", tmp); | ||||
nvlist_add_number(nvl, "tblidx", pool->tblidx); | nvlist_add_number(nvl, "tblidx", pool->tblidx); | ||||
pf_uint16_array_nv(nvl, "proxy_port", pool->proxy_port, 2); | pf_uint16_array_nv(nvl, "proxy_port", pool->proxy_port, 2); | ||||
nvlist_add_number(nvl, "opts", pool->opts); | nvlist_add_number(nvl, "opts", pool->opts); | ||||
mape[0] = pool->mape.offset; | |||||
mape[1] = pool->mape.psidlen; | |||||
mape[2] = pool->mape.psid; | |||||
pf_uint16_array_nv(nvl, "mape", mape, 3); | |||||
return (nvl); | return (nvl); | ||||
error: | error: | ||||
nvlist_destroy(nvl); | nvlist_destroy(nvl); | ||||
return (NULL); | return (NULL); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 3,899 Lines • Show Last 20 Lines |