From patchwork Tue May 15 13:54:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jon Maloy X-Patchwork-Id: 913630 X-Patchwork-Delegate: dsahern@gmail.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=ericsson.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=ericsson.com header.i=@ericsson.com header.b="acaPpJ22"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40lfFR4PBRz9ry1 for ; Tue, 15 May 2018 23:54:35 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753911AbeEONyc (ORCPT ); Tue, 15 May 2018 09:54:32 -0400 Received: from sesbmg22.ericsson.net ([193.180.251.48]:63935 "EHLO sesbmg22.ericsson.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753800AbeEONya (ORCPT ); Tue, 15 May 2018 09:54:30 -0400 DKIM-Signature: v=1; a=rsa-sha256; d=ericsson.com; s=mailgw201801; c=relaxed/simple; q=dns/txt; i=@ericsson.com; t=1526392468; h=From:Sender:Reply-To:Subject:Date:Message-ID:To:CC:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References:List-Id: List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner:List-Archive; bh=PXGM3S9at5ljXEXi7bHGs4Tg7a+PnZcD4rCc8EAeqMs=; b=acaPpJ22aAwHTNP4khC9vYHraF1VbvY9eWv4Hw1OQcfmfCmI2uKfMaifRMFWIL3t ZGQt06bfeplmj81OPQY+3eXQ2JRrPQZoEUuWgv89UT1Z5BFwZvF44RfCG/QDsm85 80zBS1ylsrXdiAoXSBtZW82CYtJwil7UgK18qWN0S6g=; X-AuditID: c1b4fb30-263479c00000169b-f4-5afae6943158 Received: from ESESSHC011.ericsson.se (Unknown_Domain [153.88.183.51]) by sesbmg22.ericsson.net (Symantec Mail Security) with SMTP id F7.0E.05787.496EAFA5; Tue, 15 May 2018 15:54:28 +0200 (CEST) Received: from daly.lab.linux.ericsson.se (10.35.28.123) by ESESSHC011.ericsson.se (153.88.183.51) with Microsoft SMTP Server (TLS) id 14.3.382.0; Tue, 15 May 2018 15:54:26 +0200 From: Jon Maloy To: , CC: , , , , , , Subject: [iproute2-next v2 1/1] tipc: fixed node and name table listings Date: Tue, 15 May 2018 15:54:21 +0200 Message-ID: <1526392461-21682-1-git-send-email-jon.maloy@ericsson.com> X-Mailer: git-send-email 2.1.4 MIME-Version: 1.0 X-Originating-IP: [10.35.28.123] X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrCLMWRmVeSWpSXmKPExsUyM2K7se6UZ7+iDHqbzCxuNPQwW7x9NYvd 4tgCMYvFd+QstpzPsrjSfpbd4vH168wO7B7vrrB57F7wmcmj5+Q8Jo/Pm+Q81m/ZyhTAGsVl k5Kak1mWWqRvl8CVcWL1HdaCA0YVc3ZWNDBO0+hi5OSQEDCR6Hm+g7GLkYtDSOAIo8TZFd+Z IZxtjBK9WzawgVSxCWhIvJzWwQhiiwhYSbTtnAJWxCzwiVGiZeUzsCJhAQ+J71+WsoLYLAKq Euv7IOK8Am4Sv7tXskCsk5M4f/wnM0RcUOLkzCdgcWYBCYmDL16AxYUElCXmfpjGBFGvIPFh 1jK2CYx8s5C0zELSsoCRaRWjaHFqcVJuupGRXmpRZnJxcX6eXl5qySZGYFge3PLbYAfjy+eO hxgFOBiVeHgPrf0VJcSaWFZcmXuIUYKDWUmEd7fRzygh3pTEyqrUovz4otKc1OJDjNIcLEri vBZ+m6OEBNITS1KzU1MLUotgskwcnFINjFZN6bWqVTazSo4X1q3I2vDw2O+zUz4VnVrJvjz8 Rd4Zt6vPrfIMflddkTOYu23W6q0y92eI6SjZRx2472fxZkpEAIeNXWPrQckXwgosW3ouc91k W+q75fCUmQmrFJRTg3RXLr7VE703V+ITT9M6K81vdfPvZ7Fcj13MrmeZXJthJJC+fDlfuBJL cUaioRZzUXEiANC/ytRHAgAA Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We make it easier for users to correlate between 128-bit node identities and 32-bit node hash number by extending the 'node list' command to also show the hash number. We also improve the 'nametable show' command to show the node identity instead of the node hash number. Since the former potentially is much longer than the latter, we make room for it by eliminating the (to the user) irrelevant publication key. We also reorder some of the columns so that the node id comes last, since this looks nicer and is more logical. --- v2: Fixed compiler warning as per comment from David Ahern Signed-off-by: Jon Maloy --- tipc/misc.c | 18 ++++++++++++++++++ tipc/misc.h | 1 + tipc/nametable.c | 18 ++++++++++-------- tipc/node.c | 19 ++++++++----------- tipc/peer.c | 4 ++++ 5 files changed, 41 insertions(+), 19 deletions(-) diff --git a/tipc/misc.c b/tipc/misc.c index 16849f1..e8b726f 100644 --- a/tipc/misc.c +++ b/tipc/misc.c @@ -13,6 +13,9 @@ #include #include #include +#include +#include +#include #include "misc.h" #define IN_RANGE(val, low, high) ((val) <= (high) && (val) >= (low)) @@ -109,3 +112,18 @@ void nodeid2str(uint8_t *id, char *str) for (i = 31; str[i] == '0'; i--) str[i] = 0; } + +void hash2nodestr(uint32_t hash, char *str) +{ + struct tipc_sioc_nodeid_req nr = {}; + int sd; + + sd = socket(AF_TIPC, SOCK_RDM, 0); + if (sd < 0) { + fprintf(stderr, "opening TIPC socket: %s\n", strerror(errno)); + return; + } + nr.peer = hash; + if (!ioctl(sd, SIOCGETNODEID, &nr)) + nodeid2str((uint8_t *)nr.node_id, str); +} diff --git a/tipc/misc.h b/tipc/misc.h index 6e8afdd..ff2f31f 100644 --- a/tipc/misc.h +++ b/tipc/misc.h @@ -17,5 +17,6 @@ uint32_t str2addr(char *str); int str2nodeid(char *str, uint8_t *id); void nodeid2str(uint8_t *id, char *str); +void hash2nodestr(uint32_t hash, char *str); #endif diff --git a/tipc/nametable.c b/tipc/nametable.c index 2578940..ae73dfa 100644 --- a/tipc/nametable.c +++ b/tipc/nametable.c @@ -20,6 +20,7 @@ #include "cmdl.h" #include "msg.h" #include "nametable.h" +#include "misc.h" #define PORTID_STR_LEN 45 /* Four u32 and five delimiter chars */ @@ -31,6 +32,7 @@ static int nametable_show_cb(const struct nlmsghdr *nlh, void *data) struct nlattr *attrs[TIPC_NLA_NAME_TABLE_MAX + 1] = {}; struct nlattr *publ[TIPC_NLA_PUBL_MAX + 1] = {}; const char *scope[] = { "", "zone", "cluster", "node" }; + char str[33] = {0,}; mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info); if (!info[TIPC_NLA_NAME_TABLE]) @@ -45,20 +47,20 @@ static int nametable_show_cb(const struct nlmsghdr *nlh, void *data) return MNL_CB_ERROR; if (!*iteration) - printf("%-10s %-10s %-10s %-10s %-10s %-10s\n", - "Type", "Lower", "Upper", "Node", "Port", - "Publication Scope"); + printf("%-10s %-10s %-10s %-8s %-10s %-33s\n", + "Type", "Lower", "Upper", "Scope", "Port", + "Node"); (*iteration)++; - printf("%-10u %-10u %-10u %-10x %-10u %-12u", + hash2nodestr(mnl_attr_get_u32(publ[TIPC_NLA_PUBL_NODE]), str); + + printf("%-10u %-10u %-10u %-8s %-10u %s\n", mnl_attr_get_u32(publ[TIPC_NLA_PUBL_TYPE]), mnl_attr_get_u32(publ[TIPC_NLA_PUBL_LOWER]), mnl_attr_get_u32(publ[TIPC_NLA_PUBL_UPPER]), - mnl_attr_get_u32(publ[TIPC_NLA_PUBL_NODE]), + scope[mnl_attr_get_u32(publ[TIPC_NLA_PUBL_SCOPE])], mnl_attr_get_u32(publ[TIPC_NLA_PUBL_REF]), - mnl_attr_get_u32(publ[TIPC_NLA_PUBL_KEY])); - - printf("%s\n", scope[mnl_attr_get_u32(publ[TIPC_NLA_PUBL_SCOPE])]); + str); return MNL_CB_OK; } diff --git a/tipc/node.c b/tipc/node.c index b73b644..0fa1064 100644 --- a/tipc/node.c +++ b/tipc/node.c @@ -26,10 +26,11 @@ static int node_list_cb(const struct nlmsghdr *nlh, void *data) { - uint32_t addr; struct genlmsghdr *genl = mnl_nlmsg_get_payload(nlh); struct nlattr *info[TIPC_NLA_MAX + 1] = {}; struct nlattr *attrs[TIPC_NLA_NODE_MAX + 1] = {}; + char str[33] = {}; + uint32_t addr; mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info); if (!info[TIPC_NLA_NODE]) @@ -40,13 +41,12 @@ static int node_list_cb(const struct nlmsghdr *nlh, void *data) return MNL_CB_ERROR; addr = mnl_attr_get_u32(attrs[TIPC_NLA_NODE_ADDR]); - printf("%x: ", addr); - + hash2nodestr(addr, str); + printf("%-32s %08x ", str, addr); if (attrs[TIPC_NLA_NODE_UP]) printf("up\n"); else printf("down\n"); - return MNL_CB_OK; } @@ -64,7 +64,7 @@ static int cmd_node_list(struct nlmsghdr *nlh, const struct cmd *cmd, fprintf(stderr, "error, message initialisation failed\n"); return -1; } - + printf("Node Identity Hash State\n"); return msg_dumpit(nlh, node_list_cb, NULL); } @@ -120,7 +120,7 @@ static int cmd_node_get_addr(struct nlmsghdr *nlh, const struct cmd *cmd, } close(sk); - printf("%x\n", addr.addr.id.node); + printf("%08x\n", addr.addr.id.node); return 0; } @@ -167,7 +167,6 @@ static int nodeid_get_cb(const struct nlmsghdr *nlh, void *data) uint8_t id[16] = {0,}; uint64_t *w0 = (uint64_t *) &id[0]; uint64_t *w1 = (uint64_t *) &id[8]; - int i; mnl_attr_parse(nlh, sizeof(*genl), parse_attrs, info); if (!info[TIPC_NLA_NET]) @@ -180,10 +179,8 @@ static int nodeid_get_cb(const struct nlmsghdr *nlh, void *data) *w0 = mnl_attr_get_u64(attrs[TIPC_NLA_NET_NODEID]); *w1 = mnl_attr_get_u64(attrs[TIPC_NLA_NET_NODEID_W1]); nodeid2str(id, str); - printf("Node Identity Hash\n"); - printf("%s", str); - for (i = strlen(str); i <= 33; i++) - printf(" "); + printf("Node Identity Hash\n"); + printf("%-33s", str); cmd_node_get_addr(NULL, NULL, NULL, NULL); return MNL_CB_OK; } diff --git a/tipc/peer.c b/tipc/peer.c index de0c73c..f638077 100644 --- a/tipc/peer.c +++ b/tipc/peer.c @@ -39,8 +39,12 @@ static int cmd_peer_rm_addr(struct nlmsghdr *nlh, const struct cmd *cmd, } str = shift_cmdl(cmdl); + + /* First try legacy Z.C.N format, then integer format */ addr = str2addr(str); if (!addr) + addr = atoi(str); + if (!addr) return -1; if (!(nlh = msg_init(buf, TIPC_NL_PEER_REMOVE))) {