Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/if_pfsync.c
Show First 20 Lines • Show All 248 Lines • ▼ Show 20 Lines | |||||
#define PFSYNC_BLOCK_ASSERT(sc) mtx_assert(&(sc)->sc_bulk_mtx, MA_OWNED) | #define PFSYNC_BLOCK_ASSERT(sc) mtx_assert(&(sc)->sc_bulk_mtx, MA_OWNED) | ||||
static const char pfsyncname[] = "pfsync"; | static const char pfsyncname[] = "pfsync"; | ||||
static MALLOC_DEFINE(M_PFSYNC, pfsyncname, "pfsync(4) data"); | static MALLOC_DEFINE(M_PFSYNC, pfsyncname, "pfsync(4) data"); | ||||
VNET_DEFINE_STATIC(struct pfsync_softc *, pfsyncif) = NULL; | VNET_DEFINE_STATIC(struct pfsync_softc *, pfsyncif) = NULL; | ||||
#define V_pfsyncif VNET(pfsyncif) | #define V_pfsyncif VNET(pfsyncif) | ||||
VNET_DEFINE_STATIC(void *, pfsync_swi_cookie) = NULL; | VNET_DEFINE_STATIC(void *, pfsync_swi_cookie) = NULL; | ||||
#define V_pfsync_swi_cookie VNET(pfsync_swi_cookie) | #define V_pfsync_swi_cookie VNET(pfsync_swi_cookie) | ||||
VNET_DEFINE_STATIC(struct intr_event *, pfsync_swi_ie); | |||||
#define V_pfsync_swi_ie VNET(pfsync_swi_ie) | |||||
VNET_DEFINE_STATIC(struct pfsyncstats, pfsyncstats); | VNET_DEFINE_STATIC(struct pfsyncstats, pfsyncstats); | ||||
#define V_pfsyncstats VNET(pfsyncstats) | #define V_pfsyncstats VNET(pfsyncstats) | ||||
VNET_DEFINE_STATIC(int, pfsync_carp_adj) = CARP_MAXSKEW; | VNET_DEFINE_STATIC(int, pfsync_carp_adj) = CARP_MAXSKEW; | ||||
#define V_pfsync_carp_adj VNET(pfsync_carp_adj) | #define V_pfsync_carp_adj VNET(pfsync_carp_adj) | ||||
static void pfsync_timeout(void *); | static void pfsync_timeout(void *); | ||||
static void pfsync_push(struct pfsync_bucket *); | static void pfsync_push(struct pfsync_bucket *); | ||||
static void pfsync_push_all(struct pfsync_softc *); | static void pfsync_push_all(struct pfsync_softc *); | ||||
▲ Show 20 Lines • Show All 2,202 Lines • ▼ Show 20 Lines | |||||
static void | static void | ||||
vnet_pfsync_init(const void *unused __unused) | vnet_pfsync_init(const void *unused __unused) | ||||
{ | { | ||||
int error; | int error; | ||||
V_pfsync_cloner = if_clone_simple(pfsyncname, | V_pfsync_cloner = if_clone_simple(pfsyncname, | ||||
pfsync_clone_create, pfsync_clone_destroy, 1); | pfsync_clone_create, pfsync_clone_destroy, 1); | ||||
error = swi_add(NULL, pfsyncname, pfsyncintr, V_pfsyncif, | error = swi_add(&V_pfsync_swi_ie, pfsyncname, pfsyncintr, V_pfsyncif, | ||||
SWI_NET, INTR_MPSAFE, &V_pfsync_swi_cookie); | SWI_NET, INTR_MPSAFE, &V_pfsync_swi_cookie); | ||||
if (error) { | if (error) { | ||||
if_clone_detach(V_pfsync_cloner); | if_clone_detach(V_pfsync_cloner); | ||||
log(LOG_INFO, "swi_add() failed in %s\n", __func__); | log(LOG_INFO, "swi_add() failed in %s\n", __func__); | ||||
} | } | ||||
pfsync_pointers_init(); | pfsync_pointers_init(); | ||||
} | } | ||||
VNET_SYSINIT(vnet_pfsync_init, SI_SUB_PROTO_FIREWALL, SI_ORDER_ANY, | VNET_SYSINIT(vnet_pfsync_init, SI_SUB_PROTO_FIREWALL, SI_ORDER_ANY, | ||||
vnet_pfsync_init, NULL); | vnet_pfsync_init, NULL); | ||||
static void | static void | ||||
vnet_pfsync_uninit(const void *unused __unused) | vnet_pfsync_uninit(const void *unused __unused) | ||||
{ | { | ||||
int ret; | |||||
pfsync_pointers_uninit(); | pfsync_pointers_uninit(); | ||||
if_clone_detach(V_pfsync_cloner); | if_clone_detach(V_pfsync_cloner); | ||||
swi_remove(V_pfsync_swi_cookie); | ret = swi_remove(V_pfsync_swi_cookie); | ||||
MPASS(ret == 0); | |||||
ret = intr_event_destroy(V_pfsync_swi_ie); | |||||
MPASS(ret == 0); | |||||
} | } | ||||
VNET_SYSUNINIT(vnet_pfsync_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_FOURTH, | VNET_SYSUNINIT(vnet_pfsync_uninit, SI_SUB_PROTO_FIREWALL, SI_ORDER_FOURTH, | ||||
vnet_pfsync_uninit, NULL); | vnet_pfsync_uninit, NULL); | ||||
static int | static int | ||||
pfsync_init() | pfsync_init() | ||||
{ | { | ||||
▲ Show 20 Lines • Show All 61 Lines • Show Last 20 Lines |