* [PATCH 1/3] iptables: Fix chain rename bug in libiptc.
@ 2009-03-23 12:55 Jesper Dangaard Brouer
2009-03-23 12:55 ` [PATCH 2/3] iptables: Fix whitespaces and typos Jesper Dangaard Brouer
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Jesper Dangaard Brouer @ 2009-03-23 12:55 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netfilter-devel
Chain renaming (TC_RENAME_CHAIN) can result in an unsorted
chain list. That breaks the requirement of the binary search
done in iptcc_bsearch_chain_index().
Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
---
libiptc/libiptc.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index 544a5b2..86cfab4 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -2404,8 +2404,15 @@ int TC_RENAME_CHAIN(const IPT_CHAINLABEL oldname,
return 0;
}
+ /* This only unlinks "c" from the list, thus no free(c) */
+ iptcc_chain_index_delete_chain(c, handle);
+
+ /* Change the name of the chain */
strncpy(c->name, newname, sizeof(IPT_CHAINLABEL));
-
+
+ /* Insert sorted into to list again */
+ iptc_insert_chain(handle, c);
+
set_changed(handle);
return 1;
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/3] iptables: Fix whitespaces and typos.
2009-03-23 12:55 [PATCH 1/3] iptables: Fix chain rename bug in libiptc Jesper Dangaard Brouer
@ 2009-03-23 12:55 ` Jesper Dangaard Brouer
2009-03-23 13:27 ` Patrick McHardy
2009-03-23 12:55 ` [PATCH 3/3] iptables: libiptc give credits to my self Jesper Dangaard Brouer
2009-03-23 13:26 ` [PATCH 1/3] iptables: Fix chain rename bug in libiptc Patrick McHardy
2 siblings, 1 reply; 7+ messages in thread
From: Jesper Dangaard Brouer @ 2009-03-23 12:55 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netfilter-devel
Cleanup whitespaces while going through the code.
Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
---
libiptc/libiptc.c | 82 +++++++++++++++++++++++++++--------------------------
1 files changed, 41 insertions(+), 41 deletions(-)
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index 86cfab4..59cbf55 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -9,7 +9,7 @@
*/
/* (C) 1999 Paul ``Rusty'' Russell - Placed under the GNU GPL (See
- * COPYING for details).
+ * COPYING for details).
* (C) 2000-2004 by the Netfilter Core Team <coreteam@netfilter.org>
*
* 2003-Jun-20: Harald Welte <laforge@netfilter.org>:
@@ -17,9 +17,9 @@
* 2003-Jun-23: Harald Welte <laforge@netfilter.org>:
* - performance optimization, sponsored by Astaro AG (http://www.astaro.com/)
* don't rebuild the chain cache after every operation, instead fix it
- * up after a ruleset change.
+ * up after a ruleset change.
* 2004-Aug-18: Harald Welte <laforge@netfilter.org>:
- * - futher performance work: total reimplementation of libiptc.
+ * - further performance work: total reimplementation of libiptc.
* - libiptc now has a real internal (linked-list) represntation of the
* ruleset and a parser/compiler from/to this internal representation
* - again sponsored by Astaro AG (http://www.astaro.com/)
@@ -130,7 +130,7 @@ STRUCT_TC_HANDLE
int changed; /* Have changes been made? */
struct list_head chains;
-
+
struct chain_head *chain_iterator_cur;
struct rule_head *rule_iterator_cur;
@@ -817,14 +817,14 @@ static int __iptcc_p_del_policy(struct xtc_handle *h, unsigned int num)
h->chain_iterator_cur->rules.prev;
/* save verdict */
- h->chain_iterator_cur->verdict =
+ h->chain_iterator_cur->verdict =
*(int *)GET_TARGET(pr->entry)->data;
/* save counter and counter_map information */
- h->chain_iterator_cur->counter_map.maptype =
+ h->chain_iterator_cur->counter_map.maptype =
COUNTER_MAP_NORMAL_MAP;
h->chain_iterator_cur->counter_map.mappos = num-1;
- memcpy(&h->chain_iterator_cur->counters, &pr->entry->counters,
+ memcpy(&h->chain_iterator_cur->counters, &pr->entry->counters,
sizeof(h->chain_iterator_cur->counters));
/* foot_offset points to verdict rule */
@@ -926,8 +926,8 @@ static void __iptcc_p_add_chain(struct xtc_handle *h, struct chain_head *c,
}
/* main parser function: add an entry from the blob to the cache */
-static int cache_add_entry(STRUCT_ENTRY *e,
- struct xtc_handle *h,
+static int cache_add_entry(STRUCT_ENTRY *e,
+ struct xtc_handle *h,
STRUCT_ENTRY **prev,
unsigned int *num)
{
@@ -951,9 +951,9 @@ static int cache_add_entry(STRUCT_ENTRY *e,
* target, or a hook entry point */
if (strcmp(GET_TARGET(e)->u.user.name, ERROR_TARGET) == 0) {
- struct chain_head *c =
+ struct chain_head *c =
iptcc_alloc_chain_head((const char *)GET_TARGET(e)->data, 0);
- DEBUGP_C("%u:%u:new userdefined chain %s: %p\n", *num, offset,
+ DEBUGP_C("%u:%u:new userdefined chain %s: %p\n", *num, offset,
(char *)c->name, c);
if (!c) {
errno = -ENOMEM;
@@ -965,9 +965,9 @@ static int cache_add_entry(STRUCT_ENTRY *e,
} else if ((builtin = iptcb_ent_is_hook_entry(e, h)) != 0) {
struct chain_head *c =
- iptcc_alloc_chain_head((char *)hooknames[builtin-1],
+ iptcc_alloc_chain_head((char *)hooknames[builtin-1],
builtin);
- DEBUGP_C("%u:%u new builtin chain: %p (rules=%p)\n",
+ DEBUGP_C("%u:%u new builtin chain: %p (rules=%p)\n",
*num, offset, c, &c->rules);
if (!c) {
errno = -ENOMEM;
@@ -985,7 +985,7 @@ static int cache_add_entry(STRUCT_ENTRY *e,
struct rule_head *r;
new_rule:
- if (!(r = iptcc_alloc_rule(h->chain_iterator_cur,
+ if (!(r = iptcc_alloc_rule(h->chain_iterator_cur,
e->next_offset))) {
errno = ENOMEM;
return -1;
@@ -1125,7 +1125,7 @@ static inline int iptcc_compile_rule (struct xtc_handle *h, STRUCT_REPLACE *repl
t = (STRUCT_STANDARD_TARGET *)GET_TARGET(r->entry);
t->verdict = r->offset + r->size;
}
-
+
/* copy entry from cache to blob */
memcpy((char *)repl->entries+r->offset, r->entry, r->size);
@@ -1147,11 +1147,11 @@ static int iptcc_compile_chain(struct xtc_handle *h, STRUCT_REPLACE *repl, struc
head->e.target_offset = sizeof(STRUCT_ENTRY);
head->e.next_offset = IPTCB_CHAIN_START_SIZE;
strcpy(head->name.t.u.user.name, ERROR_TARGET);
- head->name.t.u.target_size =
+ head->name.t.u.target_size =
ALIGN(sizeof(struct ipt_error_target));
strcpy(head->name.error, c->name);
} else {
- repl->hook_entry[c->hooknum-1] = c->head_offset;
+ repl->hook_entry[c->hooknum-1] = c->head_offset;
repl->underflow[c->hooknum-1] = c->foot_offset;
}
@@ -1191,7 +1191,7 @@ static int iptcc_compile_chain_offsets(struct xtc_handle *h, struct chain_head *
if (!iptcc_is_builtin(c)) {
/* Chain has header */
- *offset += sizeof(STRUCT_ENTRY)
+ *offset += sizeof(STRUCT_ENTRY)
+ ALIGN(sizeof(struct ipt_error_target));
(*num)++;
}
@@ -1204,7 +1204,7 @@ static int iptcc_compile_chain_offsets(struct xtc_handle *h, struct chain_head *
(*num)++;
}
- DEBUGP("%s; chain_foot %u, offset=%u, index=%u\n", c->name, *num,
+ DEBUGP("%s; chain_foot %u, offset=%u, index=%u\n", c->name, *num,
*offset, *num);
c->foot_offset = *offset;
c->foot_index = *num;
@@ -1255,7 +1255,7 @@ static int iptcc_compile_table(struct xtc_handle *h, STRUCT_REPLACE *repl)
error = (void *)repl->entries + repl->size - IPTCB_CHAIN_ERROR_SIZE;
error->entry.target_offset = sizeof(STRUCT_ENTRY);
error->entry.next_offset = IPTCB_CHAIN_ERROR_SIZE;
- error->target.t.u.user.target_size =
+ error->target.t.u.user.target_size =
ALIGN(sizeof(struct ipt_error_target));
strcpy((char *)&error->target.t.u.user.name, ERROR_TARGET);
strcpy((char *)&error->target.error, "ERROR");
@@ -1353,7 +1353,7 @@ retry:
#ifdef IPTC_DEBUG2
{
- int fd = open("/tmp/libiptc-so_get_entries.blob",
+ int fd = open("/tmp/libiptc-so_get_entries.blob",
O_CREAT|O_WRONLY);
if (fd >= 0) {
write(fd, h->entries, tmp);
@@ -1407,7 +1407,7 @@ print_match(const STRUCT_ENTRY_MATCH *m)
}
static int dump_entry(STRUCT_ENTRY *e, struct xtc_handle *const handle);
-
+
void
TC_DUMP_ENTRIES(struct xtc_handle *const handle)
{
@@ -1448,7 +1448,7 @@ static void iptcc_chain_iterator_advance(struct xtc_handle *handle)
if (c->list.next == &handle->chains)
handle->chain_iterator_cur = NULL;
else
- handle->chain_iterator_cur =
+ handle->chain_iterator_cur =
list_entry(c->list.next, struct chain_head, list);
}
@@ -1488,7 +1488,7 @@ TC_NEXT_CHAIN(struct xtc_handle *handle)
}
iptcc_chain_iterator_advance(handle);
-
+
DEBUGP(": returning `%s'\n", c->name);
return c->name;
}
@@ -1536,13 +1536,13 @@ TC_NEXT_RULE(const STRUCT_ENTRY *prev, struct xtc_handle *handle)
DEBUGP_C("returning NULL\n");
return NULL;
}
-
- r = list_entry(handle->rule_iterator_cur->list.next,
+
+ r = list_entry(handle->rule_iterator_cur->list.next,
struct rule_head, list);
iptc_fn = TC_NEXT_RULE;
- DEBUGP_C("next=%p, head=%p...", &r->list,
+ DEBUGP_C("next=%p, head=%p...", &r->list,
&handle->rule_iterator_cur->chain->rules);
if (&r->list == &handle->rule_iterator_cur->chain->rules) {
@@ -1571,7 +1571,7 @@ TC_NUM_RULES(const char *chain, struct xtc_handle *handle)
errno = ENOENT;
return (unsigned int)-1;
}
-
+
return c->num_rules;
}
@@ -1580,7 +1580,7 @@ TC_GET_RULE(const char *chain, unsigned int n, struct xtc_handle *handle)
{
struct chain_head *c;
struct rule_head *r;
-
+
iptc_fn = TC_GET_RULE;
CHECK(handle);
@@ -1657,7 +1657,7 @@ int
TC_BUILTIN(const char *chain, struct xtc_handle *const handle)
{
struct chain_head *c;
-
+
iptc_fn = TC_BUILTIN;
c = iptcc_find_label(chain, handle);
@@ -2018,7 +2018,7 @@ TC_DELETE_ENTRY(const IPT_CHAINLABEL chain,
} else {
/* iptcc_map_target increment target chain references
* since this is a fake rule only used for matching
- * the chain references count is decremented again.
+ * the chain references count is decremented again.
*/
if (r->type == IPTCC_R_JUMP
&& r->jump)
@@ -2039,7 +2039,7 @@ TC_DELETE_ENTRY(const IPT_CHAINLABEL chain,
* current iterator, move rule iterator back. next
* pointer will then point to real next node */
if (i == handle->rule_iterator_cur) {
- handle->rule_iterator_cur =
+ handle->rule_iterator_cur =
list_entry(handle->rule_iterator_cur->list.prev,
struct rule_head, list);
}
@@ -2090,7 +2090,7 @@ TC_DELETE_NUM_ENTRY(const IPT_CHAINLABEL chain,
* iterator, move rule iterator back. next pointer will then
* point to real next node */
if (r == handle->rule_iterator_cur) {
- handle->rule_iterator_cur =
+ handle->rule_iterator_cur =
list_entry(handle->rule_iterator_cur->list.prev,
struct rule_head, list);
}
@@ -2184,7 +2184,7 @@ TC_ZERO_COUNTER(const IPT_CHAINLABEL chain,
{
struct chain_head *c;
struct rule_head *r;
-
+
iptc_fn = TC_ZERO_COUNTER;
CHECK(handle);
@@ -2206,7 +2206,7 @@ TC_ZERO_COUNTER(const IPT_CHAINLABEL chain,
return 1;
}
-int
+int
TC_SET_COUNTER(const IPT_CHAINLABEL chain,
unsigned int rulenum,
STRUCT_COUNTERS *counters,
@@ -2602,7 +2602,7 @@ TC_COMMIT(struct xtc_handle *handle)
#ifdef IPTC_DEBUG2
{
- int fd = open("/tmp/libiptc-so_set_replace.blob",
+ int fd = open("/tmp/libiptc-so_set_replace.blob",
O_CREAT|O_WRONLY);
if (fd >= 0) {
write(fd, repl, sizeof(*repl) + repl->size);
@@ -2632,12 +2632,12 @@ TC_COMMIT(struct xtc_handle *handle)
break;
case COUNTER_MAP_NORMAL_MAP:
counters_normal_map(newcounters, repl,
- c->foot_index,
+ c->foot_index,
c->counter_map.mappos);
break;
case COUNTER_MAP_ZEROED:
counters_map_zeroed(newcounters, repl,
- c->foot_index,
+ c->foot_index,
c->counter_map.mappos,
&c->counters);
break;
@@ -2657,7 +2657,7 @@ TC_COMMIT(struct xtc_handle *handle)
case COUNTER_MAP_NORMAL_MAP:
counters_normal_map(newcounters, repl,
- r->index,
+ r->index,
r->counter_map.mappos);
break;
@@ -2678,7 +2678,7 @@ TC_COMMIT(struct xtc_handle *handle)
#ifdef IPTC_DEBUG2
{
- int fd = open("/tmp/libiptc-so_set_add_counters.blob",
+ int fd = open("/tmp/libiptc-so_set_add_counters.blob",
O_CREAT|O_WRONLY);
if (fd >= 0) {
write(fd, newcounters, counterlen);
@@ -2721,7 +2721,7 @@ TC_STRERROR(int err)
} table [] =
{ { TC_INIT, EPERM, "Permission denied (you must be root)" },
{ TC_INIT, EINVAL, "Module is wrong version" },
- { TC_INIT, ENOENT,
+ { TC_INIT, ENOENT,
"Table does not exist (do you need to insmod?)" },
{ TC_DELETE_CHAIN, ENOTEMPTY, "Chain is not empty" },
{ TC_DELETE_CHAIN, EINVAL, "Can't delete built-in chain" },
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/3] iptables: libiptc give credits to my self.
2009-03-23 12:55 [PATCH 1/3] iptables: Fix chain rename bug in libiptc Jesper Dangaard Brouer
2009-03-23 12:55 ` [PATCH 2/3] iptables: Fix whitespaces and typos Jesper Dangaard Brouer
@ 2009-03-23 12:55 ` Jesper Dangaard Brouer
2009-03-23 13:28 ` Patrick McHardy
2009-03-23 13:26 ` [PATCH 1/3] iptables: Fix chain rename bug in libiptc Patrick McHardy
2 siblings, 1 reply; 7+ messages in thread
From: Jesper Dangaard Brouer @ 2009-03-23 12:55 UTC (permalink / raw)
To: Patrick McHardy; +Cc: netfilter-devel
Add notes about my scalability work on the library libiptc.
This should make in more obvious who to complain to.
Signed-off-by: Jesper Dangaard Brouer <hawk@comx.dk>
---
libiptc/libiptc.c | 5 +++++
1 files changed, 5 insertions(+), 0 deletions(-)
diff --git a/libiptc/libiptc.c b/libiptc/libiptc.c
index 59cbf55..ac71667 100644
--- a/libiptc/libiptc.c
+++ b/libiptc/libiptc.c
@@ -23,6 +23,11 @@
* - libiptc now has a real internal (linked-list) represntation of the
* ruleset and a parser/compiler from/to this internal representation
* - again sponsored by Astaro AG (http://www.astaro.com/)
+ *
+ * 2008-Jan+Jul: Jesper Dangaard Brouer <hawk@comx.dk>
+ * - performance work: speedup chain list "name" searching.
+ * - performance work: speedup initial ruleset parsing.
+ * - sponsored by ComX Networks A/S (http://www.comx.dk/)
*/
#include <sys/types.h>
#include <sys/socket.h>
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] iptables: Fix chain rename bug in libiptc.
2009-03-23 12:55 [PATCH 1/3] iptables: Fix chain rename bug in libiptc Jesper Dangaard Brouer
2009-03-23 12:55 ` [PATCH 2/3] iptables: Fix whitespaces and typos Jesper Dangaard Brouer
2009-03-23 12:55 ` [PATCH 3/3] iptables: libiptc give credits to my self Jesper Dangaard Brouer
@ 2009-03-23 13:26 ` Patrick McHardy
2009-03-23 13:55 ` Jan Engelhardt
2 siblings, 1 reply; 7+ messages in thread
From: Patrick McHardy @ 2009-03-23 13:26 UTC (permalink / raw)
To: Jesper Dangaard Brouer; +Cc: netfilter-devel
Jesper Dangaard Brouer wrote:
> Chain renaming (TC_RENAME_CHAIN) can result in an unsorted
> chain list. That breaks the requirement of the binary search
> done in iptcc_bsearch_chain_index().
Applied, thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 2/3] iptables: Fix whitespaces and typos.
2009-03-23 12:55 ` [PATCH 2/3] iptables: Fix whitespaces and typos Jesper Dangaard Brouer
@ 2009-03-23 13:27 ` Patrick McHardy
0 siblings, 0 replies; 7+ messages in thread
From: Patrick McHardy @ 2009-03-23 13:27 UTC (permalink / raw)
To: Jesper Dangaard Brouer; +Cc: netfilter-devel
Jesper Dangaard Brouer wrote:
> Cleanup whitespaces while going through the code.
Applied, thanks.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 3/3] iptables: libiptc give credits to my self.
2009-03-23 12:55 ` [PATCH 3/3] iptables: libiptc give credits to my self Jesper Dangaard Brouer
@ 2009-03-23 13:28 ` Patrick McHardy
0 siblings, 0 replies; 7+ messages in thread
From: Patrick McHardy @ 2009-03-23 13:28 UTC (permalink / raw)
To: Jesper Dangaard Brouer; +Cc: netfilter-devel
Jesper Dangaard Brouer wrote:
> Add notes about my scalability work on the library libiptc.
> This should make in more obvious who to complain to.
Also applied, thanks.
Feel free to also add a CREDITS file similar to the kernel if you like.
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH 1/3] iptables: Fix chain rename bug in libiptc.
2009-03-23 13:26 ` [PATCH 1/3] iptables: Fix chain rename bug in libiptc Patrick McHardy
@ 2009-03-23 13:55 ` Jan Engelhardt
0 siblings, 0 replies; 7+ messages in thread
From: Jan Engelhardt @ 2009-03-23 13:55 UTC (permalink / raw)
To: Patrick McHardy; +Cc: Jesper Dangaard Brouer, netfilter-devel
On Monday 2009-03-23 14:26, Patrick McHardy wrote:
> Jesper Dangaard Brouer wrote:
>> Chain renaming (TC_RENAME_CHAIN) can result in an unsorted
>> chain list. That breaks the requirement of the binary search
>> done in iptcc_bsearch_chain_index().
>
> Applied, thanks.
I take it now we can release..
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2009-03-23 13:55 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-03-23 12:55 [PATCH 1/3] iptables: Fix chain rename bug in libiptc Jesper Dangaard Brouer
2009-03-23 12:55 ` [PATCH 2/3] iptables: Fix whitespaces and typos Jesper Dangaard Brouer
2009-03-23 13:27 ` Patrick McHardy
2009-03-23 12:55 ` [PATCH 3/3] iptables: libiptc give credits to my self Jesper Dangaard Brouer
2009-03-23 13:28 ` Patrick McHardy
2009-03-23 13:26 ` [PATCH 1/3] iptables: Fix chain rename bug in libiptc Patrick McHardy
2009-03-23 13:55 ` Jan Engelhardt
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.