summaryrefslogtreecommitdiffstats
path: root/redhat
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-09 13:16:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-09 13:16:35 +0000
commite2bbf175a2184bd76f6c54ccf8456babeb1a46fc (patch)
treef0b76550d6e6f500ada964a3a4ee933a45e5a6f1 /redhat
parentInitial commit. (diff)
downloadfrr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.tar.xz
frr-e2bbf175a2184bd76f6c54ccf8456babeb1a46fc.zip
Adding upstream version 9.1.upstream/9.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'redhat')
-rw-r--r--redhat/.gitignore2
-rw-r--r--redhat/frr.logrotate168
-rw-r--r--redhat/frr.pam27
-rw-r--r--redhat/frr.spec.in1972
4 files changed, 2169 insertions, 0 deletions
diff --git a/redhat/.gitignore b/redhat/.gitignore
new file mode 100644
index 0000000..15804ce
--- /dev/null
+++ b/redhat/.gitignore
@@ -0,0 +1,2 @@
+zebra.spec
+frr.spec
diff --git a/redhat/frr.logrotate b/redhat/frr.logrotate
new file mode 100644
index 0000000..31061e3
--- /dev/null
+++ b/redhat/frr.logrotate
@@ -0,0 +1,168 @@
+/var/log/frr/frr.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -HUP `cat /var/run/*syslog*.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/zebra.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/zebra.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/babeld.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/babeld.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/bgpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/bgpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/isisd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/isisd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/ospfd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/ospfd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/ospf6d.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/ospf6d.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/ripd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/ripd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/ripngd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/ripngd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/ldpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/ldpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/nhrpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/nhrpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/eigrpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/eigrpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/bfdd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/bfdd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/fabricd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/fabricd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/pathd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/pathd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/pbrd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/pbrd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/pimd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/pimd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/pim6d.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/pim6d.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/sharpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/sharpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/staticd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/staticd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
+/var/log/frr/vrrpd.log {
+ notifempty
+ missingok
+ postrotate
+ /bin/kill -USR1 `cat /var/run/frr/vrrpd.pid 2> /dev/null` 2> /dev/null || true
+ endscript
+}
+
diff --git a/redhat/frr.pam b/redhat/frr.pam
new file mode 100644
index 0000000..17a62f1
--- /dev/null
+++ b/redhat/frr.pam
@@ -0,0 +1,27 @@
+#%PAM-1.0
+#
+
+##### if running frr as root:
+# Only allow root (and possibly wheel) to use this because enable access
+# is unrestricted.
+auth sufficient pam_rootok.so
+account sufficient pam_rootok.so
+
+# Uncomment the following line to implicitly trust users in the "wheel" group.
+#auth sufficient pam_wheel.so trust use_uid
+# Uncomment the following line to require a user to be in the "wheel" group.
+#auth required pam_wheel.so use_uid
+###########################################################
+
+# If using frr privileges and with a seperate group for vty access, then
+# access can be controlled via the vty access group, and pam can simply
+# check for valid user/password, eg:
+#
+# only allow local users.
+#auth required pam_securetty.so
+#auth include system-auth
+#auth required pam_nologin.so
+#account include system-auth
+#password include system-auth
+#session include system-auth
+#session optional pam_console.so
diff --git a/redhat/frr.spec.in b/redhat/frr.spec.in
new file mode 100644
index 0000000..f43d0c1
--- /dev/null
+++ b/redhat/frr.spec.in
@@ -0,0 +1,1972 @@
+# configure options
+#
+# Some can be overridden on rpmbuild commandline with:
+# rpmbuild --define 'variable value'
+# (use any value, ie 1 for flag "with_XXXX" definitions)
+#
+# E.g. rpmbuild --define 'release_rev 02' may be useful if building
+# rpms again and again on the same day, so the newer rpms can be installed.
+# bumping the number each time.
+
+#################### FRRouting (FRR) configure options #####################
+# with-feature options
+%{!?with_babeld: %global with_babeld 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_pim6d: %global with_pim6d 1 }
+%{!?with_vrrpd: %global with_vrrpd 1 }
+%{!?with_rtadv: %global with_rtadv 1 }
+%{!?with_watchfrr: %global with_watchfrr 1 }
+%{!?with_pathd: %global with_pathd 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
+
+# defines for configure
+%define rundir %{_localstatedir}/run/%{name}
+
+############################################################################
+
+#### Version String tweak
+# Remove invalid characters form version string and replace with _
+%{expand: %%global rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
+%define frrversion @VERSION@
+
+#### Check for systemd or init.d (upstart)
+# Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
+%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
+ %global initsystem systemd
+%else
+%if 0%{?rhel} && 0%{?rhel} < 7
+ %global initsystem upstart
+%else
+ %{expand: %%global initsystem %(if [[ `/sbin/init --version 2> /dev/null` =~ upstart ]]; then echo upstart; elif [[ `readlink -f /sbin/init` = /usr/lib/systemd/systemd ]]; then echo systemd; elif [[ `systemctl` =~ -\.mount ]]; then echo systemd; fi)}
+%endif
+%endif
+
+# Check for python version - use python2.7 on CentOS 6, otherwise python3
+%if 0%{?rhel} && 0%{?rhel} < 7
+ %global use_python2 1
+%else
+ %global use_python2 0
+%endif
+
+# If init system is systemd, then always enable watchfrr
+%if "%{initsystem}" == "systemd"
+ %global with_watchfrr 1
+%endif
+
+#### Check for RedHat 6.x or CentOS 6.x - they are too old to support PIM.
+#### Always disable it on these old systems unconditionally
+#
+# if CentOS / RedHat and version < 7, then disable PIMd (too old, won't work)
+%if 0%{?rhel} && 0%{?rhel} < 7
+ %global with_pimd 0
+ %global with_pim6d 0
+%endif
+
+# misc internal defines
+%{!?frr_uid: %global frr_uid 92 }
+%{!?frr_gid: %global frr_gid 92 }
+%{!?vty_gid: %global vty_gid 85 }
+
+%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd fabricd pathd
+
+%if %{with_ldpd}
+ %define daemon_ldpd ldpd
+%else
+ %define daemon_ldpd ""
+%endif
+
+%if %{with_pimd}
+ %define daemon_pimd pimd
+%else
+ %define daemon_pimd ""
+%endif
+
+%if %{with_pim6d}
+ %define daemon_pim6d pim6d
+%else
+ %define daemon_pim6d ""
+%endif
+
+%if %{with_pbrd}
+ %define daemon_pbrd pbrd
+%else
+ %define daemon_pbrd ""
+%endif
+
+%if %{with_nhrpd}
+ %define daemon_nhrpd nhrpd
+%else
+ %define daemon_nhrpd ""
+%endif
+
+%if %{with_eigrpd}
+ %define daemon_eigrpd eigrpd
+%else
+ %define daemon_eigrpd ""
+%endif
+
+%if %{with_babeld}
+ %define daemon_babeld babeld
+%else
+ %define daemon_babeld ""
+%endif
+
+%if %{with_vrrpd}
+ %define daemon_vrrpd vrrpd
+%else
+ %define daemon_vrrpd ""
+%endif
+
+%if %{with_watchfrr}
+ %define daemon_watchfrr watchfrr
+%else
+ %define daemon_watchfrr ""
+%endif
+
+%if %{with_bfdd}
+ %define daemon_bfdd bfdd
+%else
+ %define daemon_bfdd ""
+%endif
+
+%if %{with_pathd}
+ %define daemon_pathd pathd
+%else
+ %define daemon_pathd ""
+%endif
+
+%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_pim6d} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} %{daemon_bfdd} %{daemon_vrrpd} %{daemon_pathd}
+
+#release sub-revision (the two digits after the CONFDATE)
+%{!?release_rev: %global release_rev 01 }
+
+Summary: Routing daemon
+Name: frr
+Version: %{rpmversion}
+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: 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
+BuildRequires: libyang-devel >= 2.1.80
+%if 0%{?rhel} && 0%{?rhel} < 7
+#python27-devel is available from ius community repo for RedHat/CentOS 6
+BuildRequires: python27-devel
+BuildRequires: python27-sphinx
+%else
+%if %{use_python2}
+BuildRequires: python-devel >= 2.7
+BuildRequires: python-sphinx
+%else
+BuildRequires: python3-devel
+BuildRequires: python3-sphinx
+%endif
+%endif
+%if 0%{?rhel} > 7
+#platform-python-devel is needed for /usr/bin/pathfix.py
+BuildRequires: platform-python-devel
+%endif
+Requires: initscripts
+%if %{with_pam}
+BuildRequires: pam-devel
+%endif
+%if "%{initsystem}" == "systemd"
+BuildRequires: systemd
+BuildRequires: systemd-devel
+Requires(post): systemd
+Requires(preun): systemd
+Requires(postun): systemd
+%else
+Requires(post): chkconfig
+Requires(preun): chkconfig
+# Initscripts > 5.60 is required for IPv6 support
+Requires(pre): initscripts >= 5.60
+%endif
+Provides: routingdaemon = %{version}-%{release}
+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, EIGRP and BFD.
+
+FRRouting is a fork of Quagga.
+
+
+%package contrib
+Summary: contrib tools for frr
+Group: System Environment/Daemons
+
+%description contrib
+Contributed/3rd party tools which may be of use with frr.
+
+
+%package pythontools
+Summary: python tools for frr
+%if 0%{?rhel} && 0%{?rhel} < 7
+#python27 is available from ius community repo for RedHat/CentOS 6
+BuildRequires: python27
+Requires: python27-ipaddress
+%else
+%if %{use_python2}
+BuildRequires: python2
+Requires: python2-ipaddress
+%else
+BuildRequires: python3
+%endif
+%endif
+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
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+The frr-devel package contains the header and object files necessary for
+developing OSPF-API and frr applications.
+
+
+%package rpki-rtrlib
+Summary: BGP RPKI support (rtrlib)
+Group: System Environment/Daemons
+BuildRequires: librtr-devel >= 0.8
+Requires: %{name} = %{version}-%{release}
+
+%description rpki-rtrlib
+Adds RPKI support to FRR's bgpd, allowing validation of BGP routes
+against cryptographic information stored in WHOIS databases. This is
+used to prevent hijacking of networks on the wider internet. It is only
+relevant to internet service providers using their own autonomous system
+number.
+
+
+%package snmp
+Summary: SNMP support
+Group: System Environment/Daemons
+BuildRequires: net-snmp-devel
+Requires: %{name} = %{version}-%{release}
+
+%description snmp
+Adds SNMP support to FRR's daemons by attaching to net-snmp's snmpd
+through the AgentX protocol. Provides read-only access to current
+routing state through standard SNMP MIBs.
+
+
+%prep
+%setup -q -n frr-%{frrversion}
+
+
+%build
+
+# For standard gcc verbosity, uncomment these lines:
+#CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
+#CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
+
+# For ultra gcc verbosity, uncomment these lines also:
+#CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
+#CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
+#CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
+#CFLAGS="${CFLAGS} -Wpacked -Wpadded"
+
+%configure \
+ --sbindir=%{_sbindir} \
+ --sysconfdir=%{configdir} \
+ --localstatedir=%{rundir} \
+ --disable-static \
+ --disable-werror \
+ --enable-irdp \
+%if %{with_multipath}
+ --enable-multipath=%{with_multipath} \
+%endif
+ --enable-vtysh \
+%if %{with_ospfclient}
+ --enable-ospfclient \
+%else
+ --disable-ospfclient\
+%endif
+%if %{with_ospfapi}
+ --enable-ospfapi \
+%else
+ --disable-ospfapi \
+%endif
+%if %{with_rtadv}
+ --enable-rtadv \
+%else
+ --disable-rtadv \
+%endif
+%if %{with_ldpd}
+ --enable-ldpd \
+%else
+ --disable-ldpd \
+%endif
+%if %{with_pimd}
+ --enable-pimd \
+%else
+ --disable-pimd \
+%endif
+%if %{with_pim6d}
+ --enable-pim6d \
+%else
+ --disable-pim6d \
+%endif
+%if %{with_pbrd}
+ --enable-pbrd \
+%else
+ --disable-pbrd \
+%endif
+%if %{with_nhrpd}
+ --enable-nhrpd \
+%else
+ --disable-nhrpd \
+%endif
+%if %{with_eigrpd}
+ --enable-eigrpd \
+%else
+ --disable-eigrpd \
+%endif
+%if %{with_babeld}
+ --enable-babeld \
+%else
+ --disable-babeld \
+%endif
+%if %{with_vrrpd}
+ --enable-vrrpd \
+%else
+ --disable-vrrpd \
+%endif
+%if %{with_pam}
+ --with-libpam \
+%endif
+%if 0%{?frr_user:1}
+ --enable-user=%{frr_user} \
+ --enable-group=%{frr_user} \
+%endif
+%if 0%{?vty_group:1}
+ --enable-vty-group=%{vty_group} \
+%endif
+%if %{with_fpm}
+ --enable-fpm \
+%else
+ --disable-fpm \
+%endif
+%if %{with_watchfrr}
+ --enable-watchfrr \
+%else
+ --disable-watchfrr \
+%endif
+%if %{with_cumulus}
+ --enable-cumulus \
+%endif
+%if %{with_bgp_vnc}
+ --enable-bgp-vnc \
+%else
+ --disable-bgp-vnc \
+%endif
+ --enable-isisd \
+ --enable-rpki \
+%if %{with_bfdd}
+ --enable-bfdd \
+%else
+ --disable-bfdd \
+%endif
+%if %{with_pathd}
+ --enable-pathd \
+%else
+ --disable-pathd \
+%endif
+ --enable-snmp
+ # end
+
+make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
+
+%if %{use_python2}
+# Change frr-reload.py to use python2.7
+sed -e '1c #!/usr/bin/python2.7' -i %{zeb_src}/tools/frr-reload.py
+sed -e '1c #!/usr/bin/python2.7' -i %{zeb_src}/tools/generate_support_bundle.py
+%else
+# Change frr-reload.py to use python3
+sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/frr-reload.py
+sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/generate_support_bundle.py
+%endif
+
+pushd doc
+make info
+popd
+
+
+%install
+mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
+ %{buildroot}%{_infodir}
+mkdir -m 0755 -p %{buildroot}%{_localstatedir}/log/frr
+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
+
+# Remove debian init script if it was installed
+rm -f %{buildroot}%{_sbindir}/frr
+
+# kill bogus libtool files
+rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
+rm -vf %{buildroot}%{_libdir}/*.la
+rm -vf %{buildroot}%{_libdir}/frr/libyang_plugins/*.la
+
+# install /etc sources
+%if "%{initsystem}" == "systemd"
+mkdir -p %{buildroot}%{_unitdir}
+install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service
+%else
+mkdir -p %{buildroot}%{_initddir}
+ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr
+%endif
+
+install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr
+install %{zeb_src}/tools/etc/frr/frr.conf %{buildroot}%{_sysconfdir}/frr/frr.conf.template
+install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
+install -m644 %{zeb_src}/tools/etc/logrotate.d/frr %{buildroot}%{_sysconfdir}/logrotate.d/frr
+install -d -m750 %{buildroot}%{rundir}
+
+%if 0%{?rhel} > 7 || 0%{?fedora} > 29
+# avoid `ERROR: ambiguous python shebang in` errors
+pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}/usr/lib/frr/*.py
+%py_byte_compile %{__python3} %{buildroot}/usr/lib/frr/*.py
+%else
+# remove ospfclient.py (if present) as it requires > python36
+rm -f %{buildroot}%{_sbindir}/ospfclient.py
+%endif
+
+%pre
+# add vty_group
+%if 0%{?vty_group:1}
+ 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
+ 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
+# zebra_spec_add_service <service name> <port/proto> <comment>
+# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
+
+zebra_spec_add_service ()
+{
+ # Add port /etc/services entry if it isn't already there
+ if [ -f %{_sysconfdir}/services ] && \
+ ! %__sed -e 's/#.*$//' %{_sysconfdir}/services 2>/dev/null | %__grep -wq $1 ; then
+ echo "$1 $2 # $3" >> %{_sysconfdir}/services
+ fi
+}
+
+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"
+zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
+zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
+zebra_spec_add_service isisd 2608/tcp "ISISd vty"
+%if %{with_ospfapi}
+ zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
+%endif
+%if %{with_babeld}
+ zebra_spec_add_service babeld 2609/tcp "BABELd vty"
+%endif
+%if %{with_nhrpd}
+ zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
+%endif
+%if %{with_pimd}
+ zebra_spec_add_service pimd 2611/tcp "PIMd vty"
+%endif
+%if %{with_pbrd}
+ zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
+%endif
+%if %{with_ldpd}
+ zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
+%endif
+%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
+zebra_spec_add_service fabricd 2618/tcp "Fabricd vty"
+%if %{with_vrrpd}
+ zebra_spec_add_service vrrpd 2619/tcp "VRRPd vty"
+%endif
+%if %{with_pathd}
+ zebra_spec_add_service pathd 2620/tcp "Pathd vty"
+%endif
+
+%if "%{initsystem}" == "systemd"
+ for daemon in %all_daemons ; do
+ %systemd_post frr.service
+ done
+%else
+ /sbin/chkconfig --add frr
+%endif
+
+# 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|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
+%if "%{initsystem}" == "systemd"
+ %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
+%endif
+
+/sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
+
+# Create dummy config file if they don't exist so basic functions can be used.
+if [ ! -e %{configdir}/frr.conf ] && [ ! -e %{configdir}/zebra.conf ]; then
+ # No frr.conf and per daemon configs exist
+ mv %{configdir}/frr.conf.template %{configdir}/frr.conf
+%if 0%{?frr_user:1}
+ chown %{frr_user}:%{frr_user} %{configdir}/frr.conf
+%endif
+ chmod 640 %{configdir}/frr.conf
+fi
+%if 0%{?frr_user:1}
+ chown %{frr_user}:%{frr_user} %{configdir}/daemons
+%endif
+
+%if %{with_watchfrr}
+ # No config for watchfrr - this is part of /etc/sysconfig/frr
+ rm -f %{configdir}/watchfrr.*
+%endif
+
+if [ ! -e %{configdir}/vtysh.conf ]; then
+ touch %{configdir}/vtysh.conf
+ chmod 640 %{configdir}/vtysh.conf
+%if 0%{?frr_user:1}
+ %if 0%{?vty_group:1}
+ chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
+ %endif
+%endif
+fi
+
+
+%postun
+if [ "$1" -ge 1 ]; then
+ #
+ # Upgrade from older version
+ #
+ %if "%{initsystem}" == "systemd"
+ ##
+ ## Systemd Version
+ ##
+ %systemd_postun_with_restart frr.service
+ %else
+ ##
+ ## init.d Version
+ ##
+ service frr restart >/dev/null 2>&1
+ %endif
+ :
+fi
+
+
+%preun
+%if "%{initsystem}" == "systemd"
+ ##
+ ## Systemd Version
+ ##
+ if [ $1 -eq 0 ] ; then
+ %systemd_preun frr.service
+ fi
+%else
+ ##
+ ## init.d Version
+ ##
+ if [ $1 -eq 0 ] ; then
+ service frr stop >/dev/null 2>&1
+ /sbin/chkconfig --del frr
+ fi
+%endif
+/sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
+
+
+%files
+%doc COPYING
+%doc doc/mpls
+%doc README.md
+/usr/share/yang/*.yang
+%if 0%{?frr_user:1}
+ %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
+ %dir %attr(755,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
+ %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
+%else
+ %dir %attr(750,root,root) %{configdir}
+ %dir %attr(755,root,root) %{_localstatedir}/log/frr
+ %dir %attr(750,root,root) %{rundir}
+%endif
+%{_infodir}/frr.info.gz
+%{_mandir}/man*/*
+%{_sbindir}/zebra
+%{_sbindir}/staticd
+%{_sbindir}/ospfd
+%{_sbindir}/ripd
+%{_sbindir}/bgpd
+%{_sbindir}/mgmtd
+%exclude %{_sbindir}/ssd
+%if %{with_watchfrr}
+ %{_sbindir}/watchfrr
+%endif
+%{_sbindir}/ripngd
+%{_sbindir}/ospf6d
+%if %{with_pimd}
+ %{_sbindir}/pimd
+%endif
+%if %{with_pim6d}
+ %{_sbindir}/pim6d
+%endif
+%if %{with_pbrd}
+ %{_sbindir}/pbrd
+%endif
+%if %{with_vrrpd}
+ %{_sbindir}/vrrpd
+%endif
+%{_sbindir}/isisd
+%{_sbindir}/fabricd
+%if %{with_ldpd}
+ %{_sbindir}/ldpd
+%endif
+%if %{with_eigrpd}
+ %{_sbindir}/eigrpd
+%endif
+%if %{with_nhrpd}
+ %{_sbindir}/nhrpd
+%endif
+%if %{with_babeld}
+ %{_sbindir}/babeld
+%endif
+%if %{with_bfdd}
+ %{_sbindir}/bfdd
+%endif
+%if %{with_pathd}
+ %{_sbindir}/pathd
+ %{_libdir}/frr/modules/pathd_pcep.so
+%endif
+%{_libdir}/libfrr.so*
+%{_libdir}/libfrrcares*
+%{_libdir}/libfrrospf*
+%if %{with_fpm}
+ %{_libdir}/frr/modules/zebra_fpm.so
+%endif
+%{_libdir}/frr/modules/zebra_cumulus_mlag.so
+%{_libdir}/frr/modules/dplane_fpm_nl.so
+%{_libdir}/frr/modules/zebra_irdp.so
+%{_libdir}/frr/modules/bgpd_bmp.so
+%{_libdir}/libfrr_pb.so*
+%{_libdir}/libfrrfpm_pb.so*
+%{_libdir}/libmgmt_be_nb.so*
+%{_bindir}/*
+%config(noreplace) %{configdir}/[!v]*.conf*
+%config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
+%if "%{initsystem}" == "systemd"
+ %{_unitdir}/frr.service
+%else
+ %{_initddir}/frr
+%endif
+%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
+%doc tools
+
+%files pythontools
+%{_sbindir}/generate_support_bundle.py
+%{_sbindir}/frr-reload.py
+%{_sbindir}/frr_babeltrace.py
+%if %{with_ospfclient} && (0%{?rhel} > 7 || 0%{?fedora} > 29)
+%{_sbindir}/ospfclient.py
+%endif
+%if 0%{?rhel} > 7 || 0%{?fedora} > 29
+%{_sbindir}/__pycache__/*
+%else
+%{_sbindir}/generate_support_bundle.pyc
+%{_sbindir}/generate_support_bundle.pyo
+%{_sbindir}/frr-reload.pyc
+%{_sbindir}/frr-reload.pyo
+%{_sbindir}/frr_babeltrace.pyc
+%{_sbindir}/frr_babeltrace.pyo
+%endif
+
+
+%post rpki-rtrlib
+# add rpki module to daemons
+sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{_sysconfdir}/frr/daemons
+
+%postun rpki-rtrlib
+# remove rpki module from daemons
+sed -i 's/ -M rpki//' %{_sysconfdir}/frr/daemons
+
+%files rpki-rtrlib
+%{_libdir}/frr/modules/bgpd_rpki.so
+
+
+%files snmp
+%{_libdir}/libfrrsnmp.so*
+%{_libdir}/frr/modules/*snmp.so
+
+
+%files devel
+%{_libdir}/lib*.so
+%dir %{_includedir}/%{name}
+%{_includedir}/%{name}/*.h
+%dir %{_includedir}/%{name}/mgmtd
+%{_includedir}/%{name}/mgmtd/*.h
+%dir %{_includedir}/%{name}/ospfd
+%{_includedir}/%{name}/ospfd/*.h
+%if %{with_bfdd}
+ %dir %{_includedir}/%{name}/bfdd
+ %{_includedir}/%{name}/bfdd/bfddp_packet.h
+%endif
+%if %{with_ospfapi}
+ %dir %{_includedir}/%{name}/ospfapi
+ %{_includedir}/%{name}/ospfapi/*.h
+%endif
+%if %{with_eigrpd}
+ %dir %{_includedir}/%{name}/eigrpd
+ %{_includedir}/%{name}/eigrpd/*.h
+%endif
+
+
+%changelog
+
+* Thu Oct 09 2023 Donatas Abraitis <donatas@opensourcerouting.org> - %{version}
+
+* Thu Oct 09 2023 Donatas Abraitis <donatas@opensourcerouting.org> - 9.1
+- Major highlights:
+- OSPFv2 HMAC-SHA Cryptographic Authentication
+- BGP MAC-VRF Site-Of-Origin support
+- BGP Dynamic capability support
+- IS-IS SRv6 uSID support (RFC 9352)
+- Change next-hop resolution via the default route for a traditional profile
+- Add support for VLAN, ECN, DSCP mangling/filtering
+- Zebra support for route replace semantics in FPM
+- New command for BGP `neighbor x addpath-tx-best-selected`
+- New command for BGP `mpls bgp l3vpn-multi-domain-switching`
+- A couple more new BGP route-map commands for as-path, communities manipulation
+
+* Tue Jun 06 2023 Jafar Al-Gharaibeh <jafar@atcorp.com> - 9.0
+- Major highlights:
+- Centralized Management Daemon (mgmtd)
+- Switched to libyang minimum version 2.1.80
+- Memory footprint for BGP reduced drastically
+- Add BGP `neighbor path-attribute treat-as-withdraw` command
+- Add BGP ASN dot notation support (RFC 5396)
+- Add BGP Software Version capability (draft-abraitis-bgp-version-capability)
+- Allow BGP peering via 127.0.0.0/8
+- Deprecate BGP internet community - this is the Cisco-specific community, which is never been RFC-defined and confusing
+- Implement `match source-protocol` for BGP route maps
+- Implement BGP Node Target extended communities (draft-ietf-idr-node-target-ext-comm)
+- Implement Flex-Algo for SR-MPLS (RFC 9350)
+- Add support for IS-IS advertise-passive-only
+- Add IS-IS affinity-map support
+- Add the graceful-restart hello-delay OSPFv2/OSPFv3 command
+- Add the `ipv6 mld join` PIMv6 command
+- Add `allow-ecmp x` RIP/RIPng command
+- Add BFD support for RIP
+
+* Fri Mar 10 2023 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.5
+- Major Highlights:
+- Add support for per-VRF SRv6 SID
+- Add BGP labeled-unicast Add-Path functionality
+- Implementation of SNMP BGP4v2-MIB (IPv6 support) for better network management and monitoring
+- Add BGP new command neighbor path-attribute discard
+- Add BGP new command neighbor path-attribute treat-as-withdraw
+- Implement L3 route-target auto/wildcard configuration
+- Implement BGP ACCEPT_OWN Community Attribute (rfc7611)
+- Implement The Accumulated IGP Metric Attribute for BGP (rfc7311)
+- Implement graceful-shutdown command per neighbor
+- Add BGP new command to configure TCP keepalives for a peer bgp tcp-keepalive
+- Traffic control (TC) ZAPI implementation
+- SRv6 uSID (microSID) implementation
+- Start deprecating start-shell, ssh, and telnet commands due to security reasons
+- Add VRRPv3 an ability to disable IPv4 pseudo-header checksum
+- BFD integration for static routes
+- Allow protocols to configure BFD sessions with automatic source selection
+- Allow zero-length opaque LSAs for OSPF (rfc5250)
+- Add ISIS new command set-overload-bit on-startup
+- PIMv6 BSM support
+- For a full list of new features and bug fixes, please refer to:
+- https://frrouting.org/release/
+
+* Tue Nov 01 2022 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.4
+- New BGP command (neighbor PEER soo) to configure SoO to prevent routing loops and suboptimal routing on dual-homed sites.
+- Command debug bgp allow-martian replaced to bgp allow-martian-nexthop because previously we allowed using martian next-hops when debug is turned on.
+- Implement BGP Prefix Origin Validation State Extended Community rfc8097
+- Implement Route Leak Prevention and Detection Using Roles in UPDATE and OPEN Messages rfc9234
+- BMP L3VPN support
+- PIMv6 support
+- MLD support
+- New command to enable using reserved IPv4 ranges as normal addresses for BGP next-hops, interface addresses, etc.
+- For a full list of bug fixes, please refer to https://frrouting.org/release/
+
+* Wed Jul 13 2022 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.3
+- General:
+- Add camelcase json keys in addition to pascalcase (Wrong JSON keys will be depracated)
+- Fix corruption when route-map delete/add sequence happens (fast re-add)
+- Reworked gRPC
+- RFC5424 & journald extended syslog target
+- bfdd:
+- Fix broken FSM in active/passive modes
+- bgpd:
+- Notification Message Support for BGP Graceful Restart (rfc8538)
+- BGP Cease Notification Subcode For BFD
+- Send Hold Timer for BGP (own implementation without an additional knob)
+- New `set as-path replace` command for BGP route-map
+- New `match peer` command for BGP route-map
+- New `ead-es-frag evi-limit` command for EVPN
+- New `match evpn route-type` command for EVPN route-map to match Type-1/Type-4
+- JSON outputs for all RPKI show commands
+- Set attributes via route-map for BGP conditional advertisements
+- Pass non-transitive extended communities between RS and RS-clients
+- Send MED attribute when aggregate prefix is created
+- Fix aspath memory leak in aggr_suppress_map_test
+- Fix crash for `show ip bgp vrf all all neighbors 192.168.0.1 ...`
+- Fix crash for `show ip bgp vrf all all`
+- Fix memory leak for BGP Community Alias in CLI
+- Fix memory leak when setting BGP community at egress
+- Fix memory leak when setting BGP large-community at egress
+- Fix SR color nexthop processing in BGP
+- Fix setting local-preference in route-map using +/-
+- Fix crash using Lua and route-map to set attributes via scripts
+- Fix crash when issuing various forms of `bgp no-rib`
+- isisd:
+- JSON output for show summary command
+- Fix crash when MTU mismatch occurs
+- Fix crash with xfrm interface type
+- Fix infinite loop when parsing LSPs
+- Fix router capability TLV parsing issues
+- vtysh:
+- New `show thread timers` command
+- ospfd6:
+- Add LSA statistics to LSA database
+- Add LSA stats to `show area json` output
+- Show time left in hello timer for `show ipv6 ospf6 int`
+- Restart SPF when distance is updated
+- Support keychain for ospf6 authentication
+- ospfd:
+- New `show ip ospf reachable-routers` command
+- Restart SPF when distance is updated
+- Use consistent JSON keys for `show ip ospf neighbor` and detail version
+- pimd:
+- Add additional IGMP stats
+- Add IGMP join sent/failed statistics
+- Add IGMP total groups and total source groups to statistics
+- New `debug igmp trace detail` command
+- New `ip pim passive` command
+- JSON support added for command `show ip igmp sources`
+- Allow the LPM match work properly with prefix lists and normal RPs
+- Do not allow 224.0.0.0/24 range in IGMP join
+- Fix IGMP packet/query check
+- Handle PIM join/prune receive flow for IPv6
+- Handle receive of (*,G) register stop with source address as 0
+- Handle of exclude mode IGMPv3 report messages for SSM-aware group
+- Handle of IGMPv2 report message for SSM-aware group range
+- Send immediate join with possible sg rpt prune bit set
+- Show group-type under `show ip pim rp-info`
+- Show total received messages IGMP stats
+- staticd:
+- Capture zebra advertised ECMP limit
+- Do not register existing nexthop to Zebra
+- Reject route config with too many nexthops
+- Track nexthops per-safi
+- watchfrr:
+- Add some more information to `show watchfrr`
+- Send operational state to systemd
+- zebra:
+- Add ability to know when FRR is not ASIC offloaded
+- Add command for setting protodown bit
+- Add dplane type for netconf data
+- Add ECMP supported to `show zebra`
+- Add EVPN status to `show zebra`
+- Add if v4/v6 forwarding is turned on/off to `show zebra`
+- Add initial zebra tracepoint support
+- Add kernel nexthop group support to `show zebra`
+- Add knowledge about ra and rfc 5549 to `show zebra`
+- Add mpls status to `show zebra`
+- Add netlink debug dump for netconf messages
+- Add netlink debugs for ip rules
+- Add OS and version to `show zebra`
+- Add support for end.dt4
+- Add to `show zebra` the type of vrf devices being used
+- Allow *BSD to specify a receive buffer size
+- Allow multiple connected routes to be choosen for kernel routes
+- Allow system routes to recurse through themselves
+- Do not send RAs w/o link-local v6 or on bridge-ports
+- Evpn disable remove l2vni from l3vni list
+- Evpn-mh bonds protodown check for set
+- Evpn-mh use protodown update reason api
+- Fix cleanup of meta queues on vrf disable
+- Fix crash in evpn neigh cleanup all
+- Fix missing delete vtep during vni transition
+- Fix missing vrf change of l2vni on vxlan interface
+- Fix rtadv startup when config read in is before interface up
+- Fix use after deletion event in FreeBSD
+- Fix v6 route replace failure turned into success
+- Get zebra graceful restart working when restarting on *BSD
+- Handle FreeBSD routing socket enobufs
+- Handle protodown netlink for vxlan device
+- Include mpls enabled status in interface output
+- Include old reason in evpn-mh bond update
+- Keep the interface flags safe on multiple ioctl calls
+- Let /32 host route with same ip cross vrf
+- Make router advertisement warnings show up once every 6 hours
+- Prevent crash if zebra_route_all is used for a route type
+- Prevent installation of connected multiple times
+- Protodown-up event trigger interface up
+- Register nht nexthops with proper safi
+- Update advertise-svi-ip macips w/ new mac
+- When handling unprocessed messages from kernel print usable string
+- New `show ip nht mrib` command
+- Handle ENOBUFS errors for FreeBSD
+
+* Tue Mar 1 2022 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.2
+- The FRRouting community would like to announce FRR Release 8.2.
+- This release consists of just over 800 commits from 62 authors.
+- Selected features and bug fixes are listed below.
+- babeld:
+- Fix the checks for truncated packets
+- bfdd:
+- Correct one spelling error of comment
+- Fix detection timeout update
+- Fix possibly wrong counter of control packets
+- bgpd:
+- Add "json" option to a few more show commands
+- Add 'show bgp <afi> <safi> json detail' header data
+- Add a 6 hour warning to missing policy
+- Add an ability to match ipv6 next-hop by prefix-list
+- Add autocomplete for access-list under bmp node
+- Add autocomplete for as-path filters
+- Add autocomplete for set/match community/large/ext lists
+- Add long-lived graceful restart capability
+- Add peer-groups to neighbor autocomplete
+- Adjust symbolic names for cease notifications according to rfc4486
+- Deprecate dpa, advertiser and rcid_path path attributes
+- Extended bgp administrative shutdown communication
+- Fix crash when using "show bgp vrf all"
+- Fix inconsistency of match ip/ipv6 next-hop commands
+- Fix missing name of default vrf
+- Handle TCP connection errors with connection callbacks for RPKI
+- Implement llgr helper mode
+- Implement rfc9072
+- Support redirect import more than one route-target ipv6
+- docker:
+- Update alpine build enable set own version
+- isisd:
+- Add link state traffic engineering support
+- Fix router capability tlv parsing issues
+- Fix running-config for fast-reroute
+- Make isis work with default vrf name different than 'default'
+- ospf6d
+- Add missing vrf parameter to "clear ipv6 ospf6 interface"
+- Add prompt for commands with non-exist vrf
+- Add support for nssa type-7 address ranges
+- Add the ability of specifying router-id/area-id in no debug ospf6
+- Do not originate type-4 lsa when nssa
+- Do not send type-5 into stub area
+- Fix ecmp inter-area route nexthop update
+- Fix memory leak for `show ipv6 ospf6 zebra json`
+- ospfd
+- Fix wrong comparison of routemap name
+- Fix crash on "ospf send-extra-data zebra"
+- Fix incorrect detection of topology changes in helper mode
+- Fix loss of mixed form in "range" command
+- Fix no-form of "graceful-restart" command
+- Fix summary-address deletion
+- Fix wrong parsing of te subtlv
+- pbrd
+- Add vlan actions to vty
+- Pbr route maps get addr family of nhgs
+- Protect from a possible null dereference
+- pimd
+- Do not allow 224.0.0.0/24 range in igmp join
+- Fix igmp user config
+- Fix msdp mesh grp with wildcard member addr
+- Fix stale forwarding entries left around after join goes away
+- Fix FRR drops IGMP packets for TOS value other than 0XC0
+- redhat
+- Check if frr.conf already exists
+- Logrotate file has typo for staticd
+- ripd
+- Fix packet send for non primary addresses
+- vtysh
+- Add missing rpki node when showing config
+- Improve startup time by ca. ×6
+- remove `address-family evpn`
+- watchfrr
+- Allow an integrated config to work within a namespace
+- zebra
+- Add optional nhg id output to `show ip ro`
+- Add resolver flag for nexthop in json
+- Add support for json output in srv6 locator detail command
+- Don't lose next hop weights while exporting via fpm
+- Fix buffer overflow
+- Fix netns deletion
+- Fix route-map application when when using vrfs
+
+* Tue Nov 2 2021 Jafar Al-Gharaibeh <jafar@atcorp.com> - 8.1
+- FRR 8.1 brings a long list of enhancements and fixes with 1200 commits from
+- 75 developers. Thanks to all contributers.
+- New Features:
+- Lua hooks are now feature complete, with one hook available for use (http://docs.frrouting.org/en/latest/scripting.html)
+- Improvements to SRv6 (Segment Routing over IPv6) (http://docs.frrouting.org/en/latest/zebra.html#segment-routing-ipv6)
+- Improvements to Prefix-SID (Type 5)
+- EVPN route type-5 gateway IP overlay Index (http://docs.frrouting.org/en/latest/bgp.html#evpn-overlay-index-gateway-ip)
+- OSPFv3 NSSA and NSSA totally stub areas (http://docs.frrouting.org/en/latest/ospf6d.html#ospf6-area)
+- OSPFv3 ASBR summarization (http://docs.frrouting.org/en/latest/ospf6d.html#asbr-summarisation-support-in-ospfv3)
+- OSPFv3 Graceful Restart (http://docs.frrouting.org/en/latest/ospf6d.html#graceful-restart)
+- OSPFv2 Graceful Restart (restarting mode added, helper was already implemented) (http://docs.frrouting.org/en/latest/ospfd.html#graceful-restart)
+- Behavior Changes
+- Every node in running config now has an explicit "exit" tag
+- Link bandwidth in BGP is now correctly encoded according to IEEE 754. To stay with old incorrect encoding use:
+- `neighbor PEER disable-link-bw-encoding-ieee`
+- Changelog
+- alpine:
+ Fix path for daemons file install
+- BGP:
+- Add "json" option to "show bgp as-path-access-list"
+- Add `disable-addpath-rx` knob
+- Add an ability to set extcommunity to none in route-maps
+- Add counter of displayed show bgp summary when filtering
+- Add knob to config cond-adv scanner period
+- Add route-map `match alias` command
+- Add rpki source address configuration
+- Add show bgp summary filter by neighbor or as
+- Add terse display option on show bgp summary
+- Allow for auto-completion of community alias's created
+- Bgp knob to teardown session immediately when peer is unreachable
+- Expand 'bgp default <afi>-<safi>' cmds
+- Extend evpn next hop tracking to type-1 and type-4 routes
+- Fix "no router bgp x vrf default"
+- Flowspec redirect vrf uses vrf table instead of allocated table id
+- Handle quick flaps of an evpn prefix properly
+- Initial batch of evpn lttng tracepoints
+- Limit processing to what is needed in rpki validation
+- Modify vrf/view display in show bgp summary
+- Set 4096 instead of 65535 as new max packet size for a new peer
+- Set extended msg size only if we advertised and received capability
+- Show bgp community alias in json community list output
+- Show bgp prefixes by community alias
+- Show max packet size per update-group
+- Split soft reconfigure table task into several jobs to not block vtysh
+- Store distance received from a redistribute statement
+- Update route-type-1 legend to match output
+- ISIS:
+- Fix sending of lsp with null seqno
+- lib:
+- Add "json" option to "show ip[v6] access-list"
+- Add "json" option to "show ip[v6] prefix-list"
+- Add "json" option to "show route-map"
+- Prevent grpc assert on missing yang node
+- NHRP:
+- Clear cache when shortcuts are cleared
+- Fix corrupt address being shown for shortcuts with no cache entry
+- Set prefix correctly in resolution request
+- OSPF6:
+- Add debug commands for lsa all and route all
+- Add warning log for late hello packets
+- Add write-multiplier configuration
+- Don't update router-id if at least one adjacency is full
+- Extend the "redistribute" command with more options
+- Fix issue when displaying the redistribute command
+- Fix logging of border router routes
+- Json output for database dump show command
+- Link state id in lsa database json output
+- Send lsa update immediately when ospf instance is deleted
+- OSPF:
+- Fix crash when creating vlink in unknown vrf
+- Gr conformance fix for hello packet dr election
+- Print extra lsa information in some log messages
+- Rfc conformance test case 25.23 issue fix
+- Show ip ospf route json does not shown metric and tag
+- Summary lsa is not originated when process is reset
+- pathd:
+- Handle pcinitiated configuration, main thread
+- Handle pcinitiated messages, thread controller
+- Handle srp_id correctly
+- If pce ret no-path to pcreq don't retry pcreq nor delegate
+- PBR:
+- Add `match ip-protocol [tcp|udp]`
+- Add ability to set/unset src and dest ports
+- Nhg "add" edge case for last in table range
+- Start inclusion of src and dst ports for pbrd
+- PIM:
+- Add tos/ttl check for igmp conformance
+- Allow join prune intervals to be as small as 5 seconds
+- Allow msdp group name 'default'
+- Fix register suppress timer code
+- Fix uaf/heap corruption in bsm code
+- Fix command "no ip msdp mesh-group member"
+- Igmp groups are not getting timeout
+- Igmp memberships are not querier specific
+- Igmp sockets need to be iface-bound too
+- Prevent uninited usage of nexthop
+- Support msdp global timers configuration
+- vtysh
+- Add cli timestamp '-t' flag
+- Add error code if daemon is not running
+- Fix searching commands in parent nodes
+- yang:
+- Add msdp timer configuration
+- Fix bgp multicast prefix type
+- Mark a couple of prefix-list/access-list leafs as mandatory
+- Move multicast prefix type definition
+- Replace an empty pattern with a zero-length restriction
+- Rework pim msdp mesh group
+- Simplify msdp peer handling
+- zebra :
+- Add "json" option to "show interface"
+- Various improvment to dataplane interface
+- Add message counts for `show zebra client`
+- Add nhg id to show ip route json
+- Add show command for ra interface lists
+- Fix ipv4 routes with ipv6 link local next hops install in fpm
+- Handle bridge mac address update in evpn contexts
+- Move individual lines to table in `show zebra client` command
+- Refresh vxlan evpn contexts, when bridge interface goes up
+- Update zl3vni when bridge link refreshed in other namespaces
+
+* Wed Jul 21 2021 Martin Winter <mwinter@opensourcerouting.org> - 8.0
+- Major changes
+- New daemon pathd for segment routing
+- EVPN Multihoming is now fully supported
+- OSPFv3 now supports VRFs
+- TI-LFA has been implemented in IS-IS and OSPF
+- Ability for Zebra to dump netlink messages in a human-friendly format
+- LDP gained SNMP support
+- libyang minimun version is now 2.0
+- BABEL:
+- Add `distribute-list` commands
+- Fix memory leak in connected route handling
+- BGP:
+- Add support for use of aliases with communities
+- Add support of tcp-mss for neighbors
+- Add support for EVPN Multihoming
+- Add ability to show BGP routes from a particular table version
+- Add support for for RFC 8050 (MRT add-path)
+- Add SNMP support for MPLS VPN
+- Add `show bgp summary wide` command to show more detailed output
+ on wide terminals
+- Add ability for peer-groups to have `ttl-security hops` configured
+- Add support for conditional Advertisement
+- Add support for RFC 4271 Delay Open Timer
+- Add a knob to not advertise until route is installed in fib
+- Add BGP-wide configuration for graceful shutdown
+- Add support for RFC 8654 extended messages
+- Improve RPKI reporting as well as new show commands
+- Improve handling of VRF route leaking
+- Improve scaling behavior for dynamic neighbors
+- Improve LL nexthop tracking to be interface based
+- Improve route reachability handling with respect to blackhole routes
+- Improve SNMP traps to RFC 4273 notifications
+- Improve EVPN routes to use L3 NHG's where applicable
+- Improvements to EVPN
+- Improvements to update behavior
+- Fix various issues with connection resolution
+- Fix statistics commands in some situations
+- Fix non-determistic locally-originated paths in bestpath selection
+- Continue working on transitioning to YANG/Northbound configuration
+- Various bug fixes and performance improvements
+- EIGRP:
+- Add `distribute-list` commands
+- Ensure received AS number is the same as ours in all situations
+- Properly validate TLV lengths in some situations
+- IS-IS:
+- Add ldb-sync functionality
+- Add TI-LFA functionality
+- Add support for Anycast-SID's
+- Add support for classic LFA RFC 5286
+- Add `show isis fast-reroute summary` command
+- Add support for Remote LFA RFC 7490
+- Fix Attach-bit processing in some scenarios
+- Cleanup BFD integration
+- Various bug fixes and performance improvements
+- LDP:
+- Add SNMP support
+- Support for LDP IGP Synchronization
+- Support for RLFA clients
+- Various bug fixes and performance improvements
+- LIBFRR:
+- Various bugfixes and performance improvements
+- NHRP:
+- Add `nhrp multicast-nflog-group (1-65535)` command
+- Add configuration options for vici socket path
+- Add support for forwarding multicast packets
+- Fix handling of MTU
+- Fix handling of NAT extension
+- Retry IPsec under some conditions
+- OSPFv2:
+- Add OSPF GR helper support
+- Add JSON support for various commands
+- Add `summary-address A.B.C.D/M ...` commands
+- Add `area X nssa suppress-fa` command
+- Add support for TI-LFA
+- Add support for BFD profiles
+- Add support for Traffic Engineering database
+- Add support for usage of DMPVPN with OSPF
+- Add `clear ip ospf neighbor` commands
+- Add YANG support for route-maps
+- Improvements to SNMP
+- Fixes for type 5 and type 7 LSA handling
+- Various bug fixes and performance improvements
+- OSPFv3:
+- Add support for VRFs
+- Add JSON support to a bunch of commands
+- Add ability to control maximum paths for routes
+- Add `show ipv6 ospf6 vrfs` command
+- Add support for BFD profiles
+- Fix to not send hellos on loopbacks
+- Cleanup area handling around interfaces
+- YANG support for route-maps
+- Various bug fixes and performance improvements
+- OSPFCLIENT:
+- Cleanup trust of user input
+- PATHd:
+- Add support of SR-TE policy management daemon
+- Add optional support for PCEP to pathd
+- Integrate PCEP-LIB into FRR
+- PBR:
+- Add `set installable` nhg command
+- Improve interface up/down event handling
+- PIM:
+- Add YANG integration
+- Add JSON support to various commands
+- Add BFD profile support
+- Fixes to IGMP conformance
+- Fixes to behavior surrounding Prune and Prune-pending
+- Various bug fixes and performance improvements
+- RIPNG:
+- Fix interface wakeup after shutdown
+- SHARP:
+- Add ability to use Nexthop Groups
+- Add v4 redistribute watching
+- Add TED support
+- Various bug fixes
+- STATIC:
+- Fix nexthop handling in some situations
+- Forbid blackhole and non-blackhole nexthops in a single route
+- VRRP:
+- printf formatting cleanups
+- VTYSH:
+- Add a `show history` command
+- Add `show memory <daemon>` support
+- Start deprecation cycle for `address-family evpn`
+- Display version with --help
+- Various bug fixes
+- WATCHFRR:
+- Fix some crashes
+- ZEBRA:
+- Add JSON support to various commands
+- Add Human readable netlink dumps
+- Add L2 NHG support
+- Add support for LSPs to FPM dataplane
+- Add ability for other protocol daemons to install nexthop groups into the kernel
+- Add YANG support for route-maps
+- Improve scale performance when handling a large number of VRF's
+- Improve network namespace handling
+- Improve asic-offload handling
+- Improve FreeBSD interface and route handling
+- Improve handling of neighbors in kernel dataplane plugin
+- Improve label manager
+- Improve route-map processing
+- Improve debug-ability of routes and VRFs
+- Improve FPM dataplane plugin
+- Improve handling of reachability / nexthop tracking on shutdown interfaces
+- Improve EVPN support
+- Fix startup handling of `set src X`
+- Various bug fixes and performance improvements
+
+* Wed Mar 3 2021 Martin Winter <mwinter@opensourcerouting.org> - 7.5.1
+- BABEL:
+- Fix connected route leak on change
+- BFD:
+- Session lookup was sometimes wrong
+- Memory leak and handling cleanups
+- In some situations handle vrf appropriately when receiving packets
+- BGP:
+- Peer Group Inheritance Fixes
+- Dissallow attempt to peer peers reachable via blackholes
+- Send BMP down message when reachability fails
+- Cleanup handling of aggregator data when the AGG AS is 0
+- Handle `neighbor <peer-group allowas-in` config changes properly
+- Properly parse community and lcommunity values in some circumstances
+- Allow peer-groups to configure `ttl-security hops`
+- Prevent v6 routes with v4 nexthops from being installed
+- Allow `default-originate` to be cleared from a peer group
+- Fix evpn route-map vni filter at origin
+- local routes were using non-default distance
+- Properly track if the nexthop was updated in some circumstances
+- Cleanup `show running` when running bgp with `-e X` values
+- Various Memory leaks in show commands
+- Properly withdraw exported routes when deleting a VRF
+- Avoid resetting ebgp-multihop if peer setting is the same as peer-group
+- Properly encode flowspec rules to zebra in some rare circumstances
+- Generate statistics for routes in bgp when we have exactly 1 route
+- Properly apply route-map for the default-originate command
+- EIGRP:
+- Properly set MTU for eigrp packets sent
+- Various memory leaks and using uninited data fixes
+- ISIS:
+- When last area address is removed, resign if we were the DR
+- Various memory leaks and using uninited data fixes
+- LDP:
+- Various memory leaks and using uninited data fixes
+- NHRP:
+- Use onlink routes when prefix == nh
+- Shortcut routes are installed with proper nexthop
+- OSPF:
+- Prevent duplicate packet read in multiple vrf situation
+- Fix area removal at interface level
+- Restore Point to MultiPoint interface types
+- Correctly handle MTU change on startup
+- Multi Instance initialization sometimes was not successful
+- NSSA translate-always was not working properly
+- OSPFv3:
+- Don't send hellos on loopback interfaces
+- Handle ECMP better when a sub-path is removed
+- Memory leak and handling fixes
+- Fix Link LSA not updating when router priority is modified
+- Some output from show commands was wrong
+- Intra area remote connected prefixes sometimes not installed
+- PBR:
+- Various memory leaks and using uninited data fixes
+- PIM:
+- SGRpt prune received during prune didn't override holdtime
+- Various memory leaks and using uninited data fixes
+- STATIC:
+- Fix VRF and usage on startup in some instances
+- Tableid was being mishandled in some cases
+- VTYSH:
+- Disable bracketed paste in readline.
+- WATCHFRR:
+- Various memory leaks and using uninited data fixes
+- ZEBRA:
+- Always install blackhole routes using kernel routes instead of nexthops
+- Various memory leaks and using uninited data fixes
+- Dissallow resolution to duplicate nexthops that created infinite nexthops
+- Apply the route-map delay-timer globally
+- Some routes were stuck in Queued state when using the FPM
+- Better handle vrf creation when using namespaces
+- Set NUD_NOARP on sticky mac entries in addtion to NTF_STICKY
+- Allow `set src X` to work on startup
+- FRR Library:
+- Fix a variety of memory leaks
+- Fix VRF Creation in some instances
+- RPKI context editing was not properly handled in reload situations
+- routemap code was not properly handling modification of CLI in some instances
+- SNAPCRAFT:
+- Update to using rtrlib 0.7.0
+- Fix passthrough path for Libyang 1.x
+- ALPINE:
+- Remove old docker deps
+
+* Mon Nov 2 2020 Donald Sharp <sharpd@nvidia.com> - 7.5
+- BFD
+- Profile support
+- Minimum ttl support
+- BGP
+- rpki VRF support
+- GR fixes
+- Add wide option to display of routes
+- Add `maximum-prefix <num> force`
+- Add `bestpath-routes` to neighbor command
+- Add `bgp shutdown message MSG...` command
+- Add v6 Flowspec support
+- Add `neighbor <neigh> shutdown rtt` command
+- Allow update-delay to be applied globaly
+- EVPN
+- Beginning of MultiHoming Support
+- ISIS
+- Segment Routing Support
+- VRF Support
+- Guard against adj timer display overflow
+- Add support for Anycast-SIDs
+- Add support for Topology Independent LFA (TI-LFA)
+- Add `lsp-gen-interval 2` to isis configuration
+- OSPF
+- Segment Routing support for ECMP
+- Various LSA fixes
+- Prevent crash if transferring config amongst instances
+- PBR
+- Adding json support to commands
+- DSCP/ECN based PBR Matching
+- PIM
+- Add more json support to commands
+- Fix missing mesh-group commands
+- MSDP SA forwarding
+- Clear (s,g,rpt) ifchannel on (*, G) prune received
+- Fix igmp querier election and IP address mapping
+- Crash fix when RP is removed
+- STATIC
+- Northbound Support
+- YANG
+- Filter and route-map Support
+- OSPF model definition
+- BGP model definition
+- VTYSH
+- Speed up output across daemons
+- Fix build-time errors for some --enable flags
+- Speed up output of configuration across daemons
+- ZEBRA
+- nexthop group support for FPM
+- northbound support for rib model
+- Backup nexthop support
+- netlink batching support
+- Allow upper level protocols to request ARP
+- Add json output for zebra ES, ES-EVI and access vlan dumps
+-
+- Upgrade to using libyang1.0.184
+-
+- RPM
+- Moved RPKI to subpackage
+- Added SNMP subpackage
+-
+- As always there are too many bugfixes to list individually. This release
+- compromises just over 1k of commits by the community, with contributors from
+- 70 people.
+
+* Tue Jun 30 2020 Martin Winter <mwinter@opensourcerouting.org> - 7.4
+- BGPd
+- Use sequence numbers for community lists
+- Fixes to nexthop groups
+- Add feature to limit outgoing number of routes
+- Per Neighbor Graceful Restart
+- Multiple Graceful Restart fixes
+- Support sub-Type-4 and sub-Type-5 for the VPNv4 SRv6 backend
+- rfc7606 support: treat certain malformed routes as withdraw
+- allow origin override for route aggregates
+- rfc6608 support: Subcodes for BGP Finite State Machine Error
+- rfc7607 support: Codification of AS 0 Processing
+- rfc6286 support: Autonomous-System-Wide Unique BGP Identifier for BGP-4
+- Unequal cost multipath (a.ka. weighted ECMP) with BGP link-bandwidth
+- Enable rfc8212 by default except datacenter profile
+- staticd
+- Add debug support
+- vtysh
+- Add copy command to copy config from file into running config
+- LDPd
+- adding support for LDP ordered label distribution control
+- ISISd
+- IS-IS Segment Routing support
+- SHARPd
+- add initial support to add/remove lsps
+- Zebra
+- fix broadcast address in IPv4 networks with /31 mask
+- Add Graceful Restart support for Protocol Daemon restarts
+- lib
+- migrate route-maps to use northbound interface
+- plus countless bug fixes and other improvements
+
+* Mon Jun 15 2020 Sascha Kattelmann <sascha@netdef.org>
+- Add Pathd support
+
+* Wed May 06 2020 David Lamparter <equinox@opensourcerouting.org> - 7.3.1
+- upstream 7.3.1
+
+* Fri Feb 14 2020 Martin Winter <mwinter@opensourcerouting.org> - 7.3
+- BGPd
+- EVPN PIP Support
+- Route Aggregation code speed ups
+- BGP Vector I/O speed ups
+- New CLI: `set distance XXX`
+- New CLI: `aggregate-address A.B.C.D/M route-map WORD`
+- New CLI: `bgp reject-as-sets`
+- New CLI: `advertise pip ...`
+- New CLI: `match evpn rd ASN:NN_OR_IP-ADDRESS:NN`
+- New CLI: `show bgp l2vpn evpn community|large-community X`
+- New CLI: `show bgp l2vpn evpn A.B.C.D`
+- Auto-completion for clear bgp command
+- Add ability to set tcp socket buffer size
+- OSPFd
+- Partial MPLS TE support
+- PBRd
+- New CLI: `set vrf unchanged|NAME`
+- BFDd
+- VRF Support
+- New CLI: 'show bfd peers brief'
+- New CLI: 'clear bfd peer ...'
+- PIMd
+- Significant Speedups in accessing Internal Data for higher scale
+- Support for joining any-source Multicast
+- Updated CLI: 'show ip pim upstream-join-desired'
+- New CLI: 'show ip pim channel'
+- Debug Cleanup
+- MLAG experimental support
+- VRRPd
+- VRF Support
+- Northbound Conversion- NHRPd
+- LDPd
+- vtysh
+- New CLI: `banner motd line LINE...`
+- yang
+- New CLI: `show yang operational-data XPATH`
+- New CLI: `debug northbound`
+- Zebra
+- Nexthop Group support
+- New CLI: 'debug zebra nexthop [detail]'
+- New CLI: 'show router-id'
+- MLAG experimental support
+- watchfrr
+- Additional status messages of system state to systemd
+- New CLI: `watchfrr ignore DAEMON`
+- Others
+- As always all daemons have received too many bug fixes to fully list
+- There has been a significant focus on increasing test coverage
+- Change in Behavior:
+- ISISd
+- All areas created default automatically to level-1-2
+- Zebra
+- Nexthop Group Installation in Kernel is turned on by default
+ if the kernel supports- New CLI: 'show nexthop-group rib [singleton]'
+- Man Pages
+- Renamed to frr-* to remove collision with other packages
+
+* Fri Jan 17 2020 Martin Winter <mwinter@opensourcerouting.org> - 7.2.1
+- BGPd
+- Fix Addpath issue
+- Do not apply eBGP policy for iBGP peers
+- Show `ip` and `fqdn` in json output for `show [ip] bgp <route> json`
+- Fix large route-distinguisher's format
+- Fix `no bgp listen range ...` configuration command
+- Autocomplete neighbor for clear bgp
+- Reflect the distance in RIB when it is changed for an arbitrary afi/safi
+- Notify "Peer De-configured" after entering 'no neighbor <neighbor> cmd
+- Fix per afi/safi addpath peer counting
+- Rework BGP dampening to be per AFI/SAFI
+- Do not send next-hop as :: in MP_REACH_NLRI if no link-local exists
+- Override peer's TTL only if peer-group is configured with TTL
+- Remove error message for unkown afi/safi combination
+- Keep the session down if maximum-prefix is reached
+- OSPFd
+- Fix BFD down not tearing down OSPF adjacency for point-to-point net
+- BFDd
+- Fix multiple VRF handling
+- VRF security improvement
+- PIMd
+- Fix rp crash
+- NHRPd
+- Make sure `no ip nhrp map <something>` works as expected
+- LDPd
+- Add missing sanity check in the parsing of label messages
+- Zebra
+- Use correct state when installing evpn macs
+- Capture dplane plugin flags
+- lib
+- Fix interface config when vrf changes
+- Fix Interface Infinite Loop Walk (for special interfaces such as bond)
+- snapcraft
+- fix missing vrrpd daemon
+- Others
+- Rename man pages (to avoid conflicts with other packages)
+- Various other fixes for code cleanup and memory leaks
+
+* Fri Dec 27 2019 Donatas Abraitis <donatas.abraitis@gmail.com>
+- Add CentOS 8 support
+
+* Tue Oct 15 2019 Martin Winter <mwinter@opensourcerouting.org> - 7.2
+- ALL Daemons
+- -N <namespace> to allow for config file locating when running FRR inside
+ of a namespace
+- Impoved Testing across all daemons
+- BFD
+- VRF Support
+- Conversion to Northbound interface
+- BGP
+- Aggregate-address add route-map support
+- BMP Support
+- Improved JSON output for many commands
+- `show bgp afi safi summary failed` command
+- `clear bop *` clears all peers
+- Show FQDN for `show bgp ipv4 uni` commands
+- Display BestPath selection reason as part of show commands
+- EIGRP
+- Infrastructure changes to allow VRF's
+- SIGHUP signals the config reload
+- Conversion to Northbound interface
+- ISIS
+- BFD Support
+- Support for circuits with MTU > 8192
+- PBRD
+- fwmark support as part of match criteria
+- autocompletion of PBRMAPS
+- Improved Nexthop Support
+- PIMD
+- PIM-BSM receive support
+- Improved debugging support
+- Store ECMP paths that are not currently legal for use
+- Disallow igmp query from a non-connected source
+- Many new cli improvements and changes
+- VRRPD
+- Add Support for RFC 3768 and RFC 5798
+- Route-Maps
+- Add sequence numbers to access-lists
+- Add `match ip next-hop type blackhole`
+- Improved ability to notice dependency changes
+- SHARPD
+- `sharp watch [import|nexthop]` you can now specify a prefix instead
+ of assuming a /32
+- STATICD
+- Significantly Improved NHT
+- ZEBRA
+- Many dataplane improvements for routes, neighbor table and EVPN
+- NHT cli can now be specified per VRF and improved ability to control
+ NHT data being shown
+- Removed duplicate processing of routes
+- Improved debugablility
+- RMAC and VxLan support for the FPM
+- LIB
+- RCU support
+- Nexthop Group Improvements
+- `log-filter WORD` added
+- Building
+- openssl support
+- libcap should be used as part of build or significant slowdowns
+ will be experienced
+- Lua builds have been fixed
+- Improved Cross building
+
+* Mon Jun 17 2019 David Lamparter <equinox@opensourcerouting.org> - 7.1
+- gRPC northbound plugin
+- "table NNN" removed from zebra
+- more dataplane MT work
+- EVPN in non-default VRFs
+- RFC 8212 (default deny policy for eBGP)
+- RFC 8106 (IPv6 RA DNS options)
+
+* Wed May 8 2019 Martin Winter <mwinter@opensourcerouting.org> - 7.0.1
+- bgp:
+- Don't send Updates with BGP Max-Prefix Overflow
+- Make sure `next-hop-self all` backward compatible with force
+- Fix as-path validation in "show bgp regexp"
+- Fix interface-based peers to override peergroups
+- Fix removing private AS numbers if local-as is used
+- Fix show bgp labeled_unicast
+- Add command to lookup prefixes in rpki table
+- Fix peer count in "show bgp ipv6 summary"
+- Add missing ipv6 only peer flag action
+- Fix address family output in "show bgp [ipv4|ipv6] neighbors"
+- Add missing checks for vpnv6 nexthops
+- Fix nexthop for ipv6 vpn case
+- rip: Fix removal of passive interfaces
+- ospf:
+- Fix json timer output
+- Fix milliseconds in json output
+- bfd:
+- Fix source port according RFC 5881, Sec 4
+- Fix IPv6 link-local peer removal
+- Fix interface clean up when deleting interface
+- pim: Fix interface clean up when deleting interface
+- nhrp: Fix interface clean up when deleting interface
+- lib:
+- Workaround to get FRR building with libyang 0.x and 1.x
+- Fix in priv handling
+- Make priv elevation thread-safe
+- zebra:
+- Pseudowire event recovery
+- Fix race condition in label manager
+- Fix system routes selection and next-hop tracking
+- Set connected route metric based on devaddr metric
+- Display metric for connected routes
+- Add selected fib details to json output
+- Always use replace if installing new route
+- watchfrr: Silently ignore declare failures (for backward compatibility)
+- RPM packages: Switch to new init script
+
+* Thu Feb 28 2019 Martin Winter <mwinter@opensourcerouting.org> - 7.0
+- Added libyang dependency: New work for northbound interface based on libyang
+- Fabricd: New Daemon based on https://datatracker.ietf.org/doc/draft-white-openfabric/
+- various bug fixes and other enhancements
+
+* Sun Oct 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 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). Responsible
+ for notifying link changes to make routing protocols converge faster.
+- various bug fixes
+
+* Thu Jul 5 2018 Martin Winter <mwinter@opensourcerouting.org> - 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 <mwinter@opensourcerouting.org> - 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
+
+* Mon May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org>
+- Add BFDd support
+
+* Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org>
+- Fixed RPKI RPM build
+
+* Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
+- Add option to build with RPKI (default: disabled)
+
+* Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
+- Adapt to new documentation structure based on Sphinx
+
+* Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
+- Fix script location for watchfrr restart functions in daemon config
+- Fix postun script to restart frr during upgrade
+
+* Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
+- added NHRP and EIGRP daemon
+
+* Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
+- new subpackage frr-pythontools with python 2.7 restart script
+- remove PIMd from CentOS/RedHat 6 RPM packages (won't work - too old)
+- converted to single frr init script (not per daemon) based on debian init script
+- created systemd service file for systemd based systems (which uses init script)
+- Various other RPM package fixes for FRR 2.0
+
+* Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
+- Renamed to frr for FRRouting fork of Quagga
+
+* Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
+- remove with_ipv6 conditionals, always build v6
+- Fix UTF-8 char in spec changelog
+- remove quagga.pam.stack, long deprecated.
+
+* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
+- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
+ --enable-netlink
+- Remove support for old fedora 4/5
+- Fix for package nameing
+- Fix Weekdays of previous changelogs (bogus dates)
+- Add conditional logic to only build tex footnotes with supported texi2html
+- Added pimd to files section and fix double listing of /var/lib*/quagga
+- Numerous fixes to unify upstart/systemd startup into same spec file
+- Only allow use of watchfrr for non-systemd systems. no need with systemd
+
+* Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
+- buildreq updates
+- add a default define for with_pimd
+
+* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
+- Steal some changes from Fedora spec file:
+- Add with_rtadv variable
+- Test for groups/users with getent before group/user adding
+- Readline need not be an explicit prerequisite
+- install-info delete should be postun, not preun
+
+* Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+- on package upgrade, implement careful, phased restart logic
+- use gcc -rdynamic flag when linking for better backtraces
+
+* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+- daemonv6_list should contain only IPv6 daemons
+
+* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
+- watchfrr added
+- on upgrade, all daemons should be condrestart'ed
+- on removal, all daemons should be stopped
+
+* Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
+- Use makeinfo --html to generate quagga.html
+
+* Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
+- Fix with_ipv6 set to 0 build
+
+* Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
+- Update to 0.97.2
+
+* Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
+- Make directories be owned by the packages concerned
+- Update logrotate scripts to use correct path to killall and use pid files
+
+* Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
+- Update to 0.97.0
+
+* Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
+- build snmp support by default
+- build irdp support
+- build with shared libs
+- devel subpackage for archives and headers
+
+* Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
+- updated sysconfig files to specify local dir
+- added ospf_dump.c crash quick fix patch
+- added ospfd persistent interface configuration patch
+
+* Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
+- sync to CVS
+- integrate RH sysconfig patch to specify daemon options (RH)
+- default to have vty listen only to 127.1 (RH)
+- add user with fixed UID/GID (RH)
+- create user with shell /sbin/nologin rather than /bin/false (RH)
+- stop daemons on uninstall (RH)
+- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
+- isisd added
+- cleanup tasks carried out for every daemon
+
+* Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
+- Fix -devel package to include all files
+- Sync to 0.96.4
+
+* Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
+- Renamed to Quagga
+- Sync to Quagga release 0.96
+
+* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
+- zebra privileges support
+
+* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
+- Fix mem leak in 'show thread cpu'
+- Ralph Keller's OSPF-API
+- Amir: Fix configure.ac for net-snmp
+
+* Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
+- ospfd IOS prefix to interface matching for 'network' statement
+- temporary fix for PtP and IPv6
+- sync to zebra.org CVS
+
+* Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
+- update to latest cvs
+- Yon's "show thread cpu" patch - 17217
+- walk up tree - 17218
+- ospfd NSSA fixes - 16681
+- ospfd nsm fixes - 16824
+- ospfd OLSA fixes and new feature - 16823
+- KAME and ifindex fixes - 16525
+- spec file changes to allow redhat files to be in tree
+
+* Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
+- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
+- Fixed up some build requirements (patch)
+- Added conditional build requirements for vtysh / snmp
+- Added conditional to files for _bindir depending on vtysh
+
+* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
+- update to latest CVS
+- add Greg Troxel's md5 buffer copy/dup fix
+- add RIPv1 fix
+- add Frank's multicast flag fix
+
+* Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
+- update to latest CVS
+- timestamped crypt_seqnum patch
+- oi->on_write_q fix
+
+* Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
+- update to latest CVS
+- add vtysh 'write-config (integrated|daemon)' patch
+- always 'make rebuild' in vtysh/ to catch new commands
+
+* Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
+- update to 0.93b
+
+* Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
+- update to latest CVS
+- add "/sbin/ip route flush proto zebra" to zebra RH init on startup
+
+* Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
+- update to current CVS
+- add OSPF point to multipoint patch
+- add OSPF bugfixes
+- add BGP hash optimisation patch
+
+* Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
+- update to 0.93-pre1 / CVS
+- add link state detection support
+- add generic PtP and RFC3021 support
+- various bug fixes
+
+* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
+- Fix bug #51336
+
+* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
+- Use generic initscript strings instead of initscript specific
+ ( "Starting foo: " -> "Starting $prog:" )
+
+* Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
+- Bump the release when rebuilding into the dist.
+
+* Tue Feb 6 2001 Tim Powers <timp@redhat.com>
+- built for Powertools
+
+* Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
+- Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
+- Update to 0.91a
+- Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
+- Should be quite Red Hat'isque now.