networkd: Allow tunnels to be created without .network (#6701)
Now we don't support tunnels to be created without a .network file that is we need a interface index. This work allows tunnel to be created without a ifindex. Closes #6695
This commit is contained in:
committed by
Lennart Poettering
parent
99f5f8e256
commit
4d7fa6de3b
@@ -601,6 +601,7 @@ static int netdev_load_one(Manager *manager, const char *filename) {
|
||||
_cleanup_free_ NetDev *netdev_raw = NULL;
|
||||
_cleanup_fclose_ FILE *file = NULL;
|
||||
const char *dropin_dirname;
|
||||
bool independent = false;
|
||||
int r;
|
||||
|
||||
assert(manager);
|
||||
@@ -704,13 +705,51 @@ static int netdev_load_one(Manager *manager, const char *filename) {
|
||||
case NETDEV_CREATE_INDEPENDENT:
|
||||
r = netdev_create(netdev, NULL, NULL);
|
||||
if (r < 0)
|
||||
return 0;
|
||||
return r;
|
||||
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
switch (netdev->kind) {
|
||||
case NETDEV_KIND_IPIP:
|
||||
independent = IPIP(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_GRE:
|
||||
independent = GRE(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_GRETAP:
|
||||
independent = GRETAP(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_IP6GRE:
|
||||
independent = IP6GRE(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_IP6GRETAP:
|
||||
independent = IP6GRETAP(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_SIT:
|
||||
independent = SIT(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_VTI:
|
||||
independent = VTI(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_VTI6:
|
||||
independent = VTI6(netdev)->independent;
|
||||
break;
|
||||
case NETDEV_KIND_IP6TNL:
|
||||
independent = IP6TNL(netdev)->independent;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (independent) {
|
||||
r = netdev_create(netdev, NULL, NULL);
|
||||
if (r < 0)
|
||||
return r;
|
||||
}
|
||||
|
||||
netdev = NULL;
|
||||
|
||||
return 0;
|
||||
|
||||
Reference in New Issue
Block a user