diff options
Diffstat (limited to 'sys/net/if_enc.c')
-rw-r--r-- | sys/net/if_enc.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/sys/net/if_enc.c b/sys/net/if_enc.c index dcb82f5..ea78088 100644 --- a/sys/net/if_enc.c +++ b/sys/net/if_enc.c @@ -52,6 +52,9 @@ #include <net/bpf.h> #include <net/vnet.h> +#include <altq/if_altq.h> +#include <netpfil/pf/pf_mtag.h> + #include <netinet/in.h> #include <netinet/in_systm.h> #include <netinet/ip.h> @@ -225,10 +228,11 @@ enc_ioctl(struct ifnet *ifp, u_long cmd, caddr_t data) } int -ipsec_filter(struct mbuf **mp, int dir, int flags) +ipsec_filter(struct mbuf **mp, struct secasindex *saidx, int dir, int flags) { int error, i; struct ip *ip; + struct pf_mtag *atag; KASSERT(encif != NULL, ("%s: encif is null", __func__)); KASSERT(flags & (ENC_IN|ENC_OUT), @@ -297,6 +301,9 @@ ipsec_filter(struct mbuf **mp, int dir, int flags) if (error != 0) goto bad; + if (saidx && (atag = pf_find_mtag(*mp)) != NULL) + saidx->qid = atag->qid; + return (error); bad: |