diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index 8e7fe11c18..97d06a0d16 100644 --- a/src/network/netdev/netdev.c +++ b/src/network/netdev/netdev.c @@ -628,6 +628,9 @@ static bool netdev_is_ready_to_create(NetDev *netdev, Link *link) { if (link->set_link_messages > 0) return false; + if (NETDEV_VTABLE(netdev)->is_ready_to_create) + return NETDEV_VTABLE(netdev)->is_ready_to_create(netdev, link); + return true; } diff --git a/src/network/netdev/netdev.h b/src/network/netdev/netdev.h index c7262f550a..b631e8e23f 100644 --- a/src/network/netdev/netdev.h +++ b/src/network/netdev/netdev.h @@ -153,6 +153,9 @@ typedef struct NetDevVTable { /* specifies if netdev is independent, or a master device or a stacked device */ NetDevCreateType create_type; + /* This is used for stacked netdev. Return true when the underlying link is ready. */ + int (*is_ready_to_create)(NetDev *netdev, Link *link); + /* create netdev, if not done via rtnl */ int (*create)(NetDev *netdev);