iproute2/ip
Xin Long 39fa047938 iproute_lwtunnel: add options support for erspan metadata
This patch is to add LWTUNNEL_IP_OPTS_ERSPAN's parse and print to implement
erspan options support in iproute_lwtunnel.

Option is expressed as version:index:dir:hwid, dir and hwid will be parsed
when version is 2, while index will be parsed when version is 1. All of
these are numbers. erspan doesn't support multiple options.

With this patch, users can add and dump erspan options like:

  # ip netns add a
  # ip netns add b
  # ip -n a link add eth0 type veth peer name eth0 netns b
  # ip -n a link set eth0 up
  # ip -n b link set eth0 up
  # ip -n a addr add 10.1.0.1/24 dev eth0
  # ip -n b addr add 10.1.0.2/24 dev eth0
  # ip -n b link add erspan1 type erspan key 1 seq erspan 123 \
    local 10.1.0.2 remote 10.1.0.1
  # ip -n b addr add 1.1.1.1/24 dev erspan1
  # ip -n b link set erspan1 up
  # ip -n b route add 2.1.1.0/24 dev erspan1
  # ip -n a link add erspan1 type erspan key 1 seq local 10.1.0.1 external
  # ip -n a addr add 2.1.1.1/24 dev erspan1
  # ip -n a link set erspan1 up
  # ip -n a route add 1.1.1.0/24 encap ip id 1 \
    erspan_opts 2:123:1:2 dst 10.1.0.2 dev erspan1
  # ip -n a route show
  # ip netns exec a ping 1.1.1.1 -c 1

   1.1.1.0/24  encap ip id 1 src 0.0.0.0 dst 10.1.0.2 ttl 0 tos 0
     erspan_opts 2:0:1:2 dev erspan1 scope link

   PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
   64 bytes from 1.1.1.1: icmp_seq=1 ttl=64 time=0.124 ms

v1->v2:
  - improve the changelog.
  - use PRINT_ANY to support dumping with json format.
v2->v3:
  - implement proper JSON object for opts instead of just bunch of strings.
v3->v4:
  - keep the same format between input and output, json and non json.
  - print version, index, dir and hwid as uint.

