mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-22 09:41:54 +00:00
The BIRD project aims to develop a fully functional dynamic IP routing daemon.
https://bird.network.cz
d503204aa0
The function lfjour_cleanup_hook() was scheduled each time any of the journal recipients reached end of a block of journal items or read all of journal items. Because lfjour_cleanup_hook() can clean only journal items every recipient has processed, it was often called uselessly. This commit restricts most of the unuseful scheduling. Only some recipients are given a token alowing them to try to schedule the cleanup hook. When a recipient wants to schedule the cleanup hook, it checks whether it has a token. If yes, it decrements number of tokens the journal has given (issued_tokens) and discards its own token. If issued_tokens reaches zero, the recipient is allowed to schedule the cleanup hook. There is a maximum number of tokens a journal can give to its recipients (max_tokens). A new recipient is given a token in its init, unless the maximum number of tokens is reached. The rest of tokens is given to customers in lfjour_cleanup_hook(). In the cleanup hook, the issued_tokens number is increased in order to avoid calling the hook before it finishes. Then, tokens are given to the slowest recipients (but never to more than max_token recipients). Before leaving lfjour_cleanup_hook(), the issued_tokens number is decreased back. If no other tokens are given, we have to make sure the lfjour_cleanup_hook will be called again. If every item in journal was read by every recipient, tokens are given to random recipients. If all recipients with tokens managed to finish until now, we give the token to the first unfinished customer we find, or we just call the hook again. |
||
---|---|---|
client | ||
conf | ||
distro | ||
doc | ||
filter | ||
lib | ||
misc | ||
nest | ||
proto | ||
sysdep | ||
test | ||
tools | ||
.dir-locals.el | ||
.gitignore | ||
.gitlab-ci.yml | ||
.mailmap | ||
aclocal.m4 | ||
bird-gdb.py | ||
bird.conf | ||
configure.ac | ||
CONTRIBUTING.md | ||
INSTALL | ||
Makefile.in | ||
NEWS | ||
README |
BIRD Internet Routing Daemon Home page http://bird.network.cz/ Mailing list bird-users@network.cz (c) 1998--2008 Martin Mares <mj@ucw.cz> (c) 1998--2000 Pavel Machek <pavel@ucw.cz> (c) 1998--2008 Ondrej Filip <feela@network.cz> (c) 2009--2019 CZ.NIC z.s.p.o. ================================================================================ The BIRD project aims to develop a dynamic IP routing daemon with full support of all modern routing protocols, easy to use configuration interface and powerful route filtering language, primarily targeted on (but not limited to) Linux and other UNIX-like systems and distributed under the GNU General Public License. What do we support ================== o Both IPv4 and IPv6 o Multiple routing tables o Border Gateway Protocol (BGPv4) o Routing Information Protocol (RIPv2, RIPng) o Open Shortest Path First protocol (OSPFv2, OSPFv3) o Babel Routing Protocol (Babel) o Bidirectional Forwarding Detection (BFD) o IPv6 router advertisements o Static routes o Inter-table protocol o Command-line interface allowing on-line control and inspection of status of the daemon o Soft reconfiguration, no need to use complex online commands to change the configuration, just edit the configuration file and notify BIRD to re-read it and it will smoothly switch itself to the new configuration, not disturbing routing protocols unless they are affected by the configuration changes o Powerful language for route filtering, see doc/bird.conf.example o Linux, FreeBSD, NetBSD and OpenBSD ports How to install BIRD =================== o From standard distribution package of your OS (recommended) o From official binary packages for Debian and Red Hat Linux ftp://bird.network.cz/pub/bird/debian/ ftp://bird.network.cz/pub/bird/redhat/ o From source code of the latest stable release version ftp://bird.network.cz/pub/bird/ o From current development code in Git repository https://gitlab.labs.nic.cz/labs/bird/ See the file INSTALL for information about installation from source code. Documentation ============= Online documentation is available at http://bird.network.cz/?get_doc or as HTML files in the doc directory, you can install it by `make install-docs' and rebuild it by `make docs', but you'll need SGMLtools and LaTeX to be installed on your machine. You can also download a neatly formatted PDF version as a separate archive (bird-doc-*.tar.gz) from ftp://bird.network.cz/pub/bird/ User support ============ If you want to help us debugging, enhancing and porting BIRD or just lurk around to see what's going to develop, feel free to subscribe to the BIRD users mailing list bird-users@network.cz, just send `subscribe' to bird-request@network.cz. Subscribe: http://bird.network.cz/mailman/listinfo/bird-users/ Archive: http://bird.network.cz/pipermail/bird-users/ Please don't send security issues to the mailing-list, contact us instead at bird-support@network.cz which is a private e-mail address where you also can get commercial support for your BIRD deployment. We don't use our gitlab issues for reporting but we're partially tracking the core developent team's work there publicly. Contributing ============ Please see the CONTRIBUTING.md file to find how to contribute to BIRD. Licence ======= This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA History ======= BIRD development started as a student project at the Faculty of Math and Physics, Charles University, Prague, Czech Republic under supervision of RNDr. Libor Forst <forst@cuni.cz>. BIRD has been developed and supported by CZ.NIC z.s.p.o. http://www.nic.cz/ since 2009. Good Luck and enjoy the BIRD :) The BIRD Team