erspan: Add type I version 0 support.
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>
This commit is contained in:
parent
0c42c6b130
commit
846b6b2da8
|
|
@ -354,8 +354,8 @@ get_failed:
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u8(&erspan_ver, *argv, 0))
|
if (get_u8(&erspan_ver, *argv, 0))
|
||||||
invarg("invalid erspan version\n", *argv);
|
invarg("invalid erspan version\n", *argv);
|
||||||
if (erspan_ver != 1 && erspan_ver != 2)
|
if (erspan_ver > 2)
|
||||||
invarg("erspan version must be 1 or 2\n", *argv);
|
invarg("erspan version must be 0/1/2\n", *argv);
|
||||||
} else if (is_erspan && strcmp(*argv, "erspan_dir") == 0) {
|
} else if (is_erspan && strcmp(*argv, "erspan_dir") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (matches(*argv, "ingress") == 0)
|
if (matches(*argv, "ingress") == 0)
|
||||||
|
|
|
||||||
|
|
@ -389,8 +389,8 @@ get_failed:
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (get_u8(&erspan_ver, *argv, 0))
|
if (get_u8(&erspan_ver, *argv, 0))
|
||||||
invarg("invalid erspan version\n", *argv);
|
invarg("invalid erspan version\n", *argv);
|
||||||
if (erspan_ver != 1 && erspan_ver != 2)
|
if (erspan_ver > 2)
|
||||||
invarg("erspan version must be 1 or 2\n", *argv);
|
invarg("erspan version must be 0/1/2\n", *argv);
|
||||||
} else if (strcmp(*argv, "erspan_dir") == 0) {
|
} else if (strcmp(*argv, "erspan_dir") == 0) {
|
||||||
NEXT_ARG();
|
NEXT_ARG();
|
||||||
if (matches(*argv, "ingress") == 0)
|
if (matches(*argv, "ingress") == 0)
|
||||||
|
|
@ -430,7 +430,7 @@ get_failed:
|
||||||
addattr_l(n, 1024, IFLA_GRE_FLOWINFO, &flowinfo, 4);
|
addattr_l(n, 1024, IFLA_GRE_FLOWINFO, &flowinfo, 4);
|
||||||
addattr32(n, 1024, IFLA_GRE_FLAGS, flags);
|
addattr32(n, 1024, IFLA_GRE_FLAGS, flags);
|
||||||
addattr32(n, 1024, IFLA_GRE_FWMARK, fwmark);
|
addattr32(n, 1024, IFLA_GRE_FWMARK, fwmark);
|
||||||
if (erspan_ver) {
|
if (erspan_ver <= 2) {
|
||||||
addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver);
|
addattr8(n, 1024, IFLA_GRE_ERSPAN_VER, erspan_ver);
|
||||||
if (erspan_ver == 1 && erspan_idx != 0) {
|
if (erspan_ver == 1 && erspan_idx != 0) {
|
||||||
addattr32(n, 1024, IFLA_GRE_ERSPAN_INDEX, erspan_idx);
|
addattr32(n, 1024, IFLA_GRE_ERSPAN_INDEX, erspan_idx);
|
||||||
|
|
|
||||||
|
|
@ -1163,8 +1163,8 @@ It must be an address on another interface on this host.
|
||||||
.BR erspan_ver " \fIversion "
|
.BR erspan_ver " \fIversion "
|
||||||
- specifies the ERSPAN version number.
|
- specifies the ERSPAN version number.
|
||||||
.IR version
|
.IR version
|
||||||
indicates the ERSPAN version to be created: 1 for version 1 (type II)
|
indicates the ERSPAN version to be created: 0 for version 0 type I,
|
||||||
or 2 for version 2 (type III).
|
1 for version 1 (type II) or 2 for version 2 (type III).
|
||||||
|
|
||||||
.sp
|
.sp
|
||||||
.BR erspan " \fIIDX "
|
.BR erspan " \fIIDX "
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue