summaryrefslogtreecommitdiffstats
path: root/extensions
diff options
context:
space:
mode:
Diffstat (limited to 'extensions')
-rw-r--r--extensions/libarpt_mangle.c40
1 files changed, 16 insertions, 24 deletions
diff --git a/extensions/libarpt_mangle.c b/extensions/libarpt_mangle.c
index 0d1f140a..547f5b61 100644
--- a/extensions/libarpt_mangle.c
+++ b/extensions/libarpt_mangle.c
@@ -139,47 +139,39 @@ static void print_mac(const unsigned char *mac, int l)
(j==l-1) ? "" : ":");
}
+static const char *ipaddr_to(const struct in_addr *addrp, int numeric)
+{
+ if (numeric)
+ return xtables_ipaddr_to_numeric(addrp);
+ else
+ return xtables_ipaddr_to_anyname(addrp);
+}
+
static void
arpmangle_print(const void *ip, const struct xt_entry_target *target,
int numeric)
{
struct arpt_mangle *m = (struct arpt_mangle *)(target->data);
- char buf[100];
if (m->flags & ARPT_MANGLE_SIP) {
- if (numeric)
- sprintf(buf, "%s",
- xtables_ipaddr_to_numeric(&(m->u_s.src_ip)));
- else
- sprintf(buf, "%s",
- xtables_ipaddr_to_anyname(&(m->u_s.src_ip)));
- printf("--mangle-ip-s %s ", buf);
+ printf(" --mangle-ip-s %s",
+ ipaddr_to(&(m->u_s.src_ip), numeric));
}
if (m->flags & ARPT_MANGLE_SDEV) {
- printf("--mangle-mac-s ");
+ printf(" --mangle-mac-s ");
print_mac((unsigned char *)m->src_devaddr, 6);
- printf(" ");
}
if (m->flags & ARPT_MANGLE_TIP) {
- if (numeric)
- sprintf(buf, "%s",
- xtables_ipaddr_to_numeric(&(m->u_t.tgt_ip)));
- else
- sprintf(buf, "%s",
- xtables_ipaddr_to_anyname(&(m->u_t.tgt_ip)));
- printf("--mangle-ip-d %s ", buf);
+ printf(" --mangle-ip-d %s",
+ ipaddr_to(&(m->u_t.tgt_ip), numeric));
}
if (m->flags & ARPT_MANGLE_TDEV) {
- printf("--mangle-mac-d ");
+ printf(" --mangle-mac-d ");
print_mac((unsigned char *)m->tgt_devaddr, 6);
- printf(" ");
}
if (m->target != NF_ACCEPT) {
- printf("--mangle-target ");
- if (m->target == NF_DROP)
- printf("DROP ");
- else
- printf("CONTINUE ");
+ printf(" --mangle-target %s",
+ m->target == NF_DROP ? "DROP" : "CONTINUE");
}
}