mirror of
https://github.com/systemd/systemd.git
synced 2025-02-08 09:57:41 +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.
|
<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>
|
If <varname>SpeedMeter=no</varname>, the value is ignored. Defaults to 10sec.</para></listitem>
|
||||||
</varlistentry>
|
</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>
|
</variablelist>
|
||||||
</refsect1>
|
</refsect1>
|
||||||
|
|
||||||
|
@ -20,5 +20,6 @@ struct ConfigPerfItem;
|
|||||||
%%
|
%%
|
||||||
Network.SpeedMeter, config_parse_bool, 0, offsetof(Manager, use_speed_meter)
|
Network.SpeedMeter, config_parse_bool, 0, offsetof(Manager, use_speed_meter)
|
||||||
Network.SpeedMeterIntervalSec, config_parse_sec, 0, offsetof(Manager, speed_meter_interval_usec)
|
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.DUIDType, config_parse_duid_type, 0, offsetof(Manager, duid)
|
||||||
DHCP.DUIDRawData, config_parse_duid_rawdata, 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,
|
log_link_debug(link,
|
||||||
"%s route: dst: %s%s, src: %s, gw: %s, prefsrc: %s, scope: %s, table: %s, proto: %s, type: %s",
|
"%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_dst), strempty(buf_dst_prefixlen),
|
||||||
strna(buf_src), strna(buf_gw), strna(buf_prefsrc),
|
strna(buf_src), strna(buf_gw), strna(buf_prefsrc),
|
||||||
format_route_scope(tmp->scope, buf_scope, sizeof buf_scope),
|
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) {
|
switch (type) {
|
||||||
case RTM_NEWROUTE:
|
case RTM_NEWROUTE:
|
||||||
if (!route) {
|
if (!route && link->manager->manage_foreign_routes) {
|
||||||
/* A route appeared that we did not request */
|
/* A route appeared that we did not request */
|
||||||
r = route_add_foreign(link, tmp, &route);
|
r = route_add_foreign(link, tmp, &route);
|
||||||
if (r < 0) {
|
if (r < 0) {
|
||||||
@ -1747,6 +1748,7 @@ int manager_new(Manager **ret) {
|
|||||||
|
|
||||||
*m = (Manager) {
|
*m = (Manager) {
|
||||||
.speed_meter_interval_usec = SPEED_METER_DEFAULT_TIME_INTERVAL,
|
.speed_meter_interval_usec = SPEED_METER_DEFAULT_TIME_INTERVAL,
|
||||||
|
.manage_foreign_routes = true,
|
||||||
};
|
};
|
||||||
|
|
||||||
m->state_file = strdup("/run/systemd/netif/state");
|
m->state_file = strdup("/run/systemd/netif/state");
|
||||||
|
@ -30,6 +30,7 @@ struct Manager {
|
|||||||
bool enumerating:1;
|
bool enumerating:1;
|
||||||
bool dirty:1;
|
bool dirty:1;
|
||||||
bool restarting:1;
|
bool restarting:1;
|
||||||
|
bool manage_foreign_routes;
|
||||||
|
|
||||||
Set *dirty_links;
|
Set *dirty_links;
|
||||||
|
|
||||||
|
@ -14,6 +14,7 @@
|
|||||||
[Network]
|
[Network]
|
||||||
#SpeedMeter=no
|
#SpeedMeter=no
|
||||||
#SpeedMeterIntervalSec=10sec
|
#SpeedMeterIntervalSec=10sec
|
||||||
|
#ManageForeignRoutes=yes
|
||||||
|
|
||||||
[DHCP]
|
[DHCP]
|
||||||
#DUIDType=vendor
|
#DUIDType=vendor
|
||||||
|
Loading…
x
Reference in New Issue
Block a user