]> git.proxmox.com Git - mirror_frr.git/blame - redhat/frr.spec.in
*: 6.0.3 release
[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}
93f3fbfa 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
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
24858fa0 219Requires: python-ipaddress
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}
de91589a 377install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service
f755bf6d 378%else
9b979646 379mkdir -p %{buildroot}%{_initddir}
de91589a 380ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr
f755bf6d
MW
381%endif
382
de91589a 383install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr
0817301a 384# add rpki module to daemon
385%if %{with_rpki}
386 sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{buildroot}%{_sysconfdir}/frr/daemons
387%endif
5f371d0b
RK
388install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
389install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr
390install -d -m750 %{buildroot}%{rundir}
edd7c245 391
95c16f4c 392
edd7c245 393%pre
394# add vty_group
f755bf6d 395%if 0%{?vty_group:1}
1a629db7 396 getent group %{vty_group} >/dev/null || groupadd -r -g %{vty_gid} %{vty_group}
edd7c245 397%endif
e7cd37bf 398
c115e4a4
MW
399# add frr user and group
400%if 0%{?frr_user:1}
1a629db7
RK
401 # Ensure that frr_gid gets correctly allocated
402 getent group %{frr_user} >/dev/null || groupadd -g %{frr_gid} %{frr_user}
403 getent passwd %{frr_user} >/dev/null || \
404 useradd -r -u %{frr_uid} -g %{frr_user} \
405 -s /sbin/nologin -c "FRRouting suite" \
406 -d %{rundir} %{frr_user}
407
408 %if 0%{?vty_group:1}
409 usermod -a -G %{vty_group} %{frr_user}
410 %endif
411%endif
412exit 0
f676b06e 413
788cdc6d 414
788cdc6d 415%post
30b9d89b 416# zebra_spec_add_service <service name> <port/proto> <comment>
788cdc6d 417# e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
418
419zebra_spec_add_service ()
420{
150e7c7e 421 # Add port /etc/services entry if it isn't already there
9b979646
RK
422 if [ -f %{_sysconfdir}/services ] && \
423 ! %__sed -e 's/#.*$//' %{_sysconfdir}/services | %__grep -wq $1 ; then
424 echo "$1 $2 # $3" >> %{_sysconfdir}/services
9a581ae4 425 fi
788cdc6d 426}
427
428zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
429zebra_spec_add_service zebra 2601/tcp "zebra vty"
7ac1de8e 430zebra_spec_add_service staticd 2616/tcp "staticd vty"
788cdc6d 431zebra_spec_add_service ripd 2602/tcp "RIPd vty"
432zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
433zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
434zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
435zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
5f371d0b 436zebra_spec_add_service isisd 2608/tcp "ISISd vty"
54b25dca 437%if %{with_ospfapi}
5f371d0b 438 zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
7021c425 439%endif
e763afa5 440%if %{with_babeld}
5f371d0b 441 zebra_spec_add_service babeld 2609/tcp "BABELd vty"
5a76db68 442%endif
729f041c 443%if %{with_nhrpd}
5f371d0b 444 zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
729f041c 445%endif
41b86ba4 446%if %{with_pimd}
5f371d0b 447 zebra_spec_add_service pimd 2611/tcp "PIMd vty"
41b86ba4 448%endif
1abe1280 449%if %{with_pbrd}
5f371d0b 450 zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
1abe1280 451%endif
b021388f 452%if %{with_ldpd}
5f371d0b 453 zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
b021388f 454%endif
e763afa5 455%if %{with_eigrpd}
5f371d0b 456 zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty"
e763afa5 457%endif
7134904b
RZ
458%if %{with_bfdd}
459 zebra_spec_add_service bfdd 2617/tcp "BFDd vty"
460%endif
788cdc6d 461
f755bf6d 462%if "%{initsystem}" == "systemd"
5f371d0b
RK
463 for daemon in %all_daemons ; do
464 %systemd_post frr.service
465 done
f755bf6d 466%else
5f371d0b 467 /sbin/chkconfig --add frr
f755bf6d 468%endif
788cdc6d 469
75429e11
MW
470# Fix bad path in previous config files
471# Config files won't get replaced by default, so we do this ugly hack to fix it
de91589a 472%__sed -i 's|watchfrr_options=|#watchfrr_options=|g' %{configdir}/daemons 2> /dev/null || true
75429e11 473
5b7077e8
DS
474# With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if
475# we install or upgrade to a frr built with systemd
476%if "%{initsystem}" == "systemd"
931e1d68 477 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
5b7077e8
DS
478%endif
479
c115e4a4 480/sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 481
482# Create dummy files if they don't exist so basic functions can be used.
931e1d68
RK
483if [ ! -e %{configdir}/zebra.conf ]; then
484 echo "hostname `hostname`" > %{configdir}/zebra.conf
c115e4a4 485%if 0%{?frr_user:1}
1dc5a0dc 486 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
e7cd37bf 487%endif
931e1d68 488 chmod 640 %{configdir}/zebra.conf*
788cdc6d 489fi
f755bf6d 490for daemon in %{all_daemons} ; do
33fdbd5e 491 if [ x"${daemon}" != x"" ] ; then
931e1d68
RK
492 if [ ! -e %{configdir}/${daemon}.conf ]; then
493 touch %{configdir}/${daemon}.conf
33fdbd5e 494 %if 0%{?frr_user:1}
1dc5a0dc 495 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
33fdbd5e
MW
496 %endif
497 fi
9a581ae4 498 fi
f755bf6d 499done
2cdd3d94 500%if 0%{?frr_user:1}
1dc5a0dc 501 chown %{frr_user}:%{frr_user} %{configdir}/daemons
2cdd3d94
MW
502%endif
503
9473e340 504%if %{with_watchfrr}
9a581ae4 505 # No config for watchfrr - this is part of /etc/sysconfig/frr
931e1d68 506 rm -f %{configdir}/watchfrr.*
f755bf6d
MW
507%endif
508
931e1d68
RK
509if [ ! -e %{configdir}/vtysh.conf ]; then
510 touch %{configdir}/vtysh.conf
511 chmod 640 %{configdir}/vtysh.conf
2cdd3d94 512%if 0%{?frr_user:1}
5f371d0b
RK
513 %if 0%{?vty_group:1}
514 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
515 %endif
f755bf6d 516%endif
788cdc6d 517fi
518
95c16f4c 519
788cdc6d 520%postun
fc43ecc7 521if [ "$1" -ge 1 ]; then
19ced9a4
MW
522 #
523 # Upgrade from older version
524 #
9a581ae4
MW
525 %if "%{initsystem}" == "systemd"
526 ##
527 ## Systemd Version
528 ##
c88ca85d 529 %systemd_postun_with_restart frr.service
9a581ae4
MW
530 %else
531 ##
532 ## init.d Version
533 ##
515a8ee8 534 service frr restart >/dev/null 2>&1
9a581ae4 535 %endif
e321aed1 536 :
788cdc6d 537fi
788cdc6d 538
95c16f4c 539
788cdc6d 540%preun
f755bf6d 541%if "%{initsystem}" == "systemd"
9a581ae4
MW
542 ##
543 ## Systemd Version
544 ##
c88ca85d
MW
545 if [ $1 -eq 0 ] ; then
546 %systemd_preun frr.service
9a581ae4 547 fi
f755bf6d 548%else
9a581ae4
MW
549 ##
550 ## init.d Version
551 ##
c88ca85d 552 if [ $1 -eq 0 ] ; then
515a8ee8 553 service frr stop >/dev/null 2>&1
c2953ac5 554 /sbin/chkconfig --del frr
9a581ae4 555 fi
f755bf6d 556%endif
c115e4a4 557/sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
788cdc6d 558
95c16f4c 559
788cdc6d 560%files
67ad415e 561%doc */*.sample* COPYING
30b9d89b 562%doc doc/mpls
2a0c3450 563%doc README.md
c115e4a4 564%if 0%{?frr_user:1}
1dc5a0dc 565 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
4f20eab1 566 %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
1dc5a0dc 567 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
edd7c245 568%else
5f371d0b 569 %dir %attr(750,root,root) %{configdir}
4f20eab1 570 %dir %attr(750,root,root) %{_localstatedir}/log/frr
5f371d0b 571 %dir %attr(750,root,root) %{rundir}
edd7c245 572%endif
f755bf6d 573%if 0%{?vty_group:1}
1dc5a0dc 574 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
edd7c245 575%endif
c115e4a4 576%{_infodir}/frr.info.gz
788cdc6d 577%{_mandir}/man*/*
54b25dca 578%{_sbindir}/zebra
7ac1de8e 579%{_sbindir}/staticd
54b25dca 580%{_sbindir}/ospfd
581%{_sbindir}/ripd
582%{_sbindir}/bgpd
2cdd3d94 583%exclude %{_sbindir}/ssd
9473e340 584%if %{with_watchfrr}
9a581ae4 585 %{_sbindir}/watchfrr
f755bf6d 586%endif
54b25dca 587%{_sbindir}/ripngd
588%{_sbindir}/ospf6d
41b86ba4
MW
589%if %{with_pimd}
590 %{_sbindir}/pimd
591%endif
1abe1280
DS
592%if %{with_pbrd}
593 %{_sbindir}/pbrd
594%endif
54b25dca 595%{_sbindir}/isisd
b021388f 596%if %{with_ldpd}
c2953ac5 597 %{_sbindir}/ldpd
b021388f 598%endif
5a76db68
MW
599%if %{with_eigrpd}
600 %{_sbindir}/eigrpd
601%endif
729f041c 602%if %{with_nhrpd}
5a76db68 603 %{_sbindir}/nhrpd
729f041c 604%endif
e763afa5
DL
605%if %{with_babeld}
606 %{_sbindir}/babeld
607%endif
7134904b
RZ
608%if %{with_bfdd}
609 %{_sbindir}/bfdd
610%endif
5c3ad1d4 611%{_libdir}/lib*.so.0
4aa7422e 612%{_libdir}/lib*.so.0.*
84b05ca1 613%if %{with_fpm}
4aa7422e 614 %{_libdir}/frr/modules/zebra_fpm.so
84b05ca1 615%endif
b4c554e2 616%if %{with_rpki}
4aa7422e 617 %{_libdir}/frr/modules/bgpd_rpki.so
b4c554e2 618%endif
4aa7422e 619%{_libdir}/frr/modules/zebra_irdp.so
788cdc6d 620%{_bindir}/*
9b979646 621%config(noreplace) %{configdir}/[!v]*.conf*
1dc5a0dc 622%config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
f755bf6d 623%if "%{initsystem}" == "systemd"
07a138ec 624 %{_unitdir}/frr.service
f755bf6d 625%else
9b979646 626 %{_initddir}/frr
f755bf6d 627%endif
9b979646
RK
628%config(noreplace) %{_sysconfdir}/pam.d/frr
629%config(noreplace) %{_sysconfdir}/logrotate.d/frr
32398f01 630%{_sbindir}/frr-reload
032652bf
DL
631%{_sbindir}/frrcommon.sh
632%{_sbindir}/frrinit.sh
633%{_sbindir}/watchfrr.sh
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
4aa7422e 648%dir %{_includedir}/%{name}
b8b18c06 649%{_includedir}/%{name}/*.h
4aa7422e 650%dir %{_includedir}/%{name}/ospfd
b8b18c06 651%{_includedir}/%{name}/ospfd/*.h
54b25dca 652%if %{with_ospfapi}
4aa7422e 653 %dir %{_includedir}/%{name}/ospfapi
b8b18c06 654 %{_includedir}/%{name}/ospfapi/*.h
68980084 655%endif
5a76db68 656%if %{with_eigrpd}
4aa7422e 657 %dir %{_includedir}/%{name}/eigrpd
b8b18c06 658 %{_includedir}/%{name}/eigrpd/*.h
5a76db68 659%endif
e0626854 660
95c16f4c 661
788cdc6d 662%changelog
33e56da6
QY
663
664* Tue May 7 2019 Quentin Young <qlyoung@cumulusnetworks.com> - %{version}
665- bgpd: Fix 'show bgp ipv4/ipv6 neighbors' to show only v4 or v6 neighbors
666- bgpd: Fix display issue when showing labeled-unicast routes
667- bgpd: Fix incorrect # peers in 'show bgp ipv6 summary' output
668- bgpd: Fix issue with remote-private-as in combination with local-as
669- bgpd: Fix memory error when prepending to AS-path
670- bgpd: Improve error handling when using maximum-prefix
671- ldpd: Fix startup permissions error on OpenBSD
672- ldpd: add support for FreeBSD IP_BINDANY
673- ospfd: Fix incorrect display of millisecond time values
674- tools: Fix incorrect systemd dependencies causing failure to start on boot
675- vtysh: Fix unnecessary reconnection under multi-instance OSPF
676- watchfrr: Fix multi-instance support when using new init script
677- zebra: Fix a display bug in 'show ip route ... json'
678- zebra: Fix compilation issue on OpenBSD
679- zebra: Fix issue with missed selection of system-sourced routes
680- zebra: Fix race condition in label manager
681- zebra: Reliability improvements to pseudowire route recovery
682- zebra: Tweak metric values for macvlan devices
683
684* Tue Jan 8 2019 Martin Winter <mwinter@opensourcerouting.org> - 6.0.2
1bdbe6ef
MW
685- Security Issue (Denial of Service): Fix BGP Attribute 255 (experimental VNC)
686 handling
687
688* Sat Dec 29 2018 Martin Winter <mwinter@opensourcerouting.org> - 6.0.1
5120b706
MW
689- Various fixes for label manager
690- Fix BGP unnumbered peer setup
691- Various other fixes
692
693* Sun Oct 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 6.0
c8c24278
MW
694- Staticd: New daemon responsible for management of static routes
695- ISISd: Implement dst-src routing as per draft-ietf-isis-ipv6-dst-src-routing
696- BFDd: new daemon for BFD (Bidrectional Forwarding Detection). Responsiblei
697 for notifying link changes to make routing protocols converge faster.
698- various bug fixes
699
700* Thu Jul 5 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0.1
701- Support Automake 1.16.1
702- BGPd: Support for flowspec ICMP, DSCP, packet length, fragment and tcp flags
703- BGPd: fix rpki validation for ipv6
704- VRF: Workaround for kernel bug on Linux 4.14 and newer
705- Zebra: Fix interface based routes from zebra not marked up
706- Zebra: Fix large zebra memory usage when redistribute between protocols
707- Zebra: Allow route-maps to match on source instance
708- BGPd: Backport peer-attr overrides, peer-level enforce-first-as and filtered-routes fix
709- BGPd: fix for crash during display of filtered-routes
710- BGPd: Actually display labeled unicast routes received
711- Label Manager: Fix to work correctly behind a label manager proxy
712
713* Thu Jun 7 2018 Martin Winter <mwinter@opensourcerouting.org> - 5.0
714- PIM: Add a Multicast Trace Command draft-ietf-idmr-traceroute-ipm-05
715- IS-IS: Implement Three-Way Handshake as per RFC5303
716- BGPD: Implement VPN-VRF route leaking per RFC4364.
717- BGPD: Implement VRF with NETNS backend
718- BGPD: Flowspec
719- PBRD: Add a new Policy Based Routing Daemon
720
7134904b
RZ
721* Sun May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - %{version}
722- Add BFDd support
723
c8c24278 724* Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org> - 4.0.1
b4c554e2
MW
725- Fixed RPKI RPM build
726
c8c24278
MW
727* Sun Mar 11 2018 Martin Winter <mwinter@opensourcerouting.org> - 4.0
728- ISIS-MT - https://tools.ietf.org/html/rfc5120
729- BGP - RPKI (RFC 6810)
730- BGP - v4 labeled unicast as per RFC 3107
731- BGP/Zebra - Type 2 and 3 EVPN with symmetric and asymmetric routing
732- EIGRP - https://tools.ietf.org/html/rfc7868
733- FRR - Tab completion for iface names, prefix-lists, route-maps, BGP peers
734- BABEL - https://tools.ietf.org/html/rfc6126
735- PIM VRF - Added the ability to work with VRF’s to PIM
736- OSPFv2 VRF - Added the ability to work with VRF’s to OSPFv2
737- OSPFv2 Experimental SR - draft-ietf-ospf-segment-routing-extensions-24
738- ZEBRA - Add ability to create a static route that leaks across VRF’s.
739
b4c554e2 740* Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
aaf38c94
MW
741- Add option to build with RPKI (default: disabled)
742
743* Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
609dee9d
MW
744- Adapt to new documentation structure based on Sphinx
745
746* Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
75429e11 747- Fix script location for watchfrr restart functions in daemon config
c88ca85d 748- Fix postun script to restart frr during upgrade
75429e11
MW
749
750* Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
5a76db68
MW
751- added NHRP and EIGRP daemon
752
753* Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
41b86ba4
MW
754- new subpackage frr-pythontools with python 2.7 restart script
755- remove PIMd from CentOS/RedHat 6 RPM packages (won't work - too old)
2cdd3d94 756- converted to single frr init script (not per daemon) based on debian init script
150e7c7e 757- created systemd service file for systemd based systems (which uses init script)
41b86ba4
MW
758- Various other RPM package fixes for FRR 2.0
759
760* Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
447a8fe9 761- Renamed to frr for FRRouting fork of Quagga
c115e4a4 762
150e7c7e 763* Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
30da4585
PJ
764- remove with_ipv6 conditionals, always build v6
765- Fix UTF-8 char in spec changelog
766- remove quagga.pam.stack, long deprecated.
767
f755bf6d
MW
768* Thu Oct 22 2015 Martin Winter <mwinter@opensourcerouting.org>
769- Cleanup configure: remove --enable-ipv6 (default now), --enable-nssa,
770 --enable-netlink
771- Remove support for old fedora 4/5
772- Fix for package nameing
773- Fix Weekdays of previous changelogs (bogus dates)
150e7c7e 774- Add conditional logic to only build tex footnotes with supported texi2html
f755bf6d
MW
775- Added pimd to files section and fix double listing of /var/lib*/quagga
776- Numerous fixes to unify upstart/systemd startup into same spec file
9473e340 777- Only allow use of watchfrr for non-systemd systems. no need with systemd
f755bf6d
MW
778
779* Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
7c08d77f
PJ
780- buildreq updates
781- add a default define for with_pimd
782
f755bf6d 783* Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
e7cd37bf 784- Steal some changes from Fedora spec file:
785- Add with_rtadv variable
786- Test for groups/users with getent before group/user adding
787- Readline need not be an explicit prerequisite
788- install-info delete should be postun, not preun
789
fc43ecc7 790* Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
791- on package upgrade, implement careful, phased restart logic
792- use gcc -rdynamic flag when linking for better backtraces
793
f3931751 794* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
795- daemonv6_list should contain only IPv6 daemons
796
b3324e27 797* Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
9473e340 798- watchfrr added
b3324e27 799- on upgrade, all daemons should be condrestart'ed
800- on removal, all daemons should be stopped
801
36002ae5 802* Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
803- Use makeinfo --html to generate quagga.html
804
0df63b52 805* Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
806- Fix with_ipv6 set to 0 build
807
cfc1842b 808* Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
809- Update to 0.97.2
810
811* Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
812- Make directories be owned by the packages concerned
813- Update logrotate scripts to use correct path to killall and use pid files
814
da29c6b0 815* Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
816- Update to 0.97.0
817
54b25dca 818* Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
819- build snmp support by default
820- build irdp support
821- build with shared libs
822- devel subpackage for archives and headers
823
00bc5603 824* Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
825- updated sysconfig files to specify local dir
826- added ospf_dump.c crash quick fix patch
827- added ospfd persistent interface configuration patch
828
15d74e93 829* Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
830- sync to CVS
831- integrate RH sysconfig patch to specify daemon options (RH)
832- default to have vty listen only to 127.1 (RH)
833- add user with fixed UID/GID (RH)
834- create user with shell /sbin/nologin rather than /bin/false (RH)
835- stop daemons on uninstall (RH)
f755bf6d 836- delete info file on preun, not postun to avoid deletion on upgrade. (RH)
15d74e93 837- isisd added
838- cleanup tasks carried out for every daemon
839
406f7000 840* Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
841- Fix -devel package to include all files
842- Sync to 0.96.4
843
6bd8fd3b 844* Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
845- Renamed to Quagga
846- Sync to Quagga release 0.96
847
f755bf6d 848* Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
edd7c245 849- zebra privileges support
850
f755bf6d 851* Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
e0626854 852- Fix mem leak in 'show thread cpu'
853- Ralph Keller's OSPF-API
854- Amir: Fix configure.ac for net-snmp
855
448ed4a2 856* Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
857- ospfd IOS prefix to interface matching for 'network' statement
858- temporary fix for PtP and IPv6
859- sync to zebra.org CVS
860
8f754983 861* Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
862- update to latest cvs
863- Yon's "show thread cpu" patch - 17217
864- walk up tree - 17218
865- ospfd NSSA fixes - 16681
866- ospfd nsm fixes - 16824
150e7c7e 867- ospfd OLSA fixes and new feature - 16823
8f754983 868- KAME and ifindex fixes - 16525
869- spec file changes to allow redhat files to be in tree
870
d7ccae28 871* Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
872- Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
873- Fixed up some build requirements (patch)
874- Added conditional build requirements for vtysh / snmp
f755bf6d 875- Added conditional to files for _bindir depending on vtysh
d7ccae28 876
788cdc6d 877* Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
878- update to latest CVS
879- add Greg Troxel's md5 buffer copy/dup fix
880- add RIPv1 fix
881- add Frank's multicast flag fix
882
883* Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
884- update to latest CVS
885- timestamped crypt_seqnum patch
886- oi->on_write_q fix
887
888* Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
889- update to latest CVS
890- add vtysh 'write-config (integrated|daemon)' patch
891- always 'make rebuild' in vtysh/ to catch new commands
892
893* Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
894- update to 0.93b
895
896* Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
897- update to latest CVS
898- add "/sbin/ip route flush proto zebra" to zebra RH init on startup
899
900* Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
901- update to current CVS
902- add OSPF point to multipoint patch
903- add OSPF bugfixes
904- add BGP hash optimisation patch
905
906* Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
907- update to 0.93-pre1 / CVS
908- add link state detection support
909- add generic PtP and RFC3021 support
910- various bug fixes
911
912* Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
913- Fix bug #51336
914
f755bf6d 915* Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
788cdc6d 916- Use generic initscript strings instead of initscript specific
917 ( "Starting foo: " -> "Starting $prog:" )
918
919* Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
920- Bump the release when rebuilding into the dist.
921
922* Tue Feb 6 2001 Tim Powers <timp@redhat.com>
923- built for Powertools
924
150e7c7e 925* Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
788cdc6d 926- Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
927- Update to 0.91a
928- Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
929- Should be quite Red Hat'isque now.