From patchwork Mon Mar 18 17:19:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Matteo Croce X-Patchwork-Id: 1057972 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=redhat.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44NNGY3LHxz9s4Y for ; Tue, 19 Mar 2019 04:19:49 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727860AbfCRRTs (ORCPT ); Mon, 18 Mar 2019 13:19:48 -0400 Received: from mail-wr1-f68.google.com ([209.85.221.68]:42032 "EHLO mail-wr1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726788AbfCRRTr (ORCPT ); Mon, 18 Mar 2019 13:19:47 -0400 Received: by mail-wr1-f68.google.com with SMTP id n9so13889312wrr.9 for ; Mon, 18 Mar 2019 10:19:45 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=1uqS//ZfukKmaJGq0vW8P+6NHArEGSUVBT0ZoRvCCMI=; b=jUvqpIzg3goDa8iMj98NNXKQH7JBv9INqr/ATDdntuiV58h1V/0F/ffRIB4JpUTXMS A6K8amhRkz0NXFzahkC2RJdmisJCLnDrvfbqakMjLhIYAYciS88e+GQ5a7g3ZIGKPasp rOah4FRYZFXBbF9BZDGVTMPDHFG0MlmdbGBNo9o6ncihZvlaloy7v05V5Y4Ir3FFGDNE 6L+wIT7ywQ653m4jzqY7M2k8MjmWuHqu3VY4+f2yQaYst0wW6V7yivwBkTeHRX9xMpzw fx0hYlkFpNCu66RczEGnijEMP8pLvL5ANbGBpTEG5Xmy4f6JugRvDSYiJWRlrXkKma/O voNQ== X-Gm-Message-State: APjAAAXGfCKAn8R3uwfrDY1Bi5lcZz7GyBW1UtX1dWZAsBr0obdcDpnN MAtOGrazcyHGv6Ihhz0y/CVAX4t078M= X-Google-Smtp-Source: APXvYqxQlOgSf0z/z0/hGXNSovpDnryRP39/LjgPMQxV+tQg5jsnhNbtBu3DpoBPmRadTz1Mkl1/bw== X-Received: by 2002:adf:fdcd:: with SMTP id i13mr12405349wrs.212.1552929584574; Mon, 18 Mar 2019 10:19:44 -0700 (PDT) Received: from raver.teknoraver.net (net-188-216-58-50.cust.vodafonedsl.it. [188.216.58.50]) by smtp.gmail.com with ESMTPSA id b3sm15884356wmj.15.2019.03.18.10.19.43 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 18 Mar 2019 10:19:43 -0700 (PDT) From: Matteo Croce To: netdev@vger.kernel.org Cc: Phil Sutter , Andrea Claudi , Stephen Hemminger , David Ahern Subject: [PATCH iproute2 1/2] ip route: print route type in JSON output Date: Mon, 18 Mar 2019 18:19:29 +0100 Message-Id: <20190318171930.22705-2-mcroce@redhat.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20190318171930.22705-1-mcroce@redhat.com> References: <20190318171930.22705-1-mcroce@redhat.com> MIME-Version: 1.0 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ip route generates an invalid JSON if the route type has to be printed, eg. when detailed mode is active, or the type is different that unicast: $ ip -d -j -p route show [ {"unicast", "dst": "192.168.122.0/24", "dev": "virbr0", "protocol": "kernel", "scope": "link", "prefsrc": "192.168.122.1", "flags": [ "linkdown" ] } ] $ ip -j -p route show [ {"unreachable", "dst": "192.168.23.0/24", "flags": [ ] },{"prohibit", "dst": "192.168.24.0/24", "flags": [ ] },{"blackhole", "dst": "192.168.25.0/24", "flags": [ ] } ] Fix it by printing the route type as the "type" attribute: $ ip -d -j -p route show [ { "type": "unicast", "dst": "default", "gateway": "192.168.85.1", "dev": "wlp3s0", "protocol": "dhcp", "scope": "global", "metric": 600, "flags": [ ] },{ "type": "unreachable", "dst": "192.168.23.0/24", "protocol": "boot", "scope": "global", "flags": [ ] },{ "type": "prohibit", "dst": "192.168.24.0/24", "protocol": "boot", "scope": "global", "flags": [ ] },{ "type": "blackhole", "dst": "192.168.25.0/24", "protocol": "boot", "scope": "global", "flags": [ ] } ] Fixes: 663c3cb23103 ("iproute: implement JSON and color output") Acked-by: Phil Sutter Reviewed-and-tested-by: Andrea Claudi Signed-off-by: Matteo Croce --- ip/iproute.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ip/iproute.c b/ip/iproute.c index cc02a3e1..e091927b 100644 --- a/ip/iproute.c +++ b/ip/iproute.c @@ -766,7 +766,7 @@ int print_route(struct nlmsghdr *n, void *arg) if ((r->rtm_type != RTN_UNICAST || show_details > 0) && (!filter.typemask || (filter.typemask & (1 << r->rtm_type)))) - print_string(PRINT_ANY, NULL, "%s ", + print_string(PRINT_ANY, "type", "%s ", rtnl_rtntype_n2a(r->rtm_type, b1, sizeof(b1))); color = COLOR_NONE;