1
0
mirror of https://github.com/systemd/systemd.git synced 2025-03-09 12:58:26 +03:00

networkd: allow specification of DHCP route metric

This lets the routing metric for links to be specified per-network,
still defaulting to DHCP_ROUTE_METRIC (1024) if unspecified. Hopefully
this helps with multiple interfaces configured via DHCP.
This commit is contained in:
Angus Gibson 2014-09-08 20:26:47 +10:00 committed by Tom Gundersen
parent af5effc422
commit 84b5b79a8f
5 changed files with 12 additions and 3 deletions

View File

@ -494,6 +494,12 @@
hand, this must not be enabled on networks where broadcasts are filtered out.</para>
</listitem>
</varlistentry>
<varlistentry>
<term><varname>RouteMetric=</varname></term>
<listitem>
<para>Set the routing metric for routes specified by the DHCP server.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>

View File

@ -103,7 +103,7 @@ static int link_set_dhcp_routes(Link *link) {
route_gw->dst_prefixlen = 32;
route_gw->prefsrc_addr.in = address;
route_gw->scope = RT_SCOPE_LINK;
route_gw->metrics = DHCP_ROUTE_METRIC;
route_gw->metrics = link->network->dhcp_route_metric;
r = route_configure(route_gw, link, &dhcp4_route_handler);
if (r < 0) {
@ -118,7 +118,7 @@ static int link_set_dhcp_routes(Link *link) {
route->family = AF_INET;
route->in_addr.in = gateway;
route->prefsrc_addr.in = address;
route->metrics = DHCP_ROUTE_METRIC;
route->metrics = link->network->dhcp_route_metric;
r = route_configure(route, link, &dhcp4_route_handler);
if (r < 0) {
@ -157,7 +157,7 @@ static int link_set_dhcp_routes(Link *link) {
route->in_addr.in = static_routes[i].gw_addr;
route->dst_addr.in = static_routes[i].dst_addr;
route->dst_prefixlen = static_routes[i].dst_prefixlen;
route->metrics = DHCP_ROUTE_METRIC;
route->metrics = link->network->dhcp_route_metric;
r = route_configure(route, link, &dhcp4_route_handler);
if (r < 0) {

View File

@ -57,6 +57,7 @@ DHCP.SendHostname, config_parse_bool, 0,
DHCP.RequestBroadcast, config_parse_bool, 0, offsetof(Network, dhcp_broadcast)
DHCP.CriticalConnection, config_parse_bool, 0, offsetof(Network, dhcp_critical)
DHCP.VendorClassIdentifier, config_parse_string, 0, offsetof(Network, dhcp_vendor_class_identifier)
DHCP.RouteMetric, config_parse_unsigned, 0, offsetof(Network, dhcp_route_metric)
/* backwards compatibility: do not add new entries to this section */
DHCPv4.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_dns)
DHCPv4.UseMTU, config_parse_bool, 0, offsetof(Network, dhcp_mtu)

View File

@ -85,6 +85,7 @@ static int network_load_one(Manager *manager, const char *filename) {
network->dhcp_hostname = true;
network->dhcp_routes = true;
network->dhcp_sendhost = true;
network->dhcp_route_metric = DHCP_ROUTE_METRIC;
network->llmnr = LLMNR_SUPPORT_YES;

View File

@ -100,6 +100,7 @@ struct Network {
bool dhcp_broadcast;
bool dhcp_critical;
bool dhcp_routes;
unsigned dhcp_route_metric;
bool ipv4ll;
bool ipv4ll_route;