diff options
author | Daniil Baturin <daniil@vyos.io> | 2024-04-16 17:08:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-16 17:08:40 +0200 |
commit | 6825873bd1e835836259094a5a7d666be8f0be6e (patch) | |
tree | 4b800e3c8de3a2242416a128e19355462e2214a9 | |
parent | c0eec365e2e35afe8162304d065f944ff0c42575 (diff) | |
parent | bb832acb97881d747a57da2728eab3ad138b8129 (diff) | |
download | vyos-1x-6825873bd1e835836259094a5a7d666be8f0be6e.tar.gz vyos-1x-6825873bd1e835836259094a5a7d666be8f0be6e.zip |
Merge pull request #3313 from sever-sever/T5722
T5722: Failover route add option onlink
-rw-r--r-- | interface-definitions/protocols_failover.xml.in | 6 | ||||
-rwxr-xr-x | src/helpers/vyos-failover.py | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/interface-definitions/protocols_failover.xml.in b/interface-definitions/protocols_failover.xml.in index c0caec68e..f70975949 100644 --- a/interface-definitions/protocols_failover.xml.in +++ b/interface-definitions/protocols_failover.xml.in @@ -124,6 +124,12 @@ </properties> <defaultValue>1</defaultValue> </leafNode> + <leafNode name="onlink"> + <properties> + <help>The next hop is directly connected to the interface, even if it does not match interface prefix</help> + <valueless/> + </properties> + </leafNode> </children> </tagNode> </children> diff --git a/src/helpers/vyos-failover.py b/src/helpers/vyos-failover.py index f34c18916..348974364 100755 --- a/src/helpers/vyos-failover.py +++ b/src/helpers/vyos-failover.py @@ -197,6 +197,7 @@ if __name__ == '__main__': proto = nexthop_config.get('check').get('type') target = nexthop_config.get('check').get('target') timeout = nexthop_config.get('check').get('timeout') + onlink = 'onlink' if 'onlink' in nexthop_config else '' # Route not found in the current routing table if not is_route_exists(route, next_hop, conf_iface, conf_metric): @@ -206,14 +207,14 @@ if __name__ == '__main__': if debug: print(f' [ ADD ] -- ip route add {route} via {next_hop} dev {conf_iface} ' f'metric {conf_metric} proto failover\n###') rc, command = rc_cmd(f'ip route add {route} via {next_hop} dev {conf_iface} ' - f'metric {conf_metric} proto failover') + f'{onlink} metric {conf_metric} proto failover') # If something is wrong and gateway not added # Example: Error: Next-hop has invalid gateway. if rc !=0: if debug: print(f'{command} -- return-code [RC: {rc}] {next_hop} dev {conf_iface}') else: journal.send(f'ip route add {route} via {next_hop} dev {conf_iface} ' - f'metric {conf_metric} proto failover', SYSLOG_IDENTIFIER=my_name) + f'{onlink} metric {conf_metric} proto failover', SYSLOG_IDENTIFIER=my_name) else: if debug: print(f' [ TARGET_FAIL ] target checks fails for [{target}], do nothing') journal.send(f'Check fail for route {route} target {target} proto {proto} ' |