From 562729d744257e0a534bb43a342f213725dbcfe0 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Tue, 7 Dec 2021 05:25:09 +0900 Subject: [PATCH] network/netdev: introduce .is_ready_to_create() entry in netdev vtable --- src/network/netdev/netdev.c | 3 +++ src/network/netdev/netdev.h | 3 +++ 2 files changed, 6 insertions(+) diff --git a/src/network/netdev/netdev.c b/src/network/netdev/netdev.c index 8e7fe11c182..97d06a0d167 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 c7262f550a5..b631e8e23ff 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); -- 2.47.3