Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 4 Mar 2010 16:55:32 +0000 (UTC)
From:      Luigi Rizzo <luigi@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r204717 - head/sbin/ipfw
Message-ID:  <201003041655.o24GtWI1032394@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: luigi
Date: Thu Mar  4 16:55:32 2010
New Revision: 204717
URL: http://svn.freebsd.org/changeset/base/204717

Log:
  fix handling of sets

Modified:
  head/sbin/ipfw/ipfw2.c

Modified: head/sbin/ipfw/ipfw2.c
==============================================================================
--- head/sbin/ipfw/ipfw2.c	Thu Mar  4 16:54:56 2010	(r204716)
+++ head/sbin/ipfw/ipfw2.c	Thu Mar  4 16:55:32 2010	(r204717)
@@ -1625,13 +1625,21 @@ ipfw_sets_handler(char *av[])
 	if (av[0] == NULL)
 		errx(EX_USAGE, "set needs command");
 	if (_substrcmp(*av, "show") == 0) {
-		void *data;
+		void *data = NULL;
 		char const *msg;
+		int nalloc;
 
-		nbytes = sizeof(struct ip_fw);
+		nalloc = nbytes = sizeof(struct ip_fw);
+		while (nbytes >= nalloc) {
+			if (data)
+				free(data);
+			nalloc = nalloc * 2 + 200;
+			nbytes = nalloc;
 		data = safe_calloc(1, nbytes);
 		if (do_cmd(IP_FW_GET, data, (uintptr_t)&nbytes) < 0)
 			err(EX_OSERR, "getsockopt(IP_FW_GET)");
+		}
+
 		bcopy(&((struct ip_fw *)data)->next_rule,
 			&set_disable, sizeof(set_disable));
 
@@ -1661,7 +1669,7 @@ ipfw_sets_handler(char *av[])
 		i = do_cmd(IP_FW_DEL, masks, sizeof(uint32_t));
 	} else if (_substrcmp(*av, "move") == 0) {
 		av++;
-		if (!av[0] && _substrcmp(*av, "rule") == 0) {
+		if (av[0] && _substrcmp(*av, "rule") == 0) {
 			cmd = 2;
 			av++;
 		} else
@@ -1685,7 +1693,7 @@ ipfw_sets_handler(char *av[])
 		av++;
 		masks[0] = masks[1] = 0;
 
-		while (!av[0]) {
+		while (av[0]) {
 			if (isdigit(**av)) {
 				i = atoi(*av);
 				if (i < 0 || i > RESVD_SET)



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003041655.o24GtWI1032394>