PERFORCE change 152150 for review
Marko Zec
zec at FreeBSD.org
Wed Oct 29 11:27:17 UTC 2008
http://perforce.freebsd.org/chv.cgi?CH=152150
Change 152150 by zec at zec_tpx32 on 2008/10/29 11:26:27
Initialize all V_ variables in initializer functions (like
ip_init() etc.) instead of using initialization at instantiation.
Enclose all V_ globals in #ifdef VIMAGE_GLOBALS, so that in
next step we can simplify switching from globals to vimage
structures / containers.
So far sys/net, sys/netinet, and sys/netinet6 are covered with
this change.
Affected files ...
.. //depot/projects/vimage-commit2/src/sys/conf/options#11 edit
.. //depot/projects/vimage-commit2/src/sys/net/if.c#19 edit
.. //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/net/if_loop.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/net/raw_cb.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/net/route.c#15 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/if_ether.c#16 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/igmp.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in.c#11 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_mcast.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_pcb.c#19 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_pcb.h#7 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_proto.c#6 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_rmx.c#13 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/in_var.h#5 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_fastfwd.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_icmp.c#11 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_icmp.h#2 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_input.c#16 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/ip_output.c#8 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/raw_ip.c#14 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_hostcache.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_input.c#19 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_output.c#16 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_reass.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_sack.c#11 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_subr.c#20 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_syncache.c#21 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_timewait.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/tcp_var.h#4 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/udp_usrreq.c#19 edit
.. //depot/projects/vimage-commit2/src/sys/netinet/vinet.h#7 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/frag6.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/icmp6.c#15 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_ifattach.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_proto.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_rmx.c#13 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/in6_src.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_forward.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_input.c#11 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/ip6_mroute.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/mld6.c#10 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6.c#15 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_nbr.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/nd6_rtr.c#12 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/raw_ip6.c#11 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/scope6.c#9 edit
.. //depot/projects/vimage-commit2/src/sys/netinet6/vinet6.h#7 edit
.. //depot/projects/vimage-commit2/src/sys/sys/vimage.h#21 edit
Differences ...
==== //depot/projects/vimage-commit2/src/sys/conf/options#11 (text+ko) ====
@@ -758,5 +758,6 @@
IEEE80211_DEBUG_REFCNT opt_wlan.h
IEEE80211_AMPDU_AGE opt_wlan.h
-# Virtualize the network stack
+# Network stack virtualization.
+VIMAGE_GLOBALS opt_global.h
VIMAGE opt_global.h
==== //depot/projects/vimage-commit2/src/sys/net/if.c#19 (text+ko) ====
@@ -133,22 +133,21 @@
extern void nd6_setmtu(struct ifnet *);
#endif
-int if_index = 0;
-int ifqmaxlen = IFQ_MAXLEN;
+#ifdef VIMAGE_GLOBALS
struct ifnethead ifnet; /* depend on static init XXX */
struct ifgrouphead ifg_head;
+int if_index;
+static int if_indexlim;
+/* Table of ifnet/cdev by index. Locked with ifnet_lock. */
+static struct ifindex_entry *ifindex_table;
+static struct knlist ifklist;
+#endif
+
+int ifqmaxlen = IFQ_MAXLEN;
struct mtx ifnet_lock;
static if_com_alloc_t *if_com_alloc[256];
static if_com_free_t *if_com_free[256];
-static int if_indexlim = 8;
-static struct knlist ifklist;
-
-/*
- * Table of ifnet/cdev by index. Locked with ifnet_lock.
- */
-static struct ifindex_entry *ifindex_table = NULL;
-
static void filt_netdetach(struct knote *kn);
static int filt_netdev(struct knote *kn, long hint);
@@ -356,6 +355,10 @@
{
INIT_VNET_NET(curvnet);
+ V_if_index = 0;
+ V_ifindex_table = NULL;
+ V_if_indexlim = 8;
+
IFNET_LOCK_INIT();
TAILQ_INIT(&V_ifnet);
TAILQ_INIT(&V_ifg_head);
==== //depot/projects/vimage-commit2/src/sys/net/if_ethersubr.c#10 (text+ko) ====
@@ -142,8 +142,10 @@
int
ether_ipfw_chk(struct mbuf **m0, struct ifnet *dst,
struct ip_fw **rule, int shared);
+#ifdef VIMAGE_GLOBALS
static int ether_ipfw;
#endif
+#endif
/*
* Ethernet output routine.
==== //depot/projects/vimage-commit2/src/sys/net/if_loop.c#10 (text+ko) ====
@@ -96,7 +96,9 @@
static int lo_clone_create(struct if_clone *, int, caddr_t);
static void lo_clone_destroy(struct ifnet *);
-struct ifnet *loif = NULL; /* Used externally */
+#ifdef VIMAGE_GLOBALS
+struct ifnet *loif; /* Used externally */
+#endif
IFC_SIMPLE_DECLARE(lo, 1);
@@ -139,9 +141,11 @@
static int
loop_modevent(module_t mod, int type, void *data)
{
+ INIT_VNET_NET(curvnet);
switch (type) {
case MOD_LOAD:
+ V_loif = NULL;
if_clone_attach(&lo_cloner);
break;
==== //depot/projects/vimage-commit2/src/sys/net/raw_cb.c#10 (text+ko) ====
@@ -57,7 +57,9 @@
*/
struct mtx rawcb_mtx;
+#ifdef VIMAGE_GLOBALS
struct rawcb_list_head rawcb_list;
+#endif
SYSCTL_NODE(_net, OID_AUTO, raw, CTLFLAG_RW, 0, "Raw socket infrastructure");
==== //depot/projects/vimage-commit2/src/sys/net/route.c#15 (text+ko) ====
@@ -84,6 +84,7 @@
&rt_add_addr_allfibs, 0, "");
TUNABLE_INT("net.add_addr_allfibs", &rt_add_addr_allfibs);
+#ifdef VIMAGE_GLOBALS
static struct rtstat rtstat;
/* by default only the first 'row' of tables will be accessed. */
@@ -96,6 +97,7 @@
struct radix_node_head *rt_tables[RT_MAXFIBS][AF_MAX+1];
static int rttrash; /* routes not in table but not freed */
+#endif
static void rt_maskedcopy(struct sockaddr *,
struct sockaddr *, struct sockaddr *);
==== //depot/projects/vimage-commit2/src/sys/netinet/if_ether.c#16 (text+ko) ====
@@ -82,10 +82,15 @@
SYSCTL_NODE(_net_link_ether, PF_INET, inet, CTLFLAG_RW, 0, "");
/* timer values */
-static int arpt_keep = (20*60); /* once resolved, good for 20 more minutes */
+#ifdef VIMAGE_GLOBALS
+static int arpt_keep; /* once resolved, good for 20 more minutes */
+static int arp_maxtries;
+static int useloopback; /* use loopback interface for local traffic */
+static int arp_proxyall;
+#endif
-SYSCTL_INT(_net_link_ether_inet, OID_AUTO, max_age, CTLFLAG_RW,
- &arpt_keep, 0, "ARP entry lifetime in seconds");
+SYSCTL_V_INT(V_NET, vnet_inet, _net_link_ether_inet, OID_AUTO, max_age,
+ CTLFLAG_RW, arpt_keep, 0, "ARP entry lifetime in seconds");
#define rt_expire rt_rmx.rmx_expire
@@ -99,10 +104,6 @@
static struct ifqueue arpintrq;
-static int arp_maxtries = 5;
-static int useloopback = 1; /* use loopback interface for local traffic */
-static int arp_proxyall = 0;
-
SYSCTL_V_INT(V_NET, vnet_inet, _net_link_ether_inet, OID_AUTO, maxtries,
CTLFLAG_RW, arp_maxtries, 0,
"ARP resolution attempts before returning error");
@@ -1076,6 +1077,12 @@
static void
arp_init(void)
{
+ INIT_VNET_INET(curvnet);
+
+ V_arpt_keep = (20*60); /* once resolved, good for 20 more minutes */
+ V_arp_maxtries = 5;
+ V_useloopback = 1; /* use loopback interface for local traffic */
+ V_arp_proxyall = 0;
arpintrq.ifq_maxlen = 50;
mtx_init(&arpintrq.ifq_mtx, "arp_inq", NULL, MTX_DEF);
==== //depot/projects/vimage-commit2/src/sys/netinet/igmp.c#12 (text+ko) ====
@@ -80,7 +80,9 @@
static struct router_info *find_rti(struct ifnet *ifp);
static void igmp_sendpkt(struct in_multi *, int, unsigned long);
+#ifdef VIMAGE_GLOBALS
static struct igmpstat igmpstat;
+#endif
SYSCTL_V_STRUCT(V_NET, vnet_inet, _net_inet_igmp, IGMPCTL_STATS,
stats, CTLFLAG_RW, igmpstat, igmpstat, "");
@@ -92,8 +94,10 @@
* reference counting is used. We allow unlocked reads of router_info data
* when accessed via an in_multi read-only.
*/
+#ifdef VIMAGE_GLOBALS
+static SLIST_HEAD(, router_info) router_info_head;
+#endif
static struct mtx igmp_mtx;
-static SLIST_HEAD(, router_info) router_info_head;
static int igmp_timers_are_running;
/*
==== //depot/projects/vimage-commit2/src/sys/netinet/in.c#11 (text+ko) ====
@@ -66,18 +66,20 @@
struct in_ifaddr *, struct sockaddr_in *, int);
static void in_purgemaddrs(struct ifnet *);
-static int subnetsarelocal = 0;
+#ifdef VIMAGE_GLOBALS
+static int subnetsarelocal;
+static int sameprefixcarponly;
+extern struct inpcbinfo ripcbinfo;
+extern struct inpcbinfo udbinfo;
+#endif
+
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, subnets_are_local,
CTLFLAG_RW, subnetsarelocal, 0,
"Treat all subnets as directly connected");
-static int sameprefixcarponly = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, same_prefix_carp_only,
CTLFLAG_RW, sameprefixcarponly, 0,
"Refuse to create same prefixes on different interfaces");
-extern struct inpcbinfo ripcbinfo;
-extern struct inpcbinfo udbinfo;
-
/*
* Return 1 if an internet address is for a ``local'' host
* (one to which we have a connection). If subnetsarelocal
==== //depot/projects/vimage-commit2/src/sys/netinet/in_mcast.c#10 (text+ko) ====
@@ -86,7 +86,9 @@
* ip_output() to send IGMP packets while holding the lock; this probably is
* not quite desirable.
*/
+#ifdef VIMAGE_GLOBALS
struct in_multihead in_multihead; /* XXX BSS initialization */
+#endif
struct mtx in_multi_mtx;
MTX_SYSINIT(in_multi_mtx, &in_multi_mtx, "in_multi_mtx", MTX_DEF | MTX_RECURSE);
==== //depot/projects/vimage-commit2/src/sys/netinet/in_pcb.c#19 (text+ko) ====
@@ -84,32 +84,34 @@
#include <security/mac/mac_framework.h>
+#ifdef VIMAGE_GLOBALS
/*
* These configure the range of local port addresses assigned to
* "unspecified" outgoing connections/packets/whatever.
*/
-int ipport_lowfirstauto = IPPORT_RESERVED - 1; /* 1023 */
-int ipport_lowlastauto = IPPORT_RESERVEDSTART; /* 600 */
-int ipport_firstauto = IPPORT_EPHEMERALFIRST; /* 10000 */
-int ipport_lastauto = IPPORT_EPHEMERALLAST; /* 65535 */
-int ipport_hifirstauto = IPPORT_HIFIRSTAUTO; /* 49152 */
-int ipport_hilastauto = IPPORT_HILASTAUTO; /* 65535 */
+int ipport_lowfirstauto;
+int ipport_lowlastauto;
+int ipport_firstauto;
+int ipport_lastauto;
+int ipport_hifirstauto;
+int ipport_hilastauto;
/*
* Reserved ports accessible only to root. There are significant
* security considerations that must be accounted for when changing these,
* but the security benefits can be great. Please be careful.
*/
-int ipport_reservedhigh = IPPORT_RESERVED - 1; /* 1023 */
-int ipport_reservedlow = 0;
+int ipport_reservedhigh;
+int ipport_reservedlow;
/* Variables dealing with random ephemeral port allocation. */
-int ipport_randomized = 1; /* user controlled via sysctl */
-int ipport_randomcps = 10; /* user controlled via sysctl */
-int ipport_randomtime = 45; /* user controlled via sysctl */
-int ipport_stoprandom = 0; /* toggled by ipport_tick */
+int ipport_randomized;
+int ipport_randomcps;
+int ipport_randomtime;
+int ipport_stoprandom;
int ipport_tcpallocs;
int ipport_tcplastcount;
+#endif
#define RANGECHK(var, min, max) \
if ((var) < (min)) { (var) = (min); } \
==== //depot/projects/vimage-commit2/src/sys/netinet/in_pcb.h#7 (text+ko) ====
@@ -449,6 +449,10 @@
extern int ipport_lastauto;
extern int ipport_hifirstauto;
extern int ipport_hilastauto;
+extern int ipport_randomized;
+extern int ipport_randomcps;
+extern int ipport_randomtime;
+extern int ipport_stoprandom;
extern struct callout ipport_tick_callout;
void in_pcbpurgeif0(struct inpcbinfo *, struct ifnet *);
==== //depot/projects/vimage-commit2/src/sys/netinet/in_proto.c#6 (text+ko) ====
@@ -193,6 +193,7 @@
.pr_flags = PR_ATOMIC|PR_ADDR|PR_LASTHDR,
.pr_input = icmp_input,
.pr_ctloutput = rip_ctloutput,
+ .pr_init = icmp_init,
.pr_usrreqs = &rip_usrreqs
},
{
==== //depot/projects/vimage-commit2/src/sys/netinet/in_rmx.c#13 (text+ko) ====
@@ -151,17 +151,20 @@
return rn;
}
-static int rtq_reallyold = 60*60; /* one hour is "really old" */
+#ifdef VIMAGE_GLOBALS
+static int rtq_reallyold;
+static int rtq_minreallyold;
+static int rtq_toomany;
+#endif
+
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_RTEXPIRE, rtexpire,
CTLFLAG_RW, rtq_reallyold, 0,
"Default expiration time on dynamically learned routes");
-static int rtq_minreallyold = 10; /* never automatically crank down to less */
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_RTMINEXPIRE,
rtminexpire, CTLFLAG_RW, rtq_minreallyold, 0,
"Minimum time to attempt to hold onto dynamically learned routes");
-static int rtq_toomany = 128; /* 128 cached routes is "too many" */
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_RTMAXCACHE,
rtmaxcache, CTLFLAG_RW, rtq_toomany, 0,
"Upper limit on dynamically learned routes");
@@ -256,8 +259,10 @@
}
#define RTQ_TIMEOUT 60*10 /* run no less than once every ten minutes */
-static int rtq_timeout = RTQ_TIMEOUT;
+#ifdef VIMAGE_GLOBALS
+static int rtq_timeout;
static struct callout rtq_timer;
+#endif
static void in_rtqtimo_one(void *rock);
@@ -376,6 +381,11 @@
if (off == 0) /* XXX MRT see above */
return 1; /* only do the rest for a real routing table */
+ V_rtq_reallyold = 60*60; /* one hour is "really old" */
+ V_rtq_minreallyold = 10; /* never automatically crank down to less */
+ V_rtq_toomany = 128; /* 128 cached routes is "too many" */
+ V_rtq_timeout = RTQ_TIMEOUT;
+
rnh = *head;
rnh->rnh_addaddr = in_addroute;
rnh->rnh_matchaddr = in_matroute;
==== //depot/projects/vimage-commit2/src/sys/netinet/in_var.h#5 (text+ko) ====
@@ -138,6 +138,15 @@
#endif
/*
+ * IP datagram reassembly.
+ */
+#define IPREASS_NHASH_LOG2 6
+#define IPREASS_NHASH (1 << IPREASS_NHASH_LOG2)
+#define IPREASS_HMASK (IPREASS_NHASH - 1)
+#define IPREASS_HASH(x,y) \
+ (((((x) & 0xF) | ((((x) >> 8) & 0xF) << 4)) ^ (y)) & IPREASS_HMASK)
+
+/*
* This information should be part of the ifnet structure but we don't wish
* to change that - as it might break a number of things
*/
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_divert.c#10 (text+ko) ====
@@ -112,8 +112,10 @@
*/
/* Internal variables. */
+#ifdef VIMAGE_GLOBALS
static struct inpcbhead divcb;
static struct inpcbinfo divcbinfo;
+#endif
static u_long div_sendspace = DIVSNDQ; /* XXX sysctl ? */
static u_long div_recvspace = DIVRCVQ; /* XXX sysctl ? */
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_fastfwd.c#9 (text+ko) ====
@@ -106,7 +106,9 @@
#include <machine/in_cksum.h>
-static int ipfastforward_active = 0;
+#ifdef VIMAGE_GLOBALS
+static int ipfastforward_active;
+#endif
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, fastforwarding,
CTLFLAG_RW, ipfastforward_active, 0, "Enable fast IP forwarding");
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_icmp.c#11 (text+ko) ====
@@ -77,47 +77,51 @@
* host table maintenance routines.
*/
-struct icmpstat icmpstat;
+#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, "");
-static int icmpmaskrepl = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, ICMPCTL_MASKREPL, maskrepl,
CTLFLAG_RW, icmpmaskrepl, 0,
"Reply to ICMP Address Mask Request packets.");
-static u_int icmpmaskfake = 0;
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.");
-static int drop_redirect = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, drop_redirect,
CTLFLAG_RW, drop_redirect, 0, "Ignore ICMP redirects");
-static int log_redirect = 0;
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");
-static int icmplim = 200;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, ICMPCTL_ICMPLIM, icmplim,
CTLFLAG_RW, icmplim, 0, "Maximum number of ICMP responses per second");
-static int icmplim_output = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, icmplim_output,
CTLFLAG_RW, icmplim_output, 0,
"Enable rate limiting of ICMP responses");
-static char reply_src[IFNAMSIZ];
SYSCTL_V_STRING(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, reply_src,
CTLFLAG_RW, reply_src, IFNAMSIZ,
"icmp reply source for non-local packets.");
-static int icmp_rfi = 0;
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");
-static int icmp_quotelen = 8;
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");
@@ -126,7 +130,6 @@
* ICMP broadcast echo sysctl
*/
-static int icmpbmcastecho = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_icmp, OID_AUTO, bmcastecho,
CTLFLAG_RW, icmpbmcastecho, 0, "");
@@ -140,6 +143,22 @@
extern struct protosw inetsw[];
+void
+icmp_init(void)
+{
+ INIT_VNET_INET(curvnet);
+
+ V_icmpmaskrepl = 0;
+ V_icmpmaskfake = 0;
+ V_drop_redirect = 0;
+ V_log_redirect = 0;
+ V_icmplim = 200;
+ V_icmplim_output = 1;
+ V_icmp_rfi = 0;
+ V_icmp_quotelen = 8;
+ V_icmpbmcastecho = 0;
+}
+
/*
* Generate an error packet of type error
* in response to bad packet ip.
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_icmp.h#2 (text+ko) ====
@@ -204,6 +204,7 @@
#ifdef _KERNEL
void icmp_error(struct mbuf *, int, int, n_long, int);
void icmp_input(struct mbuf *, int);
+void icmp_init(void);
int ip_next_mtu(int, int);
#endif
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_input.c#16 (text+ko) ====
@@ -89,33 +89,47 @@
CTASSERT(sizeof(struct ip) == 20);
#endif
-int rsvp_on = 0;
+#ifdef VIMAGE_GLOBALS
+static int ipsendredirects;
+static int ip_checkinterface;
+static int ip_keepfaith;
+static int ip_sendsourcequench;
+int ip_defttl;
+int ip_do_randomid;
+int ipforwarding;
+struct in_ifaddrhead in_ifaddrhead; /* first inet address */
+struct in_ifaddrhashhead *in_ifaddrhashtbl; /* inet addr hash table */
+u_long in_ifaddrhmask; /* mask for hash table */
+struct ipstat ipstat;
+static int ip_rsvp_on;
+struct socket *ip_rsvpd;
+int rsvp_on;
+static TAILQ_HEAD(ipqhead, ipq) ipq[IPREASS_NHASH];
+static int maxnipq; /* Administrative limit on # reass queues. */
+static int maxfragsperpacket;
+int ipstealth;
+static int nipq; /* Total # of reass queues */
+#endif
-int ipforwarding = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_FORWARDING,
forwarding, CTLFLAG_RW, ipforwarding, 0,
"Enable IP forwarding between interfaces");
-static int ipsendredirects = 1; /* XXX */
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_SENDREDIRECTS,
redirect, CTLFLAG_RW, ipsendredirects, 0,
"Enable sending IP redirects");
-int ip_defttl = IPDEFTTL;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_DEFTTL,
ttl, CTLFLAG_RW, ip_defttl, 0, "Maximum TTL on IP packets");
-static int ip_keepfaith = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, IPCTL_KEEPFAITH,
keepfaith, CTLFLAG_RW, ip_keepfaith, 0,
"Enable packet capture for FAITH IPv4->IPv6 translater daemon");
-static int ip_sendsourcequench = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO,
sendsourcequench, CTLFLAG_RW, ip_sendsourcequench, 0,
"Enable the transmission of source quench packets");
-int ip_do_randomid = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, random_id,
CTLFLAG_RW, ip_do_randomid, 0, "Assign random ip_id values");
@@ -132,7 +146,6 @@
* to the loopback interface instead of the interface where the
* packets for those addresses are received.
*/
-static int ip_checkinterface = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO,
check_interface, CTLFLAG_RW, ip_checkinterface, 0,
"Verify packet arrives on correct interface");
@@ -145,9 +158,6 @@
extern struct domain inetdomain;
extern struct protosw inetsw[];
u_char ip_protox[IPPROTO_MAX];
-struct in_ifaddrhead in_ifaddrhead; /* first inet address */
-struct in_ifaddrhashhead *in_ifaddrhashtbl; /* inet addr hash table */
-u_long in_ifaddrhmask; /* mask for hash table */
SYSCTL_INT(_net_inet_ip, IPCTL_INTRQMAXLEN, intr_queue_maxlen, CTLFLAG_RW,
&ipintrq.ifq_maxlen, 0, "Maximum size of the IP input queue");
@@ -155,21 +165,10 @@
&ipintrq.ifq_drops, 0,
"Number of packets dropped from the IP input queue");
-struct ipstat ipstat;
SYSCTL_V_STRUCT(V_NET, vnet_inet, _net_inet_ip, IPCTL_STATS, stats, CTLFLAG_RW,
ipstat, ipstat, "IP statistics (struct ipstat, netinet/ip_var.h)");
-/*
- * IP datagram reassembly.
- */
-#define IPREASS_NHASH_LOG2 6
-#define IPREASS_NHASH (1 << IPREASS_NHASH_LOG2)
-#define IPREASS_HMASK (IPREASS_NHASH - 1)
-#define IPREASS_HASH(x,y) \
- (((((x) & 0xF) | ((((x) >> 8) & 0xF) << 4)) ^ (y)) & IPREASS_HMASK)
-
static uma_zone_t ipq_zone;
-static TAILQ_HEAD(ipqhead, ipq) ipq[IPREASS_NHASH];
static struct mtx ipqlock;
#define IPQ_LOCK() mtx_lock(&ipqlock)
@@ -180,13 +179,10 @@
static void maxnipq_update(void);
static void ipq_zone_change(void *);
-static int maxnipq; /* Administrative limit on # reass queues. */
-static int nipq = 0; /* Total # of reass queues */
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, fragpackets,
CTLFLAG_RD, nipq, 0,
"Current number of IPv4 fragment reassembly queue entries");
-static int maxfragsperpacket;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, maxfragsperpacket,
CTLFLAG_RW, maxfragsperpacket, 0,
"Maximum number of IPv4 fragments allowed per packet");
@@ -199,7 +195,6 @@
#endif
#ifdef IPSTEALTH
-int ipstealth = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_ip, OID_AUTO, stealth, CTLFLAG_RW,
ipstealth, 0, "IP stealth mode, no TTL decrementation on forwarding");
#endif
@@ -225,6 +220,37 @@
struct protosw *pr;
int i;
+ V_ipsendredirects = 1; /* XXX */
+ V_ip_checkinterface = 0;
+ V_ip_keepfaith = 0;
+ V_ip_sendsourcequench = 0;
+ V_rsvp_on = 0;
+ V_ip_defttl = IPDEFTTL;
+ V_ip_do_randomid = 0;
+ V_ipforwarding = 0;
+ V_ipstealth = 0;
+ V_nipq = 0; /* Total # of reass queues */
+
+ V_ipport_lowfirstauto = IPPORT_RESERVED - 1; /* 1023 */
+ V_ipport_lowlastauto = IPPORT_RESERVEDSTART; /* 600 */
+ V_ipport_firstauto = IPPORT_EPHEMERALFIRST; /* 10000 */
+ V_ipport_lastauto = IPPORT_EPHEMERALLAST; /* 65535 */
+ V_ipport_hifirstauto = IPPORT_HIFIRSTAUTO; /* 49152 */
+ V_ipport_hilastauto = IPPORT_HILASTAUTO; /* 65535 */
+ V_ipport_reservedhigh = IPPORT_RESERVED - 1; /* 1023 */
+ V_ipport_reservedlow = 0;
+ V_ipport_randomized = 1; /* user controlled via sysctl */
+ V_ipport_randomcps = 10; /* user controlled via sysctl */
+ V_ipport_randomtime = 45; /* user controlled via sysctl */
+ V_ipport_stoprandom = 0; /* toggled by ipport_tick */
+
+#ifdef NOTYET
+ /* XXX global static but not instantiated in this file */
+ V_ipfastforward_active = 0;
+ V_subnetsarelocal = 0;
+ V_sameprefixcarponly = 0;
+#endif
+
TAILQ_INIT(&V_in_ifaddrhead);
V_in_ifaddrhashtbl = hashinit(INADDR_NHASH, M_IFADDR, &V_in_ifaddrhmask);
pr = pffindproto(PF_INET, IPPROTO_RAW, SOCK_RAW);
@@ -1591,8 +1617,6 @@
* locking. This code remains in ip_input.c as ip_mroute.c is optionally
* compiled.
*/
-static int ip_rsvp_on;
-struct socket *ip_rsvpd;
int
ip_rsvp_init(struct socket *so)
{
==== //depot/projects/vimage-commit2/src/sys/netinet/ip_output.c#8 (text+ko) ====
@@ -83,7 +83,9 @@
(ntohl(a.s_addr)>>8)&0xFF,\
(ntohl(a.s_addr))&0xFF, y);
+#ifdef VIMAGE_GLOBALS
u_short ip_id;
+#endif
#ifdef MBUF_STRESS_TEST
int mbuf_frag_size = 0;
==== //depot/projects/vimage-commit2/src/sys/netinet/raw_ip.c#14 (text+ko) ====
@@ -76,8 +76,10 @@
#include <security/mac/mac_framework.h>
+#ifdef VIMAGE_GLOBALS
struct inpcbhead ripcb;
struct inpcbinfo ripcbinfo;
+#endif
/* control hooks for ipfw and dummynet */
ip_fw_ctl_t *ip_fw_ctl_ptr = NULL;
@@ -91,7 +93,9 @@
/*
* The socket used to communicate with the multicast routing daemon.
*/
+#ifdef VIMAGE_GLOBALS
struct socket *ip_mrouter;
+#endif
/*
* The various mrouter and rsvp functions.
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_hostcache.c#12 (text+ko) ====
@@ -146,9 +146,11 @@
int prune;
int purgeall;
};
+
+#ifdef VIMAGE_GLOBALS
static struct tcp_hostcache tcp_hostcache;
-
static struct callout tcp_hc_callout;
+#endif
static struct hc_metrics *tcp_hc_lookup(struct in_conninfo *);
static struct hc_metrics *tcp_hc_insert(struct in_conninfo *);
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_input.c#19 (text+ko) ====
@@ -99,7 +99,21 @@
static const int tcprexmtthresh = 3;
+#ifdef VIMAGE_GLOBALS
struct tcpstat tcpstat;
+int blackhole;
+int tcp_delack_enabled;
+int drop_synfin;
+int tcp_do_rfc3042;
+int tcp_do_rfc3390;
+int tcp_do_ecn;
+int tcp_ecn_maxretries;
+int tcp_insecure_rst;
+int tcp_do_autorcvbuf;
+int tcp_autorcvbuf_inc;
+int tcp_autorcvbuf_max;
+#endif
+
SYSCTL_V_STRUCT(V_NET, vnet_inet, _net_inet_tcp, TCPCTL_STATS, stats,
CTLFLAG_RW, tcpstat , tcpstat,
"TCP statistics (struct tcpstat, netinet/tcp_var.h)");
@@ -108,59 +122,50 @@
SYSCTL_INT(_net_inet_tcp, OID_AUTO, log_in_vain, CTLFLAG_RW,
&tcp_log_in_vain, 0, "Log all incoming TCP segments to closed ports");
-static int blackhole = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, blackhole, CTLFLAG_RW,
blackhole, 0, "Do not send RST on segments to closed ports");
-int tcp_delack_enabled = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, delayed_ack,
CTLFLAG_RW, tcp_delack_enabled, 0,
"Delay ACK to try and piggyback it onto a data packet");
-static int drop_synfin = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, drop_synfin,
CTLFLAG_RW, drop_synfin, 0, "Drop TCP packets with SYN+FIN set");
-static int tcp_do_rfc3042 = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, rfc3042, CTLFLAG_RW,
tcp_do_rfc3042, 0, "Enable RFC 3042 (Limited Transmit)");
-static int tcp_do_rfc3390 = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, rfc3390, CTLFLAG_RW,
tcp_do_rfc3390, 0,
"Enable RFC 3390 (Increasing TCP's Initial Congestion Window)");
-int tcp_do_ecn = 0;
-int tcp_ecn_maxretries = 1;
SYSCTL_NODE(_net_inet_tcp, OID_AUTO, ecn, CTLFLAG_RW, 0, "TCP ECN");
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_ecn, OID_AUTO, enable,
CTLFLAG_RW, tcp_do_ecn, 0, "TCP ECN support");
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_ecn, OID_AUTO, maxretries,
CTLFLAG_RW, tcp_ecn_maxretries, 0, "Max retries before giving up on ECN");
-static int tcp_insecure_rst = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, insecure_rst,
CTLFLAG_RW, tcp_insecure_rst, 0,
"Follow the old (insecure) criteria for accepting RST packets");
-int tcp_do_autorcvbuf = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, recvbuf_auto,
CTLFLAG_RW, tcp_do_autorcvbuf, 0,
"Enable automatic receive buffer sizing");
-int tcp_autorcvbuf_inc = 16*1024;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, recvbuf_inc,
CTLFLAG_RW, tcp_autorcvbuf_inc, 0,
"Incrementor step size of automatic receive buffer");
-int tcp_autorcvbuf_max = 256*1024;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, recvbuf_max,
CTLFLAG_RW, tcp_autorcvbuf_max, 0,
"Max size of automatic receive buffer");
+#ifdef VIMAGE_GLOBALS
struct inpcbhead tcb;
+struct inpcbinfo tcbinfo;
+#endif
#define tcb6 tcb /* for KAME src sync over BSD*'s */
-struct inpcbinfo tcbinfo;
static void tcp_dooptions(struct tcpopt *, u_char *, int, int);
static void tcp_do_segment(struct mbuf *, struct tcphdr *,
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_output.c#16 (text+ko) ====
@@ -87,39 +87,42 @@
extern struct mbuf *m_copypack();
#endif
-int path_mtu_discovery = 1;
+#ifdef VIMAGE_GLOBALS
+int path_mtu_discovery;
+int ss_fltsz;
+int ss_fltsz_local;
+int tcp_do_newreno;
+int tcp_do_tso;
+int tcp_do_autosndbuf;
+int tcp_autosndbuf_inc;
+int tcp_autosndbuf_max;
+#endif
+
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, path_mtu_discovery,
CTLFLAG_RW, path_mtu_discovery, 1, "Enable Path MTU Discovery");
-int ss_fltsz = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO,
slowstart_flightsize, CTLFLAG_RW,
ss_fltsz, 1, "Slow start flight size");
-int ss_fltsz_local = 4;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO,
local_slowstart_flightsize, CTLFLAG_RW,
ss_fltsz_local, 1, "Slow start flight size for local networks");
-int tcp_do_newreno = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, newreno, CTLFLAG_RW,
tcp_do_newreno, 0, "Enable NewReno Algorithms");
-int tcp_do_tso = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, tso, CTLFLAG_RW,
tcp_do_tso, 0, "Enable TCP Segmentation Offload");
-int tcp_do_autosndbuf = 1;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, sendbuf_auto,
CTLFLAG_RW,
tcp_do_autosndbuf, 0, "Enable automatic send buffer sizing");
-int tcp_autosndbuf_inc = 8*1024;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, sendbuf_inc,
CTLFLAG_RW, tcp_autosndbuf_inc, 0,
"Incrementor step size of automatic send buffer");
-int tcp_autosndbuf_max = 256*1024;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp, OID_AUTO, sendbuf_max,
CTLFLAG_RW, tcp_autosndbuf_max, 0,
"Max size of automatic send buffer");
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_reass.c#9 (text+ko) ====
@@ -74,25 +74,28 @@
#include <netinet/tcp_debug.h>
#endif /* TCPDEBUG */
+#ifdef VIMAGE_GLOBALS
+static int tcp_reass_maxseg;
+int tcp_reass_qsize;
+static int tcp_reass_maxqlen;
+static int tcp_reass_overflows;
+#endif
+
SYSCTL_NODE(_net_inet_tcp, OID_AUTO, reass, CTLFLAG_RW, 0,
"TCP Segment Reassembly Queue");
-static int tcp_reass_maxseg = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_reass, OID_AUTO, maxsegments,
CTLFLAG_RDTUN, tcp_reass_maxseg, 0,
"Global maximum number of TCP Segments in Reassembly Queue");
-int tcp_reass_qsize = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_reass, OID_AUTO, cursegments,
CTLFLAG_RD, tcp_reass_qsize, 0,
"Global number of TCP Segments currently in Reassembly Queue");
-static int tcp_reass_maxqlen = 48;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_reass, OID_AUTO, maxqlen,
CTLFLAG_RW, tcp_reass_maxqlen, 0,
"Maximum number of TCP Segments per individual Reassembly Queue");
-static int tcp_reass_overflows = 0;
SYSCTL_V_INT(V_NET, vnet_inet, _net_inet_tcp_reass, OID_AUTO, overflows,
CTLFLAG_RD, tcp_reass_overflows, 0,
"Global number of TCP Segment Reassembly Queue Overflows");
@@ -114,6 +117,11 @@
{
INIT_VNET_INET(curvnet);
+ V_tcp_reass_maxseg = 0;
+ V_tcp_reass_qsize = 0;
+ V_tcp_reass_maxqlen = 48;
+ V_tcp_reass_overflows = 0;
+
V_tcp_reass_maxseg = nmbclusters / 16;
TUNABLE_INT_FETCH("net.inet.tcp.reass.maxsegments",
&V_tcp_reass_maxseg);
==== //depot/projects/vimage-commit2/src/sys/netinet/tcp_sack.c#11 (text+ko) ====
>>> TRUNCATED FOR MAIL (1000 lines) <<<
More information about the p4-projects
mailing list