Hello David,
I'm sorry, the previous mail contains wrong code:
David, I failed to include this statistics codes since I didn't notice
the conflict with the latest Herbert XFRM fix.
Please apply this, too.
Signed-off-by: Masahide NAKAMURA <redacted>
---
[snip]
do {
err = xfrm_state_check_space(x, skb);
- if (err)
+ if (err) {
goto error_nolock;
+ XFRM_INC_STATS(LINUX_MIB_XFRMOUTERROR);
+ }
Please apply the below patch instead of the previous.
Signed-off-by: Masahide NAKAMURA <redacted>
---
net/xfrm/xfrm_output.c | 12 +++++++++---
1 files changed, 9 insertions(+), 3 deletions(-)
diff --git a/net/xfrm/xfrm_output.c b/net/xfrm/xfrm_output.c
index 867484a..f8e5961 100644
--- a/net/xfrm/xfrm_output.c
+++ b/net/xfrm/xfrm_output.c
@@ -43,17 +43,23 @@ static int xfrm_output_one(struct sk_buff *skb, int err)
do {
err = xfrm_state_check_space(x, skb);
- if (err)
+ if (err) {
+ XFRM_INC_STATS(LINUX_MIB_XFRMOUTERROR);
goto error_nolock;
+ }
err = x->outer_mode->output(x, skb);
- if (err)
+ if (err) {
+ XFRM_INC_STATS(LINUX_MIB_XFRMOUTSTATEMODEERROR);
goto error_nolock;
+ }
spin_lock_bh(&x->lock);
err = xfrm_state_check_expire(x);
- if (err)
+ if (err) {
+ XFRM_INC_STATS(LINUX_MIB_XFRMOUTSTATEEXPIRED);
goto error;
+ }
if (x->type->flags & XFRM_TYPE_REPLAY_PROT) {
XFRM_SKB_CB(skb)->seq = ++x->replay.oseq;--
1.4.4.2