]> git.proxmox.com Git - mirror_frr.git/blob - redhat/frr.spec.in
Merge pull request #5739 from mjstapp/nhg_show_ordered
[mirror_frr.git] / redhat / frr.spec.in
1 # configure options
2 #
3 # Some can be overridden on rpmbuild commandline with:
4 # rpmbuild --define 'variable value'
5 # (use any value, ie 1 for flag "with_XXXX" definitions)
6 #
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.
10
11 #################### FRRouting (FRR) configure options #####################
12 # with-feature options
13 %{!?with_babeld: %global with_babeld 1 }
14 %{!?with_bfdd: %global with_bfdd 1 }
15 %{!?with_bgp_vnc: %global with_bgp_vnc 0 }
16 %{!?with_cumulus: %global with_cumulus 0 }
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 }
26 %{!?with_pimd: %global with_pimd 1 }
27 %{!?with_vrrpd: %global with_vrrpd 1 }
28 %{!?with_rpki: %global with_rpki 0 }
29 %{!?with_rtadv: %global with_rtadv 1 }
30 %{!?with_watchfrr: %global with_watchfrr 1 }
31
32 # user and group
33 %{!?frr_user: %global frr_user frr }
34 %{!?vty_group: %global vty_group frrvty }
35
36 # path defines
37 %define configdir %{_sysconfdir}/%{name}
38 %define _sbindir /usr/lib/frr
39 %define zeb_src %{_builddir}/%{name}-%{frrversion}
40 %define zeb_rh_src %{zeb_src}/redhat
41 %define zeb_docs %{zeb_src}/doc
42 %define frr_tools %{zeb_src}/tools
43
44 # defines for configure
45 %define rundir %{_localstatedir}/run/%{name}
46
47 ############################################################################
48
49 #### Version String tweak
50 # Remove invalid characters form version string and replace with _
51 %{expand: %%global rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
52 %define frrversion @VERSION@
53
54 #### Check for systemd or init.d (upstart)
55 # Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
56 %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
57 %global initsystem systemd
58 %else
59 %if 0%{?rhel} && 0%{?rhel} < 7
60 %global initsystem upstart
61 %else
62 %{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)}
63 %endif
64 %endif
65
66 # Check for python version - use python2.7 on CentOS 6, otherwise python3
67 %if 0%{?rhel} && 0%{?rhel} < 7
68 %global use_python2 1
69 %else
70 %global use_python2 0
71 %endif
72
73 # If init system is systemd, then always enable watchfrr
74 %if "%{initsystem}" == "systemd"
75 %global with_watchfrr 1
76 %endif
77
78 #### Check for RedHat 6.x or CentOS 6.x - they are too old to support PIM.
79 #### Always disable it on these old systems unconditionally
80 #
81 # if CentOS / RedHat and version < 7, then disable PIMd (too old, won't work)
82 %if 0%{?rhel} && 0%{?rhel} < 7
83 %global with_pimd 0
84 %endif
85
86 # misc internal defines
87 %{!?frr_uid: %global frr_uid 92 }
88 %{!?frr_gid: %global frr_gid 92 }
89 %{!?vty_gid: %global vty_gid 85 }
90
91 %define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd fabricd
92
93 %if %{with_ldpd}
94 %define daemon_ldpd ldpd
95 %else
96 %define daemon_ldpd ""
97 %endif
98
99 %if %{with_pimd}
100 %define daemon_pimd pimd
101 %else
102 %define daemon_pimd ""
103 %endif
104
105 %if %{with_pbrd}
106 %define daemon_pbrd pbrd
107 %else
108 %define daemon_pbrd ""
109 %endif
110
111 %if %{with_nhrpd}
112 %define daemon_nhrpd nhrpd
113 %else
114 %define daemon_nhrpd ""
115 %endif
116
117 %if %{with_eigrpd}
118 %define daemon_eigrpd eigrpd
119 %else
120 %define daemon_eigrpd ""
121 %endif
122
123 %if %{with_babeld}
124 %define daemon_babeld babeld
125 %else
126 %define daemon_babeld ""
127 %endif
128
129 %if %{with_vrrpd}
130 %define daemon_vrrpd vrrpd
131 %else
132 %define daemon_vrrpd ""
133 %endif
134
135 %if %{with_watchfrr}
136 %define daemon_watchfrr watchfrr
137 %else
138 %define daemon_watchfrr ""
139 %endif
140
141 %if %{with_bfdd}
142 %define daemon_bfdd bfdd
143 %else
144 %define daemon_bfdd ""
145 %endif
146
147 %define all_daemons %{daemon_list} %{daemon_ldpd} %{daemon_pimd} %{daemon_nhrpd} %{daemon_eigrpd} %{daemon_babeld} %{daemon_watchfrr} %{daemon_pbrd} %{daemon_bfdd} %{daemon_vrrpd}
148
149 #release sub-revision (the two digits after the CONFDATE)
150 %{!?release_rev: %global release_rev 01 }
151
152 Summary: Routing daemon
153 Name: frr
154 Version: %{rpmversion}
155 Release: %{release_rev}%{?dist}
156 License: GPLv2+
157 Group: System Environment/Daemons
158 Source0: https://github.com/FRRouting/frr/archive/%{name}-%{frrversion}.tar.gz
159 URL: https://www.frrouting.org
160 Requires(pre): shadow-utils
161 Requires(preun): info
162 Requires(post): info
163 BuildRequires: bison >= 2.7
164 BuildRequires: c-ares-devel
165 BuildRequires: flex
166 BuildRequires: gcc
167 BuildRequires: json-c-devel
168 BuildRequires: libcap-devel
169 BuildRequires: make
170 BuildRequires: ncurses-devel
171 BuildRequires: readline-devel
172 BuildRequires: texinfo
173 BuildRequires: libyang-devel >= 0.16.74
174 %if 0%{?rhel} && 0%{?rhel} < 7
175 #python27-devel is available from ius community repo for RedHat/CentOS 6
176 BuildRequires: python27-devel
177 BuildRequires: python27-sphinx
178 %else
179 %if %{use_python2}
180 BuildRequires: python-devel >= 2.7
181 BuildRequires: python-sphinx
182 %else
183 BuildRequires: python3-devel
184 BuildRequires: python3-sphinx
185 %endif
186 %endif
187 %if 0%{?rhel} > 7
188 #platform-python-devel is needed for /usr/bin/pathfix.py
189 BuildRequires: platform-python-devel
190 %endif
191 Requires: initscripts
192 %if %{with_pam}
193 BuildRequires: pam-devel
194 %endif
195 %if %{with_rpki}
196 BuildRequires: librtr-devel >= 0.5
197 %endif
198 %if "%{initsystem}" == "systemd"
199 BuildRequires: systemd
200 BuildRequires: systemd-devel
201 Requires(post): systemd
202 Requires(preun): systemd
203 Requires(postun): systemd
204 %else
205 Requires(post): chkconfig
206 Requires(preun): chkconfig
207 # Initscripts > 5.60 is required for IPv6 support
208 Requires(pre): initscripts >= 5.60
209 %endif
210 Provides: routingdaemon = %{version}-%{release}
211 Obsoletes: gated mrt zebra frr-sysvinit
212 Conflicts: bird
213
214
215 %description
216 FRRouting is a free software that manages TCP/IP based routing
217 protocol. It takes multi-server and multi-thread approach to resolve
218 the current complexity of the Internet.
219
220 FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP
221 NHRP, Babel, PBR, EIGRP and BFD.
222
223 FRRouting is a fork of Quagga.
224
225
226 %package contrib
227 Summary: contrib tools for frr
228 Group: System Environment/Daemons
229
230 %description contrib
231 Contributed/3rd party tools which may be of use with frr.
232
233
234 %package pythontools
235 Summary: python tools for frr
236 %if 0%{?rhel} && 0%{?rhel} < 7
237 #python27 is available from ius community repo for RedHat/CentOS 6
238 BuildRequires: python27
239 Requires: python27-ipaddress
240 %else
241 %if %{use_python2}
242 BuildRequires: python2
243 Requires: python2-ipaddress
244 %else
245 BuildRequires: python3
246 %endif
247 %endif
248 Group: System Environment/Daemons
249
250 %description pythontools
251 Contributed python 2.7 tools which may be of use with frr.
252
253
254 %package devel
255 Summary: Header and object files for frr development
256 Group: System Environment/Daemons
257 Requires: %{name} = %{version}-%{release}
258
259 %description devel
260 The frr-devel package contains the header and object files neccessary for
261 developing OSPF-API and frr applications.
262
263
264 %prep
265 %setup -q -n frr-%{frrversion}
266
267
268 %build
269
270 # For standard gcc verbosity, uncomment these lines:
271 #CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
272 #CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
273
274 # For ultra gcc verbosity, uncomment these lines also:
275 #CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
276 #CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
277 #CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
278 #CFLAGS="${CFLAGS} -Wpacked -Wpadded"
279
280 %configure \
281 --sbindir=%{_sbindir} \
282 --sysconfdir=%{configdir} \
283 --localstatedir=%{rundir} \
284 --disable-static \
285 --disable-werror \
286 --enable-irdp \
287 %if %{with_multipath}
288 --enable-multipath=%{with_multipath} \
289 %endif
290 --enable-vtysh \
291 %if %{with_ospfclient}
292 --enable-ospfclient \
293 %else
294 --disable-ospfclient\
295 %endif
296 %if %{with_ospfapi}
297 --enable-ospfapi \
298 %else
299 --disable-ospfapi \
300 %endif
301 %if %{with_rtadv}
302 --enable-rtadv \
303 %else
304 --disable-rtadv \
305 %endif
306 %if %{with_ldpd}
307 --enable-ldpd \
308 %else
309 --disable-ldpd \
310 %endif
311 %if %{with_pimd}
312 --enable-pimd \
313 %else
314 --disable-pimd \
315 %endif
316 %if %{with_pbrd}
317 --enable-pbrd \
318 %else
319 --disable-pbrd \
320 %endif
321 %if %{with_nhrpd}
322 --enable-nhrpd \
323 %else
324 --disable-nhrpd \
325 %endif
326 %if %{with_eigrpd}
327 --enable-eigrpd \
328 %else
329 --disable-eigrpd \
330 %endif
331 %if %{with_babeld}
332 --enable-babeld \
333 %else
334 --disable-babeld \
335 %endif
336 %if %{with_vrrpd}
337 --enable-vrrpd \
338 %else
339 --disable-vrrpd \
340 %endif
341 %if %{with_pam}
342 --with-libpam \
343 %endif
344 %if 0%{?frr_user:1}
345 --enable-user=%{frr_user} \
346 --enable-group=%{frr_user} \
347 %endif
348 %if 0%{?vty_group:1}
349 --enable-vty-group=%{vty_group} \
350 %endif
351 %if %{with_fpm}
352 --enable-fpm \
353 %else
354 --disable-fpm \
355 %endif
356 %if %{with_watchfrr}
357 --enable-watchfrr \
358 %else
359 --disable-watchfrr \
360 %endif
361 %if %{with_cumulus}
362 --enable-cumulus \
363 %endif
364 %if %{with_bgp_vnc}
365 --enable-bgp-vnc \
366 %else
367 --disable-bgp-vnc \
368 %endif
369 --enable-isisd \
370 %if "%{initsystem}" == "systemd"
371 --enable-systemd \
372 %endif
373 %if %{with_rpki}
374 --enable-rpki \
375 %else
376 --disable-rpki \
377 %endif
378 %if %{with_bfdd}
379 --enable-bfdd \
380 %else
381 --disable-bfdd \
382 %endif
383 # end
384
385 make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
386
387 %if %{use_python2}
388 # Change frr-reload.py to use python2.7
389 sed -e '1c #!/usr/bin/python2.7' -i %{zeb_src}/tools/frr-reload.py
390 sed -e '1c #!/usr/bin/python2.7' -i %{zeb_src}/tools/generate_support_bundle.py
391 %else
392 # Change frr-reload.py to use python3
393 sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/frr-reload.py
394 sed -e '1c #!/usr/bin/python3' -i %{zeb_src}/tools/generate_support_bundle.py
395 %endif
396
397 pushd doc
398 make info
399 popd
400
401
402 %install
403 mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
404 %{buildroot}%{_localstatedir}/log/frr %{buildroot}%{_infodir}
405 make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
406
407 # Remove this file, as it is uninstalled and causes errors when building on RH9
408 rm -rf %{buildroot}/usr/share/info/dir
409
410 # Remove debian init script if it was installed
411 rm -f %{buildroot}%{_sbindir}/frr
412
413 # kill bogus libtool files
414 rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
415 rm -vf %{buildroot}%{_libdir}/*.la
416 rm -vf %{buildroot}%{_libdir}/frr/libyang_plugins/*.la
417
418 # install /etc sources
419 %if "%{initsystem}" == "systemd"
420 mkdir -p %{buildroot}%{_unitdir}
421 install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service
422 %else
423 mkdir -p %{buildroot}%{_initddir}
424 ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr
425 %endif
426
427 install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr
428 # add rpki module to daemon
429 %if %{with_rpki}
430 sed -i -e 's/^\(bgpd_options=\)\(.*\)\(".*\)/\1\2 -M rpki\3/' %{buildroot}%{_sysconfdir}/frr/daemons
431 %endif
432 install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
433 install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr
434 install -d -m750 %{buildroot}%{rundir}
435
436 %if 0%{?rhel} > 7 || 0%{?fedora} > 29
437 # avoid `ERROR: ambiguous python shebang in` errors
438 pathfix.py -pni "%{__python3} %{py3_shbang_opts}" %{buildroot}/usr/lib/frr/*.py
439 %py_byte_compile %{__python3} %{buildroot}/usr/lib/frr/*.py
440 %endif
441
442 %pre
443 # add vty_group
444 %if 0%{?vty_group:1}
445 getent group %{vty_group} >/dev/null || groupadd -r -g %{vty_gid} %{vty_group}
446 %endif
447
448 # add frr user and group
449 %if 0%{?frr_user:1}
450 # Ensure that frr_gid gets correctly allocated
451 getent group %{frr_user} >/dev/null || groupadd -g %{frr_gid} %{frr_user}
452 getent passwd %{frr_user} >/dev/null || \
453 useradd -r -u %{frr_uid} -g %{frr_user} \
454 -s /sbin/nologin -c "FRRouting suite" \
455 -d %{rundir} %{frr_user}
456
457 %if 0%{?vty_group:1}
458 usermod -a -G %{vty_group} %{frr_user}
459 %endif
460 %endif
461 exit 0
462
463
464 %post
465 # zebra_spec_add_service <service name> <port/proto> <comment>
466 # e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
467
468 zebra_spec_add_service ()
469 {
470 # Add port /etc/services entry if it isn't already there
471 if [ -f %{_sysconfdir}/services ] && \
472 ! %__sed -e 's/#.*$//' %{_sysconfdir}/services 2>/dev/null | %__grep -wq $1 ; then
473 echo "$1 $2 # $3" >> %{_sysconfdir}/services
474 fi
475 }
476
477 zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
478 zebra_spec_add_service zebra 2601/tcp "zebra vty"
479 zebra_spec_add_service staticd 2616/tcp "staticd vty"
480 zebra_spec_add_service ripd 2602/tcp "RIPd vty"
481 zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
482 zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
483 zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
484 zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
485 zebra_spec_add_service isisd 2608/tcp "ISISd vty"
486 %if %{with_ospfapi}
487 zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
488 %endif
489 %if %{with_babeld}
490 zebra_spec_add_service babeld 2609/tcp "BABELd vty"
491 %endif
492 %if %{with_nhrpd}
493 zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
494 %endif
495 %if %{with_pimd}
496 zebra_spec_add_service pimd 2611/tcp "PIMd vty"
497 %endif
498 %if %{with_pbrd}
499 zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
500 %endif
501 %if %{with_ldpd}
502 zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
503 %endif
504 %if %{with_eigrpd}
505 zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty"
506 %endif
507 %if %{with_bfdd}
508 zebra_spec_add_service bfdd 2617/tcp "BFDd vty"
509 %endif
510 zebra_spec_add_service fabricd 2618/tcp "Fabricd vty"
511 %if %{with_vrrpd}
512 zebra_spec_add_service vrrpd 2619/tcp "VRRPd vty"
513 %endif
514
515 %if "%{initsystem}" == "systemd"
516 for daemon in %all_daemons ; do
517 %systemd_post frr.service
518 done
519 %else
520 /sbin/chkconfig --add frr
521 %endif
522
523 # Fix bad path in previous config files
524 # Config files won't get replaced by default, so we do this ugly hack to fix it
525 %__sed -i 's|watchfrr_options=|#watchfrr_options=|g' %{configdir}/daemons 2> /dev/null || true
526
527 # With systemd, watchfrr is mandatory. Fix config to make sure it's enabled if
528 # we install or upgrade to a frr built with systemd
529 %if "%{initsystem}" == "systemd"
530 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
531 %endif
532
533 /sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
534
535 # Create dummy files if they don't exist so basic functions can be used.
536 if [ ! -e %{configdir}/zebra.conf ]; then
537 echo "hostname `hostname`" > %{configdir}/zebra.conf
538 %if 0%{?frr_user:1}
539 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
540 %endif
541 chmod 640 %{configdir}/zebra.conf*
542 fi
543 for daemon in %{all_daemons} ; do
544 if [ x"${daemon}" != x"" ] ; then
545 if [ ! -e %{configdir}/${daemon}.conf ]; then
546 touch %{configdir}/${daemon}.conf
547 %if 0%{?frr_user:1}
548 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
549 %endif
550 fi
551 fi
552 done
553 %if 0%{?frr_user:1}
554 chown %{frr_user}:%{frr_user} %{configdir}/daemons
555 %endif
556
557 %if %{with_watchfrr}
558 # No config for watchfrr - this is part of /etc/sysconfig/frr
559 rm -f %{configdir}/watchfrr.*
560 %endif
561
562 if [ ! -e %{configdir}/vtysh.conf ]; then
563 touch %{configdir}/vtysh.conf
564 chmod 640 %{configdir}/vtysh.conf
565 %if 0%{?frr_user:1}
566 %if 0%{?vty_group:1}
567 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
568 %endif
569 %endif
570 fi
571
572
573 %postun
574 if [ "$1" -ge 1 ]; then
575 #
576 # Upgrade from older version
577 #
578 %if "%{initsystem}" == "systemd"
579 ##
580 ## Systemd Version
581 ##
582 %systemd_postun_with_restart frr.service
583 %else
584 ##
585 ## init.d Version
586 ##
587 service frr restart >/dev/null 2>&1
588 %endif
589 :
590 fi
591
592
593 %preun
594 %if "%{initsystem}" == "systemd"
595 ##
596 ## Systemd Version
597 ##
598 if [ $1 -eq 0 ] ; then
599 %systemd_preun frr.service
600 fi
601 %else
602 ##
603 ## init.d Version
604 ##
605 if [ $1 -eq 0 ] ; then
606 service frr stop >/dev/null 2>&1
607 /sbin/chkconfig --del frr
608 fi
609 %endif
610 /sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
611
612
613 %files
614 %doc */*.sample* COPYING
615 %doc doc/mpls
616 %doc README.md
617 /usr/share/yang/*.yang
618 %if 0%{?frr_user:1}
619 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
620 %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
621 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
622 %else
623 %dir %attr(750,root,root) %{configdir}
624 %dir %attr(750,root,root) %{_localstatedir}/log/frr
625 %dir %attr(750,root,root) %{rundir}
626 %endif
627 %if 0%{?vty_group:1}
628 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
629 %endif
630 %{_infodir}/frr.info.gz
631 %{_mandir}/man*/*
632 %{_sbindir}/zebra
633 %{_sbindir}/staticd
634 %{_sbindir}/ospfd
635 %{_sbindir}/ripd
636 %{_sbindir}/bgpd
637 %exclude %{_sbindir}/ssd
638 %if %{with_watchfrr}
639 %{_sbindir}/watchfrr
640 %endif
641 %{_sbindir}/ripngd
642 %{_sbindir}/ospf6d
643 %if %{with_pimd}
644 %{_sbindir}/pimd
645 %endif
646 %if %{with_pbrd}
647 %{_sbindir}/pbrd
648 %endif
649 %if %{with_vrrpd}
650 %{_sbindir}/vrrpd
651 %endif
652 %{_sbindir}/isisd
653 %{_sbindir}/fabricd
654 %if %{with_ldpd}
655 %{_sbindir}/ldpd
656 %endif
657 %if %{with_eigrpd}
658 %{_sbindir}/eigrpd
659 %endif
660 %if %{with_nhrpd}
661 %{_sbindir}/nhrpd
662 %endif
663 %if %{with_babeld}
664 %{_sbindir}/babeld
665 %endif
666 %if %{with_bfdd}
667 %{_sbindir}/bfdd
668 %endif
669 %{_libdir}/lib*.so.0
670 %{_libdir}/lib*.so.0.*
671 %if %{with_fpm}
672 %{_libdir}/frr/modules/zebra_fpm.so
673 %endif
674 %if %{with_rpki}
675 %{_libdir}/frr/modules/bgpd_rpki.so
676 %endif
677 %{_libdir}/frr/modules/zebra_cumulus_mlag.so
678 %{_libdir}/frr/modules/zebra_irdp.so
679 %{_libdir}/frr/modules/bgpd_bmp.so
680 %{_bindir}/*
681 %config(noreplace) %{configdir}/[!v]*.conf*
682 %config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
683 %if "%{initsystem}" == "systemd"
684 %{_unitdir}/frr.service
685 %else
686 %{_initddir}/frr
687 %endif
688 %config(noreplace) %{_sysconfdir}/pam.d/frr
689 %config(noreplace) %{_sysconfdir}/logrotate.d/frr
690 %{_sbindir}/frr-reload
691 %{_sbindir}/frrcommon.sh
692 %{_sbindir}/frrinit.sh
693 %{_sbindir}/watchfrr.sh
694
695
696 %files contrib
697 %doc tools
698
699
700 %files pythontools
701 %{_sbindir}/generate_support_bundle.py
702 %{_sbindir}/frr-reload.py
703 %if 0%{?rhel} > 7 || 0%{?fedora} > 29
704 %{_sbindir}/__pycache__/*
705 %else
706 %{_sbindir}/generate_support_bundle.pyc
707 %{_sbindir}/generate_support_bundle.pyo
708 %{_sbindir}/frr-reload.py
709 %{_sbindir}/frr-reload.pyc
710 %{_sbindir}/frr-reload.pyo
711 %endif
712
713
714 %files devel
715 %{_libdir}/lib*.so
716 %dir %{_includedir}/%{name}
717 %{_includedir}/%{name}/*.h
718 %dir %{_includedir}/%{name}/ospfd
719 %{_includedir}/%{name}/ospfd/*.h
720 %if %{with_ospfapi}
721 %dir %{_includedir}/%{name}/ospfapi
722 %{_includedir}/%{name}/ospfapi/*.h
723 %endif
724 %if %{with_eigrpd}
725 %dir %{_includedir}/%{name}/eigrpd
726 %{_includedir}/%{name}/eigrpd/*.h
727 %endif
728
729
730 %changelog
731 * Fri Dec 27 2019 Donatas Abraitis <donatas.abraitis@gmail.com>
732 - Add CentOS 8 support
733
734 * Mon May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - %{version}
735 - Add BFDd support
736
737 * Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org>
738 - Fixed RPKI RPM build
739
740 * Sun Mar 4 2018 Martin Winter <mwinter@opensourcerouting.org>
741 - Add option to build with RPKI (default: disabled)
742
743 * Tue Feb 20 2018 Martin Winter <mwinter@opensourcerouting.org>
744 - Adapt to new documentation structure based on Sphinx
745
746 * Fri Oct 20 2017 Martin Winter <mwinter@opensourcerouting.org>
747 - Fix script location for watchfrr restart functions in daemon config
748 - Fix postun script to restart frr during upgrade
749
750 * Mon Jun 5 2017 Martin Winter <mwinter@opensourcerouting.org>
751 - added NHRP and EIGRP daemon
752
753 * Mon Apr 17 2017 Martin Winter <mwinter@opensourcerouting.org>
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)
756 - converted to single frr init script (not per daemon) based on debian init script
757 - created systemd service file for systemd based systems (which uses init script)
758 - Various other RPM package fixes for FRR 2.0
759
760 * Fri Jan 6 2017 Martin Winter <mwinter@opensourcerouting.org>
761 - Renamed to frr for FRRouting fork of Quagga
762
763 * Thu Feb 11 2016 Paul Jakma <paul@jakma.org>
764 - remove with_ipv6 conditionals, always build v6
765 - Fix UTF-8 char in spec changelog
766 - remove quagga.pam.stack, long deprecated.
767
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)
774 - Add conditional logic to only build tex footnotes with supported texi2html
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
777 - Only allow use of watchfrr for non-systemd systems. no need with systemd
778
779 * Fri Sep 4 2015 Paul Jakma <paul@jakma.org>
780 - buildreq updates
781 - add a default define for with_pimd
782
783 * Mon Sep 12 2005 Paul Jakma <paul@dishone.st>
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
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
794 * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
795 - daemonv6_list should contain only IPv6 daemons
796
797 * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
798 - watchfrr added
799 - on upgrade, all daemons should be condrestart'ed
800 - on removal, all daemons should be stopped
801
802 * Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
803 - Use makeinfo --html to generate quagga.html
804
805 * Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
806 - Fix with_ipv6 set to 0 build
807
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
815 * Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
816 - Update to 0.97.0
817
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
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
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)
836 - delete info file on preun, not postun to avoid deletion on upgrade. (RH)
837 - isisd added
838 - cleanup tasks carried out for every daemon
839
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
844 * Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
845 - Renamed to Quagga
846 - Sync to Quagga release 0.96
847
848 * Thu Mar 20 2003 Paul Jakma <paul@dishone.st>
849 - zebra privileges support
850
851 * Tue Mar 18 2003 Paul Jakma <paul@dishone.st>
852 - Fix mem leak in 'show thread cpu'
853 - Ralph Keller's OSPF-API
854 - Amir: Fix configure.ac for net-snmp
855
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
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
867 - ospfd OLSA fixes and new feature - 16823
868 - KAME and ifindex fixes - 16525
869 - spec file changes to allow redhat files to be in tree
870
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
875 - Added conditional to files for _bindir depending on vtysh
876
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
915 * Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
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
925 * Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
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.