tcp_diag.c (1da177e4c3f41524e886b7f1b8a0c1fc7321cac2) | tcp_diag.c (2a0a6ebee1d68552152ae8d4aeda91d806995dec) |
---|---|
1/* 2 * tcp_diag.c Module for monitoring TCP sockets. 3 * 4 * Version: $Id: tcp_diag.c,v 1.3 2002/02/01 22:01:04 davem Exp $ 5 * 6 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 7 * 8 * This program is free software; you can redistribute it and/or --- 763 unchanged lines hidden (view full) --- 772 if (err || nlh->nlmsg_flags & NLM_F_ACK) 773 netlink_ack(skb, nlh, err); 774 } 775} 776 777static void tcpdiag_rcv(struct sock *sk, int len) 778{ 779 struct sk_buff *skb; | 1/* 2 * tcp_diag.c Module for monitoring TCP sockets. 3 * 4 * Version: $Id: tcp_diag.c,v 1.3 2002/02/01 22:01:04 davem Exp $ 5 * 6 * Authors: Alexey Kuznetsov, <kuznet@ms2.inr.ac.ru> 7 * 8 * This program is free software; you can redistribute it and/or --- 763 unchanged lines hidden (view full) --- 772 if (err || nlh->nlmsg_flags & NLM_F_ACK) 773 netlink_ack(skb, nlh, err); 774 } 775} 776 777static void tcpdiag_rcv(struct sock *sk, int len) 778{ 779 struct sk_buff *skb; |
780 unsigned int qlen = skb_queue_len(&sk->sk_receive_queue); |
|
780 | 781 |
781 while ((skb = skb_dequeue(&sk->sk_receive_queue)) != NULL) { | 782 while (qlen-- && (skb = skb_dequeue(&sk->sk_receive_queue))) { |
782 tcpdiag_rcv_skb(skb); 783 kfree_skb(skb); 784 } 785} 786 787static int __init tcpdiag_init(void) 788{ 789 tcpnl = netlink_kernel_create(NETLINK_TCPDIAG, tcpdiag_rcv); --- 13 unchanged lines hidden --- | 783 tcpdiag_rcv_skb(skb); 784 kfree_skb(skb); 785 } 786} 787 788static int __init tcpdiag_init(void) 789{ 790 tcpnl = netlink_kernel_create(NETLINK_TCPDIAG, tcpdiag_rcv); --- 13 unchanged lines hidden --- |