diff options
author | Phil Sutter <phil@nwl.cc> | 2018-08-02 17:05:25 +0200 |
---|---|---|
committer | Florian Westphal <fw@strlen.de> | 2018-08-04 14:58:55 +0200 |
commit | 83bc1890aa939108fd06b80f35139fedd5856cbc (patch) | |
tree | acaae238284afed1027e1100ec0895cfc07b720c /extensions/libarpt_mangle.c | |
parent | aaed1b68cba7fe78fca42b9fc774b3b6887eff51 (diff) |
arptables: Fix for trailing spaces in output
This changes mangle target to print whitespace before each option, not
afterwards. This fixes any cases of trailing or double whitespace in
arptables output.
While being at it, introduce ipaddr_to() helper in libarpt_mangle.c to
simplify arpmangle_print() a bit.
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Florian Westphal <fw@strlen.de>
Diffstat (limited to 'extensions/libarpt_mangle.c')
-rw-r--r-- | extensions/libarpt_mangle.c | 40 |
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"); } } |