[iproute-next] tc: m_tunnel_key: Allow key-less tunnels

Message ID 1547125430-4251-1-git-send-email-adin@mellanox.com
State New
Delegated to: stephen hemminger
Headers show
Series
  • [iproute-next] tc: m_tunnel_key: Allow key-less tunnels
Related show

Commit Message

Adi Nissim Jan. 10, 2019, 1:03 p.m.
Change the id parameter of the tunnel_key set action from mandatory to
optional.

Some tunneling protocols (e.g. GRE) specify the id as an optional field.

Signed-off-by: Adi Nissim <adin@mellanox.com>
---
 man/man8/tc-tunnel_key.8 | 4 ++--
 tc/m_tunnel_key.c        | 6 ++----
 2 files changed, 4 insertions(+), 6 deletions(-)

--
1.8.3.1

Comments

Or Gerlitz Jan. 13, 2019, 10:10 a.m. | #1
On Thu, Jan 10, 2019 at 3:05 PM Adi Nissim <adin@mellanox.com> wrote:
> Change the id parameter of the tunnel_key set action from mandatory to
> optional.
> Some tunneling protocols (e.g. GRE) specify the id as an optional field.

Hi,

The kernel code for the tunnel key actions allows keyless tunnels as
of 5.0 (commit
80ef0f22ceda "net/sched: act_tunnel_key: Allow key-less tunnels") - so this one
here is actually for iproute and not iproute-next, Stephen, could you look?

Or.

Patch

diff --git a/man/man8/tc-tunnel_key.8 b/man/man8/tc-tunnel_key.8
index dc8421b..2145eb6 100644
--- a/man/man8/tc-tunnel_key.8
+++ b/man/man8/tc-tunnel_key.8
@@ -59,12 +59,12 @@  above).
 .TP
 .B set
 Set tunnel metadata to be used by the IP tunnel device. Requires
-.B id
-,
 .B src_ip
 and
 .B dst_ip
 options.
+.B id
+,
 .B dst_port
 and
 .B geneve_opts
diff --git a/tc/m_tunnel_key.c b/tc/m_tunnel_key.c
index e9e71e4..9449287 100644
--- a/tc/m_tunnel_key.c
+++ b/tc/m_tunnel_key.c
@@ -25,7 +25,7 @@  static void explain(void)
 	fprintf(stderr, "       tunnel_key set <TUNNEL_KEY>\n");
 	fprintf(stderr,
 		"Where TUNNEL_KEY is a combination of:\n"
-		"id <TUNNELID> (mandatory)\n"
+		"id <TUNNELID>\n"
 		"src_ip <IP> (mandatory)\n"
 		"dst_ip <IP> (mandatory)\n"
 		"dst_port <UDP_PORT>\n"
@@ -217,7 +217,6 @@  static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
 	int ret;
 	int has_src_ip = 0;
 	int has_dst_ip = 0;
-	int has_key_id = 0;
 	int csum = 1;

 	if (matches(*argv, "tunnel_key") != 0)
@@ -273,7 +272,6 @@  static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
 				fprintf(stderr, "Illegal \"id\"\n");
 				return -1;
 			}
-			has_key_id = 1;
 		} else if (matches(*argv, "dst_port") == 0) {
 			NEXT_ARG();
 			ret = tunnel_key_parse_dst_port(*argv,
@@ -335,7 +333,7 @@  static int parse_tunnel_key(struct action_util *a, int *argc_p, char ***argv_p,
 	}

 	if (action == TCA_TUNNEL_KEY_ACT_SET &&
-	    (!has_src_ip || !has_dst_ip || !has_key_id)) {
+	    (!has_src_ip || !has_dst_ip)) {
 		fprintf(stderr, "set needs tunnel_key parameters\n");
 		explain();
 		return -1;