aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-08 19:45:03 +0000
committeraliguori <aliguori@c046a42c-6fe2-441c-8c8c-71466251a162>2009-01-08 19:45:03 +0000
commit34b25ca74eab49cedf994193dc7727e3f2613219 (patch)
treec82bf6151d8ad08db96dbd5794bb82e440c77bbf
parent436e5e53c97d8fb469306b18a0c31dc60f5e546c (diff)
Allow devices be notified of link status change (Mark McLoughlin)
Signed-off-by: Mark McLoughlin <markmc@redhat.com> Signed-off-by: Anthony Liguori <aliguori@us.ibm.com> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6248 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--net.c3
-rw-r--r--net.h3
2 files changed, 6 insertions, 0 deletions
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;