]> git.proxmox.com Git - mirror_frr.git/blob - redhat/frr.spec.in
*: 6.0.3 release
[mirror_frr.git] / redhat / frr.spec.in
1 # configure options
2 #
3 # Some can be overriden 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_rpki: %global with_rpki 0 }
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 }
34
35 # path defines
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
42
43 # defines for configure
44 %define rundir %{_localstatedir}/run/%{name}
45
46 # define for sphinx-build binary
47 %if 0%{?rhel} && 0%{?rhel} < 7
48 %define sphinx sphinx-build2.7
49 %else
50 %define sphinx sphinx-build
51 %endif
52 ############################################################################
53
54 #### Version String tweak
55 # Remove invalid characters form version string and replace with _
56 %{expand: %%global rpmversion %(echo '@VERSION@' | tr [:blank:]- _ )}
57 %define frrversion @VERSION@
58
59 #### Check for systemd or init.d (upstart)
60 # Check for init.d (upstart) as used in CentOS 6 or systemd (ie CentOS 7)
61 %if 0%{?fedora} || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1210
62 %global initsystem systemd
63 %else
64 %if 0%{?rhel} && 0%{?rhel} < 7
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
70
71 # If init system is systemd, then always enable watchfrr
72 %if "%{initsystem}" == "systemd"
73 %global with_watchfrr 1
74 %endif
75
76 #### Check for RedHat 6.x or CentOS 6.x - they are too old to support PIM.
77 #### Always disable it on these old systems unconditionally
78 #
79 # if CentOS / RedHat and version < 7, then disable PIMd (too old, won't work)
80 %if 0%{?rhel} && 0%{?rhel} < 7
81 %global with_pimd 0
82 %endif
83
84 # misc internal defines
85 %{!?frr_uid: %global frr_uid 92 }
86 %{!?frr_gid: %global frr_gid 92 }
87 %{!?vty_gid: %global vty_gid 85 }
88
89 %define daemon_list zebra ripd ospfd bgpd isisd ripngd ospf6d pbrd staticd bfdd
90
91 %if %{with_ldpd}
92 %define daemon_ldpd ldpd
93 %else
94 %define daemon_ldpd ""
95 %endif
96
97 %if %{with_pimd}
98 %define daemon_pimd pimd
99 %else
100 %define daemon_pimd ""
101 %endif
102
103 %if %{with_pbrd}
104 %define daemon_pbrd pbrd
105 %else
106 %define daemon_pbrd ""
107 %endif
108
109 %if %{with_nhrpd}
110 %define daemon_nhrpd nhrpd
111 %else
112 %define daemon_nhrpd ""
113 %endif
114
115 %if %{with_eigrpd}
116 %define daemon_eigrpd eigrpd
117 %else
118 %define daemon_eigrpd ""
119 %endif
120
121 %if %{with_babeld}
122 %define daemon_babeld babeld
123 %else
124 %define daemon_babeld ""
125 %endif
126
127 %if %{with_watchfrr}
128 %define daemon_watchfrr watchfrr
129 %else
130 %define daemon_watchfrr ""
131 %endif
132
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}
140
141 #release sub-revision (the two digits after the CONFDATE)
142 %{!?release_rev: %global release_rev 01 }
143
144 Summary: Routing daemon
145 Name: frr
146 Version: %{rpmversion}
147 Release: %{release_rev}%{?dist}
148 License: GPLv2+
149 Group: System Environment/Daemons
150 Source0: https://github.com/FRRouting/frr/archive/%{name}-%{frrversion}.tar.gz
151 URL: https://www.frrouting.org
152 Requires(pre): shadow-utils
153 Requires(preun): info
154 Requires(post): info
155 BuildRequires: bison >= 2.7
156 BuildRequires: c-ares-devel
157 BuildRequires: flex
158 BuildRequires: gcc
159 BuildRequires: json-c-devel
160 BuildRequires: libcap-devel
161 BuildRequires: make
162 BuildRequires: ncurses-devel
163 BuildRequires: readline-devel
164 BuildRequires: texinfo
165 %if 0%{?rhel} && 0%{?rhel} < 7
166 #python27-devel is available from ius community repo for RedHat/CentOS 6
167 BuildRequires: python27-devel
168 BuildRequires: python27-sphinx
169 %else
170 BuildRequires: python-devel >= 2.7
171 BuildRequires: python-sphinx
172 %endif
173 %if %{with_pam}
174 BuildRequires: pam-devel
175 %endif
176 %if %{with_rpki}
177 BuildRequires: librtr-devel >= 0.5
178 %endif
179 %if "%{initsystem}" == "systemd"
180 BuildRequires: systemd
181 BuildRequires: systemd-devel
182 Requires(post): systemd
183 Requires(preun): systemd
184 Requires(postun): systemd
185 %else
186 Requires(post): chkconfig
187 Requires(preun): chkconfig
188 # Initscripts > 5.60 is required for IPv6 support
189 Requires(pre): initscripts >= 5.60
190 Requires: initscripts
191 %endif
192 Provides: routingdaemon = %{version}-%{release}
193 Obsoletes: gated mrt zebra frr-sysvinit
194 Conflicts: bird
195
196
197 %description
198 FRRouting is a free software that manages TCP/IP based routing
199 protocol. It takes multi-server and multi-thread approach to resolve
200 the current complexity of the Internet.
201
202 FRRouting supports BGP4, OSPFv2, OSPFv3, ISIS, RIP, RIPng, PIM, LDP
203 NHRP, Babel, PBR, EIGRP and BFD.
204
205 FRRouting is a fork of Quagga.
206
207
208 %package contrib
209 Summary: contrib tools for frr
210 Group: System Environment/Daemons
211
212 %description contrib
213 Contributed/3rd party tools which may be of use with frr.
214
215
216 %package pythontools
217 Summary: python tools for frr
218 BuildRequires: python
219 Requires: python-ipaddress
220 Group: System Environment/Daemons
221
222 %description pythontools
223 Contributed python 2.7 tools which may be of use with frr.
224
225
226 %package devel
227 Summary: Header and object files for frr development
228 Group: System Environment/Daemons
229 Requires: %{name} = %{version}-%{release}
230
231 %description devel
232 The frr-devel package contains the header and object files neccessary for
233 developing OSPF-API and frr applications.
234
235
236 %prep
237 %setup -q -n frr-%{frrversion}
238
239
240 %build
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
252 %configure \
253 --sbindir=%{_sbindir} \
254 --sysconfdir=%{configdir} \
255 --localstatedir=%{rundir} \
256 --disable-static \
257 --disable-werror \
258 --enable-irdp \
259 %if %{with_multipath}
260 --enable-multipath=%{with_multipath} \
261 %endif
262 --enable-vtysh \
263 %if %{with_ospfclient}
264 --enable-ospfclient \
265 %else
266 --disable-ospfclient\
267 %endif
268 %if %{with_ospfapi}
269 --enable-ospfapi \
270 %else
271 --disable-ospfapi \
272 %endif
273 %if %{with_rtadv}
274 --enable-rtadv \
275 %else
276 --disable-rtadv \
277 %endif
278 %if %{with_ldpd}
279 --enable-ldpd \
280 %else
281 --disable-ldpd \
282 %endif
283 %if %{with_pimd}
284 --enable-pimd \
285 %else
286 --disable-pimd \
287 %endif
288 %if %{with_pbrd}
289 --enable-pbrd \
290 %else
291 --disable-pbrd \
292 %endif
293 %if %{with_nhrpd}
294 --enable-nhrpd \
295 %else
296 --disable-nhrpd \
297 %endif
298 %if %{with_eigrpd}
299 --enable-eigrpd \
300 %else
301 --disable-eigrpd \
302 %endif
303 %if %{with_babeld}
304 --enable-babeld \
305 %else
306 --disable-babeld \
307 %endif
308 %if %{with_pam}
309 --with-libpam \
310 %endif
311 %if 0%{?frr_user:1}
312 --enable-user=%{frr_user} \
313 --enable-group=%{frr_user} \
314 %endif
315 %if 0%{?vty_group:1}
316 --enable-vty-group=%{vty_group} \
317 %endif
318 %if %{with_fpm}
319 --enable-fpm \
320 %else
321 --disable-fpm \
322 %endif
323 %if %{with_watchfrr}
324 --enable-watchfrr \
325 %else
326 --disable-watchfrr \
327 %endif
328 %if %{with_cumulus}
329 --enable-cumulus \
330 %endif
331 %if %{with_bgp_vnc}
332 --enable-bgp-vnc \
333 %else
334 --disable-bgp-vnc \
335 %endif
336 --enable-isisd \
337 %if "%{initsystem}" == "systemd"
338 --enable-systemd \
339 %endif
340 %if %{with_rpki}
341 --enable-rpki \
342 %else
343 --disable-rpki \
344 %endif
345 %if %{with_bfdd}
346 --enable-bfdd \
347 %else
348 --disable-bfdd \
349 %endif
350 SPHINXBUILD=%{sphinx}
351
352 make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
353
354 pushd doc
355 make info
356 popd
357
358
359 %install
360 mkdir -p %{buildroot}%{_sysconfdir}/{frr,sysconfig,logrotate.d,pam.d,default} \
361 %{buildroot}%{_localstatedir}/log/frr %{buildroot}%{_infodir}
362 make DESTDIR=%{buildroot} INSTALL="install -p" CP="cp -p" install
363
364 # Remove this file, as it is uninstalled and causes errors when building on RH9
365 rm -rf %{buildroot}/usr/share/info/dir
366
367 # Remove debian init script if it was installed
368 rm -f %{buildroot}%{_sbindir}/frr
369
370 # kill bogus libtool files
371 rm -vf %{buildroot}%{_libdir}/frr/modules/*.la
372 rm -vf %{buildroot}%{_libdir}/*.la
373
374 # install /etc sources
375 %if "%{initsystem}" == "systemd"
376 mkdir -p %{buildroot}%{_unitdir}
377 install -m644 %{zeb_src}/tools/frr.service %{buildroot}%{_unitdir}/frr.service
378 %else
379 mkdir -p %{buildroot}%{_initddir}
380 ln -s %{_sbindir}/frrinit.sh %{buildroot}%{_initddir}/frr
381 %endif
382
383 install %{zeb_src}/tools/etc/frr/daemons %{buildroot}%{_sysconfdir}/frr
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
388 install -m644 %{zeb_rh_src}/frr.pam %{buildroot}%{_sysconfdir}/pam.d/frr
389 install -m644 %{zeb_rh_src}/frr.logrotate %{buildroot}%{_sysconfdir}/logrotate.d/frr
390 install -d -m750 %{buildroot}%{rundir}
391
392
393 %pre
394 # add vty_group
395 %if 0%{?vty_group:1}
396 getent group %{vty_group} >/dev/null || groupadd -r -g %{vty_gid} %{vty_group}
397 %endif
398
399 # add frr user and group
400 %if 0%{?frr_user:1}
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
412 exit 0
413
414
415 %post
416 # zebra_spec_add_service <service name> <port/proto> <comment>
417 # e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
418
419 zebra_spec_add_service ()
420 {
421 # Add port /etc/services entry if it isn't already there
422 if [ -f %{_sysconfdir}/services ] && \
423 ! %__sed -e 's/#.*$//' %{_sysconfdir}/services | %__grep -wq $1 ; then
424 echo "$1 $2 # $3" >> %{_sysconfdir}/services
425 fi
426 }
427
428 zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
429 zebra_spec_add_service zebra 2601/tcp "zebra vty"
430 zebra_spec_add_service staticd 2616/tcp "staticd vty"
431 zebra_spec_add_service ripd 2602/tcp "RIPd vty"
432 zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
433 zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
434 zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
435 zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
436 zebra_spec_add_service isisd 2608/tcp "ISISd vty"
437 %if %{with_ospfapi}
438 zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
439 %endif
440 %if %{with_babeld}
441 zebra_spec_add_service babeld 2609/tcp "BABELd vty"
442 %endif
443 %if %{with_nhrpd}
444 zebra_spec_add_service nhrpd 2610/tcp "NHRPd vty"
445 %endif
446 %if %{with_pimd}
447 zebra_spec_add_service pimd 2611/tcp "PIMd vty"
448 %endif
449 %if %{with_pbrd}
450 zebra_spec_add_service pbrd 2615/tcp "PBRd vty"
451 %endif
452 %if %{with_ldpd}
453 zebra_spec_add_service ldpd 2612/tcp "LDPd vty"
454 %endif
455 %if %{with_eigrpd}
456 zebra_spec_add_service eigrpd 2613/tcp "EIGRPd vty"
457 %endif
458 %if %{with_bfdd}
459 zebra_spec_add_service bfdd 2617/tcp "BFDd vty"
460 %endif
461
462 %if "%{initsystem}" == "systemd"
463 for daemon in %all_daemons ; do
464 %systemd_post frr.service
465 done
466 %else
467 /sbin/chkconfig --add frr
468 %endif
469
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
472 %__sed -i 's|watchfrr_options=|#watchfrr_options=|g' %{configdir}/daemons 2> /dev/null || true
473
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"
477 %__sed -i 's|watchfrr_enable=no|watchfrr_enable=yes|g' %{configdir}/daemons 2> /dev/null || true
478 %endif
479
480 /sbin/install-info %{_infodir}/frr.info.gz %{_infodir}/dir
481
482 # Create dummy files if they don't exist so basic functions can be used.
483 if [ ! -e %{configdir}/zebra.conf ]; then
484 echo "hostname `hostname`" > %{configdir}/zebra.conf
485 %if 0%{?frr_user:1}
486 chown %{frr_user}:%{frr_user} %{configdir}/zebra.conf*
487 %endif
488 chmod 640 %{configdir}/zebra.conf*
489 fi
490 for daemon in %{all_daemons} ; do
491 if [ x"${daemon}" != x"" ] ; then
492 if [ ! -e %{configdir}/${daemon}.conf ]; then
493 touch %{configdir}/${daemon}.conf
494 %if 0%{?frr_user:1}
495 chown %{frr_user}:%{frr_user} %{configdir}/${daemon}.conf*
496 %endif
497 fi
498 fi
499 done
500 %if 0%{?frr_user:1}
501 chown %{frr_user}:%{frr_user} %{configdir}/daemons
502 %endif
503
504 %if %{with_watchfrr}
505 # No config for watchfrr - this is part of /etc/sysconfig/frr
506 rm -f %{configdir}/watchfrr.*
507 %endif
508
509 if [ ! -e %{configdir}/vtysh.conf ]; then
510 touch %{configdir}/vtysh.conf
511 chmod 640 %{configdir}/vtysh.conf
512 %if 0%{?frr_user:1}
513 %if 0%{?vty_group:1}
514 chown %{frr_user}:%{vty_group} %{configdir}/vtysh.conf*
515 %endif
516 %endif
517 fi
518
519
520 %postun
521 if [ "$1" -ge 1 ]; then
522 #
523 # Upgrade from older version
524 #
525 %if "%{initsystem}" == "systemd"
526 ##
527 ## Systemd Version
528 ##
529 %systemd_postun_with_restart frr.service
530 %else
531 ##
532 ## init.d Version
533 ##
534 service frr restart >/dev/null 2>&1
535 %endif
536 :
537 fi
538
539
540 %preun
541 %if "%{initsystem}" == "systemd"
542 ##
543 ## Systemd Version
544 ##
545 if [ $1 -eq 0 ] ; then
546 %systemd_preun frr.service
547 fi
548 %else
549 ##
550 ## init.d Version
551 ##
552 if [ $1 -eq 0 ] ; then
553 service frr stop >/dev/null 2>&1
554 /sbin/chkconfig --del frr
555 fi
556 %endif
557 /sbin/install-info --delete %{_infodir}/frr.info.gz %{_infodir}/dir
558
559
560 %files
561 %doc */*.sample* COPYING
562 %doc doc/mpls
563 %doc README.md
564 %if 0%{?frr_user:1}
565 %dir %attr(751,%{frr_user},%{frr_user}) %{configdir}
566 %dir %attr(750,%{frr_user},%{frr_user}) %{_localstatedir}/log/frr
567 %dir %attr(751,%{frr_user},%{frr_user}) %{rundir}
568 %else
569 %dir %attr(750,root,root) %{configdir}
570 %dir %attr(750,root,root) %{_localstatedir}/log/frr
571 %dir %attr(750,root,root) %{rundir}
572 %endif
573 %if 0%{?vty_group:1}
574 %attr(750,%{frr_user},%{vty_group}) %{configdir}/vtysh.conf.sample
575 %endif
576 %{_infodir}/frr.info.gz
577 %{_mandir}/man*/*
578 %{_sbindir}/zebra
579 %{_sbindir}/staticd
580 %{_sbindir}/ospfd
581 %{_sbindir}/ripd
582 %{_sbindir}/bgpd
583 %exclude %{_sbindir}/ssd
584 %if %{with_watchfrr}
585 %{_sbindir}/watchfrr
586 %endif
587 %{_sbindir}/ripngd
588 %{_sbindir}/ospf6d
589 %if %{with_pimd}
590 %{_sbindir}/pimd
591 %endif
592 %if %{with_pbrd}
593 %{_sbindir}/pbrd
594 %endif
595 %{_sbindir}/isisd
596 %if %{with_ldpd}
597 %{_sbindir}/ldpd
598 %endif
599 %if %{with_eigrpd}
600 %{_sbindir}/eigrpd
601 %endif
602 %if %{with_nhrpd}
603 %{_sbindir}/nhrpd
604 %endif
605 %if %{with_babeld}
606 %{_sbindir}/babeld
607 %endif
608 %if %{with_bfdd}
609 %{_sbindir}/bfdd
610 %endif
611 %{_libdir}/lib*.so.0
612 %{_libdir}/lib*.so.0.*
613 %if %{with_fpm}
614 %{_libdir}/frr/modules/zebra_fpm.so
615 %endif
616 %if %{with_rpki}
617 %{_libdir}/frr/modules/bgpd_rpki.so
618 %endif
619 %{_libdir}/frr/modules/zebra_irdp.so
620 %{_bindir}/*
621 %config(noreplace) %{configdir}/[!v]*.conf*
622 %config(noreplace) %attr(750,%{frr_user},%{frr_user}) %{configdir}/daemons
623 %if "%{initsystem}" == "systemd"
624 %{_unitdir}/frr.service
625 %else
626 %{_initddir}/frr
627 %endif
628 %config(noreplace) %{_sysconfdir}/pam.d/frr
629 %config(noreplace) %{_sysconfdir}/logrotate.d/frr
630 %{_sbindir}/frr-reload
631 %{_sbindir}/frrcommon.sh
632 %{_sbindir}/frrinit.sh
633 %{_sbindir}/watchfrr.sh
634
635
636 %files contrib
637 %doc tools
638
639
640 %files pythontools
641 %{_sbindir}/frr-reload.py
642 %{_sbindir}/frr-reload.pyc
643 %{_sbindir}/frr-reload.pyo
644
645
646 %files devel
647 %{_libdir}/lib*.so
648 %dir %{_includedir}/%{name}
649 %{_includedir}/%{name}/*.h
650 %dir %{_includedir}/%{name}/ospfd
651 %{_includedir}/%{name}/ospfd/*.h
652 %if %{with_ospfapi}
653 %dir %{_includedir}/%{name}/ospfapi
654 %{_includedir}/%{name}/ospfapi/*.h
655 %endif
656 %if %{with_eigrpd}
657 %dir %{_includedir}/%{name}/eigrpd
658 %{_includedir}/%{name}/eigrpd/*.h
659 %endif
660
661
662 %changelog
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
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
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
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
721 * Sun May 28 2018 Rafael Zalamena <rzalamena@opensourcerouting.org> - %{version}
722 - Add BFDd support
723
724 * Sun May 20 2018 Martin Winter <mwinter@opensourcerouting.org> - 4.0.1
725 - Fixed RPKI RPM build
726
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
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.