summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBart De Schuymer <bdschuym@pandora.be>2005-10-24 18:18:37 +0000
committerBart De Schuymer <bdschuym@pandora.be>2005-10-24 18:18:37 +0000
commitc267487e48d9c1527a8f0bac90d2f0327f80bf3e (patch)
tree8104698d8eeb4264b1b61359666c17387d188d4a
parent8586563c4c21b4966ed05894a4dfdf86161428cf (diff)
fix -D
-rw-r--r--userspace/ebtables2/libebtc.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/userspace/ebtables2/libebtc.c b/userspace/ebtables2/libebtc.c
index b558c9c..f4a0dd3 100644
--- a/userspace/ebtables2/libebtc.c
+++ b/userspace/ebtables2/libebtc.c
@@ -695,7 +695,7 @@ void ebt_delete_rule(struct ebt_u_replace *replace,
struct ebt_u_entry *new_entry, int begin, int end)
{
int i, nr_deletes;
- struct ebt_u_entry *u_e, *u_e2;
+ struct ebt_u_entry *u_e, *u_e2, *u_e3;
struct ebt_u_entries *entries = ebt_to_chain(replace);
if (check_and_change_rule_number(replace, new_entry, &begin, &end))
@@ -708,6 +708,7 @@ void ebt_delete_rule(struct ebt_u_replace *replace,
u_e = entries->entries->next;
for (i = 0; i < begin; i++)
u_e = u_e->next;
+ u_e3 = u_e->prev;
/* Remove the rules */
for (i = 0; i < nr_deletes; i++) {
u_e2 = u_e;
@@ -717,6 +718,8 @@ void ebt_delete_rule(struct ebt_u_replace *replace,
ebt_free_u_entry(u_e2);
free(u_e2);
}
+ u_e3->next = u_e;
+ u_e->prev = u_e3;
/* Update the counter_offset of chains behind this one */
for (i = replace->selected_chain+1; i < replace->num_chains; i++) {
if (!(entries = replace->chains[i]))