From patchwork Wed Apr 25 04:15:41 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: solomon X-Patchwork-Id: 154788 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 8F68CB6FAA for ; Wed, 25 Apr 2012 14:14:57 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752655Ab2DYEOz (ORCPT ); Wed, 25 Apr 2012 00:14:55 -0400 Received: from mail-pz0-f51.google.com ([209.85.210.51]:35444 "EHLO mail-pz0-f51.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751416Ab2DYEOy (ORCPT ); Wed, 25 Apr 2012 00:14:54 -0400 Received: by dadz8 with SMTP id z8so1804934dad.10 for ; Tue, 24 Apr 2012 21:14:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :content-type:content-transfer-encoding; bh=sGV1/bbyIThBSIV5MHDeAMjW+snteghCABFBhMKOY0c=; b=dVVnCRGLuJHC5k3IVbrd+H8q0QGvU5V+uvy/sl3++Ok9el8zlMk9SMG947JWLmUS63 tTQDQmQogeO2g8Srew9l2VZNgH4WKmQdk67nYJRT/0gDY5NcD3izfmYoxDL2uoXQ+R0t hjcVttU+v195ttSOB/4SpPbJjevQ+8VJGBYpVs068uNJnpDtkZ1rfSpk1VdFBc9W7xnj VkN1d7zmjefd21oYHGrgZVpV46xjzoUwVCQC2BN315ImYmU0GDLDCWzo8uWJHFGQnTQq TtmwwlO+z4yDNpDpZOatKwT3oRpTtAP/VXK34cY0eYGYGcUtlhisGDLwjmpu4BrgMoDA BL5g== Received: by 10.68.219.226 with SMTP id pr2mr1516966pbc.66.1335327294276; Tue, 24 Apr 2012 21:14:54 -0700 (PDT) Received: from [172.30.10.112] ([113.108.76.195]) by mx.google.com with ESMTPS id pv9sm9938473pbc.37.2012.04.24.21.14.51 (version=SSLv3 cipher=OTHER); Tue, 24 Apr 2012 21:14:53 -0700 (PDT) Message-ID: <4F977A6D.1050508@gmail.com> Date: Wed, 25 Apr 2012 12:15:41 +0800 From: Shan Wei User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20120327 Thunderbird/11.0.1 MIME-Version: 1.0 To: David Miller , kuznet@ms2.inr.ac.ru, jmorris@namei.org, xemul@parallels.com CC: NetDev , davidshan Subject: [PATCH BUG-FIX] udp_diag: implement idiag_get_info for udp/udplite to get queue information Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Shan Wei When we use netlink to monitor queue information for udp socket, idiag_rqueue and idiag_wqueue of inet_diag_msg are returned with 0. Keep consistent with netstat, just return back allocated rmem/wmem size. Signed-off-by: Shan Wei Acked-by: Pavel Emelyanov --- net/ipv4/inet_diag.c | 2 +- net/ipv4/udp_diag.c | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletions(-) diff --git a/net/ipv4/inet_diag.c b/net/ipv4/inet_diag.c index 8d25a1c..8f8db72 100644 --- a/net/ipv4/inet_diag.c +++ b/net/ipv4/inet_diag.c @@ -141,7 +141,7 @@ int inet_sk_diag_fill(struct sock *sk, struct inet_connection_sock *icsk, goto rtattr_failure; if (icsk == NULL) { - r->idiag_rqueue = r->idiag_wqueue = 0; + handler->idiag_get_info(sk, r, NULL); goto out; } diff --git a/net/ipv4/udp_diag.c b/net/ipv4/udp_diag.c index 8a949f1..a7f86a3 100644 --- a/net/ipv4/udp_diag.c +++ b/net/ipv4/udp_diag.c @@ -146,9 +146,17 @@ static int udp_diag_dump_one(struct sk_buff *in_skb, const struct nlmsghdr *nlh, return udp_dump_one(&udp_table, in_skb, nlh, req); } +static void udp_diag_get_info(struct sock *sk, struct inet_diag_msg *r, + void *info) +{ + r->idiag_rqueue = sk_rmem_alloc_get(sk); + r->idiag_wqueue = sk_wmem_alloc_get(sk); +} + static const struct inet_diag_handler udp_diag_handler = { .dump = udp_diag_dump, .dump_one = udp_diag_dump_one, + .idiag_get_info = udp_diag_get_info, .idiag_type = IPPROTO_UDP, }; @@ -167,6 +175,7 @@ static int udplite_diag_dump_one(struct sk_buff *in_skb, const struct nlmsghdr * static const struct inet_diag_handler udplite_diag_handler = { .dump = udplite_diag_dump, .dump_one = udplite_diag_dump_one, + .idiag_get_info = udp_diag_get_info, .idiag_type = IPPROTO_UDPLITE, };