From 6f4cad912082998bc2a44316af5550eaf260605a Mon Sep 17 00:00:00 2001 From: "philipp@redfish-solutions.com" Date: Thu, 19 Mar 2015 13:54:28 -0600 Subject: [PATCH] xfrm: Fix -o (oneline) being broken in xfrm and correct mark radix Don't insert newline in -o (oneline) mode; print mark as hex. Oneline mode is supposed to force all output to be on oneline and machine-parsable, but this isn't the case for "ip xfrm" as shown: % ip -o xfrm monitor ... src 0.0.0.0/0 dst 0.0.0.0/0 \ dir out priority 2051 ptype main \ mark -1879048191/0xffffffff tmpl src 203.0.130.10 dst 198.51.130.30\ proto esp reqid 16384 mode tunnel\ ... as that's 2 lines, not one. Also, the "mark" is shown in signed decimal, but the mask is in hex. This is confusing: let's use hex for both. Signed-off-by: Philip Prindeville --- ip/ipxfrm.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ip/ipxfrm.c b/ip/ipxfrm.c index 659fa6b6..95f91a53 100644 --- a/ip/ipxfrm.c +++ b/ip/ipxfrm.c @@ -689,7 +689,8 @@ void xfrm_xfrma_print(struct rtattr *tb[], __u16 family, if (tb[XFRMA_MARK]) { struct rtattr *rta = tb[XFRMA_MARK]; struct xfrm_mark *m = (struct xfrm_mark *) RTA_DATA(rta); - fprintf(fp, "\tmark %d/0x%x\n", m->v, m->m); + fprintf(fp, "\tmark %#x/%#x", m->v, m->m); + fprintf(fp, "%s", _SL_); } if (tb[XFRMA_ALG_AUTH] && !tb[XFRMA_ALG_AUTH_TRUNC]) {