[iptables PATCH v2 18/27] arptables: Fix for trailing spaces in output

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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



[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux