ipsec gre: Do not reread ovs monitor ipsec pidfile in netdev vport so much
authorArun Sharma <arun.sharma@calsoftinc.com>
Tue, 3 Jul 2012 01:30:21 +0000 (18:30 -0700)
committerBen Pfaff <blp@nicira.com>
Tue, 3 Jul 2012 16:05:37 +0000 (09:05 -0700)
Instead of rereading ovs-monitor-ipsec pidfile in netdev-vport so much.  It's
probably only necessary to check once if ovs-monitor-ipsec is running,
and then cache the result.  If the result is negative, then it may be
worthwhile to try again the next time someone tries to configure an ipsec
tunnel.

Signed-off-by: Arun Sharma <arun.sharma@calsoftinc.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
lib/netdev-vport.c

index 7fe169e..d2c2672 100644 (file)
@@ -681,10 +681,14 @@ parse_tunnel_config(const char *name, const char *type,
     }
 
     if (is_ipsec) {
-        char *file_name = xasprintf("%s/%s", ovs_rundir(),
-                "ovs-monitor-ipsec.pid");
-        pid_t pid = read_pidfile(file_name);
-        free(file_name);
+        static pid_t pid = 0;
+        if (pid == 0) {
+            char *file_name = xasprintf("%s/%s", ovs_rundir(),
+                                        "ovs-monitor-ipsec.pid");
+            pid = read_pidfile(file_name);
+            free(file_name);
+        }
+
         if (pid < 0) {
             VLOG_ERR("%s: IPsec requires the ovs-monitor-ipsec daemon",
                      name);