summaryrefslogtreecommitdiffstats
path: root/contrib/ipfilter/lib/printnat.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/ipfilter/lib/printnat.c')
-rw-r--r--contrib/ipfilter/lib/printnat.c46
1 files changed, 14 insertions, 32 deletions
diff --git a/contrib/ipfilter/lib/printnat.c b/contrib/ipfilter/lib/printnat.c
index 09056b1..67b5a27 100644
--- a/contrib/ipfilter/lib/printnat.c
+++ b/contrib/ipfilter/lib/printnat.c
@@ -13,11 +13,9 @@
#if !defined(lint)
-static const char rcsid[] = "@(#)Id: printnat.c,v 1.22.2.8 2005/01/12 03:39:04 darrenr Exp";
+static const char rcsid[] = "@(#)$Id: printnat.c,v 1.22.2.11 2005/11/14 17:45:06 darrenr Exp $";
#endif
-static void printproto __P((ipnat_t *, struct protoent *));
-
/*
* Print out a NAT rule
*/
@@ -53,7 +51,7 @@ int opts;
printf(" %s", np->in_ifnames[0]);
if ((np->in_ifnames[1][0] != '\0') &&
(strncmp(np->in_ifnames[0], np->in_ifnames[1], LIFNAMSIZ) != 0)) {
- printf(",%s ", np->in_ifnames[1]);
+ printf(",%s", np->in_ifnames[1]);
}
putchar(' ');
@@ -102,13 +100,16 @@ int opts;
printf(" -> %s", inet_ntoa(np->in_in[0].in4));
if (np->in_flags & IPN_SPLIT)
printf(",%s", inet_ntoa(np->in_in[1].in4));
+ else if (np->in_inmsk == 0 && np->in_inip == 0)
+ printf("/0");
if (np->in_flags & IPN_TCPUDP) {
if ((np->in_flags & IPN_FIXEDDPORT) != 0)
printf(" port = %d", ntohs(np->in_pnext));
else
printf(" port %d", ntohs(np->in_pnext));
}
- printproto(np, pr);
+ putchar(' ');
+ printproto(pr, np->in_p, np);
if (np->in_flags & IPN_ROUNDR)
printf(" round-robin");
if (np->in_flags & IPN_FRAG)
@@ -164,10 +165,7 @@ int opts;
}
printf(" %.*s/", (int)sizeof(np->in_plabel),
np->in_plabel);
- if (pr != NULL)
- fputs(pr->p_name, stdout);
- else
- printf("%d", np->in_p);
+ printproto(pr, np->in_p, NULL);
} else if (np->in_redir == NAT_MAPBLK) {
if ((np->in_pmin == 0) &&
(np->in_flags & IPN_AUTOPORTMAP))
@@ -178,11 +176,11 @@ int opts;
printf("\n\tip modulous %d", np->in_pmax);
} else if (np->in_pmin || np->in_pmax) {
if (np->in_flags & IPN_ICMPQUERY) {
- printf(" icmpidmap");
+ printf(" icmpidmap ");
} else {
- printf(" portmap");
+ printf(" portmap ");
}
- printproto(np, pr);
+ printproto(pr, np->in_p, np);
if (np->in_flags & IPN_AUTOPORTMAP) {
printf(" auto");
if (opts & OPT_DEBUG)
@@ -194,8 +192,10 @@ int opts;
printf(" %d:%d", ntohs(np->in_pmin),
ntohs(np->in_pmax));
}
- } else if (np->in_flags & IPN_TCPUDP || np->in_p)
- printproto(np, pr);
+ } else if (np->in_flags & IPN_TCPUDP || np->in_p) {
+ putchar(' ');
+ printproto(pr, np->in_p, np);
+ }
if (np->in_flags & IPN_FRAG)
printf(" frag");
@@ -227,21 +227,3 @@ int opts;
np->in_tqehead[0], np->in_tqehead[1], np->in_comment);
}
}
-
-static void printproto(np, pr)
-ipnat_t *np;
-struct protoent *pr;
-{
- if ((np->in_flags & IPN_TCPUDP) == IPN_TCPUDP)
- printf(" tcp/udp");
- else if (np->in_flags & IPN_TCP)
- printf(" tcp");
- else if (np->in_flags & IPN_UDP)
- printf(" udp");
- else if (np->in_flags & IPN_ICMPQUERY)
- printf(" icmp");
- else if (pr != NULL)
- printf(" %s", pr->p_name);
- else
- printf(" %d", np->in_p);
-}
OpenPOWER on IntegriCloud