diff options
Diffstat (limited to 'sbin/ipfw/ipfw.c')
-rw-r--r-- | sbin/ipfw/ipfw.c | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/sbin/ipfw/ipfw.c b/sbin/ipfw/ipfw.c index 2a0c293..326a889 100644 --- a/sbin/ipfw/ipfw.c +++ b/sbin/ipfw/ipfw.c @@ -16,7 +16,7 @@ * * NEW command line interface for IP firewall facility * - * $Id: ipfw.c,v 1.25 1996/06/09 23:46:22 alex Exp $ + * $Id: ipfw.c,v 1.26 1996/06/18 01:46:34 alex Exp $ * */ @@ -256,7 +256,7 @@ show_ipfw(chain) } if (chain->fw_flg & IP_FW_F_FRAG) - printf("frag "); + printf(" frag "); if (chain->fw_ipopt || chain->fw_ipnopt) { int _opt_printed = 0; @@ -408,12 +408,23 @@ fill_ip(ipno, mask, acp, avp) if (lookup_host(*av,ipno) != 0) show_usage("ip number\n"); - if (md == ':' && !inet_aton(p,mask)) - show_usage("ip number\n"); - else if (md == '/') - mask->s_addr = htonl(0xffffffff << (32 - atoi(p))); - else - mask->s_addr = htonl(0xffffffff); + switch (md) { + case ':': + if (!inet_aton(p,mask)) + show_usage("ip number\n"); + break; + case '/': + if (atoi(p) == 0) { + mask->s_addr = 0; + } else { + mask->s_addr = htonl(0xffffffff << (32 - atoi(p))); + } + break; + default: + mask->s_addr = htonl(0xffffffff); + break; + } + ipno->s_addr &= mask->s_addr; av++; ac--; } @@ -788,10 +799,9 @@ ipfw_main(ac,av) break; case 'N': do_resolv=1; - break; - case '?': - default: - show_usage("Unrecognised switch"); + break; + default: + show_usage("Unrecognised switch"); } ac -= optind; @@ -818,7 +828,7 @@ ipfw_main(ac,av) } else { show_usage("Bad arguments"); } - return 0; + return 0; } int |