diff mbox

ip/link_vti*.c: Fix output for ikey/okey

Message ID bf2d09ad-28b8-c64c-dd60-4fb288259e3e@secunet.com
State Superseded, archived
Delegated to: stephen hemminger
Headers show

Commit Message

Christian Langrock Aug. 7, 2017, 9:59 a.m. UTC
ikey and okey are normal u32 values. There's no reason to print them as
IPv4/IPv6 addresses.

Signed-off-by: Christian Langrock <christian.langrock@secunet.com>
---
 ip/link_vti.c  | 10 ++++------
 ip/link_vti6.c | 10 ++++------
 2 files changed, 8 insertions(+), 12 deletions(-)

+               fprintf(f, "okey %u ",
ntohl(rta_getattr_u32(tb[IFLA_VTI_OKEY])));
        }
 
        if (tb[IFLA_VTI_FWMARK] && rta_getattr_u32(tb[IFLA_VTI_FWMARK])) {

Comments

Stephen Hemminger Aug. 7, 2017, 10:38 p.m. UTC | #1
On Mon, 7 Aug 2017 11:59:28 +0200
Christian Langrock <christian.langrock@secunet.com> wrote:

> ikey and okey are normal u32 values. There's no reason to print them as
> IPv4/IPv6 addresses.
> 
> Signed-off-by: Christian Langrock <christian.langrock@secunet.com>

Changing output format breaks scripts that parse output.
But on the other hand, the VTI code breaks the assumption that ip command
output should be the same as input.

More likely the original output format was done to match Cisco output.


Why not print in hex like fwmark?
diff mbox

Patch

diff --git a/ip/link_vti.c b/ip/link_vti.c
index d5242ac..a694ec4 100644
--- a/ip/link_vti.c
+++ b/ip/link_vti.c
@@ -244,14 +244,12 @@  static void vti_print_opt(struct link_util *lu,
FILE *f, struct rtattr *tb[])
                        fprintf(f, "dev %u ", link);
        }
 
-       if (tb[IFLA_VTI_IKEY]) {
-               inet_ntop(AF_INET, RTA_DATA(tb[IFLA_VTI_IKEY]), s2,
sizeof(s2));
-               fprintf(f, "ikey %s ", s2);
+       if (tb[IFLA_VTI_IKEY] && rta_getattr_u32(tb[IFLA_VTI_IKEY])) {
+               fprintf(f, "ikey %u ",
ntohl(rta_getattr_u32(tb[IFLA_VTI_IKEY])));
        }
 
-       if (tb[IFLA_VTI_OKEY]) {
-               inet_ntop(AF_INET, RTA_DATA(tb[IFLA_VTI_OKEY]), s2,
sizeof(s2));
-               fprintf(f, "okey %s ", s2);
+       if (tb[IFLA_VTI_OKEY] && rta_getattr_u32(tb[IFLA_VTI_OKEY])) {
+               fprintf(f, "okey %u ",
ntohl(rta_getattr_u32(tb[IFLA_VTI_OKEY])));
        }
 
        if (tb[IFLA_VTI_FWMARK] && rta_getattr_u32(tb[IFLA_VTI_FWMARK])) {
diff --git a/ip/link_vti6.c b/ip/link_vti6.c
index 220b7df..6ae87dd 100644
--- a/ip/link_vti6.c
+++ b/ip/link_vti6.c
@@ -247,14 +247,12 @@  static void vti6_print_opt(struct link_util *lu,
FILE *f, struct rtattr *tb[])
                        fprintf(f, "dev %u ", link);
        }
 
-       if (tb[IFLA_VTI_IKEY]) {
-               inet_ntop(AF_INET, RTA_DATA(tb[IFLA_VTI_IKEY]), s2,
sizeof(s2));
-               fprintf(f, "ikey %s ", s2);
+       if (tb[IFLA_VTI_IKEY] && rta_getattr_u32(tb[IFLA_VTI_IKEY])) {
+               fprintf(f, "ikey %u ",
ntohl(rta_getattr_u32(tb[IFLA_VTI_IKEY])));
        }
 
-       if (tb[IFLA_VTI_OKEY]) {
-               inet_ntop(AF_INET, RTA_DATA(tb[IFLA_VTI_OKEY]), s2,
sizeof(s2));
-               fprintf(f, "okey %s ", s2);
+       if (tb[IFLA_VTI_OKEY] && rta_getattr_u32(tb[IFLA_VTI_OKEY])) {