]> git.proxmox.com Git - mirror_frr.git/blame - redhat/frr.spec.in
build: move SPHINXBUILD= to configure in rpm build
[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
7134904b 89%define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd
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}
147Release: @CONFDATE@%{release_rev}%{?dist}
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
01aff72e
MW
165%if 0%{?rhel} && 0%{?rhel} < 7
166#python27-devel is available from ius community repo for RedHat/CentOS 6
5ebf9672
RK
167BuildRequires: python27-devel
168BuildRequires: python27-sphinx
01aff72e 169%else
5ebf9672
RK
170BuildRequires: python-devel >= 2.7
171BuildRequires: python-sphinx
01aff72e 172%endif
f755bf6d 173%if %{with_pam}
9a581ae4 174BuildRequires: pam-devel
f755bf6d 175%endif
aaf38c94
MW
176%if %{with_rpki}
177BuildRequires: librtr-devel >= 0.5
aaf38c94 178%endif
f755bf6d 179%if "%{initsystem}" == "systemd"
5ebf9672
RK
180BuildRequires: systemd
181BuildRequires: systemd-devel
9a581ae4
MW
182Requires(post): systemd
183Requires(preun): systemd
184Requires(postun): systemd
f755bf6d 185%else
95624f7b
RK
186Requires(post): chkconfig
187Requires(preun): chkconfig
788cdc6d 188# Initscripts > 5.60 is required for IPv6 support
9a581ae4 189Requires(pre): initscripts >= 5.60
ec59a155 190Requires: initscripts
f755bf6d 191%endif
9a581ae4 192Provides: routingdaemon = %{version}-%{release}
5d82c57b
BR
193Obsoletes: gated mrt zebra frr-sysvinit
194Conflicts: bird
788cdc6d 195
95c16f4c 196
788cdc6d 197%description
447a8fe9 198FRRouting is a free software that manages TCP/IP based routing
788cdc6d 199protocol. It takes multi-server and multi-thread approach to resolve
200the current complexity of the Internet.
201
3e7c8d04 202FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP
7134904b 203NHRP, Babel, PBR, EIGRP and BFD.
788cdc6d 204
447a8fe9 205FRRouting is a fork of Quagga.
788cdc6d 206
95c16f4c 207
448ed4a2 208%package contrib
c115e4a4 209Summary: contrib tools for frr
448ed4a2 210Group: System Environment/Daemons
211
212%description contrib
c115e4a4 213Contributed/3rd party tools which may be of use with frr.
448ed4a2 214
95c16f4c 215
386fcd12
MW
216%package pythontools
217Summary: python tools for frr
c2953ac5 218BuildRequires: python
c88a52f4 219Requires: python-ipaddr
386fcd12
MW
220Group: System Environment/Daemons
221
222%description pythontools
223Contributed python 2.7 tools which may be of use with frr.
224
95c16f4c 225
e0626854 226%package devel
c115e4a4 227Summary: Header and object files for frr development
e0626854 228Group: System Environment/Daemons
f755bf6d 229Requires: %{name} = %{version}-%{release}
e0626854 230
231%description devel
c115e4a4
MW
232The frr-devel package contains the header and object files neccessary for
233developing OSPF-API and frr applications.
e0626854 234
95c16f4c 235
788cdc6d 236%prep
5f371d0b 237%setup -q -n frr-%{frrversion}
788cdc6d 238
95c16f4c 239
788cdc6d 240%build
7966b97c 241
242# For standard gcc verbosity, uncomment these lines:
243#CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
244#CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
245
246# For ultra gcc verbosity, uncomment these lines also:
247#CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
248#CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
249#CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
250#CFLAGS="${CFLAGS} -Wpacked -Wpadded"
251
788cdc6d 252%configure \
c63f5f2c 253 --sbindir=%{_sbindir} \
931e1d68 254 --sysconfdir=%{configdir} \
0bb68611 255 --localstatedir=%{rundir} \
5c3ad1d4 256 --disable-static \
9a581ae4 257 --disable-werror \
0ed9196b 258 --enable-irdp \
54b25dca 259%if %{with_multipath}
9a581ae4 260 --enable-multipath=%{with_multipath} \
788cdc6d 261%endif
9a581ae4 262 --enable-vtysh \
54b25dca 263%if %{with_ospfclient}
19ced9a4 264 --enable-ospfclient \
68980084 265%else
19ced9a4 266 --disable-ospfclient\
68980084 267%endif
54b25dca 268%if %{with_ospfapi}
c9cad876 269 --enable-ospfapi \
68980084 270%else
0cff191d 271 --disable-ospfapi \
68980084 272%endif
e7cd37bf 273%if %{with_rtadv}
c9cad876 274 --enable-rtadv \
e7cd37bf 275%else
0cff191d 276 --disable-rtadv \
e7cd37bf 277%endif
b021388f 278%if %{with_ldpd}
9a581ae4 279 --enable-ldpd \
b021388f 280%else
9a581ae4 281 --disable-ldpd \
b021388f 282%endif
41b86ba4
MW
283%if %{with_pimd}
284 --enable-pimd \
b021388f 285%else
41b86ba4 286 --disable-pimd \
b021388f 287%endif
1abe1280
DS
288%if %{with_pbrd}
289 --enable-pbrd \
290%else
291 --disable-pbrd \
292%endif
729f041c 293%if %{with_nhrpd}
fe99b015 294 --enable-nhrpd \
729f041c 295%else
fe99b015 296 --disable-nhrpd \
729f041c 297%endif
5a76db68 298%if %{with_eigrpd}
fe99b015 299 --enable-eigrpd \
5a76db68 300%else
fe99b015 301 --disable-eigrpd \
5a76db68 302%endif
e763afa5 303%if %{with_babeld}
fe99b015 304 --enable-babeld \
e763afa5 305%else
fe99b015 306 --disable-babeld \
e763afa5 307%endif
54b25dca 308%if %{with_pam}
9a581ae4 309 --with-libpam \
788cdc6d 310%endif
c115e4a4 311%if 0%{?frr_user:1}
1dc5a0dc
RK
312 --enable-user=%{frr_user} \
313 --enable-group=%{frr_user} \
edd7c245 314%endif
f755bf6d 315%if 0%{?vty_group:1}
1dc5a0dc 316 --enable-vty-group=%{vty_group} \
edd7c245 317%endif
f755bf6d 318%if %{with_fpm}
9a581ae4 319 --enable-fpm \
f755bf6d 320%else
9a581ae4 321 --disable-fpm \
f755bf6d 322%endif
9473e340 323%if %{with_watchfrr}
9a581ae4 324 --enable-watchfrr \
f755bf6d 325%else
9a581ae4 326 --disable-watchfrr \
65efcfce 327%endif
0e3daa4d
RK
328%if %{with_cumulus}
329 --enable-cumulus \
330%endif
65efcfce 331%if %{with_bgp_vnc}
9a581ae4 332 --enable-bgp-vnc \
65efcfce 333%else
9a581ae4 334 --disable-bgp-vnc \
f755bf6d 335%endif
c9cad876 336 --enable-isisd \
58f20b90 337%if "%{initsystem}" == "systemd"
c9cad876 338 --enable-systemd \
f755bf6d 339%endif
aaf38c94 340%if %{with_rpki}
7134904b
RZ
341 --enable-rpki \
342%else
343 --disable-rpki \
344%endif
345%if %{with_bfdd}
ad9829b5 346 --enable-bfdd \
9f892cc5 347%else
ad9829b5 348 --disable-bfdd \
aaf38c94 349%endif
ad9829b5 350 SPHINXBUILD=%{sphinx}
788cdc6d 351
ad9829b5 352make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
788cdc6d 353
354pushd doc
ad9829b5 355make info
788cdc6d 356popd
357
95c16f4c 358
788cdc6d 359%install
9b979646 360mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
4f20eab1 361 %{buildroot}%{_localstatedir}/log/frr %{buildroot}%{_infodir}
ad9829b5 362make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
788cdc6d 363
9a344b74 364# Remove this file, as it is uninstalled and causes errors when building on RH9
f755bf6d 365rm -rf %{buildroot}/usr/share/info/dir
9a344b74 366
2cdd3d94
MW
367# Remove debian init script if it was installed
368rm -f %{buildroot}%{_sbindir}/frr
c63f5f2c 369
5c3ad1d4
RK
370# kill bogus libtool files
371rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
372rm -vf %{buildroot}%{_libdir}/*.la
0ed9196b 373
f755bf6d
MW
374# install /etc sources
375%if "%{initsystem}" == "systemd"
376mkdir -p %{buildroot}%{_unitdir}
5f371d0b
RK
377install -m644 %{zeb_rh_src}/frr.service %{buildroot}%{_unitdir}/frr.service
378install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr
f755bf6d 379%else
9b979646 380mkdir -p %{buildroot}%{_initddir}
5f371d0b
RK
381install %{zeb_rh_src}/frr.init %{buildroot}%{_sbindir}/frr
382ln -s %{_sbindir}/frr %{buildroot}%{_initddir}/frr
f755bf6d
MW
383%endif
384
9b979646 385install %{zeb_rh_src}/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
788cdc6d 463
f755bf6d 464%if "%{initsystem}" == "systemd"
5f371d0b
RK
465 for daemon in %all_daemons ; do
466 %systemd_post frr.service
467 done
f755bf6d 468%else
5f371d0b 469 /sbin/chkconfig --add frr
f755bf6d 470%endif
788cdc6d 471
75429e11
MW
472# Fix bad path in previous config files
473# Config files won't get replaced by default, so we do this ugly hack to fix it
931e1d68 474%__sed -i 's|/etc/init.d/|%{_sbindir}/|g' %{configdir}/daemons 2> /dev/null || true
75429e11 475
5b7077e8
DS
476# With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if
477# we install or upgrade to a frr built with systemd
478%if "%{initsystem}" == "systemd"
931e1d68 479 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
5b7077e8
DS
480%endif
481
c115e4a4 482/sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 483
484# Create dummy files if they don't exist so basic functions can be used.
931e1d68
RK
485if [ ! -e %{configdir}/zebra.conf ]; then
486 echo "hostname `hostname`" > %{configdir}/zebra.conf
c115e4a4 487%if 0%{?frr_user:1}
1dc5a0dc 488 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
e7cd37bf 489%endif
931e1d68 490 chmod 640 %{configdir}/zebra.conf*
788cdc6d 491fi
f755bf6d 492for daemon in %{all_daemons} ; do
33fdbd5e 493 if [ x"${daemon}" != x"" ] ; then
931e1d68
RK
494 if [ ! -e %{configdir}/${daemon}.conf ]; then
495 touch %{configdir}/${daemon}.conf
33fdbd5e 496 %if 0%{?frr_user:1}
1dc5a0dc 497 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
33fdbd5e
MW
498 %endif
499 fi
9a581ae4 500 fi
f755bf6d 501done
2cdd3d94 502%if 0%{?frr_user:1}
1dc5a0dc 503 chown %{frr_user}:%{frr_user} %{configdir}/daemons
2cdd3d94
MW
504%endif
505
9473e340 506%if %{with_watchfrr}
9a581ae4 507 # No config for watchfrr - this is part of /etc/sysconfig/frr
931e1d68 508 rm -f %{configdir}/watchfrr.*
f755bf6d
MW
509%endif
510
931e1d68
RK
511if [ ! -e %{configdir}/vtysh.conf ]; then
512 touch %{configdir}/vtysh.conf
513 chmod 640 %{configdir}/vtysh.conf
2cdd3d94 514%if 0%{?frr_user:1}
5f371d0b
RK
515 %if 0%{?vty_group:1}
516 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
517 %endif
f755bf6d 518%endif
788cdc6d 519fi
520
95c16f4c 521
788cdc6d 522%postun
fc43ecc7 523if [ "$1" -ge 1 ]; then
19ced9a4
MW
524 #
525 # Upgrade from older version
526 #
9a581ae4
MW
527 %if "%{initsystem}" == "systemd"
528 ##
529 ## Systemd Version
530 ##
c88ca85d 531 %systemd_postun_with_restart frr.service
9a581ae4
MW
532 %else
533 ##
534 ## init.d Version
535 ##
515a8ee8 536 service frr restart >/dev/null 2>&1
9a581ae4 537 %endif
e321aed1 538 :
788cdc6d 539fi
788cdc6d 540
95c16f4c 541
788cdc6d 542%preun
f755bf6d 543%if "%{initsystem}" == "systemd"
9a581ae4
MW
544 ##
545 ## Systemd Version
546 ##
c88ca85d
MW
547 if [ $1 -eq 0 ] ; then
548 %systemd_preun frr.service
9a581ae4 549 fi
f755bf6d 550%else
9a581ae4
MW
551 ##
552 ## init.d Version
553 ##
c88ca85d 554 if [ $1 -eq 0 ] ; then
515a8ee8 555 service frr stop >/dev/null 2>&1
c2953ac5 556 /sbin/chkconfig --del frr
9a581ae4 557 fi
f755bf6d 558%endif
c115e4a4 559/sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 560
95c16f4c 561
788cdc6d 562%files
448ed4a2 563%doc */*.sample* AUTHORS COPYING
30b9d89b 564%doc doc/mpls
717b4866 565%doc ChangeLog NEWS README
c115e4a4 566%if 0%{?frr_user:1}
1dc5a0dc 567 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
4f20eab1 568 %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
1dc5a0dc 569 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
edd7c245 570%else
5f371d0b 571 %dir %attr(750,root,root) %{configdir}
4f20eab1 572 %dir %attr(750,root,root) %{_localstatedir}/log/frr
5f371d0b 573 %dir %attr(750,root,root) %{rundir}
edd7c245 574%endif
f755bf6d 575%if 0%{?vty_group:1}
1dc5a0dc 576 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
edd7c245 577%endif
c115e4a4 578%{_infodir}/frr.info.gz
788cdc6d 579%{_mandir}/man*/*
54b25dca 580%{_sbindir}/zebra
7ac1de8e 581%{_sbindir}/staticd
54b25dca 582%{_sbindir}/ospfd
583%{_sbindir}/ripd
584%{_sbindir}/bgpd
2cdd3d94 585%exclude %{_sbindir}/ssd
9473e340 586%if %{with_watchfrr}
9a581ae4 587 %{_sbindir}/watchfrr
f755bf6d 588%endif
54b25dca 589%{_sbindir}/ripngd
590%{_sbindir}/ospf6d
41b86ba4
MW
591%if %{with_pimd}
592 %{_sbindir}/pimd
593%endif
1abe1280
DS
594%if %{with_pbrd}
595 %{_sbindir}/pbrd
596%endif
54b25dca 597%{_sbindir}/isisd
b021388f 598%if %{with_ldpd}
c2953ac5 599 %{_sbindir}/ldpd
b021388f 600%endif
5a76db68
MW
601%if %{with_eigrpd}
602 %{_sbindir}/eigrpd
603%endif
729f041c 604%if %{with_nhrpd}
5a76db68 605 %{_sbindir}/nhrpd
729f041c 606%endif
e763afa5
DL
607%if %{with_babeld}
608 %{_sbindir}/babeld
609%endif
7134904b
RZ
610%if %{with_bfdd}
611 %{_sbindir}/bfdd
612%endif
5c3ad1d4 613%{_libdir}/lib*.so.0
4aa7422e 614%{_libdir}/lib*.so.0.*
84b05ca1 615%if %{with_fpm}
4aa7422e 616 %{_libdir}/frr/modules/zebra_fpm.so
84b05ca1 617%endif
b4c554e2 618%if %{with_rpki}
4aa7422e 619 %{_libdir}/frr/modules/bgpd_rpki.so
b4c554e2 620%endif
4aa7422e 621%{_libdir}/frr/modules/zebra_irdp.so
788cdc6d 622%{_bindir}/*
9b979646 623%config(noreplace) %{configdir}/[!v]*.conf*
1dc5a0dc 624%config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
f755bf6d 625%if "%{initsystem}" == "systemd"
07a138ec 626 %{_unitdir}/frr.service
f755bf6d 627%else
9b979646 628 %{_initddir}/frr
f755bf6d 629%endif
2d2ab699 630%{_sbindir}/frr
9b979646
RK
631%config(noreplace) %{_sysconfdir}/pam.d/frr
632%config(noreplace) %{_sysconfdir}/logrotate.d/frr
32398f01 633%{_sbindir}/frr-reload
788cdc6d 634
95c16f4c 635
448ed4a2 636%files contrib
448ed4a2 637%doc tools
638
95c16f4c 639
386fcd12 640%files pythontools
386fcd12
MW
641%{_sbindir}/frr-reload.py
642%{_sbindir}/frr-reload.pyc
643%{_sbindir}/frr-reload.pyo
644
95c16f4c 645
e0626854 646%files devel
d1ef2aaf 647%{_libdir}/lib*.so
da29c6b0 648%if %{with_ospfclient}
5f371d0b 649 %{_sbindir}/ospfclient
da29c6b0 650%endif
4aa7422e 651%dir %{_includedir}/%{name}
b8b18c06 652%{_includedir}/%{name}/*.h
4aa7422e 653%dir %{_includedir}/%{name}/ospfd
b8b18c06 654%{_includedir}/%{name}/ospfd/*.h
54b25dca 655%if %{with_ospfapi}
4aa7422e 656 %dir %{_includedir}/%{name}/ospfapi
b8b18c06 657 %{_includedir}/%{name}/ospfapi/*.h
68980084 658%endif
5a76db68 659%if %{with_eigrpd}
4aa7422e 660 %dir %{_includedir}/%{name}/eigrpd
b8b18c06 661 %{_includedir}/%{name}/eigrpd/*.h
5a76db68 662%endif
e0626854 663
95c16f4c 664
788cdc6d 665%changelog
c8c24278
MW
666* Sun Oct 7 2018 Martin Winter <mwinter@opensourcerouting.org> - %{version}
667- Staticd: New daemon responsible for management of static routes
668- ISISd: Implement dst-src routing as per draft-ietf-isis-ipv6-dst-src-routing
669- BFDd: new daemon for BFD (Bidrectional Forwarding Detection). Responsiblei
670 for notifying link changes to make routing protocols converge faster.
671- various bug fixes
672
673* Thu Jul 5 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0.1
674- Support Automake 1.16.1
675- BGPd: Support for flowspec ICMP, DSCP, packet length, fragment and tcp flags
676- BGPd: fix rpki validation for ipv6
677- VRF: Workaround for kernel bug on Linux 4.14 and newer
678- Zebra: Fix interface based routes from zebra not marked up
679- Zebra: Fix large zebra memory usage when redistribute between protocols
680- Zebra: Allow route-maps to match on source instance
681- BGPd: Backport peer-attr overrides, peer-level enforce-first-as and filtered-routes fix
682- BGPd: fix for crash during display of filtered-routes
683- BGPd: Actually display labeled unicast routes received
684- Label Manager: Fix to work correctly behind a label manager proxy
685
686* Thu Jun 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0
687- PIM: Add a Multicast Trace Command draft-ietf-idmr-traceroute-ipm-05
688- IS-IS: Implement Three-Way Handshake as per RFC5303
689- BGPD: Implement VPN-VRF route leaking per RFC4364.
690- BGPD: Implement VRF with NETNS backend
691- BGPD: Flowspec
692- PBRD: Add a new Policy Based Routing Daemon
693
7134904b
RZ
694* Sun May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - %{version}
695- Add BFDd support
696
c8c24278 697* Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org> - 4.0.1
b4c554e2
MW
698- Fixed RPKI RPM build
699
c8c24278
MW
700* Sun Mar 11 2018 Martin Winter <mwinter@opensourcerouting.org> - 4.0
701- ISIS-MT - https://tools.ietf.org/html/rfc5120
702- BGP - RPKI (RFC 6810)
703- BGP - v4 labeled unicast as per RFC 3107
704- BGP/Zebra - Type 2 and 3 EVPN with symmetric and asymmetric routing
705- EIGRP - https://tools.ietf.org/html/rfc7868
706- FRR - Tab completion for iface names, prefix-lists, route-maps, BGP peers
707- BABEL - https://tools.ietf.org/html/rfc6126
708- PIM VRF - Added the ability to work with VRF’s to PIM
709- OSPFv2 VRF - Added the ability to work with VRF’s to OSPFv2
710- OSPFv2 Experimental SR - draft-ietf-ospf-segment-routing-extensions-24
711- ZEBRA - Add ability to create a static route that leaks across VRF’s.
712
b4c554e2 713* Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
aaf38c94
MW
714- Add option to build with RPKI (default: disabled)
715
716* Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
609dee9d
MW
717- Adapt to new documentation structure based on Sphinx
718
719* Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
75429e11 720- Fix script location for watchfrr restart functions in daemon config
c88ca85d 721- Fix postun script to restart frr during upgrade
75429e11
MW
722
723* Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
5a76db68
MW
724- added NHRP and EIGRP daemon
725
726* Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
41b86ba4
MW
727- new subpackage frr-pythontools with python 2.7 restart script
728- remove PIMd from CentOS/RedHat 6 RPM packages (won't work - too old)
2cdd3d94 729- converted to single frr init script (not per daemon) based on debian init script
150e7c7e 730- created systemd service file for systemd based systems (which uses init script)
41b86ba4
MW
731- Various other RPM package fixes for FRR 2.0
732
733* Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
447a8fe9 734- Renamed to frr for FRRouting fork of Quagga
c115e4a4 735
150e7c7e 736* Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
30da4585
PJ
737- remove with_ipv6 conditionals, always build v6
738- Fix UTF-8 char in spec changelog
739- remove quagga.pam.stack, long deprecated.
740
f755bf6d
MW
741* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
742- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
743 --enable-netlink
744- Remove support for old fedora 4/5
745- Fix for package nameing
746- Fix Weekdays of previous changelogs (bogus dates)
150e7c7e 747- Add conditional logic to only build tex footnotes with supported texi2html
f755bf6d
MW
748- Added pimd to files section and fix double listing of /var/lib*/quagga
749- Numerous fixes to unify upstart/systemd startup into same spec file
9473e340 750- Only allow use of watchfrr for non-systemd systems. no need with systemd
f755bf6d
MW
751
752* Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
7c08d77f
PJ
753- buildreq updates
754- add a default define for with_pimd
755
f755bf6d 756* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
e7cd37bf 757- Steal some changes from Fedora spec file:
758- Add with_rtadv variable
759- Test for groups/users with getent before group/user adding
760- Readline need not be an explicit prerequisite
761- install-info delete should be postun, not preun
762
fc43ecc7 763* Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
764- on package upgrade, implement careful, phased restart logic
765- use gcc -rdynamic flag when linking for better backtraces
766
f3931751 767* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
768- daemonv6_list should contain only IPv6 daemons
769
b3324e27 770* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
9473e340 771- watchfrr added
b3324e27 772- on upgrade, all daemons should be condrestart'ed
773- on removal, all daemons should be stopped
774
36002ae5 775* Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
776- Use makeinfo --html to generate quagga.html
777
0df63b52 778* Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
779- Fix with_ipv6 set to 0 build
780
cfc1842b 781* Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
782- Update to 0.97.2
783
784* Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
785- Make directories be owned by the packages concerned
786- Update logrotate scripts to use correct path to killall and use pid files
787
da29c6b0 788* Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
789- Update to 0.97.0
790
54b25dca 791* Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
792- build snmp support by default
793- build irdp support
794- build with shared libs
795- devel subpackage for archives and headers
796
00bc5603 797* Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
798- updated sysconfig files to specify local dir
799- added ospf_dump.c crash quick fix patch
800- added ospfd persistent interface configuration patch
801
15d74e93 802* Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
803- sync to CVS
804- integrate RH sysconfig patch to specify daemon options (RH)
805- default to have vty listen only to 127.1 (RH)
806- add user with fixed UID/GID (RH)
807- create user with shell /sbin/nologin rather than /bin/false (RH)
808- stop daemons on uninstall (RH)
f755bf6d 809- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
15d74e93 810- isisd added
811- cleanup tasks carried out for every daemon
812
406f7000 813* Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
814- Fix -devel package to include all files
815- Sync to 0.96.4
816
6bd8fd3b 817* Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
818- Renamed to Quagga
819- Sync to Quagga release 0.96
820
f755bf6d 821* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
edd7c245 822- zebra privileges support
823
f755bf6d 824* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
e0626854 825- Fix mem leak in 'show thread cpu'
826- Ralph Keller's OSPF-API
827- Amir: Fix configure.ac for net-snmp
828
448ed4a2 829* Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
830- ospfd IOS prefix to interface matching for 'network' statement
831- temporary fix for PtP and IPv6
832- sync to zebra.org CVS
833
8f754983 834* Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
835- update to latest cvs
836- Yon's "show thread cpu" patch - 17217
837- walk up tree - 17218
838- ospfd NSSA fixes - 16681
839- ospfd nsm fixes - 16824
150e7c7e 840- ospfd OLSA fixes and new feature - 16823
8f754983 841- KAME and ifindex fixes - 16525
842- spec file changes to allow redhat files to be in tree
843
d7ccae28 844* Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
845- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
846- Fixed up some build requirements (patch)
847- Added conditional build requirements for vtysh / snmp
f755bf6d 848- Added conditional to files for _bindir depending on vtysh
d7ccae28 849
788cdc6d 850* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
851- update to latest CVS
852- add Greg Troxel's md5 buffer copy/dup fix
853- add RIPv1 fix
854- add Frank's multicast flag fix
855
856* Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
857- update to latest CVS
858- timestamped crypt_seqnum patch
859- oi->on_write_q fix
860
861* Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
862- update to latest CVS
863- add vtysh 'write-config (integrated|daemon)' patch
864- always 'make rebuild' in vtysh/ to catch new commands
865
866* Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
867- update to 0.93b
868
869* Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
870- update to latest CVS
871- add "/sbin/ip route flush proto zebra" to zebra RH init on startup
872
873* Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
874- update to current CVS
875- add OSPF point to multipoint patch
876- add OSPF bugfixes
877- add BGP hash optimisation patch
878
879* Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
880- update to 0.93-pre1 / CVS
881- add link state detection support
882- add generic PtP and RFC3021 support
883- various bug fixes
884
885* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
886- Fix bug #51336
887
f755bf6d 888* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
788cdc6d 889- Use generic initscript strings instead of initscript specific
890 ( "Starting foo: " -> "Starting $prog:" )
891
892* Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
893- Bump the release when rebuilding into the dist.
894
895* Tue Feb 6 2001 Tim Powers <timp@redhat.com>
896- built for Powertools
897
150e7c7e 898* Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
788cdc6d 899- Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
900- Update to 0.91a
901- Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
902- Should be quite Red Hat'isque now.