]> git.proxmox.com Git - mirror_frr.git/blame - redhat/frr.spec.in
doc: Append documentation for `bgp dampening` command
[mirror_frr.git] / redhat / frr.spec.in
CommitLineData
edd7c245 1# configure options
b64d92a8 2#
3# Some can be overriden on rpmbuild commandline with:
4# rpmbuild --define 'variable value'
f755bf6d 5# (use any value, ie 1 for flag "with_XXXX" definitions)
b64d92a8 6#
30da4585
PJ
7# E.g. rpmbuild --define 'release_rev 02' may be useful if building
8# rpms again and again on the same day, so the newer rpms can be installed.
9# bumping the number each time.
b64d92a8 10
b387c334 11#################### FRRouting (FRR) configure options #####################
1189075b 12# with-feature options
e763afa5 13%{!?with_babeld: %global with_babeld 1 }
7134904b 14%{!?with_bfdd: %global with_bfdd 1 }
5a76db68 15%{!?with_bgp_vnc: %global with_bgp_vnc 0 }
0e3daa4d 16%{!?with_cumulus: %global with_cumulus 0 }
ff00e18d
RK
17%{!?with_eigrpd: %global with_eigrpd 1 }
18%{!?with_fpm: %global with_fpm 1 }
19%{!?with_ldpd: %global with_ldpd 1 }
20%{!?with_multipath: %global with_multipath 256 }
21%{!?with_nhrpd: %global with_nhrpd 1 }
22%{!?with_ospfapi: %global with_ospfapi 1 }
23%{!?with_ospfclient: %global with_ospfclient 1 }
24%{!?with_pam: %global with_pam 0 }
25%{!?with_pbrd: %global with_pbrd 1 }
5a76db68 26%{!?with_pimd: %global with_pimd 1 }
aaf38c94 27%{!?with_rpki: %global with_rpki 0 }
ff00e18d
RK
28%{!?with_rtadv: %global with_rtadv 1 }
29%{!?with_watchfrr: %global with_watchfrr 1 }
30
31# user and group
32%{!?frr_user: %global frr_user frr }
33%{!?vty_group: %global vty_group frrvty }
30b9d89b 34
35# path defines
ff00e18d
RK
36%define configdir %{_sysconfdir}/%{name}
37%define _sbindir /usr/lib/frr
38%define zeb_src %{_builddir}/%{name}-%{frrversion}
39%define zeb_rh_src %{zeb_src}/redhat
40%define zeb_docs %{zeb_src}/doc
41%define frr_tools %{zeb_src}/tools
788cdc6d 42
e0626854 43# defines for configure
0bb68611 44%define rundir %{_localstatedir}/run/%{name}
ccd40dee
MW
45
46# define for sphinx-build binary
47%if 0%{?rhel} && 0%{?rhel} < 7
1eca28ff 48 %define sphinx sphinx-build2.7
ccd40dee 49%else
1eca28ff 50 %define sphinx sphinx-build
ccd40dee 51%endif
1189075b 52############################################################################
53
f755bf6d
MW
54#### Version String tweak
55# Remove invalid characters form version string and replace with _
d4fbc1de 56%{expand: %%global rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
c115e4a4 57%define frrversion @VERSION@
1189075b 58
f755bf6d
MW
59#### Check for systemd or init.d (upstart)
60# Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
a999f98c 61%if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
a1cfe675
TR
62 %global initsystem systemd
63%else
a999f98c 64%if 0%{?rhel} && 0%{?rhel} < 7
a1cfe675
TR
65 %global initsystem upstart
66%else
67 %{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)}
68%endif
69%endif
54c059f1
RK
70
71# If init system is systemd, then always enable watchfrr
f755bf6d 72%if "%{initsystem}" == "systemd"
9a581ae4 73 %global with_watchfrr 1
f755bf6d 74%endif
7c08d77f 75
150e7c7e 76#### Check for RedHat 6.x or CentOS 6.x - they are too old to support PIM.
41b86ba4 77#### Always disable it on these old systems unconditionally
41b86ba4 78#
9e631cc4
MW
79# if CentOS / RedHat and version < 7, then disable PIMd (too old, won't work)
80%if 0%{?rhel} && 0%{?rhel} < 7
41b86ba4
MW
81 %global with_pimd 0
82%endif
83
15d74e93 84# misc internal defines
9a581ae4
MW
85%{!?frr_uid: %global frr_uid 92 }
86%{!?frr_gid: %global frr_gid 92 }
87%{!?vty_gid: %global vty_gid 85 }
f755bf6d 88
13d9aad8 89%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd fabricd
0df63b52 90
b021388f 91%if %{with_ldpd}
5f371d0b 92 %define daemon_ldpd ldpd
b021388f 93%else
5f371d0b 94 %define daemon_ldpd ""
b021388f
RW
95%endif
96
41b86ba4 97%if %{with_pimd}
5f371d0b 98 %define daemon_pimd pimd
41b86ba4 99%else
5f371d0b 100 %define daemon_pimd ""
b021388f
RW
101%endif
102
1abe1280 103%if %{with_pbrd}
5f371d0b 104 %define daemon_pbrd pbrd
1abe1280 105%else
5f371d0b 106 %define daemon_pbrd ""
1abe1280
DS
107%endif
108
729f041c 109%if %{with_nhrpd}
5f371d0b 110 %define daemon_nhrpd nhrpd
729f041c 111%else
5f371d0b 112 %define daemon_nhrpd ""
729f041c
TT
113%endif
114
5a76db68 115%if %{with_eigrpd}
5f371d0b 116 %define daemon_eigrpd eigrpd
5a76db68 117%else
5f371d0b 118 %define daemon_eigrpd ""
5a76db68
MW
119%endif
120
e763afa5 121%if %{with_babeld}
5f371d0b 122 %define daemon_babeld babeld
e763afa5 123%else
5f371d0b 124 %define daemon_babeld ""
e763afa5
DL
125%endif
126
9473e340 127%if %{with_watchfrr}
5f371d0b 128 %define daemon_watchfrr watchfrr
f755bf6d 129%else
5f371d0b 130 %define daemon_watchfrr ""
f755bf6d
MW
131%endif
132
7134904b
RZ
133%if %{with_bfdd}
134 %define daemon_bfdd bfdd
135%else
136 %define daemon_bfdd ""
137%endif
138
139%define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} %{daemon_bfdd}
b3324e27 140
4859e20c 141#release sub-revision (the two digits after the CONFDATE)
9a581ae4 142%{!?release_rev: %global release_rev 01 }
4859e20c 143
788cdc6d 144Summary: Routing daemon
9a581ae4
MW
145Name: frr
146Version: %{rpmversion}
7ba01507 147Release: %{release_rev}%{?dist}
9a581ae4
MW
148License: GPLv2+
149Group: System Environment/Daemons
c410a861 150Source0: https://github.com/FRRouting/frr/archive/%{name}-%{frrversion}.tar.gz
e1ff8246 151URL: https://www.frrouting.org
1a629db7 152Requires(pre): shadow-utils
501c1362
RK
153Requires(preun): info
154Requires(post): info
5ebf9672
RK
155BuildRequires: bison >= 2.7
156BuildRequires: c-ares-devel
157BuildRequires: flex
158BuildRequires: gcc
159BuildRequires: json-c-devel
160BuildRequires: libcap-devel
161BuildRequires: make
162BuildRequires: ncurses-devel
163BuildRequires: readline-devel
164BuildRequires: texinfo
831dd62a 165BuildRequires: libyang-devel >= 0.16.74
01aff72e
MW
166%if 0%{?rhel} && 0%{?rhel} < 7
167#python27-devel is available from ius community repo for RedHat/CentOS 6
5ebf9672
RK
168BuildRequires: python27-devel
169BuildRequires: python27-sphinx
01aff72e 170%else
5ebf9672
RK
171BuildRequires: python-devel >= 2.7
172BuildRequires: python-sphinx
01aff72e 173%endif
b4e993b2 174Requires: initscripts
f755bf6d 175%if %{with_pam}
9a581ae4 176BuildRequires: pam-devel
f755bf6d 177%endif
aaf38c94
MW
178%if %{with_rpki}
179BuildRequires: librtr-devel >= 0.5
aaf38c94 180%endif
f755bf6d 181%if "%{initsystem}" == "systemd"
5ebf9672
RK
182BuildRequires: systemd
183BuildRequires: systemd-devel
9a581ae4
MW
184Requires(post): systemd
185Requires(preun): systemd
186Requires(postun): systemd
f755bf6d 187%else
95624f7b
RK
188Requires(post): chkconfig
189Requires(preun): chkconfig
788cdc6d 190# Initscripts > 5.60 is required for IPv6 support
9a581ae4 191Requires(pre): initscripts >= 5.60
f755bf6d 192%endif
9a581ae4 193Provides: routingdaemon = %{version}-%{release}
5d82c57b
BR
194Obsoletes: gated mrt zebra frr-sysvinit
195Conflicts: bird
788cdc6d 196
95c16f4c 197
788cdc6d 198%description
447a8fe9 199FRRouting is a free software that manages TCP/IP based routing
788cdc6d 200protocol. It takes multi-server and multi-thread approach to resolve
201the current complexity of the Internet.
202
3e7c8d04 203FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP
7134904b 204NHRP, Babel, PBR, EIGRP and BFD.
788cdc6d 205
447a8fe9 206FRRouting is a fork of Quagga.
788cdc6d 207
95c16f4c 208
448ed4a2 209%package contrib
c115e4a4 210Summary: contrib tools for frr
448ed4a2 211Group: System Environment/Daemons
212
213%description contrib
c115e4a4 214Contributed/3rd party tools which may be of use with frr.
448ed4a2 215
95c16f4c 216
386fcd12
MW
217%package pythontools
218Summary: python tools for frr
c2953ac5 219BuildRequires: python
1c64265f 220Requires: python-ipaddress
386fcd12
MW
221Group: System Environment/Daemons
222
223%description pythontools
224Contributed python 2.7 tools which may be of use with frr.
225
95c16f4c 226
e0626854 227%package devel
c115e4a4 228Summary: Header and object files for frr development
e0626854 229Group: System Environment/Daemons
f755bf6d 230Requires: %{name} = %{version}-%{release}
e0626854 231
232%description devel
c115e4a4
MW
233The frr-devel package contains the header and object files neccessary for
234developing OSPF-API and frr applications.
e0626854 235
95c16f4c 236
788cdc6d 237%prep
5f371d0b 238%setup -q -n frr-%{frrversion}
788cdc6d 239
95c16f4c 240
788cdc6d 241%build
7966b97c 242
243# For standard gcc verbosity, uncomment these lines:
244#CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
245#CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
246
247# For ultra gcc verbosity, uncomment these lines also:
248#CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
249#CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
250#CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
251#CFLAGS="${CFLAGS} -Wpacked -Wpadded"
252
788cdc6d 253%configure \
c63f5f2c 254 --sbindir=%{_sbindir} \
931e1d68 255 --sysconfdir=%{configdir} \
0bb68611 256 --localstatedir=%{rundir} \
5c3ad1d4 257 --disable-static \
9a581ae4 258 --disable-werror \
0ed9196b 259 --enable-irdp \
54b25dca 260%if %{with_multipath}
9a581ae4 261 --enable-multipath=%{with_multipath} \
788cdc6d 262%endif
9a581ae4 263 --enable-vtysh \
54b25dca 264%if %{with_ospfclient}
19ced9a4 265 --enable-ospfclient \
68980084 266%else
19ced9a4 267 --disable-ospfclient\
68980084 268%endif
54b25dca 269%if %{with_ospfapi}
c9cad876 270 --enable-ospfapi \
68980084 271%else
0cff191d 272 --disable-ospfapi \
68980084 273%endif
e7cd37bf 274%if %{with_rtadv}
c9cad876 275 --enable-rtadv \
e7cd37bf 276%else
0cff191d 277 --disable-rtadv \
e7cd37bf 278%endif
b021388f 279%if %{with_ldpd}
9a581ae4 280 --enable-ldpd \
b021388f 281%else
9a581ae4 282 --disable-ldpd \
b021388f 283%endif
41b86ba4
MW
284%if %{with_pimd}
285 --enable-pimd \
b021388f 286%else
41b86ba4 287 --disable-pimd \
b021388f 288%endif
1abe1280
DS
289%if %{with_pbrd}
290 --enable-pbrd \
291%else
292 --disable-pbrd \
293%endif
729f041c 294%if %{with_nhrpd}
fe99b015 295 --enable-nhrpd \
729f041c 296%else
fe99b015 297 --disable-nhrpd \
729f041c 298%endif
5a76db68 299%if %{with_eigrpd}
fe99b015 300 --enable-eigrpd \
5a76db68 301%else
fe99b015 302 --disable-eigrpd \
5a76db68 303%endif
e763afa5 304%if %{with_babeld}
fe99b015 305 --enable-babeld \
e763afa5 306%else
fe99b015 307 --disable-babeld \
e763afa5 308%endif
54b25dca 309%if %{with_pam}
9a581ae4 310 --with-libpam \
788cdc6d 311%endif
c115e4a4 312%if 0%{?frr_user:1}
1dc5a0dc
RK
313 --enable-user=%{frr_user} \
314 --enable-group=%{frr_user} \
edd7c245 315%endif
f755bf6d 316%if 0%{?vty_group:1}
1dc5a0dc 317 --enable-vty-group=%{vty_group} \
edd7c245 318%endif
f755bf6d 319%if %{with_fpm}
9a581ae4 320 --enable-fpm \
f755bf6d 321%else
9a581ae4 322 --disable-fpm \
f755bf6d 323%endif
9473e340 324%if %{with_watchfrr}
9a581ae4 325 --enable-watchfrr \
f755bf6d 326%else
9a581ae4 327 --disable-watchfrr \
65efcfce 328%endif
0e3daa4d
RK
329%if %{with_cumulus}
330 --enable-cumulus \
331%endif
65efcfce 332%if %{with_bgp_vnc}
9a581ae4 333 --enable-bgp-vnc \
65efcfce 334%else
9a581ae4 335 --disable-bgp-vnc \
f755bf6d 336%endif
c9cad876 337 --enable-isisd \
58f20b90 338%if "%{initsystem}" == "systemd"
c9cad876 339 --enable-systemd \
f755bf6d 340%endif
aaf38c94 341%if %{with_rpki}
7134904b
RZ
342 --enable-rpki \
343%else
344 --disable-rpki \
345%endif
346%if %{with_bfdd}
a214288c 347 --enable-bfdd \
9f892cc5 348%else
a214288c 349 --disable-bfdd \
aaf38c94 350%endif
a214288c 351 SPHINXBUILD=%{sphinx}
788cdc6d 352
a214288c 353make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
788cdc6d 354
355pushd doc
a214288c 356make info
788cdc6d 357popd
358
95c16f4c 359
788cdc6d 360%install
9b979646 361mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
4f20eab1 362 %{buildroot}%{_localstatedir}/log/frr %{buildroot}%{_infodir}
a214288c 363make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
788cdc6d 364
9a344b74 365# Remove this file, as it is uninstalled and causes errors when building on RH9
f755bf6d 366rm -rf %{buildroot}/usr/share/info/dir
9a344b74 367
2cdd3d94
MW
368# Remove debian init script if it was installed
369rm -f %{buildroot}%{_sbindir}/frr
c63f5f2c 370
5c3ad1d4
RK
371# kill bogus libtool files
372rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
373rm -vf %{buildroot}%{_libdir}/*.la
7cad61cb 374rm -vf %{buildroot}%{_libdir}/frr/libyang_plugins/*.la
0ed9196b 375
f755bf6d
MW
376# install /etc sources
377%if "%{initsystem}" == "systemd"
378mkdir -p %{buildroot}%{_unitdir}
81b834a5 379install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service
f755bf6d 380%else
9b979646 381mkdir -p %{buildroot}%{_initddir}
81b834a5 382ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr
f755bf6d
MW
383%endif
384
81b834a5 385install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr
0817301a 386# add rpki module to daemon
387%if %{with_rpki}
388 sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{buildroot}%{_sysconfdir}/frr/daemons
389%endif
5f371d0b
RK
390install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
391install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr
392install -d -m750 %{buildroot}%{rundir}
edd7c245 393
95c16f4c 394
edd7c245 395%pre
396# add vty_group
f755bf6d 397%if 0%{?vty_group:1}
1a629db7 398 getent group %{vty_group} >/dev/null || groupadd -r -g %{vty_gid} %{vty_group}
edd7c245 399%endif
e7cd37bf 400
c115e4a4
MW
401# add frr user and group
402%if 0%{?frr_user:1}
1a629db7
RK
403 # Ensure that frr_gid gets correctly allocated
404 getent group %{frr_user} >/dev/null || groupadd -g %{frr_gid} %{frr_user}
405 getent passwd %{frr_user} >/dev/null || \
406 useradd -r -u %{frr_uid} -g %{frr_user} \
407 -s /sbin/nologin -c "FRRouting suite" \
408 -d %{rundir} %{frr_user}
409
410 %if 0%{?vty_group:1}
411 usermod -a -G %{vty_group} %{frr_user}
412 %endif
413%endif
414exit 0
f676b06e 415
788cdc6d 416
788cdc6d 417%post
30b9d89b 418# zebra_spec_add_service <service name> <port/proto> <comment>
788cdc6d 419# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
420
421zebra_spec_add_service ()
422{
150e7c7e 423 # Add port /etc/services entry if it isn't already there
9b979646
RK
424 if [ -f %{_sysconfdir}/services ] && \
425 ! %__sed -e 's/#.*$//' %{_sysconfdir}/services | %__grep -wq $1 ; then
426 echo "$1 $2 # $3" >> %{_sysconfdir}/services
9a581ae4 427 fi
788cdc6d 428}
429
430zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
431zebra_spec_add_service zebra 2601/tcp "zebra vty"
7ac1de8e 432zebra_spec_add_service staticd 2616/tcp "staticd vty"
788cdc6d 433zebra_spec_add_service ripd 2602/tcp "RIPd vty"
434zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
435zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
436zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
437zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
5f371d0b 438zebra_spec_add_service isisd 2608/tcp "ISISd vty"
54b25dca 439%if %{with_ospfapi}
5f371d0b 440 zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
7021c425 441%endif
e763afa5 442%if %{with_babeld}
5f371d0b 443 zebra_spec_add_service babeld 2609/tcp "BABELd vty"
5a76db68 444%endif
729f041c 445%if %{with_nhrpd}
5f371d0b 446 zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
729f041c 447%endif
41b86ba4 448%if %{with_pimd}
5f371d0b 449 zebra_spec_add_service pimd 2611/tcp "PIMd vty"
41b86ba4 450%endif
1abe1280 451%if %{with_pbrd}
5f371d0b 452 zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
1abe1280 453%endif
b021388f 454%if %{with_ldpd}
5f371d0b 455 zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
b021388f 456%endif
e763afa5 457%if %{with_eigrpd}
5f371d0b 458 zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty"
e763afa5 459%endif
7134904b
RZ
460%if %{with_bfdd}
461 zebra_spec_add_service bfdd 2617/tcp "BFDd vty"
462%endif
13d9aad8 463zebra_spec_add_service fabricd 2618/tcp "Fabricd vty"
788cdc6d 464
f755bf6d 465%if "%{initsystem}" == "systemd"
5f371d0b
RK
466 for daemon in %all_daemons ; do
467 %systemd_post frr.service
468 done
f755bf6d 469%else
5f371d0b 470 /sbin/chkconfig --add frr
f755bf6d 471%endif
788cdc6d 472
75429e11
MW
473# Fix bad path in previous config files
474# Config files won't get replaced by default, so we do this ugly hack to fix it
81b834a5 475%__sed -i 's|watchfrr_options=|#watchfrr_options=|g' %{configdir}/daemons 2> /dev/null || true
75429e11 476
5b7077e8
DS
477# With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if
478# we install or upgrade to a frr built with systemd
479%if "%{initsystem}" == "systemd"
931e1d68 480 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
5b7077e8
DS
481%endif
482
c115e4a4 483/sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 484
485# Create dummy files if they don't exist so basic functions can be used.
931e1d68
RK
486if [ ! -e %{configdir}/zebra.conf ]; then
487 echo "hostname `hostname`" > %{configdir}/zebra.conf
c115e4a4 488%if 0%{?frr_user:1}
1dc5a0dc 489 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
e7cd37bf 490%endif
931e1d68 491 chmod 640 %{configdir}/zebra.conf*
788cdc6d 492fi
f755bf6d 493for daemon in %{all_daemons} ; do
33fdbd5e 494 if [ x"${daemon}" != x"" ] ; then
931e1d68
RK
495 if [ ! -e %{configdir}/${daemon}.conf ]; then
496 touch %{configdir}/${daemon}.conf
33fdbd5e 497 %if 0%{?frr_user:1}
1dc5a0dc 498 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
33fdbd5e
MW
499 %endif
500 fi
9a581ae4 501 fi
f755bf6d 502done
2cdd3d94 503%if 0%{?frr_user:1}
1dc5a0dc 504 chown %{frr_user}:%{frr_user} %{configdir}/daemons
2cdd3d94
MW
505%endif
506
9473e340 507%if %{with_watchfrr}
9a581ae4 508 # No config for watchfrr - this is part of /etc/sysconfig/frr
931e1d68 509 rm -f %{configdir}/watchfrr.*
f755bf6d
MW
510%endif
511
931e1d68
RK
512if [ ! -e %{configdir}/vtysh.conf ]; then
513 touch %{configdir}/vtysh.conf
514 chmod 640 %{configdir}/vtysh.conf
2cdd3d94 515%if 0%{?frr_user:1}
5f371d0b
RK
516 %if 0%{?vty_group:1}
517 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
518 %endif
f755bf6d 519%endif
788cdc6d 520fi
521
95c16f4c 522
788cdc6d 523%postun
fc43ecc7 524if [ "$1" -ge 1 ]; then
19ced9a4
MW
525 #
526 # Upgrade from older version
527 #
9a581ae4
MW
528 %if "%{initsystem}" == "systemd"
529 ##
530 ## Systemd Version
531 ##
c88ca85d 532 %systemd_postun_with_restart frr.service
9a581ae4
MW
533 %else
534 ##
535 ## init.d Version
536 ##
515a8ee8 537 service frr restart >/dev/null 2>&1
9a581ae4 538 %endif
e321aed1 539 :
788cdc6d 540fi
788cdc6d 541
95c16f4c 542
788cdc6d 543%preun
f755bf6d 544%if "%{initsystem}" == "systemd"
9a581ae4
MW
545 ##
546 ## Systemd Version
547 ##
c88ca85d
MW
548 if [ $1 -eq 0 ] ; then
549 %systemd_preun frr.service
9a581ae4 550 fi
f755bf6d 551%else
9a581ae4
MW
552 ##
553 ## init.d Version
554 ##
c88ca85d 555 if [ $1 -eq 0 ] ; then
515a8ee8 556 service frr stop >/dev/null 2>&1
c2953ac5 557 /sbin/chkconfig --del frr
9a581ae4 558 fi
f755bf6d 559%endif
c115e4a4 560/sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 561
95c16f4c 562
788cdc6d 563%files
d88f1144 564%doc */*.sample* COPYING
30b9d89b 565%doc doc/mpls
f20aafee 566%doc README.md
7cad61cb 567/usr/share/yang/*.yang
c115e4a4 568%if 0%{?frr_user:1}
1dc5a0dc 569 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
4f20eab1 570 %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
1dc5a0dc 571 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
edd7c245 572%else
5f371d0b 573 %dir %attr(750,root,root) %{configdir}
4f20eab1 574 %dir %attr(750,root,root) %{_localstatedir}/log/frr
5f371d0b 575 %dir %attr(750,root,root) %{rundir}
edd7c245 576%endif
f755bf6d 577%if 0%{?vty_group:1}
1dc5a0dc 578 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
edd7c245 579%endif
c115e4a4 580%{_infodir}/frr.info.gz
788cdc6d 581%{_mandir}/man*/*
54b25dca 582%{_sbindir}/zebra
7ac1de8e 583%{_sbindir}/staticd
54b25dca 584%{_sbindir}/ospfd
585%{_sbindir}/ripd
586%{_sbindir}/bgpd
2cdd3d94 587%exclude %{_sbindir}/ssd
9473e340 588%if %{with_watchfrr}
9a581ae4 589 %{_sbindir}/watchfrr
f755bf6d 590%endif
54b25dca 591%{_sbindir}/ripngd
592%{_sbindir}/ospf6d
41b86ba4
MW
593%if %{with_pimd}
594 %{_sbindir}/pimd
595%endif
1abe1280
DS
596%if %{with_pbrd}
597 %{_sbindir}/pbrd
598%endif
54b25dca 599%{_sbindir}/isisd
13d9aad8 600%{_sbindir}/fabricd
b021388f 601%if %{with_ldpd}
c2953ac5 602 %{_sbindir}/ldpd
b021388f 603%endif
5a76db68
MW
604%if %{with_eigrpd}
605 %{_sbindir}/eigrpd
606%endif
729f041c 607%if %{with_nhrpd}
5a76db68 608 %{_sbindir}/nhrpd
729f041c 609%endif
e763afa5
DL
610%if %{with_babeld}
611 %{_sbindir}/babeld
612%endif
7134904b
RZ
613%if %{with_bfdd}
614 %{_sbindir}/bfdd
615%endif
5c3ad1d4 616%{_libdir}/lib*.so.0
4aa7422e 617%{_libdir}/lib*.so.0.*
84b05ca1 618%if %{with_fpm}
4aa7422e 619 %{_libdir}/frr/modules/zebra_fpm.so
84b05ca1 620%endif
b4c554e2 621%if %{with_rpki}
4aa7422e 622 %{_libdir}/frr/modules/bgpd_rpki.so
b4c554e2 623%endif
4aa7422e 624%{_libdir}/frr/modules/zebra_irdp.so
788cdc6d 625%{_bindir}/*
9b979646 626%config(noreplace) %{configdir}/[!v]*.conf*
1dc5a0dc 627%config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
f755bf6d 628%if "%{initsystem}" == "systemd"
07a138ec 629 %{_unitdir}/frr.service
f755bf6d 630%else
9b979646 631 %{_initddir}/frr
f755bf6d 632%endif
9b979646
RK
633%config(noreplace) %{_sysconfdir}/pam.d/frr
634%config(noreplace) %{_sysconfdir}/logrotate.d/frr
32398f01 635%{_sbindir}/frr-reload
ea4d91bf
DL
636%{_sbindir}/frrcommon.sh
637%{_sbindir}/frrinit.sh
638%{_sbindir}/watchfrr.sh
788cdc6d 639
95c16f4c 640
448ed4a2 641%files contrib
448ed4a2 642%doc tools
643
95c16f4c 644
386fcd12 645%files pythontools
386fcd12
MW
646%{_sbindir}/frr-reload.py
647%{_sbindir}/frr-reload.pyc
648%{_sbindir}/frr-reload.pyo
649
95c16f4c 650
e0626854 651%files devel
d1ef2aaf 652%{_libdir}/lib*.so
4aa7422e 653%dir %{_includedir}/%{name}
b8b18c06 654%{_includedir}/%{name}/*.h
4aa7422e 655%dir %{_includedir}/%{name}/ospfd
b8b18c06 656%{_includedir}/%{name}/ospfd/*.h
54b25dca 657%if %{with_ospfapi}
4aa7422e 658 %dir %{_includedir}/%{name}/ospfapi
b8b18c06 659 %{_includedir}/%{name}/ospfapi/*.h
68980084 660%endif
5a76db68 661%if %{with_eigrpd}
4aa7422e 662 %dir %{_includedir}/%{name}/eigrpd
b8b18c06 663 %{_includedir}/%{name}/eigrpd/*.h
5a76db68 664%endif
e0626854 665
95c16f4c 666
788cdc6d 667%changelog
23db048e
DL
668* Mon Jun 17 2019 David Lamparter <equinox@opensourcerouting.org> - %{version}
669- TBD
670
671* Mon Jun 17 2019 David Lamparter <equinox@opensourcerouting.org> - 7.1
672- gRPC northbound plugin
673- "table NNN" removed from zebra
674- more dataplane MT work
675- EVPN in non-default VRFs
676- RFC 8212 (default deny policy for eBGP)
677- RFC 8106 (IPv6 RA DNS options)
678
679* Wed May 8 2019 Martin Winter <mwinter@opensourcerouting.org> - 7.0.1
680- bgp:
681- Don't send Updates with BGP Max-Prefix Overflow
682- Make sure `next-hop-self all` backward compatible with force
683- Fix as-path validation in "show bgp regexp"
684- Fix interface-based peers to override peergroups
685- Fix removing private AS numbers if local-as is used
686- Fix show bgp labeled_unicast
687- Add command to lookup prefixes in rpki table
688- Fix peer count in "show bgp ipv6 summary"
689- Add missing ipv6 only peer flag action
690- Fix address family output in "show bgp [ipv4|ipv6] neighbors"
691- Add missing checks for vpnv6 nexthops
692- Fix nexthop for ipv6 vpn case
693- rip: Fix removal of passive interfaces
694- ospf:
695- Fix json timer output
696- Fix milliseconds in json output
697- bfd:
698- Fix source port according RFC 5881, Sec 4
699- Fix IPv6 link-local peer removal
700- Fix interface clean up when deleting interface
701- pim: Fix interface clean up when deleting interface
702- nhrp: Fix interface clean up when deleting interface
703- lib:
704- Workaround to get FRR building with libyang 0.x and 1.x
705- Fix in priv handling
706- Make priv elevation thread-safe
707- zebra:
708- Pseudowire event recovery
709- Fix race condition in label manager
710- Fix system routes selection and next-hop tracking
711- Set connected route metric based on devaddr metric
712- Display metric for connected routes
713- Add selected fib details to json output
714- Always use replace if installing new route
715- watchfrr: Silently ignore declare failures (for backward compatibility)
716- RPM packages: Switch to new init script
717
718* Thu Feb 28 2019 Martin Winter <mwinter@opensourcerouting.org> - 7.0
719- Added libyang dependency: New work for northbound interface based on libyang
720- Fabricd: New Daemon based on https://datatracker.ietf.org/doc/draft-white-openfabric/
721- various bug fixes and other enhancements
722
723* Sun Oct 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 6.0
724- Staticd: New daemon responsible for management of static routes
725- ISISd: Implement dst-src routing as per draft-ietf-isis-ipv6-dst-src-routing
726- BFDd: new daemon for BFD (Bidrectional Forwarding Detection). Responsiblei
727 for notifying link changes to make routing protocols converge faster.
728- various bug fixes
729
730* Thu Jul 5 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0.1
731- Support Automake 1.16.1
732- BGPd: Support for flowspec ICMP, DSCP, packet length, fragment and tcp flags
733- BGPd: fix rpki validation for ipv6
734- VRF: Workaround for kernel bug on Linux 4.14 and newer
735- Zebra: Fix interface based routes from zebra not marked up
736- Zebra: Fix large zebra memory usage when redistribute between protocols
737- Zebra: Allow route-maps to match on source instance
738- BGPd: Backport peer-attr overrides, peer-level enforce-first-as and filtered-routes fix
739- BGPd: fix for crash during display of filtered-routes
740- BGPd: Actually display labeled unicast routes received
741- Label Manager: Fix to work correctly behind a label manager proxy
742
743* Thu Jun 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0
744- PIM: Add a Multicast Trace Command draft-ietf-idmr-traceroute-ipm-05
745- IS-IS: Implement Three-Way Handshake as per RFC5303
746- BGPD: Implement VPN-VRF route leaking per RFC4364.
747- BGPD: Implement VRF with NETNS backend
748- BGPD: Flowspec
749- PBRD: Add a new Policy Based Routing Daemon
750
7134904b
RZ
751* Sun May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - %{version}
752- Add BFDd support
753
bc1dc4fe 754* Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org>
b4c554e2
MW
755- Fixed RPKI RPM build
756
757* Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
aaf38c94
MW
758- Add option to build with RPKI (default: disabled)
759
760* Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
609dee9d
MW
761- Adapt to new documentation structure based on Sphinx
762
763* Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
75429e11 764- Fix script location for watchfrr restart functions in daemon config
c88ca85d 765- Fix postun script to restart frr during upgrade
75429e11
MW
766
767* Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
5a76db68
MW
768- added NHRP and EIGRP daemon
769
770* Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
41b86ba4
MW
771- new subpackage frr-pythontools with python 2.7 restart script
772- remove PIMd from CentOS/RedHat 6 RPM packages (won't work - too old)
2cdd3d94 773- converted to single frr init script (not per daemon) based on debian init script
150e7c7e 774- created systemd service file for systemd based systems (which uses init script)
41b86ba4
MW
775- Various other RPM package fixes for FRR 2.0
776
777* Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
447a8fe9 778- Renamed to frr for FRRouting fork of Quagga
c115e4a4 779
150e7c7e 780* Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
30da4585
PJ
781- remove with_ipv6 conditionals, always build v6
782- Fix UTF-8 char in spec changelog
783- remove quagga.pam.stack, long deprecated.
784
f755bf6d
MW
785* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
786- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
787 --enable-netlink
788- Remove support for old fedora 4/5
789- Fix for package nameing
790- Fix Weekdays of previous changelogs (bogus dates)
150e7c7e 791- Add conditional logic to only build tex footnotes with supported texi2html
f755bf6d
MW
792- Added pimd to files section and fix double listing of /var/lib*/quagga
793- Numerous fixes to unify upstart/systemd startup into same spec file
9473e340 794- Only allow use of watchfrr for non-systemd systems. no need with systemd
f755bf6d
MW
795
796* Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
7c08d77f
PJ
797- buildreq updates
798- add a default define for with_pimd
799
f755bf6d 800* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
e7cd37bf 801- Steal some changes from Fedora spec file:
802- Add with_rtadv variable
803- Test for groups/users with getent before group/user adding
804- Readline need not be an explicit prerequisite
805- install-info delete should be postun, not preun
806
fc43ecc7 807* Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
808- on package upgrade, implement careful, phased restart logic
809- use gcc -rdynamic flag when linking for better backtraces
810
f3931751 811* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
812- daemonv6_list should contain only IPv6 daemons
813
b3324e27 814* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
9473e340 815- watchfrr added
b3324e27 816- on upgrade, all daemons should be condrestart'ed
817- on removal, all daemons should be stopped
818
36002ae5 819* Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
820- Use makeinfo --html to generate quagga.html
821
0df63b52 822* Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
823- Fix with_ipv6 set to 0 build
824
cfc1842b 825* Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
826- Update to 0.97.2
827
828* Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
829- Make directories be owned by the packages concerned
830- Update logrotate scripts to use correct path to killall and use pid files
831
da29c6b0 832* Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
833- Update to 0.97.0
834
54b25dca 835* Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
836- build snmp support by default
837- build irdp support
838- build with shared libs
839- devel subpackage for archives and headers
840
00bc5603 841* Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
842- updated sysconfig files to specify local dir
843- added ospf_dump.c crash quick fix patch
844- added ospfd persistent interface configuration patch
845
15d74e93 846* Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
847- sync to CVS
848- integrate RH sysconfig patch to specify daemon options (RH)
849- default to have vty listen only to 127.1 (RH)
850- add user with fixed UID/GID (RH)
851- create user with shell /sbin/nologin rather than /bin/false (RH)
852- stop daemons on uninstall (RH)
f755bf6d 853- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
15d74e93 854- isisd added
855- cleanup tasks carried out for every daemon
856
406f7000 857* Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
858- Fix -devel package to include all files
859- Sync to 0.96.4
860
6bd8fd3b 861* Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
862- Renamed to Quagga
863- Sync to Quagga release 0.96
864
f755bf6d 865* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
edd7c245 866- zebra privileges support
867
f755bf6d 868* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
e0626854 869- Fix mem leak in 'show thread cpu'
870- Ralph Keller's OSPF-API
871- Amir: Fix configure.ac for net-snmp
872
448ed4a2 873* Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
874- ospfd IOS prefix to interface matching for 'network' statement
875- temporary fix for PtP and IPv6
876- sync to zebra.org CVS
877
8f754983 878* Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
879- update to latest cvs
880- Yon's "show thread cpu" patch - 17217
881- walk up tree - 17218
882- ospfd NSSA fixes - 16681
883- ospfd nsm fixes - 16824
150e7c7e 884- ospfd OLSA fixes and new feature - 16823
8f754983 885- KAME and ifindex fixes - 16525
886- spec file changes to allow redhat files to be in tree
887
d7ccae28 888* Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
889- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
890- Fixed up some build requirements (patch)
891- Added conditional build requirements for vtysh / snmp
f755bf6d 892- Added conditional to files for _bindir depending on vtysh
d7ccae28 893
788cdc6d 894* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
895- update to latest CVS
896- add Greg Troxel's md5 buffer copy/dup fix
897- add RIPv1 fix
898- add Frank's multicast flag fix
899
900* Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
901- update to latest CVS
902- timestamped crypt_seqnum patch
903- oi->on_write_q fix
904
905* Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
906- update to latest CVS
907- add vtysh 'write-config (integrated|daemon)' patch
908- always 'make rebuild' in vtysh/ to catch new commands
909
910* Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
911- update to 0.93b
912
913* Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
914- update to latest CVS
915- add "/sbin/ip route flush proto zebra" to zebra RH init on startup
916
917* Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
918- update to current CVS
919- add OSPF point to multipoint patch
920- add OSPF bugfixes
921- add BGP hash optimisation patch
922
923* Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
924- update to 0.93-pre1 / CVS
925- add link state detection support
926- add generic PtP and RFC3021 support
927- various bug fixes
928
929* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
930- Fix bug #51336
931
f755bf6d 932* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
788cdc6d 933- Use generic initscript strings instead of initscript specific
934 ( "Starting foo: " -> "Starting $prog:" )
935
936* Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
937- Bump the release when rebuilding into the dist.
938
939* Tue Feb 6 2001 Tim Powers <timp@redhat.com>
940- built for Powertools
941
150e7c7e 942* Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
788cdc6d 943- Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
944- Update to 0.91a
945- Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
946- Should be quite Red Hat'isque now.