summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ebtables.c4
-rw-r--r--extensions/ebt_nat.c8
-rw-r--r--extensions/ebt_redirect.c2
3 files changed, 8 insertions, 6 deletions
diff --git a/ebtables.c b/ebtables.c
index 103d1db..d4c6a6b 100644
--- a/ebtables.c
+++ b/ebtables.c
@@ -653,7 +653,7 @@ enddst:
w_l = w_l->next;
}
- printf("-j ");
+ printf("-j %s ", hlp->t->u.name);
t = find_target(hlp->t->u.name);
if (!t)
print_bug("Target not found");
@@ -1969,6 +1969,8 @@ int main(int argc, char *argv[])
}
}
+ if ( !table && !(table = find_table(replace.name)) )
+ print_error("Bad table name");
// database stuff before ebtables stuff
if (replace.command == 'b')
allowdb(allowbc);
diff --git a/extensions/ebt_nat.c b/extensions/ebt_nat.c
index 06414cf..fe7cd1a 100644
--- a/extensions/ebt_nat.c
+++ b/extensions/ebt_nat.c
@@ -88,7 +88,7 @@ static int parse_s(int c, char **argv, int argc,
check_option(flags, OPT_SNAT_TARGET);
for (i = 0; i < NUM_STANDARD_TARGETS; i++)
if (!strcmp(optarg, standard_targets[i])) {
- natinfo->target = i;
+ natinfo->target = -i - 1;
break;
}
if (i == NUM_STANDARD_TARGETS)
@@ -123,7 +123,7 @@ static int parse_d(int c, char **argv, int argc,
check_option(flags, OPT_DNAT_TARGET);
for (i = 0; i < NUM_STANDARD_TARGETS; i++)
if (!strcmp(optarg, standard_targets[i])) {
- natinfo->target = i;
+ natinfo->target = -i - 1;
break;
}
if (i == NUM_STANDARD_TARGETS)
@@ -162,7 +162,7 @@ static void print_s(const struct ebt_u_entry *entry,
printf("--to-src ");
printf("%s", ether_ntoa((struct ether_addr *)natinfo->mac));
- printf(" --snat-target %s", standard_targets[natinfo->target]);
+ printf(" --snat-target %s", standard_targets[-natinfo->target - 1]);
}
static void print_d(const struct ebt_u_entry *entry,
@@ -172,7 +172,7 @@ static void print_d(const struct ebt_u_entry *entry,
printf("--to-dst ");
printf("%s", ether_ntoa((struct ether_addr *)natinfo->mac));
- printf(" --dnat-target %s", standard_targets[natinfo->target]);
+ printf(" --dnat-target %s", standard_targets[-natinfo->target - 1]);
}
static int compare(const struct ebt_entry_target *t1,
diff --git a/extensions/ebt_redirect.c b/extensions/ebt_redirect.c
index 1fc7fd8..5d329e7 100644
--- a/extensions/ebt_redirect.c
+++ b/extensions/ebt_redirect.c
@@ -46,7 +46,7 @@ static int parse(int c, char **argv, int argc,
check_option(flags, OPT_REDIRECT_TARGET);
for (i = 0; i < NUM_STANDARD_TARGETS; i++)
if (!strcmp(optarg, standard_targets[i])) {
- redirectinfo->target = i;
+ redirectinfo->target = -i - 1;
break;
}
if (i == NUM_STANDARD_TARGETS)