74 lines
2.4 KiB
Diff
74 lines
2.4 KiB
Diff
|
From 9822fef7a13eaec70be8e86c23bdb71569835bd0 Mon Sep 17 00:00:00 2001
|
||
|
From: Phil Sutter <psutter@redhat.com>
|
||
|
Date: Thu, 18 Oct 2018 12:49:51 +0200
|
||
|
Subject: [PATCH] json: make 0xhex handle u64
|
||
|
|
||
|
Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=1628428
|
||
|
Upstream Status: iproute2.git commit 45ec4771d40cb
|
||
|
|
||
|
commit 45ec4771d40cb367377e4148a2af22f25c20f3bf
|
||
|
Author: Sabrina Dubroca <sd@queasysnail.net>
|
||
|
Date: Fri Oct 12 17:34:32 2018 +0200
|
||
|
|
||
|
json: make 0xhex handle u64
|
||
|
|
||
|
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 | 2 +-
|
||
|
lib/json_print.c | 4 ++--
|
||
|
2 files changed, 3 insertions(+), 3 deletions(-)
|
||
|
|
||
|
diff --git a/include/json_print.h b/include/json_print.h
|
||
|
index 78a6c83..218da31 100644
|
||
|
--- a/include/json_print.h
|
||
|
+++ b/include/json_print.h
|
||
|
@@ -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);
|
||
|
diff --git a/lib/json_print.c b/lib/json_print.c
|
||
|
index 09e51d0..cf13e9b 100644
|
||
|
--- a/lib/json_print.c
|
||
|
+++ b/lib/json_print.c
|
||
|
@@ -171,12 +171,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);
|
||
|
--
|
||
|
1.8.3.1
|
||
|
|