Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[XFRM]: Fix statistics.

o Outbound sequence number overflow error status
is counted as XfrmOutStateSeqError.
o Additionaly, it changes inbound sequence number replay
error name from XfrmInSeqOutOfWindow to XfrmInStateSeqError
to apply name scheme above.
o Inbound IPv4 UDP encapsuling type mismatch error is wrongly
mapped to XfrmInStateInvalid then this patch fiex the error
to XfrmInStateMismatch.

Signed-off-by: Masahide NAKAMURA <nakam@linux-ipv6.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Masahide NAKAMURA and committed by
David S. Miller
9472c9ef 5255dc6e

+13 -6
+6 -2
Documentation/networking/xfrm_proc.txt
··· 26 26 e.g. SA key is wrong 27 27 XfrmInStateModeError: 28 28 Transformation mode specific error 29 - XfrmInSeqOutOfWindow: 30 - Sequence out of window 29 + XfrmInStateSeqError: 30 + Sequence error 31 + i.e. Sequence number is out of window 31 32 XfrmInStateExpired: 32 33 State is expired 33 34 XfrmInStateMismatch: ··· 61 60 Transformation protocol specific error 62 61 XfrmOutStateModeError: 63 62 Transformation mode specific error 63 + XfrmOutStateSeqError: 64 + Sequence error 65 + i.e. Sequence number overflow 64 66 XfrmOutStateExpired: 65 67 State is expired 66 68 XfrmOutPolBlock:
+2 -1
include/linux/snmp.h
··· 227 227 LINUX_MIB_XFRMINNOSTATES, /* XfrmInNoStates */ 228 228 LINUX_MIB_XFRMINSTATEPROTOERROR, /* XfrmInStateProtoError */ 229 229 LINUX_MIB_XFRMINSTATEMODEERROR, /* XfrmInStateModeError */ 230 - LINUX_MIB_XFRMINSEQOUTOFWINDOW, /* XfrmInSeqOutOfWindow */ 230 + LINUX_MIB_XFRMINSTATESEQERROR, /* XfrmInStateSeqError */ 231 231 LINUX_MIB_XFRMINSTATEEXPIRED, /* XfrmInStateExpired */ 232 232 LINUX_MIB_XFRMINSTATEMISMATCH, /* XfrmInStateMismatch */ 233 233 LINUX_MIB_XFRMINSTATEINVALID, /* XfrmInStateInvalid */ ··· 241 241 LINUX_MIB_XFRMOUTNOSTATES, /* XfrmOutNoStates */ 242 242 LINUX_MIB_XFRMOUTSTATEPROTOERROR, /* XfrmOutStateProtoError */ 243 243 LINUX_MIB_XFRMOUTSTATEMODEERROR, /* XfrmOutStateModeError */ 244 + LINUX_MIB_XFRMOUTSTATESEQERROR, /* XfrmOutStateSeqError */ 244 245 LINUX_MIB_XFRMOUTSTATEEXPIRED, /* XfrmOutStateExpired */ 245 246 LINUX_MIB_XFRMOUTPOLBLOCK, /* XfrmOutPolBlock */ 246 247 LINUX_MIB_XFRMOUTPOLDEAD, /* XfrmOutPolDead */
+2 -2
net/xfrm/xfrm_input.c
··· 159 159 } 160 160 161 161 if ((x->encap ? x->encap->encap_type : 0) != encap_type) { 162 - XFRM_INC_STATS(LINUX_MIB_XFRMINSTATEINVALID); 162 + XFRM_INC_STATS(LINUX_MIB_XFRMINSTATEMISMATCH); 163 163 goto drop_unlock; 164 164 } 165 165 166 166 if (x->props.replay_window && xfrm_replay_check(x, skb, seq)) { 167 - XFRM_INC_STATS(LINUX_MIB_XFRMINSEQOUTOFWINDOW); 167 + XFRM_INC_STATS(LINUX_MIB_XFRMINSTATESEQERROR); 168 168 goto drop_unlock; 169 169 } 170 170
+1
net/xfrm/xfrm_output.c
··· 64 64 if (x->type->flags & XFRM_TYPE_REPLAY_PROT) { 65 65 XFRM_SKB_CB(skb)->seq = ++x->replay.oseq; 66 66 if (unlikely(x->replay.oseq == 0)) { 67 + XFRM_INC_STATS(LINUX_MIB_XFRMOUTSTATESEQERROR); 67 68 x->replay.oseq--; 68 69 xfrm_audit_state_replay_overflow(x, skb); 69 70 err = -EOVERFLOW;
+2 -1
net/xfrm/xfrm_proc.c
··· 22 22 SNMP_MIB_ITEM("XfrmInNoStates", LINUX_MIB_XFRMINNOSTATES), 23 23 SNMP_MIB_ITEM("XfrmInStateProtoError", LINUX_MIB_XFRMINSTATEPROTOERROR), 24 24 SNMP_MIB_ITEM("XfrmInStateModeError", LINUX_MIB_XFRMINSTATEMODEERROR), 25 - SNMP_MIB_ITEM("XfrmInSeqOutOfWindow", LINUX_MIB_XFRMINSEQOUTOFWINDOW), 25 + SNMP_MIB_ITEM("XfrmInStateSeqError", LINUX_MIB_XFRMINSTATESEQERROR), 26 26 SNMP_MIB_ITEM("XfrmInStateExpired", LINUX_MIB_XFRMINSTATEEXPIRED), 27 27 SNMP_MIB_ITEM("XfrmInStateMismatch", LINUX_MIB_XFRMINSTATEMISMATCH), 28 28 SNMP_MIB_ITEM("XfrmInStateInvalid", LINUX_MIB_XFRMINSTATEINVALID), ··· 36 36 SNMP_MIB_ITEM("XfrmOutNoStates", LINUX_MIB_XFRMOUTNOSTATES), 37 37 SNMP_MIB_ITEM("XfrmOutStateProtoError", LINUX_MIB_XFRMOUTSTATEPROTOERROR), 38 38 SNMP_MIB_ITEM("XfrmOutStateModeError", LINUX_MIB_XFRMOUTSTATEMODEERROR), 39 + SNMP_MIB_ITEM("XfrmOutStateSeqError", LINUX_MIB_XFRMOUTSTATESEQERROR), 39 40 SNMP_MIB_ITEM("XfrmOutStateExpired", LINUX_MIB_XFRMOUTSTATEEXPIRED), 40 41 SNMP_MIB_ITEM("XfrmOutPolBlock", LINUX_MIB_XFRMOUTPOLBLOCK), 41 42 SNMP_MIB_ITEM("XfrmOutPolDead", LINUX_MIB_XFRMOUTPOLDEAD),