ConnMan creates a /var/run/connman state directory even though nothing
writes files there. ConnMan VPNd uses the directory for l2tp and ppp
configuration files. Fix this by removing the state directory creation
from ConnMan and modifying ConnMan VPNd to create a state directory
named /var/run/connman-vpn instead.

Thanks to Roman Kubiak for noticing this.
---

Need not say this but please test,

     Patrik


 Makefile.am        |  4 +++-
 Makefile.plugins   | 10 +++++-----
 src/main.c         |  6 ------
 vpn/main.c         |  2 +-
 vpn/plugins/l2tp.c |  8 ++++----
 5 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/Makefile.am b/Makefile.am
index b2778cc..38fe805 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -153,6 +153,7 @@ endif
 CLEANFILES = src/connman.conf $(BUILT_SOURCES)
 
 statedir = $(localstatedir)/run/connman
+vpn_statedir = $(localstatedir)/run/connman-vpn
 
 if VPN
 vpn_plugindir = $(libdir)/connman/plugins-vpn
@@ -185,6 +186,7 @@ AM_CFLAGS = @DBUS_CFLAGS@ @GLIB_CFLAGS@ @XTABLES_CFLAGS@ \
                                @GNUTLS_CFLAGS@ $(builtin_cflags) \
                                -DCONNMAN_PLUGIN_BUILTIN \
                                -DSTATEDIR=\""$(statedir)"\" \
+                               -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                -DPLUGINDIR=\""$(build_plugindir)"\" \
                                -DSCRIPTDIR=\""$(build_scriptdir)"\" \
                                -DSTORAGEDIR=\""$(storagedir)\"" \
@@ -215,7 +217,7 @@ if VPN
 vpn_connman_vpnd_CFLAGS = @DBUS_CFLAGS@ @GLIB_CFLAGS@ \
                                $(builtin_vpn_cflags) \
                                -DCONNMAN_PLUGIN_BUILTIN \
-                               -DSTATEDIR=\""$(statedir)"\" \
+                               -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                -DPLUGINDIR=\""$(build_vpn_plugindir)"\" \
                                -DSCRIPTDIR=\""$(build_scriptdir)"\" \
                                -DSTORAGEDIR=\""$(storagedir)\"" \
diff --git a/Makefile.plugins b/Makefile.plugins
index cf0f9a8..294cae0 100644
--- a/Makefile.plugins
+++ b/Makefile.plugins
@@ -75,7 +75,7 @@ vpn_plugins_openconnect_la_SOURCES = vpn/plugins/vpn.h 
vpn/plugins/vpn.c \
                                                vpn/plugins/openconnect.c
 vpn_plugins_openconnect_la_CFLAGS = $(plugin_cflags) \
                                        -DOPENCONNECT=\"@OPENCONNECT@\" \
-                                       -DSTATEDIR=\""$(statedir)"\" \
+                                       -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                        -DSCRIPTDIR=\""$(build_scriptdir)"\"
 vpn_plugins_openconnect_la_LDFLAGS = $(plugin_ldflags)
 endif
@@ -93,7 +93,7 @@ vpn_plugin_objects += $(plugins_openvpn_la_OBJECTS)
 vpn_plugins_openvpn_la_SOURCES = vpn/plugins/vpn.h vpn/plugins/vpn.c \
                                                vpn/plugins/openvpn.c
 vpn_plugins_openvpn_la_CFLAGS = $(plugin_cflags) -DOPENVPN=\"@OPENVPN@\" \
-                                       -DSTATEDIR=\""$(statedir)"\" \
+                                       -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                        -DSCRIPTDIR=\""$(build_scriptdir)"\"
 vpn_plugins_openvpn_la_LDFLAGS = $(plugin_ldflags)
 endif
@@ -111,7 +111,7 @@ vpn_plugin_objects += $(plugins_vpnc_la_OBJECTS)
 vpn_plugins_vpnc_la_SOURCES = vpn/plugins/vpn.h vpn/plugins/vpn.c \
                                                vpn/plugins/vpnc.c
 vpn_plugins_vpnc_la_CFLAGS = $(plugin_cflags) -DVPNC=\"@VPNC@\" \
-                                       -DSTATEDIR=\""$(statedir)"\" \
+                                       -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                        -DSCRIPTDIR=\""$(build_scriptdir)"\"
 vpn_plugins_vpnc_la_LDFLAGS = $(plugin_ldflags)
 endif
