summaryrefslogtreecommitdiff
path: root/src/dhcp/nm-dhcp-client.c
diff options
context:
space:
mode:
authorThomas Haller <thaller@redhat.com>2017-09-28 14:40:12 +0200
committerThomas Haller <thaller@redhat.com>2017-10-09 22:06:25 +0200
commit01930c96b853f2fc776a02cd394167b99ab6a8ea (patch)
tree96c7c1755303d9bc522c8c1255bf10c12ab740bd /src/dhcp/nm-dhcp-client.c
parentcc1ee1d286a3de84fcebc33088d12fee21145d8a (diff)
downloadNetworkManager-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.c22
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,