Signed-off-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David Ahern <dsahern@gmail.com>
2020-05-01 16:33:09 +00:00
..
.gitignore Another .gitignore file. 2006-08-08 12:11:23 -07:00
Makefile add support for mptcp netlink interface 2020-04-29 16:43:18 +00:00
ifcfg ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
ila_common.h SPDX license identifiers 2017-11-24 12:21:35 -08:00
ip.c add support for mptcp netlink interface 2020-04-29 16:43:18 +00:00
ip6tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
ip_common.h add support for mptcp netlink interface 2020-04-29 16:43:18 +00:00
ipaddress.c Merge branch 'master' of git://git.kernel.org/pub/scm/network/iproute2/iproute2-next 2020-01-29 05:44:53 -08:00
ipaddrlabel.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipfou.c ip fou: Support binding FOU ports 2019-04-22 11:42:54 -07:00
ipila.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipl2tp.c use print_{,h}hu instead of print_uint when format specifier is %{,h}hu 2019-02-10 19:00:59 -08:00
iplink.c ip: allow to use alternative names as handle 2019-10-28 07:35:29 -07:00
iplink_bond.c ip: bond: add peer notification delay support 2019-07-10 13:54:09 -07:00
iplink_bond_slave.c iplink: bond: print lacp actor/partner oper states as strings 2020-01-02 17:45:32 +00:00
iplink_bridge.c ip link: xstats: fix TX IGMP reports string 2020-01-29 10:11:35 -08:00
iplink_bridge_slave.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_can.c iplink_can: fix format output of clock with flag -details 2019-07-26 15:05:20 -07:00
iplink_dummy.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_geneve.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_hsr.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_ifb.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_ipoib.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_ipvlan.c iplink: add ipvtap support 2018-09-20 17:53:56 -07:00
iplink_macvlan.c ip: link_macvlan.c: add json output support 2017-08-17 18:02:41 -07:00
iplink_netdevsim.c ip: link: add support for netdevsim device type 2018-01-02 20:46:19 -08:00
iplink_nlmon.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_rmnet.c ip: add rmnet initial support 2018-06-15 11:15:14 -07:00
iplink_team.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vcan.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
iplink_vlan.c ip: fix link type and vlan oneline output 2020-01-20 09:28:39 -08:00
iplink_vrf.c iplink_vrf: Save device index from response for return code 2018-06-01 15:45:09 -04:00
iplink_vxcan.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
iplink_vxlan.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iplink_xdp.c iplink: add support for reporting multiple XDP programs 2018-07-15 13:10:03 -07:00
iplink_xstats.c ip: xstats: add json output support 2019-03-15 13:55:57 -07:00
ipmacsec.c macsec: add support for specifying offload at link add time 2020-04-26 18:32:03 +00:00
ipmaddr.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipmonitor.c ipmonitor: Add nexthop option to monitor 2019-06-11 10:31:30 -07:00
ipmptcp.c add support for mptcp netlink interface 2020-04-29 16:43:18 +00:00
ipmroute.c Merge branch 'master' into next 2019-06-21 15:59:24 -07:00
ipneigh.c ipneigh: neigh get support 2019-10-01 08:23:43 -07:00
ipnetconf.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
ipnetns.c ipnetns: remove blank lines printed by invarg() messages 2019-11-09 01:33:06 +00:00
ipnexthop.c nexthop: fix error reporting in filter dump 2020-03-15 09:54:42 -07:00
ipntable.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipprefix.c Tree wide: Drop sockaddr_nl arg 2018-10-22 09:43:48 -07:00
iproute.c ip route: Do not imply pref and ttl-propagate are per nexthop 2020-02-28 13:42:59 -08:00
iproute_lwtunnel.c iproute_lwtunnel: add options support for erspan metadata 2020-05-01 16:33:09 +00:00
iprule.c iprule: always print realms keyword for rule 2019-04-24 15:06:15 -07:00
ipseg6.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
iptoken.c ip/iptoken: fix dump error when ipv6 disabled 2019-06-26 14:23:12 -07:00
iptunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
iptuntap.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
ipvrf.c ip vrf: Add json support for show command 2019-09-24 19:35:41 -07:00
ipxfrm.c ip: xfrm: add espintcp encapsulation 2020-01-22 03:42:01 +00:00
link_gre.c erspan: Add type I version 0 support. 2020-04-30 02:40:10 +00:00
link_gre6.c erspan: Add type I version 0 support. 2020-04-30 02:40:10 +00:00
link_ip6tnl.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_iptnl.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_veth.c iplink: Perform most of request buffer setups and checks in iplink_parse() 2018-03-11 17:59:03 -07:00
link_vti.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_vti6.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
link_xfrm.c ip: xfrm if_id -ve value is error 2019-12-25 12:38:13 -08:00
routef mark shell scripts +x 2018-01-10 08:23:49 -08:00
routel mark shell scripts +x 2018-01-10 08:23:49 -08:00
rtm_map.c ip: add a new parameter -Numeric 2019-06-18 08:37:47 -07:00
rtmon.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
rtpr ifcfg/rtpr: convert to POSIX shell 2018-01-10 08:26:09 -08:00
static-syms.c SPDX license identifiers 2017-11-24 12:21:35 -08:00
tcp_metrics.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
tunnel.c ip tunnel: add json output 2019-08-07 12:00:58 -07:00
tunnel.h tunnel: factorize printout of GRE key and flags 2019-07-18 10:19:47 -07:00
xfrm.h xfrm: add option to hide keys in state output 2019-01-21 08:31:20 -08:00
xfrm_monitor.c treewide: refactor help messages 2019-05-20 14:35:07 -07:00
xfrm_policy.c ip-xfrm: Fix help messages 2020-01-29 10:11:14 -08:00
xfrm_state.c xfrm: not try to delete ipcomp states when using deleteall 2020-02-28 13:50:58 -08:00