svn commit: r221130 - in head/sys: dev/xen/netfront net netinet

Bjoern A. Zeeb bz at FreeBSD.org
Wed Apr 27 19:30:45 UTC 2011


Author: bz
Date: Wed Apr 27 19:30:44 2011
New Revision: 221130
URL: http://svn.freebsd.org/changeset/base/221130

Log:
  Make various (pseudo) interfaces compile without INET in the kernel
  adding appropriate #ifdefs.  For module builds the framework needs
  adjustments for at least carp.
  
  Reviewed by:	gnn
  Sponsored by:	The FreeBSD Foundation
  Sponsored by:	iXsystems
  MFC after:	4 days

Modified:
  head/sys/dev/xen/netfront/netfront.c
  head/sys/net/if_enc.c
  head/sys/net/if_lagg.c
  head/sys/netinet/ip_carp.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Wed Apr 27 19:28:42 2011	(r221129)
+++ head/sys/dev/xen/netfront/netfront.c	Wed Apr 27 19:30:44 2011	(r221130)
@@ -28,6 +28,8 @@
 #include <sys/cdefs.h>
 __FBSDID("$FreeBSD$");
 
+#include "opt_inet.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/sockio.h>
@@ -625,6 +627,7 @@ setup_device(device_t dev, struct netfro
 	return (error);
 }
 
+#ifdef INET
 /**
  * If this interface has an ipv4 address, send an arp for it. This
  * helps to get the network going again after migrating hosts.
@@ -642,6 +645,7 @@ netfront_send_fake_arp(device_t dev, str
 		}
 	}
 }
+#endif
 
 /**
  * Callback received when the backend's state changes.
@@ -668,7 +672,9 @@ netfront_backend_changed(device_t dev, X
 		if (network_connect(sc) != 0)
 			break;
 		xenbus_set_state(dev, XenbusStateConnected);
+#ifdef INET
 		netfront_send_fake_arp(dev, sc);
+#endif
 		break;
 	case XenbusStateClosing:
 		xenbus_set_state(dev, XenbusStateClosed);
@@ -1725,12 +1731,15 @@ xn_ioctl(struct ifnet *ifp, u_long cmd, 
 {
 	struct netfront_info *sc = ifp->if_softc;
 	struct ifreq *ifr = (struct ifreq *) data;
+#ifdef INET
 	struct ifaddr *ifa = (struct ifaddr *)data;
+#endif
 
 	int mask, error = 0;
 	switch(cmd) {
 	case SIOCSIFADDR:
 	case SIOCGIFADDR:
+#ifdef INET
 		XN_LOCK(sc);
 		if (ifa->ifa_addr->sa_family == AF_INET) {
 			ifp->if_flags |= IFF_UP;
@@ -1740,8 +1749,11 @@ xn_ioctl(struct ifnet *ifp, u_long cmd, 
 			XN_UNLOCK(sc);	
 		} else {
 			XN_UNLOCK(sc);	
+#endif
 			error = ether_ioctl(ifp, cmd, data);
+#ifdef INET
 		}
+#endif
 		break;
 	case SIOCSIFMTU:
 		/* XXX can we alter the MTU on a VN ?*/

Modified: head/sys/net/if_enc.c
==============================================================================
--- head/sys/net/if_enc.c	Wed Apr 27 19:28:42 2011	(r221129)
+++ head/sys/net/if_enc.c	Wed Apr 27 19:30:44 2011	(r221130)
@@ -27,6 +27,10 @@
  * $FreeBSD$
  */
 
+#include "opt_inet.h"
+#include "opt_inet6.h"
+#include "opt_enc.h"
+
 #include <sys/param.h>
 #include <sys/systm.h>
 #include <sys/kernel.h>
@@ -53,14 +57,12 @@
 #include <netinet/ip.h>
 #include <netinet/ip_var.h>
 #include <netinet/in_var.h>
-#include "opt_inet6.h"
 
 #ifdef INET6
 #include <netinet/ip6.h>
 #include <netinet6/ip6_var.h>
 #endif
 
