@@ -8,6 +8,7 @@
#include "net/queue.h"
#include "migration/vmstate.h"
#include "qapi-types.h"
+#include "qemu/notify.h"
#define MAC_FMT "%02X:%02X:%02X:%02X:%02X:%02X"
#define MAC_ARG(x) ((uint8_t *)(x))[0], ((uint8_t *)(x))[1], \
@@ -195,6 +196,8 @@ struct NICInfo {
int nvectors;
};
+void netdev_register_init_notifier(Notifier *notify);
+
extern int nb_nics;
extern NICInfo nd_table[MAX_NICS];
extern const char *host_net_devices[];
@@ -56,6 +56,9 @@
static VMChangeStateEntry *net_change_state_entry;
static QTAILQ_HEAD(, NetClientState) net_clients;
+static NotifierList netdev_init_notifiers =
+ NOTIFIER_LIST_INITIALIZER(netdev_init_notifiers);
+
const char *host_net_devices[] = {
"tap",
"socket",
@@ -929,6 +932,10 @@ static int net_init_nic(const Netdev *netdev, const char *name,
return idx;
}
+void netdev_register_init_notifier(Notifier *notify)
+{
+ notifier_list_add(&netdev_init_notifiers, notify);
+}
static int (* const net_client_init_fun[NET_CLIENT_DRIVER__MAX])(
const Netdev *netdev,
@@ -1056,6 +1063,11 @@ static int net_client_init1(const void *object, bool is_netdev, Error **errp)
}
return -1;
}
+ if (is_netdev) {
+ const Netdev *netdev = object;
+
+ notifier_list_notify(&netdev_init_notifiers, netdev->id);
+ }
return 0;
}
We can register some callback for this notifier, this will be used by COLO to register a callback which will add each netdev a buffer filter. Signed-off-by: zhanghailiang <zhang.zhanghailiang@huawei.com> Cc: Jason Wang <jasowang@redhat.com> Cc: Yang Hongyang <hongyang.yang@easystack.cn> --- v17: - Rename netdev_init_add_notifier() to netdev_register_init_notifier() v16: - Simplify the codes by using some helpers in QEMU v14: - New patch --- include/net/net.h | 3 +++ net/net.c | 12 ++++++++++++ 2 files changed, 15 insertions(+)