As discussed in Calgary I don't think we need 6 different files for
gif(4).  None of them are standalone.  Since all our other pseudo-
drivers are self-contained, let's do the same!  This will prevent
new pseud-drivers to copy this pattern and add yet another 6 files!

This merge the following files into net/if_gif.{c,h}:

        netinet/in_gif.c
        netinet/in_gif.h
        netinet6/in6_gif.c
        netinet6/in6_gif.h

Tested with an etherip + ipsec setup, ok?

Index: conf/files
===================================================================
RCS file: /cvs/src/sys/conf/files,v
retrieving revision 1.602
diff -u -p -r1.602 files
--- conf/files  10 Sep 2015 18:39:57 -0000      1.602
+++ conf/files  25 Sep 2015 09:01:56 -0000
@@ -937,8 +937,6 @@ file uvm/uvm_vnode.c
 # IPv6
 file net/if_gif.c                      gif                     needs-count
 file netinet/ip_ecn.c
-file netinet/in_gif.c                  gif
-file netinet6/in6_gif.c                        gif & inet6
 file netinet6/in6_pcb.c                        inet6
 file netinet6/in6.c                    inet6
 file netinet6/ip6_divert.c             inet6 & pf
Index: net/if_gif.c
===================================================================
RCS file: /cvs/src/sys/net/if_gif.c,v
retrieving revision 1.79
diff -u -p -r1.79 if_gif.c
--- net/if_gif.c        11 Sep 2015 08:17:06 -0000      1.79
+++ net/if_gif.c        25 Sep 2015 09:01:56 -0000
@@ -41,26 +41,36 @@
 #include <net/if_var.h>
 #include <net/if_types.h>
 #include <net/route.h>
-#include <net/bpf.h>
 
 #include <netinet/in.h>
 #include <netinet/in_var.h>
-#include <netinet/in_gif.h>
 #include <netinet/ip.h>
 #include <netinet/ip_ether.h>
 #include <netinet/ip_var.h>
+#include <netinet/ip_ipsp.h>
 
 #ifdef INET6
 #include <netinet6/in6_var.h>
 #include <netinet/ip6.h>
 #include <netinet6/ip6_var.h>
-#include <netinet6/in6_gif.h>
 #endif /* INET6 */
 
 #include <net/if_gif.h>
 
 #include "bpfilter.h"
+#if NBPFILTER > 0
+#include <net/bpf.h>
+#endif
+
 #include "bridge.h"
+#if NBRIDGE > 0 || defined(MPLS)
+#include <netinet/ip_ether.h>
+#endif
+
+#include "pf.h"
+#if NPF > 0
+#include <net/pfvar.h>
+#endif
 
 #define GIF_MTU                (1280)  /* Default MTU */
 #define GIF_MTU_MIN    (1280)  /* Minimum MTU */
