Hi,

In ipsec_common_input() the packet can be either IPv4 or IPv6.  So
pass it to the correct raw ip input function if IPsec is disabled.

ok?

bluhm

Index: netinet/ipsec_input.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/sys/netinet/ipsec_input.c,v
retrieving revision 1.102
diff -u -p -r1.102 ipsec_input.c
--- netinet/ipsec_input.c       6 Apr 2011 19:15:34 -0000       1.102
+++ netinet/ipsec_input.c       25 Apr 2011 12:04:39 -0000
@@ -138,7 +138,25 @@ ipsec_common_input(struct mbuf *m, int s
        if ((sproto == IPPROTO_ESP && !esp_enable) ||
            (sproto == IPPROTO_AH && !ah_enable) ||
            (sproto == IPPROTO_IPCOMP && !ipcomp_enable)) {
-               rip_input(m, skip, sproto);
+               switch (af) {
+#ifdef INET
+               case AF_INET:
+                       rip_input(m, skip, sproto);
+                       break;
+#endif /* INET */
+#ifdef INET6
+               case AF_INET6:
+                       rip6_input(&m, &skip, sproto);
+                       break;
+#endif /* INET6 */
+               default:
+                       DPRINTF(("ipsec_common_input(): unsupported protocol "
+                           "family %d\n", af));
+                       m_freem(m);
+                       IPSEC_ISTAT(espstat.esps_nopf, ahstat.ahs_nopf,
+                           ipcompstat.ipcomps_nopf);
+                       return EPFNOSUPPORT;
+               }
                return 0;
        }
        if ((sproto == IPPROTO_IPCOMP) && (m->m_flags & M_COMP)) {

Reply via email to