diff --git a/net.c b/net.c index bae8bef865..fa9fa948cb 100644 --- a/net.c +++ b/net.c @@ -1718,6 +1718,9 @@ int do_set_link(const char *name, const char *up_or_down) term_printf("invalid link status '%s'; only 'up' or 'down' valid\n", up_or_down); + if (vc->link_status_changed) + vc->link_status_changed(vc); + return 1; } diff --git a/net.h b/net.h index 7854129f6c..e79ee3d70a 100644 --- a/net.h +++ b/net.h @@ -9,12 +9,15 @@ typedef ssize_t (IOReadvHandler)(void *, const struct iovec *, int); typedef struct VLANClientState VLANClientState; +typedef void (LinkStatusChanged)(VLANClientState *); + struct VLANClientState { IOReadHandler *fd_read; IOReadvHandler *fd_readv; /* Packets may still be sent if this returns zero. It's used to rate-limit the slirp code. */ IOCanRWHandler *fd_can_read; + LinkStatusChanged *link_status_changed; int link_down; void *opaque; struct VLANClientState *next;