From: Anton Khramov <anton@xxxxxxxxxxxx>
Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1181539
---
docs/hooks.html.in | 2 ++
src/network/bridge_driver.c | 6 ++++++
src/util/virhook.c | 3 ++-
src/util/virhook.h | 1 +
4 files changed, 11 insertions(+), 1 deletion(-)
diff --git a/docs/hooks.html.in b/docs/hooks.html.in
index 1aae00c..d4f4ac3 100644
--- a/docs/hooks.html.in
+++ b/docs/hooks.html.in
@@ -250,6 +250,8 @@
<pre>/etc/libvirt/hooks/network network_name plugged begin -</pre>
Please note, that in this case, the script is passed both network and
domain XMLs on its stdin.</li>
+ <li>When network is updated, the hook script is called as:<br/>
+ <pre>/etc/libvirt/hooks/network network_name updated begin -</pre></li>
<li>When the domain from previous case is shutting down, the interface
is unplugged. This leads to another script invocation:<br/>
<pre>/etc/libvirt/hooks/network network_name unplugged begin -</pre>
diff --git a/src/network/bridge_driver.c b/src/network/bridge_driver.c
index 0fd2095..61ab17b 100644
--- a/src/network/bridge_driver.c
+++ b/src/network/bridge_driver.c
@@ -3460,6 +3460,12 @@ networkUpdate(virNetworkPtr net,
goto cleanup;
}
}
+
+ /* call the 'updated' network hook script */
+ if (networkRunHook(network, NULL, NULL, VIR_HOOK_NETWORK_OP_UPDATED,
+ VIR_HOOK_SUBOP_BEGIN) < 0)
+ goto cleanup;
+
ret = 0;
cleanup:
virNetworkObjEndAPI(&network);
diff --git a/src/util/virhook.c b/src/util/virhook.c
index d37d6da..a8422a2 100644
--- a/src/util/virhook.c
+++ b/src/util/virhook.c
@@ -93,7 +93,8 @@ VIR_ENUM_IMPL(virHookNetworkOp, VIR_HOOK_NETWORK_OP_LAST,
"started",
"stopped",
"plugged",
- "unplugged")
+ "unplugged",
+ "updated")
static int virHooksFound = -1;
diff --git a/src/util/virhook.h b/src/util/virhook.h
index 550ef84..4015426 100644
--- a/src/util/virhook.h
+++ b/src/util/virhook.h
@@ -82,6 +82,7 @@ typedef enum {
VIR_HOOK_NETWORK_OP_STOPPED, /* network has stopped */
VIR_HOOK_NETWORK_OP_IFACE_PLUGGED, /* an interface has been plugged into the network */
VIR_HOOK_NETWORK_OP_IFACE_UNPLUGGED, /* an interface was unplugged from the network */
+ VIR_HOOK_NETWORK_OP_UPDATED, /* network has been updated */
VIR_HOOK_NETWORK_OP_LAST,
} virHookNetworkOpType;