diff options
author | Dan Williams <dcbw@redhat.com> | 2008-08-06 22:23:48 +0000 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2008-08-06 22:23:48 +0000 |
commit | 2c31b5499b8fc0e8512349892c52a5522874b000 (patch) | |
tree | e3fe4003fc933e7c138e149ffb5a690a89fb7f54 /libnm-glib/nm-ip4-config.c | |
parent | 2f3820c6241cb8c400dc9a50aab5f08de1167480 (diff) | |
download | NetworkManager-2c31b5499b8fc0e8512349892c52a5522874b000.tar.gz |
2008-08-06 Dan Williams <dcbw@redhat.com>
* libnm-glib/nm-ip4-config.c
libnm-glib/nm-ip4-config.h
- Add 'routes' property
* libnm-util/nm-setting-vpn.c
libnm-util/nm-setting-vpn.h
- Remove 'routes' property
* libnm-util/nm-setting-ip4-config.c
libnm-util/nm-setting-ip4-config.h
- 'ignore-dhcp-dns' renamed to 'ignore-auto-dns'
- Add 'ignore-auto-routes' property
- 'routes' exposed over D-Bus is now an array of array of uint (4) to
accomodate route metrics
- 'routes' exposed in C is now a list of NMSettingIP4Route structures
* libnm-util/nm-utils.c
libnm-util/nm-utils.h
- Add helpers for marshalling IP4 routes
* src/NetworkManagerUtils.c
- (nm_utils_merge_ip4_config): handle property renames and new route
structure
* src/NetworkManagerSystem.c
- (nm_system_device_set_ip4_route, nm_system_device_set_from_ip4_config,
nm_system_vpn_device_set_from_ip4_config): respect route metrics
* src/dhcp-manager/nm-dhcp-manager.c
- (nm_dhcp_manager_get_ip4_config): handle new route structure
* system-settings/plugins/ifcfg-fedora/reader.c
system-settings/plugins/ifcfg-fedora/writer.c
- Handle routes separately from addresses now that routes have a different
format
* introspection/nm-ip4-config.xml
src/nm-ip4-config.c
src/nm-ip4-config.h
- Rename internal routing functions
- 'static-routes' renamed to 'routes'
git-svn-id: http://svn-archive.gnome.org/svn/NetworkManager/trunk@3898 4912f4e0-d625-0410-9fb7-b9a5a253dbdc
Diffstat (limited to 'libnm-glib/nm-ip4-config.c')
-rw-r--r-- | libnm-glib/nm-ip4-config.c | 59 |
1 files changed, 58 insertions, 1 deletions
diff --git a/libnm-glib/nm-ip4-config.c b/libnm-glib/nm-ip4-config.c index 6eb2c522c9..1382378d35 100644 --- a/libnm-glib/nm-ip4-config.c +++ b/libnm-glib/nm-ip4-config.c @@ -19,6 +19,7 @@ typedef struct { GPtrArray *domains; char *nis_domain; GArray *nis_servers; + GSList *routes; } NMIP4ConfigPrivate; enum { @@ -29,6 +30,7 @@ enum { PROP_DOMAINS, PROP_NIS_DOMAIN, PROP_NIS_SERVERS, + PROP_ROUTES, LAST_PROP }; @@ -76,6 +78,21 @@ demarshal_domains (NMObject *object, GParamSpec *pspec, GValue *value, gpointer return TRUE; } +static gboolean +demarshal_ip4_routes_array (NMObject *object, GParamSpec *pspec, GValue *value, gpointer field) +{ + NMIP4ConfigPrivate *priv = NM_IP4_CONFIG_GET_PRIVATE (object); + + g_slist_foreach (priv->routes, (GFunc) g_free, NULL); + g_slist_free (priv->routes); + priv->routes = NULL; + + priv->routes = nm_utils_ip4_routes_from_gvalue (value); + nm_object_queue_notify (object, NM_IP4_CONFIG_ROUTES); + + return TRUE; +} + static void register_for_property_changed (NMIP4Config *config) { @@ -87,6 +104,7 @@ register_for_property_changed (NMIP4Config *config) { NM_IP4_CONFIG_DOMAINS, demarshal_domains, &priv->domains }, { NM_IP4_CONFIG_NIS_DOMAIN, nm_object_demarshal_generic, &priv->nis_domain }, { NM_IP4_CONFIG_NIS_SERVERS, demarshal_ip4_array, &priv->nis_servers }, + { NM_IP4_CONFIG_ROUTES, demarshal_ip4_routes_array, &priv->routes }, { NULL }, }; @@ -131,6 +149,9 @@ finalize (GObject *object) g_slist_foreach (priv->addresses, (GFunc) g_free, NULL); g_slist_free (priv->addresses); + g_slist_foreach (priv->routes, (GFunc) g_free, NULL); + g_slist_free (priv->routes); + g_free (priv->hostname); g_free (priv->nis_domain); if (priv->nameservers) @@ -174,6 +195,9 @@ get_property (GObject *object, case PROP_NIS_SERVERS: g_value_set_boxed (value, nm_ip4_config_get_nis_servers (self)); break; + case PROP_ROUTES: + nm_utils_ip4_routes_to_gvalue (priv->routes, value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; @@ -239,6 +263,13 @@ nm_ip4_config_class_init (NMIP4ConfigClass *config_class) "NIS servers", NM_TYPE_UINT_ARRAY, G_PARAM_READABLE)); + + g_object_class_install_property + (object_class, PROP_ROUTES, + g_param_spec_pointer (NM_IP4_CONFIG_ROUTES, + "Routes", + "Routes", + G_PARAM_READABLE)); } GObject * @@ -366,7 +397,7 @@ nm_ip4_config_get_nis_domain (NMIP4Config *config) return priv->nis_domain; } -GArray * +const GArray * nm_ip4_config_get_nis_servers (NMIP4Config *config) { NMIP4ConfigPrivate *priv; @@ -392,3 +423,29 @@ nm_ip4_config_get_nis_servers (NMIP4Config *config) return priv->nis_servers; } + +const GSList * +nm_ip4_config_get_routes (NMIP4Config *config) +{ + NMIP4ConfigPrivate *priv; + GValue value = { 0, }; + + g_return_val_if_fail (NM_IS_IP4_CONFIG (config), 0); + + priv = NM_IP4_CONFIG_GET_PRIVATE (config); + if (priv->routes) + return priv->routes; + + if (!nm_object_get_property (NM_OBJECT (config), + "org.freedesktop.DBus.Properties", + "Routes", + &value)) { + return NULL; + } + + demarshal_ip4_routes_array (NM_OBJECT (config), NULL, &value, &priv->routes); + g_value_unset (&value); + + return priv->routes; +} + |