Annotation of embedaddon/quagga/redhat/quagga.spec, revision 1.1.1.4.2.1
1.1 misho 1: # configure options
2: #
3: # Some can be overriden on rpmbuild commandline with:
4: # rpmbuild --define 'variable value'
5: #
6:
7: ####################### Quagga configure options #########################
8: # with-feature options
9: %{!?with_snmp: %define with_snmp 1 }
10: %{!?with_vtysh: %define with_vtysh 1 }
11: %{!?with_ospf_te: %define with_ospf_te 1 }
12: %{!?with_nssa: %define with_nssa 1 }
13: %{!?with_opaque_lsa: %define with_opaque_lsa 1 }
14: %{!?with_tcp_zebra: %define with_tcp_zebra 0 }
15: %{!?with_vtysh: %define with_vtysh 1 }
16: %{!?with_pam: %define with_pam 1 }
17: %{!?with_ipv6: %define with_ipv6 1 }
18: %{!?with_ospfclient: %define with_ospfclient 1 }
19: %{!?with_ospfapi: %define with_ospfapi 1 }
20: %{!?with_irdp: %define with_irdp 1 }
21: %{!?with_rtadv: %define with_rtadv 1 }
22: %{!?with_isisd: %define with_isisd 1 }
23: %{!?with_shared: %define with_shared 1 }
24: %{!?with_multipath: %define with_multipath 64 }
25: %{!?quagga_user: %define quagga_user quagga }
26: %{!?vty_group: %define vty_group quaggavty }
27:
28: # path defines
29: %define _sysconfdir /etc/quagga
30: %define zeb_src %{_builddir}/%{name}-%{version}
31: %define zeb_rh_src %{zeb_src}/redhat
32: %define zeb_docs %{zeb_src}/doc
33:
34: # defines for configure
35: %define _libexecdir %{_exec_prefix}/libexec/quagga
36: %define _libdir %{_exec_prefix}/%{_lib}/quagga
37: %define _includedir %{_prefix}/include
38: %define _localstatedir /var/run/quagga
39: ############################################################################
40:
41: ####################### distro specific tweaks #############################
42: # default distro. Override with rpmbuild -D "dist XXX"
43: %{expand: %%define default_dist %(rpm -q --qf 'fc%%{VERSION}' fedora-release | grep -v 'not installed')}
44: %{!?dist: %define dist %{default_dist}}
45:
46: # as distros change packages we depend on, our Requires have to change, sadly.
47: %define quagga_buildreqs texinfo tetex autoconf pam-devel
48: %define quagga_buildreqs %{quagga_buildreqs} patch libcap-devel
49:
50: # FC4 and 5 split texi2html out of tetex package.
51: %if "%dist" != "fc2" || "%dist" != "fc3"
52: %define quagga_buildreqs %{quagga_buildreqs} texi2html
53: %endif
54:
55: # pam_stack is deprecated in FC5
56: # default to pam_stack, default should be changed later.
57: %if "%dist" == "fc4" || "%dist" == "fc3"
58: %define quagga_pam_source quagga.pam.stack
59: %else
60: %define quagga_pam_source quagga.pam
61: %endif
62: ############################################################################
63:
64:
65: # misc internal defines
66: %{!?quagga_uid: %define quagga_uid 92 }
67: %{!?quagga_gid: %define quagga_gid 92 }
68: %define daemon_list zebra ripd ospfd bgpd
69:
70: %if %{with_ipv6}
71: %define daemonv6_list ripngd ospf6d
72: %else
73: %define daemonv6_list ""
74: %endif
75:
76: %if %{with_isisd}
77: %define daemon_other isisd
78: %else
79: %define daemon_other ""
80: %endif
81:
82: %define all_daemons %{daemon_list} %{daemonv6_list} %{daemon_other} watchquagga
83:
84: # allow build dir to be kept
85: %{!?keep_build: %define keep_build 0 }
86:
87: #release sub-revision (the two digits after the CONFDATE)
88: %{!?release_rev: %define release_rev 01 }
89:
90: Summary: Routing daemon
91: Name: quagga
1.1.1.4 misho 92: Version: 0.99.22
1.1.1.4.2.1! misho 93: Release: 20130722%{release_rev}
1.1 misho 94: License: GPL
95: Group: System Environment/Daemons
96: Source0: http://www.quagga.net/snapshots/cvs/%{name}-%{version}.tar.gz
97: URL: http://www.quagga.net
98: %if %{with_snmp}
99: BuildRequires: net-snmp-devel
100: Prereq: net-snmp
101: %endif
102: %if %{with_vtysh}
103: BuildRequires: readline readline-devel ncurses ncurses-devel
104: Prereq: ncurses
105: %endif
106: BuildRequires: texinfo tetex autoconf pam-devel patch libcap-devel tetex
107: # Initscripts > 5.60 is required for IPv6 support
108: Prereq: initscripts >= 5.60
109: Prereq: ncurses pam
110: Prereq: /sbin/install-info
111: Provides: routingdaemon
112: BuildRoot: %{_tmppath}/%{name}-%{version}-root
113: Obsoletes: bird gated mrt zebra
114:
115: %description
116: Quagga is a free software that manages TCP/IP based routing
117: protocol. It takes multi-server and multi-thread approach to resolve
118: the current complexity of the Internet.
119:
120: Quagga supports BGP4, BGP4+, OSPFv2, OSPFv3, RIPv1, RIPv2, and RIPng.
121:
122: Quagga is intended to be used as a Route Server and a Route Reflector. It is
123: not a toolkit, it provides full routing power under a new architecture.
124: Quagga by design has a process for each protocol.
125:
126: Quagga is a fork of GNU Zebra.
127:
128: %package contrib
129: Summary: contrib tools for quagga
130: Group: System Environment/Daemons
131:
132: %description contrib
133: Contributed/3rd party tools which may be of use with quagga.
134:
135: %package devel
136: Summary: Header and object files for quagga development
137: Group: System Environment/Daemons
138:
139: %description devel
140: The quagga-devel package contains the header and object files neccessary for
141: developing OSPF-API and quagga applications.
142:
143: %prep
144: %setup -q
145:
146: %build
147:
148: # For standard gcc verbosity, uncomment these lines:
149: #CFLAGS="%{optflags} -Wall -Wsign-compare -Wpointer-arith"
150: #CFLAGS="${CFLAGS} -Wbad-function-cast -Wwrite-strings"
151:
152: # For ultra gcc verbosity, uncomment these lines also:
153: #CFLAGS="${CFLAGS} -W -Wcast-qual -Wstrict-prototypes"
154: #CFLAGS="${CFLAGS} -Wmissing-declarations -Wmissing-noreturn"
155: #CFLAGS="${CFLAGS} -Wmissing-format-attribute -Wunreachable-code"
156: #CFLAGS="${CFLAGS} -Wpacked -Wpadded"
157:
158: %configure \
159: %if !%{with_shared}
160: --disable-shared \
161: %endif
162: %if %{with_ipv6}
163: --enable-ipv6 \
164: %endif
165: %if %{with_snmp}
166: --enable-snmp \
167: %endif
168: %if %{with_multipath}
169: --enable-multipath=%{with_multipath} \
170: %endif
171: %if %{with_tcp_zebra}
172: --enable-tcp-zebra \
173: %endif
174: %if %{with_nssa}
175: --enable-nssa \
176: %endif
177: %if %{with_opaque_lsa}
178: --enable-opaque-lsa \
179: %endif
180: %if %{with_ospf_te}
181: --enable-ospf-te \
182: %endif
183: %if %{with_vtysh}
184: --enable-vtysh \
185: %endif
186: %if %{with_ospfclient}
187: --enable-ospfclient=yes \
188: %else
189: --enable-ospfclient=no\
190: %endif
191: %if %{with_ospfapi}
192: --enable-ospfapi=yes \
193: %else
194: --enable-ospfapi=no \
195: %endif
196: %if %{with_irdp}
197: --enable-irdp=yes \
198: %else
199: --enable-irdp=no \
200: %endif
201: %if %{with_rtadv}
202: --enable-rtadv=yes \
203: %else
204: --enable-rtadv=no \
205: %endif
206: %if %{with_isisd}
207: --enable-isisd \
208: %else
209: --disable-isisd \
210: %endif
211: %if %{with_pam}
212: --with-libpam \
213: %endif
214: %if %quagga_user
215: --enable-user=%quagga_user \
216: --enable-group=%quagga_user \
217: %endif
218: %if %vty_group
219: --enable-vty-group=%vty_group \
220: %endif
221: --enable-netlink --enable-gcc-rdynamic
222:
223: make %{?_smp_mflags} MAKEINFO="makeinfo --no-split"
224:
225: pushd doc
226: texi2html -number quagga.texi
227: popd
228:
229: %install
230: rm -rf $RPM_BUILD_ROOT
231:
232: install -d $RPM_BUILD_ROOT/etc/{rc.d/init.d,sysconfig,logrotate.d,pam.d} \
233: $RPM_BUILD_ROOT/var/log/quagga $RPM_BUILD_ROOT%{_infodir}
234:
235: make install \
236: DESTDIR=$RPM_BUILD_ROOT
237:
238: # Remove this file, as it is uninstalled and causes errors when building on RH9
239: rm -rf $RPM_BUILD_ROOT/usr/share/info/dir
240:
241: # install etc sources
242: for daemon in %{all_daemons} ; do
243: if [ x"${daemon}" != x"" ] ; then
244: install %{zeb_rh_src}/${daemon}.init \
245: $RPM_BUILD_ROOT/etc/rc.d/init.d/${daemon}
246: fi
247: done
248: install -m644 %{zeb_rh_src}/%{quagga_pam_source} \
249: $RPM_BUILD_ROOT/etc/pam.d/quagga
250: install -m644 %{zeb_rh_src}/quagga.logrotate \
251: $RPM_BUILD_ROOT/etc/logrotate.d/quagga
252: install -m644 %{zeb_rh_src}/quagga.sysconfig \
253: $RPM_BUILD_ROOT/etc/sysconfig/quagga
254: install -d -m750 $RPM_BUILD_ROOT/var/run/quagga
255:
256: %pre
257: # add vty_group
258: %if %vty_group
259: if getent group %vty_group > /dev/null ; then : ; else \
260: /usr/sbin/groupadd -r %vty_group > /dev/null || : ; fi
261: %endif
262:
263: # add quagga user and group
264: %if %quagga_user
265: # Ensure that quagga_gid gets correctly allocated
266: if getent group %quagga_user >/dev/null; then : ; else \
267: /usr/sbin/groupadd -g %quagga_gid %quagga_user > /dev/null || : ; \
268: fi
269: if getent passwd %quagga_user >/dev/null ; then : ; else \
270: /usr/sbin/useradd -u %quagga_uid -g %quagga_gid \
271: -M -r -s /sbin/nologin -c "Quagga routing suite" \
272: -d %_localstatedir %quagga_user 2> /dev/null || : ; \
273: fi
274: %endif
275:
276: %post
277: # zebra_spec_add_service <service name> <port/proto> <comment>
278: # e.g. zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
279:
280: zebra_spec_add_service ()
281: {
282: # Add port /etc/services entry if it isn't already there
283: if [ -f /etc/services ] && \
284: ! %__sed -e 's/#.*$//' /etc/services | %__grep -wq $1 ; then
285: echo "$1 $2 # $3" >> /etc/services
286: fi
287: }
288:
289: zebra_spec_add_service zebrasrv 2600/tcp "zebra service"
290: zebra_spec_add_service zebra 2601/tcp "zebra vty"
291: zebra_spec_add_service ripd 2602/tcp "RIPd vty"
292: %if %{with_ipv6}
293: zebra_spec_add_service ripngd 2603/tcp "RIPngd vty"
294: %endif
295: zebra_spec_add_service ospfd 2604/tcp "OSPFd vty"
296: zebra_spec_add_service bgpd 2605/tcp "BGPd vty"
297: %if %{with_ipv6}
298: zebra_spec_add_service ospf6d 2606/tcp "OSPF6d vty"
299: %endif
300: %if %{with_ospfapi}
301: zebra_spec_add_service ospfapi 2607/tcp "OSPF-API"
302: %endif
303: %if %{with_isisd}
304: zebra_spec_add_service isisd 2608/tcp "ISISd vty"
305: %endif
306:
307: for daemon in %daemon_list ; do
308: /sbin/chkconfig --add ${daemon}
309: done
310:
311: /sbin/install-info %{_infodir}/quagga.info.gz %{_infodir}/dir
312:
313: # Create dummy files if they don't exist so basic functions can be used.
314: if [ ! -e %{_sysconfdir}/zebra.conf ]; then
315: echo "hostname `hostname`" > %{_sysconfdir}/zebra.conf
316: %if %{quagga_user}
317: chown %quagga_user:%quagga_user %{_sysconfdir}/zebra.conf
318: %endif
319: chmod 640 %{_sysconfdir}/zebra.conf
320: fi
321: if [ ! -e %{_sysconfdir}/vtysh.conf ]; then
322: touch %{_sysconfdir}/vtysh.conf
323: chmod 640 %{_sysconfdir}/vtysh.conf
324: fi
325:
326: %postun
327: if [ "$1" -ge 1 ]; then
328: # Find out which daemons need to be restarted.
329: for daemon in %all_daemons ; do
330: if [ -f /var/lock/subsys/$daemon ]; then
331: eval restart_$daemon=yes
332: else
333: eval restart_$daemon=no
334: fi
335: done
336: # Rename restart flags for daemons handled specially.
337: running_zebra="$restart_zebra"
338: restart_zebra=no
339: running_watchquagga="$restart_watchquagga"
340: restart_watchquagga=no
341: # Stop watchquagga first.
342: [ "$running_watchquagga" = yes ] && \
343: /etc/rc.d/init.d/watchquagga stop >/dev/null 2>&1
344: # Stop all daemons other than zebra and watchquagga.
345: for daemon in %all_daemons ; do
346: eval restart=\$restart_${daemon}
347: [ "$restart" = yes ] && \
348: /etc/rc.d/init.d/$daemon stop >/dev/null 2>&1
349: done
350: # Restart zebra.
351: [ "$running_zebra" = yes ] && \
352: /etc/rc.d/init.d/zebra restart >/dev/null 2>&1
353: # Start all daemons other than zebra and watchquagga.
354: for daemon in %all_daemons ; do
355: eval restart=\$restart_${daemon}
356: [ "$restart" = yes ] && \
357: /etc/rc.d/init.d/$daemon start >/dev/null 2>&1
358: done
359: # Start watchquagga last.
360: # Avoid postun scriptlet error if watchquagga is not running.
361: [ "$running_watchquagga" = yes ] && \
362: /etc/rc.d/init.d/watchquagga start >/dev/null 2>&1 || :
363: fi
364: /sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
365:
366: %preun
367: if [ "$1" = "0" ]; then
368: for daemon in %all_daemons ; do
369: /etc/rc.d/init.d/${daemon} stop >/dev/null 2>&1
370: /sbin/chkconfig --del ${daemon}
371: done
372: /sbin/install-info --delete %{_infodir}/quagga.info.gz %{_infodir}/dir
373: fi
374:
375: %clean
376: %if !%{keep_build}
377: rm -rf $RPM_BUILD_ROOT
378: %endif
379:
380: %files
381: %defattr(-,root,root)
382: %doc */*.sample* AUTHORS COPYING
383: %doc doc/quagga.html
384: %doc doc/mpls
385: %doc ChangeLog INSTALL NEWS README REPORTING-BUGS SERVICES TODO
386: %if %{quagga_user}
387: %dir %attr(751,%quagga_user,%quagga_user) %{_sysconfdir}
388: %dir %attr(750,%quagga_user,%quagga_user) /var/log/quagga
389: %dir %attr(751,%quagga_user,%quagga_user) /var/run/quagga
390: %else
391: %dir %attr(750,root,root) %{_sysconfdir}
392: %dir %attr(750,root,root) /var/log/quagga
393: %dir %attr(755,root,root) /usr/share/info
394: %dir %attr(750,root,root) /var/run/quagga
395: %endif
396: %if %{vty_group}
397: %attr(750,%quagga_user,%vty_group) %{_sysconfdir}/vtysh.conf.sample
398: %endif
399: %{_infodir}/*info*
400: %{_mandir}/man*/*
401: %{_sbindir}/zebra
402: %{_sbindir}/ospfd
403: %{_sbindir}/ripd
404: %{_sbindir}/bgpd
405: %{_sbindir}/watchquagga
406: %if %{with_ipv6}
407: %{_sbindir}/ripngd
408: %{_sbindir}/ospf6d
409: %endif
410: %if %{with_isisd}
411: %{_sbindir}/isisd
412: %endif
413: %dir %attr(755,root,root) %{_libdir}
414: %if %{with_shared}
415: %dir %{_libdir}
416: %{_libdir}/lib*.so
417: %{_libdir}/lib*.so.*
418: %endif
419: %if %{with_vtysh}
420: %{_bindir}/*
421: %endif
422: %config /etc/quagga/[!v]*
423: %config /etc/rc.d/init.d/*
424: %config(noreplace) /etc/sysconfig/quagga
425: %config(noreplace) /etc/pam.d/quagga
426: %config(noreplace) %attr(640,root,root) /etc/logrotate.d/*
427:
428: %files contrib
429: %defattr(-,root,root)
430: %doc tools
431:
432: %files devel
433: %defattr(-,root,root)
434: %if %{with_ospfclient}
435: %{_sbindir}/ospfclient
436: %endif
437: %{_libdir}/*.a
438: %{_libdir}/*.la
439: %dir %attr(755,root,root) %{_includedir}/%{name}
440: %{_includedir}/%name/*.h
441: %dir %attr(755,root,root) %{_includedir}/%{name}/ospfd
442: %{_includedir}/%name/ospfd/*.h
443: %if %{with_ospfapi}
444: %dir %attr(755,root,root) %{_includedir}/%{name}/ospfapi
445: %{_includedir}/%name/ospfapi/*.h
446: %endif
447:
448: %changelog
449: * Thu Sep 12 2005 Paul Jakma <paul@dishone.st>
450: - Steal some changes from Fedora spec file:
451: - Add with_rtadv variable
452: - Test for groups/users with getent before group/user adding
453: - Readline need not be an explicit prerequisite
454: - install-info delete should be postun, not preun
455:
456: * Wed Jan 12 2005 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
457: - on package upgrade, implement careful, phased restart logic
458: - use gcc -rdynamic flag when linking for better backtraces
459:
460: * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
461: - daemonv6_list should contain only IPv6 daemons
462:
463: * Wed Dec 22 2004 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
464: - watchquagga added
465: - on upgrade, all daemons should be condrestart'ed
466: - on removal, all daemons should be stopped
467:
468: * Mon Nov 08 2004 Paul Jakma <paul@dishone.st>
469: - Use makeinfo --html to generate quagga.html
470:
471: * Sun Nov 07 2004 Paul Jakma <paul@dishone.st>
472: - Fix with_ipv6 set to 0 build
473:
474: * Sat Oct 23 2004 Paul Jakma <paul@dishone.st>
475: - Update to 0.97.2
476:
477: * Sat Oct 23 2004 Andrew J. Schorr <aschorr@telemetry-investments.com>
478: - Make directories be owned by the packages concerned
479: - Update logrotate scripts to use correct path to killall and use pid files
480:
481: * Fri Oct 08 2004 Paul Jakma <paul@dishone.st>
482: - Update to 0.97.0
483:
484: * Wed Sep 15 2004 Paul Jakma <paul@dishone.st>
485: - build snmp support by default
486: - build irdp support
487: - build with shared libs
488: - devel subpackage for archives and headers
489:
490: * Thu Jan 08 2004 Paul Jakma <paul@dishone.st>
491: - updated sysconfig files to specify local dir
492: - added ospf_dump.c crash quick fix patch
493: - added ospfd persistent interface configuration patch
494:
495: * Tue Dec 30 2003 Paul Jakma <paul@dishone.st>
496: - sync to CVS
497: - integrate RH sysconfig patch to specify daemon options (RH)
498: - default to have vty listen only to 127.1 (RH)
499: - add user with fixed UID/GID (RH)
500: - create user with shell /sbin/nologin rather than /bin/false (RH)
501: - stop daemons on uninstall (RH)
502: - delete info file on %preun, not %postun to avoid deletion on upgrade. (RH)
503: - isisd added
504: - cleanup tasks carried out for every daemon
505:
506: * Sun Nov 2 2003 Paul Jakma <paul@dishone.st>
507: - Fix -devel package to include all files
508: - Sync to 0.96.4
509:
510: * Tue Aug 12 2003 Paul Jakma <paul@dishone.st>
511: - Renamed to Quagga
512: - Sync to Quagga release 0.96
513:
514: * Tue Mar 20 2003 Paul Jakma <paul@dishone.st>
515: - zebra privileges support
516:
517: * Mon Mar 18 2003 Paul Jakma <paul@dishone.st>
518: - Fix mem leak in 'show thread cpu'
519: - Ralph Keller's OSPF-API
520: - Amir: Fix configure.ac for net-snmp
521:
522: * Sat Mar 1 2003 Paul Jakma <paul@dishone.st>
523: - ospfd IOS prefix to interface matching for 'network' statement
524: - temporary fix for PtP and IPv6
525: - sync to zebra.org CVS
526:
527: * Mon Jan 20 2003 Paul Jakma <paul@dishone.st>
528: - update to latest cvs
529: - Yon's "show thread cpu" patch - 17217
530: - walk up tree - 17218
531: - ospfd NSSA fixes - 16681
532: - ospfd nsm fixes - 16824
533: - ospfd OLSA fixes and new feature - 16823
534: - KAME and ifindex fixes - 16525
535: - spec file changes to allow redhat files to be in tree
536:
537: * Sat Dec 28 2002 Alexander Hoogerhuis <alexh@ihatent.com>
538: - Added conditionals for building with(out) IPv6, vtysh, RIP, BGP
539: - Fixed up some build requirements (patch)
540: - Added conditional build requirements for vtysh / snmp
541: - Added conditional to %files for %_bindir depending on vtysh
542:
543: * Mon Nov 11 2002 Paul Jakma <paulj@alphyra.ie>
544: - update to latest CVS
545: - add Greg Troxel's md5 buffer copy/dup fix
546: - add RIPv1 fix
547: - add Frank's multicast flag fix
548:
549: * Wed Oct 09 2002 Paul Jakma <paulj@alphyra.ie>
550: - update to latest CVS
551: - timestamped crypt_seqnum patch
552: - oi->on_write_q fix
553:
554: * Mon Sep 30 2002 Paul Jakma <paulj@alphyra.ie>
555: - update to latest CVS
556: - add vtysh 'write-config (integrated|daemon)' patch
557: - always 'make rebuild' in vtysh/ to catch new commands
558:
559: * Fri Sep 13 2002 Paul Jakma <paulj@alphyra.ie>
560: - update to 0.93b
561:
562: * Wed Sep 11 2002 Paul Jakma <paulj@alphyra.ie>
563: - update to latest CVS
564: - add "/sbin/ip route flush proto zebra" to zebra RH init on startup
565:
566: * Sat Aug 24 2002 Paul Jakma <paulj@alphyra.ie>
567: - update to current CVS
568: - add OSPF point to multipoint patch
569: - add OSPF bugfixes
570: - add BGP hash optimisation patch
571:
572: * Fri Jun 14 2002 Paul Jakma <paulj@alphyra.ie>
573: - update to 0.93-pre1 / CVS
574: - add link state detection support
575: - add generic PtP and RFC3021 support
576: - various bug fixes
577:
578: * Thu Aug 09 2001 Elliot Lee <sopwith@redhat.com> 0.91a-6
579: - Fix bug #51336
580:
581: * Wed Aug 1 2001 Trond Eivind Glomsrød <teg@redhat.com> 0.91a-5
582: - Use generic initscript strings instead of initscript specific
583: ( "Starting foo: " -> "Starting $prog:" )
584:
585: * Fri Jul 27 2001 Elliot Lee <sopwith@redhat.com> 0.91a-4
586: - Bump the release when rebuilding into the dist.
587:
588: * Tue Feb 6 2001 Tim Powers <timp@redhat.com>
589: - built for Powertools
590:
591: * Sun Feb 4 2001 Pekka Savola <pekkas@netcore.fi>
592: - Hacked up from PLD Linux 0.90-1, Mandrake 0.90-1mdk and one from zebra.org.
593: - Update to 0.91a
594: - Very heavy modifications to init.d/*, .spec, pam, i18n, logrotate, etc.
595: - Should be quite Red Hat'isque now.
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>