diff mbox

[RFC,net-next-2.6] : xfrm: Introduce LINUX_MIB_XFRMFWDHDRERROR

Message ID 1266406852.3799.7.camel@bigi
State RFC, archived
Delegated to: David Miller
Headers show

Commit Message

jamal Feb. 17, 2010, 11:40 a.m. UTC
I had a hard time debugging some setup while testing xfrm by mark
in presence of traffic being forwarded as well as being locally 
terminated. This change helped narrow things down a little for me.
The danger is that it changes the /proc output which may break some
user space tool (thats why i have it as an RFC).

cheers,
jamal
commit cba12a140f1c4cad34f55d1b01067c2d83ee0748
Author: Jamal Hadi Salim <hadi@cyberus.ca>
Date:   Wed Feb 17 06:26:52 2010 -0500

    xfrm: Introduce LINUX_MIB_XFRMFWDHDRERROR
    
    XFRMINHDRERROR counter is ambigous when validating forwarding
    path. It makes it tricky to debug when you have both in and fwd
    validation.
    
    Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>

Comments

David Miller Feb. 17, 2010, 9:49 p.m. UTC | #1
From: jamal <hadi@cyberus.ca>
Date: Wed, 17 Feb 2010 06:40:52 -0500

>     xfrm: Introduce LINUX_MIB_XFRMFWDHDRERROR
>     
>     XFRMINHDRERROR counter is ambigous when validating forwarding
>     path. It makes it tricky to debug when you have both in and fwd
>     validation.
>     
>     Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>

This should be fine, the tools just parse the lines individually
as "string integer" pairs.

If you want to be super anal, add the new counter to the end of
the array.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/include/linux/snmp.h b/include/linux/snmp.h
index 0f953fe..8522120 100644
--- a/include/linux/snmp.h
+++ b/include/linux/snmp.h
@@ -246,6 +246,7 @@  enum
 	LINUX_MIB_XFRMINNOPOLS,			/* XfrmInNoPols */
 	LINUX_MIB_XFRMINPOLBLOCK,		/* XfrmInPolBlock */
 	LINUX_MIB_XFRMINPOLERROR,		/* XfrmInPolError */
+	LINUX_MIB_XFRMFWDHDRERROR,		/* XfrmFwdHdrError*/
 	LINUX_MIB_XFRMOUTERROR,			/* XfrmOutError */
 	LINUX_MIB_XFRMOUTBUNDLEGENERROR,	/* XfrmOutBundleGenError */
 	LINUX_MIB_XFRMOUTBUNDLECHECKERROR,	/* XfrmOutBundleCheckError */
diff --git a/net/xfrm/xfrm_policy.c b/net/xfrm/xfrm_policy.c
index eb870fc..916784d 100644
--- a/net/xfrm/xfrm_policy.c
+++ b/net/xfrm/xfrm_policy.c
@@ -2052,8 +2052,7 @@  int __xfrm_route_forward(struct sk_buff *skb, unsigned short family)
 	int res;
 
 	if (xfrm_decode_session(skb, &fl, family) < 0) {
-		/* XXX: we should have something like FWDHDRERROR here. */
-		XFRM_INC_STATS(net, LINUX_MIB_XFRMINHDRERROR);
+		XFRM_INC_STATS(net, LINUX_MIB_XFRMFWDHDRERROR);
 		return 0;
 	}
 
diff --git a/net/xfrm/xfrm_proc.c b/net/xfrm/xfrm_proc.c
index c083a4e..289992a 100644
--- a/net/xfrm/xfrm_proc.c
+++ b/net/xfrm/xfrm_proc.c
@@ -30,6 +30,7 @@  static const struct snmp_mib xfrm_mib_list[] = {
 	SNMP_MIB_ITEM("XfrmInNoPols", LINUX_MIB_XFRMINNOPOLS),
 	SNMP_MIB_ITEM("XfrmInPolBlock", LINUX_MIB_XFRMINPOLBLOCK),
 	SNMP_MIB_ITEM("XfrmInPolError", LINUX_MIB_XFRMINPOLERROR),
+	SNMP_MIB_ITEM("XfrmFwdHdrError", LINUX_MIB_XFRMFWDHDRERROR),
 	SNMP_MIB_ITEM("XfrmOutError", LINUX_MIB_XFRMOUTERROR),
 	SNMP_MIB_ITEM("XfrmOutBundleGenError", LINUX_MIB_XFRMOUTBUNDLEGENERROR),
 	SNMP_MIB_ITEM("XfrmOutBundleCheckError", LINUX_MIB_XFRMOUTBUNDLECHECKERROR),