mirror of
https://github.com/systemd/systemd-stable.git
synced 2025-02-02 09:47:03 +03:00
network: Add support to ignore foreign routes
This commit is contained in:
parent
d739fddeb5
commit
5d3b801764
@ -61,6 +61,15 @@
|
||||
<listitem><para>Specifies the time interval to calculate the traffic speed of each interface.
|
||||
If <varname>SpeedMeter=no</varname>, the value is ignored. Defaults to 10sec.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>ManageForeignRoutes=</varname></term>
|
||||
<listitem><para>A boolean. When true, <command>systemd-networkd</command> will store any routes
|
||||
configured by other tools in its memory. When false, <command>systemd-networkd</command> will
|
||||
not manage the foreign routes, thus they are kept even if <varname>KeepConfiguration=</varname>
|
||||
is false. Defaults to yes.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
|
@ -20,5 +20,6 @@ struct ConfigPerfItem;
|
||||
%%
|
||||
Network.SpeedMeter, config_parse_bool, 0, offsetof(Manager, use_speed_meter)
|
||||
Network.SpeedMeterIntervalSec, config_parse_sec, 0, offsetof(Manager, speed_meter_interval_usec)
|
||||
Network.ManageForeignRoutes, config_parse_bool, 0, offsetof(Manager, manage_foreign_routes)
|
||||
DHCP.DUIDType, config_parse_duid_type, 0, offsetof(Manager, duid)
|
||||
DHCP.DUIDRawData, config_parse_duid_rawdata, 0, offsetof(Manager, duid)
|
||||
|
@ -494,7 +494,8 @@ int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, vo
|
||||
|
||||
log_link_debug(link,
|
||||
"%s route: dst: %s%s, src: %s, gw: %s, prefsrc: %s, scope: %s, table: %s, proto: %s, type: %s",
|
||||
type == RTM_DELROUTE ? "Forgetting" : route ? "Received remembered" : "Remembering",
|
||||
(!route && !link->manager->manage_foreign_routes) || type == RTM_DELROUTE ? "Forgetting" :
|
||||
route ? "Received remembered" : "Remembering",
|
||||
strna(buf_dst), strempty(buf_dst_prefixlen),
|
||||
strna(buf_src), strna(buf_gw), strna(buf_prefsrc),
|
||||
format_route_scope(tmp->scope, buf_scope, sizeof buf_scope),
|
||||
@ -505,7 +506,7 @@ int manager_rtnl_process_route(sd_netlink *rtnl, sd_netlink_message *message, vo
|
||||
|
||||
switch (type) {
|
||||
case RTM_NEWROUTE:
|
||||
if (!route) {
|
||||
if (!route && link->manager->manage_foreign_routes) {
|
||||
/* A route appeared that we did not request */
|
||||
r = route_add_foreign(link, tmp, &route);
|
||||
if (r < 0) {
|
||||
@ -1747,6 +1748,7 @@ int manager_new(Manager **ret) {
|
||||
|
||||
*m = (Manager) {
|
||||
.speed_meter_interval_usec = SPEED_METER_DEFAULT_TIME_INTERVAL,
|
||||
.manage_foreign_routes = true,
|
||||
};
|
||||
|
||||
m->state_file = strdup("/run/systemd/netif/state");
|
||||
|
@ -30,6 +30,7 @@ struct Manager {
|
||||
bool enumerating:1;
|
||||
bool dirty:1;
|
||||
bool restarting:1;
|
||||
bool manage_foreign_routes;
|
||||
|
||||
Set *dirty_links;
|
||||
|
||||
|
@ -14,6 +14,7 @@
|
||||
[Network]
|
||||
#SpeedMeter=no
|
||||
#SpeedMeterIntervalSec=10sec
|
||||
#ManageForeignRoutes=yes
|
||||
|
||||
[DHCP]
|
||||
#DUIDType=vendor
|
||||
|
Loading…
x
Reference in New Issue
Block a user