@@ -75,6 +85,9 @@ int   gif_ioctl(struct ifnet *, u_long, ca
 int    gif_output(struct ifnet *, struct mbuf *, struct sockaddr *,
            struct rtentry *);
 
+int    in_gif_output(struct ifnet *, int, struct mbuf **);
+int    in6_gif_output(struct ifnet *, int, struct mbuf **);
+
 /*
  * gif global variable definitions
  */
@@ -628,3 +641,276 @@ gif_checkloop(struct ifnet *ifp, struct 
        m_tag_prepend(m, mtag);
        return 0;
 }
+
+int
+in_gif_output(struct ifnet *ifp, int family, struct mbuf **m0)
+{
+       struct gif_softc *sc = (struct gif_softc*)ifp;
+       struct sockaddr_in *sin_src = satosin(sc->gif_psrc);
+       struct sockaddr_in *sin_dst = satosin(sc->gif_pdst);
+       struct tdb tdb;
+       struct xformsw xfs;
+       int error;
+       struct mbuf *m = *m0;
+
+       if (sin_src == NULL || sin_dst == NULL ||
+           sin_src->sin_family != AF_INET ||
+           sin_dst->sin_family != AF_INET) {
+               m_freem(m);
+               return EAFNOSUPPORT;
+       }
+
+#ifdef DIAGNOSTIC
+       if (ifp->if_rdomain != rtable_l2(m->m_pkthdr.ph_rtableid)) {
+               printf("%s: trying to send packet on wrong domain. "
+                   "if %d vs. mbuf %d, AF %d\n", ifp->if_xname,
+                   ifp->if_rdomain, rtable_l2(m->m_pkthdr.ph_rtableid),
+                   family);
+       }
+#endif
+
+       /* setup dummy tdb.  it highly depends on ipip_output() code. */
+       bzero(&tdb, sizeof(tdb));
+       bzero(&xfs, sizeof(xfs));
+       tdb.tdb_src.sin.sin_family = AF_INET;
+       tdb.tdb_src.sin.sin_len = sizeof(struct sockaddr_in);
+       tdb.tdb_src.sin.sin_addr = sin_src->sin_addr;
+       tdb.tdb_dst.sin.sin_family = AF_INET;
+       tdb.tdb_dst.sin.sin_len = sizeof(struct sockaddr_in);
+       tdb.tdb_dst.sin.sin_addr = sin_dst->sin_addr;
+       tdb.tdb_xform = &xfs;
+       xfs.xf_type = -1;       /* not XF_IP4 */
+
+       switch (family) {
+       case AF_INET:
+               break;
+#ifdef INET6
+       case AF_INET6:
+               break;
+#endif
+#if NBRIDGE > 0
+       case AF_LINK:
+               break;
+#endif
+#if MPLS
+       case AF_MPLS:
+               break;
+#endif
+       default:
+#ifdef DEBUG
+               printf("%s: warning: unknown family %d passed\n", __func__,
+                       family);
+#endif
+               m_freem(m);
+               return EAFNOSUPPORT;
+       }
+
+       /* encapsulate into IPv4 packet */
+       *m0 = NULL;
+#if NBRIDGE > 0
+       if (family == AF_LINK)
+               error = etherip_output(m, &tdb, m0, IPPROTO_ETHERIP);
+       else
+#endif /* NBRIDGE */
+#ifdef MPLS
+       if (family == AF_MPLS)
+               error = etherip_output(m, &tdb, m0, IPPROTO_MPLS);
+       else
+#endif
+       error = ipip_output(m, &tdb, m0, 0, 0);
+       if (error)
+               return error;
+       else if (*m0 == NULL)
+               return EFAULT;
+
+       m = *m0;
+
+       m->m_pkthdr.ph_rtableid = sc->gif_rtableid;
+#if NPF > 0
+       pf_pkt_addr_changed(m);
+#endif
+       return 0;
+}
+
+void
+in_gif_input(struct mbuf *m, ...)
+{
+       int off;
+       struct gif_softc *sc;
+       struct ifnet *gifp = NULL;
+       struct ip *ip;
+       va_list ap;
+
+       va_start(ap, m);
+       off = va_arg(ap, int);
+       va_end(ap);
+
+       /* IP-in-IP header is caused by tunnel mode, so skip gif lookup */
+       if (m->m_flags & M_TUNNEL) {
+               m->m_flags &= ~M_TUNNEL;
+               goto inject;
+       }
+
+       ip = mtod(m, struct ip *);
+
+       /* this code will be soon improved. */
+       LIST_FOREACH(sc, &gif_softc_list, gif_list) {
+               if (sc->gif_psrc == NULL || sc->gif_pdst == NULL ||
+                   sc->gif_psrc->sa_family != AF_INET ||
+                   sc->gif_pdst->sa_family != AF_INET ||
+                   rtable_l2(sc->gif_rtableid) !=
+                   rtable_l2(m->m_pkthdr.ph_rtableid)) {
+                       continue;
+               }
+
+               if ((sc->gif_if.if_flags & IFF_UP) == 0)
+                       continue;
+
+               if (in_hosteq(satosin(sc->gif_psrc)->sin_addr, ip->ip_dst) &&
+                   in_hosteq(satosin(sc->gif_pdst)->sin_addr, ip->ip_src)) {
+                       gifp = &sc->gif_if;
+                       break;
+               }
+       }
+
+       if (gifp) {
+               m->m_pkthdr.ph_ifidx = gifp->if_index;
+               m->m_pkthdr.ph_rtableid = gifp->if_rdomain;
+               gifp->if_ipackets++;
+               gifp->if_ibytes += m->m_pkthdr.len;
+               /* We have a configured GIF */
+               ipip_input(m, off, gifp, ip->ip_p);
+               return;
+       }
+
+inject:
+       ip4_input(m, off); /* No GIF interface was configured */
+       return;
+}
+
+#ifdef INET6
+int
+in6_gif_output(struct ifnet *ifp, int family, struct mbuf **m0)
+{
+       struct gif_softc *sc = (struct gif_softc*)ifp;
+       struct sockaddr_in6 *sin6_src = satosin6(sc->gif_psrc);
+       struct sockaddr_in6 *sin6_dst = satosin6(sc->gif_pdst);
+       struct tdb tdb;
+       struct xformsw xfs;
+       int error;
+       struct mbuf *m = *m0;
+
+       if (sin6_src == NULL || sin6_dst == NULL ||
+           sin6_src->sin6_family != AF_INET6 ||
+           sin6_dst->sin6_family != AF_INET6) {
+               m_freem(m);
+               return EAFNOSUPPORT;
+       }
+
+       /* setup dummy tdb.  it highly depends on ipip_output() code. */
+       bzero(&tdb, sizeof(tdb));
+       bzero(&xfs, sizeof(xfs));
+       tdb.tdb_src.sin6.sin6_family = AF_INET6;
+       tdb.tdb_src.sin6.sin6_len = sizeof(struct sockaddr_in6);
+       tdb.tdb_src.sin6.sin6_addr = sin6_src->sin6_addr;
+       tdb.tdb_dst.sin6.sin6_family = AF_INET6;
+       tdb.tdb_dst.sin6.sin6_len = sizeof(struct sockaddr_in6);
+       tdb.tdb_dst.sin6.sin6_addr = sin6_dst->sin6_addr;
+       tdb.tdb_xform = &xfs;
+       xfs.xf_type = -1;       /* not XF_IP4 */
+
+       switch (family) {
+       case AF_INET:
+               break;
+#ifdef INET6
+       case AF_INET6:
+               break;
+#endif
+#if NBRIDGE > 0
+       case AF_LINK:
+               break;
+#endif
+#ifdef MPLS
+       case AF_MPLS:
+               break;
+#endif
+       default:
+#ifdef DEBUG
+               printf("%s: warning: unknown family %d passed\n", __func__,
+                       family);
+#endif
+               m_freem(m);
+               return EAFNOSUPPORT;
+       }
+
+       /* encapsulate into IPv6 packet */
+       *m0 = NULL;
+#if NBRIDGE > 0
+       if (family == AF_LINK)
+               error = etherip_output(m, &tdb, m0, IPPROTO_ETHERIP);
+       else
+#endif /* NBRIDGE */
+#if MPLS
+       if (family == AF_MPLS)
+               error = etherip_output(m, &tdb, m0, IPPROTO_MPLS);
+       else
+#endif
+       error = ipip_output(m, &tdb, m0, 0, 0);
+       if (error)
+               return error;
+       else if (*m0 == NULL)
+               return EFAULT;
+
+       m = *m0;
+
+#if NPF > 0
+       pf_pkt_addr_changed(m);
+#endif
+       return 0;
+}
+
+int in6_gif_input(struct mbuf **mp, int *offp, int proto)
+{
+       struct mbuf *m = *mp;
+       struct gif_softc *sc;
+       struct ifnet *gifp = NULL;
+       struct ip6_hdr *ip6;
+
+       /* XXX What if we run transport-mode IPsec to protect gif tunnel ? */
+       if (m->m_flags & (M_AUTH | M_CONF))
+               goto inject;
+
+       ip6 = mtod(m, struct ip6_hdr *);
+
+#define satoin6(sa)    (satosin6(sa)->sin6_addr)
+       LIST_FOREACH(sc, &gif_softc_list, gif_list) {
+               if (sc->gif_psrc == NULL || sc->gif_pdst == NULL ||
+                   sc->gif_psrc->sa_family != AF_INET6 ||
+                   sc->gif_pdst->sa_family != AF_INET6) {
+                       continue;
+               }
+
+               if ((sc->gif_if.if_flags & IFF_UP) == 0)
+                       continue;
+
+               if (IN6_ARE_ADDR_EQUAL(&satoin6(sc->gif_psrc), &ip6->ip6_dst) &&
+                   IN6_ARE_ADDR_EQUAL(&satoin6(sc->gif_pdst), &ip6->ip6_src)) {
+                       gifp = &sc->gif_if;
+                       break;
+               }
+       }
+
+       if (gifp) {
+               m->m_pkthdr.ph_ifidx = gifp->if_index;
+               gifp->if_ipackets++;
+               gifp->if_ibytes += m->m_pkthdr.len;
+               ipip_input(m, *offp, gifp, proto);
+               return IPPROTO_DONE;
+       }
+
+inject:
+       /* No GIF tunnel configured */
+       ip4_input6(&m, offp, proto);
+       return IPPROTO_DONE;
+}
+#endif /* INET6 */
Index: net/if_gif.h
===================================================================
RCS file: /cvs/src/sys/net/if_gif.h,v
retrieving revision 1.13
diff -u -p -r1.13 if_gif.h
--- net/if_gif.h        17 Jul 2015 18:05:59 -0000      1.13
+++ net/if_gif.h        25 Sep 2015 09:01:56 -0000
@@ -49,4 +49,7 @@ extern LIST_HEAD(gif_softc_head, gif_sof
 
 int gif_encap(struct ifnet *, struct mbuf **, sa_family_t);
 
+void in_gif_input(struct mbuf *, ...);
+int in6_gif_input(struct mbuf **, int *, int);
+
 #endif /* _NET_IF_GIF_H_ */
Index: netinet/in_gif.c
===================================================================
RCS file: /cvs/src/sys/netinet/in_gif.c,v
retrieving revision 1.46
diff -u -p -r1.46 in_gif.c
--- netinet/in_gif.c    14 Aug 2015 18:07:28 -0000      1.46
+++ netinet/in_gif.c    25 Sep 2015 09:01:56 -0000
@@ -1,205 +0,0 @@
-/*     $OpenBSD: in_gif.c,v 1.46 2015/08/14 18:07:28 bluhm Exp $       */
-/*     $KAME: in_gif.c,v 1.50 2001/01/22 07:27:16 itojun Exp $ */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "pf.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/socket.h>
-#include <sys/mbuf.h>
-
-#include <net/if.h>
-#include <net/if_var.h>
-#include <net/route.h>
-#include <net/if_gif.h>
-
-#include <netinet/in.h>
-#include <netinet/ip.h>
-#include <netinet/ip_var.h>
-#include <netinet/in_gif.h>
-#include <netinet/ip_ipsp.h>
-
-#include "gif.h"
-#include "bridge.h"
-#if NBRIDGE > 0 || defined(MPLS)
-#include <netinet/ip_ether.h>
-#endif
-
-#if NPF > 0
-#include <net/pfvar.h>
-#endif
-
-int
-in_gif_output(struct ifnet *ifp, int family, struct mbuf **m0)
-{
-       struct gif_softc *sc = (struct gif_softc*)ifp;
-       struct sockaddr_in *sin_src = satosin(sc->gif_psrc);
-       struct sockaddr_in *sin_dst = satosin(sc->gif_pdst);
-       struct tdb tdb;
-       struct xformsw xfs;
-       int error;
-       struct mbuf *m = *m0;
-
-       if (sin_src == NULL || sin_dst == NULL ||
-           sin_src->sin_family != AF_INET ||
-           sin_dst->sin_family != AF_INET) {
-               m_freem(m);
-               return EAFNOSUPPORT;
-       }
-
-#ifdef DIAGNOSTIC
-       if (ifp->if_rdomain != rtable_l2(m->m_pkthdr.ph_rtableid)) {
-               printf("%s: trying to send packet on wrong domain. "
-                   "if %d vs. mbuf %d, AF %d\n", ifp->if_xname,
-                   ifp->if_rdomain, rtable_l2(m->m_pkthdr.ph_rtableid),
-                   family);
-       }
-#endif
-
-       /* setup dummy tdb.  it highly depends on ipip_output() code. */
-       bzero(&tdb, sizeof(tdb));
-       bzero(&xfs, sizeof(xfs));
-       tdb.tdb_src.sin.sin_family = AF_INET;
-       tdb.tdb_src.sin.sin_len = sizeof(struct sockaddr_in);
-       tdb.tdb_src.sin.sin_addr = sin_src->sin_addr;
-       tdb.tdb_dst.sin.sin_family = AF_INET;
-       tdb.tdb_dst.sin.sin_len = sizeof(struct sockaddr_in);
-       tdb.tdb_dst.sin.sin_addr = sin_dst->sin_addr;
-       tdb.tdb_xform = &xfs;
-       xfs.xf_type = -1;       /* not XF_IP4 */
-
-       switch (family) {
-       case AF_INET:
-               break;
-#ifdef INET6
-       case AF_INET6:
-               break;
-#endif
-#if NBRIDGE > 0
-       case AF_LINK:
-               break;
-#endif
-#if MPLS
-       case AF_MPLS:
-               break;
-#endif
-       default:
-#ifdef DEBUG
-               printf("in_gif_output: warning: unknown family %d passed\n",
-                       family);
-#endif
-               m_freem(m);
-               return EAFNOSUPPORT;
-       }
-
-       /* encapsulate into IPv4 packet */
-       *m0 = NULL;
-#if NBRIDGE > 0
-       if (family == AF_LINK)
-               error = etherip_output(m, &tdb, m0, IPPROTO_ETHERIP);
-       else
-#endif /* NBRIDGE */
-#ifdef MPLS
-       if (family == AF_MPLS)
-               error = etherip_output(m, &tdb, m0, IPPROTO_MPLS);
-       else
-#endif
-       error = ipip_output(m, &tdb, m0, 0, 0);
-       if (error)
-               return error;
-       else if (*m0 == NULL)
-               return EFAULT;
-
-       m = *m0;
-
-       m->m_pkthdr.ph_rtableid = sc->gif_rtableid;
-#if NPF > 0
-       pf_pkt_addr_changed(m);
-#endif
-       return 0;
-}
-
-void
-in_gif_input(struct mbuf *m, ...)
-{
-       int off;
-       struct gif_softc *sc;
-       struct ifnet *gifp = NULL;
-       struct ip *ip;
-       va_list ap;
-
-       va_start(ap, m);
-       off = va_arg(ap, int);
-       va_end(ap);
-
-       /* IP-in-IP header is caused by tunnel mode, so skip gif lookup */
-       if (m->m_flags & M_TUNNEL) {
-               m->m_flags &= ~M_TUNNEL;
-               goto inject;
-       }
-
-       ip = mtod(m, struct ip *);
-
-       /* this code will be soon improved. */
-       LIST_FOREACH(sc, &gif_softc_list, gif_list) {
-               if (sc->gif_psrc == NULL || sc->gif_pdst == NULL ||
-                   sc->gif_psrc->sa_family != AF_INET ||
-                   sc->gif_pdst->sa_family != AF_INET ||
-                   rtable_l2(sc->gif_rtableid) !=
-                   rtable_l2(m->m_pkthdr.ph_rtableid)) {
-                       continue;
-               }
-
-               if ((sc->gif_if.if_flags & IFF_UP) == 0)
-                       continue;
-
-               if (in_hosteq(satosin(sc->gif_psrc)->sin_addr, ip->ip_dst) &&
-                   in_hosteq(satosin(sc->gif_pdst)->sin_addr, ip->ip_src)) {
-                       gifp = &sc->gif_if;
-                       break;
-               }
-       }
-
-       if (gifp) {
-               m->m_pkthdr.ph_ifidx = gifp->if_index;
-               m->m_pkthdr.ph_rtableid = gifp->if_rdomain;
-               gifp->if_ipackets++;
-               gifp->if_ibytes += m->m_pkthdr.len;
-               /* We have a configured GIF */
-               ipip_input(m, off, gifp, ip->ip_p);
-               return;
-       }
-
-inject:
-       ip4_input(m, off); /* No GIF interface was configured */
-       return;
-}
Index: netinet/in_gif.h
===================================================================
RCS file: /cvs/src/sys/netinet/in_gif.h,v
retrieving revision 1.6
diff -u -p -r1.6 in_gif.h
--- netinet/in_gif.h    11 May 2010 09:36:07 -0000      1.6
+++ netinet/in_gif.h    25 Sep 2015 09:01:56 -0000
@@ -1,39 +0,0 @@
-/*     $OpenBSD: in_gif.h,v 1.6 2010/05/11 09:36:07 claudio Exp $      */
-/*     $KAME: in_gif.h,v 1.5 2000/04/14 08:36:02 itojun Exp $  */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _NETINET_IN_GIF_H_
-#define _NETINET_IN_GIF_H_
-
-void in_gif_input(struct mbuf *, ...);
-int in_gif_output(struct ifnet *, int, struct mbuf **);
-
-#endif /*_NETINET_IN_GIF_H_*/
Index: netinet/in_proto.c
===================================================================
RCS file: /cvs/src/sys/netinet/in_proto.c,v
retrieving revision 1.66
diff -u -p -r1.66 in_proto.c
--- netinet/in_proto.c  4 Sep 2015 08:43:39 -0000       1.66
+++ netinet/in_proto.c  25 Sep 2015 09:01:56 -0000
@@ -134,7 +134,7 @@
 
 #include "gif.h"
 #if NGIF > 0
-#include <netinet/in_gif.h>
+#include <net/if_gif.h>
 #endif
 
 #ifdef INET6
Index: netinet6/in6_gif.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_gif.c,v
retrieving revision 1.40
diff -u -p -r1.40 in6_gif.c
--- netinet6/in6_gif.c  16 Jun 2015 11:09:40 -0000      1.40
+++ netinet6/in6_gif.c  25 Sep 2015 09:01:56 -0000
@@ -1,193 +0,0 @@
-/*     $OpenBSD: in6_gif.c,v 1.40 2015/06/16 11:09:40 mpi Exp $        */
-/*     $KAME: in6_gif.c,v 1.43 2001/01/22 07:27:17 itojun Exp $        */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#include "pf.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/socket.h>
-#include <sys/sockio.h>
-#include <sys/mbuf.h>
-#include <sys/errno.h>
-#include <sys/ioctl.h>
-#include <sys/protosw.h>
-
-#include <net/if.h>
-#include <net/if_var.h>
-
-#include <netinet/in.h>
-#include <netinet/ip_ipsp.h>
-
-#if NPF > 0
-#include <net/pfvar.h>
-#endif
-
-#include <netinet/ip6.h>
-#include <netinet6/ip6_var.h>
-#include <netinet6/in6_gif.h>
-
-#include <netinet/ip_ecn.h>
-
-#include <net/if_gif.h>
-
-#include "bridge.h"
-#if NBRIDGE > 0 || defined(MPLS)
-#include <netinet/ip_ether.h>
-#endif
-
-/*
- * family - family of the packet to be encapsulate.
- */
-int
-in6_gif_output(struct ifnet *ifp, int family, struct mbuf **m0)
-{
-       struct gif_softc *sc = (struct gif_softc*)ifp;
-       struct sockaddr_in6 *sin6_src = satosin6(sc->gif_psrc);
-       struct sockaddr_in6 *sin6_dst = satosin6(sc->gif_pdst);
-       struct tdb tdb;
-       struct xformsw xfs;
-       int error;
-       struct mbuf *m = *m0;
-
-       if (sin6_src == NULL || sin6_dst == NULL ||
-           sin6_src->sin6_family != AF_INET6 ||
-           sin6_dst->sin6_family != AF_INET6) {
-               m_freem(m);
-               return EAFNOSUPPORT;
-       }
-
-       /* setup dummy tdb.  it highly depends on ipip_output() code. */
-       bzero(&tdb, sizeof(tdb));
-       bzero(&xfs, sizeof(xfs));
-       tdb.tdb_src.sin6.sin6_family = AF_INET6;
-       tdb.tdb_src.sin6.sin6_len = sizeof(struct sockaddr_in6);
-       tdb.tdb_src.sin6.sin6_addr = sin6_src->sin6_addr;
-       tdb.tdb_dst.sin6.sin6_family = AF_INET6;
-       tdb.tdb_dst.sin6.sin6_len = sizeof(struct sockaddr_in6);
-       tdb.tdb_dst.sin6.sin6_addr = sin6_dst->sin6_addr;
-       tdb.tdb_xform = &xfs;
-       xfs.xf_type = -1;       /* not XF_IP4 */
-
-       switch (family) {
-       case AF_INET:
-               break;
-#ifdef INET6
-       case AF_INET6:
-               break;
-#endif
-#if NBRIDGE > 0
-       case AF_LINK:
-               break;
-#endif
-#ifdef MPLS
-       case AF_MPLS:
-               break;
-#endif
-       default:
-#ifdef DEBUG
-               printf("in6_gif_output: warning: unknown family %d passed\n",
-                       family);
-#endif
-               m_freem(m);
-               return EAFNOSUPPORT;
-       }
-
-       /* encapsulate into IPv6 packet */
-       *m0 = NULL;
-#if NBRIDGE > 0
-       if (family == AF_LINK)
-               error = etherip_output(m, &tdb, m0, IPPROTO_ETHERIP);
-       else
-#endif /* NBRIDGE */
-#if MPLS
-       if (family == AF_MPLS)
-               error = etherip_output(m, &tdb, m0, IPPROTO_MPLS);
-       else
-#endif
-       error = ipip_output(m, &tdb, m0, 0, 0);
-       if (error)
-               return error;
-       else if (*m0 == NULL)
-               return EFAULT;
-
-       m = *m0;
-
-#if NPF > 0
-       pf_pkt_addr_changed(m);
-#endif
-       return 0;
-}
-
-int in6_gif_input(struct mbuf **mp, int *offp, int proto)
-{
-       struct mbuf *m = *mp;
-       struct gif_softc *sc;
-       struct ifnet *gifp = NULL;
-       struct ip6_hdr *ip6;
-
-       /* XXX What if we run transport-mode IPsec to protect gif tunnel ? */
-       if (m->m_flags & (M_AUTH | M_CONF))
-               goto inject;
-
-       ip6 = mtod(m, struct ip6_hdr *);
-
-#define satoin6(sa)    (satosin6(sa)->sin6_addr)
-       LIST_FOREACH(sc, &gif_softc_list, gif_list) {
-               if (sc->gif_psrc == NULL || sc->gif_pdst == NULL ||
-                   sc->gif_psrc->sa_family != AF_INET6 ||
-                   sc->gif_pdst->sa_family != AF_INET6) {
-                       continue;
-               }
-
-               if ((sc->gif_if.if_flags & IFF_UP) == 0)
-                       continue;
-
-               if (IN6_ARE_ADDR_EQUAL(&satoin6(sc->gif_psrc), &ip6->ip6_dst) &&
-                   IN6_ARE_ADDR_EQUAL(&satoin6(sc->gif_pdst), &ip6->ip6_src)) {
-                       gifp = &sc->gif_if;
-                       break;
-               }
-       }
-
-       if (gifp) {
-               m->m_pkthdr.ph_ifidx = gifp->if_index;
-               gifp->if_ipackets++;
-               gifp->if_ibytes += m->m_pkthdr.len;
-               ipip_input(m, *offp, gifp, proto);
-               return IPPROTO_DONE;
-       }
-
-inject:
-       /* No GIF tunnel configured */
-       ip4_input6(&m, offp, proto);
-       return IPPROTO_DONE;
-}
Index: netinet6/in6_gif.h
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_gif.h,v
retrieving revision 1.6
diff -u -p -r1.6 in6_gif.h
--- netinet6/in6_gif.h  11 May 2010 09:36:07 -0000      1.6
+++ netinet6/in6_gif.h  25 Sep 2015 09:01:56 -0000
@@ -1,39 +0,0 @@
-/*     $OpenBSD: in6_gif.h,v 1.6 2010/05/11 09:36:07 claudio Exp $     */
-/*     $KAME: in6_gif.h,v 1.5 2000/04/14 08:36:03 itojun Exp $ */
-
-/*
- * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- * 3. Neither the name of the project nor the names of its contributors
- *    may be used to endorse or promote products derived from this software
- *    without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED.  IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
- */
-
-#ifndef _NETINET6_IN6_GIF_H_
-#define _NETINET6_IN6_GIF_H_
-
-int in6_gif_output(struct ifnet *, int, struct mbuf **);
-int in6_gif_input(struct mbuf **, int *, int);
-
-#endif /*_NETINET6_IN6_GIF_H_*/
Index: netinet6/in6_proto.c
===================================================================
RCS file: /cvs/src/sys/netinet6/in6_proto.c,v
retrieving revision 1.80
diff -u -p -r1.80 in6_proto.c
--- netinet6/in6_proto.c        4 Sep 2015 08:43:39 -0000       1.80
+++ netinet6/in6_proto.c        25 Sep 2015 09:01:56 -0000
@@ -102,7 +102,7 @@
 #include "gif.h"
 #if NGIF > 0
 #include <netinet/ip_ether.h>
-#include <netinet6/in6_gif.h>
+#include <net/if_gif.h>
 #endif
 
 #include "carp.h"

Reply via email to