diff options
Diffstat (limited to 'sys/netinet6/ipsec.c')
-rw-r--r-- | sys/netinet6/ipsec.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/sys/netinet6/ipsec.c b/sys/netinet6/ipsec.c index 007df21..d9cf133 100644 --- a/sys/netinet6/ipsec.c +++ b/sys/netinet6/ipsec.c @@ -219,22 +219,20 @@ ipsec4_getpolicybysock(m, dir, so, error) if (m == NULL || so == NULL || error == NULL) panic("ipsec4_getpolicybysock: NULL pointer was passed.\n"); - switch (so->so_proto->pr_domain->dom_family) { - case AF_INET: + if ((sotoinpcb(so)->inp_vflag & INP_IPV4) != 0) { /* set spidx in pcb */ ipsec4_setspidx_inpcb(m, sotoinpcb(so)); pcbsp = sotoinpcb(so)->inp_sp; - break; + } #ifdef INET6 - case AF_INET6: + else if ((sotoinpcb(so)->inp_vflag & INP_IPV6) != 0) { /* set spidx in pcb */ ipsec6_setspidx_in6pcb(m, sotoin6pcb(so)); pcbsp = sotoin6pcb(so)->in6p_sp; - break; + } #endif - default: + else panic("ipsec4_getpolicybysock: unsupported address family\n"); - } /* sanity check */ if (pcbsp == NULL) |