Changeset View
Changeset View
Standalone View
Standalone View
sys/netinet/in_pcb.h
Show All 39 Lines | |||||
#include <sys/queue.h> | #include <sys/queue.h> | ||||
#include <sys/_lock.h> | #include <sys/_lock.h> | ||||
#include <sys/_mutex.h> | #include <sys/_mutex.h> | ||||
#include <sys/_rwlock.h> | #include <sys/_rwlock.h> | ||||
#include <net/route.h> | #include <net/route.h> | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
#include <sys/ebr.h> | |||||
#include <sys/lock.h> | #include <sys/lock.h> | ||||
#include <sys/rwlock.h> | #include <sys/rwlock.h> | ||||
#include <net/vnet.h> | #include <net/vnet.h> | ||||
#include <vm/uma.h> | #include <vm/uma.h> | ||||
#endif | #endif | ||||
#define in6pcb inpcb /* for KAME src sync over BSD*'s */ | #define in6pcb inpcb /* for KAME src sync over BSD*'s */ | ||||
#define in6p_sp inp_sp /* for KAME src sync over BSD*'s */ | #define in6p_sp inp_sp /* for KAME src sync over BSD*'s */ | ||||
▲ Show 20 Lines • Show All 184 Lines • ▼ Show 20 Lines | #define inp_zero_size offsetof(struct inpcb, inp_gencnt) | ||||
inp_gen_t inp_gencnt; /* (c) generation count */ | inp_gen_t inp_gencnt; /* (c) generation count */ | ||||
struct llentry *inp_lle; /* cached L2 information */ | struct llentry *inp_lle; /* cached L2 information */ | ||||
struct rwlock inp_lock; | struct rwlock inp_lock; | ||||
rt_gen_t inp_rt_cookie; /* generation for route entry */ | rt_gen_t inp_rt_cookie; /* generation for route entry */ | ||||
union { /* cached L3 information */ | union { /* cached L3 information */ | ||||
struct route inpu_route; | struct route inpu_route; | ||||
struct route_in6 inpu_route6; | struct route_in6 inpu_route6; | ||||
} inp_rtu; | } inp_rtu; | ||||
ebr_entry_t inp_ebr_entry; | |||||
#define inp_route inp_rtu.inpu_route | #define inp_route inp_rtu.inpu_route | ||||
#define inp_route6 inp_rtu.inpu_route6 | #define inp_route6 inp_rtu.inpu_route6 | ||||
}; | }; | ||||
#define inp_fport inp_inc.inc_fport | #define inp_fport inp_inc.inc_fport | ||||
#define inp_lport inp_inc.inc_lport | #define inp_lport inp_inc.inc_lport | ||||
#define inp_faddr inp_inc.inc_faddr | #define inp_faddr inp_inc.inc_faddr | ||||
#define inp_laddr inp_inc.inc_laddr | #define inp_laddr inp_inc.inc_laddr | ||||
#define inp_ip_tos inp_depend4.inp4_ip_tos | #define inp_ip_tos inp_depend4.inp4_ip_tos | ||||
▲ Show 20 Lines • Show All 147 Lines • ▼ Show 20 Lines | struct inpcbinfo { | ||||
* general use 2 | * general use 2 | ||||
*/ | */ | ||||
void *ipi_pspare[2]; | void *ipi_pspare[2]; | ||||
/* | /* | ||||
* Global lock protecting global inpcb list, inpcb count, etc. | * Global lock protecting global inpcb list, inpcb count, etc. | ||||
*/ | */ | ||||
struct rwlock ipi_list_lock; | struct rwlock ipi_list_lock; | ||||
ebr_epoch_t ipi_epoch; | |||||
}; | }; | ||||
#ifdef _KERNEL | #ifdef _KERNEL | ||||
/* | /* | ||||
* Connection groups hold sets of connections that have similar CPU/thread | * Connection groups hold sets of connections that have similar CPU/thread | ||||
* affinity. Each connection belongs to exactly one connection group. | * affinity. Each connection belongs to exactly one connection group. | ||||
*/ | */ | ||||
struct inpcbgroup { | struct inpcbgroup { | ||||
▲ Show 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | struct socket * | ||||
inp_inpcbtosocket(struct inpcb *inp); | inp_inpcbtosocket(struct inpcb *inp); | ||||
struct tcpcb * | struct tcpcb * | ||||
inp_inpcbtotcpcb(struct inpcb *inp); | inp_inpcbtotcpcb(struct inpcb *inp); | ||||
void inp_4tuple_get(struct inpcb *inp, uint32_t *laddr, uint16_t *lp, | void inp_4tuple_get(struct inpcb *inp, uint32_t *laddr, uint16_t *lp, | ||||
uint32_t *faddr, uint16_t *fp); | uint32_t *faddr, uint16_t *fp); | ||||
short inp_so_options(const struct inpcb *inp); | short inp_so_options(const struct inpcb *inp); | ||||
#endif /* _KERNEL */ | #endif /* _KERNEL */ | ||||
#define INP_INFO_EBR_RLOCK(info) do { \ | |||||
cookie = ebr_epoch_read_lock((info)->ipi_epoch); \ | |||||
} while (0) | |||||
#define INP_INFO_EBR_RUNLOCK(info) do { \ | |||||
ebr_epoch_read_unlock(cookie); \ | |||||
} while (0) | |||||
#define INP_INFO_EBR_SYNCHRONIZE(info) \ | |||||
ebr_epoch_synchronize((info)->ipi_epoch) | |||||
#define INP_INFO_LOCK_INIT(ipi, d) \ | #define INP_INFO_LOCK_INIT(ipi, d) \ | ||||
rw_init_flags(&(ipi)->ipi_lock, (d), RW_RECURSE) | rw_init_flags(&(ipi)->ipi_lock, (d), RW_RECURSE) | ||||
#define INP_INFO_LOCK_DESTROY(ipi) rw_destroy(&(ipi)->ipi_lock) | #define INP_INFO_LOCK_DESTROY(ipi) rw_destroy(&(ipi)->ipi_lock) | ||||
#define INP_INFO_RLOCK(ipi) rw_rlock(&(ipi)->ipi_lock) | #define INP_INFO_RLOCK(ipi) rw_rlock(&(ipi)->ipi_lock) | ||||
#define INP_INFO_WLOCK(ipi) rw_wlock(&(ipi)->ipi_lock) | #define INP_INFO_WLOCK(ipi) rw_wlock(&(ipi)->ipi_lock) | ||||
#define INP_INFO_TRY_RLOCK(ipi) rw_try_rlock(&(ipi)->ipi_lock) | #define INP_INFO_TRY_RLOCK(ipi) rw_try_rlock(&(ipi)->ipi_lock) | ||||
#define INP_INFO_TRY_WLOCK(ipi) rw_try_wlock(&(ipi)->ipi_lock) | #define INP_INFO_TRY_WLOCK(ipi) rw_try_wlock(&(ipi)->ipi_lock) | ||||
#define INP_INFO_TRY_UPGRADE(ipi) rw_try_upgrade(&(ipi)->ipi_lock) | #define INP_INFO_TRY_UPGRADE(ipi) rw_try_upgrade(&(ipi)->ipi_lock) | ||||
#define INP_INFO_WLOCKED(ipi) rw_wowned(&(ipi)->ipi_lock) | #define INP_INFO_WLOCKED(ipi) rw_wowned(&(ipi)->ipi_lock) | ||||
▲ Show 20 Lines • Show All 238 Lines • Show Last 20 Lines |