FreeBSD kernel IPv4 code
|
#include <sys/cdefs.h>
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/counter.h>
#include <sys/kernel.h>
#include <sys/malloc.h>
#include <sys/lock.h>
#include <sys/mutex.h>
#include <sys/random.h>
#include <sys/smp.h>
#include <sys/sysctl.h>
#include <sys/bitstring.h>
#include <net/vnet.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/ip_var.h>
Go to the source code of this file.
Macros | |
#define | V_ip_rfc6864 VNET(ip_rfc6864) |
#define | V_ip_do_randomid VNET(ip_do_randomid) |
#define | V_id_array VNET(id_array) |
#define | V_id_bits VNET(id_bits) |
#define | V_array_ptr VNET(array_ptr) |
#define | V_array_size VNET(array_size) |
#define | V_random_id_collisions VNET(random_id_collisions) |
#define | V_random_id_total VNET(random_id_total) |
#define | V_ip_id_mtx VNET(ip_id_mtx) |
#define | V_ip_id VNET(ip_id) |
Functions | |
__FBSDID ("$FreeBSD$") | |
VNET_DEFINE_STATIC (int, ip_rfc6864) | |
VNET_DEFINE_STATIC (int, ip_do_randomid)=0 | |
static | MALLOC_DEFINE (M_IPID, "ipid", "randomized ip id state") |
VNET_DEFINE_STATIC (uint16_t *, id_array) | |
VNET_DEFINE_STATIC (bitstr_t *, id_bits) | |
VNET_DEFINE_STATIC (int, array_ptr) | |
VNET_DEFINE_STATIC (int, array_size) | |
VNET_DEFINE_STATIC (int, random_id_collisions) | |
VNET_DEFINE_STATIC (int, random_id_total) | |
VNET_DEFINE_STATIC (struct mtx, ip_id_mtx) | |
VNET_DEFINE_STATIC (counter_u64_t, ip_id) | |
static int | sysctl_ip_randomid (SYSCTL_HANDLER_ARGS) |
static int | sysctl_ip_id_change (SYSCTL_HANDLER_ARGS) |
static void | ip_initid (int) |
static uint16_t | ip_randomid (void) |
static void | ipid_sysinit (void) |
static void | ipid_sysuninit (void) |
SYSCTL_DECL (_net_inet_ip) | |
SYSCTL_PROC (_net_inet_ip, OID_AUTO, random_id, CTLTYPE_INT|CTLFLAG_VNET|CTLFLAG_RW|CTLFLAG_MPSAFE, &VNET_NAME(ip_do_randomid), 0, sysctl_ip_randomid, "IU", "Assign random ip_id values") | |
SYSCTL_INT (_net_inet_ip, OID_AUTO, rfc6864, CTLFLAG_VNET|CTLFLAG_RW, &VNET_NAME(ip_rfc6864), 0, "Use constant IP ID for atomic datagrams") | |
SYSCTL_PROC (_net_inet_ip, OID_AUTO, random_id_period, CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_VNET|CTLFLAG_MPSAFE, &VNET_NAME(array_size), 0, sysctl_ip_id_change, "IU", "IP ID Array size") | |
SYSCTL_INT (_net_inet_ip, OID_AUTO, random_id_collisions, CTLFLAG_RD|CTLFLAG_VNET, &VNET_NAME(random_id_collisions), 0, "Count of IP ID collisions") | |
SYSCTL_INT (_net_inet_ip, OID_AUTO, random_id_total, CTLFLAG_RD|CTLFLAG_VNET, &VNET_NAME(random_id_total), 0, "Count of IP IDs created") | |
void | ip_fillid (struct ip *ip) |
VNET_SYSINIT (ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, ipid_sysinit, NULL) | |
VNET_SYSUNINIT (ip_id, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, ipid_sysuninit, NULL) | |
__FBSDID | ( | "$FreeBSD$" | ) |
void ip_fillid | ( | struct ip * | ip | ) |
Definition at line 243 of file ip_id.c.
References IP_DF, ip::ip_id, ip::ip_off, ip_randomid(), V_ip_do_randomid, V_ip_id, and V_ip_rfc6864.
Referenced by carp_send_ad_locked(), in_gre_output(), ip_output(), pim_register_send_rp(), sctp_lowlevel_chunk_output(), and sctp_send_resp_msg().
|
static |
Definition at line 192 of file ip_id.c.
References V_array_ptr, V_array_size, V_id_array, V_id_bits, V_ip_id_mtx, V_random_id_collisions, and V_random_id_total.
Referenced by sysctl_ip_id_change(), and sysctl_ip_randomid().
|
static |
Definition at line 216 of file ip_id.c.
References V_array_ptr, V_array_size, V_id_array, V_id_bits, V_ip_id_mtx, V_random_id_collisions, and V_random_id_total.
Referenced by ip_fillid().
|
static |
Definition at line 277 of file ip_id.c.
References V_ip_id, and V_ip_id_mtx.
|
static |
Definition at line 290 of file ip_id.c.
References V_id_array, V_id_bits, V_ip_id, and V_ip_id_mtx.
SYSCTL_DECL | ( | _net_inet_ip | ) |
SYSCTL_INT | ( | _net_inet_ip | , |
OID_AUTO | , | ||
random_id_collisions | , | ||
CTLFLAG_RD| | CTLFLAG_VNET, | ||
& | VNET_NAMErandom_id_collisions, | ||
0 | , | ||
"Count of IP ID collisions" | |||
) |
SYSCTL_INT | ( | _net_inet_ip | , |
OID_AUTO | , | ||
random_id_total | , | ||
CTLFLAG_RD| | CTLFLAG_VNET, | ||
& | VNET_NAMErandom_id_total, | ||
0 | , | ||
"Count of IP IDs created" | |||
) |
SYSCTL_INT | ( | _net_inet_ip | , |
OID_AUTO | , | ||
rfc6864 | , | ||
CTLFLAG_VNET| | CTLFLAG_RW, | ||
& | VNET_NAMEip_rfc6864, | ||
0 | , | ||
"Use constant IP ID for atomic datagrams" | |||
) |
|
static |
Definition at line 176 of file ip_id.c.
References ip_initid(), and V_array_size.
|
static |
Definition at line 156 of file ip_id.c.
References ip_initid(), and V_ip_do_randomid.
SYSCTL_PROC | ( | _net_inet_ip | , |
OID_AUTO | , | ||
random_id | , | ||
CTLTYPE_INT|CTLFLAG_VNET|CTLFLAG_RW| | CTLFLAG_MPSAFE, | ||
& | VNET_NAMEip_do_randomid, | ||
0 | , | ||
sysctl_ip_randomid | , | ||
"IU" | , | ||
"Assign random ip_id values" | |||
) |
SYSCTL_PROC | ( | _net_inet_ip | , |
OID_AUTO | , | ||
random_id_period | , | ||
CTLTYPE_INT|CTLFLAG_RW|CTLFLAG_VNET| | CTLFLAG_MPSAFE, | ||
& | VNET_NAMEarray_size, | ||
0 | , | ||
sysctl_ip_id_change | , | ||
"IU" | , | ||
"IP ID Array size" | |||
) |
VNET_DEFINE_STATIC | ( | bitstr_t * | , |
id_bits | |||
) |
VNET_DEFINE_STATIC | ( | counter_u64_t | , |
ip_id | |||
) |
VNET_DEFINE_STATIC | ( | int | , |
array_ptr | |||
) |
VNET_DEFINE_STATIC | ( | int | , |
array_size | |||
) |
|
pure virtual |
VNET_DEFINE_STATIC | ( | int | , |
ip_rfc6864 | |||
) |
VNET_DEFINE_STATIC | ( | int | , |
random_id_collisions | |||
) |
VNET_DEFINE_STATIC | ( | int | , |
random_id_total | |||
) |
VNET_DEFINE_STATIC | ( | struct mtx | , |
ip_id_mtx | |||
) |
VNET_DEFINE_STATIC | ( | uint16_t * | , |
id_array | |||
) |
VNET_SYSINIT | ( | ip_id | , |
SI_SUB_PROTO_DOMAIN | , | ||
SI_ORDER_ANY | , | ||
ipid_sysinit | , | ||
NULL | |||
) |
VNET_SYSUNINIT | ( | ip_id | , |
SI_SUB_PROTO_DOMAIN | , | ||
SI_ORDER_THIRD | , | ||
ipid_sysuninit | , | ||
NULL | |||
) |