diff options
author | Dan Williams <dcbw@redhat.com> | 2014-04-03 13:13:17 -0500 |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2014-07-17 17:19:36 -0500 |
commit | f7a8b2801370b872774b1da4e43a1040bcf208a8 (patch) | |
tree | f54a2cb7deb156206a00b8a138f73859b8f487ba | |
parent | bcd554724e796a482df5c54ebdafb97d6e81b10e (diff) | |
download | NetworkManager-f7a8b2801370b872774b1da4e43a1040bcf208a8.tar.gz |
dhcp: pass ifindex to DHCP clients
-rw-r--r-- | src/devices/nm-device.c | 2 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-client.c | 24 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-client.h | 3 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-manager.c | 8 | ||||
-rw-r--r-- | src/dhcp-manager/nm-dhcp-manager.h | 2 |
5 files changed, 37 insertions, 2 deletions
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c index 6f659e53a1..4f6f1542b9 100644 --- a/src/devices/nm-device.c +++ b/src/devices/nm-device.c @@ -2790,6 +2790,7 @@ dhcp4_start (NMDevice *self, g_warn_if_fail (priv->dhcp4_client == NULL); priv->dhcp4_client = nm_dhcp_manager_start_ip4 (nm_dhcp_manager_get (), nm_device_get_ip_iface (self), + nm_device_get_ip_ifindex (self), tmp, nm_connection_get_uuid (connection), nm_device_get_priority (self), @@ -3267,6 +3268,7 @@ dhcp6_start (NMDevice *self, priv->dhcp6_client = nm_dhcp_manager_start_ip6 (nm_dhcp_manager_get (), nm_device_get_ip_iface (self), + nm_device_get_ip_ifindex (self), tmp, nm_connection_get_uuid (connection), nm_device_get_priority (self), diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c index 5c39fafa68..a6d1618915 100644 --- a/src/dhcp-manager/nm-dhcp-client.c +++ b/src/dhcp-manager/nm-dhcp-client.c @@ -36,6 +36,7 @@ typedef struct { char * iface; + int ifindex; GByteArray * hwaddr; gboolean ipv6; char * uuid; @@ -70,6 +71,7 @@ static guint signals[LAST_SIGNAL] = { 0 }; enum { PROP_0, PROP_IFACE, + PROP_IFINDEX, PROP_HWADDR, PROP_IPV6, PROP_UUID, @@ -96,6 +98,14 @@ nm_dhcp_client_get_iface (NMDHCPClient *self) return NM_DHCP_CLIENT_GET_PRIVATE (self)->iface; } +int +nm_dhcp_client_get_ifindex (NMDHCPClient *self) +{ + g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), -1); + + return NM_DHCP_CLIENT_GET_PRIVATE (self)->ifindex; +} + gboolean nm_dhcp_client_get_ipv6 (NMDHCPClient *self) { @@ -1467,6 +1477,9 @@ get_property (GObject *object, guint prop_id, case PROP_IFACE: g_value_set_string (value, priv->iface); break; + case PROP_IFINDEX: + g_value_set_int (value, priv->ifindex); + break; case PROP_HWADDR: g_value_set_boxed (value, priv->hwaddr); break; @@ -1499,6 +1512,11 @@ set_property (GObject *object, guint prop_id, /* construct-only */ priv->iface = g_strdup (g_value_get_string (value)); break; + case PROP_IFINDEX: + /* construct-only */ + priv->ifindex = g_value_get_int (value); + g_warn_if_fail (priv->ifindex > 0); + break; case PROP_HWADDR: /* construct only */ priv->hwaddr = g_value_dup_boxed (value); @@ -1582,6 +1600,12 @@ nm_dhcp_client_class_init (NMDHCPClientClass *client_class) G_PARAM_STATIC_STRINGS)); g_object_class_install_property + (object_class, PROP_IFINDEX, + g_param_spec_int (NM_DHCP_CLIENT_IFINDEX, "", "", + -1, G_MAXINT, -1, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + + g_object_class_install_property (object_class, PROP_HWADDR, g_param_spec_boxed (NM_DHCP_CLIENT_HWADDR, "", "", G_TYPE_BYTE_ARRAY, diff --git a/src/dhcp-manager/nm-dhcp-client.h b/src/dhcp-manager/nm-dhcp-client.h index ad18926af9..ba7d656e78 100644 --- a/src/dhcp-manager/nm-dhcp-client.h +++ b/src/dhcp-manager/nm-dhcp-client.h @@ -35,6 +35,7 @@ #define NM_DHCP_CLIENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), NM_TYPE_DHCP_CLIENT, NMDHCPClientClass)) #define NM_DHCP_CLIENT_INTERFACE "iface" +#define NM_DHCP_CLIENT_IFINDEX "ifindex" #define NM_DHCP_CLIENT_HWADDR "hwaddr" #define NM_DHCP_CLIENT_IPV6 "ipv6" #define NM_DHCP_CLIENT_UUID "uuid" @@ -120,6 +121,8 @@ GPid nm_dhcp_client_get_pid (NMDHCPClient *self); const char *nm_dhcp_client_get_iface (NMDHCPClient *self); +int nm_dhcp_client_get_ifindex (NMDHCPClient *self); + gboolean nm_dhcp_client_get_ipv6 (NMDHCPClient *self); const char *nm_dhcp_client_get_uuid (NMDHCPClient *self); diff --git a/src/dhcp-manager/nm-dhcp-manager.c b/src/dhcp-manager/nm-dhcp-manager.c index 195d50b074..944345a092 100644 --- a/src/dhcp-manager/nm-dhcp-manager.c +++ b/src/dhcp-manager/nm-dhcp-manager.c @@ -382,6 +382,7 @@ add_client (NMDHCPManager *self, NMDHCPClient *client) static NMDHCPClient * client_start (NMDHCPManager *self, const char *iface, + int ifindex, const GByteArray *hwaddr, const char *uuid, guint priority, @@ -416,6 +417,7 @@ client_start (NMDHCPManager *self, /* And make a new one */ client = g_object_new (priv->client_type, NM_DHCP_CLIENT_INTERFACE, iface, + NM_DHCP_CLIENT_IFINDEX, ifindex, NM_DHCP_CLIENT_HWADDR, hwaddr, NM_DHCP_CLIENT_IPV6, ipv6, NM_DHCP_CLIENT_UUID, uuid, @@ -452,6 +454,7 @@ get_send_hostname (NMDHCPManager *self, const char *setting_hostname) NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *self, const char *iface, + int ifindex, const GByteArray *hwaddr, const char *uuid, guint priority, @@ -472,7 +475,7 @@ nm_dhcp_manager_start_ip4 (NMDHCPManager *self, if (send_hostname) hostname = get_send_hostname (self, nm_setting_ip4_config_get_dhcp_hostname (s_ip4)); - return client_start (self, iface, hwaddr, uuid, priority, FALSE, + return client_start (self, iface, ifindex, hwaddr, uuid, priority, FALSE, nm_setting_ip4_config_get_dhcp_client_id (s_ip4), timeout, dhcp_anycast_addr, hostname, FALSE); } @@ -481,6 +484,7 @@ nm_dhcp_manager_start_ip4 (NMDHCPManager *self, NMDHCPClient * nm_dhcp_manager_start_ip6 (NMDHCPManager *self, const char *iface, + int ifindex, const GByteArray *hwaddr, const char *uuid, guint priority, @@ -495,7 +499,7 @@ nm_dhcp_manager_start_ip6 (NMDHCPManager *self, hostname = get_send_hostname (self, nm_setting_ip6_config_get_dhcp_hostname (s_ip6)); - return client_start (self, iface, hwaddr, uuid, priority, TRUE, + return client_start (self, iface, ifindex, hwaddr, uuid, priority, TRUE, NULL, timeout, dhcp_anycast_addr, hostname, info_only); } diff --git a/src/dhcp-manager/nm-dhcp-manager.h b/src/dhcp-manager/nm-dhcp-manager.h index efdd43788b..fd1287138e 100644 --- a/src/dhcp-manager/nm-dhcp-manager.h +++ b/src/dhcp-manager/nm-dhcp-manager.h @@ -66,6 +66,7 @@ void nm_dhcp_manager_set_default_hostname (NMDHCPManager *manager, NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager, const char *iface, + int ifindex, const GByteArray *hwaddr, const char *uuid, guint priority, @@ -75,6 +76,7 @@ NMDHCPClient * nm_dhcp_manager_start_ip4 (NMDHCPManager *manager, NMDHCPClient * nm_dhcp_manager_start_ip6 (NMDHCPManager *manager, const char *iface, + int ifindex, const GByteArray *hwaddr, const char *uuid, guint priority, |