summaryrefslogtreecommitdiffstats
path: root/userspace
diff options
context:
space:
mode:
authorBart De Schuymer <bdschuym@pandora.be>2005-09-28 19:36:17 +0000
committerBart De Schuymer <bdschuym@pandora.be>2005-09-28 19:36:17 +0000
commit8e9ebd32fc1986b892ffb59968b90b7b97438b2b (patch)
treebc2031470cc333ecb39fa19f10a979b0d383943b /userspace
parent47c3575d83208cd44feb850da19cf47499ef765f (diff)
cleanup
Diffstat (limited to 'userspace')
-rw-r--r--userspace/ebtables2/communication.c2
-rw-r--r--userspace/ebtables2/ebtables.c7
-rw-r--r--userspace/ebtables2/ebtablesd.c25
-rw-r--r--userspace/ebtables2/ebtablesu.c3
-rw-r--r--userspace/ebtables2/include/ebtables_u.h2
-rw-r--r--userspace/ebtables2/libebtc.c4
6 files changed, 23 insertions, 20 deletions
diff --git a/userspace/ebtables2/communication.c b/userspace/ebtables2/communication.c
index 33aa98d..f9f173b 100644
--- a/userspace/ebtables2/communication.c
+++ b/userspace/ebtables2/communication.c
@@ -297,7 +297,7 @@ close_file:
/* Gets executed after ebt_deliver_table. Delivers the counters to the kernel
* and resets the counterchanges to CNT_NORM */
-void ebt_deliver_counters(struct ebt_u_replace *u_repl, int exec_style)
+void ebt_deliver_counters(struct ebt_u_replace *u_repl)
{
struct ebt_counter *old, *new, *newcounters;
socklen_t optlen;
diff --git a/userspace/ebtables2/ebtables.c b/userspace/ebtables2/ebtables.c
index 05c30c4..855b4fc 100644
--- a/userspace/ebtables2/ebtables.c
+++ b/userspace/ebtables2/ebtables.c
@@ -1008,13 +1008,10 @@ big_iface_length:
replace->flags |= OPT_COMMAND;
{
char *tmp = replace->filename;
- int init = 1;
- if (c == 10)
- init = 0;
/* Get the kernel table */
replace->filename = NULL;
- ebt_get_kernel_table(replace, init);
+ ebt_get_kernel_table(replace, c == 10 ? 0 : 1);
replace->filename = tmp;
}
break;
@@ -1208,7 +1205,7 @@ delete_the_rule:
ebt_deliver_table(replace);
if (replace->nentries)
- ebt_deliver_counters(replace, EXEC_STYLE_PRG);
+ ebt_deliver_counters(replace);
}
return 0;
}
diff --git a/userspace/ebtables2/ebtablesd.c b/userspace/ebtables2/ebtablesd.c
index 59bbe1c..062a2d6 100644
--- a/userspace/ebtables2/ebtablesd.c
+++ b/userspace/ebtables2/ebtablesd.c
@@ -52,7 +52,7 @@ int main(int argc_, char *argv_[])
char *argv[EBTD_ARGC_MAX], *args[4], name[] = "mkdir",
mkdir_option[] = "-p", mkdir_dir[] = EBTD_PIPE_DIR,
cmdline[EBTD_CMDLINE_MAXLN];
- int readfd, base = 0, offset = 0, n = 0, ret = 0;
+ int readfd, base = 0, offset = 0, n = 0, ret = 0, quotemode = 0;
/* Make sure the pipe directory exists */
args[0] = name;
@@ -104,15 +104,16 @@ int main(int argc_, char *argv_[])
continue;
ntot += offset;
continue_read:
- /* Change all ' ' into '\0'. This implies that the user is not
- * allowed to use spaces (that don't distinguish options or
- * commands) in her rules. This comes down to not allowing spaces
- * in options like the string of --ulog-prefix (use '_' instead).
- */
+ /* Put '\0' between arguments. */
for (; offset < ntot; n++, offset++) {
- if (cmdline[offset] == ' ')
+ if (cmdline[offset] == '\"') {
+ quotemode ^= 1;
cmdline[offset] = '\0';
- if (cmdline[offset] == '\n') {
+ } else if (!quotemode && cmdline[offset] == ' ') {
+ cmdline[offset] = '\0';
+ } else if (cmdline[offset] == '\n') {
+ if (quotemode)
+ ebt_print_error("ebtablesd: wrong number of \" delimiters");
cmdline[offset] = '\0';
break;
}
@@ -145,6 +146,10 @@ continue_read:
n2 = 0;
argc = 0;
while (n2 < n && argc < EBTD_ARGC_MAX) {
+ if (*(cmdline + base + n2) == '\0') {
+ n2++;
+ continue;
+ }
argv[argc++] = cmdline + base + n2;
n2 += strlen(cmdline + base + n2) + 1;
}
@@ -303,7 +308,7 @@ continue_read:
replace[i].num_counters = 0;
ebt_deliver_table(&replace[i]);
if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL)
- ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON);
+ ebt_deliver_counters(&replace[i]);
goto write_msg;
} else if (!strcmp(argv[1], "fcommit")) {
if (argc != 4) {
@@ -333,7 +338,7 @@ continue_read:
strcpy(replace[i].filename, argv[3]);
ebt_deliver_table(&replace[i]);
if (ebt_errormsg[0] == '\0' && open_method[i] == OPEN_METHOD_KERNEL)
- ebt_deliver_counters(&replace[i], EXEC_STYLE_DAEMON);
+ ebt_deliver_counters(&replace[i]);
free(replace[i].filename);
replace[i].filename = NULL;
goto write_msg;
diff --git a/userspace/ebtables2/ebtablesu.c b/userspace/ebtables2/ebtablesu.c
index 1fed0c1..3cee145 100644
--- a/userspace/ebtables2/ebtablesu.c
+++ b/userspace/ebtables2/ebtablesu.c
@@ -76,7 +76,8 @@ int main(int argc, char *argv[])
pos = arguments;
for (i = 0; i < argc; i++) {
strcpy(pos, argv[i]);
- pos += strlen(argv[i]) + 1;
+ pos += strlen(argv[i]);
+ *(pos++) = ' ';
}
*(pos-1) = '\n';
diff --git a/userspace/ebtables2/include/ebtables_u.h b/userspace/ebtables2/include/ebtables_u.h
index e63cc45..b725625 100644
--- a/userspace/ebtables2/include/ebtables_u.h
+++ b/userspace/ebtables2/include/ebtables_u.h
@@ -276,7 +276,7 @@ void __ebt_print_error(char *format, ...);
/* communication.c */
int ebt_get_table(struct ebt_u_replace *repl, int init);
-void ebt_deliver_counters(struct ebt_u_replace *repl, int exec_style);
+void ebt_deliver_counters(struct ebt_u_replace *repl);
void ebt_deliver_table(struct ebt_u_replace *repl);
/* useful_functions.c */
diff --git a/userspace/ebtables2/libebtc.c b/userspace/ebtables2/libebtc.c
index 2feefe9..af95694 100644
--- a/userspace/ebtables2/libebtc.c
+++ b/userspace/ebtables2/libebtc.c
@@ -1272,8 +1272,8 @@ void __ebt_print_error(char *format, ...)
vsnprintf(ebt_errormsg, ERRORMSG_MAXLEN, format, l);
va_end(l);
} else {
- vprintf(format, l);
- printf(".\n");
+ vfprintf(stderr, format, l);
+ fprintf(stderr, ".\n");
va_end(l);
exit (-1);
}