summaryrefslogtreecommitdiffstats
path: root/extensions/ebt_nat.c
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/ebt_nat.c')
-rw-r--r--extensions/ebt_nat.c48
1 files changed, 28 insertions, 20 deletions
diff --git a/extensions/ebt_nat.c b/extensions/ebt_nat.c
index f2e79ca..5906ac4 100644
--- a/extensions/ebt_nat.c
+++ b/extensions/ebt_nat.c
@@ -1,3 +1,11 @@
+/* ebt_nat
+ *
+ * Authors:
+ * Bart De Schuymer <bdschuym@pandora.be>
+ *
+ * June, 2002
+ */
+
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@@ -73,17 +81,16 @@ static int parse_s(int c, char **argv, int argc,
switch (c) {
case NAT_S:
- ebt_check_option(flags, OPT_SNAT);
+ ebt_check_option2(flags, OPT_SNAT);
to_source_supplied = 1;
if (!(addr = ether_aton(optarg)))
- ebt_print_error("Problem with specified --to-source "
- "mac");
+ ebt_print_error2("Problem with specified --to-source mac");
memcpy(natinfo->mac, addr, ETH_ALEN);
break;
case NAT_S_TARGET:
- ebt_check_option(flags, OPT_SNAT_TARGET);
+ ebt_check_option2(flags, OPT_SNAT_TARGET);
if (FILL_TARGET(optarg, natinfo->target))
- ebt_print_error("Illegal --snat-target target");
+ ebt_print_error2("Illegal --snat-target target");
break;
default:
return 0;
@@ -102,17 +109,16 @@ static int parse_d(int c, char **argv, int argc,
switch (c) {
case NAT_D:
- ebt_check_option(flags, OPT_DNAT);
+ ebt_check_option2(flags, OPT_DNAT);
to_dest_supplied = 1;
if (!(addr = ether_aton(optarg)))
- ebt_print_error("Problem with specified "
- "--to-destination mac");
+ ebt_print_error2("Problem with specified --to-destination mac");
memcpy(natinfo->mac, addr, ETH_ALEN);
break;
case NAT_D_TARGET:
- ebt_check_option(flags, OPT_DNAT_TARGET);
+ ebt_check_option2(flags, OPT_DNAT_TARGET);
if (FILL_TARGET(optarg, natinfo->target))
- ebt_print_error("Illegal --dnat-target target");
+ ebt_print_error2("Illegal --dnat-target target");
break;
default:
return 0;
@@ -126,13 +132,14 @@ static void final_check_s(const struct ebt_u_entry *entry,
{
struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data;
- if (BASE_CHAIN && natinfo->target == EBT_RETURN)
- ebt_print_error("--snat-target RETURN not allowed on base "
- "chain");
+ if (BASE_CHAIN && natinfo->target == EBT_RETURN) {
+ ebt_print_error("--snat-target RETURN not allowed on base chain");
+ return;
+ }
CLEAR_BASE_CHAIN_BIT;
- if ((hookmask & ~(1 << NF_BR_POST_ROUTING)) || strcmp(name, "nat"))
+ if ((hookmask & ~(1 << NF_BR_POST_ROUTING)) || strcmp(name, "nat")) {
ebt_print_error("Wrong chain for snat");
- if (time == 0 && to_source_supplied == 0)
+ } else if (time == 0 && to_source_supplied == 0)
ebt_print_error("No snat address supplied");
}
@@ -142,15 +149,16 @@ static void final_check_d(const struct ebt_u_entry *entry,
{
struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data;
- if (BASE_CHAIN && natinfo->target == EBT_RETURN)
- ebt_print_error("--dnat-target RETURN not allowed on base "
- "chain");
+ if (BASE_CHAIN && natinfo->target == EBT_RETURN) {
+ ebt_print_error("--dnat-target RETURN not allowed on base chain");
+ return;
+ }
CLEAR_BASE_CHAIN_BIT;
if (((hookmask & ~((1 << NF_BR_PRE_ROUTING) | (1 << NF_BR_LOCAL_OUT)))
|| strcmp(name, "nat")) &&
- ((hookmask & ~(1 << NF_BR_BROUTING)) || strcmp(name, "broute")))
+ ((hookmask & ~(1 << NF_BR_BROUTING)) || strcmp(name, "broute"))) {
ebt_print_error("Wrong chain for dnat");
- if (time == 0 && to_dest_supplied == 0)
+ } if (time == 0 && to_dest_supplied == 0)
ebt_print_error("No dnat address supplied");
}