Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/ip_id.c
Show First 20 Lines • Show All 278 Lines • ▼ Show 20 Lines | ipid_sysinit(void) | ||||
int i; | int i; | ||||
mtx_init(&V_ip_id_mtx, "ip_id_mtx", NULL, MTX_DEF); | mtx_init(&V_ip_id_mtx, "ip_id_mtx", NULL, MTX_DEF); | ||||
V_ip_id = counter_u64_alloc(M_WAITOK); | V_ip_id = counter_u64_alloc(M_WAITOK); | ||||
CPU_FOREACH(i) | CPU_FOREACH(i) | ||||
arc4rand(zpcpu_get_cpu(V_ip_id, i), sizeof(uint64_t), 0); | arc4rand(zpcpu_get_cpu(V_ip_id, i), sizeof(uint64_t), 0); | ||||
} | } | ||||
VNET_SYSINIT(ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, ipid_sysinit, NULL); | VNET_SYSINIT(ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, ipid_sysinit); | ||||
static void | static void | ||||
ipid_sysuninit(void) | ipid_sysuninit(void) | ||||
{ | { | ||||
if (V_id_array != NULL) { | if (V_id_array != NULL) { | ||||
free(V_id_array, M_IPID); | free(V_id_array, M_IPID); | ||||
free(V_id_bits, M_IPID); | free(V_id_bits, M_IPID); | ||||
} | } | ||||
counter_u64_free(V_ip_id); | counter_u64_free(V_ip_id); | ||||
mtx_destroy(&V_ip_id_mtx); | mtx_destroy(&V_ip_id_mtx); | ||||
} | } | ||||
VNET_SYSUNINIT(ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, ipid_sysuninit, NULL); | VNET_SYSUNINIT(ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, ipid_sysuninit); |