[network-manager-openswan/lr/multiple-vpn] fixup! service: process the configuration in the service, not the helper



commit 1a490e7fae598479cd110a6304e36449fc5333ca
Author: Thomas Haller <thaller redhat com>
Date:   Tue Nov 3 13:28:53 2015 +0100

    fixup! service: process the configuration in the service, not the helper
    
    Ensure that all environment variables are set as expected.

 src/nm-openswan-service.c |   43 ++++++++++++++++++++++++++++++++++---------
 1 files changed, 34 insertions(+), 9 deletions(-)
---
diff --git a/src/nm-openswan-service.c b/src/nm-openswan-service.c
index b7b49ce..649eef8 100644
--- a/src/nm-openswan-service.c
+++ b/src/nm-openswan-service.c
@@ -1130,6 +1130,37 @@ lookup_string (GVariant *dict, const gchar *key)
        return value;
 }
 
+static GVariant *
+route_to_gvariant (GVariant *env)
+{
+       GVariantBuilder builder;
+
+       if (!lookup_string (env, "PLUTO_PEER_CLIENT"))
+               return NULL;
+
+       g_variant_builder_init (&builder, G_VARIANT_TYPE ("au"));
+
+#define _try_add(builder, variant) \
+       G_STMT_START { \
+               GVariant *_v = (variant); \
+               \
+               if (!_v) \
+                       goto fail; \
+               g_variant_builder_add_value ((builder), _v); \
+       } G_STMT_END
+       _try_add (&builder, addr4_to_gvariant (lookup_string (env, "PLUTO_PEER_CLIENT_NET")));
+       _try_add (&builder, netmask4_to_gvariant (lookup_string (env, "PLUTO_PEER_CLIENT_MASK")));
+       _try_add (&builder, addr4_to_gvariant (lookup_string (env, "PLUTO_NEXT_HOP")));
+       _try_add (&builder, g_variant_new_uint32 (0));
+       _try_add (&builder, addr4_to_gvariant (lookup_string (env, "PLUTO_MY_SOURCEIP")));
+#undef _try_add
+
+       return g_variant_builder_end (&builder);
+fail:
+       g_variant_builder_clear (&builder);
+       return NULL;
+}
+
 static gboolean
 handle_callback (NMDBusOpenswanHelper *object,
                  GDBusMethodInvocation *invocation,
@@ -1222,15 +1253,9 @@ handle_callback (NMDBusOpenswanHelper *object,
        /* This route */
        /* TODO: We just cumulate the routes on up-client. We probably should add and remove them
         * on route-client and unroute-client verbs. */
-       if (lookup_string (env, "PLUTO_PEER_CLIENT")) {
-               g_variant_builder_init (&builder, G_VARIANT_TYPE ("au"));
-               g_variant_builder_add_value (&builder, addr4_to_gvariant (lookup_string (env, 
"PLUTO_PEER_CLIENT_NET")));
-               g_variant_builder_add_value (&builder, netmask4_to_gvariant (lookup_string (env, 
"PLUTO_PEER_CLIENT_MASK")));
-               g_variant_builder_add_value (&builder, addr4_to_gvariant (lookup_string (env, 
"PLUTO_NEXT_HOP")));
-               g_variant_builder_add_value (&builder, g_variant_new_uint32 (0));
-               g_variant_builder_add_value (&builder, addr4_to_gvariant (lookup_string (env, 
"PLUTO_MY_SOURCEIP")));
-               priv->routes = g_slist_append (priv->routes, g_variant_ref_sink (g_variant_builder_end 
(&builder)));
-       }
+       val = route_to_gvariant (env);
+       if (val)
+               priv->routes = g_slist_append (priv->routes, g_variant_ref_sink (val));
 
        /* Routes */
        g_variant_builder_init (&builder, G_VARIANT_TYPE ("aau"));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]