-#include "opt_enc.h"
 #include <netipsec/ipsec.h>
 #include <netipsec/xform.h>
 
@@ -243,11 +245,14 @@ ipsec_filter(struct mbuf **mp, int dir, 
 	}
 
 	/* Skip pfil(9) if no filters are loaded */
-	if (!(PFIL_HOOKED(&V_inet_pfil_hook)
+	if (1
+#ifdef INET
+	    && !PFIL_HOOKED(&V_inet_pfil_hook)
+#endif
 #ifdef INET6
-	    || PFIL_HOOKED(&V_inet6_pfil_hook)
+	    && !PFIL_HOOKED(&V_inet6_pfil_hook)
 #endif
-	    )) {
+	    ) {
 		return (0);
 	}
 
@@ -263,6 +268,7 @@ ipsec_filter(struct mbuf **mp, int dir, 
 	error = 0;
 	ip = mtod(*mp, struct ip *);
 	switch (ip->ip_v) {
+#ifdef INET
 		case 4:
 			/*
 			 * before calling the firewall, swap fields the same as
@@ -282,7 +288,7 @@ ipsec_filter(struct mbuf **mp, int dir, 
 			ip->ip_len = htons(ip->ip_len);
 			ip->ip_off = htons(ip->ip_off);
 			break;
-
+#endif
 #ifdef INET6
 		case 6:
 			error = pfil_run_hooks(&V_inet6_pfil_hook, mp,

Modified: head/sys/net/if_lagg.c
==============================================================================
--- head/sys/net/if_lagg.c	Wed Apr 27 19:28:42 2011	(r221129)
+++ head/sys/net/if_lagg.c	Wed Apr 27 19:30:44 2011	(r221130)
@@ -52,8 +52,10 @@ __FBSDID("$FreeBSD$");
 #include <net/if_var.h>
 #include <net/bpf.h>
 
-#ifdef INET
+#if defined(INET) || defined(INET6)
 #include <netinet/in.h>
+#endif
+#ifdef INET
 #include <netinet/in_systm.h>
 #include <netinet/if_ether.h>
 #include <netinet/ip.h>

Modified: head/sys/netinet/ip_carp.c
==============================================================================
--- head/sys/netinet/ip_carp.c	Wed Apr 27 19:28:42 2011	(r221129)
+++ head/sys/netinet/ip_carp.c	Wed Apr 27 19:30:44 2011	(r221130)
@@ -66,14 +66,19 @@ __FBSDID("$FreeBSD$");
 #include <net/route.h>
 #include <net/vnet.h>
 
-#ifdef INET
+#if defined(INET) || defined(INET6)
 #include <netinet/in.h>
 #include <netinet/in_var.h>
-#include <netinet/in_systm.h>
+#include <netinet/ip_carp.h>
 #include <netinet/ip.h>
+
+#include <machine/in_cksum.h>
+#endif
+
+#ifdef INET
+#include <netinet/in_systm.h>
 #include <netinet/ip_var.h>
 #include <netinet/if_ether.h>
-#include <machine/in_cksum.h>
 #endif
 
 #ifdef INET6
@@ -82,11 +87,11 @@ __FBSDID("$FreeBSD$");
 #include <netinet6/ip6protosw.h>
 #include <netinet6/ip6_var.h>
 #include <netinet6/scope6_var.h>
+#include <netinet6/in6_var.h>
 #include <netinet6/nd6.h>
 #endif
 
 #include <crypto/sha1.h>
-#include <netinet/ip_carp.h>
 
 #define	CARP_IFNAME	"carp"
 static MALLOC_DEFINE(M_CARP, "CARP", "CARP interfaces");
@@ -96,7 +101,9 @@ struct carp_softc {
 	struct ifnet	 	*sc_ifp;	/* Interface clue */
 	struct ifnet		*sc_carpdev;	/* Pointer to parent interface */
 	struct in_ifaddr 	*sc_ia;		/* primary iface address */
+#ifdef INET
 	struct ip_moptions 	 sc_imo;
+#endif
 #ifdef INET6
 	struct in6_ifaddr 	*sc_ia6;	/* primary iface address v6 */
 	struct ip6_moptions 	 sc_im6o;
@@ -206,7 +213,9 @@ static int	carp_prepare_ad(struct mbuf *
 static void	carp_send_ad_all(void);
 static void	carp_send_ad(void *);
 static void	carp_send_ad_locked(struct carp_softc *);
+#ifdef INET
 static void	carp_send_arp(struct carp_softc *);
+#endif
 static void	carp_master_down(void *);
 static void	carp_master_down_locked(struct carp_softc *);
 static int	carp_ioctl(struct ifnet *, u_long, caddr_t);
@@ -215,12 +224,16 @@ static int	carp_looutput(struct ifnet *,
 static void	carp_start(struct ifnet *);
 static void	carp_setrun(struct carp_softc *, sa_family_t);
 static void	carp_set_state(struct carp_softc *, int);
+#ifdef INET
 static int	carp_addrcount(struct carp_if *, struct in_ifaddr *, int);
+#endif
 enum	{ CARP_COUNT_MASTER, CARP_COUNT_RUNNING };
 
+#ifdef INET
 static void	carp_multicast_cleanup(struct carp_softc *, int dofree);
 static int	carp_set_addr(struct carp_softc *, struct sockaddr_in *);
 static int	carp_del_addr(struct carp_softc *, struct sockaddr_in *);
+#endif
 static void	carp_carpdev_state_locked(struct carp_if *);
 static void	carp_sc_state_locked(struct carp_softc *);
 #ifdef INET6
@@ -369,6 +382,7 @@ carp_setroute(struct carp_softc *sc, int
 
 	s = splnet();
 	TAILQ_FOREACH(ifa, &SC2IFP(sc)->if_addrlist, ifa_list) {
+#ifdef INET
 		if (ifa->ifa_addr->sa_family == AF_INET &&
 		    sc->sc_carpdev != NULL) {
 			int count = carp_addrcount(
@@ -379,6 +393,7 @@ carp_setroute(struct carp_softc *sc, int
 			    (cmd == RTM_DELETE && count == 0))
 				rtinit(ifa, cmd, RTF_UP | RTF_HOST);
 		}
+#endif
 	}
 	splx(s);
 }
@@ -404,12 +419,14 @@ carp_clone_create(struct if_clone *ifc, 
 	sc->sc_advskew = 0;
 	sc->sc_init_counter = 1;
 	sc->sc_naddrs = sc->sc_naddrs6 = 0; /* M_ZERO? */
+#ifdef INET
 	sc->sc_imo.imo_membership = (struct in_multi **)malloc(
 	    (sizeof(struct in_multi *) * IP_MIN_MEMBERSHIPS), M_CARP,
 	    M_WAITOK);
 	sc->sc_imo.imo_mfilters = NULL;
 	sc->sc_imo.imo_max_memberships = IP_MIN_MEMBERSHIPS;
 	sc->sc_imo.imo_multicast_vif = -1;
+#endif
 #ifdef INET6
 	sc->sc_im6o.im6o_membership = (struct in6_multi **)malloc(
 	    (sizeof(struct in6_multi *) * IPV6_MIN_MEMBERSHIPS), M_CARP,
@@ -456,7 +473,9 @@ carp_clone_destroy(struct ifnet *ifp)
 	bpfdetach(ifp);
 	if_detach(ifp);
 	if_free_type(ifp, IFT_ETHER);
+#ifdef INET
 	free(sc->sc_imo.imo_membership, M_CARP);
+#endif
 #ifdef INET6
 	free(sc->sc_im6o.im6o_membership, M_CARP);
 #endif
@@ -495,7 +514,9 @@ carpdetach(struct carp_softc *sc, int un
 	carp_set_state(sc, INIT);
 	SC2IFP(sc)->if_flags &= ~IFF_UP;
 	carp_setrun(sc, 0);
+#ifdef INET
 	carp_multicast_cleanup(sc, unlock);
+#endif
 #ifdef INET6
 	carp_multicast6_cleanup(sc, unlock);
 #endif
@@ -540,6 +561,7 @@ carp_ifdetach(void *arg __unused, struct
  * we have rearranged checks order compared to the rfc,
  * but it seems more efficient this way or not possible otherwise.
  */
+#ifdef INET
 void
 carp_input(struct mbuf *m, int hlen)
 {
@@ -630,6 +652,7 @@ carp_input(struct mbuf *m, int hlen)
 
 	carp_input_c(m, ch, AF_INET);
 }
+#endif
 
 #ifdef INET6
 int
@@ -720,12 +743,16 @@ carp_input_c(struct mbuf *m, struct carp
 	SC2IFP(sc)->if_ibytes += m->m_pkthdr.len;
 
 	if (bpf_peers_present(SC2IFP(sc)->if_bpf)) {
-		struct ip *ip = mtod(m, struct ip *);
 		uint32_t af1 = af;
+#ifdef INET
+		struct ip *ip = mtod(m, struct ip *);
 
 		/* BPF wants net byte order */
-		ip->ip_len = htons(ip->ip_len + (ip->ip_hl << 2));
-		ip->ip_off = htons(ip->ip_off);
+		if (af == AF_INET) {
+			ip->ip_len = htons(ip->ip_len + (ip->ip_hl << 2));
+			ip->ip_off = htons(ip->ip_off);
+		}
+#endif
 		bpf_mtap2(SC2IFP(sc)->if_bpf, &af1, sizeof(af1), m);
 	}
 
@@ -1081,6 +1108,7 @@ carp_send_ad_locked(struct carp_softc *s
 
 }
 
+#ifdef INET
 /*
  * Broadcast a gratuitous ARP request containing
  * the virtual router MAC address for each IP address
@@ -1102,6 +1130,7 @@ carp_send_arp(struct carp_softc *sc)
 		DELAY(1000);	/* XXX */
 	}
 }
+#endif
 
 #ifdef INET6
 static void
@@ -1124,6 +1153,7 @@ carp_send_na(struct carp_softc *sc)
 }
 #endif /* INET6 */
 
+#ifdef INET
 static int
 carp_addrcount(struct carp_if *cif, struct in_ifaddr *ia, int type)
 {
@@ -1227,6 +1257,7 @@ carp_iamatch(struct ifnet *ifp, struct i
 	CARP_UNLOCK(cif);
 	return (0);
 }
+#endif
 
 #ifdef INET6
 struct ifaddr *
@@ -1353,7 +1384,9 @@ carp_master_down_locked(struct carp_soft
 	case BACKUP:
 		carp_set_state(sc, MASTER);
 		carp_send_ad_locked(sc);
+#ifdef INET
 		carp_send_arp(sc);
+#endif
 #ifdef INET6
 		carp_send_na(sc);
 #endif /* INET6 */
@@ -1393,7 +1426,9 @@ carp_setrun(struct carp_softc *sc, sa_fa
 	case INIT:
 		if (carp_opts[CARPCTL_PREEMPT] && !carp_suppress_preempt) {
 			carp_send_ad_locked(sc);
+#ifdef INET
 			carp_send_arp(sc);
+#endif
 #ifdef INET6
 			carp_send_na(sc);
 #endif /* INET6 */
@@ -1444,6 +1479,7 @@ carp_setrun(struct carp_softc *sc, sa_fa
 	}
 }
 
+#ifdef INET
 static void
 carp_multicast_cleanup(struct carp_softc *sc, int dofree)
 {
@@ -1463,6 +1499,7 @@ carp_multicast_cleanup(struct carp_softc
 	imo->imo_num_memberships = 0;
 	imo->imo_multicast_ifp = NULL;
 }
+#endif
 
 #ifdef INET6
 static void
@@ -1485,6 +1522,7 @@ carp_multicast6_cleanup(struct carp_soft
 }
 #endif
 
+#ifdef INET
 static int
 carp_set_addr(struct carp_softc *sc, struct sockaddr_in *sin)
 {
@@ -1661,6 +1699,7 @@ carp_del_addr(struct carp_softc *sc, str
 
 	return (error);
 }
+#endif
 
 #ifdef INET6
 static int


More information about the svn-src-head mailing list