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 ---