Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 25 Feb 2010 20:54:54 +0000 (UTC)
From:      Luigi Rizzo <luigi@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-user@freebsd.org
Subject:   svn commit: r204331 - user/luigi/ipfw3-head/sbin/ipfw
Message-ID:  <201002252054.o1PKssYK010331@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: luigi
Date: Thu Feb 25 20:54:54 2010
New Revision: 204331
URL: http://svn.freebsd.org/changeset/base/204331

Log:
  implement 'ipfw sysctl ...'

Modified:
  user/luigi/ipfw3-head/sbin/ipfw/main.c

Modified: user/luigi/ipfw3-head/sbin/ipfw/main.c
==============================================================================
--- user/luigi/ipfw3-head/sbin/ipfw/main.c	Thu Feb 25 20:54:14 2010	(r204330)
+++ user/luigi/ipfw3-head/sbin/ipfw/main.c	Thu Feb 25 20:54:54 2010	(r204331)
@@ -230,15 +230,29 @@ ipfw_main(int oldac, char **oldav)
 		co.do_force = !isatty(STDIN_FILENO);
 
 #ifdef EMULATE_SYSCTL /* sysctl emulation */
-	if ( ac == 3 && !strcmp(av[1], "sysctl")) {
-		int err = 0;
-		if (index(av[2], '=') == NULL) {
-			sysctl_w32(SYSCTLGET, NULL, NULL, 0);
+	if ( ac >= 2 && !strcmp(av[1], "sysctl")) {
+		char *s;
+		int i;
+
+		if (ac != 3) {
+			printf(	"sysctl emulation usage:\n"
+				"	ipfw sysctl name[=value]\n"
+				"	ipfw sysctl -a\n");
+			return 0;
+		}
+		s = index(av[2], '=')) {
+		if (s == NULL) {
+			s = !strcmp(av[2], "-a") ? NULL : av[2];
+			sysctlbyname(s, NULL, NULL, NULL, 0);
 		} else {	/* ipfw sysctl x.y.z=value */
 			/* assume an INT value, will extend later */
-			int i;
-			i = strtol(oldav[4], NULL, 10);
-			sysctl_w32(SYSCTLSET, oldav[2], &i, sizeof(int));
+			if (s[1] == '\0') {
+				printf("ipfw sysctl: missing value\n\n");
+				return 0;
+			}
+			*s = '\0';
+			i = strtol(s+1, NULL, 0);
+			sysctlbyname(av[2], NULL, NULL, &i, sizeof(int));
 		}
 		return 0;
 	}



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