FreeBSD kernel IPv4 code
|
#include <sys/cdefs.h>
#include "opt_ddb.h"
#include "opt_ipsec.h"
#include "opt_inet.h"
#include "opt_inet6.h"
#include "opt_ratelimit.h"
#include "opt_route.h"
#include "opt_rss.h"
#include <sys/param.h>
#include <sys/hash.h>
#include <sys/systm.h>
#include <sys/libkern.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mbuf.h>
#include <sys/callout.h>
#include <sys/eventhandler.h>
#include <sys/domain.h>
#include <sys/protosw.h>
#include <sys/smp.h>
#include <sys/socket.h>
#include <sys/socketvar.h>
#include <sys/sockio.h>
#include <sys/priv.h>
#include <sys/proc.h>
#include <sys/refcount.h>
#include <sys/jail.h>
#include <sys/kernel.h>
#include <sys/sysctl.h>
#include <vm/uma.h>
#include <vm/vm.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_types.h>
#include <net/if_llatbl.h>
#include <net/route.h>
#include <net/rss_config.h>
#include <net/vnet.h>
#include <netipsec/ipsec_support.h>
#include <security/mac/mac_framework.h>
Go to the source code of this file.
Macros | |
#define | INPCBLBGROUP_SIZMIN 8 |
#define | INPCBLBGROUP_SIZMAX 256 |
#define | INP_FREED 0x00000200 /* See in_pcb.h. */ |
#define | V_ipport_tcplastcount VNET(ipport_tcplastcount) |
#define | II_LIST_FIRST(ipi, hash) |
#define | II_LIST_NEXT(inp, hash) |
#define | II_LOCK_ASSERT(inp, lock) |
Functions | |
__FBSDID ("$FreeBSD$") | |
VNET_DEFINE (int, ipport_lowfirstauto) | |
VNET_DEFINE (int, ipport_lowlastauto) | |
VNET_DEFINE (int, ipport_firstauto) | |
VNET_DEFINE (int, ipport_lastauto) | |
VNET_DEFINE (int, ipport_hifirstauto) | |
VNET_DEFINE (int, ipport_hilastauto) | |
VNET_DEFINE (int, ipport_reservedhigh) | |
VNET_DEFINE (int, ipport_reservedlow) | |
VNET_DEFINE (int, ipport_randomized) | |
VNET_DEFINE (int, ipport_randomcps) | |
VNET_DEFINE (int, ipport_randomtime) | |
VNET_DEFINE (int, ipport_stoprandom) | |
VNET_DEFINE (int, ipport_tcpallocs) | |
VNET_DEFINE_STATIC (int, ipport_tcplastcount) | |
VNET_DEFINE (uint32_t, in_pcbhashseed) | |
static void | in_pcbhashseed_init (void) |
VNET_SYSINIT (in_pcbhashseed_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_FIRST, in_pcbhashseed_init, 0) | |
static struct inpcblbgroup * | in_pcblbgroup_alloc (struct inpcblbgrouphead *hdr, u_char vflag, uint16_t port, const union in_dependaddr *addr, int size, uint8_t numa_domain) |
static void | in_pcblbgroup_free_deferred (epoch_context_t ctx) |
static void | in_pcblbgroup_free (struct inpcblbgroup *grp) |
static struct inpcblbgroup * | in_pcblbgroup_resize (struct inpcblbgrouphead *hdr, struct inpcblbgroup *old_grp, int size) |
static void | in_pcblbgroup_reorder (struct inpcblbgrouphead *hdr, struct inpcblbgroup **grpp, int i) |
static int | in_pcbinslbgrouphash (struct inpcb *inp, uint8_t numa_domain) |
static void | in_pcbremlbgrouphash (struct inpcb *inp) |
int | in_pcblbgroup_numa (struct inpcb *inp, int arg) |
CTASSERT (sizeof(struct inpcbhead)==sizeof(LIST_HEAD(, inpcb))) | |
void | in_pcbinfo_init (struct inpcbinfo *pcbinfo, struct inpcbstorage *pcbstor, u_int hash_nelements, u_int porthash_nelements) |
void | in_pcbinfo_destroy (struct inpcbinfo *pcbinfo) |
static void | inpcb_dtor (void *, int, void *) |
static void | inpcb_fini (void *, int) |
void | in_pcbstorage_init (void *arg) |
void | in_pcbstorage_destroy (void *arg) |
int | in_pcballoc (struct socket *so, struct inpcbinfo *pcbinfo) |
int | in_pcbbind_check_bindmulti (const struct inpcb *ni, const struct inpcb *oi) |
void | in_pcbdetach (struct inpcb *inp) |
static void | inp_lock (struct inpcb *inp, const inp_lookup_t lock) |
static void | inp_unlock (struct inpcb *inp, const inp_lookup_t lock) |
static int | inp_trylock (struct inpcb *inp, const inp_lookup_t lock) |
static bool | in_pcbrele (struct inpcb *inp, const inp_lookup_t lock) |
bool | inp_smr_lock (struct inpcb *inp, const inp_lookup_t lock) |
struct inpcb * | inp_next (struct inpcb_iterator *ii) |
void | in_pcbref (struct inpcb *inp) |
bool | in_pcbrele_rlocked (struct inpcb *inp) |
bool | in_pcbrele_wlocked (struct inpcb *inp) |
void | in_pcbfree (struct inpcb *inp) |
void | in_pcbdrop (struct inpcb *inp) |
int | in_pcbinshash (struct inpcb *inp) |
void | in_pcbrehash (struct inpcb *inp) |
void | in_losing (struct inpcb *inp) |
void | in_pcbsosetlabel (struct socket *so) |
static void | ipport_tick (void *xtp) |
static void | ip_fini (void *xtp) |
static void | ipport_tick_init (const void *unused __unused) |
SYSINIT (ipport_tick_init, SI_SUB_PROTO_DOMAIN, SI_ORDER_MIDDLE, ipport_tick_init, NULL) | |
void | inp_wlock (struct inpcb *inp) |
void | inp_wunlock (struct inpcb *inp) |
void | inp_rlock (struct inpcb *inp) |
void | inp_runlock (struct inpcb *inp) |
void | inp_apply_all (void(*func)(struct inpcb *, void *), void *arg) |
struct socket * | inp_inpcbtosocket (struct inpcb *inp) |
struct tcpcb * | inp_inpcbtotcpcb (struct inpcb *inp) |
int | inp_ip_tos_get (const struct inpcb *inp) |
void | inp_ip_tos_set (struct inpcb *inp, int val) |
void | inp_4tuple_get (struct inpcb *inp, uint32_t *laddr, uint16_t *lp, uint32_t *faddr, uint16_t *fp) |
struct inpcb * | so_sotoinpcb (struct socket *so) |
struct tcpcb * | so_sototcpcb (struct socket *so) |
void | in_pcbtoxinpcb (const struct inpcb *inp, struct xinpcb *xi) |
int | sysctl_setsockopt (SYSCTL_HANDLER_ARGS, struct inpcbinfo *pcbinfo, int(*ctloutput_set)(struct inpcb *, struct sockopt *)) |
Variables | |
static struct callout | ipport_tick_callout |
#define II_LIST_FIRST | ( | ipi, | |
hash | |||
) |
#define II_LIST_NEXT | ( | inp, | |
hash | |||
) |
#define II_LOCK_ASSERT | ( | inp, | |
lock | |||
) |
__FBSDID | ( | "$FreeBSD$" | ) |
void in_losing | ( | struct inpcb * | inp | ) |
Definition at line 2577 of file in_pcb.c.
References inpcb::inp_route.
Referenced by bbr_timeout_rxt(), rack_timeout_rxt(), and tcp_timer_rexmt().
int in_pcballoc | ( | struct socket * | so, |
struct inpcbinfo * | pcbinfo | ||
) |
Definition at line 603 of file in_pcb.c.
References hpts_random_cpu(), IN6P_AUTOFLOWLABEL, IN6P_IPV6_V6ONLY, in_conninfo::inc_fibnum, inpcb::inp_cred, inpcb::inp_flags, inpcb::inp_gencnt, inpcb::inp_hpts_cpu, inpcb::inp_inc, INP_INFO_WLOCK, INP_INFO_WUNLOCK, INP_IPV6PROTO, inpcb::inp_numa_domain, inpcb::inp_pcbinfo, inpcb::inp_refcount, inpcb::inp_route, INP_SOCKAF, inpcb::inp_socket, inpcb::inp_vflag, INP_WLOCK, inp_zero_size, inpcbinfo::ipi_count, inpcbinfo::ipi_gencnt, inpcbinfo::ipi_listhead, and inpcbinfo::ipi_zone.
Referenced by div_attach(), and tcp_usr_attach().
Definition at line 904 of file in_pcb.c.
References INP_BINDMULTI, inpcb::inp_cred, and inpcb::inp_flags2.
void in_pcbdetach | ( | struct inpcb * | inp | ) |
Definition at line 1524 of file in_pcb.c.
References inpcb::inp_snd_tag, and inpcb::inp_socket.
Referenced by div_detach(), tcp_usr_attach(), and tcp_usr_detach().
void in_pcbdrop | ( | struct inpcb * | inp | ) |
Definition at line 1928 of file in_pcb.c.
References in_pcbremlbgrouphash(), INP_DROPPED, inpcb::inp_flags, INP_HASH_WLOCK, INP_HASH_WUNLOCK, INP_INHASHLIST, inpcb::inp_pcbinfo, inpcb::inp_phd, inpcb::inp_ppcb, inpcb::inp_refcount, inpcb::inp_socket, INP_WLOCK_ASSERT, inpcbinfo::ipi_portzone, and inpcbport::phd_pcblist.
Referenced by tcp_close(), tcp_twclose(), and tcp_twstart().
void in_pcbfree | ( | struct inpcb * | inp | ) |
Definition at line 1818 of file in_pcb.c.
References inpcb::in6p_moptions, inpcb::in6p_outputopts, in_pcbrele_wlocked(), in_pcbremlbgrouphash(), inpcb::inp_flags, INP_FREED, inp_freemoptions(), inpcb::inp_gencnt, INP_HASH_WLOCK, INP_HASH_WUNLOCK, INP_INFO_WLOCK, INP_INFO_WUNLOCK, INP_INHASHLIST, INP_IPV6PROTO, inpcb::inp_moptions, inpcb::inp_options, inpcb::inp_pcbinfo, inpcb::inp_phd, inpcb::inp_route, inpcb::inp_socket, inpcb::inp_sp, inpcb::inp_vflag, INP_WLOCK_ASSERT, INP_WUNLOCK, inpcbinfo::ipi_count, inpcbinfo::ipi_gencnt, inpcbinfo::ipi_portzone, and inpcbport::phd_pcblist.
Referenced by div_detach(), tcp_twclose(), tcp_usr_attach(), and tcp_usr_detach().
|
static |
Definition at line 253 of file in_pcb.c.
References V_in_pcbhashseed.
void in_pcbinfo_destroy | ( | struct inpcbinfo * | pcbinfo | ) |
Definition at line 552 of file in_pcb.c.
References inpcbinfo::ipi_count, inpcbinfo::ipi_hash_lock, inpcbinfo::ipi_hashbase, inpcbinfo::ipi_hashmask, inpcbinfo::ipi_lbgrouphashbase, inpcbinfo::ipi_lbgrouphashmask, inpcbinfo::ipi_lock, inpcbinfo::ipi_porthashbase, and inpcbinfo::ipi_porthashmask.
Referenced by div_destroy().
void in_pcbinfo_init | ( | struct inpcbinfo * | pcbinfo, |
struct inpcbstorage * | pcbstor, | ||
u_int | hash_nelements, | ||
u_int | porthash_nelements | ||
) |
Definition at line 524 of file in_pcb.c.
References inpcbinfo::ipi_count, inpcbinfo::ipi_hash_lock, inpcbinfo::ipi_hashbase, inpcbinfo::ipi_hashmask, inpcbinfo::ipi_lbgrouphashbase, inpcbinfo::ipi_lbgrouphashmask, inpcbinfo::ipi_listhead, inpcbinfo::ipi_lock, inpcbinfo::ipi_porthashbase, inpcbinfo::ipi_porthashmask, inpcbinfo::ipi_portzone, inpcbinfo::ipi_smr, inpcbinfo::ipi_vnet, inpcbinfo::ipi_zone, inpcbstorage::ips_hashlock_name, inpcbstorage::ips_infolock_name, inpcbstorage::ips_portzone, and inpcbstorage::ips_zone.
Referenced by div_init(), rip_init(), tcp_vnet_init(), and udp_init().
int in_pcbinshash | ( | struct inpcb * | inp | ) |
Definition at line 2469 of file in_pcb.c.
References in_pcbinslbgrouphash(), INP6_PCBHASH, inpcb::inp_flags, INP_HASH_WLOCK_ASSERT, INP_INHASHLIST, INP_IPV6, INP_PCBHASH, inpcb::inp_pcbinfo, INP_PCBPORTHASH, inpcb::inp_phd, inp_so_options(), inpcb::inp_vflag, INP_WLOCK_ASSERT, inpcbinfo::ipi_hashbase, inpcbinfo::ipi_hashmask, inpcbinfo::ipi_porthashbase, inpcbinfo::ipi_porthashmask, inpcbinfo::ipi_portzone, inpcbport::phd_pcblist, and inpcbport::phd_port.
Definition at line 359 of file in_pcb.c.
References in_endpoints::ie_dependladdr, inpcblbgroup::il_dependladdr, inpcblbgroup::il_inp, inpcblbgroup::il_inpcnt, inpcblbgroup::il_inpsiz, inpcblbgroup::il_lport, inpcblbgroup::il_numa_domain, inpcblbgroup::il_vflag, in_pcblbgroup_alloc(), in_pcblbgroup_resize(), INADDR_ANY, in_conninfo::inc_ie, INP_CHECK_SOCKAF, INP_HASH_WLOCK_ASSERT, inpcb::inp_inc, INP_IPV4, inpcb::inp_pcbinfo, INP_PCBPORTHASH, inpcb::inp_socket, inpcb::inp_vflag, INP_WLOCK_ASSERT, INPCBLBGROUP_SIZMAX, INPCBLBGROUP_SIZMIN, inpcbinfo::ipi_lbgrouphashbase, and inpcbinfo::ipi_lbgrouphashmask.
Referenced by in_pcbinshash(), and in_pcblbgroup_numa().
|
static |
Definition at line 270 of file in_pcb.c.
References inpcblbgroup::il_dependladdr, inpcblbgroup::il_inp, inpcblbgroup::il_inpsiz, inpcblbgroup::il_lport, inpcblbgroup::il_numa_domain, and inpcblbgroup::il_vflag.
Referenced by in_pcbinslbgrouphash(), and in_pcblbgroup_resize().
|
static |
Definition at line 300 of file in_pcb.c.
References inpcblbgroup::il_epoch_ctx, and in_pcblbgroup_free_deferred().
Referenced by in_pcblbgroup_resize(), and in_pcbremlbgrouphash().
|
static |
Definition at line 291 of file in_pcb.c.
References inpcblbgroup::il_epoch_ctx.
Referenced by in_pcblbgroup_free().
int in_pcblbgroup_numa | ( | struct inpcb * | inp, |
int | arg | ||
) |
Definition at line 467 of file in_pcb.c.
References inpcblbgroup::il_inp, inpcblbgroup::il_inpcnt, inpcblbgroup::il_numa_domain, in_pcbinslbgrouphash(), in_pcbremlbgrouphash(), INP_HASH_WLOCK, INP_HASH_WUNLOCK, inpcb::inp_pcbinfo, INP_PCBPORTHASH, INP_WLOCK_ASSERT, inpcbinfo::ipi_lbgrouphashbase, inpcbinfo::ipi_lbgrouphashmask, TCP_REUSPORT_LB_NUMA_CURDOM, and TCP_REUSPORT_LB_NUMA_NODOM.
Referenced by tcp_default_ctloutput().
|
static |
Definition at line 336 of file in_pcb.c.
References inpcblbgroup::il_inp, inpcblbgroup::il_inpcnt, inpcblbgroup::il_inpsiz, in_pcblbgroup_resize(), and INPCBLBGROUP_SIZMIN.
Referenced by in_pcbremlbgrouphash().
|
static |
Definition at line 308 of file in_pcb.c.
References inpcblbgroup::il_dependladdr, inpcblbgroup::il_inp, inpcblbgroup::il_inpcnt, inpcblbgroup::il_inpsiz, inpcblbgroup::il_lport, inpcblbgroup::il_numa_domain, inpcblbgroup::il_vflag, in_pcblbgroup_alloc(), and in_pcblbgroup_free().
Referenced by in_pcbinslbgrouphash(), and in_pcblbgroup_reorder().
void in_pcbref | ( | struct inpcb * | inp | ) |
Definition at line 1762 of file in_pcb.c.
References inpcb::inp_refcount.
Referenced by inp_hpts_insert(), inp_join_group(), tcp_log_tcpcbfini(), tcp_newtcpcb(), tcp_tw_2msl_scan(), and tcp_twstart().
void in_pcbrehash | ( | struct inpcb * | inp | ) |
Definition at line 2546 of file in_pcb.c.
References INP6_PCBHASH, inpcb::inp_flags, INP_HASH_WLOCK_ASSERT, INP_INHASHLIST, INP_IPV6, INP_PCBHASH, inpcb::inp_pcbinfo, inpcb::inp_vflag, INP_WLOCK_ASSERT, inpcbinfo::ipi_hashbase, and inpcbinfo::ipi_hashmask.
|
inlinestatic |
Definition at line 1570 of file in_pcb.c.
References in_pcbrele_rlocked(), in_pcbrele_wlocked(), and INPLOOKUP_RLOCKPCB.
Referenced by inp_next(), and inp_smr_lock().
bool in_pcbrele_rlocked | ( | struct inpcb * | inp | ) |
Definition at line 1775 of file in_pcb.c.
References inpcb::inp_flags, INP_FREED, inpcb::inp_in_hpts, inpcb::inp_pcbinfo, inpcb::inp_refcount, INP_RLOCK_ASSERT, INP_RUNLOCK, inpcb::inp_socket, and inpcbinfo::ipi_zone.
Referenced by in_pcbrele().
bool in_pcbrele_wlocked | ( | struct inpcb * | inp | ) |
Definition at line 1792 of file in_pcb.c.
References inpcb::inp_flags, INP_FREED, inpcb::inp_in_hpts, inpcb::inp_pcbinfo, inpcb::inp_refcount, inpcb::inp_socket, INP_WLOCK_ASSERT, INP_WUNLOCK, and inpcbinfo::ipi_zone.
Referenced by in_pcbfree(), in_pcbrele(), inp_hpts_release(), inp_join_group(), tcp_hptsi(), tcp_log_dumpbucketlogs(), tcp_log_expire(), tcp_newtcpcb(), tcp_tw_2msl_scan(), and tcp_tw_2msl_stop().
|
static |
Definition at line 435 of file in_pcb.c.
References inpcblbgroup::il_inp, inpcblbgroup::il_inpcnt, in_pcblbgroup_free(), in_pcblbgroup_reorder(), INP_HASH_WLOCK_ASSERT, inpcb::inp_pcbinfo, INP_PCBPORTHASH, INP_WLOCK_ASSERT, inpcbinfo::ipi_lbgrouphashbase, and inpcbinfo::ipi_lbgrouphashmask.
Referenced by in_pcbdrop(), in_pcbfree(), and in_pcblbgroup_numa().
void in_pcbsosetlabel | ( | struct socket * | so | ) |
Definition at line 2589 of file in_pcb.c.
References INP_WLOCK, INP_WUNLOCK, and sotoinpcb.
void in_pcbstorage_destroy | ( | void * | arg | ) |
Definition at line 590 of file in_pcb.c.
References inpcbstorage::ips_portzone, and inpcbstorage::ips_zone.
void in_pcbstorage_init | ( | void * | arg | ) |
Definition at line 573 of file in_pcb.c.
References inpcb_dtor(), inpcb_fini(), inpcbstorage::ips_pcbinit, inpcbstorage::ips_portzone, inpcbstorage::ips_portzone_name, inpcbstorage::ips_zone, and inpcbstorage::ips_zone_name.
void in_pcbtoxinpcb | ( | const struct inpcb * | inp, |
struct xinpcb * | xi | ||
) |
Definition at line 2777 of file in_pcb.c.
References inpcb::in6p_cksum, inpcb::in6p_hops, inpcb::inp_flags, inpcb::inp_flags2, inpcb::inp_flow, inpcb::inp_flowid, inpcb::inp_flowtype, inpcb::inp_gencnt, inpcb::inp_inc, inpcb::inp_ip_minttl, inpcb::inp_ip_p, inpcb::inp_ip_tos, inpcb::inp_ip_ttl, inpcb::inp_ppcb, inpcb::inp_rss_listen_bucket, inpcb::inp_socket, and inpcb::inp_vflag.
Referenced by div_pcblist(), rip_pcblist(), tcp_inptoxtp(), and udp_pcblist().
void inp_4tuple_get | ( | struct inpcb * | inp, |
uint32_t * | laddr, | ||
uint16_t * | lp, | ||
uint32_t * | faddr, | ||
uint16_t * | fp | ||
) |
Definition at line 2743 of file in_pcb.c.
References INP_LOCK_ASSERT.
void inp_apply_all | ( | void(*)(struct inpcb *, void *) | func, |
void * | arg | ||
) |
Definition at line 2702 of file in_pcb.c.
References INP_ALL_ITERATOR, inp_next(), INPLOOKUP_WLOCKPCB, and V_tcbinfo.
Referenced by register_toedev().
struct socket * inp_inpcbtosocket | ( | struct inpcb * | inp | ) |
Definition at line 2713 of file in_pcb.c.
References inpcb::inp_socket, and INP_WLOCK_ASSERT.
Definition at line 2721 of file in_pcb.c.
References inpcb::inp_ppcb, and INP_WLOCK_ASSERT.
int inp_ip_tos_get | ( | const struct inpcb * | inp | ) |
Definition at line 2729 of file in_pcb.c.
References inpcb::inp_ip_tos.
void inp_ip_tos_set | ( | struct inpcb * | inp, |
int | val | ||
) |
Definition at line 2736 of file in_pcb.c.
References inpcb::inp_ip_tos.
|
inlinestatic |
Definition at line 1546 of file in_pcb.c.
References inpcb::inp_lock, and INPLOOKUP_RLOCKPCB.
Referenced by inp_next(), and inp_smr_lock().
struct inpcb * inp_next | ( | struct inpcb_iterator * | ii | ) |
Definition at line 1655 of file in_pcb.c.
References inpcb_iterator::ctx, inpcb_iterator::hash, II_LIST_FIRST, II_LIST_NEXT, II_LOCK_ASSERT, in_pcbrele(), inpcb_iterator::inp, inpcb::inp_flags, INP_FREED, inp_lock(), inpcb::inp_refcount, inp_smr_lock(), inp_trylock(), inp_unlock(), inpcb_iterator::ipi, inpcbinfo::ipi_smr, inpcb_iterator::lock, inpcb_iterator::match, and next.
Referenced by deregister_tcp_functions(), div_pcblist(), divert_packet(), inp_apply_all(), rip_pcblist(), sysctl_setsockopt(), tcp_drain(), tcp_pcblist(), and udp_pcblist().
void inp_rlock | ( | struct inpcb * | inp | ) |
void inp_runlock | ( | struct inpcb * | inp | ) |
Definition at line 2679 of file in_pcb.c.
References INP_RUNLOCK.
bool inp_smr_lock | ( | struct inpcb * | inp, |
const inp_lookup_t | lock | ||
) |
Definition at line 1578 of file in_pcb.c.
References in_pcbrele(), inpcb::inp_flags, INP_FREED, inp_lock(), inpcb::inp_pcbinfo, inpcb::inp_refcount, inp_trylock(), inp_unlock(), INPLOOKUP_RLOCKPCB, INPLOOKUP_WLOCKPCB, and inpcbinfo::ipi_smr.
Referenced by inp_next().
|
inlinestatic |
Definition at line 1562 of file in_pcb.c.
References inpcb::inp_lock, and INPLOOKUP_RLOCKPCB.
Referenced by inp_next(), and inp_smr_lock().
|
inlinestatic |
Definition at line 1554 of file in_pcb.c.
References inpcb::inp_lock, and INPLOOKUP_RLOCKPCB.
Referenced by inp_next(), inp_smr_lock(), and siftr_chkpkt().
void inp_wlock | ( | struct inpcb * | inp | ) |
void inp_wunlock | ( | struct inpcb * | inp | ) |
Definition at line 2665 of file in_pcb.c.
References INP_WUNLOCK.
|
static |
Definition at line 1891 of file in_pcb.c.
References inpcb::inp_cred.
Referenced by in_pcbstorage_init().
|
static |
Definition at line 1906 of file in_pcb.c.
References INP_LOCK_DESTROY.
Referenced by in_pcbstorage_init().
|
static |
Definition at line 2634 of file in_pcb.c.
References ipport_tick_callout.
Referenced by ipport_tick_init().
|
static |
Definition at line 2613 of file in_pcb.c.
References ipport_tick(), ipport_tick_callout, V_ipport_randomcps, V_ipport_randomtime, V_ipport_stoprandom, V_ipport_tcpallocs, and V_ipport_tcplastcount.
Referenced by ipport_tick(), and ipport_tick_init().
|
static |
Definition at line 2645 of file in_pcb.c.
References ip_fini(), ipport_tick(), and ipport_tick_callout.
struct inpcb * so_sotoinpcb | ( | struct socket * | so | ) |
struct tcpcb * so_sototcpcb | ( | struct socket * | so | ) |
int sysctl_setsockopt | ( | SYSCTL_HANDLER_ARGS | , |
struct inpcbinfo * | pcbinfo, | ||
int(*)(struct inpcb *, struct sockopt *) | ctloutput_set | ||
) |
Definition at line 2803 of file in_pcb.c.
References inpcb_iterator::hash, INC_ISIPV6, INP6_PCBHASH, INP_ALL_ITERATOR, INP_DROPPED, inpcb::inp_flags, inpcb::inp_gencnt, inp_next(), INP_PCBHASH, INP_PCBHASH_WILD, inpcb::inp_socket, INP_TIMEWAIT, INP_WUNLOCK, INPLOOKUP_WLOCKPCB, and inpcbinfo::ipi_hashmask.
Referenced by tcp_sysctl_setsockopt().
SYSINIT | ( | ipport_tick_init | , |
SI_SUB_PROTO_DOMAIN | , | ||
SI_ORDER_MIDDLE | , | ||
ipport_tick_init | , | ||
NULL | |||
) |
VNET_DEFINE | ( | int | , |
ipport_firstauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_hifirstauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_hilastauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_lastauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_lowfirstauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_lowlastauto | |||
) |
VNET_DEFINE | ( | int | , |
ipport_randomcps | |||
) |
VNET_DEFINE | ( | int | , |
ipport_randomized | |||
) |
VNET_DEFINE | ( | int | , |
ipport_randomtime | |||
) |
VNET_DEFINE | ( | int | , |
ipport_reservedhigh | |||
) |
VNET_DEFINE | ( | int | , |
ipport_reservedlow | |||
) |
VNET_DEFINE | ( | int | , |
ipport_stoprandom | |||
) |
VNET_DEFINE | ( | int | , |
ipport_tcpallocs | |||
) |
VNET_DEFINE | ( | uint32_t | , |
in_pcbhashseed | |||
) |
VNET_DEFINE_STATIC | ( | int | , |
ipport_tcplastcount | |||
) |
VNET_SYSINIT | ( | in_pcbhashseed_init | , |
SI_SUB_PROTO_DOMAIN | , | ||
SI_ORDER_FIRST | , | ||
in_pcbhashseed_init | , | ||
0 | |||
) |
|
static |
Definition at line 120 of file in_pcb.c.
Referenced by ip_fini(), ipport_tick(), and ipport_tick_init().