#!/usr/bin/env python3 # For FRR to work in VyOS as expected we need a few fixups # # 1. Enable daemons we use in /etc/frr/daemons # 2. Set the VRF backend of Zebra to netns (-n option) in /etc/frr/daemons.conf # Otherwise multiple routing tables for PBR won't work # 3. Create empty configs for daemons with use # That is to make them possible to start on boot before config is loaded # import os daemons = """ zebra=yes bgpd=yes ospfd=yes ospf6d=yes ripd=yes ripngd=yes isisd=yes pimd=no ldpd=yes nhrpd=no eigrpd=no babeld=no sharpd=no pbrd=no bfdd=yes staticd=yes vtysh_enable=yes zebra_options=" -s 90000000 --daemon -A 127.0.0.1 -M snmp" bgpd_options=" --daemon -A 127.0.0.1 -M snmp -M rpki" ospfd_options=" --daemon -A 127.0.0.1 -M snmp" ospf6d_options=" --daemon -A ::1 -M snmp" ripd_options=" --daemon -A 127.0.0.1 -M snmp" ripngd_options=" --daemon -A ::1" isisd_options=" --daemon -A 127.0.0.1" pimd_options=" --daemon -A 127.0.0.1" ldpd_options=" --daemon -A 127.0.0.1" nhrpd_options=" --daemon -A 127.0.0.1" eigrpd_options=" --daemon -A 127.0.0.1" babeld_options=" --daemon -A 127.0.0.1" sharpd_options=" --daemon -A 127.0.0.1" pbrd_options=" --daemon -A 127.0.0.1" staticd_options=" --daemon -A 127.0.0.1" bfdd_options=" --daemon -A 127.0.0.1" watchfrr_enable=no valgrind_enable=no """ frr_conf = """ log syslog log facility local7 """ frr_log = '' with open("/etc/frr/daemons", "w") as f: f.write(daemons) with open("/etc/frr/frr.conf", "w") as f: f.write(frr_conf) # Prevent writing logs to /var/log/frr/frr.log. T2061 with open("/etc/rsyslog.d/45-frr.conf", "w") as f: f.write(frr_log) # Create empty daemon configs so that they start properly for name in ["zebra.conf", "bgpd.conf", "ospfd.conf", "ospf6d.conf", "ripd.conf", "ripngd.conf"]: open(os.path.join("/etc/frr", name), 'a').close()