[ovs-dev] [PATCH 5/6] ovs-monitor-ipsec: Add unixctl support.

Ethan Jackson ethan at nicira.com
Thu Mar 8 01:09:26 UTC 2012


With this patch, users can query a running ovs-monitor-ipsec
daemon's version, or ask it to exit using ovs-appctl.

Signed-off-by: Ethan Jackson <ethan at nicira.com>
---
 debian/ovs-monitor-ipsec |   25 ++++++++++++++++++++++++-
 1 file changed, 24 insertions(+), 1 deletion(-)

diff --git a/debian/ovs-monitor-ipsec b/debian/ovs-monitor-ipsec
index 9707082..a7bc20f 100755
--- a/debian/ovs-monitor-ipsec
+++ b/debian/ovs-monitor-ipsec
@@ -37,11 +37,19 @@ from ovs.db import types
 import ovs.util
 import ovs.daemon
 import ovs.db.idl
+import ovs.unixctl
 import ovs.vlog
 
 vlog = ovs.vlog.Vlog("ovs-monitor-ipsec")
 root_prefix = ''                # Prefix for absolute file names, for testing.
 setkey = "/usr/sbin/setkey"
+exiting = False
+
+
+def unixctl_exit(conn, unused_argv, unused_aux):
+    global exiting
+    exiting = True
+    conn.reply(None)
 
 
 # Class to configure the racoon daemon, which handles IKE negotiation
@@ -450,13 +458,25 @@ def main():
 
     ovs.daemon.daemonize()
 
+    ovs.unixctl.command_register("exit", "", 0, 0, unixctl_exit, None)
+    error, unixctl_server = ovs.unixctl.UnixctlServer.create(None)
+    if error:
+        ovs.util.ovs_fatal(error, "could not create unixctl server", vlog)
+
     ipsec = IPsec()
 
     interfaces = {}
-    while True:
+    while not exiting:
+        unixctl_server.run()
         if not idl.run():
             poller = ovs.poller.Poller()
+
+            unixctl_server.wait(poller)
             idl.wait(poller)
+
+            if exiting:
+                poller.immediate_wake()
+
             poller.block()
             continue
 
@@ -500,6 +520,9 @@ def main():
             update_ipsec(ipsec, interfaces, new_interfaces)
             interfaces = new_interfaces
 
+    unixctl_server.close()
+    idl.close()
+
 
 if __name__ == '__main__':
     try:
-- 
1.7.9.2




More information about the dev mailing list