mirror of
https://github.com/systemd/systemd.git
synced 2024-12-22 17:35:35 +03:00
networkd: make metric of routes configurable
Now route metric can be configuted via conf file: example conf: [Match] Name=em1 [Route] Gateway=192.168.1.12 Metric=10 Test: ip route output default via 192.168.1.12 dev em1 metric 10 [tomegun: squash TODO update and reword man page a bit]
This commit is contained in:
parent
5bdd314cd9
commit
5d8e593dce
1
TODO
1
TODO
@ -624,7 +624,6 @@ Features:
|
||||
- properly handle routerless dhcp leases
|
||||
- default to DHCP unicast, but make broadcast opt-in. detect devices that needs broadcast and opt-in automatically (needs kernel patch?)
|
||||
- add more attribute support for SIT tunnel
|
||||
- make metric of routes configurable
|
||||
- work with non-ethernet devices
|
||||
- add support for more bond options
|
||||
|
||||
|
@ -389,6 +389,12 @@
|
||||
prefixlength. If ommitted, a full-length host route is assumed.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>Metric=</varname></term>
|
||||
<listitem>
|
||||
<para>The metric of the route. An unsigned integer</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
|
@ -43,7 +43,7 @@ Address.Peer, config_parse_address, 0,
|
||||
Address.Broadcast, config_parse_broadcast, 0, 0
|
||||
Address.Label, config_parse_label, 0, 0
|
||||
Route.Gateway, config_parse_gateway, 0, 0
|
||||
Route.Destination, config_parse_destination, 0, 0
|
||||
Route.Metric, config_parse_route_priority, 0, 0
|
||||
DHCP.UseDNS, config_parse_bool, 0, offsetof(Network, dhcp_dns)
|
||||
DHCP.UseMTU, config_parse_bool, 0, offsetof(Network, dhcp_mtu)
|
||||
DHCP.UseHostname, config_parse_bool, 0, offsetof(Network, dhcp_hostname)
|
||||
|
@ -360,3 +360,39 @@ int config_parse_destination(const char *unit,
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
int config_parse_route_priority(const char *unit,
|
||||
const char *filename,
|
||||
unsigned line,
|
||||
const char *section,
|
||||
unsigned section_line,
|
||||
const char *lvalue,
|
||||
int ltype,
|
||||
const char *rvalue,
|
||||
void *data,
|
||||
void *userdata) {
|
||||
Network *network = userdata;
|
||||
_cleanup_route_free_ Route *n = NULL;
|
||||
_cleanup_free_ char *route = NULL;
|
||||
int r;
|
||||
|
||||
assert(filename);
|
||||
assert(section);
|
||||
assert(lvalue);
|
||||
assert(rvalue);
|
||||
assert(data);
|
||||
|
||||
r = route_new_static(network, section_line, &n);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
r = config_parse_unsigned(unit, filename, line, section,
|
||||
section_line, lvalue, ltype,
|
||||
rvalue, &n->metrics, userdata);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
n = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
@ -467,6 +467,9 @@ int config_parse_destination(const char *unit, const char *filename, unsigned li
|
||||
const char *section, unsigned section_line, const char *lvalue,
|
||||
int ltype, const char *rvalue, void *data, void *userdata);
|
||||
|
||||
int config_parse_route_priority(const char *unit, const char *filename, unsigned line,
|
||||
const char *section, unsigned section_line, const char *lvalue,
|
||||
int ltype, const char *rvalue, void *data, void *userdata);
|
||||
/* Address */
|
||||
int address_new_static(Network *network, unsigned section, Address **ret);
|
||||
int address_new_dynamic(Address **ret);
|
||||
|
Loading…
Reference in New Issue
Block a user