From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 41536A0527 for ; Mon, 9 Nov 2020 19:41:33 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 38CF972ED; Mon, 9 Nov 2020 19:41:32 +0100 (CET) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by dpdk.org (Postfix) with ESMTP id 4DB3C72ED for ; Mon, 9 Nov 2020 19:41:30 +0100 (CET) Received: by mail-wm1-f50.google.com with SMTP id h62so434363wme.3 for ; Mon, 09 Nov 2020 10:41:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=KsgNhUPSpdHq5R2uUzROLgVwxEQJTVPuiA76DJy47LE=; b=UsIB8RHrpyB8Sce6ZWBecmjJnKKaq5SIWvub28dTBCOScUTchtNDxXIMazxdHYKJp8 Y1C8se3rYvE9T6ZBd9T8zKhQ3mKfi3V6u8IStSc51Qq9bj7HeQsqg0ZcRQyIIFFLoxSX LEiDsf9yJAcLBz1Dpzj7SEcYiiIXDx7qtMRe+BUznoKb4kzvbZb1PMEXDiGpf0BcpbGk h5KWiBqq512ulfC+sxU10WMVR+wgesRXJig6wXkXU8cGkTee0BztA/rPZqM+YeRmLPHC rmXel4J6rKRsaItbNzCgRhQgxi6uDjyG1Dko0T9+SHAOojvbUtlXgBG39ZJiwNchFx3q /TPw== 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=KsgNhUPSpdHq5R2uUzROLgVwxEQJTVPuiA76DJy47LE=; b=b4m20KyjGtpMpErbLnJ0wRleahvd4/jBR1EW1Xwra0Ze/CSH+4SLzUd7B09LpQyHnq PBQSV1v8m2a7VON3s9KrwW72NPaa7DfOSppq4QdhHA5Nt+MVXFry8bXPkaH7cOiN9ToJ TUjXhbkB2FiwjJr7k+VHKCBIbxoiwYTz5upNWITM4vrUCKuk/p+qVg2q160O54Y17tJH YIxV3J0EGtdcI8cTrD+Rt+vxf/8FR1fsYAuYrgQIVUkNvAWLrkq+qKLP51Z1ZwV1G+SF QVgutJd4wazIsZ1D8zIxpUDkHmWiaEr4ZzPZsD8EaYFhTGCIUB0mRqtojWATG+NBV3He w7LQ== X-Gm-Message-State: AOAM533OGQn7CcAdEG8f/bzMPu6b5GnCwt/06wK7ugTzkjJEx1VvhQgC JjrIlYJQOVTHo+0FXp5/EV8= X-Google-Smtp-Source: ABdhPJzNplBfAFk7aojN+xTdNRYSxKuZ1TTykW3mOdq/QHd7nxlTrzxH7wvRZXozitYpSsavzaBrgA== X-Received: by 2002:a1c:4d05:: with SMTP id o5mr557872wmh.124.1604947289075; Mon, 09 Nov 2020 10:41:29 -0800 (PST) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id c62sm310413wme.22.2020.11.09.10.41.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 09 Nov 2020 10:41:28 -0800 (PST) From: luca.boccassi@gmail.com To: Ibtisam Tariq Cc: David Marchand , Konstantin Ananyev , dpdk stable Date: Mon, 9 Nov 2020 18:39:52 +0000 Message-Id: <20201109184111.3463090-4-luca.boccassi@gmail.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20201109184111.3463090-1-luca.boccassi@gmail.com> References: <20201028104606.3504127-207-luca.boccassi@gmail.com> <20201109184111.3463090-1-luca.boccassi@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Subject: [dpdk-stable] patch 'examples/ipsec-secgw: use POSIX network address conversion' has been queued to stable release 19.11.6 X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Sender: "stable" Hi, FYI, your patch has been queued to stable release 19.11.6 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 11/11/20. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/bluca/dpdk-stable This queued commit can be viewed at: https://github.com/bluca/dpdk-stable/commit/3109cc617c1c882c3b44434d801a73eca8a5e4ed Thanks. Luca Boccassi --- >From 3109cc617c1c882c3b44434d801a73eca8a5e4ed Mon Sep 17 00:00:00 2001 From: Ibtisam Tariq Date: Mon, 13 Jul 2020 09:57:30 +0000 Subject: [PATCH] examples/ipsec-secgw: use POSIX network address conversion [ upstream commit 4054466be9c64e72c37cffd840ab0f35a946a867 ] inet_pton4 and inet_pton6 was reimplemented. Replace implementation of inet_pton4 and inet_pton6 with libc inet_pton function Bugzilla ID: 365 Fixes: 0d547ed03717 ("examples/ipsec-secgw: support configuration file") Reported-by: David Marchand Signed-off-by: Ibtisam Tariq Acked-by: Konstantin Ananyev Acked-by: David Marchand --- examples/ipsec-secgw/parser.c | 173 +--------------------------------- 1 file changed, 5 insertions(+), 168 deletions(-) diff --git a/examples/ipsec-secgw/parser.c b/examples/ipsec-secgw/parser.c index fc8c238fe5..dfabac2dbf 100644 --- a/examples/ipsec-secgw/parser.c +++ b/examples/ipsec-secgw/parser.c @@ -1,6 +1,9 @@ /* SPDX-License-Identifier: BSD-3-Clause * Copyright(c) 2016 Intel Corporation */ +#include +#include + #include #include #include @@ -39,172 +42,6 @@ parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens) return 0; } -#define INADDRSZ 4 -#define IN6ADDRSZ 16 - -/* int - * inet_pton4(src, dst) - * like inet_aton() but without all the hexadecimal and shorthand. - * return: - * 1 if `src' is a valid dotted quad, else 0. - * notice: - * does not touch `dst' unless it's returning 1. - * author: - * Paul Vixie, 1996. - */ -static int -inet_pton4(const char *src, unsigned char *dst) -{ - static const char digits[] = "0123456789"; - int saw_digit, octets, ch; - unsigned char tmp[INADDRSZ], *tp; - - saw_digit = 0; - octets = 0; - *(tp = tmp) = 0; - while ((ch = *src++) != '\0') { - const char *pch; - - pch = strchr(digits, ch); - if (pch != NULL) { - unsigned int new = *tp * 10 + (pch - digits); - - if (new > 255) - return 0; - if (!saw_digit) { - if (++octets > 4) - return 0; - saw_digit = 1; - } - *tp = (unsigned char)new; - } else if (ch == '.' && saw_digit) { - if (octets == 4) - return 0; - *++tp = 0; - saw_digit = 0; - } else - return 0; - } - if (octets < 4) - return 0; - - memcpy(dst, tmp, INADDRSZ); - return 1; -} - -/* int - * inet_pton6(src, dst) - * convert presentation level address to network order binary form. - * return: - * 1 if `src' is a valid [RFC1884 2.2] address, else 0. - * notice: - * (1) does not touch `dst' unless it's returning 1. - * (2) :: in a full address is silently ignored. - * credit: - * inspired by Mark Andrews. - * author: - * Paul Vixie, 1996. - */ -static int -inet_pton6(const char *src, unsigned char *dst) -{ - static const char xdigits_l[] = "0123456789abcdef", - xdigits_u[] = "0123456789ABCDEF"; - unsigned char tmp[IN6ADDRSZ], *tp = 0, *endp = 0, *colonp = 0; - const char *xdigits = 0, *curtok = 0; - int ch = 0, saw_xdigit = 0, count_xdigit = 0; - unsigned int val = 0; - unsigned dbloct_count = 0; - - memset((tp = tmp), '\0', IN6ADDRSZ); - endp = tp + IN6ADDRSZ; - colonp = NULL; - /* Leading :: requires some special handling. */ - if (*src == ':') - if (*++src != ':') - return 0; - curtok = src; - saw_xdigit = count_xdigit = 0; - val = 0; - - while ((ch = *src++) != '\0') { - const char *pch; - - pch = strchr((xdigits = xdigits_l), ch); - if (pch == NULL) - pch = strchr((xdigits = xdigits_u), ch); - if (pch != NULL) { - if (count_xdigit >= 4) - return 0; - val <<= 4; - val |= (pch - xdigits); - if (val > 0xffff) - return 0; - saw_xdigit = 1; - count_xdigit++; - continue; - } - if (ch == ':') { - curtok = src; - if (!saw_xdigit) { - if (colonp) - return 0; - colonp = tp; - continue; - } else if (*src == '\0') { - return 0; - } - if (tp + sizeof(int16_t) > endp) - return 0; - *tp++ = (unsigned char) ((val >> 8) & 0xff); - *tp++ = (unsigned char) (val & 0xff); - saw_xdigit = 0; - count_xdigit = 0; - val = 0; - dbloct_count++; - continue; - } - if (ch == '.' && ((tp + INADDRSZ) <= endp) && - inet_pton4(curtok, tp) > 0) { - tp += INADDRSZ; - saw_xdigit = 0; - dbloct_count += 2; - break; /* '\0' was seen by inet_pton4(). */ - } - return 0; - } - if (saw_xdigit) { - if (tp + sizeof(int16_t) > endp) - return 0; - *tp++ = (unsigned char) ((val >> 8) & 0xff); - *tp++ = (unsigned char) (val & 0xff); - dbloct_count++; - } - if (colonp != NULL) { - /* if we already have 8 double octets, having a colon - * means error */ - if (dbloct_count == 8) - return 0; - - /* - * Since some memmove()'s erroneously fail to handle - * overlapping regions, we'll do the shift by hand. - */ - const int n = tp - colonp; - int i; - - for (i = 1; i <= n; i++) { - endp[-i] = colonp[n - i]; - colonp[n - i] = 0; - } - tp = endp; - } - if (tp != endp) - return 0; - memcpy(dst, tmp, IN6ADDRSZ); - return 1; -} - int parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask) { @@ -229,7 +66,7 @@ parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask) if (strlen(ip_str) >= INET_ADDRSTRLEN) return -EINVAL; - if (inet_pton4(ip_str, (unsigned char *)ipv4) != 1) + if (inet_pton(AF_INET, ip_str, ipv4) != 1) return -EINVAL; return 0; @@ -260,7 +97,7 @@ parse_ipv6_addr(const char *token, struct in6_addr *ipv6, uint32_t *mask) if (strlen(ip_str) >= INET6_ADDRSTRLEN) return -EINVAL; - if (inet_pton6(ip_str, (unsigned char *)ipv6) != 1) + if (inet_pton(AF_INET6, ip_str, ipv6) != 1) return -EINVAL; return 0; -- 2.27.0 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2020-11-09 18:40:11.382605693 +0000 +++ 0004-examples-ipsec-secgw-use-POSIX-network-address-conve.patch 2020-11-09 18:40:11.067310286 +0000 @@ -1 +1 @@ -From 4054466be9c64e72c37cffd840ab0f35a946a867 Mon Sep 17 00:00:00 2001 +From 3109cc617c1c882c3b44434d801a73eca8a5e4ed Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 4054466be9c64e72c37cffd840ab0f35a946a867 ] + @@ -21 +23 @@ -index 8f66660322..9069129914 100644 +index fc8c238fe5..dfabac2dbf 100644 @@ -34 +36 @@ -@@ -40,172 +43,6 @@ parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens) +@@ -39,172 +42,6 @@ parse_tokenize_string(char *string, char *tokens[], uint32_t *n_tokens) @@ -207 +209 @@ -@@ -230,7 +67,7 @@ parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask) +@@ -229,7 +66,7 @@ parse_ipv4_addr(const char *token, struct in_addr *ipv4, uint32_t *mask) @@ -216 +218 @@ -@@ -261,7 +98,7 @@ parse_ipv6_addr(const char *token, struct in6_addr *ipv6, uint32_t *mask) +@@ -260,7 +97,7 @@ parse_ipv6_addr(const char *token, struct in6_addr *ipv6, uint32_t *mask)