diff options
author | João Valverde <joao.valverde@tecnico.ulisboa.pt> | 2016-03-22 03:24:35 +0000 |
---|---|---|
committer | Peter Wu <peter@lekensteyn.nl> | 2016-04-08 20:49:22 +0000 |
commit | c5782e0d412c38a7338a3f8862dee0c248aab227 (patch) | |
tree | 6d61f80782cfb65fd19ec05f31cb2eb4f192413e /ui/cli | |
parent | 57b2a84f3d900eb0b98157095c6aac07cec54fd9 (diff) |
Replace and remove host_ip_af() function
Change-Id: I932c156cbc6883d1d63bf0457fd62cfb67c3340e
Reviewed-on: https://code.wireshark.org/review/14750
Petri-Dish: Peter Wu <peter@lekensteyn.nl>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org>
Reviewed-by: Peter Wu <peter@lekensteyn.nl>
Diffstat (limited to 'ui/cli')
-rw-r--r-- | ui/cli/tap-follow.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/ui/cli/tap-follow.c b/ui/cli/tap-follow.c index c6a4ed0014..9d2b2d0cc9 100644 --- a/ui/cli/tap-follow.c +++ b/ui/cli/tap-follow.c @@ -63,7 +63,7 @@ typedef struct _cli_follow_info { #define STR_EBCDIC ",ebcdic" #define STR_RAW ",raw" -static void follow_exit(const char *strp) +WS_NORETURN static void follow_exit(const char *strp) { fprintf(stderr, "tshark: follow - %s\n", strp); exit(1); @@ -343,6 +343,7 @@ follow_arg_filter(const char **opt_argp, follow_info_t *follow_info) unsigned int ii; char addr[ADDR_LEN]; cli_follow_info_t* cli_follow_info = (cli_follow_info_t*)follow_info->gui_data; + gboolean is_ipv6; if (sscanf(*opt_argp, ",%u%n", &cli_follow_info->stream_index, &len) == 1 && ((*opt_argp)[len] == 0 || (*opt_argp)[len] == ',')) @@ -353,14 +354,25 @@ follow_arg_filter(const char **opt_argp, follow_info_t *follow_info) { for (ii = 0; ii < sizeof cli_follow_info->addr/sizeof *cli_follow_info->addr; ii++) { - if ((sscanf(*opt_argp, ADDRv6_FMT, addr, &cli_follow_info->port[ii], &len) != 2 && - sscanf(*opt_argp, ADDRv4_FMT, addr, &cli_follow_info->port[ii], &len) != 2) || - cli_follow_info->port[ii] <= 0 || cli_follow_info->port[ii] > G_MAXUINT16) + if (sscanf(*opt_argp, ADDRv6_FMT, addr, &cli_follow_info->port[ii], &len) == 2) { - follow_exit("Invalid address:port pair."); + is_ipv6 = TRUE; + } + else if (sscanf(*opt_argp, ADDRv4_FMT, addr, &cli_follow_info->port[ii], &len) == 2) + { + is_ipv6 = FALSE; + } + else + { + follow_exit("Invalid address."); + } + + if (cli_follow_info->port[ii] <= 0 || cli_follow_info->port[ii] > G_MAXUINT16) + { + follow_exit("Invalid port."); } - if (strcmp("ip6", host_ip_af(addr)) == 0) + if (is_ipv6) { if (!get_host_ipaddr6(addr, (struct e_in6_addr *)cli_follow_info->addrBuf[ii])) { |