Module Name: src Committed By: ozaki-r Date: Fri Aug 28 06:19:13 UTC 2020
Modified Files: src/sys/netinet: ip_input.c ip_output.c ip_var.h src/sys/netinet6: ip6_forward.c ip6_input.c ip6_output.c ip6_var.h src/sys/netipsec: ipsec.c ipsec.h Log Message: inet, inet6: count packets dropped by IPsec The counters count packets dropped due to security policy checks. To generate a diff of this commit: cvs rdiff -u -r1.393 -r1.394 src/sys/netinet/ip_input.c cvs rdiff -u -r1.315 -r1.316 src/sys/netinet/ip_output.c cvs rdiff -u -r1.128 -r1.129 src/sys/netinet/ip_var.h cvs rdiff -u -r1.99 -r1.100 src/sys/netinet6/ip6_forward.c cvs rdiff -u -r1.218 -r1.219 src/sys/netinet6/ip6_input.c cvs rdiff -u -r1.223 -r1.224 src/sys/netinet6/ip6_output.c cvs rdiff -u -r1.84 -r1.85 src/sys/netinet6/ip6_var.h cvs rdiff -u -r1.170 -r1.171 src/sys/netipsec/ipsec.c cvs rdiff -u -r1.89 -r1.90 src/sys/netipsec/ipsec.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/netinet/ip_input.c diff -u src/sys/netinet/ip_input.c:1.393 src/sys/netinet/ip_input.c:1.394 --- src/sys/netinet/ip_input.c:1.393 Wed Nov 13 02:51:22 2019 +++ src/sys/netinet/ip_input.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_input.c,v 1.393 2019/11/13 02:51:22 ozaki-r Exp $ */ +/* $NetBSD: ip_input.c,v 1.394 2020/08/28 06:19:13 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.393 2019/11/13 02:51:22 ozaki-r Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_input.c,v 1.394 2020/08/28 06:19:13 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -741,6 +741,7 @@ ip_input(struct mbuf *m) /* Check the security policy (SP) for the packet */ if (ipsec_used) { if (ipsec_ip_input(m, true) != 0) { + IP_STATINC(IP_STAT_IPSECDROP_IN); goto out; } } @@ -788,6 +789,7 @@ ours: if (ipsec_used && (inetsw[ip_protox[ip->ip_p]].pr_flags & PR_LASTHDR) != 0) { if (ipsec_ip_input(m, false) != 0) { + IP_STATINC(IP_STAT_IPSECDROP_IN); goto out; } } Index: src/sys/netinet/ip_output.c diff -u src/sys/netinet/ip_output.c:1.315 src/sys/netinet/ip_output.c:1.316 --- src/sys/netinet/ip_output.c:1.315 Fri Dec 27 10:17:56 2019 +++ src/sys/netinet/ip_output.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_output.c,v 1.315 2019/12/27 10:17:56 msaitoh Exp $ */ +/* $NetBSD: ip_output.c,v 1.316 2020/08/28 06:19:13 ozaki-r Exp $ */ /* * Copyright (C) 1995, 1996, 1997, and 1998 WIDE Project. @@ -91,7 +91,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.315 2019/12/27 10:17:56 msaitoh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip_output.c,v 1.316 2020/08/28 06:19:13 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -609,10 +609,13 @@ sendit: #ifdef IPSEC if (ipsec_used) { bool ipsec_done = false; + bool count_drop = false; /* Perform IPsec processing, if any. */ error = ipsec4_output(m, inp, flags, &mtu, &natt_frag, - &ipsec_done); + &ipsec_done, &count_drop); + if (count_drop) + IP_STATINC(IP_STAT_IPSECDROP_OUT); if (error || ipsec_done) goto done; } Index: src/sys/netinet/ip_var.h diff -u src/sys/netinet/ip_var.h:1.128 src/sys/netinet/ip_var.h:1.129 --- src/sys/netinet/ip_var.h:1.128 Mon May 13 07:47:59 2019 +++ src/sys/netinet/ip_var.h Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip_var.h,v 1.128 2019/05/13 07:47:59 ozaki-r Exp $ */ +/* $NetBSD: ip_var.h,v 1.129 2020/08/28 06:19:13 ozaki-r Exp $ */ /* * Copyright (c) 1982, 1986, 1993 @@ -149,8 +149,10 @@ struct ip_pktopts { #define IP_STAT_NOIPSEC 31 /* no match ipsec(4) found */ #define IP_STAT_PFILDROP_IN 32 /* dropped by pfil (PFIL_IN) */ #define IP_STAT_PFILDROP_OUT 33 /* dropped by pfil (PFIL_OUT) */ +#define IP_STAT_IPSECDROP_IN 34 /* dropped by IPsec SP check */ +#define IP_STAT_IPSECDROP_OUT 35 /* dropped by IPsec SP check */ -#define IP_NSTATS 34 +#define IP_NSTATS 36 #ifdef _KERNEL Index: src/sys/netinet6/ip6_forward.c diff -u src/sys/netinet6/ip6_forward.c:1.99 src/sys/netinet6/ip6_forward.c:1.100 --- src/sys/netinet6/ip6_forward.c:1.99 Fri Jun 12 11:04:45 2020 +++ src/sys/netinet6/ip6_forward.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_forward.c,v 1.99 2020/06/12 11:04:45 roy Exp $ */ +/* $NetBSD: ip6_forward.c,v 1.100 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $KAME: ip6_forward.c,v 1.109 2002/09/11 08:10:17 sakane Exp $ */ /* @@ -31,7 +31,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.99 2020/06/12 11:04:45 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_forward.c,v 1.100 2020/08/28 06:19:13 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -192,6 +192,7 @@ ip6_forward(struct mbuf *m, int srcrt) if (error == -EINVAL) error = 0; m_freem(m); + IP6_STATINC(IP6_STAT_IPSECDROP_OUT); goto freecopy; } } Index: src/sys/netinet6/ip6_input.c diff -u src/sys/netinet6/ip6_input.c:1.218 src/sys/netinet6/ip6_input.c:1.219 --- src/sys/netinet6/ip6_input.c:1.218 Mon Jul 27 14:06:58 2020 +++ src/sys/netinet6/ip6_input.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_input.c,v 1.218 2020/07/27 14:06:58 roy Exp $ */ +/* $NetBSD: ip6_input.c,v 1.219 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $KAME: ip6_input.c,v 1.188 2001/03/29 05:34:31 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.218 2020/07/27 14:06:58 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_input.c,v 1.219 2020/08/28 06:19:13 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_gateway.h" @@ -756,8 +756,10 @@ hbhcheck: int error; error = ipsec_ip_input(m, false); - if (error) + if (error) { + IP6_STATINC(IP6_STAT_IPSECDROP_IN); goto bad; + } } } #endif Index: src/sys/netinet6/ip6_output.c diff -u src/sys/netinet6/ip6_output.c:1.223 src/sys/netinet6/ip6_output.c:1.224 --- src/sys/netinet6/ip6_output.c:1.223 Fri Jun 12 11:04:45 2020 +++ src/sys/netinet6/ip6_output.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_output.c,v 1.223 2020/06/12 11:04:45 roy Exp $ */ +/* $NetBSD: ip6_output.c,v 1.224 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $KAME: ip6_output.c,v 1.172 2001/03/25 09:55:56 itojun Exp $ */ /* @@ -62,7 +62,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.223 2020/06/12 11:04:45 roy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ip6_output.c,v 1.224 2020/08/28 06:19:13 ozaki-r Exp $"); #ifdef _KERNEL_OPT #include "opt_inet.h" @@ -295,6 +295,7 @@ ip6_output( */ if (error == -EINVAL) error = 0; + IP6_STATINC(IP6_STAT_IPSECDROP_OUT); goto freehdrs; } } Index: src/sys/netinet6/ip6_var.h diff -u src/sys/netinet6/ip6_var.h:1.84 src/sys/netinet6/ip6_var.h:1.85 --- src/sys/netinet6/ip6_var.h:1.84 Fri Jun 19 16:08:06 2020 +++ src/sys/netinet6/ip6_var.h Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ip6_var.h,v 1.84 2020/06/19 16:08:06 maxv Exp $ */ +/* $NetBSD: ip6_var.h,v 1.85 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $KAME: ip6_var.h,v 1.33 2000/06/11 14:59:20 jinmei Exp $ */ /* @@ -188,8 +188,10 @@ struct ip6_pktopts { #define IP6_STAT_NOIPSEC 402 /* no match ipsec(4) found */ #define IP6_STAT_PFILDROP_IN 403 /* dropped by pfil (PFIL_IN) */ #define IP6_STAT_PFILDROP_OUT 404 /* dropped by pfil (PFIL_OUT) */ +#define IP6_STAT_IPSECDROP_IN 405 /* dropped by IPsec SP check */ +#define IP6_STAT_IPSECDROP_OUT 406 /* dropped by IPsec SP check */ -#define IP6_NSTATS 405 +#define IP6_NSTATS 407 #define IP6FLOW_HASHBITS 6 /* should not be a multiple of 8 */ Index: src/sys/netipsec/ipsec.c diff -u src/sys/netipsec/ipsec.c:1.170 src/sys/netipsec/ipsec.c:1.171 --- src/sys/netipsec/ipsec.c:1.170 Wed Aug 7 10:10:00 2019 +++ src/sys/netipsec/ipsec.c Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec.c,v 1.170 2019/08/07 10:10:00 knakahara Exp $ */ +/* $NetBSD: ipsec.c,v 1.171 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $FreeBSD: ipsec.c,v 1.2.2.2 2003/07/01 01:38:13 sam Exp $ */ /* $KAME: ipsec.c,v 1.103 2001/05/24 07:14:18 sakane Exp $ */ @@ -32,7 +32,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.170 2019/08/07 10:10:00 knakahara Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ipsec.c,v 1.171 2020/08/28 06:19:13 ozaki-r Exp $"); /* * IPsec controller part. @@ -616,7 +616,7 @@ ipsec_checkpolicy(struct mbuf *m, u_int int ipsec4_output(struct mbuf *m, struct inpcb *inp, int flags, - u_long *mtu, bool *natt_frag, bool *done) + u_long *mtu, bool *natt_frag, bool *done, bool *count_drop) { struct secpolicy *sp = NULL; u_long _mtu = 0; @@ -660,6 +660,7 @@ ipsec4_output(struct mbuf *m, struct inp error = 0; m_freem(m); *done = true; + *count_drop = true; return error; } /* No IPsec processing for this packet. */ Index: src/sys/netipsec/ipsec.h diff -u src/sys/netipsec/ipsec.h:1.89 src/sys/netipsec/ipsec.h:1.90 --- src/sys/netipsec/ipsec.h:1.89 Fri Nov 1 04:23:21 2019 +++ src/sys/netipsec/ipsec.h Fri Aug 28 06:19:13 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: ipsec.h,v 1.89 2019/11/01 04:23:21 knakahara Exp $ */ +/* $NetBSD: ipsec.h,v 1.90 2020/08/28 06:19:13 ozaki-r Exp $ */ /* $FreeBSD: ipsec.h,v 1.2.4.2 2004/02/14 22:23:23 bms Exp $ */ /* $KAME: ipsec.h,v 1.53 2001/11/20 08:32:38 itojun Exp $ */ @@ -275,7 +275,7 @@ void ipsec_pcbdisconn(struct inpcbpolicy void ipsec_invalpcbcacheall(void); struct inpcb; -int ipsec4_output(struct mbuf *, struct inpcb *, int, u_long *, bool *, bool *); +int ipsec4_output(struct mbuf *, struct inpcb *, int, u_long *, bool *, bool *, bool *); int ipsec_ip_input(struct mbuf *, bool); void ipsec_mtu(struct mbuf *, int *);