diff options
author | Thomas Haller <thaller@redhat.com> | 2017-09-28 14:40:12 +0200 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2017-10-09 22:06:25 +0200 |
commit | 01930c96b853f2fc776a02cd394167b99ab6a8ea (patch) | |
tree | 96c7c1755303d9bc522c8c1255bf10c12ab740bd /src/dhcp/nm-dhcp-client.c | |
parent | cc1ee1d286a3de84fcebc33088d12fee21145d8a (diff) | |
download | NetworkManager-01930c96b853f2fc776a02cd394167b99ab6a8ea.tar.gz |
core: use ipv4.route-table setting for other IPv4 routes
Including device-routes, default-route, DHCPv4, IPv4LL.
Diffstat (limited to 'src/dhcp/nm-dhcp-client.c')
-rw-r--r-- | src/dhcp/nm-dhcp-client.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/dhcp/nm-dhcp-client.c b/src/dhcp/nm-dhcp-client.c index 307108e1c2..b9d4ce72fe 100644 --- a/src/dhcp/nm-dhcp-client.c +++ b/src/dhcp/nm-dhcp-client.c @@ -29,6 +29,7 @@ #include <stdio.h> #include <stdlib.h> #include <uuid/uuid.h> +#include <linux/rtnetlink.h> #include "nm-utils/nm-dedup-multi.h" @@ -56,6 +57,7 @@ NM_GOBJECT_PROPERTIES_DEFINE_BASE ( PROP_IFINDEX, PROP_HWADDR, PROP_UUID, + PROP_ROUTE_TABLE, PROP_ROUTE_METRIC, PROP_TIMEOUT, ); @@ -73,6 +75,7 @@ typedef struct _NMDhcpClientPrivate { guint watch_id; int addr_family; int ifindex; + guint32 route_table; guint32 route_metric; guint32 timeout; NMDhcpState state; @@ -151,6 +154,14 @@ nm_dhcp_client_get_hw_addr (NMDhcpClient *self) } guint32 +nm_dhcp_client_get_route_table (NMDhcpClient *self) +{ + g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), RT_TABLE_MAIN); + + return NM_DHCP_CLIENT_GET_PRIVATE (self)->route_table; +} + +guint32 nm_dhcp_client_get_route_metric (NMDhcpClient *self) { g_return_val_if_fail (NM_IS_DHCP_CLIENT (self), G_MAXUINT32); @@ -789,6 +800,7 @@ nm_dhcp_client_handle_event (gpointer unused, priv->ifindex, priv->iface, str_options, + priv->route_table, priv->route_metric); } else { prefix = nm_dhcp_utils_ip6_prefix_from_options (str_options); @@ -899,6 +911,10 @@ set_property (GObject *object, guint prop_id, /* construct-only */ priv->uuid = g_value_dup_string (value); break; + case PROP_ROUTE_TABLE: + /* construct-only */ + priv->route_table = g_value_get_uint (value); + break; case PROP_ROUTE_METRIC: /* construct-only */ priv->route_metric = g_value_get_uint (value); @@ -1010,6 +1026,12 @@ nm_dhcp_client_class_init (NMDhcpClientClass *client_class) G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS); + obj_properties[PROP_ROUTE_TABLE] = + g_param_spec_uint (NM_DHCP_CLIENT_ROUTE_TABLE, "", "", + 0, G_MAXUINT32, RT_TABLE_MAIN, + G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY | + G_PARAM_STATIC_STRINGS); + obj_properties[PROP_ROUTE_METRIC] = g_param_spec_uint (NM_DHCP_CLIENT_ROUTE_METRIC, "", "", 0, G_MAXUINT32, 0, |