Date: Tue, 20 Feb 2001 21:13:38 -0500 (EST) From: "James E. Housley" <housley@thehousleys.net> To: FreeBSD-gnats-submit@freebsd.org Subject: bin/25241: ipfw shouldn't show dynamics rules when specific rules are requested Message-ID: <200102210213.f1L2Dcg14055@baby.int.thehousleys.net>
next in thread | raw e-mail | index | archive | help
>Number: 25241 >Category: bin >Synopsis: ipfw shouldn't show dynamics rules when specific rules are requested >Confidential: no >Severity: non-critical >Priority: low >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: change-request >Submitter-Id: current-users >Arrival-Date: Tue Feb 20 18:20:01 PST 2001 >Closed-Date: >Last-Modified: >Originator: James E. Housley >Release: FreeBSD 4.2-STABLE i386 >Organization: The Housleys dot Net >Environment: 4.2-STABLE >Description: When using ipfw in a stateful mode all the current dynamic rules are displayed even when specific rules are requested. The attached patch only displays the dynamic rules when no specific rules are requested. A better solution might be to bring "Display Dynamic" into a seperate function. Thus allowing the static and dynamic rules matching a requested rule number to be displayed. >How-To-Repeat: >Fix: --- ipfw.c.orig Fri Jan 12 11:32:32 2001 +++ ipfw.c Tue Feb 20 21:09:00 2001 @@ -718,6 +718,44 @@ show_ipfw(r, pcwidth, bcwidth); } + /* + * show dynamic rules + */ + if (num * sizeof (rules[0]) != nbytes ) { + struct ipfw_dyn_rule *d = + (struct ipfw_dyn_rule *)&rules[num] ; + struct in_addr a ; + struct protoent *pe; + + printf("## Dynamic rules:\n"); + for (;; d++) { + printf("%05d %qu %qu (T %d, # %d) ty %d", + (int)(d->chain), + d->pcnt, d->bcnt, + d->expire, + d->bucket, + d->type); + pe = getprotobynumber(d->id.proto); + if (pe) + printf(" %s,", pe->p_name); + else + printf(" %u,", d->id.proto); + a.s_addr = htonl(d->id.src_ip); + printf(" %s", inet_ntoa(a)); + printf(" %d", d->id.src_port); + switch (d->type) { + default: /* bidir, no mask */ + printf(" <->"); + break ; + } + a.s_addr = htonl(d->id.dst_ip); + printf(" %s", inet_ntoa(a)); + printf(" %d", d->id.dst_port); + printf("\n"); + if (d->next == NULL) + break ; + } + } } else { /* display specific rules requested on command line */ int exitval = EX_OK; @@ -754,44 +792,6 @@ if (exitval != EX_OK) exit(exitval); } - /* - * show dynamic rules - */ - if (num * sizeof (rules[0]) != nbytes ) { - struct ipfw_dyn_rule *d = - (struct ipfw_dyn_rule *)&rules[num] ; - struct in_addr a ; - struct protoent *pe; - - printf("## Dynamic rules:\n"); - for (;; d++) { - printf("%05d %qu %qu (T %d, # %d) ty %d", - (int)(d->chain), - d->pcnt, d->bcnt, - d->expire, - d->bucket, - d->type); - pe = getprotobynumber(d->id.proto); - if (pe) - printf(" %s,", pe->p_name); - else - printf(" %u,", d->id.proto); - a.s_addr = htonl(d->id.src_ip); - printf(" %s", inet_ntoa(a)); - printf(" %d", d->id.src_port); - switch (d->type) { - default: /* bidir, no mask */ - printf(" <->"); - break ; - } - a.s_addr = htonl(d->id.dst_ip); - printf(" %s", inet_ntoa(a)); - printf(" %d", d->id.dst_port); - printf("\n"); - if (d->next == NULL) - break ; - } - } free(data); } >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200102210213.f1L2Dcg14055>