From: Phil Sutter <phil@nwl.cc>
To: Matthias Tafelmeier <matthias.tafelmeier@gmx.net>
Cc: netdev@vger.kernel.org, hagen@jauu.net, shemminger@osdl.org,
fw@strlen.de, edumazet@google.com, daniel@iogearbox.net
Subject: Re: [PATCH v7 06/10] ss: renaming and export of current_filter
Date: Tue, 27 Oct 2015 14:10:41 +0100 [thread overview]
Message-ID: <20151027131041.GE26876@orbit.nwl.cc> (raw)
In-Reply-To: <1441913708-15532-7-git-send-email-matthias.tafelmeier@gmx.net>
On Thu, Sep 10, 2015 at 09:35:04PM +0200, Matthias Tafelmeier wrote:
> Exported current_filter as ss_current_filter, because in
> the fmt handlers, I need that piece of info to resolve out issues of json.
This patch should come before the patches using the new name.
> Signed-off-by: Matthias Tafelmeier <matthias.tafelmeier@gmx.net>
> ---
> misc/ss.c | 154 +++++++++++++++++++++++++++++++-------------------------------
> 1 file changed, 78 insertions(+), 76 deletions(-)
>
> diff --git a/misc/ss.c b/misc/ss.c
> index 7a1b6eb..6ff40a3 100644
> --- a/misc/ss.c
> +++ b/misc/ss.c
> @@ -106,6 +106,7 @@ int show_sock_ctx = 0;
> int user_ent_hash_build_init = 0;
> int follow_events = 0;
> int json_output = 0;
> +int json_first_elem = 1;
This seems to be unrelated?
>
> int netid_width;
> int state_width;
> @@ -200,7 +201,7 @@ static const struct filter default_afs[AF_MAX] = {
> };
>
> static int do_default = 1;
> -static struct filter current_filter;
> +struct filter ss_current_filter;
>
> static void filter_db_set(struct filter *f, int db)
> {
> @@ -1182,7 +1183,7 @@ void *parse_hostcond(char *addr, bool is_port)
> struct aafilter a = { .port = -1 };
> struct aafilter *res;
> int fam = preferred_family;
> - struct filter *f = ¤t_filter;
> + struct filter *f = &ss_current_filter;
Is it necessary to rename the function? The scope of ss is not too big,
so I don't think clarification is necessary. At least this would shrink
down this patch to almost nothing. :)
>
> if (fam == AF_UNIX || strncmp(addr, "unix:", 5) == 0) {
> char *p;
> @@ -1281,9 +1282,9 @@ void *parse_hostcond(char *addr, bool is_port)
> if (get_integer(&a.port, port, 0)) {
> struct servent *se1 = NULL;
> struct servent *se2 = NULL;
> - if (current_filter.dbs&(1<<UDP_DB))
> + if (ss_current_filter.dbs & (1 << UDP_DB))
> se1 = getservbyname(port, UDP_PROTO);
> - if (current_filter.dbs&(1<<TCP_DB))
> + if (ss_current_filter.dbs & (1 << TCP_DB))
> se2 = getservbyname(port, TCP_PROTO);
> if (se1 && se2 && se1->s_port != se2->s_port) {
> fprintf(stderr, "Error: ambiguous port \"%s\".\n", port);
> @@ -1297,9 +1298,9 @@ void *parse_hostcond(char *addr, bool is_port)
> struct scache *s;
> for (s = rlist; s; s = s->next) {
> if ((s->proto == UDP_PROTO &&
> - (current_filter.dbs&(1<<UDP_DB))) ||
> + (ss_current_filter.dbs&(1<<UDP_DB))) ||
> (s->proto == TCP_PROTO &&
> - (current_filter.dbs&(1<<TCP_DB)))) {
> + (ss_current_filter.dbs&(1<<TCP_DB)))) {
> if (s->name && strcmp(s->name, port) == 0) {
> if (a.port > 0 && a.port != s->port) {
> fprintf(stderr, "Error: ambiguous port \"%s\".\n", port);
> @@ -3220,19 +3221,19 @@ int main(int argc, char *argv[])
> follow_events = 1;
> break;
> case 'd':
> - filter_db_set(¤t_filter, DCCP_DB);
> + filter_db_set(&ss_current_filter, DCCP_DB);
> break;
> case 't':
> - filter_db_set(¤t_filter, TCP_DB);
> + filter_db_set(&ss_current_filter, TCP_DB);
> break;
> case 'u':
> - filter_db_set(¤t_filter, UDP_DB);
> + filter_db_set(&ss_current_filter, UDP_DB);
> break;
> case 'w':
> - filter_db_set(¤t_filter, RAW_DB);
> + filter_db_set(&ss_current_filter, RAW_DB);
> break;
> case 'x':
> - filter_af_set(¤t_filter, AF_UNIX);
> + filter_af_set(&ss_current_filter, AF_UNIX);
> break;
> case 'a':
> state_filter = SS_ALL;
> @@ -3241,25 +3242,25 @@ int main(int argc, char *argv[])
> state_filter = (1 << SS_LISTEN) | (1 << SS_CLOSE);
> break;
> case '4':
> - filter_af_set(¤t_filter, AF_INET);
> + filter_af_set(&ss_current_filter, AF_INET);
> break;
> case '6':
> - filter_af_set(¤t_filter, AF_INET6);
> + filter_af_set(&ss_current_filter, AF_INET6);
> break;
> case '0':
> - filter_af_set(¤t_filter, AF_PACKET);
> + filter_af_set(&ss_current_filter, AF_PACKET);
> break;
> case 'f':
> if (strcmp(optarg, "inet") == 0)
> - filter_af_set(¤t_filter, AF_INET);
> + filter_af_set(&ss_current_filter, AF_INET);
> else if (strcmp(optarg, "inet6") == 0)
> - filter_af_set(¤t_filter, AF_INET6);
> + filter_af_set(&ss_current_filter, AF_INET6);
> else if (strcmp(optarg, "link") == 0)
> - filter_af_set(¤t_filter, AF_PACKET);
> + filter_af_set(&ss_current_filter, AF_PACKET);
> else if (strcmp(optarg, "unix") == 0)
> - filter_af_set(¤t_filter, AF_UNIX);
> + filter_af_set(&ss_current_filter, AF_UNIX);
> else if (strcmp(optarg, "netlink") == 0)
> - filter_af_set(¤t_filter, AF_NETLINK);
> + filter_af_set(&ss_current_filter, AF_NETLINK);
> else if (strcmp(optarg, "help") == 0)
> help();
> else {
> @@ -3272,9 +3273,9 @@ int main(int argc, char *argv[])
> {
> char *p, *p1;
> if (!saw_query) {
> - current_filter.dbs = 0;
> + ss_current_filter.dbs = 0;
> state_filter = state_filter ?
> - state_filter : SS_CONN;
> + state_filter : SS_CONN;
> saw_query = 1;
> do_default = 0;
> }
> @@ -3283,44 +3284,44 @@ int main(int argc, char *argv[])
> if ((p1 = strchr(p, ',')) != NULL)
> *p1 = 0;
> if (strcmp(p, "all") == 0) {
> - filter_default_dbs(¤t_filter);
> + filter_default_dbs(&ss_current_filter);
> } 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, RAW_DB);
> + filter_db_set(&ss_current_filter, UDP_DB);
> + filter_db_set(&ss_current_filter, DCCP_DB);
> + filter_db_set(&ss_current_filter, TCP_DB);
> + filter_db_set(&ss_current_filter, RAW_DB);
> } else if (strcmp(p, "udp") == 0) {
> - filter_db_set(¤t_filter, UDP_DB);
> + filter_db_set(&ss_current_filter, UDP_DB);
> } else if (strcmp(p, "dccp") == 0) {
> - filter_db_set(¤t_filter, DCCP_DB);
> + filter_db_set(&ss_current_filter, DCCP_DB);
> } else if (strcmp(p, "tcp") == 0) {
> - filter_db_set(¤t_filter, TCP_DB);
> + filter_db_set(&ss_current_filter, TCP_DB);
> } else if (strcmp(p, "raw") == 0) {
> - filter_db_set(¤t_filter, RAW_DB);
> + filter_db_set(&ss_current_filter, RAW_DB);
> } 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(&ss_current_filter, UNIX_ST_DB);
> + filter_db_set(&ss_current_filter, UNIX_DG_DB);
> + filter_db_set(&ss_current_filter, UNIX_SQ_DB);
> } else if (strcasecmp(p, "unix_stream") == 0 ||
> strcmp(p, "u_str") == 0) {
> - filter_db_set(¤t_filter, UNIX_ST_DB);
> + filter_db_set(&ss_current_filter, UNIX_ST_DB);
> } else if (strcasecmp(p, "unix_dgram") == 0 ||
> strcmp(p, "u_dgr") == 0) {
> - filter_db_set(¤t_filter, UNIX_DG_DB);
> + filter_db_set(&ss_current_filter, UNIX_DG_DB);
> } else if (strcasecmp(p, "unix_seqpacket") == 0 ||
> strcmp(p, "u_seq") == 0) {
> - filter_db_set(¤t_filter, UNIX_SQ_DB);
> + filter_db_set(&ss_current_filter, UNIX_SQ_DB);
> } 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(&ss_current_filter, PACKET_R_DB);
> + filter_db_set(&ss_current_filter, PACKET_DG_DB);
> } else if (strcmp(p, "packet_raw") == 0 ||
> strcmp(p, "p_raw") == 0) {
> - filter_db_set(¤t_filter, PACKET_R_DB);
> + filter_db_set(&ss_current_filter, PACKET_R_DB);
> } else if (strcmp(p, "packet_dgram") == 0 ||
> strcmp(p, "p_dgr") == 0) {
> - filter_db_set(¤t_filter, PACKET_DG_DB);
> + filter_db_set(&ss_current_filter, PACKET_DG_DB);
> } else if (strcmp(p, "netlink") == 0) {
> - filter_db_set(¤t_filter, NETLINK_DB);
> + filter_db_set(&ss_current_filter, NETLINK_DB);
> } else {
> fprintf(stderr, "ss: \"%s\" is illegal socket table id\n", p);
> usage();
> @@ -3386,7 +3387,7 @@ int main(int argc, char *argv[])
>
> /* Now parse filter... */
> if (argc == 0 && filter_fp) {
> - if (ssfilter_parse(¤t_filter.f, 0, NULL, filter_fp))
> + if (ssfilter_parse(&ss_current_filter.f, 0, NULL, filter_fp))
> usage();
> }
>
> @@ -3412,32 +3413,32 @@ 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(&ss_current_filter);
> }
>
> - filter_states_set(¤t_filter, state_filter);
> - filter_merge_defaults(¤t_filter);
> + filter_states_set(&ss_current_filter, state_filter);
> + filter_merge_defaults(&ss_current_filter);
>
> if (resolve_services && resolve_hosts &&
> - (current_filter.dbs&(UNIX_DBM|(1<<TCP_DB)|(1<<UDP_DB)|(1<<DCCP_DB))))
> + (ss_current_filter.dbs&(UNIX_DBM|(1<<TCP_DB)|(1<<UDP_DB)|(1<<DCCP_DB))))
> init_service_resolver();
>
> - if (current_filter.dbs == 0) {
> + if (ss_current_filter.dbs == 0) {
> fprintf(stderr, "ss: no socket tables to show with such filter.\n");
> exit(0);
> }
> - if (current_filter.families == 0) {
> + if (ss_current_filter.families == 0) {
> fprintf(stderr, "ss: no families to show with such filter.\n");
> exit(0);
> }
> - if (current_filter.states == 0) {
> + if (ss_current_filter.states == 0) {
> fprintf(stderr, "ss: no socket states to show with such filter.\n");
> exit(0);
> }
>
> if (dump_tcpdiag) {
> FILE *dump_fp = stdout;
> - if (!(current_filter.dbs & (1<<TCP_DB))) {
> + if (!(ss_current_filter.dbs & (1<<TCP_DB))) {
> fprintf(stderr, "ss: tcpdiag dump requested and no tcp in filter.\n");
> exit(0);
> }
> @@ -3450,7 +3451,7 @@ int main(int argc, char *argv[])
> }
> jsonw_name(json_wr, "TCP");
> jsonw_start_array(json_wr);
> - inet_show_netlink(¤t_filter, dump_fp, IPPROTO_TCP);
> + inet_show_netlink(&ss_current_filter, dump_fp, IPPROTO_TCP);
> jsonw_end_array(json_wr);
> jsonw_destroy(&json_wr);
> fflush(dump_fp);
> @@ -3466,15 +3467,15 @@ int main(int argc, char *argv[])
> }
> }
>
> - if (ssfilter_parse(¤t_filter.f, argc, argv, filter_fp))
> + if (ssfilter_parse(&ss_current_filter.f, argc, argv, filter_fp))
> usage();
>
> netid_width = 0;
> - if (current_filter.dbs&(current_filter.dbs-1))
> + if (ss_current_filter.dbs & (ss_current_filter.dbs - 1))
> netid_width = 5;
>
> state_width = 0;
> - if (current_filter.states&(current_filter.states-1))
> + if (ss_current_filter.states & (ss_current_filter.states - 1))
> state_width = 10;
>
> screen_width = 80;
> @@ -3527,67 +3528,68 @@ int main(int argc, char *argv[])
>
> fflush(stdout);
>
> - if (current_filter.dbs & (1<<NETLINK_DB)) {
> + if (ss_current_filter.dbs & (1<<NETLINK_DB)) {
> if (json_output) {
> jsonw_name(json_wr, "NETLINK");
> jsonw_start_array(json_wr);
> - netlink_show(¤t_filter);
> + netlink_show(&ss_current_filter);
> + jsonw_end_array(json_wr);
> } else
> - netlink_show(¤t_filter);
> + netlink_show(&ss_current_filter);
> }
> - if (current_filter.dbs & PACKET_DBM) {
> + if (ss_current_filter.dbs & PACKET_DBM) {
> if (json_output) {
> jsonw_name(json_wr, "PACKET");
> jsonw_start_array(json_wr);
> - packet_show(¤t_filter);
> + packet_show(&ss_current_filter);
> jsonw_end_array(json_wr);
> } else
> - packet_show(¤t_filter);
> + packet_show(&ss_current_filter);
> }
> - if (current_filter.dbs & UNIX_DBM) {
> + if (ss_current_filter.dbs & UNIX_DBM) {
> if (json_output) {
> jsonw_name(json_wr, "UNIX");
> jsonw_start_array(json_wr);
> - unix_show(¤t_filter);
> + unix_show(&ss_current_filter);
> jsonw_end_array(json_wr);
> } else
> - unix_show(¤t_filter);
> + unix_show(&ss_current_filter);
> }
> - if (current_filter.dbs & (1<<RAW_DB)) {
> + if (ss_current_filter.dbs & (1<<RAW_DB)) {
> if (json_output) {
> jsonw_name(json_wr, "RAW");
> jsonw_start_array(json_wr);
> - raw_show(¤t_filter);
> + raw_show(&ss_current_filter);
> jsonw_end_array(json_wr);
> } else
> - raw_show(¤t_filter);
> + raw_show(&ss_current_filter);
> }
> - if (current_filter.dbs & (1<<UDP_DB)) {
> + if (ss_current_filter.dbs & (1<<UDP_DB)) {
> if (json_output) {
> jsonw_name(json_wr, "UDP");
> jsonw_start_array(json_wr);
> - udp_show(¤t_filter);
> + udp_show(&ss_current_filter);
> jsonw_end_array(json_wr);
> } else
> - udp_show(¤t_filter);
> + udp_show(&ss_current_filter);
> }
> - if (current_filter.dbs & (1<<TCP_DB)) {
> + if (ss_current_filter.dbs & (1<<TCP_DB)) {
> if (json_output) {
> jsonw_name(json_wr, "TCP");
> jsonw_start_array(json_wr);
> - tcp_show(¤t_filter, IPPROTO_TCP);
> + tcp_show(&ss_current_filter, IPPROTO_TCP);
> jsonw_end_array(json_wr);
> } else
> - tcp_show(¤t_filter, IPPROTO_TCP);
> + tcp_show(&ss_current_filter, IPPROTO_TCP);
> }
> - if (current_filter.dbs & (1<<DCCP_DB)) {
> + if (ss_current_filter.dbs & (1<<DCCP_DB)) {
> if (json_output) {
> jsonw_name(json_wr, "DCCP");
> jsonw_start_array(json_wr);
> - tcp_show(¤t_filter, IPPROTO_DCCP);
> + tcp_show(&ss_current_filter, IPPROTO_DCCP);
> jsonw_end_array(json_wr);
> } else
> - tcp_show(¤t_filter, IPPROTO_DCCP);
> + tcp_show(&ss_current_filter, IPPROTO_DCCP);
> }
>
> if (json_output)
> @@ -3596,7 +3598,7 @@ int main(int argc, char *argv[])
> fflush(stdout);
>
> if (follow_events)
> - exit(handle_follow_request(¤t_filter));
> + exit(handle_follow_request(&ss_current_filter));
>
> if (show_users || show_proc_ctx || show_sock_ctx)
> user_ent_destroy();
> --
> 1.9.1
>
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2015-10-27 13:10 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-09-10 19:34 iproute2 v7: full ss json support and general output simplification Matthias Tafelmeier
2015-09-10 19:34 ` [PATCH v7 01/10] ss: rooted out ss type declarations for output formatters Matthias Tafelmeier
2015-09-10 19:35 ` [PATCH v7 02/10] ss: created formatters for json and hr Matthias Tafelmeier
2015-09-23 23:26 ` Stephen Hemminger
2015-09-24 17:43 ` Matthias Tafelmeier
[not found] ` <bc9cacb94de24857a7d9e13960bfae56@HQ1WP-EXMB11.corp.brocade.com>
2015-09-24 22:16 ` Stephen Hemminger
2015-09-25 6:01 ` Matthias Tafelmeier
2015-10-28 8:07 ` Matthias Tafelmeier
2015-10-28 8:28 ` Phil Sutter
2015-10-28 11:57 ` Matthias Tafelmeier
2015-10-28 15:05 ` Phil Sutter
2015-10-28 15:50 ` Matthias Tafelmeier
[not found] ` <b114412a541d4273a9a7a1c0ae4777df@HQ1WP-EXMB11.corp.brocade.com>
2015-11-02 23:06 ` Stephen Hemminger
2015-11-03 6:54 ` Matthias Tafelmeier
2015-10-27 12:21 ` Phil Sutter
2015-10-27 13:47 ` David Miller
2015-10-27 13:35 ` Phil Sutter
2015-09-10 19:35 ` [PATCH v7 03/10] ss: removed obsolet fmt functions Matthias Tafelmeier
2015-09-10 19:35 ` [PATCH v7 04/10] ss: prepare timer for output handler usage Matthias Tafelmeier
2015-09-10 19:35 ` [PATCH v7 05/10] ss: replaced old output with new generic output mechanisms Matthias Tafelmeier
2015-10-27 13:04 ` Phil Sutter
2015-09-10 19:35 ` [PATCH v7 06/10] ss: renaming and export of current_filter Matthias Tafelmeier
2015-10-27 13:10 ` Phil Sutter [this message]
2015-09-10 19:35 ` [PATCH v7 07/10] ss: symmetrical subhandler output extension example Matthias Tafelmeier
2015-10-27 13:13 ` Phil Sutter
2015-09-10 19:35 ` [PATCH v7 08/10] ss: symmetrical formatter " Matthias Tafelmeier
2015-10-27 13:17 ` Phil Sutter
2015-09-10 19:35 ` [PATCH v7 09/10] ss: fixed free on local array for valid json output Matthias Tafelmeier
2015-10-27 13:19 ` Phil Sutter
2015-09-10 19:35 ` [PATCH v7 10/10] ss: activate json_writer excluded logic Matthias Tafelmeier
2015-10-27 13:21 ` Phil Sutter
2015-10-28 2:39 ` Stephen Hemminger
2015-10-28 8:17 ` Phil Sutter
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=20151027131041.GE26876@orbit.nwl.cc \
--to=phil@nwl.cc \
--cc=daniel@iogearbox.net \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=hagen@jauu.net \
--cc=matthias.tafelmeier@gmx.net \
--cc=netdev@vger.kernel.org \
--cc=shemminger@osdl.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.