diff options
author | fnm3 <fnm3> | 2002-11-25 08:57:37 +0000 |
---|---|---|
committer | fnm3 <fnm3> | 2002-11-25 08:57:37 +0000 |
commit | 03cf3376b290f1aacd7043e8fc7483ce40cac2aa (patch) | |
tree | c539727dae247c6c5161df110859bf2706550933 /extensions/ebt_ip.c | |
parent | 478aef4aa163eb25984132001bd2614a4bdc0676 (diff) |
Removed useless char ethertype_name[21];
Diffstat (limited to 'extensions/ebt_ip.c')
-rw-r--r-- | extensions/ebt_ip.c | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/extensions/ebt_ip.c b/extensions/ebt_ip.c index 7a054ce..9ad272b 100644 --- a/extensions/ebt_ip.c +++ b/extensions/ebt_ip.c @@ -57,6 +57,8 @@ static struct option opts[] = { 0 } }; +struct protoent *p_ent; + // put the ip string into 4 bytes static int undot_ip(char *ip, unsigned char *ip2) { @@ -313,9 +315,14 @@ static int parse(int c, char **argv, int argc, const struct ebt_u_entry *entry, ipinfo->invflags |= EBT_IP_PROTO; if (optind > argc) print_error("Missing IP protocol argument"); - i = strtol(argv[optind - 1], &end, 10); - if (i < 0 || i > 255 || *end != '\0') - print_error("Problem with specified IP protocol"); + (unsigned char) i = strtoul(argv[optind - 1], &end, 10); + if ((i > 0xFF) || (*end != '\0')) { + p_ent = getprotobyname(argv[optind - 1]); + if (p_ent == NULL) + print_error("Unknown Internet protocol %s ", + argv[optind - 1]); + i = p_ent->p_proto; + } ipinfo->protocol = i; ipinfo->bitmask |= EBT_IP_PROTO; break; |