From patchwork Wed Nov 22 20:05:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 840504 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="KH50FF5d"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhtkq03f3z9s71 for ; Thu, 23 Nov 2017 07:06:27 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751468AbdKVUGT (ORCPT ); Wed, 22 Nov 2017 15:06:19 -0500 Received: from mail-pf0-f196.google.com ([209.85.192.196]:42924 "EHLO mail-pf0-f196.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751260AbdKVUGS (ORCPT ); Wed, 22 Nov 2017 15:06:18 -0500 Received: by mail-pf0-f196.google.com with SMTP id m88so12519146pfi.9 for ; Wed, 22 Nov 2017 12:06:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=q9AvbUu0Wg4o9lcnf8nU0aA3jk933AD6GOxKr6wmVns=; b=KH50FF5dsjdQ4mRYpZfqeRziX4wwOiOSzbQMk9JleT+q64ICpwbR2oCHjXNJnn8g+z 1zlvV9USltJpkN+SVoa03Y/87S0jdEPODwgn4xR7WIYoHATP0vMBL/cFYH2HqKc6uV6y J5lvbG1CLxsi0yIwdqHNfGjP/cjfLBhCYck7mRBFr+Nft+ncN1mq6Zm3eQQ87UHpfCdA qVmXNFu5gQ0vWcyGxEKAoqJIKjQ781ioFBxCOUG9cWkjg04Fwzuv6mfGsNMl0FlVJLBk k5PpWYCA5hdouVhrBd6Pu+PsSPmnWBWRpd/T7s0cUk2oXt2je2V6x89X5XDZUASjcBre XuWg== 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; bh=q9AvbUu0Wg4o9lcnf8nU0aA3jk933AD6GOxKr6wmVns=; b=PRon2OuueoKvOroXmnByPDybO58u19pqZjLK9Ou49K7UhjDodjTddhPE4qfk0tKdgn KNvFYx9HzJBiZ/RbFY0o0v6A63bYcc9J3mU10v36UkP8YPxtnaSUKEko9+lMoPomGZX6 KU56YioEugCMl1tiXzKaLQDkL5YZed0ibDpUafMYpK9feRwzdd1DsBD1zOyGYxtgq/Ko a/aQ2NwHWvADGYj5S3WQJ6+6RiG7P9NlbU+JcFkNZSR8uO0UnKqwXK6T6RVlj/dORtXf XgqiELyXLOn3nAJERgmtvPSFFN9XoKyq3L42YiqUjxsCtUZ+aaPlr3OlReNMJWBKdtZk A4Ng== X-Gm-Message-State: AJaThX74zhsDdH1lNEp3pVzBD7JTeToG4tS5GKBWJVKNpighAn0KbYUe 0HXI6WpGgwxolfkP4EWREVXOhg== X-Google-Smtp-Source: AGs4zMaFIoVCVnyWhxRMBrAfOjvav/RDTMdLiqKh4anMEgdgDz5ywedwmlLJAJsV1T71tL9H+N8Cbg== X-Received: by 10.98.133.155 with SMTP id m27mr20483622pfk.69.1511381177513; Wed, 22 Nov 2017 12:06:17 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id e8sm30511348pfk.6.2017.11.22.12.06.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 12:06:16 -0800 (PST) From: Tom Herbert To: stephen@networkplumber.org Cc: netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH iproute 1/5] ila: Fix reporting of ILA locators and locator match Date: Wed, 22 Nov 2017 12:05:33 -0800 Message-Id: <20171122200537.26703-2-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171122200537.26703-1-tom@quantonium.net> References: <20171122200537.26703-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Fix retrieval of locator value for RTA to get 64 bits instead of 32. Signed-off-by: Tom Herbert --- ip/ipila.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ip/ipila.c b/ip/ipila.c index 0403fc42..fe5c4d8b 100644 --- a/ip/ipila.c +++ b/ip/ipila.c @@ -79,7 +79,7 @@ static void print_ila_locid(FILE *fp, int attr, struct rtattr *tb[], int space) int i; if (tb[attr]) { - blen = print_addr64(rta_getattr_u32(tb[attr]), + blen = print_addr64(rta_getattr_u64(tb[attr]), abuf, sizeof(abuf)); fprintf(fp, "%s", abuf); } else { From patchwork Wed Nov 22 20:05:34 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 840505 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="qvp+gKSb"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhtkr4zRHz9s71 for ; Thu, 23 Nov 2017 07:06:28 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751583AbdKVUGY (ORCPT ); Wed, 22 Nov 2017 15:06:24 -0500 Received: from mail-pf0-f195.google.com ([209.85.192.195]:42928 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751549AbdKVUGV (ORCPT ); Wed, 22 Nov 2017 15:06:21 -0500 Received: by mail-pf0-f195.google.com with SMTP id m88so12519229pfi.9 for ; Wed, 22 Nov 2017 12:06:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZFmYvbdPclguRjQNQeVW4x+ycS/vE0V6Qoxk1KDARzs=; b=qvp+gKSbgBZxTwDJjPOiW+oaT02ExFznaDv8jAWZDPd+PE1xqd5KxvkguhdnIPQMbk IIT6FXON8coptMiiGtnhDCAbEm9b2J2rXMU0kf7bLmi9jzhDMRKzSFhtC2Z58XemYNKE VxShTAU8UZ/V+4Ypjz8YmzSdQt+eibUtHi3/tfzVR+uJiB0o9dy79jgw9Drj3QC+5msV pO+Wde4cMVaRjfa2m/H2le6Y7JkEQajDWgne6pT80nBrzx/1bH4pSvTxCQKxwCJR0skq uDHsVpW3FyOEw4WqOF41o133OXuj/Dn3PCyPIlBhRHcmkErEMZ6FEo91UO4Vpr2CQZoD j6mA== 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; bh=ZFmYvbdPclguRjQNQeVW4x+ycS/vE0V6Qoxk1KDARzs=; b=U232MExhObzU8g5PbJ9N/k/+QaLqxy/Eq7CXhDmcW9jeiQykMVhlz+VcPtcM31ec8d MaN8Ee9vUZuiGYGfnGj0KQJDGo6afrr/3n5ZVuSpVQOu0ZUfkWHKuigcdECWSYqpMnZE FJ5sv06zNMFGQkR/1RpxIWznZgnotkw/AVBolMZeGH2GzoMeuKpIPl2wna101p8e3j6A nidSUG0f6U8pzFKkCbCW7qdqsp5ekXR3wkk1eLgcPhuPG81eSYzu9OapPb5L3vpoyfw1 JJZPIcag+JY92XN/tVFTNVVDURLS4ZUAd4hSn4Oo762S/svSRo+AEiRqkPfgCtFU+8/T 7ksw== X-Gm-Message-State: AJaThX6uVUO9y/7QoyJbGYIvLcR+CIYStPJgS4Dy1ocrPOTvQsvBjYr+ /GQqrBR1uvY/dOvrCX171myHzg== X-Google-Smtp-Source: AGs4zMZAsBBd2tSyVcudn63V0gr+khgQ84o7sm5UZPVYblTH8oIBMlTkqedSsQ2XdlHifRVV7s4fsQ== X-Received: by 10.99.172.88 with SMTP id z24mr22203135pgn.46.1511381181315; Wed, 22 Nov 2017 12:06:21 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id e8sm30511348pfk.6.2017.11.22.12.06.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 12:06:20 -0800 (PST) From: Tom Herbert To: stephen@networkplumber.org Cc: netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH iproute 2/5] ila: added csum neutral support to ipila Date: Wed, 22 Nov 2017 12:05:34 -0800 Message-Id: <20171122200537.26703-3-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171122200537.26703-1-tom@quantonium.net> References: <20171122200537.26703-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add checksum neutral to ip ila configuration. This control whether the C-bit is interpreted as checksum neutral bit. Signed-off-by: Tom Herbert --- ip/ipila.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 55 insertions(+), 2 deletions(-) diff --git a/ip/ipila.c b/ip/ipila.c index fe5c4d8b..d4935d18 100644 --- a/ip/ipila.c +++ b/ip/ipila.c @@ -26,7 +26,9 @@ static void usage(void) { fprintf(stderr, "Usage: ip ila add loc_match LOCATOR_MATCH " - "loc LOCATOR [ dev DEV ]\n"); + "loc LOCATOR [ dev DEV ] " + "[ csum-mode { adj-transport | neutral-map | " + "no-action } ]\n"); fprintf(stderr, " ip ila del loc_match LOCATOR_MATCH " "[ loc LOCATOR ] [ dev DEV ]\n"); fprintf(stderr, " ip ila list\n"); @@ -48,6 +50,32 @@ static int genl_family = -1; #define ADDR_BUF_SIZE sizeof("xxxx:xxxx:xxxx:xxxx") +static char *ila_csum_mode2name(__u8 csum_mode) +{ + switch (csum_mode) { + case ILA_CSUM_ADJUST_TRANSPORT: + return "adj-transport"; + case ILA_CSUM_NEUTRAL_MAP: + return "neutral-map"; + case ILA_CSUM_NO_ACTION: + return "no-action"; + default: + return "unknown"; + } +} + +static int ila_csum_name2mode(char *name) +{ + if (strcmp(name, "adj-transport") == 0) + return ILA_CSUM_ADJUST_TRANSPORT; + else if (strcmp(name, "neutral-map") == 0) + return ILA_CSUM_NEUTRAL_MAP; + else if (strcmp(name, "no-action") == 0) + return ILA_CSUM_NO_ACTION; + else + return -1; +} + static int print_addr64(__u64 addr, char *buff, size_t len) { __u16 *words = (__u16 *)&addr; @@ -113,9 +141,19 @@ static int print_ila_mapping(const struct sockaddr_nl *who, print_ila_locid(fp, ILA_ATTR_LOCATOR, tb, ADDR_BUF_SIZE); if (tb[ILA_ATTR_IFINDEX]) - fprintf(fp, "%s", ll_index_to_name(rta_getattr_u32(tb[ILA_ATTR_IFINDEX]))); + fprintf(fp, "%-16s", + ll_index_to_name(rta_getattr_u32( + tb[ILA_ATTR_IFINDEX]))); + else + fprintf(fp, "%-16s", "-"); + + if (tb[ILA_ATTR_CSUM_MODE]) + fprintf(fp, "%s", + ila_csum_mode2name(rta_getattr_u8( + tb[ILA_ATTR_CSUM_MODE]))); else fprintf(fp, "-"); + fprintf(fp, "\n"); return 0; @@ -152,9 +190,11 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, __u64 locator = 0; __u64 locator_match = 0; int ifindex = 0; + int csum_mode = 0; bool loc_set = false; bool loc_match_set = false; bool ifindex_set = false; + bool csum_mode_set = false; while (argc > 0) { if (!matches(*argv, "loc")) { @@ -174,6 +214,16 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, return -1; } loc_match_set = true; + } else if (!matches(*argv, "csum-mode")) { + NEXT_ARG(); + + csum_mode = ila_csum_name2mode(*argv); + if (csum_mode < 0) { + fprintf(stderr, "Bad csum-mode: %s\n", + *argv); + return -1; + } + csum_mode_set = true; } else if (!matches(*argv, "dev")) { NEXT_ARG(); @@ -211,6 +261,9 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, if (ifindex_set) addattr32(n, 1024, ILA_ATTR_IFINDEX, ifindex); + if (csum_mode_set) + addattr8(n, 1024, ILA_ATTR_CSUM_MODE, csum_mode); + return 0; } From patchwork Wed Nov 22 20:05:35 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 840506 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="dP8up/xR"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhtkv3DYsz9s71 for ; Thu, 23 Nov 2017 07:06:31 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751622AbdKVUG1 (ORCPT ); Wed, 22 Nov 2017 15:06:27 -0500 Received: from mail-pl0-f66.google.com ([209.85.160.66]:39923 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751586AbdKVUGY (ORCPT ); Wed, 22 Nov 2017 15:06:24 -0500 Received: by mail-pl0-f66.google.com with SMTP id l16so1348031pli.6 for ; Wed, 22 Nov 2017 12:06:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9BowNIFGh1rVW77sD7VXaa+4meyrUrW955dR7PC8exM=; b=dP8up/xRL30UgWp/ykjc804ojzwzx+Hed8qZCXc2c6o9hHfKv8YlbTKGpXMj8zwp1+ T4e6KP9q9Siz0ZNLd2Jd8xbllFqZs2fJIGoB+ebiCvSRwhYYlwujbC4ymGZx8cd/ULcN sgnfaeWan898IAY64na5X9Cjlmqj0o7RGD/jkc9cTW/g0sYgPxVm1C8oS/nDdjShrsfT lWfdCXzVuuoBjmHZXtbaxCXPf4q9cQTsTfRoUbb+yfjhxwuRj+pWc5pLgNKt+U6kstfG jHFMBuCz6UaVp8JV1N/WsxDcKl3fH8XxkvRarZg5sOX3ry1bC0dwEZJN+reYPpNY3Ioa +m6A== 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; bh=9BowNIFGh1rVW77sD7VXaa+4meyrUrW955dR7PC8exM=; b=KZu9qlGvssS6RrNIrIKVrex/aoPQVKxrmKWlBxyQr3vfz87UPHN3Pleg5HYwjPq//d PA3062c7wxrf+U5fZauBMnzU3yFkfy9Wpfa+5CXhJemLnVDz3uBj+7pTFcTzTEF6xbLr VIs5pI2MYwuRHuynqA2Kt6AQM4QuOXflvPnQvKKxZNpzk5s3TDAN5tit0JIx+8J3KQT3 p38RvPZohAxHrrXrO+GgXLvxguvjUPfke6v8mRO9XiZ/3zSLhFZeWdKTnUQaA0bHU4cD uiXUl6TuWuTHoHUUGr94OJDgRLw0bnrmaL6DONzrPjGy6k1XSgaJxqF3sFjuX9AT3Lle jUDA== X-Gm-Message-State: AJaThX76rs+JQLk2Mdw0RB8I13gkjYkTzFj2iKeIP4LNWq1VdR9ZlbTj R7fC9nwkHstIC5KhFm1d+yXjsgtZ X-Google-Smtp-Source: AGs4zMZNIYyS94JNr+e3Bkk8BaDDmEjtep9fw4cnx/+LmsP+Wbk8EM3HCZ283f91+9RaItbzuFIbjg== X-Received: by 10.159.231.23 with SMTP id w23mr22923421plq.436.1511381184150; Wed, 22 Nov 2017 12:06:24 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id e8sm30511348pfk.6.2017.11.22.12.06.22 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 12:06:23 -0800 (PST) From: Tom Herbert To: stephen@networkplumber.org Cc: netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH iproute 3/5] ila: support to configure checksum neutral-map-auto Date: Wed, 22 Nov 2017 12:05:35 -0800 Message-Id: <20171122200537.26703-4-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171122200537.26703-1-tom@quantonium.net> References: <20171122200537.26703-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Configuration support in both ip ila and ip LWT for checksum neutral-map-auto. This is a mode of ILA where checksum neutral mapping is assumed for packets (there is no C-bit in the identifier to indicate checksum neutral). Signed-off-by: Tom Herbert --- ip/ipila.c | 8 +++++--- ip/iproute_lwtunnel.c | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ip/ipila.c b/ip/ipila.c index d4935d18..0b706f0b 100644 --- a/ip/ipila.c +++ b/ip/ipila.c @@ -28,7 +28,7 @@ static void usage(void) fprintf(stderr, "Usage: ip ila add loc_match LOCATOR_MATCH " "loc LOCATOR [ dev DEV ] " "[ csum-mode { adj-transport | neutral-map | " - "no-action } ]\n"); + "neutral-map-auto | no-action } ]\n"); fprintf(stderr, " ip ila del loc_match LOCATOR_MATCH " "[ loc LOCATOR ] [ dev DEV ]\n"); fprintf(stderr, " ip ila list\n"); @@ -59,6 +59,8 @@ static char *ila_csum_mode2name(__u8 csum_mode) return "neutral-map"; case ILA_CSUM_NO_ACTION: return "no-action"; + case ILA_CSUM_NEUTRAL_MAP_AUTO: + return "neutral-map-auto"; default: return "unknown"; } @@ -70,8 +72,8 @@ static int ila_csum_name2mode(char *name) return ILA_CSUM_ADJUST_TRANSPORT; else if (strcmp(name, "neutral-map") == 0) return ILA_CSUM_NEUTRAL_MAP; - else if (strcmp(name, "no-action") == 0) - return ILA_CSUM_NO_ACTION; + else if (strcmp(name, "neutral-map-auto") == 0) + return ILA_CSUM_NEUTRAL_MAP_AUTO; else return -1; } diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c index 1c8adbe7..ebedd94a 100644 --- a/ip/iproute_lwtunnel.c +++ b/ip/iproute_lwtunnel.c @@ -288,6 +288,8 @@ static char *ila_csum_mode2name(__u8 csum_mode) return "neutral-map"; case ILA_CSUM_NO_ACTION: return "no-action"; + case ILA_CSUM_NEUTRAL_MAP_AUTO: + return "neutral-map-auto"; default: return "unknown"; } @@ -301,6 +303,8 @@ static int ila_csum_name2mode(char *name) return ILA_CSUM_NEUTRAL_MAP; else if (strcmp(name, "no-action") == 0) return ILA_CSUM_NO_ACTION; + else if (strcmp(name, "neutral-map-auto") == 0) + return ILA_CSUM_NEUTRAL_MAP_AUTO; else return -1; } From patchwork Wed Nov 22 20:05:36 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 840508 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="uQVYdEer"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhtl31pRXz9s71 for ; Thu, 23 Nov 2017 07:06:39 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751658AbdKVUGb (ORCPT ); Wed, 22 Nov 2017 15:06:31 -0500 Received: from mail-pl0-f67.google.com ([209.85.160.67]:45636 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751611AbdKVUG1 (ORCPT ); Wed, 22 Nov 2017 15:06:27 -0500 Received: by mail-pl0-f67.google.com with SMTP id f6so1346185pln.12 for ; Wed, 22 Nov 2017 12:06:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=E6HtmFLKvWk5NHiud/rP58x4Ubj1TFdviLgfnFlIRDc=; b=uQVYdEerMMSqIv7CoWpipnBLONcFbfYsVaaHb6ttJJ/jgOJJ78cf0OiaWn/o7pg9Cm H+YnHpLsyytLn3kcVzQN6M6/xvxlUs8Ajwcn9TJGSFMk9UH0Ir3VYLlk1CdRAxMYiGn1 2vOWUZGRJBWZTGT692fdettMixuHSA2D8LElvbGZ7bKEDwdWSrGS0MMCden5LRArxAeo f+8AeHTOTexvrz5r9Ca+fIUJrVbi0VfCHLf7Zqi43QXtM4hNwPO7AFZtHnbYDlU6z/Sl KpLsX1LoChpJOy+joysG5wXEZwC4UfpvnYwAiFAv0GwoVPSlIyx2f4GzwfvX8UT7OtHO K/dA== 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; bh=E6HtmFLKvWk5NHiud/rP58x4Ubj1TFdviLgfnFlIRDc=; b=HPUPqFNfqj03q1ZmIp6zgxVhzlJSGBuoe/j+S9a/sLsWHCFlGR17nVk9DrUChEux8J GAqnINpF/ZjlgFOKgxeQEDFygejuLy/vUqtpPuYnXBL+x6Rid8FULID2k2O0TfdS0Ela rP7NVyhLHptclta6UOsfYQJB6shC5PUQ08cBlGjtkvXxVPKuzA9IgJowfAd6ddmsa0x7 lHDf5dYt0gkhhONww6ooZJUr1lX69jT791+rtY4C8ODBUqPqMrd8a5Dp8c0GS9cc77fq ElFKFXXPhh+yEQQB9dDFCLQv70imRXLHsZGBQZui1XH7QIeXFUxu4gOjcyK39MPVNRd/ QUAQ== X-Gm-Message-State: AJaThX62g/7yggtXefnCLrStecYeb269fVhgcL3ep63iQ/hEskY8Q7lM miMSdXScy97lQhh9A9T/gXkhbg== X-Google-Smtp-Source: AGs4zMZxfSuezskjYwZMFCavjWeO5NF6TjPungXtRHnNhJ+HYdLev6FnG/3+q8wnhjwqJcFPICjG6g== X-Received: by 10.159.229.136 with SMTP id az8mr22620913plb.59.1511381186552; Wed, 22 Nov 2017 12:06:26 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id e8sm30511348pfk.6.2017.11.22.12.06.25 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 12:06:25 -0800 (PST) From: Tom Herbert To: stephen@networkplumber.org Cc: netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH iproute 4/5] ila: support for configuring identifier and hook types Date: Wed, 22 Nov 2017 12:05:36 -0800 Message-Id: <20171122200537.26703-5-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171122200537.26703-1-tom@quantonium.net> References: <20171122200537.26703-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Expose identifier type and hook types in ILA configuraiton and reporting. This adds support in both ip ila ILA LWT. Signed-off-by: Tom Herbert --- ip/ipila.c | 75 ++++++++++++++++++++++++++++++++++- ip/iproute_lwtunnel.c | 107 +++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 179 insertions(+), 3 deletions(-) diff --git a/ip/ipila.c b/ip/ipila.c index 0b706f0b..c7a8ede8 100644 --- a/ip/ipila.c +++ b/ip/ipila.c @@ -28,7 +28,8 @@ static void usage(void) fprintf(stderr, "Usage: ip ila add loc_match LOCATOR_MATCH " "loc LOCATOR [ dev DEV ] " "[ csum-mode { adj-transport | neutral-map | " - "neutral-map-auto | no-action } ]\n"); + "neutral-map-auto | no-action } ] " + "[ ident-type { luid | use-format } ]\n"); fprintf(stderr, " ip ila del loc_match LOCATOR_MATCH " "[ loc LOCATOR ] [ dev DEV ]\n"); fprintf(stderr, " ip ila list\n"); @@ -74,6 +75,54 @@ static int ila_csum_name2mode(char *name) return ILA_CSUM_NEUTRAL_MAP; else if (strcmp(name, "neutral-map-auto") == 0) return ILA_CSUM_NEUTRAL_MAP_AUTO; + else if (strcmp(name, "no-action") == 0) + return ILA_CSUM_NO_ACTION; + else if (strcmp(name, "neutral-map-auto") == 0) + return ILA_CSUM_NEUTRAL_MAP_AUTO; + else + return -1; +} + +static char *ila_ident_type2name(__u8 ident_type) +{ + switch (ident_type) { + case ILA_ATYPE_IID: + return "iid"; + case ILA_ATYPE_LUID: + return "luid"; + case ILA_ATYPE_VIRT_V4: + return "virt-v4"; + case ILA_ATYPE_VIRT_UNI_V6: + return "virt-uni-v6"; + case ILA_ATYPE_VIRT_MULTI_V6: + return "virt-multi-v6"; + case ILA_ATYPE_NONLOCAL_ADDR: + return "nonlocal-addr"; + case ILA_ATYPE_USE_FORMAT: + return "use-format"; + default: + return "unknown"; + } +} + +static int ila_ident_name2type(char *name) +{ + if (!strcmp(name, "luid")) + return ILA_ATYPE_LUID; + else if (!strcmp(name, "use-format")) + return ILA_ATYPE_USE_FORMAT; +#if 0 /* No kernel support for configuring these yet */ + else if (!strcmp(name, "iid")) + return ILA_ATYPE_IID; + else if (!strcmp(name, "virt-v4")) + return ILA_ATYPE_VIRT_V4; + else if (!strcmp(name, "virt-uni-v6")) + return ILA_ATYPE_VIRT_UNI_V6; + else if (!strcmp(name, "virt-multi-v6")) + return ILA_ATYPE_VIRT_MULTI_V6; + else if (!strcmp(name, "nonlocal-addr")) + return ILA_ATYPE_NONLOCAL_ADDR; +#endif else return -1; } @@ -147,13 +196,20 @@ static int print_ila_mapping(const struct sockaddr_nl *who, ll_index_to_name(rta_getattr_u32( tb[ILA_ATTR_IFINDEX]))); else - fprintf(fp, "%-16s", "-"); + fprintf(fp, "%-10s ", "-"); if (tb[ILA_ATTR_CSUM_MODE]) fprintf(fp, "%s", ila_csum_mode2name(rta_getattr_u8( tb[ILA_ATTR_CSUM_MODE]))); else + fprintf(fp, "%-10s ", "-"); + + if (tb[ILA_ATTR_IDENT_TYPE]) + fprintf(fp, "%s", + ila_ident_type2name(rta_getattr_u8( + tb[ILA_ATTR_IDENT_TYPE]))); + else fprintf(fp, "-"); fprintf(fp, "\n"); @@ -193,10 +249,12 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, __u64 locator_match = 0; int ifindex = 0; int csum_mode = 0; + int ident_type = 0; bool loc_set = false; bool loc_match_set = false; bool ifindex_set = false; bool csum_mode_set = false; + bool ident_type_set = false; while (argc > 0) { if (!matches(*argv, "loc")) { @@ -226,6 +284,16 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, return -1; } csum_mode_set = true; + } else if (!matches(*argv, "ident-type")) { + NEXT_ARG(); + + ident_type = ila_ident_name2type(*argv); + if (ident_type < 0) { + fprintf(stderr, "Bad ident-type: %s\n", + *argv); + return -1; + } + ident_type_set = true; } else if (!matches(*argv, "dev")) { NEXT_ARG(); @@ -266,6 +334,9 @@ static int ila_parse_opt(int argc, char **argv, struct nlmsghdr *n, if (csum_mode_set) addattr8(n, 1024, ILA_ATTR_CSUM_MODE, csum_mode); + if (ident_type_set) + addattr8(n, 1024, ILA_ATTR_IDENT_TYPE, ident_type); + return 0; } diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c index ebedd94a..e57cc9f3 100644 --- a/ip/iproute_lwtunnel.c +++ b/ip/iproute_lwtunnel.c @@ -309,6 +309,72 @@ static int ila_csum_name2mode(char *name) return -1; } +static char *ila_ident_type2name(__u8 ident_type) +{ + switch (ident_type) { + case ILA_ATYPE_IID: + return "iid"; + case ILA_ATYPE_LUID: + return "luid"; + case ILA_ATYPE_VIRT_V4: + return "virt-v4"; + case ILA_ATYPE_VIRT_UNI_V6: + return "virt-uni-v6"; + case ILA_ATYPE_VIRT_MULTI_V6: + return "virt-multi-v6"; + case ILA_ATYPE_NONLOCAL_ADDR: + return "nonlocal-addr"; + case ILA_ATYPE_USE_FORMAT: + return "use-format"; + default: + return "unknown"; + } +} + +static int ila_ident_name2type(char *name) +{ + if (!strcmp(name, "luid")) + return ILA_ATYPE_LUID; + else if (!strcmp(name, "use-format")) + return ILA_ATYPE_USE_FORMAT; +#if 0 /* No kernel support for configuring these yet */ + else if (!strcmp(name, "iid")) + return ILA_ATYPE_IID; + else if (!strcmp(name, "virt-v4")) + return ILA_ATYPE_VIRT_V4; + else if (!strcmp(name, "virt-uni-v6")) + return ILA_ATYPE_VIRT_UNI_V6; + else if (!strcmp(name, "virt-multi-v6")) + return ILA_ATYPE_VIRT_MULTI_V6; + else if (!strcmp(name, "nonlocal-addr")) + return ILA_ATYPE_NONLOCAL_ADDR; +#endif + else + return -1; +} + +static char *ila_hook_type2name(__u8 hook_type) +{ + switch (hook_type) { + case ILA_HOOK_ROUTE_OUTPUT: + return "output"; + case ILA_HOOK_ROUTE_INPUT: + return "input"; + default: + return "unknown"; + } +} + +static int ila_hook_name2type(char *name) +{ + if (!strcmp(name, "output")) + return ILA_HOOK_ROUTE_OUTPUT; + else if (!strcmp(name, "input")) + return ILA_HOOK_ROUTE_INPUT; + else + return -1; +} + static void print_encap_ila(FILE *fp, struct rtattr *encap) { struct rtattr *tb[ILA_ATTR_MAX+1]; @@ -325,7 +391,18 @@ static void print_encap_ila(FILE *fp, struct rtattr *encap) if (tb[ILA_ATTR_CSUM_MODE]) fprintf(fp, " csum-mode %s ", - ila_csum_mode2name(rta_getattr_u8(tb[ILA_ATTR_CSUM_MODE]))); + ila_csum_mode2name(rta_getattr_u8( + tb[ILA_ATTR_CSUM_MODE]))); + + if (tb[ILA_ATTR_IDENT_TYPE]) + fprintf(fp, " ident-type %s ", + ila_ident_type2name(rta_getattr_u8( + tb[ILA_ATTR_IDENT_TYPE]))); + + if (tb[ILA_ATTR_HOOK_TYPE]) + fprintf(fp, " hook-type %s ", + ila_hook_type2name(rta_getattr_u8( + tb[ILA_ATTR_HOOK_TYPE]))); } static void print_encap_ip6(FILE *fp, struct rtattr *encap) @@ -777,6 +854,34 @@ static int parse_encap_ila(struct rtattr *rta, size_t len, (__u8)csum_mode); argc--; argv++; + } else if (strcmp(*argv, "ident-type") == 0) { + int ident_type; + + NEXT_ARG(); + + ident_type = ila_ident_name2type(*argv); + if (ident_type < 0) + invarg("\"ident-type\" value is invalid\n", + *argv); + + rta_addattr8(rta, 1024, ILA_ATTR_IDENT_TYPE, + (__u8)ident_type); + + argc--; argv++; + } else if (strcmp(*argv, "hook-type") == 0) { + int hook_type; + + NEXT_ARG(); + + hook_type = ila_hook_name2type(*argv); + if (hook_type < 0) + invarg("\"hook-type\" value is invalid\n", + *argv); + + rta_addattr8(rta, 1024, ILA_ATTR_HOOK_TYPE, + (__u8)hook_type); + + argc--; argv++; } else { break; } From patchwork Wed Nov 22 20:05:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Herbert X-Patchwork-Id: 840507 X-Patchwork-Delegate: shemminger@vyatta.com Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@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; dkim=pass (2048-bit key; unprotected) header.d=quantonium-net.20150623.gappssmtp.com header.i=@quantonium-net.20150623.gappssmtp.com header.b="Boe2pR2d"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3yhtkz580hz9s71 for ; Thu, 23 Nov 2017 07:06:35 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751677AbdKVUGc (ORCPT ); Wed, 22 Nov 2017 15:06:32 -0500 Received: from mail-pl0-f68.google.com ([209.85.160.68]:33477 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751631AbdKVUG3 (ORCPT ); Wed, 22 Nov 2017 15:06:29 -0500 Received: by mail-pl0-f68.google.com with SMTP id a12so1353380pll.0 for ; Wed, 22 Nov 2017 12:06:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=quantonium-net.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=+skt2FSpP4qTjJ+M9PRf5wJjDcLR0y558KVt+ve4gPQ=; b=Boe2pR2dFNqwbKj6+cKbEEJb5vN67GegSfP593O6HyPZllxLcywOjAsKqDPkxlPFMf Z0Ui+bwqIhsbHx5Wfu6th+Ext423g8Vuub13qOQu5vdW14ltHcf8xM0GkHK9mQXBRrxU R4XpE/awZB77CFL5hKF7lYz0pzJoo3t0TJHB7OKHXGL67RvUm1eBPARt8mLVd0wfZC7e /RPc3CMnfHFLrP4QAzw/9lf3j7DgP67KNZTjUhNL5JckJRW/w00TQ5DWAYHxGF612tn2 HMgcY1OTSdynSq8TvwgX1DAMbcOmmbpD5I9ZUOqUSqqlvrqUFMT3zIta4GwzTOiiqEz0 IXQg== 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; bh=+skt2FSpP4qTjJ+M9PRf5wJjDcLR0y558KVt+ve4gPQ=; b=jaONqMMkUbvvn8Zfv1GewHov5/jGYHJeMyYJegAmV5S4Ut2Dghg2dUpj/0u/1G8STy nkK08gDwsDPnGYk78pK3G9KLqpYEazBjyh14yf0vYFeeS6Esr/6Wb3i+Xcdi+ACtvp/K RWz/6pfaVCTOMTtijJ3TuMzb7tDvCdr9JIdkrWkagfPKNrQ4yI0B9bCG+NbglliPSntY O53zXnC7/M3hRlnf6QpSl7IeOJUH+pJMkrYlj8fxknbEYVmnnSUZH3LfhixX7FcFuscz uhI+uSeIEefR3vgrOK0XvmPg+K3ClmRnLwqmrp8/wYvHVzX7l62Yj9GEGOUA30WLFm5K phZw== X-Gm-Message-State: AJaThX6VyYAMpmunOR0xcR0gBCDFFOMrydK7ZIVPEhI8Gcfm7drPEclH cE63xDs2KNxTymeMsGCC7fxGow== X-Google-Smtp-Source: AGs4zMbwmalzyWziltjEjibwMHiHLoYhwlzYByyIMHCtoZ1TtCg4N7T6aXCcS+Kln7ls3i0rgih70Q== X-Received: by 10.159.194.138 with SMTP id y10mr22591964pln.85.1511381189018; Wed, 22 Nov 2017 12:06:29 -0800 (PST) Received: from localhost.localdomain (c-73-162-13-107.hsd1.ca.comcast.net. [73.162.13.107]) by smtp.gmail.com with ESMTPSA id e8sm30511348pfk.6.2017.11.22.12.06.27 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 22 Nov 2017 12:06:28 -0800 (PST) From: Tom Herbert To: stephen@networkplumber.org Cc: netdev@vger.kernel.org, rohit@quantonium.net, Tom Herbert Subject: [PATCH iproute 5/5] ila: create ila_common.h Date: Wed, 22 Nov 2017 12:05:37 -0800 Message-Id: <20171122200537.26703-6-tom@quantonium.net> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20171122200537.26703-1-tom@quantonium.net> References: <20171122200537.26703-1-tom@quantonium.net> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Move common functions related to checksum, identifier and hook-type parsing to a common include file. Signed-off-by: Tom Herbert --- ip/ila_common.h | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++ ip/ipila.c | 77 +----------------------------------- ip/iproute_lwtunnel.c | 97 +--------------------------------------------- 3 files changed, 107 insertions(+), 172 deletions(-) create mode 100644 ip/ila_common.h diff --git a/ip/ila_common.h b/ip/ila_common.h new file mode 100644 index 00000000..04c6c2ed --- /dev/null +++ b/ip/ila_common.h @@ -0,0 +1,105 @@ +#ifndef _ILA_COMMON_H_ +#define _ILA_COMMON_H_ + +#include +#include + +static inline char *ila_csum_mode2name(__u8 csum_mode) +{ + switch (csum_mode) { + case ILA_CSUM_ADJUST_TRANSPORT: + return "adj-transport"; + case ILA_CSUM_NEUTRAL_MAP: + return "neutral-map"; + case ILA_CSUM_NO_ACTION: + return "no-action"; + case ILA_CSUM_NEUTRAL_MAP_AUTO: + return "neutral-map-auto"; + default: + return "unknown"; + } +} + +static inline int ila_csum_name2mode(char *name) +{ + if (strcmp(name, "adj-transport") == 0) + return ILA_CSUM_ADJUST_TRANSPORT; + else if (strcmp(name, "neutral-map") == 0) + return ILA_CSUM_NEUTRAL_MAP; + else if (strcmp(name, "neutral-map-auto") == 0) + return ILA_CSUM_NEUTRAL_MAP_AUTO; + else if (strcmp(name, "no-action") == 0) + return ILA_CSUM_NO_ACTION; + else if (strcmp(name, "neutral-map-auto") == 0) + return ILA_CSUM_NEUTRAL_MAP_AUTO; + else + return -1; +} + +static inline char *ila_ident_type2name(__u8 ident_type) +{ + switch (ident_type) { + case ILA_ATYPE_IID: + return "iid"; + case ILA_ATYPE_LUID: + return "luid"; + case ILA_ATYPE_VIRT_V4: + return "virt-v4"; + case ILA_ATYPE_VIRT_UNI_V6: + return "virt-uni-v6"; + case ILA_ATYPE_VIRT_MULTI_V6: + return "virt-multi-v6"; + case ILA_ATYPE_NONLOCAL_ADDR: + return "nonlocal-addr"; + case ILA_ATYPE_USE_FORMAT: + return "use-format"; + default: + return "unknown"; + } +} + +static inline int ila_ident_name2type(char *name) +{ + if (!strcmp(name, "luid")) + return ILA_ATYPE_LUID; + else if (!strcmp(name, "use-format")) + return ILA_ATYPE_USE_FORMAT; +#if 0 /* No kernel support for configuring these yet */ + else if (!strcmp(name, "iid")) + return ILA_ATYPE_IID; + else if (!strcmp(name, "virt-v4")) + return ILA_ATYPE_VIRT_V4; + else if (!strcmp(name, "virt-uni-v6")) + return ILA_ATYPE_VIRT_UNI_V6; + else if (!strcmp(name, "virt-multi-v6")) + return ILA_ATYPE_VIRT_MULTI_V6; + else if (!strcmp(name, "nonlocal-addr")) + return ILA_ATYPE_NONLOCAL_ADDR; +#endif + else + return -1; +} + +static inline char *ila_hook_type2name(__u8 hook_type) +{ + switch (hook_type) { + case ILA_HOOK_ROUTE_OUTPUT: + return "output"; + case ILA_HOOK_ROUTE_INPUT: + return "input"; + default: + return "unknown"; + } +} + +static inline int ila_hook_name2type(char *name) +{ + if (!strcmp(name, "output")) + return ILA_HOOK_ROUTE_OUTPUT; + else if (!strcmp(name, "input")) + return ILA_HOOK_ROUTE_INPUT; + else + return -1; +} + +#endif /* _ILA_COMMON_H_ */ diff --git a/ip/ipila.c b/ip/ipila.c index c7a8ede8..fcc20bf7 100644 --- a/ip/ipila.c +++ b/ip/ipila.c @@ -22,6 +22,7 @@ #include "libgenl.h" #include "utils.h" #include "ip_common.h" +#include "ila_common.h" static void usage(void) { @@ -51,82 +52,6 @@ static int genl_family = -1; #define ADDR_BUF_SIZE sizeof("xxxx:xxxx:xxxx:xxxx") -static char *ila_csum_mode2name(__u8 csum_mode) -{ - switch (csum_mode) { - case ILA_CSUM_ADJUST_TRANSPORT: - return "adj-transport"; - case ILA_CSUM_NEUTRAL_MAP: - return "neutral-map"; - case ILA_CSUM_NO_ACTION: - return "no-action"; - case ILA_CSUM_NEUTRAL_MAP_AUTO: - return "neutral-map-auto"; - default: - return "unknown"; - } -} - -static int ila_csum_name2mode(char *name) -{ - if (strcmp(name, "adj-transport") == 0) - return ILA_CSUM_ADJUST_TRANSPORT; - else if (strcmp(name, "neutral-map") == 0) - return ILA_CSUM_NEUTRAL_MAP; - else if (strcmp(name, "neutral-map-auto") == 0) - return ILA_CSUM_NEUTRAL_MAP_AUTO; - else if (strcmp(name, "no-action") == 0) - return ILA_CSUM_NO_ACTION; - else if (strcmp(name, "neutral-map-auto") == 0) - return ILA_CSUM_NEUTRAL_MAP_AUTO; - else - return -1; -} - -static char *ila_ident_type2name(__u8 ident_type) -{ - switch (ident_type) { - case ILA_ATYPE_IID: - return "iid"; - case ILA_ATYPE_LUID: - return "luid"; - case ILA_ATYPE_VIRT_V4: - return "virt-v4"; - case ILA_ATYPE_VIRT_UNI_V6: - return "virt-uni-v6"; - case ILA_ATYPE_VIRT_MULTI_V6: - return "virt-multi-v6"; - case ILA_ATYPE_NONLOCAL_ADDR: - return "nonlocal-addr"; - case ILA_ATYPE_USE_FORMAT: - return "use-format"; - default: - return "unknown"; - } -} - -static int ila_ident_name2type(char *name) -{ - if (!strcmp(name, "luid")) - return ILA_ATYPE_LUID; - else if (!strcmp(name, "use-format")) - return ILA_ATYPE_USE_FORMAT; -#if 0 /* No kernel support for configuring these yet */ - else if (!strcmp(name, "iid")) - return ILA_ATYPE_IID; - else if (!strcmp(name, "virt-v4")) - return ILA_ATYPE_VIRT_V4; - else if (!strcmp(name, "virt-uni-v6")) - return ILA_ATYPE_VIRT_UNI_V6; - else if (!strcmp(name, "virt-multi-v6")) - return ILA_ATYPE_VIRT_MULTI_V6; - else if (!strcmp(name, "nonlocal-addr")) - return ILA_ATYPE_NONLOCAL_ADDR; -#endif - else - return -1; -} - static int print_addr64(__u64 addr, char *buff, size_t len) { __u16 *words = (__u16 *)&addr; diff --git a/ip/iproute_lwtunnel.c b/ip/iproute_lwtunnel.c index e57cc9f3..27266171 100644 --- a/ip/iproute_lwtunnel.c +++ b/ip/iproute_lwtunnel.c @@ -25,6 +25,7 @@ #include "utils.h" #include "iproute_lwtunnel.h" #include "bpf_util.h" +#include "ila_common.h" #include #include @@ -279,102 +280,6 @@ static void print_encap_ip(FILE *fp, struct rtattr *encap) fprintf(fp, "tos %d ", rta_getattr_u8(tb[LWTUNNEL_IP_TOS])); } -static char *ila_csum_mode2name(__u8 csum_mode) -{ - switch (csum_mode) { - case ILA_CSUM_ADJUST_TRANSPORT: - return "adj-transport"; - case ILA_CSUM_NEUTRAL_MAP: - return "neutral-map"; - case ILA_CSUM_NO_ACTION: - return "no-action"; - case ILA_CSUM_NEUTRAL_MAP_AUTO: - return "neutral-map-auto"; - default: - return "unknown"; - } -} - -static int ila_csum_name2mode(char *name) -{ - if (strcmp(name, "adj-transport") == 0) - return ILA_CSUM_ADJUST_TRANSPORT; - else if (strcmp(name, "neutral-map") == 0) - return ILA_CSUM_NEUTRAL_MAP; - else if (strcmp(name, "no-action") == 0) - return ILA_CSUM_NO_ACTION; - else if (strcmp(name, "neutral-map-auto") == 0) - return ILA_CSUM_NEUTRAL_MAP_AUTO; - else - return -1; -} - -static char *ila_ident_type2name(__u8 ident_type) -{ - switch (ident_type) { - case ILA_ATYPE_IID: - return "iid"; - case ILA_ATYPE_LUID: - return "luid"; - case ILA_ATYPE_VIRT_V4: - return "virt-v4"; - case ILA_ATYPE_VIRT_UNI_V6: - return "virt-uni-v6"; - case ILA_ATYPE_VIRT_MULTI_V6: - return "virt-multi-v6"; - case ILA_ATYPE_NONLOCAL_ADDR: - return "nonlocal-addr"; - case ILA_ATYPE_USE_FORMAT: - return "use-format"; - default: - return "unknown"; - } -} - -static int ila_ident_name2type(char *name) -{ - if (!strcmp(name, "luid")) - return ILA_ATYPE_LUID; - else if (!strcmp(name, "use-format")) - return ILA_ATYPE_USE_FORMAT; -#if 0 /* No kernel support for configuring these yet */ - else if (!strcmp(name, "iid")) - return ILA_ATYPE_IID; - else if (!strcmp(name, "virt-v4")) - return ILA_ATYPE_VIRT_V4; - else if (!strcmp(name, "virt-uni-v6")) - return ILA_ATYPE_VIRT_UNI_V6; - else if (!strcmp(name, "virt-multi-v6")) - return ILA_ATYPE_VIRT_MULTI_V6; - else if (!strcmp(name, "nonlocal-addr")) - return ILA_ATYPE_NONLOCAL_ADDR; -#endif - else - return -1; -} - -static char *ila_hook_type2name(__u8 hook_type) -{ - switch (hook_type) { - case ILA_HOOK_ROUTE_OUTPUT: - return "output"; - case ILA_HOOK_ROUTE_INPUT: - return "input"; - default: - return "unknown"; - } -} - -static int ila_hook_name2type(char *name) -{ - if (!strcmp(name, "output")) - return ILA_HOOK_ROUTE_OUTPUT; - else if (!strcmp(name, "input")) - return ILA_HOOK_ROUTE_INPUT; - else - return -1; -} - static void print_encap_ila(FILE *fp, struct rtattr *encap) { struct rtattr *tb[ILA_ATTR_MAX+1];