Using hex values sounds reasonable. BR,
Christian Updated Patch: Subject: [PATCH] ip/link_vti*.c: Fix output for ikey/okey ikey and okey are normal u32 values. There's no reason to print them as IPv4/IPv6 addresses. Instead print them as hex values. Signed-off-by: Christian Langrock <christian.langr...@secunet.com> --- ip/link_vti.c | 10 ++++------ ip/link_vti6.c | 10 ++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/ip/link_vti.c b/ip/link_vti.c index d5242ac..f87623b 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 0x%x ", 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 0x%x ", 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])) { + fprintf(f, "okey %u ", ntohl(rta_getattr_u32(tb[IFLA_VTI_OKEY]))); } if (tb[IFLA_VTI_FWMARK] && rta_getattr_u32(tb[IFLA_VTI_FWMARK])) { -- 2.7.4 Am 08.08.2017 um 00:38 schrieb Stephen Hemminger: > On Mon, 7 Aug 2017 11:59:28 +0200 > Christian Langrock <christian.langr...@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.langr...@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? > > > > >
signature.asc
Description: OpenPGP digital signature