]> git.proxmox.com Git - mirror_iproute2.git/commitdiff
erspan: Add type I version 0 support.
authorWilliam Tu <u9012063@gmail.com>
Sun, 26 Apr 2020 15:04:15 +0000 (08:04 -0700)
committerDavid Ahern <dsahern@gmail.com>
Thu, 30 Apr 2020 02:40:10 +0000 (02:40 +0000)
The Type I ERSPAN frame format is based on the barebones
IP + GRE(4-byte) encapsulation on top of the raw mirrored frame.
Both type I and II use 0x88BE as protocol type. Unlike type II
and III, no sequence number or key is required.

To creat a type I erspan tunnel device:
$ ip link add dev erspan11 type erspan \
local 172.16.1.100 remote 172.16.1.200 \
erspan_ver 0

CC: Dmitriy Andreyevskiy <dandreye@cisco.com>
Signed-off-by: William Tu <u9012063@gmail.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
ip/link_gre.c
ip/link_gre6.c
man/man8/ip-link.8.in

index d616a970e9a28cf637326508373515616efc40c3..0461e5d06ef31c3ba7d3625f96838366da7b4af7 100644 (file)
@@ -354,8 +354,8 @@ get_failed:
                        NEXT_ARG();
                        if (get_u8(&erspan_ver, *argv, 0))
                                invarg("invalid erspan version\n", *argv);
-                       if (erspan_ver != 1 && erspan_ver != 2)
-                               invarg("erspan version must be 1 or 2\n", *argv);
+                       if (erspan_ver > 2)
+                               invarg("erspan version must be 0/1/2\n", *argv);
                } else if (is_erspan && strcmp(*argv, "erspan_dir") == 0) {
                        NEXT_ARG();
                        if (matches(*argv, "ingress") == 0)
index 94a4ee700431cac46af5be0ff4b10732551dd48e..9d270f4b44558dfcd09341fe424a2456bc2e73b9 100644 (file)
@@ -389,8 +389,8 @@ get_failed:
                        NEXT_ARG();
                        if (get_u8(&erspan_ver, *argv, 0))
                                invarg("invalid erspan version\n", *argv);
-                       if (erspan_ver != 1 && erspan_ver != 2)
-                               invarg("erspan version must be 1 or 2\n", *argv);
+                       if (erspan_ver > 2)
+                               invarg("erspan version must be 0/1/2\n", *argv);
                } else if (strcmp(*argv, "erspan_dir") == 0) {
                        NEXT_ARG();
                        if (matches(*argv, "ingress") == 0)
@@ -430,7 +430,7 @@ get_failed:
        addattr_l(n, 1024, IFLA_GRE_FLOWINFO, &flowinfo, 4);
        addattr32(n, 1024, IFLA_GRE_FLAGS, flags);
        addattr32(n, 1024, IFLA_GRE_FWMARK, fwmark);
-       if (erspan_ver) {
+       if (erspan_ver <= 2) {
                addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver);
                if (erspan_ver == 1 && erspan_idx != 0) {
                        addattr32(n, 1024, IFLA_GRE_ERSPAN_INDEX, erspan_idx);
index 939e2ad49f4e8c58cb5b53fc4d6c2357f01e5fdf..e8a25451f7cd4a4cdbf5497992be1dcb340d5db0 100644 (file)
@@ -1163,8 +1163,8 @@ It must be an address on another interface on this host.
 .BR erspan_ver " \fIversion "
 - specifies the ERSPAN version number.
 .IR version
-indicates the ERSPAN version to be created: 1 for version 1 (type II)
-or 2 for version 2 (type III).
+indicates the ERSPAN version to be created: 0 for version 0 type I,
+1 for version 1 (type II) or 2 for version 2 (type III).
 
 .sp
 .BR erspan " \fIIDX "