From 8f39a2bceaaaf40691c14f6c6183752bd7aef476 Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 31 Jan 2006 04:10:01 +0000 Subject: [PATCH] 2006-01-30 Dan Williams * src/Makefile.am - Define LOCALSTATEDIR * src/nm-device-802-11-wireless.c - (supplicant_exec): tell wpa_ctrl_open() to stick the local control socket where we want it to * src/wpa_ctrl.[ch] - (wpa_ctrl_open): accept location to put local control socket git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@1411 4912f4e0-d625-0410-9fb7-b9a5a253dbdc --- ChangeLog | 12 ++++++++++++ src/Makefile.am | 1 + src/nm-device-802-11-wireless.c | 8 ++++++-- src/wpa_ctrl.c | 6 +++--- src/wpa_ctrl.h | 2 +- 5 files changed, 23 insertions(+), 6 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5974641df1..3600e20b8e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2006-01-30 Dan Williams + + * src/Makefile.am + - Define LOCALSTATEDIR + + * src/nm-device-802-11-wireless.c + - (supplicant_exec): tell wpa_ctrl_open() to stick the local control + socket where we want it to + + * src/wpa_ctrl.[ch] + - (wpa_ctrl_open): accept location to put local control socket + 2006-01-30 Robert Love * src/dhcp-manager/nm-dhcp-manager.c: Pass TRUE for ignore_error in diff --git a/src/Makefile.am b/src/Makefile.am index c06a77eedc..3d92bb962d 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -76,6 +76,7 @@ NetworkManager_CPPFLAGS = \ -DBINDIR=\"$(bindir)\" \ -DDATADIR=\"$(datadir)\" \ -DSYSCONFDIR=\"$(sysconfdir)\" \ + -DLOCALSTATEDIR=\"$(localstatedir)\" \ -DARP_DEBUG diff --git a/src/nm-device-802-11-wireless.c b/src/nm-device-802-11-wireless.c index e97f10436d..585461d174 100644 --- a/src/nm-device-802-11-wireless.c +++ b/src/nm-device-802-11-wireless.c @@ -2399,13 +2399,17 @@ supplicant_exec (NMDevice80211Wireless *self) static gboolean supplicant_interface_init (NMDevice80211Wireless *self) { +#define NM_WPA_CTRL_IFACE_DIR LOCALSTATEDIR"/run/NetworkManager" struct wpa_ctrl * ctrl; char * socket_path; const char * iface = nm_device_get_iface (NM_DEVICE (self)); gboolean success = FALSE; int tries = 0; - if (!(ctrl = wpa_ctrl_open (WPA_SUPPLICANT_GLOBAL_SOCKET))) + /* Ensure our control socket directory is around */ + mkdir (NM_WPA_CTRL_IFACE_DIR, 0700); + + if (!(ctrl = wpa_ctrl_open (WPA_SUPPLICANT_GLOBAL_SOCKET, NM_WPA_CTRL_IFACE_DIR))) goto exit; /* wpa_cli -g/var/run/wpa_supplicant-global interface_add eth1 "" wext /var/run/wpa_supplicant */ @@ -2420,7 +2424,7 @@ supplicant_interface_init (NMDevice80211Wireless *self) */ socket_path = supplicant_get_device_socket_path (self); while (!self->priv->sup_ctrl && (tries++ < 10)) - self->priv->sup_ctrl = wpa_ctrl_open (socket_path); + self->priv->sup_ctrl = wpa_ctrl_open (socket_path, NM_WPA_CTRL_IFACE_DIR); g_free (socket_path); if (!self->priv->sup_ctrl) { diff --git a/src/wpa_ctrl.c b/src/wpa_ctrl.c index eb598c1fc0..f8e55e86d7 100644 --- a/src/wpa_ctrl.c +++ b/src/wpa_ctrl.c @@ -28,7 +28,6 @@ #include "wpa_ctrl.h" /* WHACK #include "common.h" */ - /** * struct wpa_ctrl - Internal structure for control interface library * @@ -50,7 +49,8 @@ struct wpa_ctrl { }; -struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path) +struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path, + const char *local_path_dir) { struct wpa_ctrl *ctrl; #ifndef CONFIG_CTRL_IFACE_UDP @@ -98,7 +98,7 @@ struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path) ctrl->local.sun_family = AF_UNIX; snprintf(ctrl->local.sun_path, sizeof(ctrl->local.sun_path), - "/tmp/wpa_ctrl_%d-%d", getpid(), counter++); + "%s/wpa_ctrl_%d-%d", local_path_dir, getpid(), counter++); if (bind(ctrl->s, (struct sockaddr *) &ctrl->local, sizeof(ctrl->local)) < 0) { close(ctrl->s); diff --git a/src/wpa_ctrl.h b/src/wpa_ctrl.h index c8fa48d693..719ecc5700 100644 --- a/src/wpa_ctrl.h +++ b/src/wpa_ctrl.h @@ -60,7 +60,7 @@ extern "C" { * is configured in wpa_supplicant/hostapd and other programs using the control * interface need to use matching path configuration. */ -struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path); +struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path, const char *local_path_dir); /**