]> git.ipfire.org Git - thirdparty/iproute2.git/commitdiff
json: make 0xhex handle u64
authorSabrina Dubroca <sd@queasysnail.net>
Fri, 12 Oct 2018 15:34:32 +0000 (17:34 +0200)
committerStephen Hemminger <stephen@networkplumber.org>
Mon, 15 Oct 2018 16:32:18 +0000 (09:32 -0700)
Stephen converted macsec's sci to use 0xhex, but 0xhex handles
unsigned int's, not 64 bits ints. Thus, the output of the "ip macsec
show" command is mangled, with half of the SCI replaced with 0s:

# ip macsec show
11: macsec0: [...]
    cipher suite: GCM-AES-128, using ICV length 16
    TXSC: 0000000001560001 on SA 0

# ip -d link show macsec0
11: macsec0@ens3: [...]
    link/ether 52:54:00:12:01:56 brd ff:ff:ff:ff:ff:ff promiscuity 0
    macsec sci 5254001201560001 [...]

where TXSC and sci should match.

Fixes: c0b904de6211 ("macsec: support JSON")
Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
include/json_print.h
lib/json_print.c

index 78a6c83fb516deb2426aed826aebc9d0a6b14dae..218da31a73fe876321b2a9aac7a5f741d3fb586d 100644 (file)
@@ -66,7 +66,7 @@ _PRINT_FUNC(uint, unsigned int);
 _PRINT_FUNC(u64, uint64_t);
 _PRINT_FUNC(hu, unsigned short);
 _PRINT_FUNC(hex, unsigned int);
-_PRINT_FUNC(0xhex, unsigned int);
+_PRINT_FUNC(0xhex, unsigned long long int);
 _PRINT_FUNC(luint, unsigned long int);
 _PRINT_FUNC(lluint, unsigned long long int);
 _PRINT_FUNC(float, double);
index eed109c56401c8db629dd5bb2893cbc74d4cc275..f7ef41c1570f2a72eacd213e278193036b3dc561 100644 (file)
@@ -172,12 +172,12 @@ void print_color_0xhex(enum output_type type,
                       enum color_attr color,
                       const char *key,
                       const char *fmt,
-                      unsigned int hex)
+                      unsigned long long hex)
 {
        if (_IS_JSON_CONTEXT(type)) {
                SPRINT_BUF(b1);
 
-               snprintf(b1, sizeof(b1), "%#x", hex);
+               snprintf(b1, sizeof(b1), "%#llx", hex);
                print_string(PRINT_JSON, key, NULL, b1);
        } else if (_IS_FP_CONTEXT(type)) {
                color_fprintf(stdout, color, fmt, hex);