From: William Tu <u9012...@gmail.com> Date: Fri, 18 May 2018 19:22:28 -0700
> Currently ip6gre and ip6erspan share single metadata mode device, > using 'collect_md_tun'. Thus, when doing: > ip link add dev ip6gre11 type ip6gretap external > ip link add dev ip6erspan12 type ip6erspan external > RTNETLINK answers: File exists > simply fails due to the 2nd tries to create the same collect_md_tun. > > The patch fixes it by adding a separate collect md tunnel device > for the ip6erspan, 'collect_md_tun_erspan'. As a result, a couple > of places need to refactor/split up in order to distinguish ip6gre > and ip6erspan. > > First, move the collect_md check at ip6gre_tunnel_{unlink,link} and > create separate function {ip6gre,ip6ersapn}_tunnel_{link_md,unlink_md}. > Then before link/unlink, make sure the link_md/unlink_md is called. > Finally, a separate ndo_uninit is created for ip6erspan. Tested it > using the samples/bpf/test_tunnel_bpf.sh. > > Fixes: ef7baf5e083c ("ip6_gre: add ip6 erspan collect_md mode") > Signed-off-by: William Tu <u9012...@gmail.com> Applied and queued up for -stable.