summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2008-11-24 02:07:20 +0000
committerDan Williams <dcbw@redhat.com>2008-11-24 02:07:20 +0000
commitef20c1bbdcd28c6a2f272ef4640c6bcc60c7881b (patch)
treedec9f2e2c2d55c00471020f2dde3f786f52400a0
parent2328650d2ea3a2bc3f5936fff9095460144f45ab (diff)
downloadNetworkManager-ef20c1bbdcd28c6a2f272ef4640c6bcc60c7881b.tar.gz
2008-11-23 Dan Williams <dcbw@redhat.com>
* callouts/nm-dispatcher-action.c - (construct_envp, nm_dispatcher_action): pass connection UUID to scripts in the environment git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@4329 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
-rw-r--r--ChangeLog6
-rw-r--r--callouts/nm-dispatcher-action.c26
2 files changed, 25 insertions, 7 deletions
diff --git a/ChangeLog b/ChangeLog
index aa621ac88f..b91afeb709 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2008-11-23 Dan Williams <dcbw@redhat.com>
+
+ * callouts/nm-dispatcher-action.c
+ - (construct_envp, nm_dispatcher_action): pass connection UUID to
+ scripts in the environment
+
2008-11-21 Dan Williams <dcbw@redhat.com>
Patch from Tambet Ingo <tambet@gmail.com>
diff --git a/callouts/nm-dispatcher-action.c b/callouts/nm-dispatcher-action.c
index c106fa900b..198ffd2f16 100644
--- a/callouts/nm-dispatcher-action.c
+++ b/callouts/nm-dispatcher-action.c
@@ -38,6 +38,7 @@
#include <NetworkManager.h>
#include <libnm-util/nm-connection.h>
#include <libnm-util/nm-setting-ip4-config.h>
+#include <libnm-util/nm-setting-connection.h>
#include <libnm-glib/nm-dhcp4-config.h>
#include <libnm-glib/nm-device.h>
@@ -235,7 +236,7 @@ add_one_option_to_envp (gpointer key, gpointer value, gpointer user_data)
}
static char **
-construct_envp (NMIP4Config *ip4_config, NMDHCP4Config *dhcp4_config)
+construct_envp (const char *uuid, NMIP4Config *ip4_config, NMDHCP4Config *dhcp4_config)
{
guint32 env_size = 0;
char **envp;
@@ -261,7 +262,8 @@ construct_envp (NMIP4Config *ip4_config, NMDHCP4Config *dhcp4_config)
+ 1 /* domains */
+ 1 /* hostname */
+ g_slist_length (routes)
- + 1 /* routes length */;
+ + 1 /* routes length */
+ + 1 /* connection UUID */;
if (dhcp4_config) {
options = nm_dhcp4_config_get_options (dhcp4_config);
@@ -270,6 +272,9 @@ construct_envp (NMIP4Config *ip4_config, NMDHCP4Config *dhcp4_config)
envp = g_new0 (char *, env_size + 1);
+ if (uuid)
+ envp[envp_idx++] = g_strdup_printf ("CONNECTION_UUID=%s", uuid);
+
/* IP4 config stuff */
for (iter = addresses, num = 0; iter; iter = g_slist_next (iter)) {
NMIP4Address *addr = (NMIP4Address *) iter->data;
@@ -377,6 +382,7 @@ dispatch_scripts (const char *action,
const char *iface,
const char *parent_iface,
NMDeviceType type,
+ const char *uuid,
NMIP4Config *ip4_config,
NMDHCP4Config *dhcp4_config)
{
@@ -422,7 +428,7 @@ dispatch_scripts (const char *action,
}
g_dir_close (dir);
- envp = construct_envp (ip4_config, dhcp4_config);
+ envp = construct_envp (uuid, ip4_config, dhcp4_config);
for (iter = scripts; iter; iter = g_slist_next (iter)) {
gchar *argv[4];
@@ -467,8 +473,8 @@ nm_dispatcher_action (Handler *h,
{
Dispatcher *d = g_object_get_data (G_OBJECT (h), "dispatcher");
NMConnection *connection;
- char *iface = NULL;
- char *parent_iface = NULL;
+ char *iface = NULL, *parent_iface = NULL;
+ const char *uuid = NULL;
NMDeviceType type = NM_DEVICE_TYPE_UNKNOWN;
NMDeviceState dev_state = NM_DEVICE_STATE_UNKNOWN;
NMDevice *device = NULL;
@@ -483,7 +489,13 @@ nm_dispatcher_action (Handler *h,
d->quit_timeout = g_timeout_add (10000, quit_timeout_cb, NULL);
connection = nm_connection_new_from_hash (connection_hash, error);
- if (!connection) {
+ if (connection) {
+ NMSettingConnection *s_con;
+
+ s_con = NM_SETTING_CONNECTION (nm_connection_get_setting (connection, NM_TYPE_SETTING_CONNECTION));
+ if (s_con)
+ uuid = nm_setting_connection_get_uuid (s_con);
+ } else {
g_warning ("%s: Invalid connection: '%s' / '%s' invalid: %d",
__func__,
g_type_name (nm_connection_lookup_setting_type_by_quark ((*error)->domain)),
@@ -547,7 +559,7 @@ nm_dispatcher_action (Handler *h,
}
dispatch:
- dispatch_scripts (action, iface, parent_iface, type, ip4_config, dhcp4_config);
+ dispatch_scripts (action, iface, parent_iface, type, uuid, ip4_config, dhcp4_config);
if (device)
g_object_unref (device);