aboutsummaryrefslogtreecommitdiff
path: root/sbin/ipfw/ipfw2.c
diff options
context:
space:
mode:
authorMax Laier <mlaier@FreeBSD.org>2006-06-02 05:17:17 +0000
committerMax Laier <mlaier@FreeBSD.org>2006-06-02 05:17:17 +0000
commit81bd0dc0bc5951a09ba011d1ac9d7ca1a3674eaf (patch)
tree7845b99c65305674b095dda8673eba9b73c31a2f /sbin/ipfw/ipfw2.c
parent35988e2d460c962393dddba80dec754c61b597d4 (diff)
downloadsrc-81bd0dc0bc5951a09ba011d1ac9d7ca1a3674eaf.tar.gz
src-81bd0dc0bc5951a09ba011d1ac9d7ca1a3674eaf.zip
Print dynamic rules for IPv6 as well.
PR: bin/98349 Submitted by: Mark Andrews MFC after: 2 weeks
Notes
Notes: svn path=/head/; revision=159160
Diffstat (limited to 'sbin/ipfw/ipfw2.c')
-rw-r--r--sbin/ipfw/ipfw2.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/sbin/ipfw/ipfw2.c b/sbin/ipfw/ipfw2.c
index 36c3282eb963..ddaf4ac8ae5e 100644
--- a/sbin/ipfw/ipfw2.c
+++ b/sbin/ipfw/ipfw2.c
@@ -1965,6 +1965,7 @@ show_dyn_ipfw(ipfw_dyn_rule *d, int pcwidth, int bcwidth)
struct protoent *pe;
struct in_addr a;
uint16_t rulenum;
+ char buf[INET6_ADDRSTRLEN];
if (!do_expired) {
if (!d->expire && !(d->dyn_type == O_LIMIT_PARENT))
@@ -1993,11 +1994,20 @@ show_dyn_ipfw(ipfw_dyn_rule *d, int pcwidth, int bcwidth)
else
printf(" proto %u", d->id.proto);
- a.s_addr = htonl(d->id.src_ip);
- printf(" %s %d", inet_ntoa(a), d->id.src_port);
-
- a.s_addr = htonl(d->id.dst_ip);
- printf(" <-> %s %d", inet_ntoa(a), d->id.dst_port);
+ if (d->id.addr_type == 4) {
+ a.s_addr = htonl(d->id.src_ip);
+ printf(" %s %d", inet_ntoa(a), d->id.src_port);
+
+ a.s_addr = htonl(d->id.dst_ip);
+ printf(" <-> %s %d", inet_ntoa(a), d->id.dst_port);
+ } else if (d->id.addr_type == 6) {
+ printf(" %s %d", inet_ntop(AF_INET6, &d->id.src_ip6, buf,
+ sizeof(buf)), d->id.src_port);
+ printf(" <-> %s %d", inet_ntop(AF_INET6, &d->id.dst_ip6, buf,
+ sizeof(buf)), d->id.dst_port);
+ } else
+ printf(" UNKNOWN <-> UNKNOWN\n");
+
printf("\n");
}