X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=redhat%2Ffrr.spec.in;h=e5407a2cb9be6f816ebcfe9133e1d5ef583f4bea;hb=33e56da60666cd26ca18787104e721b9df9ed4a2;hp=9aa46bbbc1eec2f9261f5d2ff1beace97c4940b7;hpb=772d418a8bd7fc40aaaa47eca8152cda44f7b001;p=mirror_frr.git diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in index 9aa46bbbc..e5407a2cb 100644 --- a/redhat/frr.spec.in +++ b/redhat/frr.spec.in @@ -10,41 +10,44 @@ #################### FRRouting (FRR) configure options ##################### # with-feature options -%{!?with_pam: %global with_pam 0 } -%{!?with_ospfclient: %global with_ospfclient 1 } -%{!?with_ospfapi: %global with_ospfapi 1 } -%{!?with_rtadv: %global with_rtadv 1 } -%{!?with_ldpd: %global with_ldpd 1 } -%{!?with_nhrpd: %global with_nhrpd 1 } -%{!?with_eigrpd: %global with_eigrpd 1 } %{!?with_babeld: %global with_babeld 1 } -%{!?with_shared: %global with_shared 1 } -%{!?with_multipath: %global with_multipath 256 } -%{!?frr_user: %global frr_user frr } -%{!?vty_group: %global vty_group frrvty } -%{!?with_fpm: %global with_fpm 1 } -%{!?with_watchfrr: %global with_watchfrr 1 } +%{!?with_bfdd: %global with_bfdd 1 } %{!?with_bgp_vnc: %global with_bgp_vnc 0 } +%{!?with_cumulus: %global with_cumulus 0 } +%{!?with_eigrpd: %global with_eigrpd 1 } +%{!?with_fpm: %global with_fpm 1 } +%{!?with_ldpd: %global with_ldpd 1 } +%{!?with_multipath: %global with_multipath 256 } +%{!?with_nhrpd: %global with_nhrpd 1 } +%{!?with_ospfapi: %global with_ospfapi 1 } +%{!?with_ospfclient: %global with_ospfclient 1 } +%{!?with_pam: %global with_pam 0 } +%{!?with_pbrd: %global with_pbrd 1 } %{!?with_pimd: %global with_pimd 1 } %{!?with_rpki: %global with_rpki 0 } -%{!?with_pbrd: %global with_pbrd 1 } +%{!?with_rtadv: %global with_rtadv 1 } +%{!?with_watchfrr: %global with_watchfrr 1 } + +# user and group +%{!?frr_user: %global frr_user frr } +%{!?vty_group: %global vty_group frrvty } # path defines -%define configdir %{_sysconfdir}/%{name} -%define _sbindir /usr/lib/frr -%define zeb_src %{_builddir}/%{name}-%{frrversion} -%define zeb_rh_src %{zeb_src}/redhat -%define zeb_docs %{zeb_src}/doc -%define frr_tools %{zeb_src}/tools +%define configdir %{_sysconfdir}/%{name} +%define _sbindir /usr/lib/frr +%define zeb_src %{_builddir}/%{name}-%{frrversion} +%define zeb_rh_src %{zeb_src}/redhat +%define zeb_docs %{zeb_src}/doc +%define frr_tools %{zeb_src}/tools # defines for configure %define rundir %{_localstatedir}/run/%{name} # define for sphinx-build binary %if 0%{?rhel} && 0%{?rhel} < 7 -%define sphinx sphinx-build2.7 + %define sphinx sphinx-build2.7 %else -%define sphinx sphinx-build + %define sphinx sphinx-build %endif ############################################################################ @@ -83,7 +86,7 @@ %{!?frr_gid: %global frr_gid 92 } %{!?vty_gid: %global vty_gid 85 } -%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd +%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd %if %{with_ldpd} %define daemon_ldpd ldpd @@ -127,10 +130,13 @@ %define daemon_watchfrr "" %endif -%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} +%if %{with_bfdd} + %define daemon_bfdd bfdd +%else + %define daemon_bfdd "" +%endif -# allow build dir to be kept -%{!?keep_build: %global keep_build 0 } +%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} %{daemon_bfdd} #release sub-revision (the two digits after the CONFDATE) %{!?release_rev: %global release_rev 01 } @@ -138,24 +144,32 @@ Summary: Routing daemon Name: frr Version: %{rpmversion} -Release: @CONFDATE@%{release_rev}%{?dist} +Release: %{release_rev}%{?dist} License: GPLv2+ Group: System Environment/Daemons Source0: https://github.com/FRRouting/frr/archive/%{name}-%{frrversion}.tar.gz URL: https://www.frrouting.org +Requires(pre): shadow-utils Requires(preun): info Requires(post): info -BuildRequires: gcc patch libcap-devel -BuildRequires: readline-devel ncurses-devel -BuildRequires: json-c-devel bison >= 2.7 flex make -BuildRequires: c-ares-devel texinfo +BuildRequires: bison >= 2.7 +BuildRequires: c-ares-devel +BuildRequires: flex +BuildRequires: gcc +BuildRequires: json-c-devel +BuildRequires: libcap-devel +BuildRequires: make +BuildRequires: ncurses-devel +BuildRequires: readline-devel +BuildRequires: texinfo %if 0%{?rhel} && 0%{?rhel} < 7 #python27-devel is available from ius community repo for RedHat/CentOS 6 -BuildRequires: python27-devel python27-sphinx +BuildRequires: python27-devel +BuildRequires: python27-sphinx %else -BuildRequires: python-devel >= 2.7 python-sphinx +BuildRequires: python-devel >= 2.7 +BuildRequires: python-sphinx %endif -Requires: initscripts %if %{with_pam} BuildRequires: pam-devel %endif @@ -163,7 +177,8 @@ BuildRequires: pam-devel BuildRequires: librtr-devel >= 0.5 %endif %if "%{initsystem}" == "systemd" -BuildRequires: systemd systemd-devel +BuildRequires: systemd +BuildRequires: systemd-devel Requires(post): systemd Requires(preun): systemd Requires(postun): systemd @@ -172,22 +187,24 @@ Requires(post): chkconfig Requires(preun): chkconfig # Initscripts > 5.60 is required for IPv6 support Requires(pre): initscripts >= 5.60 +Requires: initscripts %endif Provides: routingdaemon = %{version}-%{release} -BuildRoot: %{_tmppath}/%{name}-%{version}-root Obsoletes: gated mrt zebra frr-sysvinit Conflicts: bird + %description FRRouting is a free software that manages TCP/IP based routing protocol. It takes multi-server and multi-thread approach to resolve the current complexity of the Internet. FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP -NHRP, Babel, PBR and EIGRP. +NHRP, Babel, PBR, EIGRP and BFD. FRRouting is a fork of Quagga. + %package contrib Summary: contrib tools for frr Group: System Environment/Daemons @@ -195,15 +212,17 @@ Group: System Environment/Daemons %description contrib Contributed/3rd party tools which may be of use with frr. + %package pythontools Summary: python tools for frr BuildRequires: python -Requires: python-ipaddr +Requires: python-ipaddress Group: System Environment/Daemons %description pythontools Contributed python 2.7 tools which may be of use with frr. + %package devel Summary: Header and object files for frr development Group: System Environment/Daemons @@ -213,9 +232,11 @@ Requires: %{name} = %{version}-%{release} The frr-devel package contains the header and object files neccessary for developing OSPF-API and frr applications. + %prep %setup -q -n frr-%{frrversion} + %build # For standard gcc verbosity, uncomment these lines: @@ -232,11 +253,9 @@ developing OSPF-API and frr applications. --sbindir=%{_sbindir} \ --sysconfdir=%{configdir} \ --localstatedir=%{rundir} \ + --disable-static \ --disable-werror \ --enable-irdp \ -%if !%{with_shared} - --disable-shared \ -%endif %if %{with_multipath} --enable-multipath=%{with_multipath} \ %endif @@ -290,11 +309,11 @@ developing OSPF-API and frr applications. --with-libpam \ %endif %if 0%{?frr_user:1} - --enable-user=%frr_user \ - --enable-group=%frr_user \ + --enable-user=%{frr_user} \ + --enable-group=%{frr_user} \ %endif %if 0%{?vty_group:1} - --enable-vty-group=%vty_group \ + --enable-vty-group=%{vty_group} \ %endif %if %{with_fpm} --enable-fpm \ @@ -306,6 +325,9 @@ developing OSPF-API and frr applications. %else --disable-watchfrr \ %endif +%if %{with_cumulus} + --enable-cumulus \ +%endif %if %{with_bgp_vnc} --enable-bgp-vnc \ %else @@ -316,21 +338,28 @@ developing OSPF-API and frr applications. --enable-systemd \ %endif %if %{with_rpki} - --enable-rpki + --enable-rpki \ +%else + --disable-rpki \ +%endif +%if %{with_bfdd} + --enable-bfdd \ %else - --disable-rpki + --disable-bfdd \ %endif + SPHINXBUILD=%{sphinx} -make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" SPHINXBUILD=%{sphinx} +make %{?_smp_mflags} MAKEINFO="makeinfo --no-split" pushd doc -make SPHINXBUILD=%{sphinx} info +make info popd + %install mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \ - %{buildroot}/var/log/frr %{buildroot}%{_infodir} -make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" SPHINXBUILD=%{sphinx} install + %{buildroot}%{_localstatedir}/log/frr %{buildroot}%{_infodir} +make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install # Remove this file, as it is uninstalled and causes errors when building on RH9 rm -rf %{buildroot}/usr/share/info/dir @@ -338,47 +367,49 @@ rm -rf %{buildroot}/usr/share/info/dir # Remove debian init script if it was installed rm -f %{buildroot}%{_sbindir}/frr -# kill bogus libtool files for modules -rm -f %{buildroot}%{_libdir}/frr/modules/*.la +# kill bogus libtool files +rm -vf %{buildroot}%{_libdir}/frr/modules/*.la +rm -vf %{buildroot}%{_libdir}/*.la # install /etc sources %if "%{initsystem}" == "systemd" mkdir -p %{buildroot}%{_unitdir} -install -m644 %{zeb_rh_src}/frr.service %{buildroot}%{_unitdir}/frr.service -install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr +install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service %else mkdir -p %{buildroot}%{_initddir} -install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr -ln -s %{_sbindir}/frr %{buildroot}%{_initddir}/frr +ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr %endif -install %{zeb_rh_src}/daemons %{buildroot}%{_sysconfdir}/frr +install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr +# add rpki module to daemon +%if %{with_rpki} + sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{buildroot}%{_sysconfdir}/frr/daemons +%endif install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr install -d -m750 %{buildroot}%{rundir} + %pre # add vty_group %if 0%{?vty_group:1} -if getent group %vty_group > /dev/null ; then : ; else \ - /usr/sbin/groupadd -r -g %vty_gid %vty_group > /dev/null || : ; fi + getent group %{vty_group} >/dev/null || groupadd -r -g %{vty_gid} %{vty_group} %endif # add frr user and group %if 0%{?frr_user:1} -# Ensure that frr_gid gets correctly allocated -if getent group %frr_user >/dev/null; then : ; else \ - /usr/sbin/groupadd -g %frr_gid %frr_user > /dev/null || : ; \ -fi -if getent passwd %frr_user >/dev/null ; then : ; else \ - /usr/sbin/useradd -u %frr_uid -g %frr_gid \ - -M -r -s /sbin/nologin -c "FRRouting suite" \ - -d %{rundir} %frr_user 2> /dev/null || : ; \ -fi -%if 0%{?vty_group:1} - /usr/sbin/usermod -a -G %vty_group %frr_user -%endif + # Ensure that frr_gid gets correctly allocated + getent group %{frr_user} >/dev/null || groupadd -g %{frr_gid} %{frr_user} + getent passwd %{frr_user} >/dev/null || \ + useradd -r -u %{frr_uid} -g %{frr_user} \ + -s /sbin/nologin -c "FRRouting suite" \ + -d %{rundir} %{frr_user} + + %if 0%{?vty_group:1} + usermod -a -G %{vty_group} %{frr_user} + %endif %endif +exit 0 %post @@ -396,6 +427,7 @@ zebra_spec_add_service () zebra_spec_add_service zebrasrv 2600/tcp "zebra service" zebra_spec_add_service zebra 2601/tcp "zebra vty" +zebra_spec_add_service staticd 2616/tcp "staticd vty" zebra_spec_add_service ripd 2602/tcp "RIPd vty" zebra_spec_add_service ripngd 2603/tcp "RIPngd vty" zebra_spec_add_service ospfd 2604/tcp "OSPFd vty" @@ -423,6 +455,9 @@ zebra_spec_add_service isisd 2608/tcp "ISISd vty" %if %{with_eigrpd} zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty" %endif +%if %{with_bfdd} + zebra_spec_add_service bfdd 2617/tcp "BFDd vty" +%endif %if "%{initsystem}" == "systemd" for daemon in %all_daemons ; do @@ -434,7 +469,7 @@ zebra_spec_add_service isisd 2608/tcp "ISISd vty" # Fix bad path in previous config files # Config files won't get replaced by default, so we do this ugly hack to fix it -%__sed -i 's|/etc/init.d/|%{_sbindir}/|g' %{configdir}/daemons 2> /dev/null || true +%__sed -i 's|watchfrr_options=|#watchfrr_options=|g' %{configdir}/daemons 2> /dev/null || true # With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if # we install or upgrade to a frr built with systemd @@ -448,7 +483,7 @@ zebra_spec_add_service isisd 2608/tcp "ISISd vty" if [ ! -e %{configdir}/zebra.conf ]; then echo "hostname `hostname`" > %{configdir}/zebra.conf %if 0%{?frr_user:1} - chown %frr_user:%frr_user %{configdir}/zebra.conf* + chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf* %endif chmod 640 %{configdir}/zebra.conf* fi @@ -457,13 +492,13 @@ for daemon in %{all_daemons} ; do if [ ! -e %{configdir}/${daemon}.conf ]; then touch %{configdir}/${daemon}.conf %if 0%{?frr_user:1} - chown %frr_user:%frr_user %{configdir}/${daemon}.conf* + chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf* %endif fi fi done %if 0%{?frr_user:1} - chown %frr_user:%frr_user %{configdir}/daemons + chown %{frr_user}:%{frr_user} %{configdir}/daemons %endif %if %{with_watchfrr} @@ -481,6 +516,7 @@ if [ ! -e %{configdir}/vtysh.conf ]; then %endif fi + %postun if [ "$1" -ge 1 ]; then # @@ -500,6 +536,7 @@ if [ "$1" -ge 1 ]; then : fi + %preun %if "%{initsystem}" == "systemd" ## @@ -519,31 +556,27 @@ fi %endif /sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir -%clean -%if !0%{?keep_build:1} - rm -rf %{buildroot} -%endif %files -%defattr(-,root,root) -%doc */*.sample* AUTHORS COPYING +%doc */*.sample* COPYING %doc doc/mpls -%doc ChangeLog NEWS README +%doc README.md %if 0%{?frr_user:1} - %dir %attr(751,%frr_user,%frr_user) %{configdir} - %dir %attr(750,%frr_user,%frr_user) /var/log/frr - %dir %attr(751,%frr_user,%frr_user) %{rundir} + %dir %attr(751,%{frr_user},%{frr_user}) %{configdir} + %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr + %dir %attr(751,%{frr_user},%{frr_user}) %{rundir} %else %dir %attr(750,root,root) %{configdir} - %dir %attr(750,root,root) /var/log/frr + %dir %attr(750,root,root) %{_localstatedir}/log/frr %dir %attr(750,root,root) %{rundir} %endif %if 0%{?vty_group:1} - %attr(750,%frr_user,%vty_group) %{configdir}/vtysh.conf.sample + %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample %endif %{_infodir}/frr.info.gz %{_mandir}/man*/* %{_sbindir}/zebra +%{_sbindir}/staticd %{_sbindir}/ospfd %{_sbindir}/ripd %{_sbindir}/bgpd @@ -572,65 +605,138 @@ fi %if %{with_babeld} %{_sbindir}/babeld %endif -%if %{with_shared} - %{_libdir}/lib*.so - %{_libdir}/lib*.so.0 - %attr(755,root,root) %{_libdir}/lib*.so.0.* +%if %{with_bfdd} + %{_sbindir}/bfdd %endif +%{_libdir}/lib*.so.0 +%{_libdir}/lib*.so.0.* %if %{with_fpm} - %attr(755,root,root) %{_libdir}/frr/modules/zebra_fpm.so + %{_libdir}/frr/modules/zebra_fpm.so %endif %if %{with_rpki} - %attr(755,root,root) %{_libdir}/frr/modules/bgpd_rpki.so + %{_libdir}/frr/modules/bgpd_rpki.so %endif -%attr(755,root,root) %{_libdir}/frr/modules/zebra_irdp.so +%{_libdir}/frr/modules/zebra_irdp.so %{_bindir}/* %config(noreplace) %{configdir}/[!v]*.conf* -%config(noreplace) %attr(750,%frr_user,%frr_user) %{configdir}/daemons +%config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons %if "%{initsystem}" == "systemd" %{_unitdir}/frr.service %else %{_initddir}/frr %endif -%{_sbindir}/frr %config(noreplace) %{_sysconfdir}/pam.d/frr %config(noreplace) %{_sysconfdir}/logrotate.d/frr %{_sbindir}/frr-reload +%{_sbindir}/frrcommon.sh +%{_sbindir}/frrinit.sh +%{_sbindir}/watchfrr.sh + %files contrib -%defattr(-,root,root) %doc tools + %files pythontools -%defattr(-,root,root) %{_sbindir}/frr-reload.py %{_sbindir}/frr-reload.pyc %{_sbindir}/frr-reload.pyo + %files devel -%defattr(-,root,root) -%if %{with_ospfclient} - %{_sbindir}/ospfclient -%endif -%{_libdir}/*.a -%{_libdir}/*.la -%dir %attr(755,root,root) %{_includedir}/%{name} -%{_includedir}/%name/*.h -%dir %attr(755,root,root) %{_includedir}/%{name}/ospfd -%{_includedir}/%name/ospfd/*.h +%{_libdir}/lib*.so +%dir %{_includedir}/%{name} +%{_includedir}/%{name}/*.h +%dir %{_includedir}/%{name}/ospfd +%{_includedir}/%{name}/ospfd/*.h %if %{with_ospfapi} - %dir %attr(755,root,root) %{_includedir}/%{name}/ospfapi - %{_includedir}/%name/ospfapi/*.h + %dir %{_includedir}/%{name}/ospfapi + %{_includedir}/%{name}/ospfapi/*.h %endif %if %{with_eigrpd} - %dir %attr(755,root,root) %{_includedir}/%{name}/eigrpd - %{_includedir}/%name/eigrpd/*.h + %dir %{_includedir}/%{name}/eigrpd + %{_includedir}/%{name}/eigrpd/*.h %endif + %changelog -* Sun May 20 2018 Martin Winter - %{version} + +* Tue May 7 2019 Quentin Young - %{version} +- bgpd: Fix 'show bgp ipv4/ipv6 neighbors' to show only v4 or v6 neighbors +- bgpd: Fix display issue when showing labeled-unicast routes +- bgpd: Fix incorrect # peers in 'show bgp ipv6 summary' output +- bgpd: Fix issue with remote-private-as in combination with local-as +- bgpd: Fix memory error when prepending to AS-path +- bgpd: Improve error handling when using maximum-prefix +- ldpd: Fix startup permissions error on OpenBSD +- ldpd: add support for FreeBSD IP_BINDANY +- ospfd: Fix incorrect display of millisecond time values +- tools: Fix incorrect systemd dependencies causing failure to start on boot +- vtysh: Fix unnecessary reconnection under multi-instance OSPF +- watchfrr: Fix multi-instance support when using new init script +- zebra: Fix a display bug in 'show ip route ... json' +- zebra: Fix compilation issue on OpenBSD +- zebra: Fix issue with missed selection of system-sourced routes +- zebra: Fix race condition in label manager +- zebra: Reliability improvements to pseudowire route recovery +- zebra: Tweak metric values for macvlan devices + +* Tue Jan 8 2019 Martin Winter - 6.0.2 +- Security Issue (Denial of Service): Fix BGP Attribute 255 (experimental VNC) + handling + +* Sat Dec 29 2018 Martin Winter - 6.0.1 +- Various fixes for label manager +- Fix BGP unnumbered peer setup +- Various other fixes + +* Sun Oct 7 2018 Martin Winter - 6.0 +- Staticd: New daemon responsible for management of static routes +- ISISd: Implement dst-src routing as per draft-ietf-isis-ipv6-dst-src-routing +- BFDd: new daemon for BFD (Bidrectional Forwarding Detection). Responsiblei + for notifying link changes to make routing protocols converge faster. +- various bug fixes + +* Thu Jul 5 2018 Martin Winter - 5.0.1 +- Support Automake 1.16.1 +- BGPd: Support for flowspec ICMP, DSCP, packet length, fragment and tcp flags +- BGPd: fix rpki validation for ipv6 +- VRF: Workaround for kernel bug on Linux 4.14 and newer +- Zebra: Fix interface based routes from zebra not marked up +- Zebra: Fix large zebra memory usage when redistribute between protocols +- Zebra: Allow route-maps to match on source instance +- BGPd: Backport peer-attr overrides, peer-level enforce-first-as and filtered-routes fix +- BGPd: fix for crash during display of filtered-routes +- BGPd: Actually display labeled unicast routes received +- Label Manager: Fix to work correctly behind a label manager proxy + +* Thu Jun 7 2018 Martin Winter - 5.0 +- PIM: Add a Multicast Trace Command draft-ietf-idmr-traceroute-ipm-05 +- IS-IS: Implement Three-Way Handshake as per RFC5303 +- BGPD: Implement VPN-VRF route leaking per RFC4364. +- BGPD: Implement VRF with NETNS backend +- BGPD: Flowspec +- PBRD: Add a new Policy Based Routing Daemon + +* Sun May 28 2018 Rafael Zalamena - %{version} +- Add BFDd support + +* Sun May 20 2018 Martin Winter - 4.0.1 - Fixed RPKI RPM build +* Sun Mar 11 2018 Martin Winter - 4.0 +- ISIS-MT - https://tools.ietf.org/html/rfc5120 +- BGP - RPKI (RFC 6810) +- BGP - v4 labeled unicast as per RFC 3107 +- BGP/Zebra - Type 2 and 3 EVPN with symmetric and asymmetric routing +- EIGRP - https://tools.ietf.org/html/rfc7868 +- FRR - Tab completion for iface names, prefix-lists, route-maps, BGP peers +- BABEL - https://tools.ietf.org/html/rfc6126 +- PIM VRF - Added the ability to work with VRF’s to PIM +- OSPFv2 VRF - Added the ability to work with VRF’s to OSPFv2 +- OSPFv2 Experimental SR - draft-ietf-ospf-segment-routing-extensions-24 +- ZEBRA - Add ability to create a static route that leaks across VRF’s. + * Sun Mar 4 2018 Martin Winter - Add option to build with RPKI (default: disabled)