diff options
author | bz <bz@FreeBSD.org> | 2011-04-27 19:30:44 +0000 |
---|---|---|
committer | bz <bz@FreeBSD.org> | 2011-04-27 19:30:44 +0000 |
commit | 19104877222319644c02e765fc7a731750eaa78f (patch) | |
tree | 41ab0d5e24ff61a4333e89667bf72cddb5e47b41 /sys | |
parent | d28e675043d30fd2673b02842a810b8aec8b1696 (diff) | |
download | FreeBSD-src-19104877222319644c02e765fc7a731750eaa78f.zip FreeBSD-src-19104877222319644c02e765fc7a731750eaa78f.tar.gz |
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
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/xen/netfront/netfront.c | 12 | ||||
-rw-r--r-- | sys/net/if_enc.c | 18 | ||||
-rw-r--r-- | sys/net/if_lagg.c | 4 | ||||
-rw-r--r-- | sys/netinet/ip_carp.c | 53 |
4 files changed, 73 insertions, 14 deletions
diff --git a/sys/dev/xen/netfront/netfront.c b/sys/dev/xen/netfront/netfront.c index e47c3cc..40ff031 100644 --- a/sys/dev/xen/netfront/netfront.c +++ b/sys/dev/xen/netfront/netfront.c @@ -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 netfront_info *info) 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, struct netfront_info *info) } } } +#endif /** * Callback received when the backend's state changes. @@ -668,7 +672,9 @@ netfront_backend_changed(device_t dev, XenbusState newstate) 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, caddr_t data) { 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, caddr_t data) 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 ?*/ diff --git a/sys/net/if_enc.c b/sys/net/if_enc.c index 6ba1174..eee3733 100644 --- a/sys/net/if_enc.c +++ b/sys/net/if_enc.c @@ -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, int flags) } /* 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, int flags) 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, int flags) 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, diff --git a/sys/net/if_lagg.c b/sys/net/if_lagg.c index ee586ad..cbe9b99 100644 --- a/sys/net/if_lagg.c +++ b/sys/net/if_lagg.c @@ -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> diff --git a/sys/netinet/ip_carp.c b/sys/netinet/ip_carp.c index 1354d5e..d16159d 100644 --- a/sys/netinet/ip_carp.c +++ b/sys/netinet/ip_carp.c @@ -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 *, struct carp_softc *, 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 *, struct mbuf *, struct sockaddr *, 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 cmd) 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) (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, int unit, caddr_t params) 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 unlock) 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 ifnet *ifp) * 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_header *ch, sa_family_t af) 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 *sc) } +#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 in_ifaddr *ia, CARP_UNLOCK(cif); return (0); } +#endif #ifdef INET6 struct ifaddr * @@ -1353,7 +1384,9 @@ carp_master_down_locked(struct carp_softc *sc) 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_family_t af) 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_family_t af) } } +#ifdef INET static void carp_multicast_cleanup(struct carp_softc *sc, int dofree) { @@ -1463,6 +1499,7 @@ carp_multicast_cleanup(struct carp_softc *sc, int dofree) imo->imo_num_memberships = 0; imo->imo_multicast_ifp = NULL; } +#endif #ifdef INET6 static void @@ -1485,6 +1522,7 @@ carp_multicast6_cleanup(struct carp_softc *sc, int dofree) } #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, struct sockaddr_in *sin) return (error); } +#endif #ifdef INET6 static int |