diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2015-02-27 16:49:42 +0100 |
---|---|---|
committer | Lubomir Rintel <lkundrak@v3.sk> | 2015-02-27 16:50:09 +0100 |
commit | f981407a0235b8dcba88e0f2d97a10c509d3b5ce (patch) | |
tree | a8ca1c73d081c63c76c56aa42d90fff8395fc160 | |
parent | 84f54f0a5f5cc90887aec3357289fe9429da738a (diff) | |
download | NetworkManager-f981407a0235b8dcba88e0f2d97a10c509d3b5ce.tar.gz |
core: pass ifindex as parameter to nm_ip6_config_new()lr/route-manager-rh740064
-rw-r--r-- | include/nm-test-utils.h | 2 | ||||
-rw-r--r-- | src/devices/nm-device.c | 27 | ||||
-rw-r--r-- | src/devices/wwan/nm-device-modem.c | 4 | ||||
-rw-r--r-- | src/devices/wwan/nm-modem-broadband.c | 5 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-utils.c | 3 | ||||
-rw-r--r-- | src/nm-iface-helper.c | 6 | ||||
-rw-r--r-- | src/nm-ip4-config.c | 7 | ||||
-rw-r--r-- | src/nm-ip4-config.h | 2 | ||||
-rw-r--r-- | src/nm-ip6-config.c | 56 | ||||
-rw-r--r-- | src/nm-ip6-config.h | 5 | ||||
-rw-r--r-- | src/ppp-manager/nm-ppp-manager.c | 3 | ||||
-rw-r--r-- | src/tests/test-ip6-config.c | 15 | ||||
-rw-r--r-- | src/vpn-manager/nm-vpn-connection.c | 9 |
13 files changed, 84 insertions, 60 deletions
diff --git a/include/nm-test-utils.h b/include/nm-test-utils.h index 996f6654dd..7961b03891 100644 --- a/include/nm-test-utils.h +++ b/include/nm-test-utils.h @@ -702,7 +702,7 @@ nmtst_ip4_config_clone (NMIP4Config *config) inline static NMIP6Config * nmtst_ip6_config_clone (NMIP6Config *config) { - NMIP6Config *copy = nm_ip6_config_new (); + NMIP6Config *copy = nm_ip6_config_new (-1); g_assert (copy); g_assert (config); diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index e43db8f351..02c4357499 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -2874,9 +2874,7 @@ ensure_con_ipx_config (NMDevice *self) return; priv->con_ip4_config = nm_ip4_config_new (ip_ifindex); - priv->con_ip6_config = nm_ip6_config_new (); - - nm_ip6_config_set_ifindex (priv->con_ip6_config, nm_device_get_ifindex (self)); + priv->con_ip6_config = nm_ip6_config_new (ip_ifindex); nm_ip4_config_merge_setting (priv->con_ip4_config, nm_connection_get_setting_ip4_config (connection), @@ -3521,8 +3519,7 @@ ip6_config_merge_and_apply (NMDevice *self, const struct in6_addr *gateway; /* If no config was passed in, create a new one */ - composite = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (composite, nm_device_get_ifindex (self)); + composite = nm_ip6_config_new (nm_device_get_ip_ifindex (self)); ensure_con_ipx_config (self); g_assert (composite); @@ -4112,10 +4109,8 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, NMDevice *self) g_return_if_fail (priv->act_request); - if (!priv->ac_ip6_config) { - priv->ac_ip6_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (priv->ac_ip6_config, nm_device_get_ifindex (self)); - } + if (!priv->ac_ip6_config) + priv->ac_ip6_config = nm_ip6_config_new (nm_device_get_ip_ifindex (self)); if (changed & NM_RDISC_CONFIG_GATEWAYS) { /* Use the first gateway as ordered in router discovery cache. */ @@ -4619,8 +4614,7 @@ act_stage3_ip6_config_start (NMDevice *self, ret = linklocal6_start (self); if (ret == NM_ACT_STAGE_RETURN_SUCCESS) { /* New blank config; LL address is already in priv->ext_ip6_config */ - *out_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (*out_config, nm_device_get_ifindex (self)); + *out_config = nm_ip6_config_new (nm_device_get_ip_ifindex (self)); g_assert (*out_config); } } else if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_DHCP) == 0) { @@ -4632,8 +4626,7 @@ act_stage3_ip6_config_start (NMDevice *self, ret = NM_ACT_STAGE_RETURN_POSTPONE; } else if (strcmp (method, NM_SETTING_IP6_CONFIG_METHOD_MANUAL) == 0) { /* New blank config */ - *out_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (*out_config, nm_device_get_ifindex (self)); + *out_config = nm_ip6_config_new (nm_device_get_ip_ifindex (self)); g_assert (*out_config); ret = NM_ACT_STAGE_RETURN_SUCCESS; @@ -6042,7 +6035,7 @@ nm_device_set_ip6_config (NMDevice *self, gboolean has_changes = FALSE; gboolean success = TRUE; NMDeviceStateReason reason_local = NM_DEVICE_STATE_REASON_NONE; - int ip_ifindex; + int ip_ifindex, config_ifindex; g_return_val_if_fail (NM_IS_DEVICE (self), FALSE); @@ -6050,6 +6043,12 @@ nm_device_set_ip6_config (NMDevice *self, ip_iface = nm_device_get_ip_iface (self); ip_ifindex = nm_device_get_ip_ifindex (self); + if (new_config) { + config_ifindex = nm_ip6_config_get_ifindex (new_config); + if (config_ifindex > 0) + g_return_val_if_fail (ip_ifindex == config_ifindex, FALSE); + } + old_config = priv->ip6_config; /* Always commit to nm-platform to update lifetimes */ diff --git a/src/devices/wwan/nm-device-modem.c b/src/devices/wwan/nm-device-modem.c index 9102f5db89..f819d1d774 100644 --- a/src/devices/wwan/nm-device-modem.c +++ b/src/devices/wwan/nm-device-modem.c @@ -197,10 +197,8 @@ modem_ip6_config_result (NMModem *modem, /* Re-enable IPv6 on the interface */ nm_device_ipv6_sysctl_set (device, "disable_ipv6", "0"); - if (config) { - nm_ip6_config_set_ifindex (config, nm_device_get_ifindex (device)); + if (config) nm_device_set_wwan_ip6_config (device, config); - } if (do_slaac == FALSE) { if (got_config) diff --git a/src/devices/wwan/nm-modem-broadband.c b/src/devices/wwan/nm-modem-broadband.c index ebd849485f..bf5e246ff8 100644 --- a/src/devices/wwan/nm-modem-broadband.c +++ b/src/devices/wwan/nm-modem-broadband.c @@ -800,6 +800,7 @@ stage3_ip6_done (NMModemBroadband *self) { GError *error = NULL; NMIP6Config *config = NULL; + const char *data_port; const gchar *address_string; NMPlatformIP6Address address; NMModemIPMethod ip_method; @@ -837,7 +838,9 @@ stage3_ip6_done (NMModemBroadband *self) nm_log_info (LOGD_MB, "(%s): IPv6 base configuration:", nm_modem_get_uid (NM_MODEM (self))); - config = nm_ip6_config_new (); + data_port = mm_bearer_get_interface (self->priv->bearer); + g_assert (data_port); + config = nm_ip6_config_new (nm_platform_link_get_ifindex (data_port)); address.plen = mm_bearer_ip_config_get_prefix (self->priv->ipv6_config); nm_ip6_config_add_address (config, &address); diff --git a/src/dhcp-manager/nm-dhcp-utils.c b/src/dhcp-manager/nm-dhcp-utils.c index 2808f0d89e..e50b4e3b8b 100644 --- a/src/dhcp-manager/nm-dhcp-utils.c +++ b/src/dhcp-manager/nm-dhcp-utils.c @@ -617,8 +617,7 @@ nm_dhcp_utils_ip6_config_from_options (int ifindex, iface, (const char *) key, (const char *) value); } - ip6_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (ip6_config, ifindex); + ip6_config = nm_ip6_config_new (ifindex); str = g_hash_table_lookup (options, "max_life"); if (str) { diff --git a/src/nm-iface-helper.c b/src/nm-iface-helper.c index cc5a0a6806..49eda87718 100644 --- a/src/nm-iface-helper.c +++ b/src/nm-iface-helper.c @@ -135,8 +135,7 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, gpointer user_da ifa_flags |= IFA_F_MANAGETEMPADDR; } - ip6_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (ip6_config, ifindex); + ip6_config = nm_ip6_config_new (ifindex); if (changed & NM_RDISC_CONFIG_GATEWAYS) { /* Use the first gateway as ordered in router discovery cache. */ @@ -231,8 +230,7 @@ rdisc_config_changed (NMRDisc *rdisc, NMRDiscConfigMap changed, gpointer user_da if (last_config) { g_object_unref (last_config); - last_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (last_config, ifindex); + last_config = nm_ip6_config_new (ifindex); nm_ip6_config_replace (last_config, ip6_config, NULL); } } diff --git a/src/nm-ip4-config.c b/src/nm-ip4-config.c index cc705287e3..1f3e5954b3 100644 --- a/src/nm-ip4-config.c +++ b/src/nm-ip4-config.c @@ -83,6 +83,7 @@ static GParamSpec *obj_properties[LAST_PROP] = { NULL, }; NMIP4Config * nm_ip4_config_new (int ifindex) { + g_return_val_if_fail (ifindex >= -1, NULL); return (NMIP4Config *) g_object_new (NM_TYPE_IP4_CONFIG, NM_IP4_CONFIG_IFINDEX, ifindex, NULL); @@ -108,6 +109,12 @@ nm_ip4_config_get_dbus_path (const NMIP4Config *config) return priv->path; } +int +nm_ip4_config_get_ifindex (const NMIP4Config *config) +{ + return NM_IP4_CONFIG_GET_PRIVATE (config)->ifindex; +} + static gboolean same_prefix (guint32 address1, guint32 address2, int plen) { diff --git a/src/nm-ip4-config.h b/src/nm-ip4-config.h index b7443ae61c..3e551950d3 100644 --- a/src/nm-ip4-config.h +++ b/src/nm-ip4-config.h @@ -59,6 +59,8 @@ GType nm_ip4_config_get_type (void); NMIP4Config * nm_ip4_config_new (int ifindex); +int nm_ip4_config_get_ifindex (const NMIP4Config *config); + /* D-Bus integration */ void nm_ip4_config_export (NMIP4Config *config); const char * nm_ip4_config_get_dbus_path (const NMIP4Config *config); diff --git a/src/nm-ip6-config.c b/src/nm-ip6-config.c index 50a3006410..4df7e2996f 100644 --- a/src/nm-ip6-config.c +++ b/src/nm-ip6-config.c @@ -56,6 +56,7 @@ typedef struct { enum { PROP_0, + PROP_IFINDEX, PROP_ADDRESS_DATA, PROP_ADDRESSES, PROP_ROUTE_DATA, @@ -72,9 +73,12 @@ static GParamSpec *obj_properties[LAST_PROP] = { NULL, }; NMIP6Config * -nm_ip6_config_new (void) +nm_ip6_config_new (int ifindex) { - return (NMIP6Config *) g_object_new (NM_TYPE_IP6_CONFIG, NULL); + g_return_val_if_fail (ifindex >= -1, NULL); + return (NMIP6Config *) g_object_new (NM_TYPE_IP6_CONFIG, + NM_IP6_CONFIG_IFINDEX, ifindex, + NULL); } void @@ -97,19 +101,14 @@ nm_ip6_config_get_dbus_path (const NMIP6Config *config) return priv->path; } -/******************************************************************/ - -void -nm_ip6_config_set_ifindex (NMIP6Config *config, int ifindex) +int +nm_ip6_config_get_ifindex (const NMIP6Config *config) { - NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (config); - - g_return_if_fail (priv->ifindex == 0); - g_assert (priv->routes->len == 0); - - priv->ifindex = ifindex; + return NM_IP6_CONFIG_GET_PRIVATE (config)->ifindex; } +/******************************************************************/ + static gboolean same_prefix (const struct in6_addr *address1, const struct in6_addr *address2, int plen) { @@ -314,9 +313,8 @@ nm_ip6_config_capture (int ifindex, gboolean capture_resolv_conf, NMSettingIP6Co if (nm_platform_link_get_master (ifindex) > 0) return NULL; - config = nm_ip6_config_new (); + config = nm_ip6_config_new (ifindex); priv = NM_IP6_CONFIG_GET_PRIVATE (config); - nm_ip6_config_set_ifindex (config, ifindex); g_array_unref (priv->addresses); g_array_unref (priv->routes); @@ -904,7 +902,7 @@ nm_ip6_config_replace (NMIP6Config *dst, const NMIP6Config *src, gboolean *relev /* ifindex */ if (src_priv->ifindex != dst_priv->ifindex) { - nm_ip6_config_set_ifindex (dst, src_priv->ifindex); + dst_priv->ifindex = src_priv->ifindex; has_minor_changes = TRUE; } @@ -1748,6 +1746,9 @@ get_property (GObject *object, guint prop_id, NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (object); switch (prop_id) { + case PROP_IFINDEX: + g_value_set_int (value, priv->ifindex); + break; case PROP_ADDRESS_DATA: { GPtrArray *addresses = g_ptr_array_new (); @@ -1931,6 +1932,24 @@ get_property (GObject *object, guint prop_id, } static void +set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + NMIP6ConfigPrivate *priv = NM_IP6_CONFIG_GET_PRIVATE (object); + + switch (prop_id) { + case PROP_IFINDEX: + priv->ifindex = g_value_get_int (value); + break; + default: + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); + break; + } +} + +static void nm_ip6_config_class_init (NMIP6ConfigClass *config_class) { GObjectClass *object_class = G_OBJECT_CLASS (config_class); @@ -1939,9 +1958,16 @@ nm_ip6_config_class_init (NMIP6ConfigClass *config_class) /* virtual methods */ object_class->get_property = get_property; + object_class->set_property = set_property; object_class->finalize = finalize; /* properties */ + obj_properties[PROP_IFINDEX] = + g_param_spec_int (NM_IP6_CONFIG_IFINDEX, "", "", + -1, G_MAXINT, -1, + G_PARAM_READWRITE | + G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); obj_properties[PROP_ADDRESS_DATA] = g_param_spec_boxed (NM_IP6_CONFIG_ADDRESS_DATA, "", "", DBUS_TYPE_NM_IP_ADDRESSES, diff --git a/src/nm-ip6-config.h b/src/nm-ip6-config.h index 734857b876..e0527e5e55 100644 --- a/src/nm-ip6-config.h +++ b/src/nm-ip6-config.h @@ -42,6 +42,7 @@ typedef struct { GObjectClass parent; } NMIP6ConfigClass; +#define NM_IP6_CONFIG_IFINDEX "ifindex" #define NM_IP6_CONFIG_ADDRESS_DATA "address-data" #define NM_IP6_CONFIG_ROUTE_DATA "route-data" #define NM_IP6_CONFIG_GATEWAY "gateway" @@ -56,9 +57,9 @@ typedef struct { GType nm_ip6_config_get_type (void); -NMIP6Config * nm_ip6_config_new (void); +NMIP6Config * nm_ip6_config_new (int ifindex); -void nm_ip6_config_set_ifindex (NMIP6Config *config, int ifindex); +int nm_ip6_config_get_ifindex (const NMIP6Config *config); /* D-Bus integration */ void nm_ip6_config_export (NMIP6Config *config); diff --git a/src/ppp-manager/nm-ppp-manager.c b/src/ppp-manager/nm-ppp-manager.c index d5893338fa..4a186dc815 100644 --- a/src/ppp-manager/nm-ppp-manager.c +++ b/src/ppp-manager/nm-ppp-manager.c @@ -651,8 +651,7 @@ impl_ppp_manager_set_ip6_config (NMPPPManager *manager, remove_timeout_handler (manager); - config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (config, nm_platform_link_get_ifindex (priv->ip_iface)); + config = nm_ip6_config_new (nm_platform_link_get_ifindex (priv->ip_iface)); memset (&addr, 0, sizeof (addr)); addr.plen = 64; diff --git a/src/tests/test-ip6-config.c b/src/tests/test-ip6-config.c index bb707e7fdd..421fa37599 100644 --- a/src/tests/test-ip6-config.c +++ b/src/tests/test-ip6-config.c @@ -36,8 +36,7 @@ build_test_config (void) NMIP6Config *config; /* Build up the config to subtract */ - config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (config, 1); + config = nm_ip6_config_new (1); nm_ip6_config_add_address (config, nmtst_platform_ip6_address ("abcd:1234:4321::cdde", "1:2:3:4::5", 64)); nm_ip6_config_add_route (config, nmtst_platform_ip6_route ("abcd:1234:4321::", 24, "abcd:1234:4321:cdde::2")); @@ -130,10 +129,8 @@ test_compare_with_source (void) NMPlatformIP6Address addr; NMPlatformIP6Route route; - a = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (a, 1); - b = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (b, 2); + a = nm_ip6_config_new (1); + b = nm_ip6_config_new (2); /* Address */ addr = *nmtst_platform_ip6_address ("1122:3344:5566::7788", NULL, 64); @@ -165,8 +162,7 @@ test_add_address_with_source (void) NMPlatformIP6Address addr; const NMPlatformIP6Address *test_addr; - a = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (a, 1); + a = nm_ip6_config_new (1); /* Test that a higher priority source is not overwritten */ addr = *nmtst_platform_ip6_address ("1122:3344:5566::7788", NULL, 64); @@ -206,8 +202,7 @@ test_add_route_with_source (void) NMPlatformIP6Route route; const NMPlatformIP6Route *test_route; - a = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (a, 1); + a = nm_ip6_config_new (1); /* Test that a higher priority source is not overwritten */ route = *nmtst_platform_ip6_route ("abcd:1234:4321::", 24, "abcd:1234:4321:cdde::2"); diff --git a/src/vpn-manager/nm-vpn-connection.c b/src/vpn-manager/nm-vpn-connection.c index 8163644ef3..4f733ca4b6 100644 --- a/src/vpn-manager/nm-vpn-connection.c +++ b/src/vpn-manager/nm-vpn-connection.c @@ -895,10 +895,8 @@ apply_parent_device_config (NMVpnConnection *connection) if (priv->ip4_config) vpn4_parent_config = nm_ip4_config_new (priv->ip_ifindex); - if (priv->ip6_config) { - vpn6_parent_config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (vpn6_parent_config, priv->ip_ifindex); - } + if (priv->ip6_config) + vpn6_parent_config = nm_ip6_config_new (priv->ip_ifindex); if (priv->ip_ifindex <= 0) { /* If the VPN didn't return a network interface, it is a route-based @@ -1337,8 +1335,7 @@ nm_vpn_connection_ip6_config_get (DBusGProxy *proxy, return; } - config = nm_ip6_config_new (); - nm_ip6_config_set_ifindex (config, priv->ip_ifindex); + config = nm_ip6_config_new (priv->ip_ifindex); memset (&address, 0, sizeof (address)); address.plen = 128; |