[network-manager-openvpn/lr/multiple-vpn: 4/7] service: add --bus-name argument



commit aced3d24a25ae1526609b6a89bc1acaa32c3c244
Author: Lubomir Rintel <lkundrak v3 sk>
Date:   Wed Aug 19 11:36:01 2015 +0200

    service: add --bus-name argument
    
    Make it possible to specify a different bus name to acquire.

 nm-openvpn-service.name.in |    1 +
 src/nm-openvpn-service.c   |   15 +++++++++------
 src/nm-openvpn-service.h   |    2 +-
 3 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/nm-openvpn-service.name.in b/nm-openvpn-service.name.in
index 403105b..973fa0a 100644
--- a/nm-openvpn-service.name.in
+++ b/nm-openvpn-service.name.in
@@ -2,6 +2,7 @@
 name=openvpn
 service=org.freedesktop.NetworkManager.openvpn
 program= LIBEXECDIR@/nm-openvpn-service
+supports-multiple-connections=true
 
 [libnm]
 plugin= PLUGINDIR@/libnm-vpn-plugin-openvpn.so
diff --git a/src/nm-openvpn-service.c b/src/nm-openvpn-service.c
index 3d5de31..6efb592 100644
--- a/src/nm-openvpn-service.c
+++ b/src/nm-openvpn-service.c
@@ -941,6 +941,7 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
        char *stmp;
        const char *defport, *proto_tcp;
        const char *nm_openvpn_user, *nm_openvpn_group, *nm_openvpn_chroot;
+       gchar *bus_name;
 
        /* Find openvpn */
        openvpn_binary = nm_find_openvpn ();
@@ -1289,8 +1290,9 @@ nm_openvpn_start_openvpn_binary (NMOpenvpnPlugin *plugin,
 
        /* Up script, called when connection has been established or has been restarted */
        add_openvpn_arg (args, "--up");
-       stmp = g_strdup_printf ("%s%s %s --", NM_OPENVPN_HELPER_PATH, debug ? " --helper-debug" : "",
-                               dev_type_is_tap ? "--tap" : "--tun");
+       g_object_get (plugin, NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME, &bus_name, NULL);
+       stmp = g_strdup_printf ("%s%s --bus-name %s %s --", NM_OPENVPN_HELPER_PATH, debug ? " --helper-debug" 
: "",
+                               bus_name, dev_type_is_tap ? "--tap" : "--tun");
        add_openvpn_arg (args, stmp);
        g_free (stmp);
        add_openvpn_arg (args, "--up-restart");
@@ -1765,14 +1767,13 @@ plugin_state_changed (NMOpenvpnPlugin *plugin,
 }
 
 NMOpenvpnPlugin *
-nm_openvpn_plugin_new (void)
+nm_openvpn_plugin_new (const char *bus_name)
 {
        NMOpenvpnPlugin *plugin;
        GError *error = NULL;
 
        plugin =  (NMOpenvpnPlugin *) g_initable_new (NM_TYPE_OPENVPN_PLUGIN, NULL, &error,
-                                                     NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME,
-                                                     NM_DBUS_SERVICE_OPENVPN,
+                                                     NM_VPN_SERVICE_PLUGIN_DBUS_SERVICE_NAME, bus_name,
                                                      NULL);
 
        if (plugin) {
@@ -1818,10 +1819,12 @@ main (int argc, char *argv[])
        NMOpenvpnPlugin *plugin;
        gboolean persist = FALSE;
        GOptionContext *opt_ctx = NULL;
+       gchar *bus_name = NM_DBUS_SERVICE_OPENVPN;
 
        GOptionEntry options[] = {
                { "persist", 0, 0, G_OPTION_ARG_NONE, &persist, N_("Don't quit when VPN connection 
terminates"), NULL },
                { "debug", 0, 0, G_OPTION_ARG_NONE, &debug, N_("Enable verbose debug logging (may expose 
passwords)"), NULL },
+               { "bus-name", 0, 0, G_OPTION_ARG_STRING, &bus_name, N_("DBus name to use for this instance"), 
NULL },
                {NULL}
        };
 
@@ -1860,7 +1863,7 @@ main (int argc, char *argv[])
            && (system ("/sbin/modprobe tun") == -1))
                exit (EXIT_FAILURE);
 
-       plugin = nm_openvpn_plugin_new ();
+       plugin = nm_openvpn_plugin_new (bus_name);
        if (!plugin)
                exit (EXIT_FAILURE);
 
diff --git a/src/nm-openvpn-service.h b/src/nm-openvpn-service.h
index 5c3b0a4..df2ce60 100644
--- a/src/nm-openvpn-service.h
+++ b/src/nm-openvpn-service.h
@@ -46,6 +46,6 @@ typedef struct {
 
 GType nm_openvpn_plugin_get_type (void);
 
-NMOpenvpnPlugin *nm_openvpn_plugin_new (void);
+NMOpenvpnPlugin *nm_openvpn_plugin_new (const char *bus_name);
 
 #endif /* NM_OPENVPN_SERVICE_H */


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