diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/conf_mode/system_frr.py | 25 | ||||
| -rwxr-xr-x | src/init/vyos-router | 11 | 
2 files changed, 15 insertions, 21 deletions
| diff --git a/src/conf_mode/system_frr.py b/src/conf_mode/system_frr.py index fb252238a..d8224b3c3 100755 --- a/src/conf_mode/system_frr.py +++ b/src/conf_mode/system_frr.py @@ -22,17 +22,14 @@ from vyos import airbag  from vyos.config import Config  from vyos.logger import syslog  from vyos.template import render_to_string +from vyos.utils.boot import boot_configuration_complete  from vyos.utils.file import read_file  from vyos.utils.file import write_file -from vyos.utils.process import run +from vyos.utils.process import call  airbag.enable()  # path to daemons config and config status files  config_file = '/etc/frr/daemons' -vyos_status_file = '/tmp/vyos-config-status' -# path to watchfrr for FRR control -watchfrr = '/usr/lib/frr/watchfrr.sh' -  def get_config(config=None):      if config: @@ -45,12 +42,10 @@ def get_config(config=None):      return frr_config -  def verify(frr_config):      # Nothing to verify here      pass -  def generate(frr_config):      # read daemons config file      daemons_config_current = read_file(config_file) @@ -62,25 +57,21 @@ def generate(frr_config):          write_file(config_file, daemons_config_new)          frr_config['config_file_changed'] = True -  def apply(frr_config): -    # check if this is initial commit during boot or intiated by CLI -    # if the file exists, this must be CLI commit -    commit_type_cli = Path(vyos_status_file).exists()      # display warning to user -    if commit_type_cli and frr_config.get('config_file_changed'): +    if boot_configuration_complete() and frr_config.get('config_file_changed'):          # Since FRR restart is not safe thing, better to give          # control over this to users          print('''          You need to reboot a router (preferred) or restart FRR          to apply changes in modules settings          ''') -    # restart FRR automatically. DUring the initial boot this should be -    # safe in most cases -    if not commit_type_cli and frr_config.get('config_file_changed'): -        syslog.warning('Restarting FRR to apply changes in modules') -        run(f'{watchfrr} restart') +    # restart FRR automatically +    # During initial boot this should be safe in most cases +    if not boot_configuration_complete() and frr_config.get('config_file_changed'): +        syslog.warning('Restarting FRR to apply changes in modules') +        call(f'systemctl restart frr.service')  if __name__ == '__main__':      try: diff --git a/src/init/vyos-router b/src/init/vyos-router index a5d1a31fa..1bbb9c869 100755 --- a/src/init/vyos-router +++ b/src/init/vyos-router @@ -340,10 +340,6 @@ start ()      nfct helper add tns inet6 tcp      nft -f /usr/share/vyos/vyos-firewall-init.conf || log_failure_msg "could not initiate firewall rules" -    rm -f /etc/hostname -    ${vyos_conf_scripts_dir}/host_name.py || log_failure_msg "could not reset host-name" -    systemctl start frr.service -      # As VyOS does not execute commands that are not present in the CLI we call      # the script by hand to have a single source for the login banner and MOTD      ${vyos_conf_scripts_dir}/system_console.py || log_failure_msg "could not reset serial console" @@ -376,6 +372,13 @@ start ()        && chgrp ${GROUP} ${vyatta_configdir}      log_action_end_msg $? +    rm -f /etc/hostname +    ${vyos_conf_scripts_dir}/host_name.py || log_failure_msg "could not reset host-name" +    ${vyos_conf_scripts_dir}/system_frr.py || log_failure_msg "could not reset FRR config" +    # If for any reason FRR was not started by system_frr.py - start it anyways. +    # This is a safety net! +    systemctl start frr.service +      disabled bootfile || init_bootfile      cleanup_post_commit_hooks | 
