From patchwork Wed Jan 18 22:08:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400657 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 65C23C432BE for ; Mon, 26 Jul 2021 19:04:42 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 4C69560F11 for ; Mon, 26 Jul 2021 19:04:42 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233023AbhGZSYM (ORCPT ); Mon, 26 Jul 2021 14:24:12 -0400 Received: from relay4-d.mail.gandi.net ([217.70.183.196]:54125 "EHLO relay4-d.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232474AbhGZSYG (ORCPT ); Mon, 26 Jul 2021 14:24:06 -0400 Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay4-d.mail.gandi.net (Postfix) with ESMTPSA id 287F7E0002; Mon, 26 Jul 2021 19:04:32 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4W9q836347 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:32 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4WZa836346; Mon, 26 Jul 2021 21:04:32 +0200 Message-Id: <80f422e5bf353498221a2bb08a2d8a819f3e1543.1627295848.git.ralf@linux-mips.org> In-Reply-To: References: From: Ralf Baechle Date: Wed, 18 Jan 2017 23:08:21 +0100 Subject: [PATCH 1/6] AX.25: Add ax25_ntop implementation. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org AX.25 addresses are based on Amateur radio callsigns followed by an SSID like XXXXXX-SS where the callsign is up to 6 characters which are either letters or digits and the SSID is a decimal number in the range 0..15. Amateur radio callsigns are assigned by a country's relevant authorities and are 3..6 characters though a few countries have assigned callsigns longer than that. AX.25 is not able to handle such longer callsigns. Being based on HDLC AX.25 encodes addresses by shifting them one bit left thus zeroing bit 0, the HDLC extension bit for all but the last bit of a packet's address field but for our purposes here we're not considering the HDLC extension bit that is it will always be zero. Linux' internal representation of AX.25 addresses in Linux is very similar to this on the on-air or on-the-wire format. The callsign is padded to 6 octets by adding spaces, followed by the SSID octet then all 7 octets are left-shifted by one byte. This for example turns "LINUX-1" where the callsign is LINUX and SSID is 1 into 98:92:9c:aa:b0:40:02. Signed-off-by: Ralf Baechle --- Makefile | 3 ++ include/utils.h | 2 ++ lib/ax25_ntop.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 79 insertions(+) create mode 100644 lib/ax25_ntop.c diff --git a/Makefile b/Makefile index 5bc11477..551f528b 100644 --- a/Makefile +++ b/Makefile @@ -40,6 +40,9 @@ DEFINES+=-DCONFDIR=\"$(CONFDIR)\" \ -DNETNS_RUN_DIR=\"$(NETNS_RUN_DIR)\" \ -DNETNS_ETC_DIR=\"$(NETNS_ETC_DIR)\" +#options for AX.25 +ADDLIB+=ax25_ntop.o + #options for mpls ADDLIB+=mpls_ntop.o mpls_pton.o diff --git a/include/utils.h b/include/utils.h index 28eaad8e..31c1e442 100644 --- a/include/utils.h +++ b/include/utils.h @@ -209,6 +209,8 @@ bool matches(const char *prefix, const char *string); int inet_addr_match(const inet_prefix *a, const inet_prefix *b, int bits); int inet_addr_match_rta(const inet_prefix *m, const struct rtattr *rta); +const char *ax25_ntop(int af, const void *addr, char *str, socklen_t len); + const char *mpls_ntop(int af, const void *addr, char *str, size_t len); int mpls_pton(int af, const char *src, void *addr, size_t alen); diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c new file mode 100644 index 00000000..48098581 --- /dev/null +++ b/lib/ax25_ntop.c @@ -0,0 +1,74 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#include +#include +#include + +#include "utils.h" + +/* + * AX.25 addresses are based on Amateur radio callsigns followed by an SSID + * like XXXXXX-SS where the callsign is up to 6 characters which are either + * letters or digits and the SSID is a decimal number in the range 0..15. + * Amateur radio callsigns are assigned by a country's relevant authorities + * and are 3..6 characters though a few countries have assigned callsigns + * longer than that. AX.25 is not able to handle such longer callsigns. + * + * Being based on HDLC AX.25 encodes addresses by shifting them one bit left + * thus zeroing bit 0, the HDLC extension bit for all but the last bit of + * a packet's address field but for our purposes here we're not considering + * the HDLC extension bit that is it will always be zero. + * + * Linux' internal representation of AX.25 addresses in Linux is very similar + * to this on the on-air or on-the-wire format. The callsign is padded to + * 6 octets by adding spaces, followed by the SSID octet then all 7 octets + * are left-shifted by one byte. + * + * This for example turns "LINUX-1" where the callsign is LINUX and SSID is 1 + * into 98:92:9c:aa:b0:40:02. + */ + +static const char *ax25_ntop1(const ax25_address *src, char *dst, + socklen_t size) +{ + char c, *s; + int n; + + for (n = 0, s = dst; n < 6; n++) { + c = (src->ax25_call[n] >> 1) & 0x7f; + if (c != ' ') + *s++ = c; + } + + *s++ = '-'; + + n = ((src->ax25_call[6] >> 1) & 0x0f); + if (n > 9) { + *s++ = '1'; + n -= 10; + } + + *s++ = n + '0'; + *s++ = '\0'; + + if (*dst == '\0' || *dst == '-') { + dst[0] = '*'; + dst[1] = '\0'; + } + + return dst; +} + +const char *ax25_ntop(int af, const void *addr, char *buf, socklen_t buflen) +{ + switch (af) { + case AF_AX25: + errno = 0; + return ax25_ntop1((ax25_address *)addr, buf, buflen); + + default: + errno = EAFNOSUPPORT; + } + + return NULL; +} From patchwork Wed Jan 18 22:08:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400651 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id CE3F1C4338F for ; Mon, 26 Jul 2021 19:04:37 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B385A60F11 for ; Mon, 26 Jul 2021 19:04:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232813AbhGZSYH (ORCPT ); Mon, 26 Jul 2021 14:24:07 -0400 Received: from relay12.mail.gandi.net ([217.70.178.232]:54117 "EHLO relay12.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232391AbhGZSYG (ORCPT ); Mon, 26 Jul 2021 14:24:06 -0400 Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 0144E200005; Mon, 26 Jul 2021 19:04:32 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4WZD836351 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:32 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4WiK836350; Mon, 26 Jul 2021 21:04:32 +0200 Message-Id: <474560d79e822f58c7c728ee0aaf86113e8d5ffd.1627295848.git.ralf@linux-mips.org> In-Reply-To: References: From: Ralf Baechle Date: Wed, 18 Jan 2017 23:08:21 +0100 Subject: [PATCH 2/6] AX.25: Print decoded addresses rather than hex numbers. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Before this, ip would have printed the AX.25 address configured for an AX.25 interface's default addresses as: link/ax25 98:92:9c:aa:b0:40:02 brd a2:a6:a8:40:40:40:00 which is pretty unreadable. With this commit ip will decode AX.25 addresses like link/ax25 LINUX-1 brd QST-0 Signed-off-by: Ralf Baechle --- lib/ll_addr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ll_addr.c b/lib/ll_addr.c index 00b562ae..910e6daf 100644 --- a/lib/ll_addr.c +++ b/lib/ll_addr.c @@ -39,6 +39,8 @@ const char *ll_addr_n2a(const unsigned char *addr, int alen, int type, if (alen == 16 && (type == ARPHRD_TUNNEL6 || type == ARPHRD_IP6GRE)) return inet_ntop(AF_INET6, addr, buf, blen); + if (alen == 7 && type == ARPHRD_AX25) + return ax25_ntop(AF_AX25, addr, buf, blen); snprintf(buf, blen, "%02x", addr[0]); for (i = 1, l = 2; i < alen && l < blen; i++, l += 3) From patchwork Sat Apr 13 16:17:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400693 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id EE829C432BE for ; Mon, 26 Jul 2021 19:08:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id CEE6D60F91 for ; Mon, 26 Jul 2021 19:08:26 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232474AbhGZS15 (ORCPT ); Mon, 26 Jul 2021 14:27:57 -0400 Received: from mslow1.mail.gandi.net ([217.70.178.240]:40841 "EHLO mslow1.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231548AbhGZS1z (ORCPT ); Mon, 26 Jul 2021 14:27:55 -0400 Received: from relay9-d.mail.gandi.net (unknown [217.70.183.199]) by mslow1.mail.gandi.net (Postfix) with ESMTP id 82D09C6D29; Mon, 26 Jul 2021 19:04:55 +0000 (UTC) Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id 79C7BFF804; Mon, 26 Jul 2021 19:04:33 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4WAn836356 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:32 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4WEd836355; Mon, 26 Jul 2021 21:04:32 +0200 Message-Id: In-Reply-To: References: From: Ralf Baechle Date: Sat, 13 Apr 2019 18:17:36 +0200 Subject: [PATCH 3/6] NETROM: Add netrom_ntop implementation. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org NETROM uses AX.25 addresses so this is a simple wrapper around ax25_ntop1. Signed-off-by: Ralf Baechle --- Makefile | 3 +++ include/utils.h | 2 ++ lib/ax25_ntop.c | 22 +++++++++++++++------- lib/netrom_ntop.c | 23 +++++++++++++++++++++++ 4 files changed, 43 insertions(+), 7 deletions(-) create mode 100644 lib/netrom_ntop.c diff --git a/Makefile b/Makefile index 551f528b..df894d54 100644 --- a/Makefile +++ b/Makefile @@ -46,6 +46,9 @@ ADDLIB+=ax25_ntop.o #options for mpls ADDLIB+=mpls_ntop.o mpls_pton.o +#options for NETROM +ADDLIB+=netrom_ntop.o + CC := gcc HOSTCC ?= $(CC) DEFINES += -D_GNU_SOURCE diff --git a/include/utils.h b/include/utils.h index 31c1e442..c685a392 100644 --- a/include/utils.h +++ b/include/utils.h @@ -214,6 +214,8 @@ const char *ax25_ntop(int af, const void *addr, char *str, socklen_t len); const char *mpls_ntop(int af, const void *addr, char *str, size_t len); int mpls_pton(int af, const char *src, void *addr, size_t alen); +const char *netrom_ntop(int af, const void *addr, char *str, socklen_t len); + extern int __iproute2_hz_internal; int __get_hz(void); diff --git a/lib/ax25_ntop.c b/lib/ax25_ntop.c index 48098581..cfd0e04b 100644 --- a/lib/ax25_ntop.c +++ b/lib/ax25_ntop.c @@ -6,13 +6,22 @@ #include "utils.h" +const char *ax25_ntop1(const ax25_address *src, char *dst, socklen_t size); + /* * AX.25 addresses are based on Amateur radio callsigns followed by an SSID - * like XXXXXX-SS where the callsign is up to 6 characters which are either - * letters or digits and the SSID is a decimal number in the range 0..15. + * like XXXXXX-SS where the callsign consists of up to 6 ASCII characters + * which are either letters or digits and the SSID is a decimal number in the + * range 0..15. * Amateur radio callsigns are assigned by a country's relevant authorities * and are 3..6 characters though a few countries have assigned callsigns * longer than that. AX.25 is not able to handle such longer callsigns. + * There are further restrictions on the format of valid callsigns by + * applicable national and international law. Linux doesn't need to care and + * will happily accept anything that consists of 6 ASCII characters in the + * range of A-Z and 0-9 for a callsign such as the default AX.25 MAC address + * LINUX-1 and the default broadcast address QST-0. + * The SSID is just a number and not encoded in ASCII digits. * * Being based on HDLC AX.25 encodes addresses by shifting them one bit left * thus zeroing bit 0, the HDLC extension bit for all but the last bit of @@ -22,14 +31,13 @@ * Linux' internal representation of AX.25 addresses in Linux is very similar * to this on the on-air or on-the-wire format. The callsign is padded to * 6 octets by adding spaces, followed by the SSID octet then all 7 octets - * are left-shifted by one byte. + * are left-shifted by one bit. * - * This for example turns "LINUX-1" where the callsign is LINUX and SSID is 1 - * into 98:92:9c:aa:b0:40:02. + * For example, for the address "LINUX-1" the callsign is LINUX and SSID is 1 + * the internal format is 98:92:9c:aa:b0:40:02. */ -static const char *ax25_ntop1(const ax25_address *src, char *dst, - socklen_t size) +const char *ax25_ntop1(const ax25_address *src, char *dst, socklen_t size) { char c, *s; int n; diff --git a/lib/netrom_ntop.c b/lib/netrom_ntop.c new file mode 100644 index 00000000..3dd6cb0b --- /dev/null +++ b/lib/netrom_ntop.c @@ -0,0 +1,23 @@ +/* SPDX-License-Identifier: GPL-2.0 */ + +#include +#include +#include + +#include "utils.h" + +const char *ax25_ntop1(const ax25_address *src, char *dst, socklen_t size); + +const char *netrom_ntop(int af, const void *addr, char *buf, socklen_t buflen) +{ + switch (af) { + case AF_NETROM: + errno = 0; + return ax25_ntop1((ax25_address *)addr, buf, buflen); + + default: + errno = EAFNOSUPPORT; + } + + return NULL; +} From patchwork Wed Jan 18 22:19:22 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400655 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id DAD92C4338F for ; Mon, 26 Jul 2021 19:04:40 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id BC16560F11 for ; Mon, 26 Jul 2021 19:04:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232958AbhGZSYL (ORCPT ); Mon, 26 Jul 2021 14:24:11 -0400 Received: from relay12.mail.gandi.net ([217.70.178.232]:55113 "EHLO relay12.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232518AbhGZSYG (ORCPT ); Mon, 26 Jul 2021 14:24:06 -0400 Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay12.mail.gandi.net (Postfix) with ESMTPSA id 65D06200006; Mon, 26 Jul 2021 19:04:33 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4Wrm836361 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:32 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4WBE836360; Mon, 26 Jul 2021 21:04:32 +0200 Message-Id: <48e5a534453d2da234946bd1da7d609b3c0b8c60.1627295848.git.ralf@linux-mips.org> In-Reply-To: References: From: Ralf Baechle Date: Wed, 18 Jan 2017 23:19:22 +0100 Subject: [PATCH 4/6] NETROM: Print decoded addresses rather than hex numbers. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org NETROM is an OSI layer 3 protocol sitting on top of AX.25. It also uses AX.25 addresses. Without this commit ip will print NETROM address like link/generic 98:92:9c:aa:b0:40:02 brd 00:00:00:00:00:00:00 while with this commit the decoded result link/generic LINUX-1 brd * is much more eye friendly. Signed-off-by: Ralf Baechle --- lib/ll_addr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ll_addr.c b/lib/ll_addr.c index 910e6daf..46e30c79 100644 --- a/lib/ll_addr.c +++ b/lib/ll_addr.c @@ -41,6 +41,8 @@ const char *ll_addr_n2a(const unsigned char *addr, int alen, int type, return inet_ntop(AF_INET6, addr, buf, blen); if (alen == 7 && type == ARPHRD_AX25) return ax25_ntop(AF_AX25, addr, buf, blen); + if (alen == 7 && type == ARPHRD_NETROM) + return netrom_ntop(AF_NETROM, addr, buf, blen); snprintf(buf, blen, "%02x", addr[0]); for (i = 1, l = 2; i < alen && l < blen; i++, l += 3) From patchwork Fri Apr 12 12:27:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400691 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 74B60C4338F for ; Mon, 26 Jul 2021 19:08:25 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 5426D60F8F for ; Mon, 26 Jul 2021 19:08:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232354AbhGZS14 (ORCPT ); Mon, 26 Jul 2021 14:27:56 -0400 Received: from mslow1.mail.gandi.net ([217.70.178.240]:34747 "EHLO mslow1.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231921AbhGZS1z (ORCPT ); Mon, 26 Jul 2021 14:27:55 -0400 Received: from relay9-d.mail.gandi.net (unknown [217.70.183.199]) by mslow1.mail.gandi.net (Postfix) with ESMTP id BC7B0CEB87; Mon, 26 Jul 2021 19:04:55 +0000 (UTC) Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay9-d.mail.gandi.net (Postfix) with ESMTPSA id A4BC0FF807; Mon, 26 Jul 2021 19:04:33 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4WZQ836365 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:32 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4WB9836364; Mon, 26 Jul 2021 21:04:32 +0200 Message-Id: In-Reply-To: References: From: Ralf Baechle Date: Fri, 12 Apr 2019 14:27:07 +0200 Subject: [PATCH 5/6] ROSE: Add rose_ntop implementation. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org ROSE addresses are ten digit numbers, basically like North American telephone numbers. Signed-off-by: Ralf Baechle --- Makefile | 3 +++ include/utils.h | 2 ++ lib/rose_ntop.c | 56 +++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 61 insertions(+) create mode 100644 lib/rose_ntop.c diff --git a/Makefile b/Makefile index df894d54..5eddd504 100644 --- a/Makefile +++ b/Makefile @@ -43,6 +43,9 @@ DEFINES+=-DCONFDIR=\"$(CONFDIR)\" \ #options for AX.25 ADDLIB+=ax25_ntop.o +#options for AX.25 +ADDLIB+=rose_ntop.o + #options for mpls ADDLIB+=mpls_ntop.o mpls_pton.o diff --git a/include/utils.h b/include/utils.h index c685a392..ba981186 100644 --- a/include/utils.h +++ b/include/utils.h @@ -211,6 +211,8 @@ int inet_addr_match_rta(const inet_prefix *m, const struct rtattr *rta); const char *ax25_ntop(int af, const void *addr, char *str, socklen_t len); +const char *rose_ntop(int af, const void *addr, char *buf, socklen_t buflen); + const char *mpls_ntop(int af, const void *addr, char *str, size_t len); int mpls_pton(int af, const char *src, void *addr, size_t alen); diff --git a/lib/rose_ntop.c b/lib/rose_ntop.c new file mode 100644 index 00000000..c9ba712c --- /dev/null +++ b/lib/rose_ntop.c @@ -0,0 +1,56 @@ +/* SPDX-License-Identifier: GPL-2.0+ */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "rt_names.h" +#include "utils.h" + +static const char *rose_ntop1(const rose_address *src, char *dst, + socklen_t size) +{ + char *p = dst; + int i; + + if (size < 10) + return NULL; + + for (i = 0; i < 5; i++) { + *p++ = '0' + ((src->rose_addr[i] >> 4) & 0xf); + *p++ = '0' + ((src->rose_addr[i] ) & 0xf); + } + + if (size == 10) + return dst; + + *p = '\0'; + + return dst; +} + +const char *rose_ntop(int af, const void *addr, char *buf, socklen_t buflen) +{ + switch (af) { + case AF_ROSE: + errno = 0; + return rose_ntop1((rose_address *)addr, buf, buflen); + + default: + errno = EAFNOSUPPORT; + } + + return NULL; +} From patchwork Wed Jan 18 21:34:39 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ralf Baechle X-Patchwork-Id: 12400653 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-10.3 required=3.0 tests=BAYES_00,DATE_IN_PAST_96_XX, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id AB985C432BE for ; Mon, 26 Jul 2021 19:04:39 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8F57560F8F for ; Mon, 26 Jul 2021 19:04:39 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232854AbhGZSYJ (ORCPT ); Mon, 26 Jul 2021 14:24:09 -0400 Received: from relay12.mail.gandi.net ([217.70.178.232]:44737 "EHLO relay12.mail.gandi.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232202AbhGZSYG (ORCPT ); Mon, 26 Jul 2021 14:24:06 -0400 Received: from h7.dl5rb.org.uk (p57907709.dip0.t-ipconnect.de [87.144.119.9]) (Authenticated sender: ralf@linux-mips.org) by relay12.mail.gandi.net (Postfix) with ESMTPSA id D655D200007; Mon, 26 Jul 2021 19:04:33 +0000 (UTC) Received: from h7.dl5rb.org.uk (localhost [127.0.0.1]) by h7.dl5rb.org.uk (8.16.1/8.16.1) with ESMTPS id 16QJ4XGC836369 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 26 Jul 2021 21:04:33 +0200 Received: (from ralf@localhost) by h7.dl5rb.org.uk (8.16.1/8.16.1/Submit) id 16QJ4XBp836368; Mon, 26 Jul 2021 21:04:33 +0200 Message-Id: <2ab3e7655dac7a5493a388793dce45afae5781e8.1627295848.git.ralf@linux-mips.org> In-Reply-To: References: From: Ralf Baechle Date: Wed, 18 Jan 2017 22:34:39 +0100 Subject: [PATCH 6/6] ROSE: Print decoded addresses rather than hex numbers. To: Stephen Hemminger Cc: netdev@vger.kernel.org, linux-hams@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org NETROM is a OSI layer 3 protocol sitting on top of AX.25. It uses BCD- encoded 10 digit telephone numbers as addresses. Without this ip will print a ROSE addresses like link/rose 12:34:56:78:90 brd 00:00:00:00:00 which is readable but ugly. With this applied it ROSE addresses will be printed as link/rose 1234567890 brd 0000000000 Signed-off-by: Ralf Baechle --- lib/ll_addr.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ll_addr.c b/lib/ll_addr.c index 46e30c79..d6fd736b 100644 --- a/lib/ll_addr.c +++ b/lib/ll_addr.c @@ -43,6 +43,8 @@ const char *ll_addr_n2a(const unsigned char *addr, int alen, int type, return ax25_ntop(AF_AX25, addr, buf, blen); if (alen == 7 && type == ARPHRD_NETROM) return netrom_ntop(AF_NETROM, addr, buf, blen); + if (alen == 5 && type == ARPHRD_ROSE) + return rose_ntop(AF_ROSE, addr, buf, blen); snprintf(buf, blen, "%02x", addr[0]); for (i = 1, l = 2; i < alen && l < blen; i++, l += 3)