Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/pf_ioctl.c
Show First 20 Lines • Show All 2,397 Lines • ▼ Show 20 Lines | #endif /* INET6 */ | ||||
krule->set_prio[1] = rule->set_prio[1]; | krule->set_prio[1] = rule->set_prio[1]; | ||||
bcopy(&rule->divert, &krule->divert, sizeof(krule->divert)); | bcopy(&rule->divert, &krule->divert, sizeof(krule->divert)); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | static int | ||||
pf_state_kill_to_kstate_kill(const struct pfioc_state_kill *psk, | |||||
struct pf_kstate_kill *kill) | |||||
{ | |||||
bzero(kill, sizeof(*kill)); | |||||
bcopy(&psk->psk_pfcmp, &kill->psk_pfcmp, sizeof(kill->psk_pfcmp)); | |||||
kill->psk_af = psk->psk_af; | |||||
kill->psk_proto = psk->psk_proto; | |||||
bcopy(&psk->psk_src, &kill->psk_src, sizeof(kill->psk_src)); | |||||
bcopy(&psk->psk_dst, &kill->psk_dst, sizeof(kill->psk_dst)); | |||||
strlcpy(kill->psk_ifname, psk->psk_ifname, sizeof(kill->psk_ifname)); | |||||
strlcpy(kill->psk_label, psk->psk_label, sizeof(kill->psk_label)); | |||||
return (0); | |||||
} | |||||
static int | |||||
pf_nvstate_cmp_to_state_cmp(const nvlist_t *nvl, struct pf_state_cmp *cmp) | pf_nvstate_cmp_to_state_cmp(const nvlist_t *nvl, struct pf_state_cmp *cmp) | ||||
{ | { | ||||
int error = 0; | int error = 0; | ||||
bzero(cmp, sizeof(*cmp)); | bzero(cmp, sizeof(*cmp)); | ||||
PFNV_CHK(pf_nvuint64(nvl, "id", &cmp->id)); | PFNV_CHK(pf_nvuint64(nvl, "id", &cmp->id)); | ||||
PFNV_CHK(pf_nvuint32(nvl, "creatorid", &cmp->creatorid)); | PFNV_CHK(pf_nvuint32(nvl, "creatorid", &cmp->creatorid)); | ||||
▲ Show 20 Lines • Show All 941 Lines • ▼ Show 20 Lines | |||||
#undef ERROUT | #undef ERROUT | ||||
DIOCCHANGERULE_error: | DIOCCHANGERULE_error: | ||||
PF_RULES_WUNLOCK(); | PF_RULES_WUNLOCK(); | ||||
pf_krule_free(newrule); | pf_krule_free(newrule); | ||||
pf_kkif_free(kif); | pf_kkif_free(kif); | ||||
break; | break; | ||||
} | } | ||||
case DIOCCLRSTATES: { | |||||
struct pfioc_state_kill *psk = (struct pfioc_state_kill *)addr; | |||||
struct pf_kstate_kill kill; | |||||
error = pf_state_kill_to_kstate_kill(psk, &kill); | |||||
if (error) | |||||
break; | |||||
psk->psk_killed = pf_clear_states(&kill); | |||||
break; | |||||
} | |||||
case DIOCCLRSTATESNV: { | case DIOCCLRSTATESNV: { | ||||
error = pf_clearstates_nv((struct pfioc_nv *)addr); | error = pf_clearstates_nv((struct pfioc_nv *)addr); | ||||
break; | |||||
} | |||||
case DIOCKILLSTATES: { | |||||
struct pfioc_state_kill *psk = (struct pfioc_state_kill *)addr; | |||||
struct pf_kstate_kill kill; | |||||
error = pf_state_kill_to_kstate_kill(psk, &kill); | |||||
if (error) | |||||
break; | |||||
psk->psk_killed = 0; | |||||
error = pf_killstates(&kill, &psk->psk_killed); | |||||
break; | break; | ||||
} | } | ||||
case DIOCKILLSTATESNV: { | case DIOCKILLSTATESNV: { | ||||
error = pf_killstates_nv((struct pfioc_nv *)addr); | error = pf_killstates_nv((struct pfioc_nv *)addr); | ||||
break; | break; | ||||
} | } | ||||
▲ Show 20 Lines • Show All 2,597 Lines • Show Last 20 Lines |