From patchwork Tue Mar 27 23:51:54 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Sutter X-Patchwork-Id: 891867 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=nwl.cc Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409nqq6Xdwz9s0b for ; Wed, 28 Mar 2018 10:52:23 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752487AbeC0XwT (ORCPT ); Tue, 27 Mar 2018 19:52:19 -0400 Received: from orbyte.nwl.cc ([151.80.46.58]:46670 "EHLO orbyte.nwl.cc" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752227AbeC0XwS (ORCPT ); Tue, 27 Mar 2018 19:52:18 -0400 Received: from localhost ([::1]:33714 helo=xsao) by orbyte.nwl.cc with esmtp (Exim 4.90_1) (envelope-from ) id 1f0yO1-0006CE-6g; Wed, 28 Mar 2018 01:52:17 +0200 From: Phil Sutter To: Stephen Hemminger Cc: netdev@vger.kernel.org Subject: [iproute PATCH v2 1/3] ss: Allow excluding a socket table from being queried Date: Wed, 28 Mar 2018 01:51:54 +0200 Message-Id: <20180327235156.16680-2-phil@nwl.cc> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180327235156.16680-1-phil@nwl.cc> References: <20180327235156.16680-1-phil@nwl.cc> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org The original problem was that a simple call to 'ss' leads to loading of sctp_diag kernel module which might not be desired. While searching for a workaround, it became clear how inconvenient it is to exclude a single socket table from being queried. This patch allows to prefix an item passed to '-A' parameter with an exclamation mark to inverse its meaning. Signed-off-by: Phil Sutter --- man/man8/ss.8 | 8 ++++- misc/ss.c | 108 ++++++++++++++++++++++++++++++++-------------------------- 2 files changed, 66 insertions(+), 50 deletions(-) diff --git a/man/man8/ss.8 b/man/man8/ss.8 index 973afbe0b386b..28033d8f01dda 100644 --- a/man/man8/ss.8 +++ b/man/man8/ss.8 @@ -317,7 +317,10 @@ Currently the following families are supported: unix, inet, inet6, link, netlink List of socket tables to dump, separated by commas. The following identifiers are understood: all, inet, tcp, udp, raw, unix, packet, netlink, unix_dgram, unix_stream, unix_seqpacket, packet_raw, packet_dgram, dccp, sctp, -vsock_stream, vsock_dgram. +vsock_stream, vsock_dgram. Any item in the list may optionally be prefixed by +an exclamation mark +.RB ( ! ) +to exclude that socket table from being dumped. .TP .B \-D FILE, \-\-diag=FILE Do not display anything, just dump raw information about TCP sockets to FILE after applying filters. If FILE is - stdout is used. @@ -380,6 +383,9 @@ Find all local processes connected to X server. .TP .B ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24 List all the tcp sockets in state FIN-WAIT-1 for our apache to network 193.233.7/24 and look at their timers. +.TP +.B ss -a -A 'all,!tcp' +List sockets in all states from all socket tables but TCP. .SH SEE ALSO .BR ip (8), .br diff --git a/misc/ss.c b/misc/ss.c index 6338820bf4a01..05522176f1e61 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -329,10 +329,14 @@ static const struct filter default_afs[AF_MAX] = { static int do_default = 1; static struct filter current_filter; -static void filter_db_set(struct filter *f, int db) +static void filter_db_set(struct filter *f, int db, bool enable) { - f->states |= default_dbs[db].states; - f->dbs |= 1 << db; + if (enable) { + f->states |= default_dbs[db].states; + f->dbs |= 1 << db; + } else { + f->dbs &= ~(1 << db); + } do_default = 0; } @@ -349,21 +353,21 @@ static int filter_af_get(struct filter *f, int af) return !!(f->families & FAMILY_MASK(af)); } -static void filter_default_dbs(struct filter *f) +static void filter_default_dbs(struct filter *f, bool enable) { - filter_db_set(f, UDP_DB); - filter_db_set(f, DCCP_DB); - filter_db_set(f, TCP_DB); - filter_db_set(f, RAW_DB); - filter_db_set(f, UNIX_ST_DB); - filter_db_set(f, UNIX_DG_DB); - filter_db_set(f, UNIX_SQ_DB); - filter_db_set(f, PACKET_R_DB); - filter_db_set(f, PACKET_DG_DB); - filter_db_set(f, NETLINK_DB); - filter_db_set(f, SCTP_DB); - filter_db_set(f, VSOCK_ST_DB); - filter_db_set(f, VSOCK_DG_DB); + filter_db_set(f, UDP_DB, enable); + filter_db_set(f, DCCP_DB, enable); + filter_db_set(f, TCP_DB, enable); + filter_db_set(f, RAW_DB, enable); + filter_db_set(f, UNIX_ST_DB, enable); + filter_db_set(f, UNIX_DG_DB, enable); + filter_db_set(f, UNIX_SQ_DB, enable); + filter_db_set(f, PACKET_R_DB, enable); + filter_db_set(f, PACKET_DG_DB, enable); + filter_db_set(f, NETLINK_DB, enable); + filter_db_set(f, SCTP_DB, enable); + filter_db_set(f, VSOCK_ST_DB, enable); + filter_db_set(f, VSOCK_DG_DB, enable); } static void filter_states_set(struct filter *f, int states) @@ -4712,19 +4716,19 @@ int main(int argc, char *argv[]) follow_events = 1; break; case 'd': - filter_db_set(¤t_filter, DCCP_DB); + filter_db_set(¤t_filter, DCCP_DB, true); break; case 't': - filter_db_set(¤t_filter, TCP_DB); + filter_db_set(¤t_filter, TCP_DB, true); break; case 'S': - filter_db_set(¤t_filter, SCTP_DB); + filter_db_set(¤t_filter, SCTP_DB, true); break; case 'u': - filter_db_set(¤t_filter, UDP_DB); + filter_db_set(¤t_filter, UDP_DB, true); break; case 'w': - filter_db_set(¤t_filter, RAW_DB); + filter_db_set(¤t_filter, RAW_DB, true); break; case 'x': filter_af_set(¤t_filter, AF_UNIX); @@ -4781,59 +4785,65 @@ int main(int argc, char *argv[]) } p = p1 = optarg; do { + bool enable = true; + if ((p1 = strchr(p, ',')) != NULL) *p1 = 0; + if (p[0] == '!') { + enable = false; + p++; + } if (strcmp(p, "all") == 0) { - filter_default_dbs(¤t_filter); + filter_default_dbs(¤t_filter, enable); } else if (strcmp(p, "inet") == 0) { - filter_db_set(¤t_filter, UDP_DB); - filter_db_set(¤t_filter, DCCP_DB); - filter_db_set(¤t_filter, TCP_DB); - filter_db_set(¤t_filter, SCTP_DB); - filter_db_set(¤t_filter, RAW_DB); + filter_db_set(¤t_filter, UDP_DB, enable); + filter_db_set(¤t_filter, DCCP_DB, enable); + filter_db_set(¤t_filter, TCP_DB, enable); + filter_db_set(¤t_filter, SCTP_DB, enable); + filter_db_set(¤t_filter, RAW_DB, enable); } else if (strcmp(p, "udp") == 0) { - filter_db_set(¤t_filter, UDP_DB); + filter_db_set(¤t_filter, UDP_DB, enable); } else if (strcmp(p, "dccp") == 0) { - filter_db_set(¤t_filter, DCCP_DB); + filter_db_set(¤t_filter, DCCP_DB, enable); } else if (strcmp(p, "tcp") == 0) { - filter_db_set(¤t_filter, TCP_DB); + filter_db_set(¤t_filter, TCP_DB, enable); } else if (strcmp(p, "sctp") == 0) { - filter_db_set(¤t_filter, SCTP_DB); + filter_db_set(¤t_filter, SCTP_DB, enable); } else if (strcmp(p, "raw") == 0) { - filter_db_set(¤t_filter, RAW_DB); + filter_db_set(¤t_filter, RAW_DB, enable); } else if (strcmp(p, "unix") == 0) { - filter_db_set(¤t_filter, UNIX_ST_DB); - filter_db_set(¤t_filter, UNIX_DG_DB); - filter_db_set(¤t_filter, UNIX_SQ_DB); + filter_db_set(¤t_filter, UNIX_ST_DB, enable); + filter_db_set(¤t_filter, UNIX_DG_DB, enable); + filter_db_set(¤t_filter, UNIX_SQ_DB, enable); } else if (strcasecmp(p, "unix_stream") == 0 || strcmp(p, "u_str") == 0) { - filter_db_set(¤t_filter, UNIX_ST_DB); + filter_db_set(¤t_filter, UNIX_ST_DB, enable); } else if (strcasecmp(p, "unix_dgram") == 0 || strcmp(p, "u_dgr") == 0) { - filter_db_set(¤t_filter, UNIX_DG_DB); + filter_db_set(¤t_filter, UNIX_DG_DB, enable); } else if (strcasecmp(p, "unix_seqpacket") == 0 || strcmp(p, "u_seq") == 0) { - filter_db_set(¤t_filter, UNIX_SQ_DB); + filter_db_set(¤t_filter, UNIX_SQ_DB, enable); } else if (strcmp(p, "packet") == 0) { - filter_db_set(¤t_filter, PACKET_R_DB); - filter_db_set(¤t_filter, PACKET_DG_DB); + filter_db_set(¤t_filter, PACKET_R_DB, enable); + filter_db_set(¤t_filter, PACKET_DG_DB, enable); } else if (strcmp(p, "packet_raw") == 0 || strcmp(p, "p_raw") == 0) { - filter_db_set(¤t_filter, PACKET_R_DB); + filter_db_set(¤t_filter, PACKET_R_DB, enable); } else if (strcmp(p, "packet_dgram") == 0 || strcmp(p, "p_dgr") == 0) { - filter_db_set(¤t_filter, PACKET_DG_DB); + filter_db_set(¤t_filter, PACKET_DG_DB, enable); } else if (strcmp(p, "netlink") == 0) { - filter_db_set(¤t_filter, NETLINK_DB); + filter_db_set(¤t_filter, NETLINK_DB, enable); } else if (strcmp(p, "vsock") == 0) { - filter_db_set(¤t_filter, VSOCK_ST_DB); - filter_db_set(¤t_filter, VSOCK_DG_DB); + filter_db_set(¤t_filter, VSOCK_ST_DB, enable); + filter_db_set(¤t_filter, VSOCK_DG_DB, enable); } else if (strcmp(p, "vsock_stream") == 0 || strcmp(p, "v_str") == 0) { - filter_db_set(¤t_filter, VSOCK_ST_DB); + filter_db_set(¤t_filter, VSOCK_ST_DB, enable); } else if (strcmp(p, "vsock_dgram") == 0 || strcmp(p, "v_dgr") == 0) { - filter_db_set(¤t_filter, VSOCK_DG_DB); + filter_db_set(¤t_filter, VSOCK_DG_DB, enable); } else { fprintf(stderr, "ss: \"%s\" is illegal socket table id\n", p); usage(); @@ -4926,7 +4936,7 @@ int main(int argc, char *argv[]) if (do_default) { state_filter = state_filter ? state_filter : SS_CONN; - filter_default_dbs(¤t_filter); + filter_default_dbs(¤t_filter, true); } filter_states_set(¤t_filter, state_filter); From patchwork Tue Mar 27 23:51:55 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Sutter X-Patchwork-Id: 891865 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=nwl.cc Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409nqc3Yyrz9s0b for ; Wed, 28 Mar 2018 10:52:12 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752249AbeC0XwI (ORCPT ); Tue, 27 Mar 2018 19:52:08 -0400 Received: from orbyte.nwl.cc ([151.80.46.58]:46658 "EHLO orbyte.nwl.cc" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752176AbeC0XwI (ORCPT ); Tue, 27 Mar 2018 19:52:08 -0400 Received: from localhost ([::1]:33702 helo=xsao) by orbyte.nwl.cc with esmtp (Exim 4.90_1) (envelope-from ) id 1f0yNq-0006BX-IT; Wed, 28 Mar 2018 01:52:06 +0200 From: Phil Sutter To: Stephen Hemminger Cc: netdev@vger.kernel.org Subject: [iproute PATCH v2 2/3] ss: Put filter DB parsing into a separate function Date: Wed, 28 Mar 2018 01:51:55 +0200 Message-Id: <20180327235156.16680-3-phil@nwl.cc> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180327235156.16680-1-phil@nwl.cc> References: <20180327235156.16680-1-phil@nwl.cc> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Use a table for database name parsing. The tricky bit is to allow for association of a (nearly) arbitrary number of DBs with each name. Luckily the number is not fully arbitrary as there is an upper bound of MAX_DB items. Since it is not possible to have a variable length array inside a variable length array, use this knowledge to make the inner array of fixed length. But since DB values start from zero, an explicit end entry needs to be present as well, so the inner array has to be MAX_DB + 1 in size. Signed-off-by: Phil Sutter --- Changes since v1: - Fix checkpatch errors. misc/ss.c | 114 ++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 56 insertions(+), 58 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index 05522176f1e61..83e476a0407e5 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -340,6 +340,61 @@ static void filter_db_set(struct filter *f, int db, bool enable) do_default = 0; } +static int filter_db_parse(struct filter *f, const char *s) +{ + const struct { + const char *name; + int dbs[MAX_DB + 1]; + } db_name_tbl[] = { +#define ENTRY(name, ...) { #name, { __VA_ARGS__, MAX_DB } } + ENTRY(all, UDP_DB, DCCP_DB, TCP_DB, RAW_DB, + UNIX_ST_DB, UNIX_DG_DB, UNIX_SQ_DB, + PACKET_R_DB, PACKET_DG_DB, NETLINK_DB, + SCTP_DB, VSOCK_ST_DB, VSOCK_DG_DB), + ENTRY(inet, UDP_DB, DCCP_DB, TCP_DB, SCTP_DB, RAW_DB), + ENTRY(udp, UDP_DB), + ENTRY(dccp, DCCP_DB), + ENTRY(tcp, TCP_DB), + ENTRY(sctp, SCTP_DB), + ENTRY(raw, RAW_DB), + ENTRY(unix, UNIX_ST_DB, UNIX_DG_DB, UNIX_SQ_DB), + ENTRY(unix_stream, UNIX_ST_DB), + ENTRY(u_str, UNIX_ST_DB), /* alias for unix_stream */ + ENTRY(unix_dgram, UNIX_DG_DB), + ENTRY(u_dgr, UNIX_DG_DB), /* alias for unix_dgram */ + ENTRY(unix_seqpacket, UNIX_SQ_DB), + ENTRY(u_seq, UNIX_SQ_DB), /* alias for unix_seqpacket */ + ENTRY(packet, PACKET_R_DB, PACKET_DG_DB), + ENTRY(packet_raw, PACKET_R_DB), + ENTRY(p_raw, PACKET_R_DB), /* alias for packet_raw */ + ENTRY(packet_dgram, PACKET_DG_DB), + ENTRY(p_dgr, PACKET_DG_DB), /* alias for packet_dgram */ + ENTRY(netlink, NETLINK_DB), + ENTRY(vsock, VSOCK_ST_DB, VSOCK_DG_DB), + ENTRY(vsock_stream, VSOCK_ST_DB), + ENTRY(v_str, VSOCK_ST_DB), /* alias for vsock_stream */ + ENTRY(vsock_dgram, VSOCK_DG_DB), + ENTRY(v_dgr, VSOCK_DG_DB), /* alias for vsock_dgram */ +#undef ENTRY + }; + bool enable = true; + unsigned int i; + const int *dbp; + + if (s[0] == '!') { + enable = false; + s++; + } + for (i = 0; i < ARRAY_SIZE(db_name_tbl); i++) { + if (strcmp(s, db_name_tbl[i].name)) + continue; + for (dbp = db_name_tbl[i].dbs; *dbp != MAX_DB; dbp++) + filter_db_set(f, *dbp, enable); + return 0; + } + return -1; +} + static void filter_af_set(struct filter *f, int af) { f->states |= default_afs[af].states; @@ -4785,66 +4840,9 @@ int main(int argc, char *argv[]) } p = p1 = optarg; do { - bool enable = true; - if ((p1 = strchr(p, ',')) != NULL) *p1 = 0; - if (p[0] == '!') { - enable = false; - p++; - } - if (strcmp(p, "all") == 0) { - filter_default_dbs(¤t_filter, enable); - } else if (strcmp(p, "inet") == 0) { - filter_db_set(¤t_filter, UDP_DB, enable); - filter_db_set(¤t_filter, DCCP_DB, enable); - filter_db_set(¤t_filter, TCP_DB, enable); - filter_db_set(¤t_filter, SCTP_DB, enable); - filter_db_set(¤t_filter, RAW_DB, enable); - } else if (strcmp(p, "udp") == 0) { - filter_db_set(¤t_filter, UDP_DB, enable); - } else if (strcmp(p, "dccp") == 0) { - filter_db_set(¤t_filter, DCCP_DB, enable); - } else if (strcmp(p, "tcp") == 0) { - filter_db_set(¤t_filter, TCP_DB, enable); - } else if (strcmp(p, "sctp") == 0) { - filter_db_set(¤t_filter, SCTP_DB, enable); - } else if (strcmp(p, "raw") == 0) { - filter_db_set(¤t_filter, RAW_DB, enable); - } else if (strcmp(p, "unix") == 0) { - filter_db_set(¤t_filter, UNIX_ST_DB, enable); - filter_db_set(¤t_filter, UNIX_DG_DB, enable); - filter_db_set(¤t_filter, UNIX_SQ_DB, enable); - } else if (strcasecmp(p, "unix_stream") == 0 || - strcmp(p, "u_str") == 0) { - filter_db_set(¤t_filter, UNIX_ST_DB, enable); - } else if (strcasecmp(p, "unix_dgram") == 0 || - strcmp(p, "u_dgr") == 0) { - filter_db_set(¤t_filter, UNIX_DG_DB, enable); - } else if (strcasecmp(p, "unix_seqpacket") == 0 || - strcmp(p, "u_seq") == 0) { - filter_db_set(¤t_filter, UNIX_SQ_DB, enable); - } else if (strcmp(p, "packet") == 0) { - filter_db_set(¤t_filter, PACKET_R_DB, enable); - filter_db_set(¤t_filter, PACKET_DG_DB, enable); - } else if (strcmp(p, "packet_raw") == 0 || - strcmp(p, "p_raw") == 0) { - filter_db_set(¤t_filter, PACKET_R_DB, enable); - } else if (strcmp(p, "packet_dgram") == 0 || - strcmp(p, "p_dgr") == 0) { - filter_db_set(¤t_filter, PACKET_DG_DB, enable); - } else if (strcmp(p, "netlink") == 0) { - filter_db_set(¤t_filter, NETLINK_DB, enable); - } else if (strcmp(p, "vsock") == 0) { - filter_db_set(¤t_filter, VSOCK_ST_DB, enable); - filter_db_set(¤t_filter, VSOCK_DG_DB, enable); - } else if (strcmp(p, "vsock_stream") == 0 || - strcmp(p, "v_str") == 0) { - filter_db_set(¤t_filter, VSOCK_ST_DB, enable); - } else if (strcmp(p, "vsock_dgram") == 0 || - strcmp(p, "v_dgr") == 0) { - filter_db_set(¤t_filter, VSOCK_DG_DB, enable); - } else { + if (filter_db_parse(¤t_filter, p)) { fprintf(stderr, "ss: \"%s\" is illegal socket table id\n", p); usage(); } From patchwork Tue Mar 27 23:51:56 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Phil Sutter X-Patchwork-Id: 891866 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=nwl.cc Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 409nqg5gcLz9s0b for ; Wed, 28 Mar 2018 10:52:15 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752397AbeC0XwN (ORCPT ); Tue, 27 Mar 2018 19:52:13 -0400 Received: from orbyte.nwl.cc ([151.80.46.58]:46664 "EHLO orbyte.nwl.cc" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752311AbeC0XwN (ORCPT ); Tue, 27 Mar 2018 19:52:13 -0400 Received: from localhost ([::1]:33708 helo=xsao) by orbyte.nwl.cc with esmtp (Exim 4.90_1) (envelope-from ) id 1f0yNv-0006Bu-T1; Wed, 28 Mar 2018 01:52:11 +0200 From: Phil Sutter To: Stephen Hemminger Cc: netdev@vger.kernel.org Subject: [iproute PATCH v2 3/3] ss: Drop filter_default_dbs() Date: Wed, 28 Mar 2018 01:51:56 +0200 Message-Id: <20180327235156.16680-4-phil@nwl.cc> X-Mailer: git-send-email 2.16.1 In-Reply-To: <20180327235156.16680-1-phil@nwl.cc> References: <20180327235156.16680-1-phil@nwl.cc> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead call filter_db_parse(..., "all"). This eliminates the duplicate default DB definition. Signed-off-by: Phil Sutter --- misc/ss.c | 19 +------------------ 1 file changed, 1 insertion(+), 18 deletions(-) diff --git a/misc/ss.c b/misc/ss.c index 83e476a0407e5..fc8e2a0d719fd 100644 --- a/misc/ss.c +++ b/misc/ss.c @@ -408,23 +408,6 @@ static int filter_af_get(struct filter *f, int af) return !!(f->families & FAMILY_MASK(af)); } -static void filter_default_dbs(struct filter *f, bool enable) -{ - filter_db_set(f, UDP_DB, enable); - filter_db_set(f, DCCP_DB, enable); - filter_db_set(f, TCP_DB, enable); - filter_db_set(f, RAW_DB, enable); - filter_db_set(f, UNIX_ST_DB, enable); - filter_db_set(f, UNIX_DG_DB, enable); - filter_db_set(f, UNIX_SQ_DB, enable); - filter_db_set(f, PACKET_R_DB, enable); - filter_db_set(f, PACKET_DG_DB, enable); - filter_db_set(f, NETLINK_DB, enable); - filter_db_set(f, SCTP_DB, enable); - filter_db_set(f, VSOCK_ST_DB, enable); - filter_db_set(f, VSOCK_DG_DB, enable); -} - static void filter_states_set(struct filter *f, int states) { if (states) @@ -4934,7 +4917,7 @@ int main(int argc, char *argv[]) if (do_default) { state_filter = state_filter ? state_filter : SS_CONN; - filter_default_dbs(¤t_filter, true); + filter_db_parse(¤t_filter, "all"); } filter_states_set(¤t_filter, state_filter);