FreeBSD kernel IPv4 code
ip_icmp.c File Reference
#include <sys/cdefs.h>
#include "opt_inet.h"
#include <sys/param.h>
#include <sys/systm.h>
#include <sys/mbuf.h>
#include <sys/protosw.h>
#include <sys/socket.h>
#include <sys/time.h>
#include <sys/kernel.h>
#include <sys/lock.h>
#include <sys/sysctl.h>
#include <sys/syslog.h>
#include <net/if.h>
#include <net/if_var.h>
#include <net/if_types.h>
#include <net/route.h>
#include <net/route/route_ctl.h>
#include <net/route/nhop.h>
#include <net/vnet.h>
#include <netinet/in.h>
#include <netinet/in_fib.h>
#include <netinet/in_pcb.h>
#include <netinet/in_systm.h>
#include <netinet/in_var.h>
#include <netinet/ip.h>
#include <netinet/ip_icmp.h>
#include <netinet/ip_var.h>
#include <netinet/ip_options.h>
#include <netinet/sctp.h>
#include <netinet/tcp.h>
#include <netinet/tcp_var.h>
#include <netinet/tcpip.h>
#include <netinet/icmp_var.h>
Include dependency graph for ip_icmp.c:

Go to the source code of this file.

Data Structures

struct  icmp_rate
 

Macros

#define V_icmplim   VNET(icmplim)
 
#define V_icmplim_output   VNET(icmplim_output)
 
#define V_icmp_rates   VNET(icmp_rates)
 

Functions

 __FBSDID ("$FreeBSD$")
 
 VNET_DEFINE_STATIC (int, icmplim)
 
 SYSCTL_INT (_net_inet_icmp, ICMPCTL_ICMPLIM, icmplim, CTLFLAG_VNET|CTLFLAG_RW, &VNET_NAME(icmplim), 0, "Maximum number of ICMP responses per second")
 
 VNET_DEFINE_STATIC (int, icmplim_output)
 
 SYSCTL_INT (_net_inet_icmp, OID_AUTO, icmplim_output, CTLFLAG_VNET|CTLFLAG_RW, &VNET_NAME(icmplim_output), 0, "Enable logging of ICMP response rate limiting")
 
 VNET_DEFINE_STATIC (struct icmp_rate, icmp_rates[BANDLIM_MAX])
 
static void icmp_bandlimit_init (void)
 
 VNET_SYSINIT (icmp_bandlimit, SI_SUB_PROTO_DOMAIN, SI_ORDER_ANY, icmp_bandlimit_init, NULL)
 
static void icmp_bandlimit_uninit (void)
 
 VNET_SYSUNINIT (icmp_bandlimit, SI_SUB_PROTO_DOMAIN, SI_ORDER_THIRD, icmp_bandlimit_uninit, NULL)
 
int badport_bandlim (int which)
 

Macro Definition Documentation

◆ V_icmp_rates

#define V_icmp_rates   VNET(icmp_rates)

Definition at line 1090 of file ip_icmp.c.

◆ V_icmplim

#define V_icmplim   VNET(icmplim)

Definition at line 86 of file ip_icmp.c.

◆ V_icmplim_output

#define V_icmplim_output   VNET(icmplim_output)

Definition at line 92 of file ip_icmp.c.

Function Documentation

◆ __FBSDID()

__FBSDID ( "$FreeBSD$"  )

◆ badport_bandlim()

int badport_bandlim ( int  which)

Definition at line 1115 of file ip_icmp.c.

References BANDLIM_MAX, BANDLIM_UNLIMITED, V_icmp_rates, V_icmplim, and V_icmplim_output.

Referenced by sctp_common_input_processing(), and tcp_dropwithreset().

Here is the caller graph for this function:

◆ icmp_bandlimit_init()

static void icmp_bandlimit_init ( void  )
static

Definition at line 1093 of file ip_icmp.c.

References BANDLIM_MAX, and V_icmp_rates.

◆ icmp_bandlimit_uninit()

static void icmp_bandlimit_uninit ( void  )
static

Definition at line 1105 of file ip_icmp.c.

References BANDLIM_MAX, and V_icmp_rates.

◆ SYSCTL_INT() [1/2]

SYSCTL_INT ( _net_inet_icmp  ,
ICMPCTL_ICMPLIM  ,
icmplim  ,
CTLFLAG_VNET|  CTLFLAG_RW,
VNET_NAMEicmplim,
,
"Maximum number of ICMP responses per second"   
)

◆ SYSCTL_INT() [2/2]

SYSCTL_INT ( _net_inet_icmp  ,
OID_AUTO  ,
icmplim_output  ,
CTLFLAG_VNET|  CTLFLAG_RW,
VNET_NAMEicmplim_output,
,
"Enable logging of ICMP response rate limiting"   
)

◆ VNET_DEFINE_STATIC() [1/3]

VNET_DEFINE_STATIC ( int  ,
icmplim   
)

◆ VNET_DEFINE_STATIC() [2/3]

VNET_DEFINE_STATIC ( int  ,
icmplim_output   
)

◆ VNET_DEFINE_STATIC() [3/3]

VNET_DEFINE_STATIC ( struct icmp_rate  ,
icmp_rates  [BANDLIM_MAX] 
)

◆ VNET_SYSINIT()

VNET_SYSINIT ( icmp_bandlimit  ,
SI_SUB_PROTO_DOMAIN  ,
SI_ORDER_ANY  ,
icmp_bandlimit_init  ,
NULL   
)

◆ VNET_SYSUNINIT()

VNET_SYSUNINIT ( icmp_bandlimit  ,
SI_SUB_PROTO_DOMAIN  ,
SI_ORDER_THIRD  ,
icmp_bandlimit_uninit  ,
NULL   
)