svn commit: r204331 - user/luigi/ipfw3-head/sbin/ipfw
Luigi Rizzo
luigi at FreeBSD.org
Thu Feb 25 20:54:54 UTC 2010
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;
}
More information about the svn-src-user
mailing list