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@xxxxxx> --- Changes since v1: - Folded with previous patch adding whitespace after target name (which this one removed again). --- extensions/libarpt_mangle.c | 40 +++++++++++++++---------------------- 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/extensions/libarpt_mangle.c b/extensions/libarpt_mangle.c index 0d1f140ac28b5..547f5b618252c 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"); } } -- 2.18.0 -- To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html