Changeset View
Changeset View
Standalone View
Standalone View
sys/netpfil/pf/pf.c
Show First 20 Lines • Show All 368 Lines • ▼ Show 20 Lines | |||||
VNET_DEFINE(uint32_t, pf_hashseed); | VNET_DEFINE(uint32_t, pf_hashseed); | ||||
#define V_pf_hashseed VNET(pf_hashseed) | #define V_pf_hashseed VNET(pf_hashseed) | ||||
static __inline uint32_t | static __inline uint32_t | ||||
pf_hashkey(struct pf_state_key *sk) | pf_hashkey(struct pf_state_key *sk) | ||||
{ | { | ||||
uint32_t h; | uint32_t h; | ||||
h = jenkins_hash32((uint32_t *)sk, | h = murmur3_aligned_32((uint32_t *)sk, | ||||
sizeof(struct pf_state_key_cmp)/sizeof(uint32_t), | sizeof(struct pf_state_key_cmp), | ||||
V_pf_hashseed); | V_pf_hashseed); | ||||
return (h & pf_hashmask); | return (h & pf_hashmask); | ||||
} | } | ||||
static __inline uint32_t | static __inline uint32_t | ||||
pf_hashsrc(struct pf_addr *addr, sa_family_t af) | pf_hashsrc(struct pf_addr *addr, sa_family_t af) | ||||
{ | { | ||||
uint32_t h; | uint32_t h; | ||||
switch (af) { | switch (af) { | ||||
case AF_INET: | case AF_INET: | ||||
h = jenkins_hash32((uint32_t *)&addr->v4, | h = murmur3_aligned_32((uint32_t *)&addr->v4, | ||||
sizeof(addr->v4)/sizeof(uint32_t), V_pf_hashseed); | sizeof(addr->v4), V_pf_hashseed); | ||||
break; | break; | ||||
case AF_INET6: | case AF_INET6: | ||||
h = jenkins_hash32((uint32_t *)&addr->v6, | h = murmur3_aligned_32((uint32_t *)&addr->v6, | ||||
sizeof(addr->v6)/sizeof(uint32_t), V_pf_hashseed); | sizeof(addr->v6), V_pf_hashseed); | ||||
break; | break; | ||||
default: | default: | ||||
panic("%s: unknown address family %u", __func__, af); | panic("%s: unknown address family %u", __func__, af); | ||||
} | } | ||||
return (h & pf_srchashmask); | return (h & pf_srchashmask); | ||||
} | } | ||||
▲ Show 20 Lines • Show All 5,996 Lines • Show Last 20 Lines |