svn commit: r183889 - head/sbin/ipfw

Maxim Konovalov maxim at FreeBSD.org
Tue Oct 14 17:53:27 UTC 2008


Author: maxim
Date: Tue Oct 14 17:53:26 2008
New Revision: 183889
URL: http://svn.freebsd.org/changeset/base/183889

Log:
  o Do nothing in show_nat() for a test mode (-n).  This prevents
  show_nat() from endless loop and makes work ipfw -n nat <...>.
  
  PR:		bin/128064
  Submitted by:	sem
  MFC after:	1 month

Modified:
  head/sbin/ipfw/ipfw2.c

Modified: head/sbin/ipfw/ipfw2.c
==============================================================================
--- head/sbin/ipfw/ipfw2.c	Tue Oct 14 17:48:36 2008	(r183888)
+++ head/sbin/ipfw/ipfw2.c	Tue Oct 14 17:53:26 2008	(r183889)
@@ -3856,9 +3856,6 @@ nospace:
 }
 
 static void
-show_nat(int ac, char **av);
-
-static void
 print_nat_config(char *buf) {
 	struct cfg_nat *n;
 	int i, cnt, flag, off;
@@ -4066,11 +4063,6 @@ config_nat(int ac, char **av)
 	i = do_cmd(IP_FW_NAT_CFG, buf, off);
 	if (i)
 		err(1, "setsockopt(%s)", "IP_FW_NAT_CFG");
-
-	/* After every modification, we show the resultant rule. */
-	int _ac = 3;
-	char *_av[] = {"show", "config", id};
-	show_nat(_ac, _av);
 }
 
 static void
@@ -6035,6 +6027,9 @@ show_nat(int ac, char **av)
 	lrule = IPFW_DEFAULT_RULE; /* max ipfw rule number */
 	ac--; av++;
 
+	if (test_only)
+		return;
+
 	/* Parse parameters. */
 	for (cmd = IP_FW_NAT_GET_LOG, do_cfg = 0; ac != 0; ac--, av++) {
 		if (!strncmp(av[0], "config", strlen(av[0]))) {
@@ -6059,6 +6054,7 @@ show_nat(int ac, char **av)
 		if (do_cmd(cmd, data, (uintptr_t)&nbytes) < 0)
 			err(EX_OSERR, "getsockopt(IP_FW_GET_%s)",
 			    (cmd == IP_FW_NAT_GET_LOG) ? "LOG" : "CONFIG");
+		printf("nbytes %b\n", nbytes);
 	}
 	if (nbytes == 0)
 		exit(0);


More information about the svn-src-all mailing list