Skip to content

Commit a92aa31

Browse files
Wang Chendavem330
authored andcommitted
[IPV6]: Add raw6 drops counter.
Add raw drops counter for IPv6 in /proc/net/raw6 . Signed-off-by: Wang Chen <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 33c732c commit a92aa31

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

net/ipv6/raw.c

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -354,14 +354,14 @@ static inline int rawv6_rcv_skb(struct sock * sk, struct sk_buff * skb)
354354
{
355355
if ((raw6_sk(sk)->checksum || sk->sk_filter) &&
356356
skb_checksum_complete(skb)) {
357-
/* FIXME: increment a raw6 drops counter here */
357+
atomic_inc(&sk->sk_drops);
358358
kfree_skb(skb);
359359
return 0;
360360
}
361361

362362
/* Charge it to the socket. */
363363
if (sock_queue_rcv_skb(sk,skb)<0) {
364-
/* FIXME: increment a raw6 drops counter here */
364+
atomic_inc(&sk->sk_drops);
365365
kfree_skb(skb);
366366
return 0;
367367
}
@@ -382,6 +382,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
382382
struct raw6_sock *rp = raw6_sk(sk);
383383

384384
if (!xfrm6_policy_check(sk, XFRM_POLICY_IN, skb)) {
385+
atomic_inc(&sk->sk_drops);
385386
kfree_skb(skb);
386387
return NET_RX_DROP;
387388
}
@@ -405,7 +406,7 @@ int rawv6_rcv(struct sock *sk, struct sk_buff *skb)
405406

406407
if (inet->hdrincl) {
407408
if (skb_checksum_complete(skb)) {
408-
/* FIXME: increment a raw6 drops counter here */
409+
atomic_inc(&sk->sk_drops);
409410
kfree_skb(skb);
410411
return 0;
411412
}
@@ -496,7 +497,7 @@ static int rawv6_recvmsg(struct kiocb *iocb, struct sock *sk,
496497
as some normal condition.
497498
*/
498499
err = (flags&MSG_DONTWAIT) ? -EAGAIN : -EHOSTUNREACH;
499-
/* FIXME: increment a raw6 drops counter here */
500+
atomic_inc(&sk->sk_drops);
500501
goto out;
501502
}
502503

@@ -1254,7 +1255,7 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
12541255
srcp = inet_sk(sp)->num;
12551256
seq_printf(seq,
12561257
"%4d: %08X%08X%08X%08X:%04X %08X%08X%08X%08X:%04X "
1257-
"%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p\n",
1258+
"%02X %08X:%08X %02X:%08lX %08X %5d %8d %lu %d %p %d\n",
12581259
i,
12591260
src->s6_addr32[0], src->s6_addr32[1],
12601261
src->s6_addr32[2], src->s6_addr32[3], srcp,
@@ -1266,7 +1267,7 @@ static void raw6_sock_seq_show(struct seq_file *seq, struct sock *sp, int i)
12661267
0, 0L, 0,
12671268
sock_i_uid(sp), 0,
12681269
sock_i_ino(sp),
1269-
atomic_read(&sp->sk_refcnt), sp);
1270+
atomic_read(&sp->sk_refcnt), sp, atomic_read(&sp->sk_drops));
12701271
}
12711272

12721273
static int raw6_seq_show(struct seq_file *seq, void *v)
@@ -1277,7 +1278,7 @@ static int raw6_seq_show(struct seq_file *seq, void *v)
12771278
"local_address "
12781279
"remote_address "
12791280
"st tx_queue rx_queue tr tm->when retrnsmt"
1280-
" uid timeout inode\n");
1281+
" uid timeout inode drops\n");
12811282
else
12821283
raw6_sock_seq_show(seq, v, raw6_seq_private(seq)->bucket);
12831284
return 0;

0 commit comments

Comments
 (0)