From: Pavel Emelyanov <xemul@parallels.com>
To: David Miller <davem@davemloft.net>,
Linux Netdev List <netdev@vger.kernel.org>
Subject: [PATCH] iproute: Dump UDP sockets via netlink
Date: Fri, 09 Dec 2011 20:26:27 +0400 [thread overview]
Message-ID: <4EE236B3.2090808@parallels.com> (raw)
In-Reply-To: <4EE23561.5020804@parallels.com>
Since for UDP the same binary API is used, just rename tcp_show_netlink and others
into inet_show_netlink (and others) and wire the calls into udp-related paths.
Applies on top of previous patch with support for the new sock_diag api.
Signed-off-by: Pavel Emelyanov <xemul@parallels.com>
---
diff -u b/misc/ss.c b/misc/ss.c
--- b/misc/ss.c
+++ b/misc/ss.c
@@ -1410,7 +1410,7 @@
}
}
-static int tcp_show_sock(struct nlmsghdr *nlh, struct filter *f)
+static int inet_show_sock(struct nlmsghdr *nlh, struct filter *f)
{
struct inet_diag_msg *r = NLMSG_DATA(nlh);
struct tcpstat s;
@@ -1474,7 +1474,7 @@
return 0;
}
-static int __tcp_show_netlink(struct filter *f, FILE *dump_fp, int family, int socktype)
+static int __inet_show_netlink(struct filter *f, FILE *dump_fp, int family, int socktype)
{
int fd;
struct sockaddr_nl nladdr;
@@ -1590,7 +1590,7 @@
return 0;
}
if (!dump_fp) {
- err = tcp_show_sock(h, NULL);
+ err = inet_show_sock(h, NULL);
if (err < 0)
return err;
}
@@ -1610,19 +1610,19 @@
return 0;
}
-static int tcp_show_netlink(struct filter *f, FILE *dump_fp, int socktype)
+static int inet_show_netlink(struct filter *f, FILE *dump_fp, int socktype)
{
int err = 0;
if (f->families & (1 << AF_INET))
- err |= __tcp_show_netlink(f, dump_fp, AF_INET, socktype);
+ err |= __inet_show_netlink(f, dump_fp, AF_INET, socktype);
if (f->families & (1 << AF_INET6))
- err |= __tcp_show_netlink(f, dump_fp, AF_INET6, socktype);
+ err |= __inet_show_netlink(f, dump_fp, AF_INET6, socktype);
return err;
}
-static int tcp_show_netlink_file(struct filter *f)
+static int inet_show_netlink_file(struct filter *f)
{
FILE *fp;
char buf[8192];
@@ -1672,7 +1672,7 @@
return -1;
}
- err = tcp_show_sock(h, f);
+ err = inet_show_sock(h, f);
if (err < 0)
return err;
}
@@ -1687,10 +1687,10 @@
dg_proto = TCP_PROTO;
if (getenv("TCPDIAG_FILE"))
- return tcp_show_netlink_file(f);
+ return inet_show_netlink_file(f);
if (!getenv("PROC_NET_TCP") && !getenv("PROC_ROOT")
- && tcp_show_netlink(f, NULL, socktype) == 0)
+ && inet_show_netlink(f, NULL, socktype) == 0)
return 0;
/* Sigh... We have to parse /proc/net/tcp... */
@@ -1852,6 +1852,15 @@
{
FILE *fp = NULL;
+ if (getenv("TCPDIAG_FILE"))
+ return inet_show_netlink_file(f);
+
+ if (!getenv("PROC_NET_TCP") && !getenv("PROC_ROOT")
+ && inet_show_netlink(f, NULL, IPPROTO_UDP) == 0)
+ return 0;
+
+ /* legacy proc files parse */
+
dg_proto = UDP_PROTO;
if (f->families&(1<<AF_INET)) {
@@ -2787,7 +2796,7 @@
if (dump_tcpdiag) {
FILE *dump_fp = stdout;
- if (!(current_filter.dbs & (1<<TCP_DB))) {
+ if (!(current_filter.dbs & ((1<<TCP_DB) | (1<<UDP_DB)))) {
fprintf(stderr, "ss: tcpdiag dump requested and no tcp in filter.\n");
exit(0);
}
@@ -2798,7 +2807,13 @@
exit(-1);
}
}
- tcp_show_netlink(¤t_filter, dump_fp, IPPROTO_TCP);
+
+ if (current_filter.dbs & (1<<UDP_DB))
+ inet_show_netlink(¤t_filter, dump_fp, IPPROTO_UDP);
+
+ if (current_filter.dbs & (1<<TCP_DB))
+ inet_show_netlink(¤t_filter, dump_fp, IPPROTO_TCP);
+
fflush(dump_fp);
exit(0);
}
next prev parent reply other threads:[~2011-12-09 16:26 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-12-09 16:20 [PATCH 0/13] Implement dumping udp sockets via sock_diag netlink Pavel Emelyanov
2011-12-09 16:21 ` [PATCH 1/13] inet_diag: Remove indirect sizeof from inet diag handlers Pavel Emelyanov
2011-12-09 16:21 ` [PATCH 2/13] inet_diag: Reduce the number of args for bytecode run routine Pavel Emelyanov
2011-12-09 16:21 ` [PATCH 3/13] inet_diag: Export inet diag cookie checking routine Pavel Emelyanov
2011-12-09 16:22 ` [PATCH 4/13] inet_diag: Split inet_diag_get_exact into parts Pavel Emelyanov
2011-12-09 16:22 ` [PATCH 5/13] " Pavel Emelyanov
2011-12-09 16:22 ` [PATCH 6/13] inet_diag: Introduce the byte-code run on an inet socket Pavel Emelyanov
2011-12-09 16:23 ` [PATCH 7/13] inet_diag: Introduce the inet socket dumping routine Pavel Emelyanov
2011-12-09 16:23 ` [PATCH 8/13] inet_diag: Generalize inet_diag dump and get_exact calls Pavel Emelyanov
2011-12-09 16:23 ` [PATCH 9/13] udp: Export code sk lookup routines Pavel Emelyanov
2011-12-09 16:23 ` [PATCH 10/13] udp_diag: Basic skeleton Pavel Emelyanov
2011-12-09 16:24 ` [PATCH 11/13] udp_diag: Implement the get_exact dumping functionality Pavel Emelyanov
2011-12-09 21:48 ` Eric Dumazet
2011-12-10 9:07 ` Pavel Emelyanov
2011-12-10 9:33 ` [PATCH 1/2] udp_diag: Make it module when ipv6 is a module Pavel Emelyanov
2011-12-10 9:35 ` [PATCH 2/2] udp_diag: Fix the !ipv6 case Pavel Emelyanov
2011-12-10 11:02 ` Eric Dumazet
2011-12-10 18:15 ` David Miller
2011-12-10 19:48 ` [PATCH net-next] net: use IS_ENABLED(CONFIG_IPV6) Eric Dumazet
2011-12-10 22:00 ` [PATCH net-next] drivers/net: " Joe Perches
2011-12-10 22:29 ` Eric Dumazet
2011-12-11 0:51 ` Joe Perches
2011-12-11 8:52 ` Eric Dumazet
2011-12-13 0:06 ` Joe Perches
2011-12-11 23:34 ` [PATCH net-next] net: " David Miller
2011-12-10 11:00 ` [PATCH 1/2] udp_diag: Make it module when ipv6 is a module Eric Dumazet
2011-12-10 18:15 ` David Miller
2011-12-09 16:24 ` [PATCH 12/13] udp_diag: Implement the dump-all functionality Pavel Emelyanov
2011-12-09 16:24 ` [PATCH 13/13] udp_diag: Wire the udp_diag module into kbuild Pavel Emelyanov
2011-12-09 16:26 ` Pavel Emelyanov [this message]
2011-12-09 19:19 ` [PATCH 0/13] Implement dumping udp sockets via sock_diag netlink David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4EE236B3.2090808@parallels.com \
--to=xemul@parallels.com \
--cc=davem@davemloft.net \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.