|
@@ -764,9 +764,14 @@ int ip_tunnel_ioctl(struct net_device *dev, struct ip_tunnel_parm *p, int cmd)
|
|
|
|
|
|
t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type);
|
|
t = ip_tunnel_find(itn, p, itn->fb_tunnel_dev->type);
|
|
|
|
|
|
- if (!t && (cmd == SIOCADDTUNNEL)) {
|
|
|
|
- t = ip_tunnel_create(net, itn, p);
|
|
|
|
- err = PTR_ERR_OR_ZERO(t);
|
|
|
|
|
|
+ if (cmd == SIOCADDTUNNEL) {
|
|
|
|
+ if (!t) {
|
|
|
|
+ t = ip_tunnel_create(net, itn, p);
|
|
|
|
+ err = PTR_ERR_OR_ZERO(t);
|
|
|
|
+ break;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err = -EEXIST;
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
if (dev != itn->fb_tunnel_dev && cmd == SIOCCHGTUNNEL) {
|
|
if (dev != itn->fb_tunnel_dev && cmd == SIOCCHGTUNNEL) {
|