diff options
Diffstat (limited to 'sys/netinet/ip_icmp.c')
-rw-r--r-- | sys/netinet/ip_icmp.c | 99 |
1 files changed, 54 insertions, 45 deletions
diff --git a/sys/netinet/ip_icmp.c b/sys/netinet/ip_icmp.c index f3ef17524470..475f297e1f43 100644 --- a/sys/netinet/ip_icmp.c +++ b/sys/netinet/ip_icmp.c @@ -47,6 +47,7 @@ __FBSDID("$FreeBSD$"); #include <net/if.h> #include <net/if_types.h> #include <net/route.h> +#include <net/vnet.h> #include <netinet/in.h> #include <netinet/in_pcb.h> @@ -60,7 +61,6 @@ __FBSDID("$FreeBSD$"); #include <netinet/tcp_var.h> #include <netinet/tcpip.h> #include <netinet/icmp_var.h> -#include <netinet/vinet.h> #ifdef IPSEC #include <netipsec/ipsec.h> @@ -77,61 +77,75 @@ __FBSDID("$FreeBSD$"); * host table maintenance routines. */ -#ifdef VIMAGE_GLOBALS -struct icmpstat icmpstat; -static int icmpmaskrepl; -static u_int icmpmaskfake; -static int drop_redirect; -static int log_redirect; -static int icmplim; -static int icmplim_output; -static char reply_src[IFNAMSIZ]; -static int icmp_rfi; -static int icmp_quotelen; -static int icmpbmcastecho; -#endif - -SYSCTL_V_STRUCT(V_NET, vnet_inet, _net_inet_icmp, ICMPCTL_STATS, stats, - CTLFLAG_RW, icmpstat, icmpstat, ""); - -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, ICMPCTL_MASKREPL, maskrepl, - CTLFLAG_RW, icmpmaskrepl, 0, +VNET_DEFINE(struct icmpstat, icmpstat); +static VNET_DEFINE(int, icmpmaskrepl); +static VNET_DEFINE(u_int, icmpmaskfake); +static VNET_DEFINE(int, drop_redirect); +static VNET_DEFINE(int, log_redirect); +static VNET_DEFINE(int, icmplim); +static VNET_DEFINE(int, icmplim_output); +static VNET_DEFINE(char, reply_src[IFNAMSIZ]); +static VNET_DEFINE(int, icmp_rfi); +static VNET_DEFINE(int, icmp_quotelen); +static VNET_DEFINE(int, icmpbmcastecho); + +#define V_icmpmaskrepl VNET_GET(icmpmaskrepl) +#define V_icmpmaskfake VNET_GET(icmpmaskfake) +#define V_drop_redirect VNET_GET(drop_redirect) +#define V_log_redirect VNET_GET(log_redirect) +#define V_icmplim VNET_GET(icmplim) +#define V_icmplim_output VNET_GET(icmplim_output) +#define V_reply_src VNET_GET(reply_src) +#define V_icmp_rfi VNET_GET(icmp_rfi) +#define V_icmp_quotelen VNET_GET(icmp_quotelen) +#define V_icmpbmcastecho VNET_GET(icmpbmcastecho) + +SYSCTL_VNET_STRUCT(_net_inet_icmp, ICMPCTL_STATS, stats, CTLFLAG_RW, + &VNET_NAME(icmpstat), icmpstat, ""); + +SYSCTL_VNET_INT(_net_inet_icmp, ICMPCTL_MASKREPL, maskrepl, CTLFLAG_RW, + &VNET_NAME(icmpmaskrepl), 0, "Reply to ICMP Address Mask Request packets."); -SYSCTL_V_UINT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, maskfake, CTLFLAG_RW, - icmpmaskfake, 0, "Fake reply to ICMP Address Mask Request packets."); +SYSCTL_VNET_UINT(_net_inet_icmp, OID_AUTO, maskfake, CTLFLAG_RW, + &VNET_NAME(icmpmaskfake), 0, + "Fake reply to ICMP Address Mask Request packets."); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, drop_redirect, - CTLFLAG_RW, drop_redirect, 0, "Ignore ICMP redirects"); +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, drop_redirect, CTLFLAG_RW, + &VNET_NAME(drop_redirect), 0, + "Ignore ICMP redirects"); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, log_redirect, - CTLFLAG_RW, log_redirect, 0, "Log ICMP redirects to the console"); +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, log_redirect, CTLFLAG_RW, + &VNET_NAME(log_redirect), 0, + "Log ICMP redirects to the console"); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, ICMPCTL_ICMPLIM, icmplim, - CTLFLAG_RW, icmplim, 0, "Maximum number of ICMP responses per second"); +SYSCTL_VNET_INT(_net_inet_icmp, ICMPCTL_ICMPLIM, icmplim, CTLFLAG_RW, + &VNET_NAME(icmplim), 0, + "Maximum number of ICMP responses per second"); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, icmplim_output, - CTLFLAG_RW, icmplim_output, 0, +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, icmplim_output, CTLFLAG_RW, + &VNET_NAME(icmplim_output), 0, "Enable rate limiting of ICMP responses"); -SYSCTL_V_STRING(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, reply_src, - CTLFLAG_RW, reply_src, IFNAMSIZ, +SYSCTL_VNET_STRING(_net_inet_icmp, OID_AUTO, reply_src, CTLFLAG_RW, + &VNET_NAME(reply_src), IFNAMSIZ, "icmp reply source for non-local packets."); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, reply_from_interface, - CTLFLAG_RW, icmp_rfi, 0, "ICMP reply from incoming interface for " - "non-local packets"); +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, reply_from_interface, CTLFLAG_RW, + &VNET_NAME(icmp_rfi), 0, + "ICMP reply from incoming interface for non-local packets"); -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, quotelen, CTLFLAG_RW, - icmp_quotelen, 0, "Number of bytes from original packet to " - "quote in ICMP reply"); +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, quotelen, CTLFLAG_RW, + &VNET_NAME(icmp_quotelen), 0, + "Number of bytes from original packet to quote in ICMP reply"); /* * ICMP broadcast echo sysctl */ -SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, bmcastecho, - CTLFLAG_RW, icmpbmcastecho, 0, ""); +SYSCTL_VNET_INT(_net_inet_icmp, OID_AUTO, bmcastecho, CTLFLAG_RW, + &VNET_NAME(icmpbmcastecho), 0, + ""); #ifdef ICMPPRINTFS @@ -146,7 +160,6 @@ extern struct protosw inetsw[]; void icmp_init(void) { - INIT_VNET_INET(curvnet); V_icmpmaskrepl = 0; V_icmpmaskfake = 0; @@ -166,7 +179,6 @@ icmp_init(void) void icmp_error(struct mbuf *n, int type, int code, uint32_t dest, int mtu) { - INIT_VNET_INET(curvnet); register struct ip *oip = mtod(n, struct ip *), *nip; register unsigned oiphlen = oip->ip_hl << 2; register struct icmp *icp; @@ -315,7 +327,6 @@ freeit: void icmp_input(struct mbuf *m, int off) { - INIT_VNET_INET(curvnet); struct icmp *icp; struct in_ifaddr *ia; struct ip *ip = mtod(m, struct ip *); @@ -649,7 +660,6 @@ freeit: static void icmp_reflect(struct mbuf *m) { - INIT_VNET_INET(curvnet); struct ip *ip = mtod(m, struct ip *); struct ifaddr *ifa; struct ifnet *ifp; @@ -941,7 +951,6 @@ ip_next_mtu(int mtu, int dir) int badport_bandlim(int which) { - INIT_VNET_INET(curvnet); #define N(a) (sizeof (a) / sizeof (a[0])) static struct rate { |