[ovs-discuss] About ovs_vport_init() error

Gregory Rose gvrose8192 at gmail.com
Mon Jan 21 19:17:58 UTC 2019



On 1/16/2019 11:10 PM, Ken Ajiro wrote:
>    Hello,
>
>    On my kernel 4.9.0 box, I could not insmod openvswitch.ko (OVS 2.10.1) by following error:
>
> openvswitch: LISP tunneling driver
> GRE over IPv4 demultiplexor driver
> can't add protocol
> Cannot take GRE protocol rx entry- The GRE/ERSPAN rx feature not supported
> openvswitch: GRE over IPv4 tunneling driver
> openvswitch: rpl_ip6gre_init: can't add protocol
> openvswitch: GRE TX only over IPv6 tunneling driver
> insmod: ERROR: could not insert module /tmp/openvswitch.ko: Operation not permitted
>
>    I think that this error caused by following logic:
>
>    datapath/vport.c ovs_vport_init()
>
> 	err = ip6gre_init();
> 	if (err && err != -EEXIST) {
> 		goto err_ip6gre;   <==========
> 	} else {
> 		if (err == -EEXIST) {
> 			pr_warn("IPv6 GRE/ERSPAN Rx mode is not supported\n");
> 			goto skip_ip6_tunnel_init;
> 		}
> 	}
>
>    datapath/linux/compat/ip6_gre.c rpl_ip6gre_init():
>
> 	err = inet6_add_protocol(&ip6gre_protocol, IPPROTO_GRE);
> 	if (err < 0) {
> 		pr_info("%s: can't add protocol\n", __func__);   <==========
> 		unregister_pernet_device(&ip6gre_net_ops);
> 		goto ip6_gre_loaded;
> 	}
>
>    I checked net/ipv6/protocol.c and understand that when inet6_add_protocol() failed it returns -1 (same to -EPERM) instead of -EEXIT.
>
>    Is it needed checking if err is -EEXIT at ovs_vport_init() ?

That's -EEXIST.

Yes, special  handling is required in that case.  It looks to me like 
you have the gre and ip6_gre kernel
modules already loaded.  Try unloading those first.

- Greg

>    
>    Thanks,
>



More information about the discuss mailing list