@@ -129,7 +129,7 @@ vpn_plugin_objects += $(plugins_l2tp_la_OBJECTS)
 vpn_plugins_l2tp_la_SOURCES = vpn/plugins/vpn.h vpn/plugins/vpn.c \
                                                vpn/plugins/l2tp.c
 vpn_plugins_l2tp_la_CFLAGS = $(plugin_cflags) -DL2TP=\"@L2TP@\" \
-                                       -DSTATEDIR=\""$(statedir)"\" \
+                                       -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                        -DSCRIPTDIR=\""$(build_scriptdir)"\"
 vpn_plugins_l2tp_la_LDFLAGS = $(plugin_ldflags)
 endif
@@ -148,7 +148,7 @@ vpn_plugins_pptp_la_SOURCES = vpn/plugins/vpn.h 
vpn/plugins/vpn.c \
                                                vpn/plugins/pptp.c
 vpn_plugins_pptp_la_CFLAGS = $(plugin_cflags) -DPPPD=\"@PPPD@\" \
                                        -DPPTP=\"@PPTP@\" \
-                                       -DSTATEDIR=\""$(statedir)"\" \
+                                       -DVPN_STATEDIR=\""$(vpn_statedir)"\" \
                                        -DSCRIPTDIR=\""$(build_scriptdir)"\"
 vpn_plugins_pptp_la_LDFLAGS = $(plugin_ldflags)
 endif
diff --git a/src/main.c b/src/main.c
index 862a93e..7169c8d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -603,12 +603,6 @@ int main(int argc, char *argv[])
                }
        }
 
-       if (mkdir(STATEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
-                               S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
-               if (errno != EEXIST)
-                       perror("Failed to create state directory");
-       }
-
        if (mkdir(STORAGEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
                                S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
                if (errno != EEXIST)
diff --git a/vpn/main.c b/vpn/main.c
index 1d837b7..ee88aac 100644
--- a/vpn/main.c
+++ b/vpn/main.c
@@ -267,7 +267,7 @@ int main(int argc, char *argv[])
                }
        }
 
-       if (mkdir(STATEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
+       if (mkdir(VPN_STATEDIR, S_IRUSR | S_IWUSR | S_IXUSR |
                                S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH) < 0) {
                if (errno != EEXIST)
                        perror("Failed to create state directory");
diff --git a/vpn/plugins/l2tp.c b/vpn/plugins/l2tp.c
index d12e0bc..91acc85 100644
--- a/vpn/plugins/l2tp.c
+++ b/vpn/plugins/l2tp.c
@@ -472,11 +472,11 @@ static void l2tp_died(struct connman_task *task, int 
exit_code, void *user_data)
 
        vpn_died(task, exit_code, user_data);
 
-       conf_file = g_strdup_printf("/var/run/connman/connman-xl2tpd.conf");
+       conf_file = g_strdup_printf(VPN_STATEDIR "/connman-xl2tpd.conf");
        unlink(conf_file);
        g_free(conf_file);
 
-       conf_file = g_strdup_printf("/var/run/connman/connman-ppp-option.conf");
+       conf_file = g_strdup_printf(VPN_STATEDIR "/connman-ppp-option.conf");
        unlink(conf_file);
        g_free(conf_file);
 }
@@ -640,7 +640,7 @@ static int run_connect(struct vpn_provider *provider,
 
        DBG("username %s password %p", username, password);
 
-       l2tp_name = g_strdup_printf("/var/run/connman/connman-xl2tpd.conf");
+       l2tp_name = g_strdup_printf(VPN_STATEDIR "/connman-xl2tpd.conf");
 
        l2tp_fd = open(l2tp_name, O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR);
        if (l2tp_fd < 0) {
@@ -650,7 +650,7 @@ static int run_connect(struct vpn_provider *provider,
                goto done;
        }
 
-       pppd_name = g_strdup_printf("/var/run/connman/connman-ppp-option.conf");
+       pppd_name = g_strdup_printf(VPN_STATEDIR "/connman-ppp-option.conf");
 
        pppd_fd = open(pppd_name, O_RDWR|O_CREAT|O_TRUNC, S_IRUSR|S_IWUSR);
        if (pppd_fd < 0) {
-- 
1.8.5.3

_______________________________________________
connman mailing list
[email protected]
https://lists.connman.net/mailman/listinfo/connman

Reply via email to