summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhil Sutter <phil@nwl.cc>2022-07-09 16:40:15 +0200
committerPhil Sutter <phil@nwl.cc>2022-11-11 19:13:10 +0100
commit586464aac30317c23a0e8508bb1fad8c27436fb2 (patch)
treeecb76e3b69039522f27ff60b6c72133ded75d52d
parent7dbd1b1dd95449b1ab8c35cd35fe904eb35db374 (diff)
extensions: DNAT: Use __DNAT_xlate for REDIRECT, too
Make the common function a bit more versatile and give it a more generic name, then use it for REDIRECT target, too. Signed-off-by: Phil Sutter <phil@nwl.cc>
-rw-r--r--extensions/libxt_DNAT.c33
1 files changed, 11 insertions, 22 deletions
diff --git a/extensions/libxt_DNAT.c b/extensions/libxt_DNAT.c
index af445187..9b940625 100644
--- a/extensions/libxt_DNAT.c
+++ b/extensions/libxt_DNAT.c
@@ -338,7 +338,8 @@ static void DNAT_save(const void *ip, const struct xt_entry_target *target)
}
static int
-__DNAT_xlate(struct xt_xlate *xl, const struct nf_nat_range2 *r, int family)
+__NAT_xlate(struct xt_xlate *xl, const struct nf_nat_range2 *r,
+ int family, const char *tgt)
{
char *range_str = sprint_range(r, family);
const char *sep = " ";
@@ -347,7 +348,7 @@ __DNAT_xlate(struct xt_xlate *xl, const struct nf_nat_range2 *r, int family)
if (r->flags & NF_NAT_RANGE_PROTO_OFFSET)
return 0;
- xt_xlate_add(xl, "dnat");
+ xt_xlate_add(xl, tgt);
if (strlen(range_str))
xt_xlate_add(xl, " to %s", range_str);
if (r->flags & NF_NAT_RANGE_PROTO_RANDOM) {
@@ -367,7 +368,7 @@ static int DNAT_xlate(struct xt_xlate *xl,
struct nf_nat_range2 range =
RANGE2_INIT_FROM_IPV4_MRC(params->target->data);
- return __DNAT_xlate(xl, &range, AF_INET);
+ return __NAT_xlate(xl, &range, AF_INET, "dnat");
}
static void DNAT_parse_v2(struct xt_option_call *cb)
@@ -391,7 +392,8 @@ static void DNAT_save_v2(const void *ip, const struct xt_entry_target *target)
static int DNAT_xlate_v2(struct xt_xlate *xl,
const struct xt_xlate_tg_params *params)
{
- return __DNAT_xlate(xl, (const void *)params->target->data, AF_INET);
+ return __NAT_xlate(xl, (const void *)params->target->data,
+ AF_INET, "dnat");
}
static void DNAT_parse6(struct xt_option_call *cb)
@@ -438,7 +440,7 @@ static int DNAT_xlate6(struct xt_xlate *xl,
memcpy(&range, (const void *)params->target->data,
sizeof(struct nf_nat_range));
- return __DNAT_xlate(xl, &range, AF_INET6);
+ return __NAT_xlate(xl, &range, AF_INET6, "dnat");
}
static void DNAT_parse6_v2(struct xt_option_call *cb)
@@ -462,21 +464,8 @@ static void DNAT_save6_v2(const void *ip, const struct xt_entry_target *target)
static int DNAT_xlate6_v2(struct xt_xlate *xl,
const struct xt_xlate_tg_params *params)
{
- return __DNAT_xlate(xl, (const void *)params->target->data, AF_INET6);
-}
-
-static int __REDIRECT_xlate(struct xt_xlate *xl,
- const struct nf_nat_range2 *range)
-{
- char *range_str = sprint_range(range, AF_INET);
-
- xt_xlate_add(xl, "redirect");
- if (strlen(range_str))
- xt_xlate_add(xl, " to %s", range_str);
- if (range->flags & NF_NAT_RANGE_PROTO_RANDOM)
- xt_xlate_add(xl, " random");
-
- return 1;
+ return __NAT_xlate(xl, (const void *)params->target->data,
+ AF_INET6, "dnat");
}
static void REDIRECT_print(const void *ip, const struct xt_entry_target *target,
@@ -500,7 +489,7 @@ static int REDIRECT_xlate(struct xt_xlate *xl,
struct nf_nat_range2 range =
RANGE2_INIT_FROM_IPV4_MRC(params->target->data);
- return __REDIRECT_xlate(xl, &range);
+ return __NAT_xlate(xl, &range, AF_INET, "redirect");
}
static void REDIRECT_print6(const void *ip, const struct xt_entry_target *target,
@@ -527,7 +516,7 @@ static int REDIRECT_xlate6(struct xt_xlate *xl,
memcpy(&range, (const void *)params->target->data,
sizeof(struct nf_nat_range));
- return __REDIRECT_xlate(xl, &range);
+ return __NAT_xlate(xl, &range, AF_INET6, "redirect");
}
static struct xtables_target dnat_tg_reg[] = {