summaryrefslogtreecommitdiff
path: root/sys/netinet/ip_icmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/netinet/ip_icmp.c')
-rw-r--r--sys/netinet/ip_icmp.c99
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 {