Version in base suite: 3.1.0-1 Base version: bird3_3.1.0-1 Target version: bird3_3.1.7-0+deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/b/bird3/bird3_3.1.0-1.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/b/bird3/bird3_3.1.7-0+deb13u1.dsc .gitignore | 1 .gitlab-ci.yml | 3210 + CONTRIBUTING.md | 2 ChangeLog |42221 -------------------------- INSTALL | 2 Makefile.in | 61 NEWS | 120 README | 50 VERSION | 1 aclocal.m4 | 74 bird.conf | 58 client/commands.c | 37 conf/conf.c | 3 conf/conf.h | 16 conf/confbase.Y | 4 configure | 8634 ----- configure.ac | 37 debian/bird3.bird.service | 2 debian/changelog | 6 debian/control | 6 debian/gbp.conf | 11 debian/patches/adapt_version_script | 17 debian/patches/series | 1 debian/watch | 2 distro/README.md | 67 distro/config/apkg.toml | 12 distro/pkg/deb/bird.xml | 2 distro/pkg/deb/changelog | 4 distro/pkg/deb/control | 5 distro/pkg/deb/copyright | 2 distro/pkg/deb/rules | 7 distro/pkg/deb/watch | 2 distro/pkg/rpm/bird.spec | 46 distro/pkg/rpm/bird.sysusersd | 2 distro/pkg/rpm/system-user-bird.conf | 2 doc/Makefile | 11 doc/bird.conf.example | 2 doc/bird.sgml | 47 doc/kernel-doc | 8 doc/migration-bird3.md | 4 doc/old/banner.tex | 44 doc/old/status.tex | 90 doc/prog-head.sgml | 3 doc/prog-intro.sgml | 5 doc/sbase/dist/birddoc/groff/mapping | 3 doc/sbase/dist/birddoc/html/mapping | 6 doc/sbase/dist/birddoc/latex2e/mapping | 7 doc/sbase/dtd/birddoc.dtd | 3 doc/slides/Makefile | 19 doc/slides/logo.eps | 454 doc/slides/obr1.eps | 2539 + doc/slides/obr2.eps | 1134 doc/slides/obr5.eps | 3072 + doc/slides/slides.tex | 190 doc/slt2001/Makefile | 10 doc/slt2001/slt.tex | 275 filter/data.c | 5 filter/f-inst.c | 8 filter/test.conf | 143 filter/test.conf.overlay | 2 gitlab/Dockerfile.j2 | 107 gitlab/Makefile | 47 gitlab/README.md | 149 gitlab/data.yml.j2 | 241 gitlab/docker.mk.j2 | 15 gitlab/docker/centos-7-amd64/Dockerfile | 49 gitlab/docker/centos-8-amd64/Dockerfile | 29 gitlab/docker/debian-11-amd64/Dockerfile | 36 gitlab/docker/debian-11-i386/Dockerfile | 36 gitlab/docker/debian-12-amd64/Dockerfile | 47 gitlab/docker/debian-12-i386/Dockerfile | 36 gitlab/docker/debian-13-amd64/Dockerfile | 61 gitlab/docker/debian-13-i386/Dockerfile | 37 gitlab/docker/debian-testing-amd64/Dockerfile | 56 gitlab/docker/debian-testing-i386/Dockerfile | 37 gitlab/docker/docbuilder/Dockerfile | 31 gitlab/docker/fedora-33-amd64/Dockerfile | 27 gitlab/docker/fedora-34-amd64/Dockerfile | 27 gitlab/docker/fedora-35-amd64/Dockerfile | 27 gitlab/docker/fedora-36-amd64/Dockerfile | 27 gitlab/docker/fedora-37-amd64/Dockerfile | 27 gitlab/docker/fedora-38-amd64/Dockerfile | 27 gitlab/docker/fedora-39-amd64/Dockerfile | 27 gitlab/docker/fedora-40-amd64/Dockerfile | 27 gitlab/docker/fedora-41-amd64/Dockerfile | 27 gitlab/docker/fedora-42-amd64/Dockerfile | 27 gitlab/docker/fedora-43-amd64/Dockerfile | 27 gitlab/docker/fedora-44-amd64/Dockerfile | 27 gitlab/docker/opensuse-15.0-amd64/Dockerfile | 28 gitlab/docker/opensuse-15.1-amd64/Dockerfile | 28 gitlab/docker/opensuse-15.2-amd64/Dockerfile | 28 gitlab/docker/opensuse-15.3-amd64/Dockerfile | 28 gitlab/docker/opensuse-15.4-amd64/Dockerfile | 28 gitlab/docker/opensuse-15.5-amd64/Dockerfile | 28 gitlab/docker/opensuse-16.0-amd64/Dockerfile | 28 gitlab/docker/oracle-08-amd64/Dockerfile | 24 gitlab/docker/oracle-09-amd64/Dockerfile | 27 gitlab/docker/oracle-10-amd64/Dockerfile | 27 gitlab/docker/rocky-08-amd64/Dockerfile | 24 gitlab/docker/rocky-09-amd64/Dockerfile | 27 gitlab/docker/ubuntu-18.04-amd64/Dockerfile | 37 gitlab/docker/ubuntu-20.04-amd64/Dockerfile | 37 gitlab/docker/ubuntu-22.04-amd64/Dockerfile | 37 gitlab/docker/ubuntu-24.04-amd64/Dockerfile | 64 gitlab/docker/ubuntu-25.04-amd64/Dockerfile | 60 gitlab/docker/ubuntu-25.10-amd64/Dockerfile | 64 gitlab/docker/ubuntu-26.04-amd64/Dockerfile | 64 gitlab/pipeline.py | 38 gitlab/template.yml.j2 | 687 lib/a-path.c | 24 lib/attrs.h | 1 lib/blake2-impl.h | 2 lib/blake2-kat.h | 2 lib/blake2.h | 2 lib/blake2b.c | 2 lib/blake2s.c | 2 lib/event.c | 4 lib/hash.h | 15 lib/hash_test.c | 3 lib/ip_test.c | 64 lib/locking.h | 2 lib/netindex.c | 19 lib/resource.sgml | 2 lib/route.h | 30 lib/timer.c | 1 lib/type.h | 4 misc/Makefile | 7 misc/bird.init | 97 misc/cisco2list | 20 misc/ips.c | 96 misc/stats | 9 nest/iface.c | 12 nest/mpls.c | 3 nest/neighbor.c | 8 nest/proto.c | 322 nest/proto.sgml | 4 nest/protocol.h | 16 nest/route.h | 1 nest/rt-export.c | 40 nest/rt-table.c | 409 proto/aggregator/aggregator.c | 8 proto/babel/babel.c | 7 proto/bgp/attrs.c | 59 proto/bgp/bgp.c | 287 proto/bgp/bgp.h | 10 proto/bgp/config.Y | 4 proto/bgp/packets.c | 82 proto/bmp/bmp.c | 16 proto/bmp/bmp.h | 4 proto/bmp/config.Y | 4 proto/l3vpn/l3vpn.c | 7 proto/mrt/mrt.c | 23 proto/mrt/mrt.h | 3 proto/ospf/dbdes.c | 2 proto/ospf/hello.c | 2 proto/ospf/lsalib.c | 9 proto/ospf/ospf.c | 4 proto/ospf/ospf.h | 3 proto/ospf/packet.c | 17 proto/ospf/rt.c | 2 proto/ospf/topology.c | 4 proto/pipe/pipe.c | 10 proto/radv/packets.c | 4 proto/radv/radv.c | 4 proto/radv/radv.h | 3 proto/rip/rip.c | 3 proto/rpki/rpki.c | 18 sysdep/autoconf.h.in | 192 sysdep/bsd-netlink/netlink.c | 6 sysdep/bsd/krt-sock.c | 13 sysdep/bsd/sysio.h | 18 sysdep/linux/netlink.c | 6 sysdep/sysdep.sgml | 4 sysdep/unix/config.Y | 62 sysdep/unix/io-loop.c | 21 sysdep/unix/io.c | 4 sysdep/unix/krt.c | 30 sysdep/unix/krt.h | 1 sysdep/unix/log.c | 59 tools/doc-template.html | 58 tools/gendist | 2 tools/git-check-commits | 19 tools/git-check-tag-ci | 106 tools/git-check-tag-local | 34 tools/git-is-stable-branch | 8 tools/linuxdoc.lua | 114 tools/make-archive | 25 tools/make-deb | 86 tools/make-debian | 74 tools/make-obs | 46 tools/make-rpm | 99 tools/progdoc | 4 tools/release-commit | 82 tools/release-issue.md.j2 | 76 tools/release-tag | 25 tools/release.py | 371 tools/test-install | 83 tools/version | 64 198 files changed, 16975 insertions(+), 52201 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpkieeyk_f/bird3_3.1.0-1.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpkieeyk_f/bird3_3.1.7-0+deb13u1.dsc: no acceptable signature found diff -Nru bird3-3.1.0/.gitignore bird3-3.1.7/.gitignore --- bird3-3.1.0/.gitignore 2022-03-02 09:29:17.000000000 +0000 +++ bird3-3.1.7/.gitignore 2026-06-09 09:02:34.000000000 +0000 @@ -14,3 +14,4 @@ /sysdep/autoconf.h.in~ /cscope.* *.tar.gz +/gitlab/docker.mk diff -Nru bird3-3.1.0/.gitlab-ci.yml bird3-3.1.7/.gitlab-ci.yml --- bird3-3.1.0/.gitlab-ci.yml 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/.gitlab-ci.yml 2026-06-09 09:02:34.000000000 +0000 @@ -1,7 +1,94 @@ -## TODO: find out how to generate this file by another yaml file. -## Gitlab can do it but it is a stupid idea to mess with this -## when releasing 4 versions at once. See ya later! -## -- Maria, April 2025 +########################################################### +##### ##### +##### DO NOT EDIT THIS FILE BY HAND ##### +##### ##### +########################################################### +##### ##### +##### This file is autogenerated from gitlab/. ##### +##### Edit those files and run `make gitlab` instead. ##### +##### ##### +########################################################### + +spec: + inputs: + netlab: + description: "Manually run netlab tests" + type: boolean + default: false + build: + description: "Manually run build tests" + type: boolean + default: false + packages: + description: "Manually run packaging (will run also build tests anyway)" + type: boolean + default: false + release-fixup: + description: "Suffix for package build (if other than 1, this is a rebuild of a release)" + type: number + default: 1 + release-desc: + description: "Package build description (change this for release rebuild)" + type: string + default: "upstream package" + docker-all: + description: "Rebuild all dockers" + type: boolean + default: false + docker-regex: + description: "Rebuild dockers matching this regex" + type: string + default: 'NOTHING' # this is another hack because of gitlab syntax quirks + docker-one: + description: "Rebuild this one docker (keep empty for none)" + type: string + default: '' + options: + - '' + - docbuilder + - centos-7-amd64 + - centos-8-amd64 + - rocky-08-amd64 + - rocky-09-amd64 + - oracle-08-amd64 + - oracle-09-amd64 + - oracle-10-amd64 + - opensuse-15.0-amd64 + - opensuse-15.1-amd64 + - opensuse-15.2-amd64 + - opensuse-15.3-amd64 + - opensuse-15.4-amd64 + - opensuse-15.5-amd64 + - opensuse-16.0-amd64 + - fedora-33-amd64 + - fedora-34-amd64 + - fedora-35-amd64 + - fedora-36-amd64 + - fedora-37-amd64 + - fedora-38-amd64 + - fedora-39-amd64 + - fedora-40-amd64 + - fedora-41-amd64 + - fedora-42-amd64 + - fedora-43-amd64 + - fedora-44-amd64 + - debian-11-amd64 + - debian-11-i386 + - debian-12-amd64 + - debian-12-i386 + - debian-13-amd64 + - debian-13-i386 + - debian-testing-amd64 + - debian-testing-i386 + - ubuntu-18.04-amd64 + - ubuntu-20.04-amd64 + - ubuntu-22.04-amd64 + - ubuntu-24.04-amd64 + - ubuntu-25.04-amd64 + - ubuntu-25.10-amd64 + - ubuntu-26.04-amd64 + +--- variables: DEBIAN_FRONTEND: noninteractive @@ -10,23 +97,188 @@ DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/" IMG_BASE: registry.nic.cz/labs/bird TOOLS_DIR: /home/gitlab-runner/bird-tools - STAYRTR_BINARY: /usr/bin/stayrtr + STAYRTR_BINARY: /usr/local/bin/stayrtr + GITLAB_API_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/ stages: + - consistency - image - build - pkg + - install - test - - release -## Docker Image Rules +## Common rule snippets + +workflow: + rules: + - if: '($CI_PIPELINE_SOURCE == "web")' + variables: + wf_kind: manual + wf_prefix: '[MAN] ' + wf_desc: '$CI_COMMIT_TITLE' + PKG_RELINFO: '$[[ inputs.release-desc ]]' + PKG_FIXUP: '$[[ inputs.release-fixup ]]' + - if: '($CI_PIPELINE_SOURCE == "schedule")' + variables: + wf_kind: scheduled + wf_prefix: '[SCD] ' + wf_desc: '$CI_COMMIT_TITLE' + - if: '$CI_COMMIT_TAG' + variables: + wf_kind: tag + wf_prefix: '[TAG] ' + wf_desc: '$CI_COMMIT_TAG' + - if: '($CI_PIPELINE_SOURCE == "push")' + variables: + wf_kind: regular + wf_prefix: '' + wf_desc: '$CI_COMMIT_TITLE' + - if: '($CI_COMMIT_BRANCH =~ /^(stable-.*|thread-next|master)$/) && ($CI_COMMIT_MESSAGE =~ /^NEWS and version update/)' + variables: + wf_kind: release + wf_prefix: '[RELEASE] ' + wf_desc: '$CI_COMMIT_BRANCH' + - if: '($CI_COMMIT_MESSAGE =~ /^NEWS and version update/)' + variables: + wf_kind: release-candidate + wf_prefix: '[RC] ' + wf_desc: '$CI_COMMIT_BRANCH' + - when: always + variables: + wf_kind: unknown + wf_prefix: '[$CI_PIPELINE_SOURCE] ' + wf_desc: '$CI_COMMIT_TITLE' + + name: '$wf_prefix$wf_desc' + +# Note: We would love to just write "if: $[[ inputs.packages ]]" +# but that's impossible because the value is expected to be a string. # +# Should be fixable by several lines in +# lib/gitlab/ci/pipeline/expression/statement.rb +# but I don't have time to do that contribution to gitlab now.## Default rules for regular jobs +.default-rules: +# Manual, API and Scheduled jobs have an explicit input setting. +# Do not run anything unless explicitly requested for these. + - if: '($CI_PIPELINE_SOURCE == "web")' + when: never + - if: '($CI_PIPELINE_SOURCE == "api")' + when: never + - if: '($CI_PIPELINE_SOURCE == "schedule")' + when: never +# Do not run anything for WIP commits + - if: '($CI_COMMIT_MESSAGE =~ /^(fixup! )*WIP/)' + when: never +# Tags only happen on releases, don't run full automation + - if: '$CI_COMMIT_TAG' + when: never + - when: on_success + +## Pipeline information dump +pipeline-infodump: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - | + echo "### Variables ###" + echo "\$CI_JOB_ID = $CI_JOB_ID" + echo "\$CI_COMMIT_SHA = $CI_COMMIT_SHA" + echo "\$CI_COMMIT_BRANCH = $CI_COMMIT_BRANCH" + echo "\$CI_COMMIT_TAG = $CI_COMMIT_TAG" + echo "\$CI_COMMIT_TITLE = $CI_COMMIT_TITLE" + echo "\$CI_COMMIT_MESSAGE = $CI_COMMIT_MESSAGE" + echo "\$CI_PIPELINE_SOURCE = $CI_PIPELINE_SOURCE" + echo "\$CI_MERGE_REQUEST_IID = $CI_MERGE_REQUEST_IID" + echo "\$GITLAB_API_URL = $GITLAB_API_URL" + echo "\$wf_kind = $wf_kind" + echo + echo "### Inputs ###" + echo "Netlab: $[[ inputs.netlab ]]" + echo "Build: $[[ inputs.build ]]" + echo "Packages: $[[ inputs.packages ]]" + echo "Docker all: $[[ inputs.docker-all ]]" + echo "Docker regex: $[[ inputs.docker-regex ]]" + echo "Docker one: $[[ inputs.docker-one ]]" + +## Pipeline consistency check +pipeline-uptodate: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - autoreconf -i + - ./configure + - touch gitlab/template.yml.j2 + - make gitlab-venv + - git status --porcelain + - git diff --exit-code + rules: + - !reference [ .default-rules ] + +## Build Docker consistency check +docker-uptodate: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - autoreconf -i + - ./configure + - touch gitlab/data.yml.j2 + - make gitlab-docker VENV=1 + - touch gitlab/docker/docbuilder/Dockerfile # Docbuilder is a static image, not rebuilt by the templates + - find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 + - '[ "`find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 | wc -l`" == "0" ]' + - git status --porcelain + - git diff --exit-code + rules: + - !reference [ .default-rules ] + +## Consistency checks for stable branches +commit-messages: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - tools/git-check-commits + rules: + - if: '($CI_COMMIT_BRANCH =~ /^(stable-.*|thread-next|master)$/)' + when: on_success + - if: '($CI_COMMIT_MESSAGE =~ /^NEWS and version update/)' + when: on_success + - when: never + +## Tag check +tag-collect: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - python3 -m venv venv + - . venv/bin/activate + - pip3 install requests + - tools/git-check-tag-local $CI_COMMIT_TAG + - tools/git-check-tag-ci $CI_COMMIT_SHA + artifacts: + paths: + - obj/doc/bird-singlepage.html + - obj/doc/prog-singlepage.html + - bird-*.tar.gz + - pkg/pkgs/* + - pkg/srcpkgs/* + rules: + - if: '$CI_COMMIT_TAG' + when: on_success + - when: never + +############################ +## Docker builder rebuild ## +############################ # We are running all the build / packaging tests in Dockers (unless otherwise) # and these are rules to build these docker images. These are expensive to run # and should run only if needed. +# +# Modify the appropriate dockerfile to rebuild these images -.docker: &docker_build +.docker: &docker-build stage: image + needs: [] # docker-uptodate maybe? script: - $DOCKER_CMD login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.nic.cz # Make sure we refresh the base image if it updates (eg. security updates, etc) @@ -34,441 +286,1235 @@ # base image is never checked. However, pull always asks and updates the # image only if it changed ‒ therefore, the cache is used unless there's a # change. - - $DOCKER_CMD pull `sed -ne 's/^FROM //p' "misc/docker/$IMG_NAME/Dockerfile"` - - $DOCKER_CMD build -t "bird:$IMG_NAME" "misc/docker/$IMG_NAME" + - $DOCKER_CMD pull `sed -ne 's/^FROM //p' "gitlab/docker/$IMG_NAME/Dockerfile"` + - $DOCKER_CMD build -t "bird:$IMG_NAME" "gitlab/docker/$IMG_NAME" - $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME" - $DOCKER_CMD push "$IMG_BASE:$IMG_NAME" after_script: - - rm -f "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials + - rm -rf "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials tags: # That's Docker in Docker - dind - rules: - - if: '$CI_COMMIT_TAG' - # Never rebuild for tags - when: never - - changes: - # Do any change in Dockerfile (e.g. change a comment) to rebuild the image - - misc/docker/$IMG_NAME/Dockerfile - when: always - - when: never + docker-docbuilder: variables: IMG_NAME: "docbuilder" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"docbuilder" =~ /$[[ inputs.docker-regex ]]/' + - if: '"docbuilder" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-centos-7-amd64: variables: IMG_NAME: "centos-7-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"centos-7-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"centos-7-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-centos-8-amd64: variables: IMG_NAME: "centos-8-amd64" - <<: *docker_build -docker-debian-10-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"centos-8-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"centos-8-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-rocky-08-amd64: variables: - IMG_NAME: "debian-10-amd64" - <<: *docker_build + IMG_NAME: "rocky-08-amd64" -docker-debian-10-i386: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"rocky-08-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"rocky-08-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-rocky-09-amd64: variables: - IMG_NAME: "debian-10-i386" - <<: *docker_build + IMG_NAME: "rocky-09-amd64" -docker-debian-11-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"rocky-09-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"rocky-09-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-oracle-08-amd64: variables: - IMG_NAME: "debian-11-amd64" - <<: *docker_build + IMG_NAME: "oracle-08-amd64" -docker-debian-11-i386: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"oracle-08-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"oracle-08-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-oracle-09-amd64: variables: - IMG_NAME: "debian-11-i386" - <<: *docker_build + IMG_NAME: "oracle-09-amd64" -docker-debian-12-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"oracle-09-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"oracle-09-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-oracle-10-amd64: variables: - IMG_NAME: "debian-12-amd64" - <<: *docker_build + IMG_NAME: "oracle-10-amd64" -docker-debian-12-i386: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"oracle-10-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"oracle-10-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-15.0-amd64: variables: - IMG_NAME: "debian-12-i386" - <<: *docker_build + IMG_NAME: "opensuse-15.0-amd64" -docker-debian-testing-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.0-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.0-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-15.1-amd64: variables: - IMG_NAME: "debian-testing-amd64" - <<: *docker_build + IMG_NAME: "opensuse-15.1-amd64" -docker-debian-testing-i386: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.1-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.1-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-15.2-amd64: variables: - IMG_NAME: "debian-testing-i386" - <<: *docker_build + IMG_NAME: "opensuse-15.2-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.2-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.2-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-15.3-amd64: + variables: + IMG_NAME: "opensuse-15.3-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.3-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.3-amd64" == "$[[ inputs.docker-one ]]"' + - when: never -docker-fedora-32-amd64: + <<: *docker-build + +docker-opensuse-15.4-amd64: variables: - IMG_NAME: "fedora-32-amd64" - <<: *docker_build + IMG_NAME: "opensuse-15.4-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.4-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.4-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-15.5-amd64: + variables: + IMG_NAME: "opensuse-15.5-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-15.5-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-15.5-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-opensuse-16.0-amd64: + variables: + IMG_NAME: "opensuse-16.0-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"opensuse-16.0-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"opensuse-16.0-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-33-amd64: variables: IMG_NAME: "fedora-33-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-33-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-33-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-34-amd64: variables: IMG_NAME: "fedora-34-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-34-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-34-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-35-amd64: variables: IMG_NAME: "fedora-35-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-35-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-35-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-36-amd64: variables: IMG_NAME: "fedora-36-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-36-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-36-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-37-amd64: variables: IMG_NAME: "fedora-37-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-37-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-37-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-38-amd64: variables: IMG_NAME: "fedora-38-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-38-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-38-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-39-amd64: variables: IMG_NAME: "fedora-39-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-39-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-39-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-40-amd64: variables: IMG_NAME: "fedora-40-amd64" - <<: *docker_build + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-40-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-40-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build docker-fedora-41-amd64: variables: IMG_NAME: "fedora-41-amd64" - <<: *docker_build -#planned release 4/2025 -# docker-fedora-42-amd64: -# variables: -# IMG_NAME: "fedora-42-amd64" -# <<: *docker_build + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-41-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-41-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build -docker-opensuse-15.0-amd64: +docker-fedora-42-amd64: variables: - IMG_NAME: "opensuse-15.0-amd64" - <<: *docker_build + IMG_NAME: "fedora-42-amd64" -docker-opensuse-15.1-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-42-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-42-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-fedora-43-amd64: variables: - IMG_NAME: "opensuse-15.1-amd64" - <<: *docker_build + IMG_NAME: "fedora-43-amd64" -docker-opensuse-15.2-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-43-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-43-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-fedora-44-amd64: variables: - IMG_NAME: "opensuse-15.2-amd64" - <<: *docker_build + IMG_NAME: "fedora-44-amd64" -docker-opensuse-15.3-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"fedora-44-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"fedora-44-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-11-amd64: variables: - IMG_NAME: "opensuse-15.3-amd64" - <<: *docker_build + IMG_NAME: "debian-11-amd64" -docker-opensuse-15.4-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-11-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-11-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-11-i386: variables: - IMG_NAME: "opensuse-15.4-amd64" - <<: *docker_build + IMG_NAME: "debian-11-i386" -docker-opensuse-15.5-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-11-i386" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-11-i386" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-12-amd64: variables: - IMG_NAME: "opensuse-15.5-amd64" - <<: *docker_build + IMG_NAME: "debian-12-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-12-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-12-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-12-i386: + variables: + IMG_NAME: "debian-12-i386" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-12-i386" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-12-i386" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-13-amd64: + variables: + IMG_NAME: "debian-13-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-13-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-13-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-13-i386: + variables: + IMG_NAME: "debian-13-i386" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-13-i386" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-13-i386" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-testing-amd64: + variables: + IMG_NAME: "debian-testing-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-testing-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-testing-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-debian-testing-i386: + variables: + IMG_NAME: "debian-testing-i386" -docker-ubuntu-18_04-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"debian-testing-i386" =~ /$[[ inputs.docker-regex ]]/' + - if: '"debian-testing-i386" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-18.04-amd64: variables: IMG_NAME: "ubuntu-18.04-amd64" - <<: *docker_build -docker-ubuntu-20_04-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-18.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-18.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-20.04-amd64: variables: IMG_NAME: "ubuntu-20.04-amd64" - <<: *docker_build -docker-ubuntu-22_04-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-20.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-20.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-22.04-amd64: variables: IMG_NAME: "ubuntu-22.04-amd64" - <<: *docker_build -docker-ubuntu-24_04-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-22.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-22.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-24.04-amd64: variables: IMG_NAME: "ubuntu-24.04-amd64" - <<: *docker_build -docker-ubuntu-24_10-amd64: + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-24.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-24.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-25.04-amd64: variables: - IMG_NAME: "ubuntu-24.10-amd64" - <<: *docker_build + IMG_NAME: "ubuntu-25.04-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-25.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-25.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-25.10-amd64: + variables: + IMG_NAME: "ubuntu-25.10-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-25.10-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-25.10-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + +docker-ubuntu-26.04-amd64: + variables: + IMG_NAME: "ubuntu-26.04-amd64" + + rules: + # Only rebuild if explicitly requested + - if: '"$[[ inputs.docker-all ]]" == "true"' + - if: '"ubuntu-26.04-amd64" =~ /$[[ inputs.docker-regex ]]/' + - if: '"ubuntu-26.04-amd64" == "$[[ inputs.docker-one ]]"' + - when: never + + <<: *docker-build + + +##################################################### +## Linux distro build tests inside Docker builders ## +##################################################### ## Build stage # # Now we compile and run unit tests ... in every single distribution. # Every task needs its docker, see above. -.build: &build-base - stage: build - script: - - autoreconf - - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" $CONFIGURE_OPTIONS - # Detect which make is available - - MAKE=make - - which gmake 2>/dev/null >/dev/null && MAKE=gmake - - BRANCH=$CI_COMMIT_BRANCH $MAKE - - $MAKE check - # Build docs when tools are available - - if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi +.build-base-rules: + - if: '"$[[ inputs.build ]]" == "true"' + - if: '"$[[ inputs.packages ]]" == "true"' + - !reference [ .default-rules ] -# A special task for preparing the release archives -build-release: - image: registry.nic.cz/labs/bird:docbuilder + +.build: &build-base stage: build - tags: - - docker - - linux + rules: + - !reference [ .build-base-rules ] script: + - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi + - tools/version && ( echo -n "BIRD version "; tools/version ) > version-expected + - | + STABLE_VERSION="`cat VERSION`" + if [ "$CI_COMMIT_MESSAGE" == "NEWS and version update + " ] || [ "$[[ inputs.release-fixup ]]" -gt "1" ]; then + if [ "${STABLE_VERSION}" == "`tools/version`" ]; then + echo "Stable version precheck OK" + else + echo "Stable version discrepancy: $STABLE_VERSION vs. $(tools/version)" + exit 1 + fi + else + if grep -qF "BIRD version ${STABLE_VERSION}+branch" version-expected; then + true + else + echo -n "Commit $CI_COMMIT_SHA message $CI_COMMIT_MESSAGE expects version " + cat version-expected + exit 1 + fi + fi + - | + if [ -n "$CROSSBUILD_ARCH" ]; then + dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh + . crossbuild.sh + export CONFIGURE_OPTIONS="--host=${DEB_TARGET_GNU_TYPE} ${CONFIGURE_OPTIONS}" + export CROSS_RUN=qemu-${CROSSBUILD_ARCH} + fi + - | + case $CROSSBUILD_ARCH in + armel) LIBS="$LIBS -latomic" ;; + esac - autoreconf - - ./configure --with-protocols= --disable-client - - make obj/doc/bird-singlepage.html - - BRANCH=$CI_COMMIT_BRANCH tools/make-archive - artifacts: - paths: - - obj/doc/bird-singlepage.html - - bird-*.tar.gz - expire_in: 1 day + - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" LIBS="$LIBS" ${CONFIGURE_OPTIONS} + # Detect which make is available + - MAKE=make + - which gmake 2>/dev/null >/dev/null && MAKE=gmake + - $MAKE -j1 VERBOSE=1 + - $MAKE -j1 VERBOSE=1 TEST_RETRY_VERBOSE=1 check + # Build docs when tools are available + - if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi + # Check that the reported version is the right one + - ${CROSS_RUN} ./bird --version |& grep -v 'Cannot disable transparent huge pages' | tee obj/version-built + - diff obj/version-built version-expected -.build-linux: &build-linux +.build-docker-linux-amd64: &build-docker-linux-amd64 <<: *build-base tags: - docker - linux - amd64 + build-centos-7-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-centos-7-amd64 + optional: true + image: registry.nic.cz/labs/bird:centos-7-amd64 variables: - # export path to devtoolset-8-gcc CC: /opt/rh/devtoolset-8/root/usr/bin/gcc LC_ALL: en_US.UTF-8 - image: registry.nic.cz/labs/bird:centos-7-amd64 build-centos-8-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-centos-8-amd64 + optional: true image: registry.nic.cz/labs/bird:centos-8-amd64 -build-debian-10-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-10-amd64 - -build-debian-10-i386: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-10-i386 - -build-debian-11-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-11-amd64 +build-rocky-08-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-rocky-08-amd64 + optional: true + image: registry.nic.cz/labs/bird:rocky-08-amd64 + +build-rocky-09-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-rocky-09-amd64 + optional: true + image: registry.nic.cz/labs/bird:rocky-09-amd64 + +build-oracle-08-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-oracle-08-amd64 + optional: true + image: registry.nic.cz/labs/bird:oracle-08-amd64 + +build-oracle-09-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-oracle-09-amd64 + optional: true + image: registry.nic.cz/labs/bird:oracle-09-amd64 + +build-oracle-10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-oracle-10-amd64 + optional: true + image: registry.nic.cz/labs/bird:oracle-10-amd64 -build-debian-12-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-12-amd64 +build-opensuse-15.0-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.0-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.0-amd64 -build-debian-11-i386: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-11-i386 +build-opensuse-15.1-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.1-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.1-amd64 -build-debian-12-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-12-amd64 +build-opensuse-15.2-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.2-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.2-amd64 -build-debian-12-i386: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-12-i386 +build-opensuse-15.3-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.3-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.3-amd64 -build-debian-testing-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-testing-amd64 +build-opensuse-15.4-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.4-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.4-amd64 -build-debian-testing-i386: - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-testing-i386 +build-opensuse-15.5-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-15.5-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-15.5-amd64 -build-fedora-32-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:fedora-32-amd64 +build-opensuse-16.0-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-opensuse-16.0-amd64 + optional: true + image: registry.nic.cz/labs/bird:opensuse-16.0-amd64 build-fedora-33-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-33-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-33-amd64 build-fedora-34-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-34-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-34-amd64 build-fedora-35-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-35-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-35-amd64 build-fedora-36-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-36-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-36-amd64 build-fedora-37-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-37-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-37-amd64 build-fedora-38-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-38-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-38-amd64 build-fedora-39-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-39-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-39-amd64 build-fedora-40-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-40-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-40-amd64 build-fedora-41-amd64: - <<: *build-linux + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-41-amd64 + optional: true image: registry.nic.cz/labs/bird:fedora-41-amd64 -#planned release 4/2025 -# build-fedora-42-amd64: -# <<: *build-linux -# image: registry.nic.cz/labs/bird:fedora-42-amd64 +build-fedora-42-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-42-amd64 + optional: true + image: registry.nic.cz/labs/bird:fedora-42-amd64 + +build-fedora-43-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-43-amd64 + optional: true + image: registry.nic.cz/labs/bird:fedora-43-amd64 + +build-fedora-44-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-fedora-44-amd64 + optional: true + image: registry.nic.cz/labs/bird:fedora-44-amd64 -build-opensuse-15.0-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.0-amd64 - -build-opensuse-15.1-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.1-amd64 - -build-opensuse-15.2-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.2-amd64 - -build-opensuse-15.3-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.3-amd64 +build-debian-11-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-11-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-11-amd64 -build-opensuse-15.4-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.4-amd64 -build-opensuse-15.5-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:opensuse-15.5-amd64 +build-debian-11-i386: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-11-i386 + optional: true + image: registry.nic.cz/labs/bird:debian-11-i386 -build-ubuntu-18_04-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64 +build-debian-12-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-12-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-12-amd64 -build-ubuntu-20_04-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64 +crossbuild-mips64el-debian-12-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-12-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-12-amd64 + variables: + CROSSBUILD_ARCH: mips64el -build-ubuntu-22_04-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64 +crossbuild-s390x-debian-12-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-12-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-12-amd64 + variables: + CROSSBUILD_ARCH: s390x -build-ubuntu-24_04-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 -build-ubuntu-24_10-amd64: - <<: *build-linux - image: registry.nic.cz/labs/bird:ubuntu-24.10-amd64 +build-debian-12-i386: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-12-i386 + optional: true + image: registry.nic.cz/labs/bird:debian-12-i386 -# Testing builds for just a single protocol each time +build-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + +crossbuild-arm64-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + variables: + CROSSBUILD_ARCH: arm64 + +crossbuild-armel-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + variables: + CROSSBUILD_ARCH: armel + +crossbuild-armhf-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + variables: + CROSSBUILD_ARCH: armhf + +crossbuild-riscv64-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + variables: + CROSSBUILD_ARCH: riscv64 + +crossbuild-s390x-debian-13-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-13-amd64 + variables: + CROSSBUILD_ARCH: s390x + + +build-debian-13-i386: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-13-i386 + optional: true + image: registry.nic.cz/labs/bird:debian-13-i386 -.build-only: &build-only - <<: *build-linux - image: registry.nic.cz/labs/bird:debian-12-amd64 +build-debian-testing-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-amd64 -build-only-aggregator: - <<: *build-only +crossbuild-arm64-debian-testing-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=aggregator + CROSSBUILD_ARCH: arm64 -build-only-babel: - <<: *build-only +crossbuild-armhf-debian-testing-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=babel + CROSSBUILD_ARCH: armhf -build-only-bfd: - <<: *build-only +crossbuild-riscv64-debian-testing-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=bfd + CROSSBUILD_ARCH: riscv64 -build-only-bgp: - <<: *build-only +crossbuild-s390x-debian-testing-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-amd64 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=bgp + CROSSBUILD_ARCH: s390x -build-only-bgp-bmp: - <<: *build-only - variables: - CONFIGURE_OPTIONS: --with-protocols=bgp,bmp -build-only-l3vpn: - <<: *build-only - variables: - CONFIGURE_OPTIONS: --with-protocols=l3vpn +build-debian-testing-i386: + <<: *build-docker-linux-amd64 + needs: + - job: docker-debian-testing-i386 + optional: true + image: registry.nic.cz/labs/bird:debian-testing-i386 -build-only-mrt: - <<: *build-only - variables: - CONFIGURE_OPTIONS: --with-protocols=mrt +build-ubuntu-18.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-18.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64 -build-only-ospf: - <<: *build-only - variables: - CONFIGURE_OPTIONS: --with-protocols=ospf -build-only-pipe: - <<: *build-only +build-ubuntu-20.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-20.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64 + + +build-ubuntu-22.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-22.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64 + + +build-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 + +crossbuild-arm64-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=pipe + CROSSBUILD_ARCH: arm64 -build-only-radv: - <<: *build-only +crossbuild-armhf-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=radv + CROSSBUILD_ARCH: armhf -build-only-rip: - <<: *build-only +crossbuild-ppc64el-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=rip + CROSSBUILD_ARCH: ppc64el -build-only-rpki: - <<: *build-only +crossbuild-riscv64-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=rpki + CROSSBUILD_ARCH: riscv64 -build-only-static: - <<: *build-only +crossbuild-s390x-ubuntu-24.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-24.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 variables: - CONFIGURE_OPTIONS: --with-protocols=static + CROSSBUILD_ARCH: s390x + + +build-ubuntu-25.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64 + +crossbuild-armhf-ubuntu-25.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64 + variables: + CROSSBUILD_ARCH: armhf + +crossbuild-ppc64el-ubuntu-25.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64 + variables: + CROSSBUILD_ARCH: ppc64el + +crossbuild-riscv64-ubuntu-25.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64 + variables: + CROSSBUILD_ARCH: riscv64 + +crossbuild-s390x-ubuntu-25.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64 + variables: + CROSSBUILD_ARCH: s390x + + +build-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + +crossbuild-arm64-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + variables: + CROSSBUILD_ARCH: arm64 + +crossbuild-armhf-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + variables: + CROSSBUILD_ARCH: armhf + +crossbuild-ppc64el-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + variables: + CROSSBUILD_ARCH: ppc64el + +crossbuild-riscv64-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + variables: + CROSSBUILD_ARCH: riscv64 + +crossbuild-s390x-ubuntu-25.10-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-25.10-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64 + variables: + CROSSBUILD_ARCH: s390x + + +build-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + +crossbuild-arm64-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + variables: + CROSSBUILD_ARCH: arm64 + +crossbuild-armhf-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + variables: + CROSSBUILD_ARCH: armhf + +crossbuild-ppc64el-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + variables: + CROSSBUILD_ARCH: ppc64el + +crossbuild-riscv64-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + variables: + CROSSBUILD_ARCH: riscv64 + +crossbuild-s390x-ubuntu-26.04-amd64: + <<: *build-docker-linux-amd64 + needs: + - job: docker-ubuntu-26.04-amd64 + optional: true + image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64 + variables: + CROSSBUILD_ARCH: s390x + + + +####################################################### +## A special task for preparing the release archives ## +####################################################### +build-release: + image: registry.nic.cz/labs/bird:docbuilder + needs: + - job: docker-docbuilder + optional: true + stage: build + tags: + - docker + - linux + script: + - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi + - autoreconf + - ./configure --with-protocols= --disable-client + - make obj/doc/bird-singlepage.html obj/doc/prog-singlepage.html + - if grep '
PARSER FAILED ' obj/doc/bird-singlepage.html obj/doc/prog-singlepage.html; then echo "Documentation build is broken!"; false; fi
+    - tools/make-archive
+  artifacts:
+    paths:
+      - obj/doc/bird-singlepage.html
+      - obj/doc/prog-singlepage.html
+      - bird-*.tar.gz
+    expire_in: 1 day
+  rules: !reference [ .build-base-rules ]
 
 # Packaging rules
 # As we support some ancient versions of different distributions,
@@ -477,253 +1523,1482 @@
 #
 # We do NOT build separate documentation packages in these rules.
 
-.pkg-deb: &pkg-deb
-  stage: pkg
-  script:
-    # create venv only if it's installed
-    - if python3 -m venv venv; then . venv/bin/activate; fi
-    - pip3 install apkg
-    - BRANCH=$CI_COMMIT_BRANCH ARCHIVE_DOCS=false apkg build
-    #- apkg install -y pkg/pkgs/*/*/*.deb
-  artifacts:
-    paths:
-      - pkg/pkgs/*
+.pkg-base: &pkg-base
+  rules:
+  - if: '"$[[ inputs.packages ]]" == "true"'
+  - if: '$CI_COMMIT_TAG'
+    when: never
+  - if: '($CI_COMMIT_MESSAGE =~ /^NEWS and version update/)'
+    when: on_success
+  - if: '($CI_COMMIT_BRANCH !~ /^(stable-.*|thread-next|master)$/)'
+    when: never
+  - !reference [ .default-rules ]
 
-.pkg-deb-legacy: &pkg-deb-legacy
+.pkg-deb: &pkg-deb
+  <<: *pkg-base
   stage: pkg
   script:
-    # create venv only if it's installed
-    - if python3 -m venv venv; then . venv/bin/activate; fi
-    # install older version of bs4 that does not use python version >= 3.6
-    # apkg depends on bs4, and unless we want to backport python 3.6
-    # to ancient distros, we need to do this workaround
-    - pip3 install beautifulsoup4==4.11.2
-    - pip3 install apkg
-    - BRANCH=$CI_COMMIT_BRANCH ARCHIVE_DOCS=false apkg build
-    #- apkg install -y pkg/pkgs/*/*/*.deb
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+    - tools/make-deb
   artifacts:
     paths:
       - pkg/pkgs/*
+      - pkg/srcpkgs/*
 
 .pkg-rpm: &pkg-rpm
+  <<: *pkg-base
   stage: pkg
   script:
-    - pip3 install apkg
-    - BRANCH=$CI_COMMIT_BRANCH ARCHIVE_DOCS=false apkg build
-    #- apkg install -y pkg/pkgs/*/*/*.rpm
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+    - STABLE_BUILDDIR=true tools/make-rpm
   artifacts:
     paths:
       - pkg/pkgs/*
+      - pkg/srcpkgs/*
+
 
-.pkg-rpm-wa: &pkg-rpm-wa
-  stage: pkg
-  script:
-    - sed -i "s/runstatedir/with-runtimedir/" distro/pkg/rpm/bird.spec
-    # install older version of bs4 that does not use python version >= 3.6
-    - pip3 install beautifulsoup4==4.11.2
-    - pip3 install apkg
-    - BRANCH=$CI_COMMIT_BRANCH ARCHIVE_DOCS=false apkg build
-    #- apkg install -y pkg/pkgs/*/*/*.rpm
-  artifacts:
-    paths:
-      - pkg/pkgs/*
 
 pkg-centos-7-amd64:
-  <<: *pkg-rpm-wa
+  <<: *pkg-rpm
+  needs:
+    - job: build-centos-7-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:centos-7-amd64
   variables:
-    # export path to devtoolset-8-gcc
     CC: /opt/rh/devtoolset-8/root/usr/bin/gcc
     LC_ALL: en_US.UTF-8
-  needs: [build-centos-7-amd64]
-  image: registry.nic.cz/labs/bird:centos-7-amd64
 
 pkg-centos-8-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-centos-8-amd64]
+  <<: *pkg-rpm
+  needs:
+    - job: build-centos-8-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:centos-8-amd64
 
-pkg-debian-10-amd64:
-  <<: *pkg-deb
-  needs: [build-debian-10-amd64]
-  image: registry.nic.cz/labs/bird:debian-10-amd64
+pkg-rocky-08-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-rocky-08-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:rocky-08-amd64
 
-pkg-debian-10-i386:
-  <<: *pkg-deb
-  needs: [build-debian-10-i386]
-  image: registry.nic.cz/labs/bird:debian-10-i386
+pkg-rocky-09-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-rocky-09-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:rocky-09-amd64
 
-pkg-debian-11-amd64:
-  <<: *pkg-deb
-  needs: [build-debian-11-amd64]
-  image: registry.nic.cz/labs/bird:debian-11-amd64
+pkg-oracle-08-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-oracle-08-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:oracle-08-amd64
 
-pkg-debian-12-amd64:
-  <<: *pkg-deb
-  needs: [build-debian-12-amd64]
-  image: registry.nic.cz/labs/bird:debian-12-amd64
+pkg-oracle-09-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-oracle-09-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:oracle-09-amd64
 
-pkg-debian-11-i386:
-  <<: *pkg-deb
-  needs: [build-debian-11-i386]
-  image: registry.nic.cz/labs/bird:debian-11-i386
+pkg-oracle-10-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-oracle-10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:oracle-10-amd64
 
-pkg-debian-12-amd64:
-  <<: *pkg-deb
-  needs: [build-debian-12-amd64]
-  image: registry.nic.cz/labs/bird:debian-12-amd64
+pkg-opensuse-15.0-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.0-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
 
-pkg-debian-12-i386:
-  <<: *pkg-deb
-  needs: [build-debian-12-i386]
-  image: registry.nic.cz/labs/bird:debian-12-i386
+pkg-opensuse-15.1-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.1-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
 
-pkg-debian-testing-amd64:
-  <<: *pkg-deb
-  needs: [build-debian-testing-amd64]
-  image: registry.nic.cz/labs/bird:debian-testing-amd64
+pkg-opensuse-15.2-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.2-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
 
-pkg-debian-testing-i386:
-  <<: *pkg-deb
-  needs: [build-debian-testing-i386]
-  image: registry.nic.cz/labs/bird:debian-testing-i386
+pkg-opensuse-15.3-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.3-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
+
+pkg-opensuse-15.4-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.4-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
 
-pkg-fedora-32-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-fedora-32-amd64]
-  image: registry.nic.cz/labs/bird:fedora-32-amd64
+pkg-opensuse-15.5-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-15.5-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
+
+pkg-opensuse-16.0-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-opensuse-16.0-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:opensuse-16.0-amd64
 
 pkg-fedora-33-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-fedora-33-amd64]
+  <<: *pkg-rpm
+  needs:
+    - job: build-fedora-33-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-33-amd64
 
 pkg-fedora-34-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-34-amd64]
+  needs:
+    - job: build-fedora-34-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-34-amd64
 
 pkg-fedora-35-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-35-amd64]
+  needs:
+    - job: build-fedora-35-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-35-amd64
 
 pkg-fedora-36-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-36-amd64]
+  needs:
+    - job: build-fedora-36-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-36-amd64
 
 pkg-fedora-37-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-37-amd64]
+  needs:
+    - job: build-fedora-37-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-37-amd64
 
 pkg-fedora-38-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-38-amd64]
+  needs:
+    - job: build-fedora-38-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-38-amd64
 
 pkg-fedora-39-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-39-amd64]
+  needs:
+    - job: build-fedora-39-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-39-amd64
 
 pkg-fedora-40-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-40-amd64]
+  needs:
+    - job: build-fedora-40-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-40-amd64
 
 pkg-fedora-41-amd64:
   <<: *pkg-rpm
-  needs: [build-fedora-41-amd64]
+  needs:
+    - job: build-fedora-41-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:fedora-41-amd64
 
-#planned release 4/2025
-# pkg-fedora-42-amd64:
-#   <<: *pkg-rpm
-#   needs: [build-fedora-42-amd64]
-#   image: registry.nic.cz/labs/bird:fedora-42-amd64
+pkg-fedora-42-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-fedora-42-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:fedora-42-amd64
 
-pkg-opensuse-15.0-amd64:
- <<: *pkg-rpm-wa
- needs: [build-opensuse-15.0-amd64]
- image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
+pkg-fedora-43-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-fedora-43-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:fedora-43-amd64
 
-pkg-opensuse-15.1-amd64:
- <<: *pkg-rpm-wa
- needs: [build-opensuse-15.1-amd64]
- image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
+pkg-fedora-44-amd64:
+  <<: *pkg-rpm
+  needs:
+    - job: build-fedora-44-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:fedora-44-amd64
 
-pkg-opensuse-15.2-amd64:
- <<: *pkg-rpm-wa
- needs: [build-opensuse-15.2-amd64]
- image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
+pkg-debian-11-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-11-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-11-amd64
 
-pkg-opensuse-15.3-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-opensuse-15.3-amd64]
-  image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
 
-pkg-opensuse-15.4-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-opensuse-15.4-amd64]
-  image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
+pkg-debian-11-i386:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-11-i386
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-11-i386
 
-pkg-opensuse-15.5-amd64:
-  <<: *pkg-rpm-wa
-  needs: [build-opensuse-15.5-amd64]
-  image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
+pkg-debian-12-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-12-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+
+crosspkg-mips64el-debian-12-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-mips64el-debian-12-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: mips64el
+
+crosspkg-s390x-debian-12-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-12-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-debian-12-i386:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-12-i386
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-12-i386
+
+pkg-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+
+crosspkg-arm64-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armel-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armel-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armel
+
+crosspkg-armhf-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-riscv64-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-debian-13-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-13-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-debian-13-i386:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-13-i386
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-13-i386
+
+pkg-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+
+crosspkg-arm64-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-riscv64-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-debian-testing-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-debian-testing-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-debian-testing-i386:
+  <<: *pkg-deb
+  needs:
+    - job: build-debian-testing-i386
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:debian-testing-i386
 
 pkg-ubuntu-18.04-amd64:
-  <<: *pkg-deb-legacy
-  needs: [build-ubuntu-18_04-amd64]
+  <<: *pkg-deb
+  needs:
+    - job: build-ubuntu-18.04-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
 
+
 pkg-ubuntu-20.04-amd64:
   <<: *pkg-deb
-  needs: [build-ubuntu-20_04-amd64]
+  needs:
+    - job: build-ubuntu-20.04-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
 
+
 pkg-ubuntu-22.04-amd64:
   <<: *pkg-deb
-  needs: [build-ubuntu-22_04-amd64]
+  needs:
+    - job: build-ubuntu-22.04-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
 
+
 pkg-ubuntu-24.04-amd64:
   <<: *pkg-deb
-  needs: [build-ubuntu-24_04-amd64]
+  needs:
+    - job: build-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+
+crosspkg-arm64-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-24.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
   image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
 
-pkg-ubuntu-24.10-amd64:
+crosspkg-s390x-ubuntu-24.04-amd64:
   <<: *pkg-deb
-  needs: [build-ubuntu-24_10-amd64]
-  image: registry.nic.cz/labs/bird:ubuntu-24.10-amd64
+  needs:
+    - job: crossbuild-s390x-ubuntu-24.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+
+crosspkg-armhf-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-25.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-25.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+
+crosspkg-arm64-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-25.10-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-25.10-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+pkg-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: build-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+
+crosspkg-arm64-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-arm64-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+
+crosspkg-armhf-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-armhf-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+
+crosspkg-ppc64el-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-ppc64el-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+
+crosspkg-riscv64-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-riscv64-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+
+crosspkg-s390x-ubuntu-26.04-amd64:
+  <<: *pkg-deb
+  needs:
+    - job: crossbuild-s390x-ubuntu-26.04-amd64
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+
+## Package installability checks
+
+.install-deb: &install-deb
+  <<: *pkg-base
+  stage: install
+  script:
+    # setup crossbuild architecture
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
+    # check that bird is _not_ installed now and no user or group bird exists
+    - |
+      if bird --version >/dev/null 2>&1; then
+        echo "Error: BIRD unexpectedly installed"
+        exit 1
+      fi
+      if id -g bird >/dev/null 2>&1; then
+        echo "Error: User group 'bird' unexpectedly exist before installation"
+        exit 1
+      fi
+      if id -u bird >/dev/null 2>&1; then
+        echo "Error: User 'bird' unexpectedly exist before installation"
+        exit 1
+      fi
+    # install packages
+    - find pkg/pkgs/ -type f -name '*.deb' '(' -ls -exec dpkg -i '{}' ';' ')'
+    # test that installation is successful
+    - ./tools/test-install "$CI_COMMIT_MESSAGE"
+
+.install-rpm: &install-rpm
+  <<: *pkg-base
+  stage: install
+  script:
+    # check that bird is _not_ installed now and no user or group bird exists
+    - |
+      if bird --version >/dev/null 2>&1; then
+        echo "Error: BIRD unexpectedly installed"
+        exit 1
+      fi
+      if id -g bird >/dev/null 2>&1; then
+        echo "Error: User group 'bird' exist before installation"
+        exit 1
+      fi
+      if id -u bird >/dev/null 2>&1; then
+        echo "Error: User 'bird' exist before installation"
+        exit 1
+      fi
+    # install packages
+    - find pkg/pkgs/ -type f -name '*.rpm' '(' -ls -exec $RPM_INSTALL_CMD '{}' ';' ')'
+    # test that installation is successful
+    - ./tools/test-install "$CI_COMMIT_MESSAGE"
+
+
+install-centos-7-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-centos-7-amd64
+  image: registry.nic.cz/labs/bird:centos-7-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-centos-8-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-centos-8-amd64
+  image: registry.nic.cz/labs/bird:centos-8-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-rocky-08-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-rocky-08-amd64
+  image: registry.nic.cz/labs/bird:rocky-08-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-rocky-09-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-rocky-09-amd64
+  image: registry.nic.cz/labs/bird:rocky-09-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-oracle-08-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-oracle-08-amd64
+  image: registry.nic.cz/labs/bird:oracle-08-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-oracle-09-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-oracle-09-amd64
+  image: registry.nic.cz/labs/bird:oracle-09-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-oracle-10-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-oracle-10-amd64
+  image: registry.nic.cz/labs/bird:oracle-10-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.0-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.0-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.1-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.1-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.2-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.2-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.3-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.3-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.4-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.4-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-15.5-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-15.5-amd64
+  image: registry.nic.cz/labs/bird:opensuse-15.5-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-opensuse-16.0-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-opensuse-16.0-amd64
+  image: registry.nic.cz/labs/bird:opensuse-16.0-amd64
+  variables:
+    RPM_INSTALL_CMD: zypper --non-interactive --no-gpg-checks in
+
+install-fedora-33-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-33-amd64
+  image: registry.nic.cz/labs/bird:fedora-33-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-34-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-34-amd64
+  image: registry.nic.cz/labs/bird:fedora-34-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-35-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-35-amd64
+  image: registry.nic.cz/labs/bird:fedora-35-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-36-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-36-amd64
+  image: registry.nic.cz/labs/bird:fedora-36-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-37-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-37-amd64
+  image: registry.nic.cz/labs/bird:fedora-37-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-38-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-38-amd64
+  image: registry.nic.cz/labs/bird:fedora-38-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-39-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-39-amd64
+  image: registry.nic.cz/labs/bird:fedora-39-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-40-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-40-amd64
+  image: registry.nic.cz/labs/bird:fedora-40-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-41-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-41-amd64
+  image: registry.nic.cz/labs/bird:fedora-41-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-42-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-42-amd64
+  image: registry.nic.cz/labs/bird:fedora-42-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-43-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-43-amd64
+  image: registry.nic.cz/labs/bird:fedora-43-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-fedora-44-amd64:
+  <<: *install-rpm
+  needs:
+    - job: pkg-fedora-44-amd64
+  image: registry.nic.cz/labs/bird:fedora-44-amd64
+  variables:
+    RPM_INSTALL_CMD: rpm -i
+
+install-debian-11-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-11-amd64
+  image: registry.nic.cz/labs/bird:debian-11-amd64
+  variables:
+
+install-debian-11-i386:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-11-i386
+  image: registry.nic.cz/labs/bird:debian-11-i386
+  variables:
+
+install-debian-12-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-12-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+crossinstall-mips64el-debian-12-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-mips64el-debian-12-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: mips64el
+crossinstall-s390x-debian-12-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-12-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-debian-12-i386:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-12-i386
+  image: registry.nic.cz/labs/bird:debian-12-i386
+  variables:
+
+install-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+crossinstall-arm64-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armel-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armel-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armel
+crossinstall-armhf-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-riscv64-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-debian-13-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-13-amd64
+  image: registry.nic.cz/labs/bird:debian-13-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-debian-13-i386:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-13-i386
+  image: registry.nic.cz/labs/bird:debian-13-i386
+  variables:
+
+install-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+crossinstall-arm64-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-riscv64-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-debian-testing-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-debian-testing-amd64
+  image: registry.nic.cz/labs/bird:debian-testing-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-debian-testing-i386:
+  <<: *install-deb
+  needs:
+    - job: pkg-debian-testing-i386
+  image: registry.nic.cz/labs/bird:debian-testing-i386
+  variables:
+
+install-ubuntu-18.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-18.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
+  variables:
+
+install-ubuntu-20.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-20.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
+  variables:
+
+install-ubuntu-22.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-22.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
+  variables:
+
+install-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+crossinstall-arm64-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-24.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-24.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+crossinstall-armhf-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-25.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-25.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+crossinstall-arm64-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-25.10-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-25.10-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-25.10-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+install-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: pkg-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+crossinstall-arm64-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-arm64-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: arm64
+crossinstall-armhf-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-armhf-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: armhf
+crossinstall-ppc64el-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-ppc64el-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: ppc64el
+crossinstall-riscv64-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-riscv64-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: riscv64
+crossinstall-s390x-ubuntu-26.04-amd64:
+  <<: *install-deb
+  needs:
+    - job: crosspkg-s390x-ubuntu-26.04-amd64
+  image: registry.nic.cz/labs/bird:ubuntu-26.04-amd64
+  variables:
+    CROSSBUILD_ARCH: s390x
+
+
+###################################
+## Non-linux build tests in QEMU ##
+###################################
+.build-birdlab-base: &build-birdlab-base
+  <<: *build-base
+  stage: build
+  needs: []
+#  script:
+#    - export BRANCH=$CI_COMMIT_BRANCH
+#    - autoreconf
+#    - ./configure $CONFIGURE_OPTIONS
+#    - gmake
+#    - gmake check
+
+
+build-birdlab-openbsd-76:
+  <<: *build-birdlab-base
+  variables:
+    AUTOCONF_VERSION: '2.72'
+  tags:
+    - birdlab-openbsd-76
+    - amd64
+
+build-birdlab-netbsd-09:
+  <<: *build-birdlab-base
+  variables:
+    CONFIGURE_OPTIONS: --disable-lto
+  tags:
+    - birdlab-netbsd-09
+    - amd64
+
+build-birdlab-netbsd-10:
+  <<: *build-birdlab-base
+  variables:
+    CONFIGURE_OPTIONS: --disable-lto
+  tags:
+    - birdlab-netbsd-10
+    - amd64
+
+build-birdlab-freebsd-13:
+  <<: *build-birdlab-base
+  tags:
+    - birdlab-freebsd-13
+    - amd64
+
+build-birdlab-freebsd-13-netlink:
+  <<: *build-birdlab-base
+  variables:
+    CONFIGURE_OPTIONS: --with-sysconfig=bsd-netlink --disable-client
+  tags:
+    - birdlab-freebsd-13
+    - amd64
+
+build-birdlab-freebsd-14:
+  <<: *build-birdlab-base
+  tags:
+    - birdlab-freebsd-14
+    - amd64
+
+build-birdlab-freebsd-14-netlink:
+  <<: *build-birdlab-base
+  variables:
+    CONFIGURE_OPTIONS: --with-sysconfig=bsd-netlink --disable-client
+  tags:
+    - birdlab-freebsd-14
+    - amd64
+
+
+#########################
+## Partial build tests ##
+#########################
+
+.build-only: &build-only
+  <<: *build-docker-linux-amd64
+  image: registry.nic.cz/labs/bird:debian-12-amd64
+  needs:
+    - job: docker-debian-12-amd64
+      optional: true
+
+
+partial-build-linux-aggregator:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=aggregator
+
+partial-build-linux-babel:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=babel
+
+partial-build-linux-bfd:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=bfd
+
+partial-build-linux-bgp:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=bgp
+
+partial-build-linux-bgp,bmp:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=bgp,bmp
+
+partial-build-linux-l3vpn:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=l3vpn
+
+partial-build-linux-mrt:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=mrt
+
+partial-build-linux-ospf:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=ospf
+
+partial-build-linux-pipe:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=pipe
+
+partial-build-linux-radv:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=radv
+
+partial-build-linux-rip:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=rip
+
+partial-build-linux-rpki:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=rpki
+
+partial-build-linux-static:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols=static
+
+
+################################
+## Netlab functionality tests ##
+################################
+
+.netlab-rules: &netlab-rules
+  rules:
+    - if: '"$[[ inputs.netlab ]]" == "true"'
+    - !reference [ .default-rules ]
 
 build-netlab:
+  <<: *netlab-rules
   stage: build
+  needs: []
+  variables:
+    BDIR: build-netlab
   tags:
     - netlab
     - amd64
   script:
-    - DIR=$(pwd)
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
     - autoreconf
-    - ./configure
-    - BRANCH=$CI_COMMIT_BRANCH make
-    - cd $TOOLS_DIR
-    - sudo git clean -fx
-    - git pull --ff-only
-    - mv $DIR/bird $DIR/birdc netlab/common
-    - ln -s $STAYRTR_BINARY netlab/common/stayrtr
+    - mkdir $BDIR
+    - cd $BDIR
+    - ../configure
+    - make
+  artifacts:
+    paths:
+      - $BDIR/bird
+      - $BDIR/birdc
+    expire_in: 2 hours
 
-.test: &test-base
+.netlab-test: &test-base
+  <<: *netlab-rules
   stage: test
   needs: [build-netlab]
   tags:
     - netlab
     - amd64
   script:
-    - cd $TOOLS_DIR/netlab
+    - sudo rm -rf netlab-failure
+    - DIR=$(pwd)
+    - cd $TOOLS_DIR
+    - sudo git clean -fx
+    - sudo git checkout -f master
+    - git pull --ff-only
+    - "mv $DIR/build-netlab/* netlab/common/"
+    - ln -s $STAYRTR_BINARY netlab/common/stayrtr
+    - cd netlab
     - sudo ./stop
+    - ulimit -f 1048576 # Protect the filesystem from overflowing by log bloat
     - sudo ./runtest -s v3 -m check $TEST_NAME
+  after_script:
+    - DIR=$(pwd)
+    - cd $TOOLS_DIR/netlab
+    - sudo ./stop || echo "Stop failed"
+    - "mkdir -p $DIR/netlab-failure"
+    - git status --porcelain > $DIR/netlab-failure.log
+    - for f in $(git status --porcelain | sed -rn 's#^.[^DRT] netlab/##p'); do mkdir -p $DIR/netlab-failure/$(dirname $f); sudo chmod a+rw $f; sudo mv $f $DIR/netlab-failure/$(dirname $f); done
+  artifacts:
+    when: on_failure
+    untracked: true
+
+
+test-babel-base:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-babel-base
+
+test-babel-auth:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-babel-auth
 
 test-ospf-base:
   <<: *test-base
@@ -810,6 +3085,11 @@
   variables:
     TEST_NAME: cf-bgp-rs-singletab
 
+test-ebgp-graceful:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-graceful
+
 test-ebgp-loop:
   <<: *test-base
   variables:
@@ -825,11 +3105,6 @@
   variables:
     TEST_NAME: cf-ebgp-role
 
-test-ebgp-graceful:
-  <<: *test-base
-  variables:
-    TEST_NAME: cf-ebgp-graceful
-
 test-ebgp-import-limit:
   <<: *test-base
   variables:
@@ -840,30 +3115,30 @@
   variables:
     TEST_NAME: cf-ebgp-hostname
 
+test-ebgp-bfd-auth:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-bfd-auth
+
 test-ibgp-loop:
   <<: *test-base
   variables:
     TEST_NAME: cf-ibgp-loop
 
-#test-ibgp-loop-big:
-#  <<: *test-base
-#  variables:
-#    TEST_NAME: cf-ibgp-loop-big
-#
-test-ibgp-flat:
+test-ibgp-loop-big:
   <<: *test-base
   variables:
-    TEST_NAME: cf-ibgp-flat
+    TEST_NAME: cf-ibgp-loop-big
 
-test-babel-base:
+test-ibgp-flat:
   <<: *test-base
   variables:
-    TEST_NAME: cf-babel-base
+    TEST_NAME: cf-ibgp-flat
 
-test-babel-auth:
+test-ibgp-bfd-auth:
   <<: *test-base
   variables:
-    TEST_NAME: cf-babel-auth
+    TEST_NAME: cf-ibgp-bfd-auth
 
 test-rip-base:
   <<: *test-base
@@ -885,61 +3160,78 @@
   variables:
     TEST_NAME: cf-mpls-bgp-l3vpn
 
+test-pipe-collision:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-pipe-collision
 
-.build-birdlab-base: &build-birdlab-base
-  stage: build
-  script:
-    - autoreconf
-    - ./configure
-    - gmake
-    - gmake check
+test-log-corner-cases:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-log-corner-cases
 
-# There is no docker for BSD's, these are proper virtuals in QEMU.
-build-birdlab-freebsd-13:
-  <<: *build-birdlab-base
-  tags:
-    - birdlab-freebsd-13
-    - amd64
+test-roa-reconf-regression:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-roa-reconf-regression
 
-build-birdlab-openbsd-71:
-  <<: *build-birdlab-base
+test-ebgp-refresh/gen/imno-basic-imex-basic:
+  <<: *test-base
   variables:
-     AUTOCONF_VERSION: "2.71"
-  tags:
-    - birdlab-openbsd-71
-    - amd64
+    TEST_NAME: cf-ebgp-refresh/gen/imno-basic-imex-basic
 
-# We have also some virtuals for these but there are working dockers as well
-# so no need to bother again
-#build-birdlab-debian-11:
-#  <<: *build-birdlab-base
-#  tags:
-#    - birdlab-debian-11
-#    - amd64
-#
-#build-birdlab-centos-08:
-#  <<: *build-birdlab-base
-#  tags:
-#    - birdlab-centos-08
-#    - amd64
-#
-#build-birdlab-fedora-37:
-#  <<: *build-birdlab-base
-#  tags:
-#    - birdlab-fedora-37
-#    - amd64
-
-# Release confirmation job for tag pushing. As soon as we finish our web
-# deployment automatic machinery, clicking the button is expected to
-# publish the release info on our website.
-#
-# We are not there yet tho, too many other fish to fry.
+test-ebgp-refresh/gen/noex-basic-imno-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/noex-basic-imno-enhanced
+
+test-ebgp-refresh/gen/imex-basic-noex-none:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/imex-basic-noex-none
+
+test-ebgp-refresh/gen/nono-enhanced-nono-basic:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/nono-enhanced-nono-basic
+
+test-ebgp-refresh/gen/imno-none-imex-basic:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/imno-none-imex-basic
+
+test-ebgp-refresh/gen/noex-none-imno-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/noex-none-imno-enhanced
+
+test-ebgp-refresh/gen/imex-none-noex-none:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/imex-none-noex-none
+
+test-ebgp-refresh/gen/nono-none-nono-basic:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/nono-none-nono-basic
+
+test-ebgp-refresh/gen/imno-enhanced-imex-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/imno-enhanced-imex-enhanced
+
+test-ebgp-refresh/gen/noex-enhanced-imno-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/noex-enhanced-imno-enhanced
+
+test-ebgp-refresh/gen/imex-enhanced-noex-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/imex-enhanced-noex-enhanced
+
+test-ebgp-refresh/gen/nono-enhanced-nono-enhanced:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-ebgp-refresh/gen/nono-enhanced-nono-enhanced
 
-publish-release:
-  stage: release
-  script:
-  - "true"
-  rules:
-  - if: '$CI_COMMIT_TAG'
-    when: manual
-  - when: never
diff -Nru bird3-3.1.0/CONTRIBUTING.md bird3-3.1.7/CONTRIBUTING.md
--- bird3-3.1.0/CONTRIBUTING.md	2024-12-17 13:44:48.000000000 +0000
+++ bird3-3.1.7/CONTRIBUTING.md	2026-06-09 09:02:34.000000000 +0000
@@ -84,6 +84,8 @@
 suite into the main git repository; after we do that, we'll require every
 contribution to add tests (if applicable, of course).
 
+These automatic tests are used by our [CI](misc/gitlab/).
+
 ## Crediting policy
 
 The credits are scattered over all the source code files; in the commentary
diff -Nru bird3-3.1.0/ChangeLog bird3-3.1.7/ChangeLog
--- bird3-3.1.0/ChangeLog	2025-04-03 18:51:55.000000000 +0000
+++ bird3-3.1.7/ChangeLog	1970-01-01 00:00:00.000000000 +0000
@@ -1,42221 +0,0 @@
-commit f6252e7afa818c37c2cbd891fdf919e9a13f3315
-Author: Maria Matejka 
-Date:   Tue Apr 1 21:49:58 2025 +0200
-
-    NEWS and version update
-
-commit f293cfdab5bf2c0a30f782d7fa916682863348ab
-Merge: 6576c5378 ec2acff48
-Author: Maria Matejka 
-Date:   Thu Apr 3 20:39:14 2025 +0200
-
-    Merge commit 'ec2acff48115badc04ebace72a635acb87a2e2b9' into thread-next
-
-commit ec2acff48115badc04ebace72a635acb87a2e2b9
-Author: Maria Matejka 
-Date:   Thu Apr 3 20:03:50 2025 +0200
-
-    Release tools: fix several bugs in version number detection
-    
-    Forgetting to do proper checks, I merged a buggy release tools update
-    not detecting the right version (mostly if tagged).
-
-commit 6576c5378191a9ceb58b499b1862d7e100243973
-Merge: cfd837705 5b2c79804
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:12:21 2025 +0200
-
-    Merge commit '5b2c79804' into thread-next
-
-commit cfd83770539d9756460f976e652f7c7584c1e7dc
-Merge: c5874de9b 123660031
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:12:11 2025 +0200
-
-    Merge commit '1236600' into thread-next
-
-commit c5874de9b72431d424059ffecd6a5977e140ca16
-Merge: f4223252f de2370ec0
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:11:46 2025 +0200
-
-    Merge commit 'de2370ec0' into thread-next
-
-commit f4223252fdd7283a92bbee5b0dcc93c8a60a3436
-Merge: 8725b5e3f a2be93c7f
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:09:36 2025 +0200
-
-    Merge commit 'a2be93c7f' into thread-next
-
-commit 8725b5e3f86b3a8c172b61a3ff9c31b5efdf866b
-Merge: e7ff5aa1d 481739d0d
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:06:13 2025 +0200
-
-    Merge commit '481739d0d' into thread-next
-
-commit 5b2c79804f847b2b071809305d6de073bd940f29
-Author: Maria Matejka 
-Date:   Tue Apr 1 20:05:09 2025 +0200
-
-    Doc singlepage: add bold handler
-
-commit 123660031aebf9d227c8525d64de1e7f3863be9c
-Author: Jana Babovakova 
-Date:   Tue Apr 1 12:05:46 2025 +0200
-
-    CI: Massive update of build and test runners
-    
-    Fixed and added current distros, deleted certain EOL distros,
-    sorted things in the CI file.
-    
-    With some heavy lifting and comments by Maria.
-    
-    Signed-Off-By: Maria Matejka 
-
-commit 5018785dbe0f6706fc29ded03e6b79bf2f41aacb
-Author: Maria Matejka 
-Date:   Tue Apr 1 14:19:23 2025 +0200
-
-    Docker build machinery: a little bit of documentation
-
-commit e7ff5aa1d52cd159cbb2c0678e73e39ecaedb26c
-Merge: ca2fb2e4a a14e6a0c5
-Author: Maria Matejka 
-Date:   Tue Apr 1 19:46:37 2025 +0200
-
-    Merge remote-tracking branch 'origin/master' into thread-next
-
-commit ca2fb2e4ad5f3ace76a081556cd9cf8ee2a36996
-Merge: 92900ac45 e69d80c90
-Author: Maria Matejka 
-Date:   Tue Apr 1 15:25:30 2025 +0200
-
-    Merge commit 'origin/master^' into thread-next
-    
-    The AO socket dumping is bonkers but we'll fix it later.
-
-commit 92900ac45e74cff1474f20b4788311793506429b
-Author: Maria Matejka 
-Date:   Wed Dec 18 12:24:49 2024 +0100
-
-    CLI: v2 compatibility mode for attribute name display
-
-commit de2370ec0d3e1bf16a533968b7ca66727dd075af
-Author: David Petera 
-Date:   Fri Feb 28 15:40:04 2025 +0100
-
-    Fix dependecy issue with bs4 on legacy distros
-
-commit a2be93c7fcc9f9d799880b32adb5fdadb1b7ef57
-Author: Maria Matejka 
-Date:   Fri Jan 10 18:09:01 2025 +0100
-
-    Update build and package targets
-    
-    Fedora builds for 32-41, Debian up to 12, Ubuntu up to 24.10.
-    
-    Includes autorebuilder if a Dockerfile changes.
-    
-    The CI file is obnoxiously boilerplaty. TODO: generate it from a list?
-
-commit bc9b252d549511e4b916bb3a715daed11bdd75dd
-Author: David Petera 
-Date:   Tue Feb 18 12:38:13 2025 +0100
-
-    Fix getting the version tag. Now it should also support older versions of git
-
-commit 913a9cad574f70acf3d7e5c6293c4bbe27b73074
-Author: David Petera 
-Date:   Fri Jan 31 14:08:49 2025 +0100
-
-    Readd CentOS 7 to CI build and package process
-
-commit 09a520a1859ad68f7e5a7d1722b6c83962c4d89a
-Author: David Petera 
-Date:   Fri Jan 31 14:07:33 2025 +0100
-
-    Add archived repositories for CentOS 8
-
-commit ae55a7668ea445673b4b36b669a8a2f2bcd4e772
-Author: David Petera 
-Date:   Fri Jan 17 13:50:47 2025 +0100
-
-    Remove links to czech repos in EOL debians and add archived repos for debian 9
-
-commit 1f4920f4c144e480a913d5944a28c6fd707db46e
-Author: Maria Matejka 
-Date:   Mon Jan 13 22:21:43 2025 +0100
-
-    use python venv for debian
-
-commit 70798a6acdba53e453a88164274f1c4b447b0228
-Author: Maria Matejka 
-Date:   Fri Jan 24 10:34:42 2025 +0100
-
-    Releasing: a new tgz generator script
-    
-    Also version detection is done by a separate script, not a magic line in
-    the Makefile.
-
-commit 481739d0d93618c065566342bca370637166f7fe
-Author: Maria Matejka 
-Date:   Sun Jan 19 01:06:24 2025 +0100
-
-    Doc: autoconvertor of our SGML to Markdown
-    
-    Some minor changes were done in the original documentation to allow for
-    easier conversion, and also to make the documentation a little bit more
-    strictly valid.
-
-commit d8b48b378a5fac26eb3b0406cd01eca2f192488b
-Author: Maria Matejka 
-Date:   Thu Jan 23 22:30:43 2025 +0100
-
-    CI: Added the release confirm metajob
-
-commit 2688e90704bc0fcaac212ffdf887f8c504ac6685
-Author: Maria Matejka 
-Date:   Mon Jan 20 18:26:34 2025 +0100
-
-    Separate documentation autobuild
-    
-    This is expected to hit a webhook inside our CI to trigger
-    automatic deployment to testweb.
-
-commit a14e6a0c54456199da85cf8955cfa873417ae384
-Author: Maria Matejka 
-Date:   Tue Dec 17 12:38:12 2024 +0100
-
-    CI: fix test collisions between branches
-    
-    The build-netlab job was side-effecting the test-* jobs,
-    and if for some reason Gitlab scheduled build-netlab before
-    other pipeline's test-* jobs finished, these jobs got a wrong
-    binary, possibly failing. Solved by using explicit artifacts, which is
-    not the fastest way to do this (we could keep the binaries named there)
-    but it's the gitlab-right way to do this.
-
-commit da838bca052b3b1e5533e2900299b4140e2d5d13
-Author: Maria Matejka 
-Date:   Fri Dec 27 15:12:32 2024 +0100
-
-    CLI: fix channel stats display
-    
-    The overall number of updates/withdrawals received, as well as
-    the number of routes limited, were not updated.
-
-commit e69d80c90795f0dad727c97410944039fcd41a19
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 16:21:47 2025 +0200
-
-    BGP: Forbid TCP-AO on dynamic BGP sessions
-    
-    Reconfiguration does not work properly for this case, disable it for now.
-
-commit 02f8f3e1456f47765303007f1469b0c09f671926
-Merge: 8c796114c 509d0f3b8
-Author: Maria Matejka 
-Date:   Mon Mar 31 16:04:05 2025 +0200
-
-    Merge commit '509d0f3b8' into thread-next
-
-commit 8c796114c987f53a014b9ae031d108ebe50aa17c
-Merge: 230b460b5 f80003e35
-Author: Maria Matejka 
-Date:   Mon Mar 31 16:02:44 2025 +0200
-
-    Merge commit 'f80003e35' into thread-next
-
-commit 230b460b5d04d05d1bb830a4180920446c016a9a
-Merge: 93847bf22 f4a94644d
-Author: Maria Matejka 
-Date:   Mon Mar 31 16:02:30 2025 +0200
-
-    Merge commit 'f4a94644d' into thread-next
-
-commit 93847bf2296d9b00f281e5b4202f28546621271b
-Merge: 4fadbc9dd 1e5a7113b
-Author: Maria Matejka 
-Date:   Mon Mar 31 13:59:53 2025 +0200
-
-    Merge commit '1e5a7113b' into thread-next
-
-commit 4fadbc9ddf86f770e809697f6dc671a4c30825eb
-Merge: f62771468 3a55459ea
-Author: Maria Matejka 
-Date:   Mon Mar 31 13:58:51 2025 +0200
-
-    Merge commit '3a55459ea' into thread-next
-
-commit f62771468893ca11c39e1e02c82879b9487fbed7
-Merge: 75c84e4d1 34aa592de
-Author: Maria Matejka 
-Date:   Mon Mar 31 13:58:42 2025 +0200
-
-    Merge commit '34aa592de' into thread-next
-
-commit 75c84e4d185d94e459e2d02758cbf847696ea752
-Merge: 23ec59280 51d0777e8
-Author: Maria Matejka 
-Date:   Mon Mar 31 13:57:21 2025 +0200
-
-    Merge commit '51d0777e8' into thread-next
-
-commit f5d9f36276bfbf5e6a2d7facbd829b2d45cfe6bc
-Author: Ondrej Zajicek 
-Date:   Sun Jan 12 13:32:37 2025 +0100
-
-    TCP-AO revised version
-    
-    Reworked and finalized version of TCP-AO.
-
-commit f7ce252f82879878fa0c441d6efe8d5569b33448
-Author: Kateřina Kubecová 
-Date:   Wed Jun 26 09:23:12 2024 +0200
-
-    TCP-AO implementation based on RFC 5925
-    
-    Uses Linux TCP-AO. Tested against JUNIPER.
-
-commit 509d0f3b8cd1f8a6ed2ae0e00257349ba9b9f942
-Author: Ondrej Zajicek 
-Date:   Thu Mar 27 17:43:56 2025 +0100
-
-    BFD: Fix crash related to reconfiguration and passwords
-    
-    Any change in BFD iface configuration should trigger session
-    reconfiguration, as config is copied into the bfd_session structure
-    and not just accessed through the bfd_iface structure.
-    
-    As bfd_session now contains a pointer to the password list allocated
-    from the configuration, forgetting to update the bfd_session causes
-    use-after-free.
-    
-    Thanks to Lexi Winter for the bugreport.
-
-commit 938515a4f9556cca057174995f98bb337453e5e0
-Author: Ondrej Zajicek 
-Date:   Thu Mar 27 17:41:35 2025 +0100
-
-    CI: Re-add bgp-rs-singletab
-    
-    (was accidentally removed by the previous commit)
-
-commit f80003e35b94cd7b5807b72a3697b7762a00f83f
-Author: Ondrej Zajicek 
-Date:   Thu Mar 27 02:50:35 2025 +0100
-
-    Babel: Add option 'next hop prefer' to control next hops of IPv4 routes
-    
-    By default, the Babel protocol will advertise IPv4 routes with an IPv6
-    next hop address only on interfaces which do not have an IPv4 address.
-    
-    Add option 'next hop prefer' to control whether IPv4 routes should use
-    IPv4 or IPv6 next hop when both are available.
-    
-    Based on the patch from Chris Webb, thanks!
-
-commit 7167dbd4d09137474398fbc02e7c05a9f4969fe3
-Author: Jana Babovakova 
-Date:   Tue Mar 25 17:52:26 2025 +0100
-
-    Filter: Add tests for 'case' expressions
-
-commit db8de44d31c54229016cffaee6e6fb4f32e63337
-Author: Ondrej Zajicek 
-Date:   Tue Mar 25 16:29:51 2025 +0100
-
-    CI: Add bgp-rs-singletab
-    
-    (For some reason, it is not enabled in CI)
-
-commit 5b74cc6ccf8b772b4a6b8f596e785951e62e5167
-Author: Jana Babovakova 
-Date:   Tue Mar 25 11:34:27 2025 +0100
-
-    Docs: new link local format added to BGP outline.
-
-commit f4a94644d0d6a4ecdf5fcebb0062bc463fad2a28
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 17:09:25 2025 +0100
-
-    BGP: Add option to specify format of link-local next hop
-    
-    When a BGP session is established using link-local next hop addresses,
-    there is no global IPv6 address for next hop. Implementations differ on
-    how to encode such next hop. This leads to interoperability problems.
-    
-    Add the option 'link local next hop format' to specify which format to
-    use when encoding such next hops.
-    
-    Based on a patch from Andrey V. Elsukov and Georgy Kirichenko, submitted
-    by Aleksandr Stepanov, thanks!
-
-commit cfa6cf296ae0038cbc3b5255c6c6c5d093e700fe
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 17:03:41 2025 +0100
-
-    BGP: Fix missing case for decoding link-local next hops in VPN SAFI
-
-commit 1e5a7113bad7ef48c2423f00f5722cca4f6dbf7d
-Author: Ondrej Zajicek 
-Date:   Sat Mar 22 02:04:02 2025 +0100
-
-    CI: Remove broken package builds
-    
-    Some package build tests were broken due to apkg changes,
-    disable them temporarily.
-
-commit 3a55459ea099ccea4be7dce16cc37617c6a69b56
-Author: Jana Babovakova 
-Date:   Mon Mar 17 15:56:45 2025 +0100
-
-    Docs: Changed "<", ">" to "<",">" in .
-
-commit dadcbf2d146030337bc509dd5e378e1aef2a38b6
-Author: Jana Babovakova 
-Date:   Mon Mar 17 15:45:14 2025 +0100
-
-    Docs: Replaced "M>" with "m>" (maintainability).
-
-commit f4c6fd5bca89a7606ea9479e93bbac83b1f991f3
-Author: Jana Babovakova 
-Date:   Mon Mar 17 15:42:07 2025 +0100
-
-    Docs: Replaced "num" with "number".
-
-commit 3c607b2a1d6d409d547860e49e074d2076465b43
-Author: Jana Babovakova 
-Date:   Mon Mar 17 15:39:19 2025 +0100
-
-    Docs: Replaced "<num>" with <number>.
-
-commit 34aa592de3ef251a3461f08e9d0b4f8be8107e38
-Author: Katerina Kubecova 
-Date:   Fri Mar 21 14:17:47 2025 +0100
-
-    l3vpn.c: set proper flag when setting EA_BGP_EXT_COMMUNITY
-
-commit 51d0777e886b1097a47f3ecbce60c02717fab330
-Author: Maria Matejka 
-Date:   Tue Mar 18 05:34:46 2025 +0100
-
-    ASPA: added official tests
-    
-    from Sriram Kotikalapudi's presentation for IETF 122.
-
-commit 23ec59280ef51971694911413ff7dd09b5aafaa3
-Author: Maria Matejka 
-Date:   Wed Oct 2 22:32:07 2024 +0200
-
-    Lib: added tmp_v?sprintf and tmp_strdup allocating from tmp_linpool
-
-commit 0036332398cd9bfa8a402364e2215e7a554bfb7c
-Author: Maria Matejka 
-Date:   Mon Sep 2 15:38:01 2024 +0200
-
-    Enabled LTO for LLVM and making use of jobserver for LTO in GCC
-
-commit 0b4d80108e74899f54597b98753666291852f180
-Author: Maria Matejka 
-Date:   Mon Sep 2 15:20:46 2024 +0200
-
-    Compiler vendor detection for autotools
-
-commit c15adf11aca5e922b279393d842ac4c4c3e25c6a
-Author: Maria Matejka 
-Date:   Mon Aug 26 18:09:46 2024 +0200
-
-    Calling cf_warn from log_switch makes no sense
-
-commit 71ca7d75d72ce869cad4962b0d78ff12bcd79f27
-Author: Ondrej Zajicek 
-Date:   Fri Mar 14 16:49:36 2025 +0100
-
-    Log: Fix handling of L_BUG messages
-    
-    Due to an off-by-one error, L_BUG messages (e.g. from ASSERT()) were
-    handled as L_DBG messages and therefore ignored by our CI.
-
-commit 1a35da04d1f84c5a162ba3fd7aa5469c4b7c34fd
-Author: Maria Matejka 
-Date:   Thu Feb 13 18:25:44 2025 +0100
-
-    Taming static checker: flow[64]_validate_cf() checks NULL data
-    
-    This does not apply for the current code but if somebody chose to use
-    the flowspec validation functions for something totally broken, it may
-    unnecessarily crash.
-
-commit 22565b60dedcafb598800df35906f253564a918d
-Author: Maria Matejka 
-Date:   Thu Feb 13 13:10:04 2025 +0100
-
-    Taming static checker: MPLS static label policy requires static handles
-
-commit 6c2ef535cee13af9820448c398022308bb3464cb
-Author: Maria Matejka 
-Date:   Thu Feb 13 12:12:20 2025 +0100
-
-    Taming static checker: Do not request bits on negative positions in prefixes
-    
-    The code is actually called. It's harmless, yet confusing.
-
-commit 15bd7100cb6024478ffe98961f02c3a428f83e15
-Author: Maria Matejka 
-Date:   Thu Feb 13 10:22:08 2025 +0100
-
-    Taming static checker: Fixed hypothetical adata comparator crash
-
-commit 38acb415fbbf21d2f9992680a913c03cc88e9787
-Author: Maria Matejka 
-Date:   Mon Feb 3 15:21:52 2025 +0100
-
-    BFD session handling rework
-    
-    The original implementation for BIRD 3 was rooted in the first
-    methods how I tried to go for multithreading and it had several flaws,
-    mostly incomprehensive notification and request pickup routines.
-    Also converting to a double-loop architecture where one of the
-    loops (low-latency) solely runs BFD socket communication, whereas
-    the other one does all the other shenanigans.
-
-commit 68373348b5c5a1c7f4ca2cf4c0b2678b43baa219
-Author: Maria Matejka 
-Date:   Tue Feb 4 21:13:26 2025 +0100
-
-    Proper thread group setup
-    
-    Now the thread groups can be explicitly configured with their
-    latency and timing values.
-
-commit 1ab4a577c54b4e3ef0e50a60da2e90a27abfda72
-Author: Maria Matejka 
-Date:   Wed Feb 5 13:08:48 2025 +0100
-
-    IO loop: converted the thread group to a regular locked structure
-
-commit 870208f20fee1acd523f890393c92824d6712a42
-Author: Maria Matejka 
-Date:   Tue Feb 4 21:44:28 2025 +0100
-
-    IO loop: refactored thread and loop lists to tlists
-
-commit 15605360c02ca0de24bf8460d6ab518e59f8320a
-Author: Maria Matejka 
-Date:   Wed Feb 5 21:41:32 2025 +0100
-
-    Tlist enlisted allows const pointer argument
-
-commit f967d472164cb0de998ef30ab7b4d6e0e4a5cbf9
-Author: Maria Matejka 
-Date:   Wed Feb 5 18:42:29 2025 +0100
-
-    Make implicit function declaration an actual error
-
-commit 07c01c732f00148389ff01254b5ee652f7f2ee38
-Author: Maria Matejka 
-Date:   Tue Feb 4 10:41:05 2025 +0100
-
-    Fixed SAME_TYPE to work with obviously nonzero pointers without warnings
-
-commit 4b73e9a80238163c2cd167a4bc72ec8f9812daa5
-Author: Maria Matejka 
-Date:   Fri Jan 31 23:54:29 2025 +0100
-
-    Taming static checker: rt_notify never sets net_addr to zero
-
-commit 806ebd5e7e1c186436a0772c0233d265bba6575f
-Author: Maria Matejka 
-Date:   Fri Jan 31 23:51:44 2025 +0100
-
-    Taming static checker: don't memcpy zero length
-
-commit 7647d5b4efe6b003176bb3997827c8e9fd202683
-Merge: 94eadc4d3 99c295e59
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:51:41 2025 +0100
-
-    Merge commit '99c295e59' into thread-next
-
-commit 94eadc4d3a5d28abcd7b90ca821d54549a48a682
-Merge: f37ca567d 2679de7a3
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:51:25 2025 +0100
-
-    Merge commit '2679de7a3' into thread-next
-
-commit f37ca567dfa124d7a9773dd71b60d6e353d2f21f
-Merge: 5c288bde7 a8fa3f6b8
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:35:06 2025 +0100
-
-    Merge commit 'a8fa3f6b8' into thread-next
-
-commit 5c288bde7d487df0ab5c1aba3afc96dbb96ca328
-Merge: d821f48ea deec84ca3
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:29:44 2025 +0100
-
-    Merge commit 'deec84ca3' into thread-next
-
-commit d821f48ea7c46c7ae92a9e7dab33292153b8e0ab
-Merge: 6d3726c2d 96ec6b42d
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:27:19 2025 +0100
-
-    Merge commit '96ec6b42d' into thread-next
-
-commit 6d3726c2d54ca6c2753b659fcd90ebb599f4be51
-Merge: 368be7c75 8d062e931
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:26:33 2025 +0100
-
-    Merge commit '8d062e931' into thread-next
-
-commit 368be7c7570fa6397d881cd7f8a6bcc597b7a909
-Merge: 355ea4e95 161aef353
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:24:16 2025 +0100
-
-    Merge commit '161aef353' into thread-next
-
-commit 355ea4e95494f8e9b5f94abaa56b817c947cedde
-Merge: eb8ee3e95 38a422d48
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:21:03 2025 +0100
-
-    Merge commit '38a422d48' into thread-next
-
-commit eb8ee3e95c1b5fd402a72fc4555bb7de3a8e79bf
-Merge: a0e49abe9 6a55359b1
-Author: Maria Matejka 
-Date:   Mon Mar 10 10:16:50 2025 +0100
-
-    Merge commit '6a55359b1' into thread-next
-
-commit a0e49abe91739f48bac1cb0dd37e811b399cc897
-Author: Maria Matejka 
-Date:   Mon Mar 10 09:15:53 2025 +0100
-
-    Table export: Relaxing too strict inconsistency assert
-    
-    In case of refeeds, we may get old routes which we have not seen,
-    the table does not know that and the channel ingress is the right place
-    to detect it.
-    
-    Bug introduced in commit 25557fceb08c8db6daead02a2f4b7a99d8a1f922
-    by Maria Matejka , Mon Mar 3 19:48:58 2025 +0100
-    
-        Table export: Another inconsistency in refeeds
-
-commit 99c295e5989de4c6cd89b857d98287de45b39e4f
-Author: Ondrej Zajicek 
-Date:   Sun Mar 9 22:58:31 2025 +0100
-
-    Doc: Replace 
-Date:   Wed Mar 5 15:10:02 2025 +0100
-
-    Doc: Add BGP reconfiguration section
-    
-    Some changes by committer.
-
-commit d1cfbed9974b4cd418da95e3c9fcd3b1d7ca45eb
-Author: Jana Babovakova 
-Date:   Wed Mar 5 15:08:03 2025 +0100
-
-    Doc: Minor fixes in BGP options
-
-commit a4a2a46ed9a437a9d49f2a4ab394811bf9155cfe
-Author: Jana Babovakova 
-Date:   Wed Mar 5 15:05:43 2025 +0100
-
-    Doc: Add BGP protocol outline
-
-commit 8e99b5176b16b1d3bdf38faed2937c905df84cb8
-Author: Maria Matejka 
-Date:   Sat Mar 8 17:09:35 2025 +0100
-
-    Fixed refeed seqmap inconsistency
-    
-    For some weird reason (probably oversight, as always), regular exports
-    were not marked in seq_map, leading to sus reexports and confusing
-    refeeds.
-
-commit 93224ddd302f5426b9700b1a2ef8c643760e48e9
-Author: Ondrej Zajicek 
-Date:   Thu Mar 6 16:09:36 2025 +0100
-
-    BGP: Fix reconfiguration of hostname option
-    
-    The old code did not properly compare and update hostname strings,
-    causing BGP restarts during reconfigurations.
-
-commit 2679de7a39761385411d0e3d21a5d2e33085bd41
-Author: Ondrej Zajicek 
-Date:   Thu Mar 6 03:43:15 2025 +0100
-
-    Nest: Fix locking of tables by channels
-    
-    Channels that are down keep ptr on routing tables but do not keep them
-    locked. It is safe because the existence of tables depend on being
-    configured. But when a table is removed during reconfiguration, the
-    channel kept a dangling pointer since it fell down until it was removed.
-    This could be triggered by 'show protocols all' and other similar.
-    
-    Change locking so that a channel kept a table locked for its whole
-    existence. The same change is already in BIRD 3.
-    
-    Note that this is somewhat conceptually problematic as downed channels
-    do not keep resources. Also, other objects in specialized channels
-    (igp_table, base_table in bgp_channel, mpls_domain / mpls_range in
-    mpls_channel) are still locked only when channel is active, but for
-    them it is easier to keep track that they are not accessed when
-    they are deconfigured.
-
-commit bb1734267410ac0a5bac929ebc9932daf7f89229
-Author: Maria Matejka 
-Date:   Tue Mar 4 13:04:20 2025 +0100
-
-    Table best export: asserting seqmap consistency
-    
-    In case of some exports have been seen and others not, it makes no sense
-    for the second one to be seen if the first one was not seen.
-
-commit b5d46eb68b2861d1243528d5acc671db1459165a
-Author: Maria Matejka 
-Date:   Tue Mar 4 13:02:01 2025 +0100
-
-    RCU Unwinder stores where it came from last time
-    
-    This information is vital for stuck situations where the
-    RCU Unwinder keeps longjumping away.
-
-commit 25557fceb08c8db6daead02a2f4b7a99d8a1f922
-Author: Maria Matejka 
-Date:   Mon Mar 3 19:48:58 2025 +0100
-
-    Table export: Another inconsistency in refeeds
-    
-    When a route has been already sent to the channel and the refeed
-    runs because of a filter change or just because requested, the
-    old and new routes are the same which was actually not anticipated
-    by rt_notify_basic().
-
-commit fd1f5952d19b90bcda1e07de45e3a6d055936658
-Author: Maria Matejka 
-Date:   Wed Feb 26 14:45:24 2025 +0100
-
-    Filters: don't rewrite gw explicitly set by filters
-    
-    If the originating protocol sets hostentry, it should be
-    overridden by filters and not rewrite gw.
-    
-    This fixes #156. Issue #154 may need a similar fix.
-    
-    Thanks to Peter Hutchinson for reporting.
-    
-    Signed-Off-By: Katerina Kubecova 
-
-commit 7eb9a24a96f5e88de0b92c65eae3dbc51fec9241
-Author: Toke Høiland-Jørgensen via Bird-users 
-Date:   Tue Feb 25 16:05:10 2025 +0100
-
-    Fix source-specific routing in Bird 3
-    
-    Commit 69d1ffde4c72 ("Split route data structure to storage (ro) /
-    manipulation (rw) structures.") changed rte->net from a pointer to a
-    'struct network' to a 'struct net_addr', but kept the address-of (&)
-    operator before casting to 'net_addr_ip6_sadr *' when sending a
-    source-specific route to the kernel.
-    
-    Because 'struct network' had an embedded struct member (struct
-    fib_node), the address-of was needed to get back to a pointer to the
-    data, but with the change in the commit mentioned above, e->net is now a
-    straight pointer to the address.
-    
-    The bug meant that the source prefixes passed to the kernel were
-    essentially garbage, leading to routes in the kernel like:
-    
-    default from b74:9e05:0:1:d8cf:c000::/86 via fe80::1 dev eth0 proto bird metric 32 pref medium
-    
-    Fix this by getting rid of the address-of operator.
-    
-    Note by commiter: used our TYPE_CAST macro instead of plain typecast
-    to avoid this kind of problem in future.
-    
-    Fixes: 69d1ffde4c72 ("Split route data structure to storage (ro) / manipulation (rw) structures.")
-    Signed-off-by: Toke Høiland-Jørgensen 
-    Signed-off-by: Maria Matejka 
-
-commit 377cfef1199004262d4e71ad170302d521461a5b
-Author: Ondrej Zajicek 
-Date:   Tue Feb 25 16:52:00 2025 +0100
-
-    CI: Add hostname test to CI
-
-commit 5938adb5185d6df25187f5c9fa2482a0788b33c1
-Author: Jana Babovakova 
-Date:   Wed Feb 12 17:06:39 2025 +0100
-
-    Add option hostname for each protocol
-
-commit 964bc67869f2df92c1e3f75cf585693ccb4e0033
-Author: Jana Babovakova 
-Date:   Tue Feb 11 12:01:59 2025 +0100
-
-    Install comment updated by Maria
-
-commit 36d7e7e4410fd99cbc0a879f89fcae43d396f3f0
-Author: Jana Babovakova 
-Date:   Mon Feb 24 14:39:29 2025 +0100
-
-    Updated router id docs to 4-byte integer.
-
-commit 63c08fc653bcfcad742aa83c11f783d3b68c0f9a
-Author: Katerina Kubecova 
-Date:   Tue Feb 25 12:46:06 2025 +0100
-
-    Table export: fixed inconsistency in export_rejected_map
-    
-    When updates arrived in such an order that the first one was rejected and
-    the second one got accepted, the export_rejected_map flag mistakenly
-    stayed set, leaking the route ID.
-    
-    In the RA_OPTIMAL channel mode, there are consistency checks that at
-    most one route for a net has been accepted or rejected. After some time,
-    the leaked ID and bit in export_rejected_map caused spurious crashes in
-    asserts later in channel_notify_basic().
-    
-    Thanks to NIX-CZ and Maiyun Zhang for reporting this.
-
-commit 7bc06c76729b741c3925625099c669e815862e68
-Author: Maria Matejka 
-Date:   Mon Feb 17 21:37:46 2025 +0100
-
-    Fixing a refeed inconsistency
-    
-    On refeed, the table should not resend any obsolete routes
-    which have already been seen by the recipient, nor the appropriate
-    journal items.
-
-commit 9181a1792e3cc8edfd511157e5a811444155c741
-Author: Maria Matejka 
-Date:   Wed Feb 12 21:30:55 2025 +0100
-
-    Added build for Debian 12
-    
-    Needed right now for a customer. There is a better fix pending.
-
-commit a70a6da3e43faac70036fb4539d53550f23d13b3
-Author: Maria Matejka 
-Date:   Wed Feb 12 21:29:10 2025 +0100
-
-    BGP export table src fix
-    
-    When exchanging routes in BGP export table, we forgot to update
-    the src in cases of add path off. This led to falsely claiming another
-    origin of that route in export table dump and also holding protocols
-    in the flush state because of their srcs being kept in the export tables.
-
-commit b69a2be40c8c73f5bfb009becc7f9dd4ef79bd0f
-Author: Maria Matejka 
-Date:   Tue Feb 11 19:57:46 2025 +0100
-
-    Flowspec: allowed TES_PARTIAL in validator link state
-    
-    This probably slipped through some refactoring, TES_PARTIAL
-    is definitely a valid state for a flowspec link export.
-
-commit 9cf5417b017f71cf59b568978cecc7f12adbadbb
-Author: Maria Matejka 
-Date:   Mon Feb 10 12:29:51 2025 +0100
-
-    Fix channel restart sequence
-    
-    If channel goes start -> pause -> start, the original code crashed
-    but it's a valid sequence for protocol half-restart, going from UP
-    to START and then back UP.
-
-commit 745cd48c80885cf1232d71907e5d489e5d5ad8c3
-Author: Maria Matejka 
-Date:   Mon Feb 10 14:18:19 2025 +0100
-
-    Old config should not be freed early when reconfiguring in fast succession
-
-commit 47ed4aa0d61df55b9de775dcc5baf74165214751
-Author: Maria Matejka 
-Date:   Wed Feb 12 12:38:20 2025 +0100
-
-    Kernel: pause exports also on restart until scan is done
-    
-    To save some time, exports are disabled to kernel when the initial scan
-    is running. The same should happen when kernel protocol is restarting.
-
-commit a8fa3f6b8d0a8235c9348cae290529d4dc2cad51
-Author: Ondrej Zajicek 
-Date:   Thu Jan 9 16:44:51 2025 +0100
-
-    lib: Unify alignment of allocators
-    
-    Different internal allocators (memory blocks, linpools, and slabs) used
-    different way to compute alignment. Unify it to use alignment based on
-    standard max_align_t type.
-    
-    On x86_64, this does not change alignment of memory blocks and linpools
-    (both old and new is 16), but it increases alignment of slabs from 8 to
-    16.
-
-commit deec84ca33d33c367e4f647d784889c05eda38ae
-Author: Ondrej Zajicek 
-Date:   Tue Feb 4 16:07:09 2025 +0100
-
-    Update obsolete RFC 5575 to newer RFCs 8955 / 8956
-
-commit 6919a54ef3de161ad17fd419b711c9a1905828fa
-Author: David Petera 
-Date:   Fri Jan 10 13:22:47 2025 +0100
-
-    Update the obsoleted RFC 5575 by newer RFCs 8955 (ipv4) and 8956 (ipv6)
-
-commit 738c18c02bea7edadf7dae4de169b386ad4c6d58
-Author: David Petera 
-Date:   Fri Jan 10 13:16:34 2025 +0100
-
-    Fix the flow6 label description and example
-
-commit a47b6c71953c5f139a332dc7c0e6837a8ab6463f
-Author: David Petera 
-Date:   Thu Jan 30 14:24:34 2025 +0100
-
-    Fix error in example of direct protocol
-
-commit e0fb3e1255dcfc7ceee9a3fec4fbf513120aa226
-Author: David Petera 
-Date:   Thu Jan 16 11:15:26 2025 +0100
-
-    Fix typo in docs
-
-commit d13c9d378f257b499e9b7a633cffa8fa70a0bb68
-Author: Maria Matejka 
-Date:   Mon Jan 13 22:15:52 2025 +0100
-
-    BGP: fix shutdown crash when dynamic peer is just connected
-    
-    In some edge cases, the dynamic BGP starts but doesn't yet pick up
-    the socket from the peer, when it gets shut down, typically on
-    a complete shutdown. Fixing this to just close the socket, not assert
-    it being already picked up.
-
-commit 77582da162d19af1073cbe56c7884b7e758b6a7a
-Author: Maria Matejka 
-Date:   Thu Jan 9 21:54:53 2025 +0100
-
-    NEWS and version update
-
-commit bd3ba2af92ff2d4d07fc9da3244714b46e97db4e
-Merge: 000ba7e96 11913f58c
-Author: Maria Matejka 
-Date:   Thu Jan 9 21:54:15 2025 +0100
-
-    Merge remote-tracking branch 'origin/stable-v2.16' into HEAD
-
-commit 11913f58cb20a55e95458a1cbf4c63c2a1cea70a
-Author: Maria Matejka 
-Date:   Thu Jan 9 21:51:15 2025 +0100
-
-    NEWS and version update
-
-commit 000ba7e960ef744910d684c749c0a8d796a49694
-Merge: 407411299 abecb5bb4
-Author: Maria Matejka 
-Date:   Thu Jan 9 18:55:26 2025 +0100
-
-    Merge commit 'abecb5bb408f253cd24345ba94940ea0f7b59f4f' into HEAD
-
-commit 4074112992b332266592c7bde9c80f598ea824eb
-Merge: d0a328bfa 85aa28307
-Author: Maria Matejka 
-Date:   Thu Jan 9 18:46:04 2025 +0100
-
-    Merge commit '85aa283071ed75059fd8c889bc4ee33be1f901af' into HEAD
-
-commit d0a328bfa9381869d6b5b9bcd029c4b4679c703b
-Merge: 5c3eff564 d221f3973
-Author: Maria Matejka 
-Date:   Thu Jan 9 18:45:50 2025 +0100
-
-    Merge commit 'd221f39731be40ed3821f8db09d590edb849cb0c' into HEAD
-
-commit 5c3eff5645446cddb082130feda8298322f576c2
-Merge: b2de140d1 e06336559
-Author: Maria Matejka 
-Date:   Thu Jan 9 18:30:33 2025 +0100
-
-    Merge commit 'e063365590b9b857a5bd0acfa519783eba639bbf' into stable-v3.0
-
-commit abecb5bb408f253cd24345ba94940ea0f7b59f4f
-Author: Ondrej Zajicek 
-Date:   Thu Jan 9 16:44:51 2025 +0100
-
-    lib: Unify alignment of allocators
-    
-    Different internal allocators (memory blocks, linpools, and slabs) used
-    different way to compute alignment. Unify it to use alignment based on
-    standard max_align_t type.
-    
-    On x86_64, this does not change alignment of memory blocks and linpools
-    (both old and new is 16), but it increases alignment of slabs from 8 to
-    16.
-    
-    Minor changes by commiter.
-
-commit b2de140d1a8c9512a618d9a97a1769965cb160fb
-Author: Maria Matejka 
-Date:   Wed Jan 8 20:59:03 2025 +0100
-
-    Table: Fixed table debug settings reconfiguration
-
-commit a24ec59d2496cc4cb142fdcd93b68d44fe5f5048
-Author: Maria Matejka 
-Date:   Wed Jan 8 20:22:21 2025 +0100
-
-    Table: more best route refeed fixes
-    
-    Best route refeed is tricky. The journal may include repeatedly the same
-    route in the old and/or in the new position in case of flaps. We don't
-    like checking that fully in the RCU critical section which is already
-    way too long, thus we filter out the repeated occurence of the current
-    best route while keeping possibly more old routes.
-    
-    We also don't want to send spurious withdraws, and we need to check that
-    only one notification per net is sent for RA_OPTIMAL.
-    
-    There was also missing a rejected map update in case of idempotent
-    squashed update, and last but not least, the best route journal should
-    not include invalid routes (import keep filtered).
-
-commit 9381f8f2d8256949cddc9b426f1494f33a9a1154
-Author: Maria Matejka 
-Date:   Tue Jan 7 12:13:57 2025 +0100
-
-    Table: old best route refeed fix
-    
-    When refeeding with RA_OPTIMAL, the old best routes weren't announced,
-    leading to weird behavior of protocols, mostly kernel. Fixed.
-
-commit d43538acbd9596e7276b618b63c1be3c5af04087
-Author: Maria Matejka 
-Date:   Tue Jan 7 11:08:04 2025 +0100
-
-    BGP: fixed deterministic med crashes
-    
-    There were several places of forgotten NULL checks.
-    
-    Thanks to Alarig Le Lay  for reporting:
-    https://trubka.network.cz/pipermail/bird-users/2024-December/017990.html
-
-commit c2bd489bbcada08e753e785f21ca76985abe7f26
-Author: Maria Matejka 
-Date:   Fri Dec 27 16:22:59 2024 +0100
-
-    BGP: fix display name of bgp_otc attribute
-
-commit ffa57a430317934abae8403954ab29c43862f491
-Author: Maria Matejka 
-Date:   Tue Dec 24 16:16:55 2024 +0100
-
-    Allocate the normalization buckets on stack
-    
-    Even though allocating from tmp_linpool is quite cheap,
-    it isn't cheap when the block is larger than a page, which is the case here.
-    Instead, we now allocate just the result which typically fits in a page,
-    avoiding a necessity of a malloc().
-
-commit 4f7899e3cb17ee67875e53512db25ba5aa1dc236
-Author: Maria Matejka 
-Date:   Tue Dec 24 13:22:56 2024 +0100
-
-    BGP: TX bucket storage moved to Stonehenge
-
-commit 240dd41f06ef805f0f45ab8d2f58376fb9e538a6
-Author: Maria Matejka 
-Date:   Tue Dec 24 13:12:58 2024 +0100
-
-    Route attribute storage moved to Stonehenge
-
-commit 29df992f7f6ad03110240b2e65b498fe97371725
-Author: Maria Matejka 
-Date:   Tue Dec 24 12:18:39 2024 +0100
-
-    Stonehenge: multi-slab allocator
-    
-    To mid-term allocate and free lots of small blocks in a fast pace,
-    mb_alloc is too slow and causes heap bloating. We can already allocate
-    blocks from slabs, and if we allow for a little bit of inefficiency,
-    we can just use multiple slabs with stepped sizes.
-    
-    This technique is already used in ea_list allocation which is gonna be
-    converted to Stonehenge.
-
-commit 5edac7403e27715f2cb1ea37da38cd327512dbaf
-Author: Maria Matejka 
-Date:   Mon Dec 23 21:06:26 2024 +0100
-
-    Graceful recovery: converted to obstacles
-    
-    Yet another refcounting mechanism had a locking collision.
-
-commit 91c98efe572a64c0fc3bd666c185ce19b41a9bd7
-Author: Maria Matejka 
-Date:   Mon Dec 23 11:58:05 2024 +0100
-
-    Kernel: feed only once during startup
-    
-    There was an inefficiency in the initial scan state machine,
-    causing routes to be fed several times instead of just once.
-    Now the export startup is postponed until first krt_scan()
-    finishes and we actually can do the pruning with full information.
-
-commit 56be89911abbe1024b4db42bc5902f7aa583ee8f
-Author: Maria Matejka 
-Date:   Sun Dec 22 22:26:44 2024 +0100
-
-    CLI: Flushing tmp_linpool after every shown net.
-    
-    There is no reason to keep the allocated objects through multiple nets.
-
-commit ccff887e50dbc9cb5e815ef6c05aab7957e15c26
-Author: Maria Matejka 
-Date:   Sun Dec 22 22:10:38 2024 +0100
-
-    CLI: allocate TX buffers as pages, not by malloc
-    
-    Every malloc risks heap bloating and these blocks are already
-    the same size as pages.
-
-commit c848fd1c69a7a99cd4a60076534a977fa11cefaa
-Author: Jakub Ružička 
-Date:   Mon Dec 16 14:33:26 2024 +0100
-
-    Debian: Depend on libssh's default flavor
-    
-    This mirrors Debian bird2 change, gcrypt flavor is deprecated.
-    
-    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1074257
-
-commit c7c49c9e2ab86fef722d737c2c84eb1360d6fae2
-Author: Jakub Ružička 
-Date:   Mon Dec 16 14:28:59 2024 +0100
-
-    Debian: Update Standards-Version to latest 4.7.0
-
-commit 5a1b88158da365caf0cf409d14b6335aa456766e
-Author: Jakub Ružička 
-Date:   Mon Dec 16 14:28:12 2024 +0100
-
-    Debian: Reformat with wrap-and-sort -bast
-
-commit 99c423dda1f5c4b281aea5cfd8b7b3c59c116809
-Author: Jakub Ružička 
-Date:   Wed Dec 4 19:24:38 2024 +0100
-
-    Debian: Add BuildDepends: ca-certificates
-    
-    This should reportedly fix test issues on ARM.
-
-commit 87db62fea7b2995a71c51bf786d52dc8c9dad847
-Author: Jakub Ružička 
-Date:   Tue Oct 10 13:04:08 2023 +0200
-
-    Debian: Add Rules-Requires-Root: no to d/control
-
-commit a07f0b1e7d2832356d0ab0e8ec3220efa30e07bb
-Author: Maria Matejka 
-Date:   Thu Dec 26 11:34:02 2024 +0100
-
-    Static: fixed ASPA reconfiguration
-    
-    Due to an oversight, the provider lists weren't compared on reconfiguration.
-    
-    Reported-By: Ralph Covelli 
-
-commit 96ec6b42d23fd0e8f4ada43a3390ccdca5518b22
-Author: Ondrej Zajicek 
-Date:   Thu Jan 9 00:49:19 2025 +0100
-
-    CI: Cleanup tests for single protocol builds
-    
-    BFD and MRT can be built independently, only BMP requires BGP.
-
-commit c633cd15026cd2fcfd0fb7585e5b9e6a84767ca4
-Author: Ondrej Zajicek 
-Date:   Thu Jan 9 00:46:37 2025 +0100
-
-    BMP: Cleanup keyword declarations
-
-commit c386369645e584facaad88ec292f2fe0bc70d974
-Author: Ondrej Zajicek 
-Date:   Thu Jan 9 00:30:37 2025 +0100
-
-    BFD: Fix missing keyword declarations
-    
-    Some keywords were missing for BFD-only build.
-
-commit 85aa283071ed75059fd8c889bc4ee33be1f901af
-Author: Maria Matejka 
-Date:   Thu Dec 26 11:34:02 2024 +0100
-
-    Static: fixed ASPA reconfiguration
-    
-    Due to an oversight, the provider lists weren't compared on reconfiguration.
-    
-    Reported-By: Ralph Covelli 
-
-commit d221f39731be40ed3821f8db09d590edb849cb0c
-Author: Ondrej Zajicek 
-Date:   Tue Dec 17 09:00:42 2024 +0100
-
-    Nest: Fix handling of 64-bit rte_src.private_id
-    
-    The commit 21213be523baa7f2cbf0feaa617f265c55e9b17a expanded private_id
-    in route source to u64, but forgot to modify function arguments, so it
-    was still cropped at 32-bit, which may cause some collisions for L3VPN.
-    This patch fixes that.
-
-commit e063365590b9b857a5bd0acfa519783eba639bbf
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 18:56:30 2024 +0100
-
-    Lib: Ensure that all net_addr structures have the same alignment
-    
-    Also weaken the explicit alignment of net_addr to be u32, as VPN
-    is already u32-aligned.
-
-commit fe5ca3fa7dfc3b720e7dedd68dbb891ba75ac157
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 19:29:27 2024 +0100
-
-    Doc: Fix protocol outline in RPKI
-    
-    Protocol outlines should not contain specific values.
-    
-    Also fix some space intendation in code sections.
-
-commit cf659a05a4cf5ead18e0cfa5489db3c1b5c67fe6
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 18:27:42 2024 +0100
-
-    Lib: Data type for VPN route distinguishers
-    
-    Use a distinct data structure for VPN route distinguishers instead
-    of just u64.
-
-commit f9c7861e116ad8dc5e5a2314d0f976bf8c938de0
-Author: Ondrej Zajicek 
-Date:   Thu Dec 12 04:04:07 2024 +0100
-
-    Netlink: Handle onlink flag on BSD-Netlink
-    
-    On BSD, the onlink flag is not tracked or reported by kernel. We are
-    using an heuristic that assigns the onlink flag to routes scanned from
-    the kernel. We should use the same heuristic even in BSD-Netlink
-    case, as the onlink flag is not reported here too.
-    
-    Thanks to Björn König for the original patch.
-
-commit de7ded6ef614ae3138599b8a322f3eb6c204d57b
-Author: Fabian Bläse 
-Date:   Tue Dec 10 02:14:06 2024 +0100
-
-    Babel: fix seqno wrapping on seqno request
-    
-    The Babel seqno wraps around when reaching its maximum value (UINT16_MAX).
-    When comparing seqnos, this has to be taken into account. Therefore,
-    plain number comparisons do not work.
-
-commit 83495362789d961914c4bfaa590e31cb17370ed0
-Author: Maria Matejka 
-Date:   Sat Dec 21 19:02:22 2024 +0100
-
-    BFD: Fix session reconfiguration locking order
-    
-    The sessions have to be updated asynchronously to avoid
-    cross-locking between protocols.
-    
-    Testsuite: cf-ibgp-bfd-switch, cf-ibgp-multi-bfd-auth
-    Fixes: #139
-    
-    Thanks to Daniel Suchy  for reporting:
-    https://trubka.network.cz/pipermail/bird-users/2024-December/017984.html
-
-commit 6779e5da698feb9b9e02411859ad81885ba46c01
-Author: Maria Matejka 
-Date:   Fri Dec 20 11:28:00 2024 +0100
-
-    BGP: fix locking order error on dynamic protocol spawn
-    
-    We missed that the protocol spawner violates the prescribed
-    locking order. When the rtable level is locked, no new protocol can be
-    started, thus we need to:
-    
-    * create the protocol from a clean mainloop context
-    * in protocol start hook, take the socket
-    
-    Testsuite: cf-bgp-autopeer
-    Fixes: #136
-    
-    Thanks to Job Snijders  for reporting:
-    https://trubka.network.cz/pipermail/bird-users/2024-December/017980.html
-
-commit ab74652f96c301dd2d2d2a831dd1a159ae1d5e02
-Author: Maria Matejka 
-Date:   Thu Dec 19 12:28:27 2024 +0100
-
-    Kernel: when channel traces, we have to trace the final result
-    
-    Otherwise it looks like we are sending too much traffic to netlink
-    every other while, which is not true. Now we can disambiguate between
-    in-kernel updates and ignored routes.
-
-commit 0a2f92ad205d96d0be0945ecf2bb740b68d5a3c1
-Author: Maria Matejka 
-Date:   Thu Dec 19 11:54:05 2024 +0100
-
-    Table: not feeding twice, once is enough
-    
-    If there is no feed pending, the requested one should be
-    activated immediately, otherwise it is activated only after
-    the full run, effectively running first a full feed and
-    then the requested one.
-
-commit b6caccfd45fb639b6dd3a8d140d3c5ba4cc79311
-Author: Maria Matejka 
-Date:   Thu Dec 19 11:00:15 2024 +0100
-
-    Kernel: Fix crash for merge paths on if no route is in BIRD
-    
-    There was a missing check for a NULL return value.
-    Also fixed an indenting error.
-    
-    Thanks to Radu Anghel for reporting it:
-    https://bird.network.cz/pipermail/bird-users/2024-December/017977.html
-
-commit e7bd976178a2b133c36492420c0ad0455253f81e
-Author: Maria Matejka 
-Date:   Tue Dec 17 09:42:16 2024 +0100
-
-    NEWS and version update
-
-commit 96dc63d602016c38f43677b2f95705aee9dc04e1
-Author: Maria Matejka 
-Date:   Tue Dec 3 17:27:09 2024 +0100
-
-    CI: test building single protocols
-    
-    Several users build BIRD with excluded support for protocols they don't
-    need. Testing single-protocol builds; the assumption is that if single
-    protocols and all protocols are buildable, then possibly any reasonable
-    combination is buildable as well.
-    
-    Minor change by committer.
-
-commit 59759c6c7d9fc2a9b700c593fddc5652601458ae
-Author: Maria Matejka 
-Date:   Tue Dec 3 20:08:30 2024 +0100
-
-    Fixed several tests which needed static protocol
-    
-    Now they need device protocol which is always built.
-
-commit 67eb38682804b7e9fe9543b2b75cdbfc670cab0d
-Author: Maria Matejka 
-Date:   Tue Dec 3 20:08:23 2024 +0100
-
-    Disabling filter test unless needed protocols are configured
-
-commit 8d062e93120cbb94f8dbb3b73c1129d1848f6fca
-Author: Ondrej Zajicek 
-Date:   Tue Dec 17 09:00:42 2024 +0100
-
-    Nest: Fix handling of 64-bit rte_src.private_id
-    
-    The commit 21213be523baa7f2cbf0feaa617f265c55e9b17a expanded private_id
-    in route source to u64, but forgot to modify function arguments, so it
-    was still cropped at 32-bit, which may cause some collisions for L3VPN.
-    This patch fixes that.
-
-commit 7e65bb83c70f4351fef58f539c0b3300d3607f24
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 19:29:27 2024 +0100
-
-    Doc: Fix protocol outline in RPKI
-    
-    Protocol outlines should not contain specific values.
-    
-    Also fix some space intendation in code sections.
-
-commit 161aef353a56532752d5d0f97e432c0915058050
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 18:56:30 2024 +0100
-
-    Lib: Ensure that all net_addr structures have the same alignment
-    
-    Also weaken the explicit alignment of net_addr to be u32, as VPN
-    is already u32-aligned.
-
-commit 34b7d77e06f7fa2756a68fa4b1ebdce509dfe277
-Author: Ondrej Zajicek 
-Date:   Mon Dec 16 18:27:42 2024 +0100
-
-    Lib: Data type for VPN route distinguishers
-    
-    Use a distinct data structure for VPN route distinguishers instead
-    of just u64.
-
-commit 733baa1dbdf70face67ca56ded42529e5efe53d9
-Author: Jakub Ružička 
-Date:   Mon Dec 16 14:23:12 2024 +0100
-
-    Debian: Depend on libssh's default flavor
-    
-    This mirrors Debian bird2 change, gcrypt flavor is deprecated.
-    
-    https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1074257
-
-commit 1f6ecd7e19495422256590122ac48f8e5fbbf676
-Author: Katerina Kubecova 
-Date:   Mon Dec 16 11:37:10 2024 +0100
-
-    BGP: Print warnings when the allocated memory is larger than given acceptable maximum.
-
-commit c6b778794e79332f12ccc7eb411fff25c38ff6ee
-Author: Maria Matejka 
-Date:   Mon Dec 16 10:59:59 2024 +0100
-
-    Table exporter journal dumping and memsize
-    
-    The show-memory command wasn't showing the consumed memory
-    properly because it ignored the journal size. Now it does.
-
-commit b67db7c97d97f4121e854427101ac215738c4160
-Author: Maria Matejka 
-Date:   Mon Dec 16 09:50:20 2024 +0100
-
-    Fix mallopt configure checks
-    
-    Some systems do have malloc.h but don't have mallopt.
-
-commit d373d4837735d0132c6a153f6dbf2cd31a33753a
-Author: Maria Matejka 
-Date:   Mon Dec 16 09:34:08 2024 +0100
-
-    Table cork compromise
-    
-    The original values were way too low but what was set
-    later was too high and caused memory buildup upon startup.
-
-commit d69d80467941aaccd41cef4dfe7ea3c5de34f146
-Author: Maria Matejka 
-Date:   Sun Dec 15 21:04:22 2024 +0100
-
-    Table prune inhibited during reconfiguration
-    
-    When many changes are done during reconfiguration, the table may
-    start pruning old routes before everything is settled down, slowing
-    down not only the reconfiguration, but also the shutdown process.
-
-commit 792189e807ab699ec475939c640bbdaa2f8b3513
-Author: Maria Matejka 
-Date:   Sat Dec 14 23:21:07 2024 +0100
-
-    Disable multiple malloc arenas
-    
-    In our usecase, these are impossibly greedy because we often
-    free memory in a different thread than where we allocate, forcing
-    the default allocator to scatter the used memory all over the place.
-
-commit 2d7c8f4d5cefba18539dec2d01c598e87cbf4969
-Author: Maria Matejka 
-Date:   Sat Dec 14 21:33:47 2024 +0100
-
-    More accurate allocator internal log
-
-commit c82f7ed4aac07add16f55e4b64fd33f5a0d76652
-Author: Maria Matejka 
-Date:   Sat Dec 14 19:49:56 2024 +0100
-
-    Drop forgotten debug logs
-
-commit 4c3ac54ee3bd00e55e25292df1092dc9bf1f3d5e
-Author: Katerina Kubecova 
-Date:   Fri Dec 13 16:16:59 2024 +0100
-
-    ROA: Extended and more thorough test
-    
-    There was a suspicion that maybe the BIRD 3 version of ROA gets the
-    digesting wrong. This test covers the nastiest cornercases we could
-    think about, so now we can expect it to be right.
-
-commit f2925d15fc65b98f4edc22b52b0000581f8b69ba
-Merge: 060654066 1dbee120d
-Author: Maria Matejka 
-Date:   Fri Dec 13 20:56:30 2024 +0100
-
-    Merge commit '1dbee120' into thread-next
-
-commit 060654066ee4dfb18e1e3bb6042bfd9401199056
-Merge: ef63946d2 4fb8fe6f5
-Author: Maria Matejka 
-Date:   Fri Dec 13 20:56:08 2024 +0100
-
-    Merge tag 'v2.16' into thread-next
-    
-    v2.16
-
-commit ef63946d2edd2088d4140b2a4e8678979a73af67
-Author: Katerina Kubecova 
-Date:   Fri Dec 13 12:35:02 2024 +0100
-
-    Allow allocating cold pages inside RCU critical section
-    
-    We have quite large critical sections and we need to allocate inside
-    them. This is something to revise properly later on, yet for now,
-    instead of slowly but surely growing the virtual memory address space,
-    it's better to optimize the cold page cache pickup and count situations
-    where this happened inside the critical section.
-
-commit af89c43413f773980b7bcc676f4fe50635b7418d
-Author: Maria Matejka 
-Date:   Fri Dec 13 19:10:55 2024 +0100
-
-    Fixed a subtle memory leak in protocol restart routine
-
-commit 93621ed9f4441fb540726e06fbf7406f37f30ac6
-Merge: b6f6ab0e5 707cad618
-Author: Maria Matejka 
-Date:   Fri Dec 13 18:40:11 2024 +0100
-
-    Merge commit '707cad61' into thread-next
-
-commit b6f6ab0e5dfaf2ed8c7f7b3cd9dd4f0efcaaf61d
-Merge: 731593685 ef4561185
-Author: Maria Matejka 
-Date:   Fri Dec 13 16:01:19 2024 +0100
-
-    Merge commit 'ef456118' into thread-next
-
-commit 731593685bab88d595bde1068c70f557b81d740e
-Merge: a9c1966f0 d85fa48e3
-Author: Maria Matejka 
-Date:   Fri Dec 13 15:23:01 2024 +0100
-
-    Merge commit 'd85fa48e' into thread-next
-    
-    The resource dumping routines needed to be updated in v3 to use the new
-    API introduced in v2.
-    
-    Conflicts:
-            filter/f-util.c
-            filter/filter.c
-            lib/birdlib.h
-            lib/event.c
-            lib/mempool.c
-            lib/resource.c
-            lib/resource.h
-            lib/slab.c
-            lib/timer.c
-            nest/config.Y
-            nest/iface.c
-            nest/iface.h
-            nest/locks.c
-            nest/neighbor.c
-            nest/proto.c
-            nest/route.h
-            nest/rt-attr.c
-            nest/rt-table.c
-            proto/bfd/bfd.c
-            proto/bmp/bmp.c
-            sysdep/unix/io.c
-            sysdep/unix/krt.c
-            sysdep/unix/main.c
-            sysdep/unix/unix.h
-
-commit a9c1966f083444ad2af3e41333629bef203b68b9
-Merge: 4af3ee1f2 eaadf3af3
-Author: Maria Matejka 
-Date:   Thu Dec 12 21:07:53 2024 +0100
-
-    Merge remote-tracking branch 'origin/apkg-v3' into thread-next
-
-commit 4af3ee1f2f6506ba7d4caaffc1e4307e101fc177
-Author: Katerina Kubecova 
-Date:   Wed Nov 20 16:53:13 2024 +0100
-
-    EAttr normalization rewritten to use bucket sort
-    
-    The EAttr ID space is dense so we can just walk once, sweep the whole
-    input and go home.
-    
-    There is a little bit of memory inefficiency in allocating always the
-    largest possible block, yet it isn't too bad.
-    
-    There are also unit tests for this.
-
-commit 6e940c259da80fa8aea6dc1070b8b4cdd5847914
-Author: Maria Matejka 
-Date:   Thu Dec 12 15:00:26 2024 +0100
-
-    CLI: show threads all crash fixed
-    
-    When socket dropped before finished, it failed to cleanup.
-
-commit e0ed978e753c57b65b89e860b49fd29acb0b43ad
-Author: Ondrej Zajicek 
-Date:   Thu Dec 12 04:04:07 2024 +0100
-
-    Netlink: Handle onlink flag on BSD-Netlink
-    
-    On BSD, the onlink flag is not tracked or reported by kernel. We are
-    using an heuristic that assigns the onlink flag to routes scanned from
-    the kernel. We should use the same heuristic even in BSD-Netlink
-    case, as the onlink flag is not reported here too.
-    
-    Thanks to Björn König for the original patch.
-
-commit 28b0adc15f82996a737fd832ef4a934dbbf29d93
-Author: Maria Matejka 
-Date:   Wed Dec 11 17:51:46 2024 +0100
-
-    Fix alignment requirements to include atomic u64.
-    
-    Not having this led to bus errors on unaligned atomic u64 access
-    on architectures with 4B pointers.
-
-commit 73ace6acad0b434849e0a9cd51603cd49c136cb3
-Author: Maria Matejka 
-Date:   Wed Dec 11 10:05:05 2024 +0100
-
-    Proto show: show creation and last autorestart time
-
-commit fa5923289ed7429af75708595b7b2c92473d030b
-Merge: fa0bda227 4dd5b3d90
-Author: Maria Matejka 
-Date:   Tue Dec 10 23:57:59 2024 +0100
-
-    Merge commit '4dd5b3d9' into thread-next
-
-commit fa0bda2278f63e632f2a126e495a4cb44e96534c
-Merge: 1f8eb2071 145830bdc
-Author: Maria Matejka 
-Date:   Tue Dec 10 23:55:42 2024 +0100
-
-    Merge commit '145830bd' into thread-next
-
-commit 1f8eb2071056ebe0029619fb04b154be8b867667
-Merge: 1fc569e32 946386f2d
-Author: Maria Matejka 
-Date:   Tue Dec 10 23:55:05 2024 +0100
-
-    Merge commit '946386f2' into thread-next
-
-commit 1fc569e32b6d582807dcf7d3e8076443e2affc57
-Merge: cc0c8ce99 7ee27418a
-Author: Maria Matejka 
-Date:   Tue Dec 10 23:50:13 2024 +0100
-
-    Merge commit '7ee27418' into thread-next
-
-commit cc0c8ce99203ee0a79501d013db96ce8c799fad2
-Author: Maria Matejka 
-Date:   Tue Dec 10 22:31:53 2024 +0100
-
-    BMP: Fixing corner cases
-    
-    Protocol state propagation collision, shutdown collision.
-
-commit cde582977fbc568f12f8e40851def33f382259dd
-Author: Maria Matejka 
-Date:   Mon Dec 9 11:21:01 2024 +0100
-
-    BMP: Never touching the BGP directly
-    
-    Dropped hopefully last remnants of BMP directly accessing BGP structures.
-
-commit dc692ae06a77f0e6c859411a005d0f9693d21ef7
-Author: Maria Matejka 
-Date:   Mon Dec 9 15:34:11 2024 +0100
-
-    Nest: proto/channel state table naming convention cleanup
-
-commit d503204aa0773e847938ddd5d587b1ed20b99ed1
-Author: Katerina Kubecova 
-Date:   Fri Dec 6 13:16:18 2024 +0100
-
-    Lockfree journal: Cleanup hook runs only when needed.
-    
-    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.
-
-commit 38a422d489121bd318b7df7d59d3792d5b6bd76b
-Author: Ondrej Zajicek 
-Date:   Tue Dec 10 14:58:05 2024 +0100
-
-    Build: Fix newlines in build of proto-build.c
-    
-    Add newlines to the body of proto-build.c . Use printf instead of echo
-    for portable handling of backslash sequences.
-    
-    Thanks to CCX for the change.
-
-commit bc15f0b9c704dcac85ac471d96509e866dc5b09b
-Author: Maria Matejka 
-Date:   Tue Dec 10 10:52:52 2024 +0100
-
-    Nest: fixed a race-condition between import and export
-    
-    There was a leaking stack pointer to the global memory.
-    Fixed by making that temporary structure thread local static.
-
-commit cfac0076fb7365fe91360fa351f311f141a7a303
-Author: Fabian Bläse 
-Date:   Tue Dec 10 02:14:06 2024 +0100
-
-    Babel: fix seqno wrapping on seqno request
-    
-    The Babel seqno wraps around when reaching its maximum value (UINT16_MAX).
-    When comparing seqnos, this has to be taken into account. Therefore,
-    plain number comparisons do not work.
-
-commit eaadf3af3ae64e78516e5630c634e17e7b1fb84a
-Author: Jakub Ružička 
-Date:   Fri Dec 6 15:51:26 2024 +0100
-
-    Fix typos found by lintian
-    
-    I: bird3: spelling-error-in-binary "an other" "another" [usr/sbin/bird]
-    I: bird3: spelling-error-in-binary Reseting Resetting [usr/sbin/bird]
-    I: bird3: spelling-error-in-binary authenication authentication [usr/sbin/bird]
-    
-    I was unable to fix the following:
-    
-    I: bird3: spelling-error-in-binary upto up to [usr/sbin/bird]
-
-commit 0f0a8d50274f75cfe73a94bed988ed193a6c81ee
-Author: Jakub Ružička 
-Date:   Thu Dec 5 13:27:56 2024 +0100
-
-    Debian: Remove unneeded Pre-Depends: init-system-helpers
-    
-    Lintian proclaims this is an essential package.
-
-commit 2eba82fcda452eee49981df5b22be2f14282d8d9
-Author: Jakub Ružička 
-Date:   Fri Dec 6 15:45:44 2024 +0100
-
-    Debian: Add upstream lintian-overrides
-
-commit 5e3fcd60f3e7eaefda312184e92030eb77d74354
-Author: Jakub Ružička 
-Date:   Wed Dec 4 19:24:38 2024 +0100
-
-    Debian: Add BuildDepends: ca-certificates
-    
-    This should reportedly fix test issues on ARM.
-
-commit ce51b84df32713f4c9e174e06eabd80e027be33a
-Author: Jakub Ružička 
-Date:   Tue Oct 10 13:04:08 2023 +0200
-
-    Debian: Add Rules-Requires-Root: no to d/control
-
-commit c7b6d8b436bd08add09edbb386baeaff774b22f4
-Author: Jakub Ružička 
-Date:   Thu Dec 5 13:20:19 2024 +0100
-
-    Debian: Rename package to bird3
-    
-    Also reformat using
-    
-        wrap-and-sort -bast
-
-commit 6a55359b1eeba099dddf410bb37137370fe19b86
-Author: Ondrej Zajicek 
-Date:   Fri Dec 6 04:06:16 2024 +0100
-
-    BGP: Graceful restart timer overrides
-    
-    Implement several options (min/max graceful restart time, min/max long
-    lived stale time) to override graceful restart and long-lived graceful
-    restart timer values, as suggested by RFC 9494.
-
-commit fc5d06c28db76073373ab99e9dc88e3739abebee
-Author: Ondrej Zajicek 
-Date:   Thu Dec 5 16:35:01 2024 +0100
-
-    BGP: Update LLGR draft references to RFC 9494
-
-commit 77a4b21365ba261345b9eecd396366bd7678c5bb
-Author: Maria Matejka 
-Date:   Thu Dec 5 15:07:56 2024 +0100
-
-    BMP: Dropped remnants of unused channels
-
-commit f1a04ce190e43b2878f15a8f2e3518cb578a2981
-Author: Maria Matejka 
-Date:   Thu Dec 5 14:59:54 2024 +0100
-
-    BMP: refactored lists and table locks to tlists
-
-commit d5f01efbe69020e62edf378ee9777bb1955f00fc
-Author: Maria Matejka 
-Date:   Thu Dec 5 12:12:34 2024 +0100
-
-    BMP: protocol state ingestion refactoring
-
-commit 2128c648e096e063d556cfd9805a9eed82a48702
-Author: Maria Matejka 
-Date:   Wed Dec 4 10:16:42 2024 +0100
-
-    BMP: Tamed a TX buffer warning
-
-commit 63221eba2ecaaea6e9ae4aec8c591c29443b7e79
-Merge: 723a0fe42 a47704a53
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 19:40:21 2024 +0100
-
-    Merge commit 'a47704a53db4f088e52e43f8b24785e5777ce147' into thread-next
-
-commit 723a0fe4243482a014667a3efc14f4484e4931fe
-Merge: abc43c097 73e7d3f5c
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 19:00:05 2024 +0100
-
-    Merge commit '73e7d3f5cede2e72eb9e77d61424a8c443672c09' into thread-next
-
-commit abc43c097ad4eaf092374ca72ee214cd7d26d223
-Merge: 7cbcb7b23 5205ff974
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 18:48:20 2024 +0100
-
-    Merge commit '5205ff97448cc34cf7334e90172c28eb48f227f2' into thread-next
-
-commit 7cbcb7b23092b8552744de9aa8b73c318c14a060
-Merge: 6aea356b2 e6a100b31
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 18:22:14 2024 +0100
-
-    Merge commit 'e6a100b31a7637ee739338e4b933367707ec931f' into thread-next
-
-commit 1dbee120d383981811aa47b244886962ebd345c0
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 17:23:09 2024 +0100
-
-    CI: Fix filter tests for ASPA
-    
-    (broken by previous change)
-
-commit c926a6e105f7eb27ea3d1f7368a508eb42e0edf7
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 17:05:23 2024 +0100
-
-    Static: Fix ASPA static route argument
-    
-    It seems that it should be 'providers' instead of 'provider'.
-    
-    It matches keyword declaration and documentation. Mismatch beween keyword
-    declaration also breaks static-only builds.
-
-commit 6aea356b2ae670bd6a58f1a5fdb344c52afdb4a3
-Merge: bda81c62b 460321cfe
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 15:45:25 2024 +0100
-
-    Merge commit '460321cfe979459e3b78ba87694f29865d321612' into thread-next
-
-commit 4fb8fe6f53a0aba037b29d1ab92fb549f78de46f
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 04:59:56 2024 +0100
-
-    NEWS and version update
-
-commit b8008791cd0d9e1cc0972fe034886a9c8ddbb823
-Author: Maria Matejka 
-Date:   Tue Dec 3 12:29:30 2024 +0100
-
-    Documentation: Updating roadmap as of end of 2024
-
-commit 707cad6188313bc289ced5eaac44f10a9e056d13
-Author: Maria Matejka 
-Date:   Tue Dec 3 10:57:10 2024 +0100
-
-    CLI: Dumping forces new file creation instead of truncating.
-
-commit 2ab3f22e4a7ff9c566b38a9075620bdd61fef6b0
-Author: Maria Matejka 
-Date:   Fri Nov 15 08:20:17 2024 +0100
-
-    CLI: show memory also displays cold pages
-    
-    Minor changes by committer.
-
-commit ef4561185055cb66dd2d141623bdbcbb306a5403
-Author: Ondrej Zajicek 
-Date:   Tue Dec 3 01:19:44 2024 +0100
-
-    RPKI: Fix several errors in handling of Error PDU
-    
-    Fix several errors including:
-     - Unaligned memory access to 'Length of Error Text' field
-     - No validation of 'Length of Encapsulated PDU' field
-     - No validation of 'Error Code' field
-     - No validation of characters in diagnostic message
-
-commit 89d548accb79b706d6bc0a6eb89ab390fa17333b
-Author: Ondrej Zajicek 
-Date:   Mon Dec 2 06:38:59 2024 +0100
-
-    RPKI: Increase max PDU length to 64k
-    
-    APSA records can be arbitrarily large, let's use 64k as
-    a reasonable limit.
-
-commit d85fa48e3a2e50d92a1e83a1202bced7b6b3d527
-Author: Maria Matejka 
-Date:   Fri Nov 15 19:05:26 2024 +0100
-
-    Slab: Write out all block pointers when asked for dump
-
-commit ceab02832629a69dbd3cae13087d3f576f66f355
-Author: Maria Matejka 
-Date:   Fri Nov 15 18:35:30 2024 +0100
-
-    Linpool: Write out all block pointers when asked for dump
-
-commit da8a23277eefb46c5482fe63ecc7f75fcc21c0a6
-Author: Maria Matejka 
-Date:   Thu Nov 14 20:43:35 2024 +0100
-
-    CLI: Dumping internal data structures to files, not to debug output
-    
-    All the 'dump something' CLI commands now have a new mandatory
-    argument -- name of the file where to dump the data. This allows
-    for more flexible dumping even for production deployments where
-    the debug output is by default off.
-    
-    Also the dump commands are now restricted (they weren't before)
-    to assure that only the appropriate users can run these time consuming
-    commands.
-
-commit 4dd5b3d90e962d5fd1794f97a8f82077f8f1eb36
-Author: Maria Matejka 
-Date:   Thu Nov 14 21:20:49 2024 +0100
-
-    Logging: exposing vlog() to log va_lists
-
-commit 145830bdc871dc97d7d170ec52932cbcf63fe803
-Author: Maria Matejka 
-Date:   Thu Nov 14 20:46:45 2024 +0100
-
-    CLI: adding cli_vprintf()
-
-commit 946386f2dd69982105d0b02a90f57391b265d2ef
-Author: Maria Matejka 
-Date:   Thu Nov 14 22:15:56 2024 +0100
-
-    MRT: instead of crashing, ignore non-BGP attributes
-
-commit 7ee27418a7d38542577c48abc43df57c0d3e69a5
-Author: Maria Matejka 
-Date:   Thu Nov 14 23:34:28 2024 +0100
-
-    Printf: impossible buffer overflow fix
-    
-    When printing near the end of the buffer, there was an overflow in two cases:
-    
-    (1) %c and size is zero
-    (2) %1N, %1I, %1I4, %1I6 (auto-fill field_width for Net or IP), size is
-        more than actual length of the net/ip but less than the auto-filled
-        field width.
-    
-    Manual code examination showed that nothing could have ever triggered
-    this behavior. All older versions of BIRD, including BIRD 3 development
-    versions, are totally safe. This exact overflow has been found while
-    implementing a new feature in later commits.
-
-commit a47704a53db4f088e52e43f8b24785e5777ce147
-Author: Ondrej Zajicek 
-Date:   Mon Dec 2 00:00:36 2024 +0100
-
-    BMP: Refactor route monitor message serialization
-    
-    Instead of several levels of functions, just have two functions
-    (one for routes, the other for end-of-rib), this allows to create
-    messages in a simple linear fashion.
-    
-    Also reduce three duplicite functions to construct BGP header for
-    BMP messages to just one.
-
-commit 73e7d3f5cede2e72eb9e77d61424a8c443672c09
-Author: Ondrej Zajicek 
-Date:   Sun Dec 1 22:54:11 2024 +0100
-
-    BMP: Refactor computation of message length
-    
-    Fill message length after the message is created instead of computing
-    it beforehand. Also rename some functions to fit common pattern.
-
-commit 5205ff97448cc34cf7334e90172c28eb48f227f2
-Author: Ondrej Zajicek 
-Date:   Sun Dec 1 20:56:53 2024 +0100
-
-    BMP: Refactor per-peer header arguments
-    
-    Put all arguments for per-peer header into one structure instead of
-    passing them around as a lump of arguments. Also simplify code for
-    peer flags.
-
-commit e6a100b31a7637ee739338e4b933367707ec931f
-Author: Maria Matejka 
-Date:   Tue Sep 17 16:27:54 2024 +0200
-
-    BMP: simplified update queuing and better memory performance
-    
-    This commit is quite a substantial rework of the underlying layers in
-    BMP TX:
-    
-    - several unnecessary layers of indirection dropped, including most of
-      the original BMP's buffer machinery
-    - all messages are now written directly into one protocol's buffer
-      allocated for the whole time big enough to fit every possible message
-    - output blocks are allocated by pages and immediately returned when
-      used, improving the overall memory footprint
-    - no intermediary allocation is done from the heap altogether
-    - there is a documented and configurable limit on the TX queue size
-
-commit 460321cfe979459e3b78ba87694f29865d321612
-Author: Maria Matejka 
-Date:   Thu Nov 28 23:08:50 2024 +0100
-
-    Formatting numbers with order prefixes
-    
-    Unit tests by Ondrej Zajicek.
-
-commit c48a7ac0cc76d2d5c1682251cd8b03a8953bd6b5
-Author: Maria Matejka 
-Date:   Tue Sep 17 15:59:07 2024 +0200
-
-    BMP: drop an unused mempool
-
-commit bda81c62bf202ce0de8db98e4cd73e8d75ed7b1e
-Merge: ffba45657 3ca6e03db
-Author: Maria Matejka 
-Date:   Fri Nov 29 12:07:10 2024 +0100
-
-    Merge commit '3ca6e03d' into thread-merge-2.16
-
-commit ffba45657e503e2e279f111bdf52786e95236f0c
-Merge: cd63810e4 fc2b4b26a
-Author: Maria Matejka 
-Date:   Fri Nov 29 12:05:40 2024 +0100
-
-    Merge commit 'fc2b4b26' into thread-merge-2.16
-    
-    Actually, completely rewritten the original patch as in v3, the logging
-    initialization is much more complex and requires allocation.
-    
-    This way, to bootstrap properly, the logger has a pre-defined log target
-    to stderr.
-
-commit cd63810e4e830d24db03ea8e5e1ba7a5d725bcfc
-Merge: 2936e15b2 997d2f578
-Author: Maria Matejka 
-Date:   Fri Nov 29 11:43:49 2024 +0100
-
-    Merge commit '997d2f57' into thread-merge-2.16
-
-commit 2936e15b28cbb3edc9b6d64fd60172f82fe9c1d6
-Merge: caa5e7907 49be4a032
-Author: Maria Matejka 
-Date:   Fri Nov 29 11:30:59 2024 +0100
-
-    Merge commit '49be4a03' into thread-merge-2.16
-
-commit caa5e7907a42d5ea665233b64e4e13fb15f4dfd0
-Author: Maria Matejka 
-Date:   Fri Nov 29 11:27:30 2024 +0100
-
-    Conf: build fix for older bisons
-    
-    Typed blocks are probably a too new extension to rely on.
-
-commit 1b0ffdf80e6d1aa93d235d847622dd406c3108de
-Merge: c1ad3e58c 82d57fb7a
-Author: Maria Matejka 
-Date:   Fri Nov 29 11:26:18 2024 +0100
-
-    Merge commit '82d57fb7' into thread-merge-2.16
-
-commit c1ad3e58c0bc3cabacaeef5ee17f887036430ec9
-Merge: 145fcd318 38195ac62
-Author: Maria Matejka 
-Date:   Fri Nov 29 10:49:53 2024 +0100
-
-    Merge commit '38195ac6' into thread-merge-2.16
-
-commit 145fcd3180e46aa44223ca3cd6a9e5005838ae76
-Merge: 2e1ff4b23 c7e843c1a
-Author: Maria Matejka 
-Date:   Fri Nov 29 10:28:19 2024 +0100
-
-    Merge commit 'c7e843c1' into thread-merge-2.16
-
-commit 2e1ff4b2306e7cb68f2677547e3d1c3c97c7011c
-Merge: 14bc1fc4c 294d363da
-Author: Maria Matejka 
-Date:   Fri Nov 29 10:26:52 2024 +0100
-
-    Merge commit '294d363d' into thread-merge-2.16
-
-commit 14bc1fc4c18198eb02db5f6a5e57536ea0b9c3cf
-Merge: baf963973 1002c35bf
-Author: Maria Matejka 
-Date:   Fri Nov 29 10:25:59 2024 +0100
-
-    Merge commit '1002c35b' into thread-merge-2.16
-
-commit baf963973dd354afe6fe5a5ca0553d24550261e1
-Merge: e0b1826b7 80ca0ed27
-Author: Maria Matejka 
-Date:   Fri Nov 29 09:51:38 2024 +0100
-
-    Merge commit '80ca0ed2' into thread-merge-2.16
-    
-    Fixed a nasty merge conflict with bgp_origin serving double duty
-    as both an attribute and enum name.
-
-commit 3ca6e03db774f0a2d462faf20646e4a341664c8d
-Author: Maria Matejka 
-Date:   Thu Nov 28 14:10:40 2024 +0100
-
-    RPKI: refactored pdu to host byte order conversion
-    
-    We shouldn't convert bytes 2 and 3 of the PDU blindly, there are several
-    cases where these are used by bytes. Instead, the conversion is done
-    only where needed.
-    
-    This fixes misinterpretation bug of ASPA PDU flags on little endian
-    architectures.
-
-commit e0b1826b7c155132df0aaa940f6d335c72a54928
-Merge: 2b1e4b072 072821e55
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:44:04 2024 +0100
-
-    Merge commit '072821e5' into thread-merge-2.16
-
-commit 2b1e4b07242c645e404b0106f227766a1dafa7c2
-Merge: 52a11170f a70ecadef
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:43:52 2024 +0100
-
-    Merge commit 'a70ecade' into thread-merge-2.16
-
-commit 52a11170fedbf597e2c31c782d707c3de8af4685
-Merge: ce199382e 39e75b879
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:43:43 2024 +0100
-
-    Merge commit '39e75b87' into thread-merge-2.16
-
-commit ce199382ea0eac4173e052b214e40ceab4bc4d22
-Merge: c0dfd4dc3 163ab3130
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:23:27 2024 +0100
-
-    Merge commit '163ab313' into thread-merge-2.16
-
-commit c0dfd4dc3b36bca10f23cd9320a96d284a1f9221
-Merge: 44efc912d 8dc2a36ae
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:23:14 2024 +0100
-
-    Merge commit '8dc2a36a' into thread-merge-2.16
-
-commit 44efc912d5ea44e0feed85ddacdd3dc379838f90
-Merge: b4bd40679 5daec239c
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:19:27 2024 +0100
-
-    Merge commit '5daec239' into thread-merge-2.16
-
-commit b4bd40679535c8ee89a6523cf3eebacfc1194492
-Merge: ac30445f4 acbdc29d5
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:18:44 2024 +0100
-
-    Merge commit 'acbdc29d' into thread-merge-2.16
-
-commit ac30445f4f6bce6a5a050ec70746eba9fb117075
-Merge: 3bbe0ec25 c9836207f
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:08:52 2024 +0100
-
-    Merge commit 'c9836207' into thread-merge-2.16
-
-commit 3bbe0ec25184ee6834034fbf388b0f84c4784be7
-Merge: eba3a2653 df22b3140
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:08:43 2024 +0100
-
-    Merge commit 'df22b314' into thread-merge-2.16
-
-commit eba3a26537c7ef28279a3fb163a658421adc9cb8
-Merge: 281e41026 08ff0af89
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:07:30 2024 +0100
-
-    Merge commit '08ff0af8' into thread-merge-2.16
-
-commit 281e41026ecff85975600d43cf5c4f522830d87e
-Merge: 1ce352ebf f3b6661dd
-Author: Maria Matejka 
-Date:   Thu Nov 28 12:00:45 2024 +0100
-
-    Merge commit 'f3b6661d' into thread-merge-2.16
-
-commit 1ce352ebf5a7a6fe5db4af381b16418fd6d346c9
-Merge: ac0cdf3ad a95fff379
-Author: Maria Matejka 
-Date:   Thu Nov 28 10:57:37 2024 +0100
-
-    Merge commit 'a95fff37' into thread-merge-2.16
-
-commit ac0cdf3ad4d4c612033424a45d843c94a9460cb5
-Merge: e6242ef94 09f50f376
-Author: Maria Matejka 
-Date:   Thu Nov 28 10:02:07 2024 +0100
-
-    Merge commit '09f50f37' into thread-merge-2.16
-
-commit e6242ef948d2d2be6ca8f2138198afd1e2c9d5fc
-Merge: cbd986cd3 8a40bccff
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:36:33 2024 +0100
-
-    Merge commit '8a40bccf' into thread-merge-2.16
-
-commit cbd986cd35888913b22bdb3ec71120941b08651e
-Merge: 029e6c7e1 00b139bd2
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:09:00 2024 +0100
-
-    Merge commit '00b139bd' into thread-merge-2.16
-
-commit 029e6c7e1e1c13baffe5768602064aa670d20e39
-Merge: 2af438a9b a5b4c21d8
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:08:32 2024 +0100
-
-    Merge commit 'a5b4c21d' into thread-merge-2.16
-
-commit 2af438a9bffa887af8a38aaf442678fec2c3e6e5
-Merge: ce2ecbdcb 2d6fb31cd
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:07:23 2024 +0100
-
-    Merge commit '2d6fb31c' into thread-merge-2.16
-
-commit ce2ecbdcb6d431d9a00b4837103404873058feac
-Merge: 402d07bcc e29f134ad
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:04:31 2024 +0100
-
-    Merge commit 'e29f134a' into thread-merge-2.16
-
-commit 402d07bccdf04693718cf2a40b345dd281337a0c
-Merge: b8f7200ee 280daed57
-Author: Maria Matejka 
-Date:   Thu Nov 28 09:02:59 2024 +0100
-
-    Merge commit '280daed5' into thread-merge-2.16
-
-commit b8f7200ee9570b85e103d58876f5a01f38837072
-Merge: d73d861f0 bc10975ad
-Author: Maria Matejka 
-Date:   Thu Nov 28 08:56:27 2024 +0100
-
-    Merge commit 'bc10975a' into thread-merge-2.16
-
-commit d73d861f0c6b57e5d91f10ebb74b61be1d9159e9
-Merge: 1dd21f602 08571b205
-Author: Maria Matejka 
-Date:   Thu Nov 28 08:22:06 2024 +0100
-
-    Merge commit '08571b20' into thread-merge-2.16
-
-commit 54499f8850fd5b3a25639dc06d5618ae98ac1537
-Author: Maria Matejka 
-Date:   Wed Nov 27 12:01:58 2024 +0100
-
-    String tests: fixed too strict strcmp checks
-    
-    The strcmp function is not guaranteed to return -1 or +1
-    but any negative or positive value if the input strings
-    are different. Fixed the false assumption which triggered
-    a build bug on emulated arm64.
-
-commit fc2b4b26a62215d12f4565c21b77e949cd861b9a
-Author: Ondrej Zajicek 
-Date:   Wed Nov 27 04:15:16 2024 +0100
-
-    Fixed crash if logging happened in unit tests
-    
-    The patch initializes logging in unit tests. Previously, unit tests did
-    not initialize logging and other subsystems, just resources. But
-    resource_init() could under certain circumstances trigger logging and
-    cause crash.
-    
-    The bug was Found by Jakub Ruzicka, dissected by David Petera and Maria
-    Matejka, disguised as failing build for Debian arm64 in pbuilder
-    emulation which did not like disabling THP.
-    
-    Fixes #42.
-
-commit 997d2f578ee61d64f57e2ab6932b15c0a6a3a8d8
-Author: Maria Matejka 
-Date:   Tue Nov 26 20:32:53 2024 +0100
-
-    ASPA: Unified the ASPA_INVALID into one result
-    
-    The _EMPTY and _CONFED variants are easy to spot bare-eyed from the AS path.
-
-commit 01377599da2f14567da46d8c0387a660189a8065
-Author: Maria Matejka 
-Date:   Tue Nov 26 16:36:13 2024 +0100
-
-    RPKI: Polishing of ASPA syntax and documentation
-
-commit fb919ac2a266aed53638ebc4f006c7ef48bb9e31
-Author: Ondrej Zajicek 
-Date:   Tue Nov 26 17:46:27 2024 +0100
-
-    RPKI: Fix PDU length check
-    
-    The END_OF_DATA PDU was extended in version 1, so it has different length
-    in different versions. We should do the PDU length check according to its
-    version.
-
-commit e330fb1614d83e3529f4405d0875160d425f8bb3
-Author: Maria Matejka 
-Date:   Mon Nov 25 09:35:33 2024 +0100
-
-    RPKI: added documentation and RTR version config options
-
-commit fa65e063721d963a29749ad63e47c97b52ce98d8
-Author: Katerina Kubecova 
-Date:   Fri Nov 8 15:26:37 2024 +0100
-
-    RPKI: protocol version 2, loading ASPA
-    
-    Implemented draft-ietf-sidrops-8210bis-16, interoperable with StayRTR
-    development branches.
-
-commit 1dd21f6024a8e331a8bc6db4ff7d7a652bb75c32
-Author: Maria Matejka 
-Date:   Mon Nov 25 17:14:32 2024 +0100
-
-    Netlink: Fixed handling of undefined bitfields in filters
-    
-    The default value is obviously false everywhere so we just return zero
-    if nothing is found, instead of undef.
-
-commit 7491cdbd1dcb6e9bad2517b727cbfe7e8c05632d
-Author: Maria Matejka 
-Date:   Mon Nov 25 15:14:27 2024 +0100
-
-    Filter: multi-command case branches now need braces.
-    
-    Removing an exception from the otherwise quite systematic syntax.
-    Closes #111.
-
-commit 99fa1f01a474a744d4e5dd2efb348af292676a75
-Author: Katerina Kubecova 
-Date:   Tue Nov 19 10:33:49 2024 +0100
-
-    rt-show.c: fixed OBSREF_SET after cf_error(), changed message when 'show route export' called on static protocol
-
-commit 3f4332f0bdafc3d34590eeb5f3ee54513c303002
-Author: Maria Matejka 
-Date:   Mon Nov 25 12:02:13 2024 +0100
-
-    Protocol restart timer reworked.
-    
-    The restart timer was racy and didn't allow for immediate restarts
-    from limits. Now the protocols stores the last restart time and in case
-    of too frequent autorestarts caused by exceeded limits, the protocol
-    gets disabled with an error message.
-    
-    Also now there is a configuration knob for this.
-
-commit 53431ff67947d2da2489c7477d61e8016c09592b
-Author: Maria Matejka 
-Date:   Mon Nov 25 09:44:00 2024 +0100
-
-    Hash test spurious fail fixed
-    
-    There was a race condition in the test itself,
-    causing the test reader access data after free.
-
-commit 2956faf5a62aa662b29e591567809b1bf99ccc94
-Author: Maria Matejka 
-Date:   Fri Nov 22 14:49:13 2024 +0100
-
-    Protocol and BGP state information cleanup and fixes
-    
-    There were some nasty problems with deferred protocol state updates and
-    race conditions on BGP startup, shutdown, and also with referencing the
-    cached states.
-    
-    Now it looks fixed.
-
-commit e654efd35492764c369f68fe6affa648d873b63d
-Author: Maria Matejka 
-Date:   Sun Nov 24 18:43:09 2024 +0100
-
-    Debug option for ea_free
-
-commit 6ba06dc4df01a7022583c51c1fe4289a516e5beb
-Author: Maria Matejka 
-Date:   Sat Nov 23 21:24:45 2024 +0100
-
-    Deferred call may need to be returned for future cleanups
-
-commit 77dee46e989a64a7f7f5ed6dfc1a270bebaa1314
-Author: Katerina Kubecova 
-Date:   Fri Sep 27 14:02:40 2024 +0200
-
-    BMP: updated to v3 API
-
-commit d2ad795c1effa77df9b3ffd30f26a9ef68b0190e
-Author: Maria Matejka 
-Date:   Wed Nov 20 20:04:33 2024 +0100
-
-    BGP: protocol specific state information cleanup
-
-commit 74800729c06fcc8e6d170d11745480103edbe03b
-Author: Maria Matejka 
-Date:   Mon Nov 18 22:06:50 2024 +0100
-
-    Proto: The active flag converted to actual fifth protocol state
-    
-    What was PS_DOWN before, is now PS_DOWN and PS_FLUSH.
-
-commit 7889f0c25b3457fe1df464de3c109c3e59c1493f
-Author: Katerina Kubecova 
-Date:   Wed Nov 13 15:45:09 2024 +0100
-
-    Neighbor locking: forgotten neighbors to unlink are actually a bug.
-    
-    These may cause runaway pointers.
-
-commit ca5ed6997c7299ccd6b2985a2381974bf9ffc839
-Author: Katerina Kubecova 
-Date:   Fri Nov 15 10:04:51 2024 +0100
-
-    nest/cli: fixup - empty printing in birdc does not freeze
-
-commit dc69284f61b400bb263cdbadf6c97b09d0a770b3
-Author: Katerina Kubecova 
-Date:   Fri Sep 27 13:58:46 2024 +0200
-
-    MRT: buildable and running again for BIRD 3
-    
-    Tests for MRT are scarce and not automated for now, so it may behave
-    weirdly in corner cases.
-
-commit eb6918e4db57b7e5fabc531963deb46313289d80
-Author: Maria Matejka 
-Date:   Sun Nov 10 13:33:22 2024 +0100
-
-    Neighbor cache: fixed neighbor referencing
-
-commit 03f51079c1641b2c0984bdea742f92d741bec13a
-Author: Maria Matejka 
-Date:   Sun Nov 10 13:32:16 2024 +0100
-
-    Defer: fixup missing include guards
-
-commit c0319183a50c8fd07d9febae9f866fc6f0675b31
-Author: Katerina Kubecova 
-Date:   Fri Oct 11 12:38:18 2024 +0200
-
-    BGP: exporting protocol-specific state information
-
-commit fa750071565a3ad8aa197f94e3776bbb63bff7fa
-Author: Maria Matejka 
-Date:   Tue Oct 15 13:10:58 2024 +0200
-
-    BGP: Start state is now using extended state
-
-commit b97d924e52816b26660c4ab942b32381781e97fc
-Author: Katerina Kubecova 
-Date:   Tue Oct 15 11:31:32 2024 +0200
-
-    Proto: adding lockless state table and journal
-    
-    To allow reading of protocol states from other protocols or completely
-    different routines, we have to export these states to data structures
-    not requiring to lock the protocol loops.
-    
-    On one hand, this doesn't give the reader the actual state "right now",
-    on the other hand, getting that is impossible in a properly
-    multithreaded environment and you will always get the information with
-    some (little but noteworthy) delay.
-    
-    This implementation handles only the basic state information of the
-    protocols, common for all the protocols. Adding protocol-specific state
-    information should be done by implementing the protocol hook init_state().
-    
-    Channel information is stored but not announced, as we don't need the
-    announcements for now.
-
-commit 224fbe59802ea45820ce49fd1f59b91314b17e7e
-Author: Katerina Kubecova 
-Date:   Wed Nov 8 13:46:42 2023 +0100
-
-    ASPA: Automatic channel reload
-
-commit 330c71bd0a580be59f520534e89f7a3452921dcc
-Author: Katerina Kubecova 
-Date:   Tue Oct 15 10:50:29 2024 +0200
-
-    More attribute types: pointers, strings, btime
-    
-    For the upcoming rework of protocol state information propagation,
-    we need some more eattr types to be defined.
-    
-    These types are probably not defined completely and before using
-    them for route attributes, you should check that they don't lack
-    some crucial methods.
-
-commit 49be4a0329b218a7c35c9275680de3ca177cd2e7
-Author: Ondrej Zajicek 
-Date:   Fri Nov 8 18:54:13 2024 +0100
-
-    Lib: Optimized printing of numbers
-    
-    One simple trick makes printing of numbers ~4x faster.
-
-commit 5c6572c422a2dc3a8349c4f0f9f6ab31de9c5528
-Author: Ondrej Zajicek 
-Date:   Fri Nov 8 18:51:54 2024 +0100
-
-    Lib: Optimized printing of IP addresses
-    
-    Makes printing network prefixes ~15x faster.
-
-commit 82d57fb7adf02b297840ab710737df6043832ce2
-Author: Piotr Wydrych 
-Date:   Tue Nov 5 18:53:22 2024 +0100
-
-    CLI: Add timeformat command
-    
-    Adds ability to override time format of show commands for current CLI session
-    so that it does not depend on configuration and may ease parsing when CLI is
-    called from tools.
-    
-    Minor changes by committer.
-
-commit 9eca3e1a2e5a71c38ebd95ee01489d1eb62a063f
-Author: Ondrej Zajicek 
-Date:   Tue Nov 5 17:35:20 2024 +0100
-
-    Nest: Cleanup timeformat grammar
-
-commit 38195ac628797cad5453e91cd6b38bb0b6f34f84
-Author: Maria Matejka 
-Date:   Wed Nov 6 12:12:37 2024 +0100
-
-    ASPA: fixed the check algorithm to actually do what is in the RFC
-    
-    The original algorithm assumed principles not consistent with the RFC
-    and could have lead to false invalids.
-    
-    Also added filter tests showing also how the ASPA literals are used in
-    the static protocol.
-
-commit c7e843c1a7f376890d641730ebece1c94d8fab58
-Author: Ondrej Zajicek 
-Date:   Thu Nov 7 15:03:01 2024 +0100
-
-    BGP: Add RFC 9687 to list of supported RFCs
-
-commit b4196b70c4463d78f8f202ef4ad65c24f240e1a2
-Author: Maria Matejka 
-Date:   Wed Nov 6 13:05:32 2024 +0100
-
-    BGP: SendHoldTimer became an RFC, updating docs
-
-commit 294d363da06418f2e6f518c0b7aac78a6f4d0811
-Author: Ondrej Zajicek 
-Date:   Fri Oct 18 16:53:12 2024 +0200
-
-    Filter: Remove T_ENUM_RTC
-    
-    It is not used for a long time.
-
-commit 1002c35bf99544cbb3567defe3a7dca38f5f2375
-Author: Ondrej Zajicek 
-Date:   Fri Oct 18 16:49:19 2024 +0200
-
-    Filter: Replace T_ENUM_NETTYPE with T_ENUM_NET_TYPE
-    
-    To be consistent with other enum type names.
-
-commit 80ca0ed279f2c8f396976d90f2e98ba6b923081c
-Author: Ondrej Zajicek 
-Date:   Fri Oct 18 16:39:42 2024 +0200
-
-    Filter: Add enum types to filter grammar
-    
-    Enum types existed on semantic level, but not on syntactic level,
-    so they could not be used in filter code.
-    
-    Generate filter grammar for enum types based on CF_ENUM() declarations.
-    
-    Thanks to lbz for the bugreport.
-
-commit 072821e55e2a3bd0fb3ffee3099375927dc902e8
-Author: Eric Long 
-Date:   Wed Oct 16 21:32:36 2024 +0200
-
-    Flowspec: Fix IPv6 prefix when offset is not multiple of 8
-    
-    Current implementation handles flowspec prefix length and offset only
-    in bytes, but RFC 8956 (Dissemination of Flow Specification Rules for
-    IPv6) Section 3.1 [1] and example in Section 3.8.2 [2] states the
-    pattern should begin right after offset *bits*.
-    
-    For example, pattern "::1:1234:5678:9800:0/60-104" is currently
-    serialized as "02 68 3c 01 12 34 56 78 98", but it should shift its
-    pattern 4 more bits to the left: "02 68 3c 11 23 45 67 89 80".
-    
-    This patch implements shifting left/right for IPv6 type and use it to
-    correct the behaviour. Test data are replaced with the correct ones.
-    
-    Minor changes and test vectors done by committer.
-    
-    [1]: https://www.rfc-editor.org/rfc/rfc8956.html#section-3.1
-    [2]: https://www.rfc-editor.org/rfc/rfc8956.html#section-3.8.2
-
-commit 6f9ccfae9edba40975f9709a516ecf3784616e68
-Author: Ondrej Zajicek 
-Date:   Wed Oct 16 04:04:46 2024 +0200
-
-    Flowspec: Test improvements
-    
-    Simplify Flowspec initialization macros.
-    
-    Add examples from RFC 8955 4.3 and RFC 8956 3.8 to format tests.
-
-commit a70ecadefe93d6b7ed11e42c85d87fe2f02f328a
-Author: Ondrej Zajicek 
-Date:   Tue Oct 15 17:19:42 2024 +0200
-
-    Doc: Minor fixes
-
-commit cb40a666b9e093399c72af0cb3913be6be3a6088
-Author: Ondrej Zajicek 
-Date:   Tue Oct 15 17:14:57 2024 +0200
-
-    Doc: Fix code blocks
-    
-    Code blocks should not be indented, as the indendation is passed
-    to the output,
-
-commit 72c2df562dd184837c61fe4b68d8e2816b7643bc
-Author: Johannes Erwerle 
-Date:   Tue Oct 15 16:56:48 2024 +0200
-
-    Doc: Improve readability of the operator documentation
-    
-    Minor changes by committer.
-
-commit 02de88de415d036054d858f8c6fdc09f5b05054b
-Author: Maria Matejka 
-Date:   Fri Oct 11 12:23:15 2024 +0200
-
-    Table: tame warnings around unused debug messages
-
-commit 48a620a916b08a1ed882f536fdc508a60c2ade94
-Author: Ondrej Zajicek 
-Date:   Wed Oct 9 18:00:16 2024 +0200
-
-    Fix typo in documentation
-
-commit 39e75b879b1464f35725bb218d9e14399fc4c291
-Author: Ondrej Zajicek 
-Date:   Tue Oct 8 19:34:51 2024 +0200
-
-    Filter: Fixes and improvements related to case/sets
-    
-    Unify grammar for set_atom and switch_atom to avoid inconsistencies
-    between them. Fix errors in documentation related to case statement
-    and set type. Change 'vpnrd' to 'rd' to be consistent with the filter
-    language.
-    
-    Thanks to Mikhail Mayorov for bugreport.
-
-commit 163ab3130f6a890411402643818af388df5f5719
-Merge: 8dc2a36ae d4929d911
-Author: Ondřej Zajíček 
-Date:   Mon Oct 7 16:35:55 2024 +0200
-
-    Merge branch 'dpetera-master-patch-71179' into 'master'
-    
-    Fix typo in user docs
-    
-    See merge request labs/bird!27
-
-commit d4929d911378c25802b4b04963bc593d0a9928ab
-Author: David Petera 
-Date:   Mon Oct 7 16:15:09 2024 +0200
-
-    Fix typo in user docs
-
-commit 8dc2a36ae545d13fdf201b0891185f98852584ee
-Author: Job Snijders 
-Date:   Thu Oct 3 15:43:12 2024 +0200
-
-    RPKI: Add TCP-MD5 authentication option
-    
-    RPKI-To-Router (RTR) sessions seem to be similar security-sensitivity as
-    IBGP sessions. BIRD already offered a choice of either "plain TCP" (meh)
-    or "SSH" (secure, albeit a bit more hassle to set up than TCP-MD5).
-    The patch adds TCP-MD5 as another option. TCP-MD5 for RTR is specified
-    through RFC 6810 section 7.3 and RFC 8210 section 9.3.
-    
-    Minor changes by committer.
-
-commit 716472957b0c3dd69e3fa68cc9414e9063ddba77
-Author: Katerina Kubecova 
-Date:   Fri Sep 27 14:54:21 2024 +0200
-
-    Kernel: protocol shuts down synchronously
-    
-    Before this commit, on kernel shutdown, the routes were re-exported by
-    the regular export but treated as withdraw. This was too hairy and
-    caused unnecessary complexity of the protocol's state machine.
-    
-    Instead of that, we found out that it makes more sense to just refeed
-    the routes synchronously and convert to withdraw. This is done by the
-    direct export access instead of the channel.
-    
-    It would (maybe) make more sense to run export filters on this in case
-    the export filter updates the krt_metric attribute, but as this doesn't
-    work on regular withdraw anyway, it's better for now to just let it be
-    and maybe somebody in the future fixes this issue.
-
-commit 5daec239c4c62dd508a3cd8f7ca82d3666becbe6
-Author: Maria Matejka 
-Date:   Mon Jul 8 17:12:21 2024 +0200
-
-    Renamed my past self in commit authorship and mentioned that in the contributing policy
-
-commit 2ba6e797ccd365f5c930a18953a08d3c5e315ff9
-Author: Maria Matejka 
-Date:   Thu Aug 29 14:37:19 2024 +0200
-
-    Fixed a stupid bug in parse-and-exit mode
-    
-    Introduced in 08ff0af8986099e6fb1d8a94c7ce62c83e4df7f1, the additional CLI
-    configuration wasn't properly initialized in the parse-and-exit mode
-    due to an oversight that cli_init_unix() is not called in this mode.
-    
-    Thanks to Felix Friedlander for the bugreport.
-
-commit 404e82616d950cbf45b16adb11ce3a52e285e16b
-Author: Fabrice Fontaine 
-Date:   Tue Aug 27 14:54:07 2024 +0200
-
-    configure.ac: properly evaluate ac_test_CFLAGS
-    
-    Since autoconf 2.69 and
-    https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=76754e04fce5f6a7701bec57b057020585df2ae3
-    ac_test_CFLAGS is set to ${CFLAGS+y} instead of ${CFLAGS+set}.
-    
-    Just test that ac_test_CFLAGS is not empty, to support both cases.
-    
-    Signed-off-by: Fabrice Fontaine 
-    Signed-off-by: Arnout Vandecappelle (Essensium/Mind) 
-
-commit acbdc29d57373a42a512b505c7d4169fd9ca2bee
-Author: Ondrej Zajicek 
-Date:   Tue Aug 27 14:28:41 2024 +0200
-
-    Lib: Expand timer recurrence to 64b
-    
-    The period of recurent timers was stored in 32b field, despite it was
-    btime-compatible value in us. Therefore, it was limited to ~72 min,
-    which mas okay for most purposes, except configurable MRT dump periods.
-    
-    Thanks to Felix Friedlander for the bugreport.
-
-commit 5214d7e59fe4d5d89e14e8e7b654ded25f918afb
-Author: Ondrej Zajicek 
-Date:   Thu Aug 1 14:55:05 2024 +0200
-
-    IO: Ensure that socket rcvbuf is large enough
-    
-    The socket structure has the field rbsize (receive buffer size), which
-    controls the size of the userspace receive buffer. There is also kernel
-    receive buffer, which in some cases may be smaller (e.g. on FreeBSD it
-    is by default ~8k). The patch ensures that the kernel receive buffer is
-    as large as the userspace receive buffer.
-
-commit c9836207f53be16860546f00fa27483f1e659551
-Author: Ondrej Zajicek 
-Date:   Tue Jul 30 16:42:32 2024 +0200
-
-    IO: Fix missing return introduced in one of earlier patches
-
-commit df22b3140cad6bd8742dce16e6a1b342d4a83f6d
-Author: Ondrej Zajicek 
-Date:   Tue Jul 30 16:33:51 2024 +0200
-
-    IO: Avoid re-binding accepted sockets to VRF
-    
-    When VRFs are used, BIRD correctly binds listening (and connecting)
-    sockets to their VRFs but also re-binds accepted sockets to the same VRF.
-    This is not needed as the interface bind is inherited in this case, and
-    indeed this redundant bind causes an -EPERM if BIRD is running as
-    non-root making BIRD close the connection and reject the peer.
-    
-    Thanks to Christian Svensson for the original patch and Alexander Zubkov
-    for suggestions.
-
-commit e787a9210f5cc1ef02ff8071532a8acb4011278b
-Author: Maria Matejka 
-Date:   Mon Jul 1 15:34:06 2024 +0200
-
-    NEWS and version update
-
-commit 5ea6423cb9800e757f7a79773ca9d01f836d9039
-Author: Maria Matejka 
-Date:   Fri Jun 28 21:38:54 2024 +0200
-
-    Fixed secondary route export
-
-commit d53582c9a197ffe5a33361b88bad946340f6a5df
-Author: Maria Matejka 
-Date:   Thu Jun 27 14:04:26 2024 +0200
-
-    show threads: displaying the same thread id's as in log
-
-commit c2480ff533e0658b8d792a83fa8aa035846f3617
-Author: Maria Matejka 
-Date:   Thu Jun 27 13:49:37 2024 +0200
-
-    Export: Throw a warning instead of crashing on export_accepted_map inconsistency
-
-commit edffd820573a3b2cc5fb4015880d8ee19da58886
-Author: Maria Matejka 
-Date:   Thu Jun 27 09:48:38 2024 +0200
-
-    Config undo queuing bug fixed
-
-commit 45fb9742f07c0db4ffd81f428194de8185ba038f
-Author: Maria Matejka 
-Date:   Thu Jun 27 09:34:23 2024 +0200
-
-    BGP runs TX as a deferred routine
-    
-    This should help flushing the tx buffers as soon as possible.
-
-commit 6eea722d3f3a3ff6176eba4b8416b50f67047b8e
-Author: Maria Matejka 
-Date:   Thu Jun 27 08:42:11 2024 +0200
-
-    Forbid locking altogether when RCU reader is active
-
-commit 1e77e6e1b28e8c7f842f6a24e05d44437ceb1474
-Author: Maria Matejka 
-Date:   Thu Jun 27 08:37:05 2024 +0200
-
-    Flush deferred calls directly after the loop finished its one run
-
-commit 865bab62379eeadd8cf6617602aa48882c4307eb
-Author: Maria Matejka 
-Date:   Thu Jun 27 08:26:00 2024 +0200
-
-    IO: Allow to take new loops if the thread is hot, but only one at time
-
-commit 18d069d663e44bc5812952aa98c8c8dc61116649
-Author: Maria Matejka 
-Date:   Wed Jun 26 23:21:32 2024 +0200
-
-    Even on shutdown we should try to pass the freed memory to others
-
-commit 08ff0af8986099e6fb1d8a94c7ce62c83e4df7f1
-Author: Maria Matejka 
-Date:   Mon Jun 24 13:46:12 2024 +0200
-
-    Additional CLI sockets may now be restricted
-    
-    This allows to have one main socket for the heavy operations
-    very restricted just for the appropriate users, whereas the
-    looking glass socket may be more open.
-    
-    Implemented an idea originally submitted and requested by Akamai.
-
-commit f3b6661ddda9a9c2591444799ff88cd82621d06b
-Author: Maria Matejka 
-Date:   Mon Jun 24 11:10:07 2024 +0200
-
-    Additional CLI sockets can be now configured in the config file
-    
-    If the user has such a need, they may configure additional sockets
-    in the config file. This may work for e.g. some advanced access control.
-
-commit a95fff37937171302167e670bd8b6e80d447cf65
-Author: Maria Matejka 
-Date:   Mon Jun 24 11:09:46 2024 +0200
-
-    CLI now has a configuration structure
-
-commit 09f50f3766e54b04e006b45e04e96316942526fd
-Author: Maria Matejka 
-Date:   Mon Jun 24 11:27:45 2024 +0200
-
-    Typed lists: added forgotten #undef
-
-commit f27004fb4d556148a22f7750feaefd3b329778f0
-Author: Maria Matejka 
-Date:   Mon Jun 24 09:45:57 2024 +0200
-
-    Backported typed list updates from v3
-    
-    Source: dda37842dcf82dae8e441a6c2bcef4b0ffae3429
-
-commit af73cc42157cc2e73d0cd92ec52cb4acbf9599da
-Author: Maria Matejka 
-Date:   Wed Jun 26 20:45:54 2024 +0200
-
-    Allocator now reports cold pages
-
-commit aa11e821743af2da3c6d2370f8d90de391b14fc8
-Author: Maria Matejka 
-Date:   Wed Jun 26 18:30:17 2024 +0200
-
-    Filter unit test uncertainty hack
-
-commit be2ba84e502ec78265e64e7f8ac2702bced6419b
-Author: Maria Matejka 
-Date:   Wed Jun 26 17:21:26 2024 +0200
-
-    Tame improper xmalloc warning
-
-commit b797444e94700afe8f8b842da833dbb4b4c5461b
-Merge: 16e53f3f3 b95dc8f29
-Author: Maria Matejka 
-Date:   Wed Jun 26 17:19:24 2024 +0200
-
-    Merge commit 'b95dc8f29f18eb177f91fdc4bf0716fac9b15366' into mq-config-ref
-    
-    Also converted all _Bool's to bool.
-
-commit 333c7e8536cf4a3b99c4c1359ac7679c7d9c7e27
-Author: Ondrej Zajicek 
-Date:   Wed Jun 26 16:38:03 2024 +0200
-
-    Doc: Minor cleanups in BFD documentation
-
-commit 8a40bccffe9e28e211fe996845658f87f5cc60e9
-Author: Alexander Zubkov 
-Date:   Wed Jun 26 16:29:57 2024 +0200
-
-    BFD: Add option to accept zero checksum for IPv6 UDP packets
-    
-    Some vendors do not fill the checksum for IPv6 UDP packets.
-    For interoperability with such implementations one can set
-    UDP_NO_CHECK6_RX socket option on Linux.
-    
-    Thanks to Ville O for the suggestion.
-    
-    Minor changes by committer.
-
-commit 16e53f3f30bbfdd3dda5a49f8227552359f52095
-Author: Maria Matejka 
-Date:   Wed Jun 26 15:13:12 2024 +0200
-
-    channel roa reload debug message
-
-commit 2a6fe617b12691e2e34a24fe59fc7d4160d01b86
-Author: Maria Matejka 
-Date:   Tue Jun 25 17:48:25 2024 +0200
-
-    IO: allow for faster loop dropping
-
-commit a4a7e09478e9862b7e71ba0a88b3c88ccd0a8729
-Author: Maria Matejka 
-Date:   Tue Jun 25 17:08:57 2024 +0200
-
-    Revert "BGP: Export uses common attribute cache"
-    
-    This reverts commit d01a7c2bdaf50aff23cf5e1b4e494328c5294960.
-    
-    It seems that the performance penalty in global ea cache is actually
-    very high so returning back to local attribute caches in every BGP.
-
-commit a9534186f17fd17ad98bc0d4bffcb6c971593c4f
-Author: Maria Matejka 
-Date:   Tue Jun 25 15:53:13 2024 +0200
-
-    Fixed fast subsequent reconfigurations bug
-
-commit 7d455d64ca8c4d425469581d694b46ae7a87efb2
-Author: Maria Matejka 
-Date:   Tue Jun 25 15:48:11 2024 +0200
-
-    Remove spinlock debug structures in production build
-
-commit 5b7fd453d4e339de1dfe1726177f9fb7afa3d90c
-Author: Maria Matejka 
-Date:   Tue Jun 25 15:05:26 2024 +0200
-
-    BGP: show proto info crash fix if BGP is down
-
-commit 9f7874a5c91d769c8159563ed14508d6a3831a6e
-Author: Maria Matejka 
-Date:   Tue Jun 25 14:41:34 2024 +0200
-
-    BGP: using closer pointer for netindex hash than all the way to the table
-
-commit 8e67cba5281c18f40d7f1505c845703c0d82f478
-Author: Maria Matejka 
-Date:   Tue Jun 25 14:02:15 2024 +0200
-
-    Linpool: allocation split to fast and slow
-
-commit 3d45539455fd92ab952fd1c92b3c630a908a53dc
-Author: Maria Matejka 
-Date:   Tue Jun 25 11:19:14 2024 +0200
-
-    ROA aggregator uses its own rte source instead of recycling
-
-commit 6f981969bb2a912771193412db4686d560de116e
-Author: Maria Matejka 
-Date:   Thu Jun 20 22:57:52 2024 +0200
-
-    RCU read lock optimization
-
-commit d23db54da0fa15e8ac3ce745fd85fc96dc4f29af
-Author: Maria Matejka 
-Date:   Thu Jun 20 22:35:53 2024 +0200
-
-    ROA: Switching off digestor splitting
-
-commit 4998ca5554f753fa9a6a4adad92ef66d86e5a614
-Author: Maria Matejka 
-Date:   Thu Jun 20 20:37:21 2024 +0200
-
-    Route attribute usecount doesn't need to synchronize on unlock
-
-commit 2c4b3681765234dbb457d9c2006cc4a5e2467a2e
-Author: Maria Matejka 
-Date:   Thu Jun 20 19:39:09 2024 +0200
-
-    RPKI socket read is prioritized over other sockets
-
-commit f9b46a1ba1f68aa2a04266cf3af230664cce4f9e
-Author: Maria Matejka 
-Date:   Thu Jun 20 12:09:38 2024 +0200
-
-    Refeed done hooks are called in the same order as the requests came in
-
-commit 0b6e752bd96f27926cc1e6ec33b301157e23fa39
-Author: Maria Matejka 
-Date:   Thu Jun 20 11:58:23 2024 +0200
-
-    Conflating multiple partial ROA reload requests together
-
-commit bd44a13ce52d48d2a100b83a48585cb69161d0c5
-Author: Maria Matejka 
-Date:   Wed Jun 19 20:53:44 2024 +0200
-
-    Spinhash main lock removed
-    
-    Spinhash now uses RCU instead to guard cur-new exchanges to avoid
-    excessive synchronization and cache misses on the main spinlock.
-
-commit 282066ee298055b4281adf4fffd21462f41f6fe9
-Author: Maria Matejka 
-Date:   Wed Jun 19 16:19:04 2024 +0200
-
-    Moved the cork thresholds massively up
-    
-    This allows for more efficient import and export bundling, including
-    best route export and next hop resolution.
-
-commit 9be90c0f84e8ffce6bbd89222843e9da3d634f68
-Author: Maria Matejka 
-Date:   Wed Jun 19 12:02:34 2024 +0200
-
-    Fixed a race condition in rcu-domain blocking
-
-commit 67875e76d92f09a22e0fab762bbc356ce80a8b6f
-Author: Maria Matejka 
-Date:   Wed Jun 19 11:51:20 2024 +0200
-
-    Safer cleanup of table auxiliary routines
-
-commit dda37842dcf82dae8e441a6c2bcef4b0ffae3429
-Author: Maria Matejka 
-Date:   Tue Jun 18 11:02:51 2024 +0200
-
-    No page flush before polling
-    
-    The maximum amount of locally kept pages is 128 so we can just
-    well keep the half-meg of RAM allocated and prepared for future use.
-
-commit a1405a5bc7460f050098c69c597f7d17a066428d
-Author: Maria Matejka 
-Date:   Sun Jun 16 21:36:45 2024 +0200
-
-    Prefilter runs before generating feeds
-
-commit d6233b4de04c62628e4f0157dc081a3966c9e792
-Author: Maria Matejka 
-Date:   Sat Jun 15 23:31:44 2024 +0200
-
-    Table cork now uses callbacks and direct flush to uncork
-
-commit 83045e9a1fef0a0b4958a0ca2d35ba15dda1aee6
-Author: Maria Matejka 
-Date:   Thu Jun 13 12:15:38 2024 +0200
-
-    Configuration obstacles made a separate, explicit structure
-    
-    With this, one can walk the obstacle list in a debugger and
-    easier see which specific object is holding the reference.
-
-commit 61dcbb1d83882a6fa89c0c8218495ac8f2129012
-Author: Maria Matejka 
-Date:   Thu Jun 13 16:30:51 2024 +0200
-
-    Global runtime values separated from config
-
-commit 73ad0e2dcb88647b9b3d3240fa87ac081de6ae44
-Author: Maria Matejka 
-Date:   Thu Jun 13 16:58:41 2024 +0200
-
-    CLI: Show symbols, route and mpls explicitly passes the actual config to the show function
-
-commit c4fbc5592da0f759cff184d1cf6752ed4de4b14c
-Author: Maria Matejka 
-Date:   Thu Jun 13 15:49:56 2024 +0200
-
-    Filter global values are not used directly from config
-
-commit 397eee5a009fda9a9eae02295d597be5c5793be3
-Author: Maria Matejka 
-Date:   Thu Jun 13 15:36:18 2024 +0200
-
-    Config: Removed obsolete force_restart option when commiting
-
-commit ea996d8403673b4442d157296f572f4e1f765951
-Author: Maria Matejka 
-Date:   Thu Jun 13 12:29:21 2024 +0200
-
-    CLI keeps its active config pointer explicitly
-
-commit f5fd70c54a9e7c6d67cb07efc56b2e1346800253
-Author: Maria Matejka 
-Date:   Thu Jun 13 10:42:18 2024 +0200
-
-    Callback: bundling event with its target
-
-commit 4ac55615e4317889996fa5e72c9b7b70f351cc64
-Author: Maria Matejka 
-Date:   Wed Jun 12 22:36:12 2024 +0200
-
-    BGP and HCU uncorking is processed in the right loop
-    
-    closes #86
-    
-    The uncork events are running from mainloop so these should just
-    dispatch the right event to the right loop. Doing anything long there
-    is bad for performance and latency as the uncork list may be huge.
-
-commit 3ed192edc3353b0fd92d368dbb2f03124665d010
-Author: Maria Matejka 
-Date:   Wed Jun 12 14:48:15 2024 +0200
-
-    Table: RCU synchronization moved to lfjour
-    
-    the sync is actually needed when the pages get freed, not precisely
-    after every item cleanup, as the data technically stays intact until the
-    deferred free's are called.
-
-commit bd05dd73049540fc9d18657149202c3c0c99a9c6
-Author: Maria Matejka 
-Date:   Wed Jun 12 14:47:20 2024 +0200
-
-    Netindex cleanup calls synchronize_rcu() by batches
-
-commit 95d8329043bdc290ac48c87902d2787b731bf391
-Author: Maria Matejka 
-Date:   Wed Jun 12 12:00:11 2024 +0200
-
-    Table: fixed export_all flush when export_best is idle
-
-commit 0e42398304db5b79b9088a421f7e010d93c42faf
-Author: Maria Matejka 
-Date:   Wed Jun 12 11:33:26 2024 +0200
-
-    Removed unnecessary recursion from rt_export_get()
-
-commit 76a1998ff5725fbedbbb3d2d0e0615e375334bb5
-Author: Maria Matejka 
-Date:   Tue Jun 11 15:59:19 2024 +0200
-
-    Netindex rehash debug
-
-commit 9991fbbe0b34cc9cc734b943d3baac6015f82241
-Author: Maria Matejka 
-Date:   Tue Jun 11 15:38:27 2024 +0200
-
-    TMP: table best-all cleanup debug
-
-commit ea4aef2a1428e408b4f8f03de66a8725cd548303
-Author: Maria Matejka 
-Date:   Tue Jun 11 14:46:25 2024 +0200
-
-    Memory allocator tweaking
-    
-    TODO: make this configurable
-
-commit 951d0422fa27a47ee087af99ea76c85229fb2695
-Author: Maria Matejka 
-Date:   Tue Jun 11 13:16:50 2024 +0200
-
-    Attributes: fix collision on free-lookup
-    
-    Freeing the eattrs is tricky as somebody else may find them
-    via RTA-unlocked lookup inbetween.
-
-commit 5c8179d63a20f27855b928e6b8ad7c3f0483f869
-Author: Maria Matejka 
-Date:   Mon Jun 10 23:09:05 2024 +0200
-
-    Time accounting must be done by coarse timers
-    
-    on some ARM, the precise timers are too slow to be actually useful
-
-commit 4d01ca3e8f21cae9033e91813fbbe49775003d28
-Author: Maria Matejka 
-Date:   Mon Jun 10 23:07:36 2024 +0200
-
-    Every table has its own netindex now
-    
-    It's obnoxiously slow to walk over sparse tables.
-
-commit d8c0faaec90d2d3186e987b6fce672bf94a16476
-Author: Maria Matejka 
-Date:   Mon Jun 10 23:06:43 2024 +0200
-
-    Netindex cleanup now doesn't need to unlock to synchronize RCU
-
-commit a146abc8fd10439ea02012ccc323ff62007a40ed
-Author: Maria Matejka 
-Date:   Tue Jun 11 10:48:21 2024 +0200
-
-    Revert (partial) "Route attributes now use the common lockfree usecount"
-    
-    This partially reverts commit d617801c31018926cccd75a64186ebb0597a6bcc.
-    
-    The common lockfree doesn't work well for high-volume structures like
-    eattr cache because it expects the structure to be cleaned up by a
-    sweeper routine ... which is very ineffective for >1M records.
-    
-    OTOH, we need the deferred ea_free in all cases ... so keeping that.
-
-commit 8e240fc44f647e1bf7a291526cfc8e720490cd29
-Author: Maria Matejka 
-Date:   Mon Jun 10 17:24:53 2024 +0200
-
-    Table best feed collision fix
-
-commit 47e493f2281c51d07f96f1ba6d73ffda4a52d377
-Author: Maria Matejka 
-Date:   Mon Jun 10 16:25:53 2024 +0200
-
-    Dropped net_resolve_index from feeder fast path
-
-commit ab1697d7a0e21494f4a1c67e8345f22cd66ebc83
-Author: Maria Matejka 
-Date:   Mon Jun 10 14:17:28 2024 +0200
-
-    Next hop update is split by time, not by number of routes
-
-commit 2e882d4a7dbfaad7e8487feb00f0ee97da0a1747
-Author: Maria Matejka 
-Date:   Mon Jun 10 14:11:51 2024 +0200
-
-    IO Loop: process socket reads only after timers and events are done
-
-commit f45c5190393a903d4538eee91f9b84f3c84a4b3b
-Author: Maria Matejka 
-Date:   Mon Jun 10 14:10:51 2024 +0200
-
-    BGP: splitting TX by time, not number of messages sent
-
-commit 0827797e6e0a202314e59482766761a5cfb68137
-Author: Maria Matejka 
-Date:   Mon Jun 10 11:35:07 2024 +0200
-
-    Table: pruning is deferred by task time, not by item count
-
-commit 464d483af489e5fedb909859ba878a9af3c52325
-Author: Maria Matejka 
-Date:   Mon Jun 10 10:39:11 2024 +0200
-
-    Channel: postpone the export event when stopping
-
-commit 50d7287741e6a0c2795d01a4f8ec6b583d20f28f
-Author: Maria Matejka 
-Date:   Mon Jun 10 10:38:56 2024 +0200
-
-    IO Threads: scheduler debug shows info on next loop to run
-
-commit 1180f2512362b295e7c6c64423b99d1ae86f4d62
-Author: Maria Matejka 
-Date:   Sun Jun 9 11:29:47 2024 +0200
-
-    Threads: smoothening loop pickup and less aggressive dropping
-
-commit 8ad9c946e133c58573f153dad59bdf1f797f4000
-Author: Maria Matejka 
-Date:   Sun Jun 9 00:43:14 2024 +0200
-
-    IO loop picker fixed
-    
-    Now if the thread finds out that it actually isn't busy,
-    it unsets the business status and picks something up right away.
-
-commit 4bca3b9f868ff0b550b41f3ed3e66738ed274b87
-Author: Maria Matejka 
-Date:   Sat Jun 8 23:43:37 2024 +0200
-
-    Task-in-limit checker hacked for mainloop
-
-commit d7cf378003e9859eb7d7dd055fda16180c4e4f0b
-Author: Maria Matejka 
-Date:   Sat Jun 8 20:19:51 2024 +0200
-
-    Table: too fast export validity check replaced with just a retry
-
-commit 661193cf98438329b9bb5666eb1882533a36d6ec
-Author: Maria Matejka 
-Date:   Sat Jun 8 20:06:52 2024 +0200
-
-    Thread IO: a little bit faster RX repeat
-
-commit f516d7cfe94d56fc537c4c29043fe821bf947adc
-Author: Maria Matejka 
-Date:   Sat Jun 8 18:26:02 2024 +0200
-
-    Netindex: fix absurd hash parameters
-
-commit 6d79433a444357ae5c9d4058651511f200d1a2d2
-Author: Maria Matejka 
-Date:   Sat Jun 8 02:44:09 2024 +0200
-
-    Converted ea cache to spinhash
-
-commit fece55b8105435c2663c2e9031a5f21e719deb44
-Author: Maria Matejka 
-Date:   Sat Jun 8 01:37:24 2024 +0200
-
-    Netindex: converted to spinlocked hash
-
-commit 1032bf25439f7e293055d817faa551804ff1bf87
-Author: Maria Matejka 
-Date:   Sat Jun 8 01:33:57 2024 +0200
-
-    Hash: Added a spinlocked variant
-    
-    The spinlocked hash has a main rw spinlock for the data blocks
-    and then a rw spinlock for each hash chain. Rehashing is asynchronous,
-    running from an event, and it happens chain-wise, never blocking more
-    than one chain at a time.
-
-commit d4733b28d9ccf82b1dd4706983023f26fa11dcfa
-Author: Maria Matejka 
-Date:   Fri Jun 7 18:01:22 2024 +0200
-
-    Dropping netindex fragile manipulation
-    
-    Now the netindex doesn't expose its internals and can be converted
-    to the spinlocked implementation much easier.
-
-commit b15eb4b54612f5aaf806e3c8ce366d1e1464ade4
-Author: Maria Matejka 
-Date:   Fri Jun 7 23:38:29 2024 +0200
-
-    roa_check() uses the auxiliary table
-
-commit 499d5e6fb3a43b810eaec398e19515a4b1038390
-Author: Maria Matejka 
-Date:   Fri Jun 7 19:41:04 2024 +0200
-
-    ROA tables have now an auxiliary table
-    
-    There is an IP table for every ROA table, holding special records
-    combining all known ROAs for every top-prefix.
-    
-    The ROA digestor is now an IP digestor, running over the auxiliary
-    table.
-
-commit 602595fe10b67da87bdc313b4bf3c36654df637f
-Author: Maria Matejka 
-Date:   Fri Jun 7 21:41:17 2024 +0200
-
-    Attributes: cleanup
-    
-    Dropping EAF_TYPE__MAX and adding a check for forgotten
-    ea class registration
-
-commit bf961ba405dec017ed931f386a2261902a4419a3
-Author: Maria Matejka 
-Date:   Fri Jun 7 13:19:51 2024 +0200
-
-    Threads shouldn't drop stopping loops
-
-commit 0fb9177374fe2260ac4ed2f1a9307d564f311fab
-Author: Maria Matejka 
-Date:   Fri Jun 7 12:12:00 2024 +0200
-
-    Loop scheduler tracing options configurable
-
-commit 67e9a37291c3111bec600555c60ddea7d33c264b
-Author: Maria Matejka 
-Date:   Fri Jun 7 09:05:11 2024 +0200
-
-    Fixed nanoseconds in IO loop time limiter
-
-commit 45cd4bbe9c893a3cdaf26ab372aa5c1f29af6cda
-Author: Maria Matejka 
-Date:   Fri Jun 7 08:59:48 2024 +0200
-
-    Fixed deferred route freeing crash
-    
-    The sending channel may be already gone when rte_free_deferred()
-    is finally called so we have to log about route freeing in the
-    synchronous call instead.
-
-commit b548ffe197dd3dcb0ca5844f325b4175ce23cd49
-Author: Maria Matejka 
-Date:   Thu Jun 6 23:06:27 2024 +0200
-
-    Fixed non-exporting protocol reload crash
-
-commit 9e88fc5b6b9703772fa7f21451d4984913ec48e7
-Author: Maria Matejka 
-Date:   Thu Jun 6 17:45:35 2024 +0200
-
-    Netindex: allow u32 -> netindex without locking
-
-commit dbe246a4bd52f2e771665b2848021e7709752e3d
-Author: Maria Matejka 
-Date:   Thu Jun 6 14:04:06 2024 +0200
-
-    Proto: fix reimporter crash on shutdown
-    
-    Channel transition to CS_STOP forgot to postpone the reimporter event,
-    thus reimport could theoretically run too late and cause trouble.
-
-commit d78448dd7cdd35e3f2231813b1d8487040c7c5e9
-Author: Maria Matejka 
-Date:   Thu Jun 6 13:09:39 2024 +0200
-
-    BGP: Dropping the netindex experiment, prefix hash is faster
-
-commit 7c59ef3faa5b6368e16f41a3583a846d034ac263
-Author: Maria Matejka 
-Date:   Thu Jun 6 13:32:31 2024 +0200
-
-    RCU Unwinder can now retry without yielding
-
-commit 4104d668d9922c2a5ebadfe73ffd34612925d550
-Author: Maria Matejka 
-Date:   Wed Jun 5 13:12:12 2024 +0200
-
-    Read-write spinlocks
-
-commit 8f4a784e14fe5543e2928966cdc3f655f1da35b4
-Author: Maria Matejka 
-Date:   Wed Jun 5 17:47:32 2024 +0200
-
-    Netindex is now net-type specific
-    
-    Combining all network types in one netindex was just a waste of memory
-    and too much complexity for no reason.
-
-commit 6ffab25f01b14f6ea48e9636a9739a562115c16a
-Author: Maria Matejka 
-Date:   Fri May 31 13:02:27 2024 +0200
-
-    IO loop: fixed unassigned count
-
-commit a19d0de42f3b8c58878dbbec88c4b1ae03db12e5
-Author: Maria Matejka 
-Date:   Tue Jun 4 21:38:05 2024 +0200
-
-    Table: Freeing routes deferred to save rcu synchronization
-
-commit d617801c31018926cccd75a64186ebb0597a6bcc
-Author: Maria Matejka 
-Date:   Tue Jun 4 14:58:45 2024 +0200
-
-    Route attributes now use the common lockfree usecount
-    
-    Also route attributes are not freed immediately anymore.
-
-commit 98fee17456656a82f33b7d97edb7d3333370fd55
-Author: Maria Matejka 
-Date:   Tue Jun 4 12:22:14 2024 +0200
-
-    Hash: dropped relics of hash iterators
-
-commit b03356104521db9da6018ff3d7d561a56cd2027a
-Author: Maria Matejka 
-Date:   Tue Jun 4 12:09:41 2024 +0200
-
-    Route attribute hash replaced with the generic one
-
-commit 423eaf34388e9e567754d1e2dbecd72a7c6cddb6
-Author: Maria Matejka 
-Date:   Tue Jun 4 10:10:35 2024 +0200
-
-    Softened warning about too much time spent in loop
-    
-    Now the warning needs at least 10 ms after the scheduled end time
-    to ever complain.
-    
-    TODO: make this configurable
-
-commit 5d6c4ff35a0239aea2ab2054bfc83278b39b72a2
-Author: Maria Matejka 
-Date:   Tue Jun 4 08:11:30 2024 +0200
-
-    BGP: Freeing prefixes deferred to save rcu synchronization
-
-commit d4ea5619176e8ca9b1e486ec43b038d386d97cb4
-Author: Maria Matejka 
-Date:   Mon Jun 3 14:23:41 2024 +0200
-
-    Common parts of the ROA updater moved into the table
-    
-    Channel is now just subscribing to yet another journal announcing
-    digested tries from the ROA table.
-    
-    Creating tries in every channel on-the-fly was too slow to handle
-    and it ate obnoxious amounts of memory. Instead, the tries are
-    constructed directly in the table and the channels are notified
-    with the completed tries.
-    
-    The delayed export-release mechanism is used to keep the tries allocated
-    until routes get reloaded.
-
-commit b287c13f2102c4b49c93fb300a580238b42d5a7b
-Author: Maria Matejka 
-Date:   Mon Jun 3 11:12:20 2024 +0200
-
-    Task deferrer: kinda more dumb-resistant macro
-    
-    Originally, this mechanism required to check whether there's enough time to work
-    and then to send an event. This macro combines all the logic and goes more straightforwardly
-    to the _end_ of the export processing loop.
-    
-    One should note that there were two cases where the export processing loop
-    was deferred at the _beginning_, which led to ignoring some routes on
-    reimports. This wasn't easily noticeable in the tests until the one-task
-    limit got a ceiling on 300 ms to keep reasonable latency.
-
-commit 2705c385c074431ee8cee2fdde710de2b7da0b54
-Author: Maria Matejka 
-Date:   Fri May 31 21:22:07 2024 +0200
-
-    Never allow more than 300 ms per loop
-
-commit 7a169e46a8f1a30cf98eae1cd9c7627c70e8f74c
-Author: Maria Matejka 
-Date:   Wed May 29 09:33:42 2024 +0200
-
-    BGP: export table stores routes, reloads and shows in CLI.
-    
-    In future, this and rtable's data structures should be probably merged
-    but it isn't a good idea to do now. The used data structure is similar
-    to rtable -- an array of pointers to linked lists.
-    
-    Feed is lockless, as with all tables.
-    
-    Full export (receiving updates) is not supported yet but we don't have
-    any method how to use it anyway. Gonna implement it later.
-
-commit f8e3ea940290c69bc64eca2b1bf947c8898c7f4b
-Author: Maria Matejka 
-Date:   Thu May 30 22:59:56 2024 +0200
-
-    BGP: Prefix table uses a pointer array instead of hash
-
-commit dc416d2de3e7dfbb5a8f532748262be9ae9b2f06
-Author: Maria Matejka 
-Date:   Fri May 31 20:43:15 2024 +0200
-
-    RCU: Rewritten to be more straightforward
-
-commit 7c41d860af1eca960c7fb0de52929a820d393d6d
-Author: Maria Matejka 
-Date:   Sun Jun 2 22:49:35 2024 +0200
-
-    Unit test for RCU
-
-commit 34acf22fc7b5707ff08ab010107685b1e2b37b21
-Author: Maria Matejka 
-Date:   Thu May 30 22:59:08 2024 +0200
-
-    Netindex: consistency checks and deletion of whole hash
-
-commit 31d5ffa4a95c25c36d42f5dddbd2abf82ddc32b9
-Author: Maria Matejka 
-Date:   Fri May 31 15:16:41 2024 +0200
-
-    If debugging, store a malloc circular log for easier debugging
-
-commit ce1a8be9afbe83bd324a9b9e250a891fa1c8f255
-Author: Maria Matejka 
-Date:   Fri May 31 09:47:56 2024 +0200
-
-    Hostentry: made src ea_list atomic to help with consistency
-
-commit a2ddd3d443d83e00769f16f7cb0e6b777cca8476
-Author: Maria Matejka 
-Date:   Thu May 30 23:05:15 2024 +0200
-
-    Slab: can be deleted as a single object
-
-commit 9490ed2bc5072179c12a08adce2cd2ef0a704b7a
-Author: Maria Matejka 
-Date:   Thu May 30 08:22:40 2024 +0200
-
-    Export: Next feed step-up is now internal
-    
-    There is no much reason to do anything else than the netindex technique.
-
-commit abcdde1b38d0cccf95190412dc11423c377aece3
-Author: Maria Matejka 
-Date:   Wed May 29 20:16:08 2024 +0200
-
-    BGP: Simpler hashing in export table
-    
-    We need a hashing simple enough to allow for feeding by netindex.
-
-commit d01a7c2bdaf50aff23cf5e1b4e494328c5294960
-Author: Maria Matejka 
-Date:   Wed May 29 08:18:31 2024 +0200
-
-    BGP: Export uses common attribute cache
-    
-    There is no real need for storing bucket attributes locally and we may
-    save some memory by caching the attributes in one central place.
-    
-    If this becomes a contention problem, we should reduce the lock load
-    of the central attribute cache.
-
-commit 73afffc464a44e734fc865bfd78d772f8400deed
-Author: Maria Matejka 
-Date:   Tue May 28 21:49:07 2024 +0200
-
-    BGP: pending TX prefixes link netindex instead of copying net_addr
-    
-    This helps with memory consumption, allows for removal of multiple
-    slab/mblock ifs and prepares for easier feeds.
-
-commit 6f59a414b18c9969d0c8307f609672965a01f9b9
-Author: Maria Matejka 
-Date:   Tue May 28 22:33:14 2024 +0200
-
-    BGP: refactored pending TX back into channel
-
-commit 10bb1c1e9d14169aacd33ddd487eafbf04f465af
-Author: Maria Matejka 
-Date:   Thu May 2 11:39:34 2024 +0200
-
-    Real almost-lockless feeds and more pull-like exports
-    
-    Introducing a new omnipotent internal API to just pass route updates
-    from whatever point wherever we want.
-    
-    From now on, all the exports should be processed by RT_WALK_EXPORTS
-    macro, and you can also issue a separate feed-only request to just get a
-    feed and finish.
-    
-    The exporters can now also stop and the readers must expect that to
-    happen and recover. Main tables don't stop, though.
-
-commit 00b139bd25c77b401d2065283cb970d9d8c1aa02
-Author: Ondrej Zajicek 
-Date:   Thu May 30 16:12:15 2024 +0200
-
-    Kernel: Do not use route replace when krt_metric differs
-    
-    The krt_metric is a part of the primary key, so it cannot differ for
-    route replace operation.
-    
-    Thanks to Leif Jakob for the bugreport.
-
-commit a5b4c21d8138bb533b02a60973b1ff4feedae456
-Author: Ondrej Zajicek 
-Date:   Thu May 30 02:40:55 2024 +0200
-
-    Filter: Silence some warnings in clang
-
-commit 3327d6129896069fcaea00867d5adeaf85865c18
-Author: Ondrej Zajicek 
-Date:   Thu May 30 02:11:06 2024 +0200
-
-    Lib: Fix BSD build
-
-commit ee7afdabc7b92a1e1971dd326578fcf90f3d8167
-Author: Maria Matejka 
-Date:   Wed May 29 10:55:59 2024 +0200
-
-    BGP: explicitly sending route refresh from CLI
-
-commit c130b4e1aedfda8119b513ecaa82c7f7deda3228
-Author: Ondrej Zajicek 
-Date:   Wed May 29 13:03:10 2024 +0200
-
-    Lib: Use access() function attribute
-
-commit e17824f5e519acb0a8bbb085129671db59c827cd
-Author: Maria Matejka 
-Date:   Wed Mar 27 11:34:19 2024 +0100
-
-    Protocol filter reload is now done by 'reload filters'
-    
-    This prepares for the separate 'reload bgp' command triggering BGP Route Refresh
-
-commit 2d6fb31cd1142befb60cad15ce9da2a7eabb76e2
-Author: Ondrej Zajicek 
-Date:   Tue May 28 16:41:24 2024 +0200
-
-    Lib: Use alloc_size() function attribute
-
-commit e29f134ad9346343277b7cb4581d2a704592dc79
-Author: Ondrej Zajicek 
-Date:   Tue May 28 15:31:52 2024 +0200
-
-    BFD: Fix build when BFD is disabled
-    
-    Move bfd_opts grammar inside BFD parser code to avoid dependences between
-    nest and BFD grammars, which breaks when BFD build is disabled.
-    
-    Add dummy bfd_opts grammar rule, so protocols can use this nonterminal
-    even with BFD disabled.
-    
-    Thanks to Yuri Honegger for the bugreport.
-
-commit 492c416c0a54c9ca76c288a0d84442429ae7b3f4
-Author: Maria Matejka 
-Date:   Wed May 22 08:56:37 2024 +0200
-
-    Static: Fixed undefined nexthop padding problems
-
-commit 03731bf35602afc2f9fe91d5109af70ad18fccd0
-Author: Maria Matejka 
-Date:   Mon May 20 15:57:13 2024 +0200
-
-    Netindex: fixed resolving net by index
-
-commit 1d1338c4f56f998ef7136da0b61a838759944fcc
-Author: Maria Matejka 
-Date:   Fri May 10 16:32:08 2024 +0200
-
-    RIP partial reload never worked properly, running full reload always
-
-commit 4581ecd8deb910cc79b3e6276dd213f6e86a5866
-Author: Maria Matejka 
-Date:   Fri May 10 16:22:16 2024 +0200
-
-    Dropping obsolete protocol Perf
-    
-    We have now better methods how to measure overall performance
-    and this obsolete protocol has basically rotten away. If anybody
-    needs its features, feel free to revive it in future.
-
-commit 030044b2f693179e348844d01366e1bcd4e90dc2
-Author: Maria Matejka 
-Date:   Fri May 10 16:14:54 2024 +0200
-
-    OSPF partial reload never worked properly, running full reload always
-
-commit b5f803ce4a7d165f042cf18041d7f41c029731a5
-Author: Maria Matejka 
-Date:   Wed May 8 18:55:01 2024 +0200
-
-    Simplified temporary resources
-    
-    Also TMP_SAVED now uses the CLEANUP hook to allow for breaks and returns
-
-commit 76ca53e4f8f03a52a2e0b3284c9e226cb06c766e
-Author: Maria Matejka 
-Date:   Fri Apr 26 12:14:33 2024 +0200
-
-    SKIP_BACK_DECLARE: easier embedded-to-parent typecasting
-
-commit f6ad42777d38613be1706f500b92ffa564bdb4f1
-Author: Maria Matejka 
-Date:   Tue Apr 23 18:50:22 2024 +0200
-
-    Lockless feed of a single net
-
-commit 091130e84bfe62b8a7cd46d08412fb20decc1e78
-Author: Maria Matejka 
-Date:   Tue Apr 23 18:28:34 2024 +0200
-
-    Using ea_lookup_tmp() for temporarily keeping attribute references
-    
-    To avoid needs for keeping local temporary references for attributes,
-    now one can use ea_lookup_tmp() to ensure that the attributes are
-    valid and stored until the task ends. After that, the attributes are
-    automatically unref'd and also deallocated if needed.
-
-commit 29cd2c01704e66d1140e6890d20a377786e4ac6d
-Author: Maria Matejka 
-Date:   Tue Apr 23 17:35:00 2024 +0200
-
-    Refactored the deferring framework into a separate structure
-
-commit 2b38a833cd2936803487eee8b0ebde78b3a47e4e
-Author: Maria Matejka 
-Date:   Thu May 16 10:22:19 2024 +0200
-
-    Avoiding RCU synchronization deadlock when locking in critical section
-    
-    Explicitly marking domains eligible for RCU synchronization. It's then
-    forbidden to lock these domains in RCU critical section to avoid
-    possible deadlock.
-
-commit 6fb467a54c67f6a7257b5e1ba272352cb78fce59
-Author: Maria Matejka 
-Date:   Tue May 14 10:46:10 2024 +0200
-
-    RCU Unwinder refactored from route table to a separate structure
-
-commit eaf187b57bdab9124c53b11415323dc4b3a794cb
-Author: Maria Matejka 
-Date:   Wed Apr 3 14:47:15 2024 +0200
-
-    Table feeds are now lockless
-    
-    This commit makes the route chains in the tables atomic. This allows not
-    only standard exports but also feeds and bulk exports to be processed
-    without ever locking the table.
-    
-    Design note: the overall data structures are quite brittle. We're using
-    RCU read-locks to keep track about readers, and we're indicating ongoing
-    work on the data structures by prepending a REF_OBSOLETE sentinel node
-    to make every reader go waiting.
-    
-    All the operations are intended to stay inside nest/rt-table.c and it
-    may be even best to further refactor the code to hide the routing table
-    internal structure inside there. Nobody shall definitely write any
-    routines manipulating live routes in tables from outside.
-
-commit be902fc55c10b88e0229ebb55446e8d34f35074c
-Author: Maria Matejka 
-Date:   Sat Apr 20 18:10:42 2024 +0200
-
-    Fixed flush condition when stale cycle valid/set indicators wrap around
-
-commit a716e7ea798027159f53bb4637ccb661cd33be93
-Author: Maria Matejka 
-Date:   Wed Apr 3 13:31:36 2024 +0200
-
-    Kernel: replaced synchronous prune by a refeed
-
-commit 182a97f5e6aaeb5fac2859bb30889d88275898c8
-Author: Maria Matejka 
-Date:   Thu Apr 4 11:38:52 2024 +0200
-
-    Lockless hostentry resolution
-    
-    Now the hostentry doesn't need to lock table, instead it tracks the
-    hostentry version and retries if the hostentry changed while updating.
-
-commit 83a409abd2c05e7dbd0f25e5b78289f3ed379dfc
-Author: Maria Matejka 
-Date:   Thu Apr 4 12:01:35 2024 +0200
-
-    Cached route attributes now have explicitly marked layers
-    
-    Also the rta_* functions renamed to ea_* functions
-
-commit 77659b1994cebcfba02963973173974a54aa7822
-Author: Maria Matejka 
-Date:   Mon Apr 1 20:04:14 2024 +0200
-
-    Netindex: Dropping tmp handle mechanism in favor of deferred lfuc_unlock
-
-commit 46164395b20f4e080d545cce6ec95bbdaab27342
-Author: Maria Matejka 
-Date:   Mon Apr 1 16:01:26 2024 +0200
-
-    Fixed all implicit seq_cst warnings caused by the previous commit
-
-commit 9c564eff2732ab0330ff88e7be6d3cd56f9f686a
-Author: Maria Matejka 
-Date:   Mon Apr 1 15:24:28 2024 +0200
-
-    Enabling warnings for implicit seq_cst in atomic access
-
-commit 2aee389ef5e5e4f593497b72b930c4f961e82377
-Author: Maria Matejka 
-Date:   Wed Mar 27 12:17:31 2024 +0100
-
-    Doc: short migration info for BIRD 2 -> 3
-
-commit 670c46725b70fa9105f5724d7066863d60efdb97
-Author: Maria Matejka 
-Date:   Sun Apr 7 14:11:27 2024 +0200
-
-    Fixed announcement inconsistency between feeds and regular exports
-
-commit 2eebb680c20bbf22246f43f5b6516cf0b4d1f96d
-Author: Maria Matejka 
-Date:   Sun Apr 7 13:23:59 2024 +0200
-
-    Fixed best route announcements after NHU
-    
-    When more routes in one net changed at once, the best route
-    announcements were inconsistent which confused exporters.
-
-commit 67aafd99d39c21187241c4da8f7567f9683acffa
-Author: Maria Matejka 
-Date:   Wed Mar 13 13:46:16 2024 +0100
-
-    Route flag REF_OBSOLETE
-    
-    Marking routes obsolete when being removed from table, just to be sure.
-
-commit 6a13c02d3bab6ddeffed27ba823ad67afedceb0a
-Author: Maria Matejka 
-Date:   Tue Mar 5 14:52:50 2024 +0100
-
-    Removed the obsolete birdloop flagger
-    
-    This was useful when events were locking. As now sending events is lockless,
-    we can drop this obsolete routine for good.
-
-commit 59dc95aa255a99091fb38c6ce791d3411ae4c532
-Author: Maria Matejka 
-Date:   Tue Mar 5 14:48:37 2024 +0100
-
-    Simplified table deletion (one less step)
-
-commit 728d19703de4c82d8e168489ee228dd6a9000f0d
-Author: Maria Matejka 
-Date:   Tue Mar 5 14:25:52 2024 +0100
-
-    Hostentry usecount converted to lfuc
-
-commit e0a1bbdf6546891cc1f8413077aef99adb9494cc
-Author: Maria Matejka 
-Date:   Tue Mar 5 13:57:11 2024 +0100
-
-    Lockfree usecount: deferring unlocks to the metaloop
-    
-    This allows us for easy temporary locks without additional burden of explicit cleanup.
-
-commit a6ef8cd492e8f0e2f03ae555d90fc6c3106ac6e8
-Author: Maria Matejka 
-Date:   Thu Feb 29 14:04:05 2024 +0100
-
-    Route table export journal converted to the generic structure
-
-commit 23f7208a826d9a6e262d302019f5aec4b4b5468f
-Author: Maria Matejka 
-Date:   Thu Feb 29 14:03:30 2024 +0100
-
-    Lock free journal refactored into a separate data structure
-
-commit 684332b7d271a0209411d421c09f995424901d0a
-Author: Maria Matejka 
-Date:   Thu Feb 22 13:31:11 2024 +0100
-
-    Replacing the NHU table loop flag with a proper event
-
-commit 6bbe9dea3a6bb1644a3b3b961d1a27dde9e49f15
-Author: Maria Matejka 
-Date:   Sun Feb 11 22:58:29 2024 +0100
-
-    Flowspec links don't peruse the all-hooks list for lookup
-
-commit 77a0310f8766684871a972609960f1bacabc04ff
-Author: Maria Matejka 
-Date:   Fri Feb 9 17:02:44 2024 +0100
-
-    Refactoring: back-merged export data structures
-    
-    Table-specific structures inheriting commons are too crazy.
-
-commit 261a953d7ea39fde989d78d6383b24818e09f2d4
-Author: Maria Matejka 
-Date:   Fri Feb 9 15:52:26 2024 +0100
-
-    Export table dump temporarily switched off
-
-commit cb2c9c8cc0272b2aa25286f185d5a9359cf88f6d
-Author: Maria Matejka 
-Date:   Thu Feb 8 14:34:54 2024 +0100
-
-    Added and explicit target table to the ROA subscription object
-
-commit 10f41cda874fc2dfb66f078bc290926ec2498131
-Author: Maria Matejka 
-Date:   Wed Feb 7 17:30:43 2024 +0100
-
-    Refactoring of struct rt_pending_export
-    
-    Now it stores const rte * instead of struct rte_storage * to allow for
-    different storage backends.
-
-commit 0046594237c49fcb42bcb922ae680d0c5819845d
-Author: Maria Matejka 
-Date:   Sun May 19 12:19:49 2024 +0200
-
-    Missing definition of RTAX_FASTOPEN_NO_COOKIE shouldn't kill the whole build
-
-commit fe3d7c1a17468d299a1a26eb713fbf2d988e8906
-Merge: 2900a608f c06ce7090
-Author: Maria Matejka 
-Date:   Sun May 19 11:28:03 2024 +0200
-
-    Merge a branch of fixes and updates needed for stabilization of v3.
-    
-        Merge commit 'c06ce709' into HEAD
-
-commit 2900a608f0f960283a6744303b6fa244607ff8bc
-Author: Maria Matejka 
-Date:   Sun May 19 11:27:18 2024 +0200
-
-    L3VPN: Setting the bgp_ext_community flags properly
-
-commit c06ce7090ff33a22e3e70a395abb169a98954093
-Author: Maria Matejka 
-Date:   Tue Mar 5 12:17:56 2024 +0100
-
-    Static: Unlock IGP tables on cleanup to avoid problems with hostentry unlocking
-
-commit 4b9d12708e5318221e43fabd955a27a339a37c6c
-Author: Maria Matejka 
-Date:   Fri May 17 23:21:38 2024 +0200
-
-    Loop run waits until pingers finish
-    
-    This ensures that if somebody passes an event to a loop which
-    has just started executing, then the event gets picked up. Otherwise
-    there is a race condition causing stray events pending in queue
-    but without the ping (because the run actually finishes too fast
-    to pickup the later events).
-
-commit 67f6ac16284d5496a13c0f3293c80a65e39c029b
-Author: Maria Matejka 
-Date:   Wed Apr 3 12:05:02 2024 +0200
-
-    IO Loop: provide information about current loop and task time limit
-
-commit b1b3c7aac20ed750674c8e1a48ce0a2612f8855c
-Author: Maria Matejka 
-Date:   Fri Apr 5 14:11:38 2024 +0200
-
-    Allowing to send events to the metaloop's priority list
-
-commit 1b9152d0416cf53f81e4da8cde915308afa2d86b
-Author: Maria Matejka 
-Date:   Fri Mar 1 16:31:18 2024 +0100
-
-    Net: explicit generic-to-specific typecast with checking
-
-commit 967c97bb59dfa37d4423684c7357e660ad1e3bbf
-Author: Maria Matejka 
-Date:   Tue Mar 12 21:08:29 2024 +0100
-
-    Bitops: bitflip function
-    
-    to flip order of bits in 32b numbers
-
-commit d6ec3eaee49aa83ad32cf651be7ebbce550d4257
-Author: Maria Matejka 
-Date:   Wed Apr 3 09:45:40 2024 +0200
-
-    Locking: forcefully unwinding locks to a previously stored state
-
-commit 6806aacf7471feceb8593091380b40cf1befa8a0
-Author: Maria Matejka 
-Date:   Thu Mar 21 23:37:04 2024 +0100
-
-    Typed list: macro for list length
-
-commit a6f65d99b4591451c8c4f0c599a5678cab74b6c5
-Author: Maria Matejka 
-Date:   Sun Feb 11 22:57:55 2024 +0100
-
-    Typed lists: enabled defining the list structure independently on the node
-
-commit 85c144f8ac91c48eacdbe6d0ccf32210eac43c75
-Author: Maria Matejka 
-Date:   Tue Feb 27 14:25:04 2024 +0100
-
-    Event: fixed race condition between ev_send and ev_postpone
-
-commit 418578bc6b5c947adf15a866c20060d9b331c8dd
-Author: Maria Matejka 
-Date:   Mon Apr 1 15:03:24 2024 +0200
-
-    IO loop: fixed local hot page cache flushing condition
-
-commit 24a6336acf1752a42b664c7f0d39191aa2146858
-Author: Maria Matejka 
-Date:   Sat May 11 16:36:49 2024 +0200
-
-    lib/printf_test.c: test on strcmp fixed
-    
-    we mistakenly required the return value to be only -1, 0 or 1
-
-commit c3698535e32c12437b0e4a5efe405484796ef803
-Author: Maria Matejka 
-Date:   Wed Apr 10 16:14:40 2024 +0200
-
-    BGP: Fixed corking of RX
-    
-    If cork occurred after some incoming data had been already processed,
-    BGP incorrectly processed them again after uncorking because it forgot
-    to store the actual socket state.
-    
-    Now storing the socket state (done at the end of bgp_rx()) and
-    therefore the bug is fixed.
-
-commit 1e55a8168a992c61799a1458abfb8f16e0a30753
-Author: Maria Matejka 
-Date:   Tue Apr 9 19:14:30 2024 +0200
-
-    Fixed in-table route refresh counter to not randomly add 256
-
-commit a9124be38468c3f76c228b3a61fe3fac33670647
-Author: Maria Matejka 
-Date:   Sun Apr 7 22:27:13 2024 +0200
-
-    Fixed hostcache notifier pool
-    
-    This pool has to be the service pool to allow the seq bitmaps to grow
-    from the exporter and feeder routines
-
-commit e38cd2b215ef44e0d15d78bcf499e3b9463ab4b0
-Author: Maria Matejka 
-Date:   Sun Apr 7 11:43:52 2024 +0200
-
-    Fixed reporting about exported routes
-
-commit ef16f0763347d6f53d96a5ed6ae19be505c025c2
-Author: Maria Matejka 
-Date:   Wed Apr 3 18:27:09 2024 +0200
-
-    Fixed annoying undefined values with nexthops
-
-commit 3a2e423d3e1117ac8fb9f83d2a2bcfe99e8bf016
-Author: Maria Matejka 
-Date:   Thu Feb 22 12:00:05 2024 +0100
-
-    Undefined behavior fix
-
-commit 3371ea08433ef692d5f09c84d20b0a46af175eb6
-Author: Maria Matejka 
-Date:   Thu Feb 22 11:38:13 2024 +0100
-
-    CLang compilation fix
-
-commit 765debf5236375595d52aaa188183df8b5edd4f4
-Author: Maria Matejka 
-Date:   Wed May 1 20:23:04 2024 +0200
-
-    Formalized our contribution policy which we're currently applying
-
-commit d0512ba74bd45c772d3fdd5682fa88e5d30b86f7
-Author: Ondrej Zajicek 
-Date:   Wed Apr 17 17:07:47 2024 +0200
-
-    Doc: BFD update
-
-commit e6dbde68836ab632126614fa5588268120997548
-Author: Katerina Kubecova 
-Date:   Thu Apr 11 14:53:39 2024 +0200
-
-    BFD: Set password per session
-
-commit 13c10ee06241d4538603d21954be0c2db08911ba
-Author: Ondrej Zajicek 
-Date:   Thu Apr 11 18:54:23 2024 +0200
-
-    Doc: Fix datetime format for password entries
-    
-    In BIRD 1, we used DD-MM-YYYY, while in BIRD 2 we switched to the usual
-    format YYYY-MM-DD.
-    
-    Thanks to Janne Pisilä for the bugreport.
-
-commit 280daed57d061eb1ebc89013637c683fe23465e8
-Author: Ondrej Zajicek 
-Date:   Thu Apr 4 18:37:26 2024 +0200
-
-    OSPF: Allow loopback nexthop in OSPFv3-IPv4
-    
-    In OSPFv3-IPv4 there is no requirement that link-local next hop announced
-    in Link-LSA must be in interface address range. Therefore, for interfaces
-    that do not have IPv4 address we can use some loopback IP address and
-    announce it as a next hop. Also we should accept such address.
-
-commit 5d5c431a3c23ad7ed2ed5e769d9857e7f3a1e626
-Merge: 477b3e5c9 0b684a43b
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 18:24:10 2024 +0200
-
-    Merge commit '0b684a43bd7ce4a32c9cd7754b88286bcd1815bb' into thread-next
-
-commit 477b3e5c983f2ac69e7fb0dc36cd3d312230bc35
-Merge: 0883ce66b 66d6ac708
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 18:21:37 2024 +0200
-
-    Merge commit '66d6ac70856bdb29840983454373bb10a532e4f7' into thread-next
-
-commit 0883ce66bf4f5acd2025b7a45a7afe19f7c75034
-Merge: 294b9763c 1b064355f
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 18:20:18 2024 +0200
-
-    Merge commit '1b064355f752b9bfe4644f775697bbd9b711f762' into thread-next
-
-commit 294b9763ce4199988025f649e9b95539e564fe29
-Merge: f27d1bae0 114be2af2
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 03:15:33 2024 +0200
-
-    Merge commit '114be2af28e5c124bd479a487f89244ba99c272d' into thread-next
-
-commit f27d1bae0fab3b26a1b65ada9e3eaa67106aeb36
-Merge: a0ec075de 26dd61ee7
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 03:01:59 2024 +0200
-
-    Merge commit '26dd61ee7f91c15157601b2404de5b6500a6061c' into thread-next
-
-commit a0ec075de3f01645bd7c81ef1b94b199aa4c7d68
-Merge: 07757b8a0 2d0652dd1
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 03:00:10 2024 +0200
-
-    Merge commit '2d0652dd1088395c50df8fe1a99f1111b44688c6' into thread-next
-
-commit 07757b8a0c192f116afba3e846a01d10657efdc2
-Author: Ondrej Zajicek 
-Date:   Mon Apr 1 02:53:25 2024 +0200
-
-    Filter: Initialize route attribute flags properly
-    
-    Move 'flags' field back to ea_class, so filtering code can use it to
-    initialize route attribute flags when set by filters.
-
-commit 0bcc7a9316d1eb693e3516d5f6540ca1bd0649e6
-Merge: d55678828 44a16bff6
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 20:03:46 2024 +0100
-
-    Merge commit '44a16bff6cbf3f5ae8db21ffcec602bc51295d0a' into thread-next
-
-commit d5567882828a1f1c809664661e56a20cc7df8017
-Merge: 4036da373 5c04f0e23
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 20:00:50 2024 +0100
-
-    Merge commit '5c04f0e2354ff0cca9b1479e68882b72755f3aab' into thread-next
-    
-    (No need for deprecated names in BIRD 3.)
-
-commit 4036da3732220a5cd268e77f9505dfd5506cedb1
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 19:46:24 2024 +0100
-
-    Nest: Fix bitfield attributes
-    
-    Fix missing route lookup, causing crash when accessing route attribute.
-    
-    Also fix additional space in bitfield formatting.
-
-commit f47ca71d771edb21a7c72d76f2638e75136a9e54
-Merge: 1beafe3ee e68363909
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 19:16:44 2024 +0100
-
-    Merge commit 'e68363909cb9733c1bf55fff80a8b034e4111849' into thread-next
-
-commit 1beafe3eea05bc17387d0ec56ad6c7108d702a68
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 17:46:24 2024 +0100
-
-    Fix merge commit c195c7a0d50cd80656fc3cabc692a0464dd0cb2d
-
-commit d548665de8e8f41359250d01e563b2c67931b66d
-Merge: c195c7a0d 225943eae
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 17:46:04 2024 +0100
-
-    Merge commit '225943eaea3cdd634dce8fd84547baf1bc363640' into thread-next
-
-commit c195c7a0d50cd80656fc3cabc692a0464dd0cb2d
-Merge: 62c9f12df 224a152c5
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 16:22:23 2024 +0100
-
-    Merge commit '224a152c53f304881f8616a1c9255b467062a069' into thread-next
-
-commit 62c9f12dfc1b360be1b97dcf8dcb4bea1cf1065d
-Merge: af4d838af 574d7eb24
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 15:00:40 2024 +0100
-
-    Merge commit '574d7eb241a60622b0573ab1460cb23d968ba1cc' into thread-next
-
-commit af4d838af550fedf65da329caebd413abb09ef02
-Merge: df0dee54b f40e2bc27
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 14:50:25 2024 +0100
-
-    Merge commit 'f40e2bc270d3635be518ae80251ce0b5c519c6f4' into thread-next
-    
-    (empty merge, no fix needed in thread-next)
-
-commit df0dee54b0cf776c09bd135f804f90ee38e07f8d
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 01:01:33 2024 +0100
-
-    Revert "Temporarily disabling L3VPN netlab test, has no data for v3"
-    
-    This reverts commit 000dbf737c6821501f3909cb656be9a73e367186.
-
-commit d2a531a92bb3015f2b6582e77c516f7eec05ae39
-Author: Ondrej Zajicek 
-Date:   Thu Mar 28 00:55:19 2024 +0100
-
-    L3VPN: Fix missing rte_owner_class registration
-
-commit 468f1d6547437e0640cb84f7ac144c32574cc020
-Author: Ondrej Zajicek 
-Date:   Wed Mar 27 23:26:25 2024 +0100
-
-    Nest: Improve printing of hostentries with MPLS labels
-    
-    MPLS labels in hostentry should be printed with 'mpls' keyword instead of
-    'labels' to be consistent with the rest of the 'show route' output.
-
-commit eadebc287b88b4c6accc9dc0f00292d844f69dcc
-Author: Ondrej Zajicek 
-Date:   Wed Mar 27 23:16:51 2024 +0100
-
-    Nest: Fix printing of hostentry table
-    
-    When hostentry is printed, it should show the table in which the nexthop
-    is resolved, not the dependend one.
-
-commit bc10975adbb0aef772496f334dd0bbd23251c1d8
-Author: Maria Matejka 
-Date:   Sun Oct 15 23:52:46 2023 +0200
-
-    ASPA: checks done in filters; no autoreload yet
-
-commit 08571b20598c58877e1565403d970efc2b90dba6
-Author: Maria Matejka 
-Date:   Sun Oct 15 16:04:36 2023 +0200
-
-    ASPA: basic data structures and Static protocol support
-
-commit b95dc8f29f18eb177f91fdc4bf0716fac9b15366
-Author: Maria Matejka 
-Date:   Sun Oct 15 12:06:11 2023 +0200
-
-    Expanded usage of stdbool.h to the whole BIRD
-
-commit 0b684a43bd7ce4a32c9cd7754b88286bcd1815bb
-Author: Ondrej Zajicek 
-Date:   Fri Mar 22 01:40:43 2024 +0100
-
-    NEWS and version update
-
-commit a698f8d917af8e9b421a667766a42f45e9359616
-Author: Ondrej Zajicek 
-Date:   Fri Mar 22 00:40:06 2024 +0100
-
-    Static: Fix invalid combination of nexthop options
-    
-    BFD requires defined local IP, but for nexthop with onlink there might
-    not be such address. So we reject this combination of nexthop options.
-    This prevent crash where such combination of options is used.
-
-commit d21a508e8d9210f5b3b60d8fc8b79a344d4a7440
-Author: Ondrej Zajicek 
-Date:   Thu Mar 21 15:59:26 2024 +0100
-
-    Revert "OSPF: On physical PtP links, skip next-hop resolving"
-    
-    This reverts commit 31aa62ae6d2e111e87c08b4b27a16ead968f0689.
-
-commit 46a4932574106315e2585d990199da7825863a85
-Merge: 66d6ac708 44e351d15
-Author: Ondrej Zajicek 
-Date:   Thu Mar 21 15:58:52 2024 +0100
-
-    Merge commit '44e351d1522f0099687aac9fd65dcea73a04af43'
-
-commit 66d6ac70856bdb29840983454373bb10a532e4f7
-Author: Ondrej Zajicek 
-Date:   Tue Mar 19 15:39:46 2024 +0100
-
-    Babel: Fix build with limited set of protocols
-
-commit 06209c1917338a6d5f3844a31a1b9e29c1c85573
-Author: Ondrej Zajicek 
-Date:   Tue Mar 19 15:39:19 2024 +0100
-
-    Aggregator: Fix build with limited set of protocols
-
-commit 099898ffdd7dd0133d520c96ff19319e500448b3
-Author: Michal Zagorski 
-Date:   Mon Mar 11 12:57:13 2024 +0100
-
-    Static: Fix build with limited set of protocols
-
-commit adfff448789c9e75c525f5162c046fb44f9768cd
-Author: Ondrej Zajicek 
-Date:   Sun Mar 10 18:57:04 2024 +0100
-
-    NEWS and version update
-
-commit 1b064355f752b9bfe4644f775697bbd9b711f762
-Author: Ondrej Zajicek 
-Date:   Tue Mar 5 19:04:10 2024 +0100
-
-    Client: Add support for completion of command options
-    
-    We can easily extend command completion to handle also keywords for
-    command options. Help for command options is not yet supported.
-
-commit 114be2af28e5c124bd479a487f89244ba99c272d
-Author: Ondrej Zajicek 
-Date:   Tue Mar 5 16:38:24 2024 +0100
-
-    Filter: Add route attribute gw_mpls_stack
-    
-    Add route attribute gw_mpls_stack to make MPLS stack of route nexthop
-    accessible from filters. Its type is T_CLIST, which is really not correct
-    (as it is a list, while T_CLIST is a set). Therefore, we keep this
-    attribute *undocumented* and it will be *changed* without further notice.
-    
-    Based on a patch from Trisha Biswas , thanks!
-
-commit 26dd61ee7f91c15157601b2404de5b6500a6061c
-Author: Ondrej Zajicek 
-Date:   Mon Mar 4 23:20:53 2024 +0100
-
-    BFD: Add arguments to 'show bfd sessions' command
-    
-    Add several arguments to 'show bfd sessions' command to filter
-    the list of sessions.
-
-commit 4737937375c657794d608ea02cefa289531d763a
-Author: Ondrej Zajicek 
-Date:   Fri Mar 1 18:39:09 2024 +0100
-
-    BFD: Improve 'show bfd sessions all' command
-
-commit a48dc5efe05f4e985b648f19679865153d0398bd
-Author: Katerina Kubecova 
-Date:   Thu Jan 18 12:36:48 2024 +0100
-
-    BFD: Show session for ip / ip prefix
-
-commit 37bf2078434b5de5662d28345bce788624d50ac7
-Author: Katerina Kubecova 
-Date:   Tue Jan 16 11:02:22 2024 +0100
-
-    BFD: show bfd sessions all
-
-commit e2728c8078161d9811d6c24a11e4c95efd1c9313
-Author: Job Snijders 
-Date:   Thu Feb 22 14:58:29 2024 +0100
-
-    RPKI: Add 'local address' configuration option
-    
-    Allow to explicitly configure the source IP address for RPKI-To-Router
-    sessions. Predictable source addresses are useful for minimizing the
-    holes to be poked in ACLs.
-    
-    Changed from 'source address' to 'local address' by committer.
-
-commit 2d0652dd1088395c50df8fe1a99f1111b44688c6
-Author: Ondrej Zajicek 
-Date:   Tue Feb 20 17:39:05 2024 +0100
-
-    BGP: Maintain valid route attribute flags even in local tables
-    
-    BGP route attributes have flags (Optional, Transitive) that are validated
-    on decode and set to valid value on export. But if such attribute is
-    modified by filter or set internally by BGP during import, then its flags
-    would be zero in local tables. That usually does not matter, as they are
-    not used locally and they were fixed on export, but invalid flags leaked
-    in BMP and MRT dumps.
-    
-    Keep route attribute flags set to valid values even when set by filters
-    or modified by BGP.
-
-commit 44a16bff6cbf3f5ae8db21ffcec602bc51295d0a
-Author: Job Snijders 
-Date:   Sun Feb 18 09:00:10 2024 +0100
-
-    BGP: Update SendHoldTimer BGP Error code
-    
-    IANA registered an "Early Allocation" BGP Error code for 'Send Hold
-    Timer Expired' event. Update BIRD to use that error code.
-
-commit c3335b504403136ef8deb81cb034480a65ca2815
-Author: Ondrej Zajicek 
-Date:   Fri Feb 16 18:44:40 2024 +0100
-
-    Static: Allow to define both nexthop and interface
-    
-    Allow to define both nexthop and interface using iproute2-like syntax,
-    e.g.: route 10.0.0.0/16 via 10.1.0.1 dev "eth0";
-    
-    Now we can avoid to use link-local scope hack (e.g. 10.1.0.1%eth0)
-    for cases where both nexthop and interface have to be defined.
-    
-    Thanks to Marcin Saklak for the suggestion.
-
-commit 5c04f0e2354ff0cca9b1479e68882b72755f3aab
-Author: Ondrej Zajicek 
-Date:   Fri Feb 16 14:54:17 2024 +0100
-
-    Netlink: Fix spelling of krt_ssthresh / krt_lock_ssthresh
-    
-    BIRD route attribute for RTAX_SSTHRESH metric was krt_sstresh instead of
-    krt_ssthresh. Fix that and keep old name as an depreacted alias.
-
-commit e68363909cb9733c1bf55fff80a8b034e4111849
-Author: Ondrej Zajicek 
-Date:   Fri Feb 16 14:29:54 2024 +0100
-
-    Netlink: Cleanups in route metrics
-    
-    - Add krt_fastopen_no_cookie atttibute
-    - Add missing krt_lock_* bits
-    - Fix krt_feature_allfrag
-    - Fix type of EA_KRT_LOCK and EA_KRT_FEATURES
-
-commit 225943eaea3cdd634dce8fd84547baf1bc363640
-Author: Ondrej Zajicek 
-Date:   Wed Feb 14 14:01:04 2024 +0100
-
-    Filter: Add support for setting TCP congestion control algorithm
-    
-    Allow to set TCP congestion control algorithm using krt_congctl
-    route attribute.
-    
-    Based on patch from Trisha Biswas , thanks!
-
-commit 224a152c53f304881f8616a1c9255b467062a069
-Author: Ondrej Zajicek 
-Date:   Wed Feb 14 13:58:56 2024 +0100
-
-    Filter: Add support for string route attribute
-
-commit 574d7eb241a60622b0573ab1460cb23d968ba1cc
-Author: Alexander Zubkov 
-Date:   Wed Feb 7 19:11:10 2024 +0100
-
-    BGP: Allow multiple EBGP neighbors with the same peer.
-    
-    We can distinguish BGP sessions if at least one side uses a different IP
-    address. Extend olock mechanism to handle local IP as a part of key, with
-    optional wildcard, so BGP sessions could local IP in the olock and not
-    block themselves.
-
-commit 0b52f7c01f55707b25eebd0a66c48eafe06fe455
-Author: Inrin 
-Date:   Tue Feb 6 19:03:14 2024 +0100
-
-    birdc: Do not execute cmd on noninteractive help request
-    
-    The help command triggered by '?' keeps the message in readline buffer,
-    so it could be edited. For noninteractive shell it leads to an unexpected
-    side effect that `echo  ? | birdc` executes the command  after
-    showing its help. Avoid this by clearing the readline buffer in such case.
-
-commit ff2ebdc7e1c586762b04004608fb7aaf55e245c7
-Author: Ondrej Zajicek 
-Date:   Tue Feb 6 18:34:55 2024 +0100
-
-    BGP: Increase max length of notification data in error logs
-    
-    Increase max length of notification data in error logs from 16 to 128.
-    There is already enough space in the buffer.
-    
-    Thanks to Marco d'Itri for the suggestion.
-
-commit 3b217f29843a68638fba52e873b6bfde52258b53
-Author: Maria Matejka 
-Date:   Tue Jan 23 20:25:48 2024 +0100
-
-    Fixed L3VPN after merge to v3.
-    
-    Semantics of rt_get_source() has changed between v2 and v3. Also other
-    minor fixes were needed to make it run.
-
-commit 06030d8bf0921bcf333c2d3398f4a9f41ba21e2f
-Author: Maria Matejka 
-Date:   Tue Jan 30 23:13:49 2024 +0100
-
-    Hostentry eattrs are now properly zeroed
-
-commit 95adf7b0fa0c0c764f34d064797c5b3f25680b98
-Author: Maria Matejka 
-Date:   Tue Jan 30 21:29:00 2024 +0100
-
-    Fixed regression in route feeding.
-    
-    We were, once again, forgetting to mark empty-net journal entries as
-    processed, as was fixed in 32bb548c116b40f79d077c10356c037770ed1005.
-    
-    Introduced in 548dbb2252e80362789b8c98355f468491d47b34.
-    Caught by cf-ebgp-graceful.
-
-commit 000dbf737c6821501f3909cb656be9a73e367186
-Author: Maria Matejka 
-Date:   Mon Jan 29 22:59:49 2024 +0100
-
-    Temporarily disabling L3VPN netlab test, has no data for v3
-
-commit 29e7cd4a7cdfecefcb851b815d073f5577804b07
-Author: Maria Matejka 
-Date:   Mon Jan 29 16:56:22 2024 +0100
-
-    Showing MPLS labels in hostentry display
-
-commit 058984bc861e938bd274262b939013ae428b38eb
-Author: Maria Matejka 
-Date:   Mon Jan 29 13:58:23 2024 +0100
-
-    BGP: fixed MPLS setting in nexthops
-    
-    bug introduced somewhere during conversion of nexthops to eattrs
-
-commit 2e5cf618ef823db4e414bd7960265d84479bf718
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:37:08 2024 +0100
-
-    Hack-fix of IPv6 SADR literal parsing
-    
-    This should be probably once done better, not by ad-hoc disabling
-    the attribute symbol table when parsing SADR literals.
-
-commit a0041dd2368d171c6c9f538c9fff591f3a88c6f4
-Merge: d61563343 472be46f7
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:09:54 2024 +0100
-
-    Merge commit '472be46f7ab211f38e7662543f1436df30dca753' into thread-next
-
-commit d6156334374c416f32ee9ad01ebad3c56941966a
-Merge: c119d6ef5 13c6cf8a7
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:09:47 2024 +0100
-
-    Merge commit '13c6cf8a7430a6b133e46525256eb5554b3f0a2b' into thread-next
-
-commit c119d6ef557d715646539964960188c3d468e18f
-Merge: b7400f73a 7d2c7d59a
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:08:51 2024 +0100
-
-    Merge commit '7d2c7d59a363e690995eb958959f0bc12445355c' into thread-next
-
-commit b7400f73a47b220378ef4bd1923d09f19cf7ffbd
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:03:54 2024 +0100
-
-    Config: Moved hostname check before any other commit is done
-    
-    This was sending  hostname via UDP while reconfiguring.
-
-commit cd81b6d7cdc555a4644fc1b4ece1efbd38c39a8b
-Merge: 86ba37d8f 2c7555cf2
-Author: Maria Matejka 
-Date:   Sun Jan 28 23:01:39 2024 +0100
-
-    Merge commit '2c7555cf2ac8439713dd9148b348128c57222a38' into thread-next
-    
-    The UDP logging had to be substantially rewritten due to a different
-    logging backend and reconfiguration mechanisms.
-    
-    Conflicts:
-            doc/bird.sgml
-            sysdep/unix/config.Y
-            sysdep/unix/io.c
-            sysdep/unix/log.c
-            sysdep/unix/unix.h
-
-commit 86ba37d8f17faf7f8a0149d98732d59699ae369c
-Author: Maria Matejka 
-Date:   Sun Jan 28 21:42:39 2024 +0100
-
-    Logging: uses writev instead of in-buffer magic
-
-commit 0e1bfdd9e05270d8022a3a0a88cf88c7d089f873
-Merge: 17fdac3f6 58d2846ed
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:05:50 2024 +0100
-
-    Merge commit 'v2.14-101-g58d2846e' into thread-next
-
-commit 58d2846edf4d40ce07548ff1debf6e6478611025
-Merge: d020a7c78 94310c53a
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:05:42 2024 +0100
-
-    Merge commit 'v2.14-42-g94310c53' into mq-merge-step-2
-
-commit 94310c53a41cfdb2f1a17d72e3d5f92b9fe39aa3
-Merge: 355d86104 8cf1be6f6
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:05:37 2024 +0100
-
-    Merge commit '8cf1be6f67eaeb9bfd2fffe4a4bc9ae419adffd5' into mq-merge-step-1
-
-commit 17fdac3f603340620a466436095270c2d8805f19
-Merge: ddb4d9a24 d020a7c78
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:05:16 2024 +0100
-
-    Merge commit 'v2.14-98-gd020a7c7' into thread-next
-
-commit d020a7c7882aacab4110d802cc867c886baf4a10
-Merge: 6d453c16e 355d86104
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:04:53 2024 +0100
-
-    Merge commit 'v2.14-40-g355d8610' into mq-merge-step-2
-
-commit 355d86104256b56a69445d7cdf0139834750c234
-Merge: 422f795fa 4aac1b259
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:04:51 2024 +0100
-
-    Merge commit '4aac1b259fa94b99427f837564876baa2183ccb1' into mq-merge-step-1
-
-commit ddb4d9a24cc5d79308b12fc3b92b4701d3f54f8e
-Merge: 8b4f53675 6d453c16e
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:04:45 2024 +0100
-
-    Merge commit 'v2.14-95-g6d453c16' into thread-next
-
-commit 8b4f53675ea375f2fbd50a872735486992de8c8c
-Merge: b5afbe057 f27b05de9
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:00:59 2024 +0100
-
-    Merge commit 'v2.14-92-gf27b05de' into thread-next
-
-commit 6d453c16e04c0470e9336dc51a091fe6eb459e75
-Merge: f27b05de9 422f795fa
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:00:48 2024 +0100
-
-    Merge commit 'v2.14-38-g422f795f' into mq-merge-step-2
-
-commit 422f795fa3c83d173a1dd67e389a63ef32adae62
-Merge: 5fdfbf613 bcf232742
-Author: Maria Matejka 
-Date:   Sun Jan 28 15:00:47 2024 +0100
-
-    Merge commit 'bcf2327425d4dd96f381b87501cccf943bed606e' into mq-merge-step-1
-
-commit f27b05de98b1a25ac87dc5bfc6f7946d6456f0f8
-Merge: 74de38589 5fdfbf613
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:58:04 2024 +0100
-
-    Merge commit 'v2.14-36-g5fdfbf61' into mq-merge-step-2
-
-commit 5fdfbf613535fa249ac1ba2c74741cdae6312888
-Merge: 23025ab5f 3fb06fea1
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:58:03 2024 +0100
-
-    Merge commit '3fb06fea1d14ef147a567052391a5b359704e971' into mq-merge-step-1
-
-commit b5afbe057eea3bb47c976daec3d813b189f2ca4d
-Merge: ecbeac858 74de38589
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:52 2024 +0100
-
-    Merge commit 'v2.14-89-g74de3858' into thread-next
-
-commit 74de38589de4545f693787fd6ce483c8d44277cf
-Merge: 9b731089b 23025ab5f
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:46 2024 +0100
-
-    Merge commit 'v2.14-34-g23025ab5' into mq-merge-step-2
-
-commit 23025ab5f8271a63d7f83e5c951268e3e781fe25
-Merge: caa9460a2 b6923f638
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:45 2024 +0100
-
-    Merge commit 'b6923f6386b04340d6b2b6a75fbe83c392f207ca' into mq-merge-step-1
-
-commit ecbeac85824653c2c7f57bdbc7cccf7affe4f89d
-Merge: 1b0d3f5c8 9b731089b
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:15 2024 +0100
-
-    Merge commit 'v2.14-86-g9b731089' into thread-next
-
-commit 9b731089b50d0aa845bc72becf87e725a12c1362
-Merge: 1709843f1 caa9460a2
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:10 2024 +0100
-
-    Merge commit 'v2.14-32-gcaa9460a' into mq-merge-step-2
-
-commit caa9460a2630f3ae7c5fcd3fbbafa5ea276e928f
-Merge: 41d6002f5 31aa62ae6
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:57:09 2024 +0100
-
-    Merge commit '31aa62ae6d2e111e87c08b4b27a16ead968f0689' into mq-merge-step-1
-
-commit 1b0d3f5c8ca153b99babd48efe7bdc48ff57f9cf
-Merge: c4e1e691c 1709843f1
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:56:01 2024 +0100
-
-    Merge commit 'v2.14-83-g1709843f' into thread-next
-
-commit c4e1e691c7d0a43e8f65007f68529fd124270284
-Merge: 12dae9264 94a95a694
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:55:59 2024 +0100
-
-    Merge commit 'v2.14-80-g94a95a69' into thread-next
-
-commit 1709843f1561e1c7924aa25c408a19917318cc46
-Merge: 94a95a694 41d6002f5
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:55:50 2024 +0100
-
-    Merge commit 'v2.14-30-g41d6002f' into mq-merge-step-2
-
-commit 41d6002f59e9160a2e065cda64523ffabbe4cc7e
-Merge: 87fcb810a a740054db
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:55:49 2024 +0100
-
-    Merge commit 'a740054db50b8532680bd1673a5d4519af889c0f' into mq-merge-step-1
-
-commit 94a95a69440204318182df1dd7cf623813dbe1b0
-Merge: e728c60be 87fcb810a
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:54:06 2024 +0100
-
-    Merge commit 'v2.14-28-g87fcb810' into mq-merge-step-2
-
-commit 87fcb810af42ba22ac940cb28255d21d8689fbe4
-Merge: b53784475 06301a991
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:54:05 2024 +0100
-
-    Merge commit '06301a991d80597a2a0a9e449d0cdf4bc1eda6d1' into mq-merge-step-1
-
-commit 12dae9264c635fe9fc2a6136b1dfa4170124d69c
-Merge: 969f3855c e728c60be
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:53:47 2024 +0100
-
-    Merge commit 'v2.14-76-ge728c60b' into thread-next
-
-commit e728c60be545a76c7995023a861bf23db9a68144
-Merge: 07e4750ac b53784475
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:53:38 2024 +0100
-
-    Merge commit 'v2.14-25-gb5378447' into mq-merge-step-2
-
-commit b53784475617875a563f86077e88a1714aff5d4d
-Merge: f9bef5b98 108c4cfaf
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:53:36 2024 +0100
-
-    Merge commit '108c4cfaf3b0fda5daf4bccf2f1ea45d7f3a271d' into mq-merge-step-1
-
-commit 969f3855c31559d32c89ea2e440c6ca37764d9e5
-Merge: b6be10431 07e4750ac
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:52:38 2024 +0100
-
-    Merge commit 'v2.14-73-g07e4750a' into thread-next
-
-commit 07e4750ac29a3669caa5620dd87ee304576a9c2a
-Merge: ffd26cf2b f9bef5b98
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:52:33 2024 +0100
-
-    Merge commit 'v2.14-23-gf9bef5b9' into mq-merge-step-2
-
-commit f9bef5b9891bb5968ab8bcceaab943ae4e2e6371
-Merge: bd56a41b3 c9b7b0321
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:52:32 2024 +0100
-
-    Merge commit 'c9b7b032110fbd49a5f084bfe3bc886e0e1edfe4' into mq-merge-step-1
-
-commit b6be104317dfd748908ad780cf69b2e9213ab80e
-Merge: 063939496 597303146
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:52:07 2024 +0100
-
-    Merge commit '5973031460372a4d695c44a9f398d516b0e5bac1' into thread-next
-
-commit 06393949618630c1deada455a1f56fca566bb0b2
-Merge: 8fe58b9f8 a5e327596
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:45:33 2024 +0100
-
-    Merge commit 'v2.14-66-ga5e32759' into thread-next
-
-commit ffd26cf2b252f05b4e84b88657e185328f2bdf43
-Merge: a5e327596 bd56a41b3
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:45:06 2024 +0100
-
-    Merge commit 'v2.14-21-gbd56a41b' into mq-merge-step-2
-
-commit bd56a41b3a1489dce3f71984152942758bd163da
-Merge: 1d0371a67 597303146
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:45:04 2024 +0100
-
-    Merge commit '5973031460372a4d695c44a9f398d516b0e5bac1' into mq-merge-step-1
-
-commit a5e32759680b4cb4f69a7cdcacec21f4e3475df8
-Merge: b83121307 1d0371a67
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:43:21 2024 +0100
-
-    Merge commit 'v2.14-18-g1d0371a6' into mq-merge-step-2
-
-commit 1d0371a675a6f7d64ce95de31c67703692f15ab0
-Merge: 605780f9f 0e1fbaa5b
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:43:20 2024 +0100
-
-    Merge commit '0e1fbaa5b21db8e5c64a732dbaf0b8afe707a147' into mq-merge-step-1
-
-commit 8fe58b9f8da462e95f39b6576a21d83e1062ca61
-Merge: 7045a715c b83121307
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:43:05 2024 +0100
-
-    Merge commit 'v2.13.1-192-gb8312130' into thread-next
-
-commit b83121307242454fd688dae023cfd5ea65ec5d72
-Merge: 105e50f69 605780f9f
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:42:57 2024 +0100
-
-    Merge commit 'v2.13.1-145-g605780f9' into mq-merge-step-2
-
-commit 605780f9f590dfd060017297493f0d175b75471c
-Merge: 7441ff745 c5c3a22bc
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:42:56 2024 +0100
-
-    Merge commit 'c5c3a22bccda5454775b48ad318a7fd4bf197f86' into mq-merge-step-1
-
-commit 7045a715cf8339bcccf99363cdc6844c22313e06
-Merge: 4628a117d 105e50f69
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:42:36 2024 +0100
-
-    Merge commit 'v2.13.1-189-g105e50f6' into thread-next
-
-commit 105e50f69ca554c6f54d2d727b8883fac56d20ed
-Merge: 761649e66 7441ff745
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:39:01 2024 +0100
-
-    Merge commit 'v2.13.1-143-g7441ff74' into mq-merge-step-2
-
-commit 7441ff7454f4c55ad447317bf34fb5420046cc58
-Merge: 4f806813b e83beb70b
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:39:00 2024 +0100
-
-    Merge commit 'e83beb70bd14923cece5b35411606ade6fb8fbee' into mq-merge-step-1
-
-commit 4628a117d9b29e17d347952247a54252a7721639
-Merge: 8d2ec536d 761649e66
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:38:43 2024 +0100
-
-    Merge commit 'v2.13.1-186-g761649e6' into thread-next
-
-commit 761649e66b8f46cad7f3fd6e5f178e456f850ca2
-Merge: 2b05844cf 4f806813b
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:29:16 2024 +0100
-
-    Merge commit 'v2.13.1-141-g4f806813' into mq-merge-step-2
-
-commit 4f806813b2cd55ae619001d493ff5c25463fa7c2
-Merge: c9d1ebbd4 57aa07722
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:29:15 2024 +0100
-
-    Merge commit '57aa077227d1f2440dc1b2bb6cbbebd418a6b898' into mq-merge-step-1
-
-commit 8d2ec536d9d3643dbae22c0d67909021e8e1625e
-Merge: 772922b37 2b05844cf
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:28:17 2024 +0100
-
-    Merge commit 'v2.13.1-183-g2b05844c' into thread-next
-
-commit 2b05844cfba597328de0f4b0c548671fefcf46e1
-Merge: 9d8b8959a c9d1ebbd4
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:28:09 2024 +0100
-
-    Merge commit 'v2.13.1-139-gc9d1ebbd' into mq-merge-step-2
-
-commit c9d1ebbd421f72887dd8f000fb645f2b24bae457
-Merge: 31e60fd4f ba01a6f2e
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:28:07 2024 +0100
-
-    Merge commit 'ba01a6f2e66d03eb5d9426fdf4973f30e09c5710' into mq-merge-step-1
-
-commit 772922b37bf822d633e05336144d217f8980030a
-Merge: 22d7dbce7 9d8b8959a
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:27:50 2024 +0100
-
-    Merge commit 'v2.13.1-180-g9d8b8959' into thread-next
-
-commit 9d8b8959af86b3a231d06abb739135a9cb17026a
-Merge: 0ab64e273 31e60fd4f
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:24:55 2024 +0100
-
-    Merge commit 'v2.13.1-137-g31e60fd4' into mq-merge-step-2
-
-commit 31e60fd4f2fb3d2f4b89e2b55dd1bcc70c7070a3
-Merge: b560a0749 de09fda5d
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:24:54 2024 +0100
-
-    Merge commit 'de09fda5dcef16bf50663f7ffb56074e6ad20b5a' into mq-merge-step-1
-
-commit 22d7dbce7424d2807cb1a7b2cd71f64735a18cba
-Merge: 72ba1ba34 0ab64e273
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:23:00 2024 +0100
-
-    Merge commit 'v2.13.1-177-g0ab64e27' into thread-next
-
-commit 0ab64e2739d2b305733dc9c897f9a6fdcc9a718a
-Merge: 7a4314ee0 b560a0749
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:22:53 2024 +0100
-
-    Merge commit 'v2.13.1-135-gb560a074' into mq-merge-step-2
-
-commit b560a0749b20f93e372934ca2011103d14740111
-Merge: 7cc3d3009 abae806ef
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:22:51 2024 +0100
-
-    Merge commit 'abae806efdf6ac5f919c93057dd8df1faff1058c' into mq-merge-step-1
-
-commit 72ba1ba34f5c7521c4c4305b926a7a8f5a3e0d6a
-Merge: b88b724e8 7a4314ee0
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:22:29 2024 +0100
-
-    Merge commit 'v2.13.1-174-g7a4314ee' into thread-next
-
-commit 7a4314ee026f435acdfe9aa81e719e993cac3ab5
-Merge: 92832b2f6 7cc3d3009
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:20:45 2024 +0100
-
-    Merge commit 'v2.13.1-133-g7cc3d300' into mq-merge-step-2
-
-commit 7cc3d3009a5bb51b3e624a17d4e998a4e704c298
-Merge: 21c3a54d8 ab47c2ae4
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:20:44 2024 +0100
-
-    Merge commit 'ab47c2ae466f785212f0519388417ebb31b2cf24' into mq-merge-step-1
-
-commit b88b724e86638b5146d99f6a6cb00cce15af2349
-Merge: a28264adc 92832b2f6
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:20:29 2024 +0100
-
-    Merge commit 'v2.13.1-171-g92832b2f' into thread-next
-
-commit 92832b2f6b7c876a88974656c047f56c81cc98c8
-Merge: 5e9cf0ab5 21c3a54d8
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:20:22 2024 +0100
-
-    Merge commit 'v2.13.1-131-g21c3a54d' into mq-merge-step-2
-
-commit 21c3a54d878e9b2097df9f95ffbfd5b08fd21f4c
-Merge: 481d3acca d41b06238
-Author: Maria Matejka 
-Date:   Sun Jan 28 14:20:21 2024 +0100
-
-    Merge commit 'd41b06238dc2167f8e470aa2fb31cb937ff8fb3e' into mq-merge-step-1
-
-commit a28264adc57f63f3e9356976c008e45af63594b0
-Merge: caacd78c4 5e9cf0ab5
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:40:23 2024 +0100
-
-    Merge commit 'v2.13.1-168-g5e9cf0ab' into thread-next
-
-commit 5e9cf0ab59849266321343fa38fcac9f458e3932
-Merge: d81996d7d 481d3acca
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:30:06 2024 +0100
-
-    Merge commit 'v2.13.1-129-g481d3acc' into mq-merge-step-2
-
-commit 481d3acca9c0cfba84299b3f380bb8d908f9db02
-Merge: dcd0cc083 6a242b3ec
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:30:05 2024 +0100
-
-    Merge commit '6a242b3ec66f2ab89f9277e67125eab3e3676644' into mq-merge-step-1
-
-commit caacd78c47f13cb5a672c3ab941c0bf3086858a1
-Merge: 6a80214fb d81996d7d
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:29:30 2024 +0100
-
-    Merge commit 'v2.13.1-165-gd81996d7' into thread-next
-
-commit d81996d7dd377ae1ee6dd2b0e38937bbde0d592d
-Merge: 5bf256785 dcd0cc083
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:29:24 2024 +0100
-
-    Merge commit 'v2.13.1-127-gdcd0cc08' into mq-merge-step-2
-
-commit dcd0cc083cb2c8d3f57b007b07e2cd3c5eb97d5b
-Merge: 90b9e871b 0bfa216f4
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:29:22 2024 +0100
-
-    Merge commit '0bfa216f496279905b843abcfb1242477b86783c' into mq-merge-step-1
-
-commit 6a80214fb381426e1ed2603831a89a97f893f875
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:14:58 2024 +0100
-
-    BGP: fixed MPLS label stack receiving bug
-    
-    Introduced in 515df18da742442323047a13b04ecc2bd97b0855 while merging v2 to v3.
-
-commit ea0f2c61942db57d75f18972253433182345f6bf
-Author: Maria Matejka 
-Date:   Sun Jan 28 13:09:48 2024 +0100
-
-    Fixed attributes normalization with underlays in place
-
-commit f9d3112d015c2466248525fd8dac2d25070fb333
-Author: Maria Matejka 
-Date:   Sat Jan 27 19:01:34 2024 +0100
-
-    Interfaces: fixed locking when address is deleted implicitly
-
-commit 57b5eb5cbd4df38508393c8f4c39ab50cc0a5b6a
-Merge: 457a0873a 5bf256785
-Author: Maria Matejka 
-Date:   Sat Jan 27 19:01:06 2024 +0100
-
-    Merge commit 'v2.13.1-162-g5bf25678' into thread-next
-
-commit f40e2bc270d3635be518ae80251ce0b5c519c6f4
-Author: Ondrej Zajicek 
-Date:   Sat Jan 27 17:38:06 2024 +0100
-
-    Nest: Fix bug in recursive routes with MPLS-labeled nexthops
-    
-    When a recursive route with MPLS-labeled nexthop was exported to kernel
-    and read back, the nexthop_same() failed due to different labels_orig
-    field and kernel protocol reinstalled it unnecessarily.
-    
-    For comparing hext hops, route cache has to distinguish ones with
-    different labels_orig, but KRT has to ignore that, so we need two
-    nexthop compare functions.
-    
-    Thanks to Marcel Menzel for the bugreport.
-
-commit 5bf2567853fc3e9bc7e433c0d392140d6ce78370
-Merge: c1719316a 90b9e871b
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:29:17 2024 +0100
-
-    Merge commit 'v2.13.1-125-g90b9e871' into mq-merge-step-2
-
-commit 90b9e871b9e92f5876bf2035cf716f6a8a808e2e
-Merge: 4f2aa1319 be09b030e
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:29:14 2024 +0100
-
-    Merge commit 'be09b030ed40c76ee0727dd3980df77094fdc907' into mq-merge-step-1
-
-commit 457a0873ab532d7d1f7770a596a39cb509e3fdd2
-Merge: fa95ef5d6 c1719316a
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:27:33 2024 +0100
-
-    Merge commit 'c1719316a840d268a09d5fe2c10b06e51bc77824' into thread-next
-    
-    Conflicts:
-            doc/bird.sgml
-
-commit c1719316a840d268a09d5fe2c10b06e51bc77824
-Merge: b2e2525e5 4f2aa1319
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:26:08 2024 +0100
-
-    Merge commit '4f2aa1319c1ff80939c656bba7d529d84d1af350' into mq-merge-step-2
-
-commit 4f2aa1319c1ff80939c656bba7d529d84d1af350
-Merge: d5fd7ec6c cab5fce2b
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:25:25 2024 +0100
-
-    Merge commit 'cab5fce2b6822b7f3a892103077f26e197fecfbc' into mq-merge-step-1
-
-commit fa95ef5d6e21735ecfc036b7ac3a3acea1a87f36
-Merge: 8fb1f098d b2e2525e5
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:24:26 2024 +0100
-
-    Merge commit 'b2e2525e5ee4faab5bc5ee88581a19a4ca1d6277' into thread-next
-
-commit b2e2525e5ee4faab5bc5ee88581a19a4ca1d6277
-Merge: ef814fb2d d5fd7ec6c
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:24:14 2024 +0100
-
-    Merge commit 'd5fd7ec6' into mq-aggregator-for-v3
-
-commit d5fd7ec6cbd2ca98baa5ce09adb2db3181eca297
-Merge: bb094fb6c 8a7088569
-Author: Maria Matejka 
-Date:   Fri Jan 26 23:23:56 2024 +0100
-
-    Merge commit '8a70885694c5a3b384deba0f8cd25b7f63b99fcd' into HEAD
-
-commit 8fb1f098d1003784391c6e7fa4f5f797477c0d35
-Author: Maria Matejka 
-Date:   Fri Jan 26 14:50:36 2024 +0100
-
-    Fixes for CLang
-
-commit 25e20485ae8d414c27674f47647dd643f7c9bc6c
-Author: Maria Matejka 
-Date:   Fri Jan 26 14:42:11 2024 +0100
-
-    Fixed route table attribute caching
-
-commit 2379ed40bea517ba6c9fd901b600f187371cb337
-Author: Maria Matejka 
-Date:   Wed Jan 24 17:39:37 2024 +0100
-
-    Linux: Not binding the default-vrf socket to the (nonexistent) vrf device
-
-commit 365ea12ea1f359e2cbe838173b1d50b45ada5b47
-Author: Maria Matejka 
-Date:   Thu Nov 23 18:41:07 2023 +0100
-
-    MPLS Subsystem Proper Locking
-    
-    Added also some debug lines if debug is on.
-
-commit 472be46f7ab211f38e7662543f1436df30dca753
-Author: Katerina Kubecova 
-Date:   Fri Jan 19 11:54:25 2024 +0100
-
-    Filter: Tests for net_addr
-    
-    Minor changes by committer.
-
-commit 13c6cf8a7430a6b133e46525256eb5554b3f0a2b
-Author: Ondrej Zajicek 
-Date:   Mon Jan 22 06:29:14 2024 +0100
-
-    Trivial code cleanups
-
-commit 9624ebfd9aa1304e9a2653679d2c008d37518678
-Author: Maria Matejka 
-Date:   Wed Jan 10 09:10:03 2024 +0100
-
-    Lock free usecount better debuggability
-
-commit e711a991d4cfc8b796043c728d1da86a4acd2e6e
-Author: Maria Matejka 
-Date:   Fri Nov 24 00:05:51 2023 +0100
-
-    MPLS: FEC Map moved from protocol to MPLS channel
-
-commit 34d040a03463c1b83547da016dc7573c977d390b
-Author: Maria Matejka 
-Date:   Thu Nov 23 12:18:35 2023 +0100
-
-    MPLS: Domain list locked by The BIRD Lock
-
-commit 9815353c5eaff51e731cff0c8698956f2f375df4
-Author: Maria Matejka 
-Date:   Thu Nov 23 11:41:49 2023 +0100
-
-    MPLS: Putting internal objects aside
-
-commit f0da632b3c406c6c39a582e7a353737d90d16117
-Author: Maria Matejka 
-Date:   Fri Nov 24 12:19:44 2023 +0100
-
-    Channels now can have external obstacles temporarily blocking their shutdown
-
-commit e4e90c6f4d1c9bdca7d3eb2d541617db99ce22dd
-Author: Maria Matejka 
-Date:   Mon Jan 8 12:02:25 2024 +0100
-
-    Channel: Replacing refeed status trie by bitmap
-    
-    This fixes a bug with reloading non-IP channels.
-
-commit 548dbb2252e80362789b8c98355f468491d47b34
-Author: Maria Matejka 
-Date:   Fri Dec 8 16:13:14 2023 +0100
-
-    Replacing table FIB by netindex and simple pointer block
-    
-    Using the netindex data structure to simplify route storage inside route
-    tables. This should also help with future unlocking of route import.
-
-commit 54d5e36ec0bed1226c98ddee3d34e1ae29692951
-Author: Maria Matejka 
-Date:   Mon Dec 4 10:33:30 2023 +0100
-
-    Index of different net_addr values for hashing and bit-marking
-    
-    For many reasons, it's handy to assign a contiguous range of integers to
-    known net_addr values. This is a data structure keeping this mapping.
-
-commit 6c4be8d1d3181d5736dd49f8145d607cda1b158e
-Author: Maria Matejka 
-Date:   Wed Dec 20 15:36:50 2023 +0100
-
-    Kernel: Before first scan, reject exported routes immediately in preexport
-
-commit 3b31138854b539e7b777c45f02748dd8237e25e9
-Author: Maria Matejka 
-Date:   Wed Dec 20 12:15:59 2023 +0100
-
-    Dropped forgotten pieces of orphaned internal API
-
-commit 44e351d1522f0099687aac9fd65dcea73a04af43
-Author: Maria Matejka 
-Date:   Fri Dec 8 20:53:20 2023 +0100
-
-    RPKI: retry timer doesn't reset connections when more data is pending
-    
-    With very busy deployments, RPKI may kill cache connection too early.
-    Instead of that, we want it to keep loading if any data is waiting to
-    be read and the reason for delay is just our congestion.
-    
-    Also, when we kill the session because of actually slow cache, we want
-    to reload from scratch as the data we have is unreliable and nobody
-    knows whether the state is still valid.
-
-commit 2b6bd8ca3a3955a407b0553009b05572693cfdf7
-Author: Ondrej Zajicek 
-Date:   Wed Dec 13 18:07:38 2023 +0100
-
-    OSPF: Cleanup some warnings
-
-commit 7d2c7d59a363e690995eb958959f0bc12445355c
-Author: Ondrej Zajicek 
-Date:   Wed Dec 13 17:46:16 2023 +0100
-
-    Nest: Fix memory alignment in attribute cache
-    
-    In attribute cache, adata structures were stored densely in one memory
-    block, without regard to alignment. Let's force at least u32 alignment.
-
-commit 2c7555cf2ac8439713dd9148b348128c57222a38
-Author: Ondrej Zajicek 
-Date:   Wed Dec 13 03:48:12 2023 +0100
-
-    Log: Add support for UDP logging
-    
-    Add support for UDP logging, using RFC 3164 syslog protocol.
-    
-    Based on the patch from Alexander Zubkov , thanks!
-
-commit 25906bc5e9ee0879a8b3bfbd72169a2a333f36ab
-Merge: 8c19f8a20 ef814fb2d
-Author: Maria Matejka 
-Date:   Fri Dec 8 12:13:58 2023 +0100
-
-    Merge commit 'ef814fb2d6415206fce280c37466ea889291b043' into HEAD
-
-commit 8cf1be6f67eaeb9bfd2fffe4a4bc9ae419adffd5
-Merge: 4aac1b259 bb094fb6c
-Author: Maria Matejka 
-Date:   Fri Dec 8 12:09:30 2023 +0100
-
-    Merge commit 'bb094fb6'
-
-commit ef814fb2d6415206fce280c37466ea889291b043
-Merge: db1eb4666 bb094fb6c
-Author: Maria Matejka 
-Date:   Fri Dec 8 12:09:17 2023 +0100
-
-    Merge commit 'bb094fb6' into mq-aggregator-for-v3
-
-commit bb094fb6c758897fabfeefa0c0d97dbc7a956246
-Author: Maria Matejka 
-Date:   Fri Dec 8 12:07:46 2023 +0100
-
-    Refactoring also net_roa_check
-    
-    Having 4 functions doing almost the same is more mess than three macros.
-
-commit 8c19f8a209201fa3c23284291999e64ff7bb0b39
-Merge: 1df615991 db1eb4666
-Author: Maria Matejka 
-Date:   Fri Dec 8 11:33:43 2023 +0100
-
-    Merge commit 'db1eb46664d4c76d56dc55a63ce7abe853fc6862' into HEAD
-
-commit db1eb46664d4c76d56dc55a63ce7abe853fc6862
-Merge: 980ef1101 54ddf90f6
-Author: Maria Matejka 
-Date:   Fri Dec 8 09:08:38 2023 +0100
-
-    Merge commit '54ddf90f6370f06efc71c3ffd6e02d031a86866f' into mq-aggregator-for-v3
-
-commit 4aac1b259fa94b99427f837564876baa2183ccb1
-Merge: bcf232742 54ddf90f6
-Author: Maria Matejka 
-Date:   Fri Dec 8 08:30:30 2023 +0100
-
-    Merge commit '54ddf90f'
-
-commit 54ddf90f6370f06efc71c3ffd6e02d031a86866f
-Author: Maria Matejka 
-Date:   Thu Dec 7 14:38:05 2023 +0100
-
-    Conf: debug tables
-    
-    For now just a dummy config but it is needed for forward
-    compatibility with v3.
-
-commit 9a91ea52db32ec2fda830afd1c88f0f83e6c0df4
-Author: Maria Matejka 
-Date:   Thu Dec 7 14:10:11 2023 +0100
-
-    Refactoring of net_route
-
-commit 3b48dc9bce12b00aa2a212495b19c925e0fda249
-Author: Maria Matejka 
-Date:   Thu Dec 7 13:54:41 2023 +0100
-
-    Table: Adding route refresh begin and end debug messages
-
-commit bcf2327425d4dd96f381b87501cccf943bed606e
-Author: Katerina Kubecova 
-Date:   Fri Oct 27 17:11:06 2023 +0200
-
-    BGP: Send hold timer
-    
-    Implement BGP Send hold timer according to draft-ietf-idr-bgp-sendholdtimer.
-    The Send hold timer drops the session if the neighbor is sending keepalives,
-    but does not receive our messages, causing the TCP connection to stall.
-
-commit 1df615991cd9c3d457d3761475beaebb28737089
-Author: Maria Matejka 
-Date:   Fri Nov 24 08:46:50 2023 +0100
-
-    Generalized the rte_src lockfree usecount algorithm
-
-commit 0bcbff42cacaa1ae2f234e2b5d37fd8b72c6b8c6
-Author: Maria Matejka 
-Date:   Thu Nov 23 23:33:44 2023 +0100
-
-    Table: nicer route validation errors
-
-commit 194ed4e6e66cab28c3b5c0226cdfe6cc382d1f5a
-Author: Maria Matejka 
-Date:   Fri Nov 24 12:11:21 2023 +0100
-
-    Macro SKIP_BACK now evaluates its argument only once.
-
-commit 48abd6a96332ea7e391015d7e659d642a32b263f
-Author: Maria Matejka 
-Date:   Thu Nov 23 12:06:58 2023 +0100
-
-    Events: create and enqueue in one macro
-
-commit 5a916ed53fbac9efca61677aceb6be1b4681e992
-Author: Maria Matejka 
-Date:   Mon Nov 20 17:40:25 2023 +0100
-
-    Locking: Dropping DEFINE_DOMAIN ugly macro
-
-commit 3fb06fea1d14ef147a567052391a5b359704e971
-Author: Ondrej Zajicek 
-Date:   Thu Nov 23 20:54:22 2023 +0100
-
-    BGP: Add options to require BGP capabilities
-    
-    Some BGP capabilities change the BGP behavior in a significant way, so if
-    the configuration depends on it, it is better to not establish BGP
-    session when the capability is not available.
-    
-    Add several BGP option to require individual BGP capabilities during
-    session negotiation.
-
-commit b6923f6386b04340d6b2b6a75fbe83c392f207ca
-Author: Ondrej Zajicek 
-Date:   Thu Nov 23 17:18:04 2023 +0100
-
-    BGP: Simplify capability handling
-
-commit 080e580834a074f29acc64293a5f392cae4f797f
-Author: Maria Matejka 
-Date:   Tue Nov 14 12:53:40 2023 +0100
-
-    Route table objects use the new locked object macro stack
-
-commit 4d22f52f640f5475f0a83fbc163900135d353cca
-Author: Maria Matejka 
-Date:   Fri Nov 10 21:33:53 2023 +0100
-
-    Locking data structures
-    
-    If a data structure is associated with a lock, having a public
-    and a private part, there are now useful macros for these data
-    structures.
-
-commit 4c6fd84c8f63bcef58e3dfb66210f2f192281701
-Merge: d7f5248bc 980ef1101
-Author: Maria Matejka 
-Date:   Fri Nov 10 23:47:10 2023 +0100
-
-    Merge commit '980ef11016546ecd409a7f83b33a2f8f758ec926' into thread-next
-
-commit 980ef11016546ecd409a7f83b33a2f8f758ec926
-Author: Maria Matejka 
-Date:   Thu Oct 26 23:09:20 2023 +0200
-
-    C Compiler Attribute Cleanup Test
-    
-    There is a long-known CC attribute cleanup which allows to call a custom
-    cleanup function when an auto-storage variable ceases to exist. We're
-    gonna use it for end-of-loop and leave-locked-block macros.
-    
-    This commit adds a static unit test for this compiler feature to be sure
-    that it really does what we want. We're looking forward to the next ISO
-    C norm where this may finally get a nice syntax and standardization.
-
-commit d7f5248bcca5adb8f48fd651f39251d271ded08d
-Author: Maria Matejka 
-Date:   Thu Nov 9 17:42:22 2023 +0100
-
-    More descriptive bug message on deadlock prevention
-
-commit 8558e666e09bd5c72bc9d391805399dbf5fb850f
-Merge: 219dc0fdb 87e2ba8c8
-Author: Maria Matejka 
-Date:   Thu Nov 9 17:38:31 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 87e2ba8c84a0f8db61da6548082fc6084c96142d
-Merge: f434eb386 8f5511daf
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:53:45 2023 +0100
-
-    Merge commit '8f5511da' into mq-aggregator-for-v3
-
-commit 219dc0fdb5b90b7c6815635c42a4bdd1c62ab2d0
-Merge: e6362b21d f434eb386
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:53:34 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit f434eb38650bc5a2e2c33c9fefc8f29adc35ccc9
-Merge: c4c2148ab d8130da86
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:36:54 2023 +0100
-
-    Merge commit 'd8130da8' into mq-aggregator-for-v3
-
-commit e6362b21dcf5b41bb66d2fd6ccbef0a2e947a2c1
-Merge: 4f2212ccf c4c2148ab
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:34:26 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit c4c2148ab9eb77744d0fc4fbd00d5847ff3b711c
-Merge: 6067ad6c0 a7a9df863
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:34:20 2023 +0100
-
-    Merge commit 'a7a9df86' into mq-aggregator-for-v3
-
-commit 4f2212ccf2f351c388351c8669c85a9f46e33128
-Merge: 509843074 6067ad6c0
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:34:04 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 6067ad6c07550755829564eff20b3873c654d7a7
-Merge: 29ffc62b7 9b775859c
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:00:44 2023 +0100
-
-    Merge commit '9b775859' into mq-aggregator-for-v3
-
-commit 50984307486c9f19cca6d814d6771a41e1a2bf4f
-Merge: 8f2f612e2 29ffc62b7
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:00:32 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 29ffc62b769447e34a1d1807baa596a42febbdb5
-Merge: 926c3295d e915f99e1
-Author: Maria Matejka 
-Date:   Thu Nov 9 16:00:09 2023 +0100
-
-    Merge commit 'e915f99e' into mq-aggregator-for-v3
-
-commit 8f2f612e2f15b2fce8b014fadf6ec9f896a023f6
-Merge: 3ccf890e5 926c3295d
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:59:03 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 926c3295d4dd0a926dc462f1c231c5a23622722b
-Merge: 45ffbb4d7 b6385decb
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:58:58 2023 +0100
-
-    Merge commit 'b6385dec' into mq-aggregator-for-v3
-
-commit 3ccf890e58ff6b6eaf9308752fea3725152a30ed
-Merge: e61fc5272 45ffbb4d7
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:58:41 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 45ffbb4d768470fc9ee3f234d1e0d675b6a37f06
-Merge: 4d6620a00 81a20ca5d
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:39 2023 +0100
-
-    Merge commit '81a20ca5' into mq-aggregator-for-v3
-
-commit e61fc5272a2b49cd23dbfe8e2edbbd49e2a779c6
-Merge: 2193b1efe 4d6620a00
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:32 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 4d6620a008fb9287e1398677e91108cae9bf130d
-Merge: 360de8fb6 357260515
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:28 2023 +0100
-
-    Merge commit '35726051' into mq-aggregator-for-v3
-
-commit 2193b1efe46499baf6c223586643287ebb59174f
-Merge: c7cc1ccd2 360de8fb6
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:15 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit c7cc1ccd2e27a726844616501c46e757e92b7c72
-Merge: e203c5a6d 8429b4bc3
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:13 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 360de8fb6812bcf20807deebf54877e194f5e37d
-Merge: 8429b4bc3 fcf225862
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:50:02 2023 +0100
-
-    Merge commit 'fcf22586' into mq-aggregator-for-v3
-
-commit 8429b4bc3884a997e9c55b90d3d6f6247005ef31
-Merge: eae417722 8e9e013b0
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:35:18 2023 +0100
-
-    Merge commit '8e9e013b' into mq-aggregator-for-v3
-
-commit e203c5a6dd7024190198afeeb2f94508226277c5
-Merge: 5b9532ae1 eae417722
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:35:11 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit eae41772207436540d4deb22d9af54649dc245a6
-Merge: 2a30e9bd0 3397ca51f
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:35:08 2023 +0100
-
-    Merge commit '3397ca51' into mq-aggregator-for-v3
-
-commit 5b9532ae1fd48093b021c885d7e47a5a40cb0c45
-Merge: 00e40a6b8 2a30e9bd0
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:34:59 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 2a30e9bd07f438fde4d37e35be95b95c5a5ee258
-Merge: b979c6ce6 e338c4b63
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:34:54 2023 +0100
-
-    Merge commit 'e338c4b6' into mq-aggregator-for-v3
-
-commit 00e40a6b8049ba026eecb56ce3f461caf7f4bd16
-Merge: e5c320d44 b979c6ce6
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:20:13 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 31aa62ae6d2e111e87c08b4b27a16ead968f0689
-Author: Soha Jin 
-Date:   Thu Nov 9 14:33:25 2023 +0100
-
-    OSPF: On physical PtP links, skip next-hop resolving
-    
-    Signed-off-by: Soha Jin 
-    Co-developed-by: Wende Tan 
-
-commit b979c6ce6ea08855758605cc8e65f353a808c733
-Merge: 627037395 bcff3ae79
-Author: Maria Matejka 
-Date:   Thu Nov 9 11:06:07 2023 +0100
-
-    Merge commit 'bcff3ae7' into mq-aggregator-for-v3
-
-commit e5c320d44ad81c5fa8fdea91b37ab502eba86fec
-Merge: 515df18da 627037395
-Author: Maria Matejka 
-Date:   Thu Nov 9 11:04:57 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 62703739541eb6bd64d1fc4943d509d95f1a0758
-Merge: 4c07f3326 9ca86ef69
-Author: Maria Matejka 
-Date:   Thu Nov 9 10:52:53 2023 +0100
-
-    Merge commit '9ca86ef6' into mq-aggregator-for-v3
-
-commit 515df18da742442323047a13b04ecc2bd97b0855
-Merge: 49ee823f8 4c07f3326
-Author: Maria Matejka 
-Date:   Wed Nov 8 22:24:33 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 4c07f33261f142cc17449d42e1385c48b052245f
-Merge: cac866d5e 9d456d536
-Author: Maria Matejka 
-Date:   Wed Nov 8 22:14:58 2023 +0100
-
-    Merge commit '9d456d53' into mq-aggregator-for-v3
-
-commit 49ee823f820916f87314baf6c745b9758ae927af
-Merge: 30712a2bd cac866d5e
-Author: Maria Matejka 
-Date:   Wed Nov 8 22:14:19 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit cac866d5eb6ac240dc6884d5ed56f8fb5da031b0
-Merge: a0b483525 15c86ed06
-Author: Maria Matejka 
-Date:   Wed Nov 8 21:56:58 2023 +0100
-
-    Merge commit '15c86ed0' into mq-aggregator-for-v3
-
-commit 30712a2bdf67f1bd4a4a3ec18a11c14c31ee9ad9
-Merge: 28bb5694f a0b483525
-Author: Maria Matejka 
-Date:   Wed Nov 8 21:51:46 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 28bb5694f8a912341974449842034e38610e50f5
-Merge: f992e7e1f c6fba7d7e
-Author: Maria Matejka 
-Date:   Wed Nov 8 17:37:42 2023 +0100
-
-    Merge remote-tracking branch 'origin/partial-reload' into thread-next
-
-commit a0b48352539b1344ee29826cd6c62bc459721232
-Author: Ondrej Zajicek 
-Date:   Mon Oct 16 15:21:36 2023 +0200
-
-    MPLS: Fix issue with recursive MPLS routes
-    
-    Recursive MPLS routes used hostentry from the original route, which
-    triggered different table than MPLS table, and therefore were not
-    updated.
-
-commit f992e7e1feea20074fff981473cbadd3182dd848
-Author: Katerina Kubecova 
-Date:   Mon Nov 6 09:38:13 2023 +0100
-
-    krt.c: fixup lots of routes learn & unlearn
-
-commit c6fba7d7e669dce3a9272132b1aa9524632cc5e3
-Merge: 9680bf68e f730ecef4
-Author: Maria Matejka 
-Date:   Thu Nov 2 14:43:15 2023 +0100
-
-    Merge branch 'thread-next' into HEAD
-
-commit 9680bf68e454c23ed58e18bc09b592ccd356515d
-Author: Katerina Kubecova 
-Date:   Thu Nov 2 14:33:00 2023 +0100
-
-    Automatic ROA reloads on channel import
-    
-    This includes updating OSPF, Pipe and RIP to enable partial route reload
-    directly from the protocols' internal tables.
-
-commit 4e9725e8256ba8283ffd8e28d15b027230c738ec
-Author: Katerina Kubecova 
-Date:   Thu Nov 2 14:28:50 2023 +0100
-
-    FIB walk macros now allow continue from the loop
-
-commit 1c0bc707a0c045583a829aebb225ddd88a96a9ea
-Author: Maria Matejka 
-Date:   Wed Oct 4 11:03:29 2023 +0200
-
-    Prefiltering routes by net and custom hook for partial reloads
-
-commit 2659aebd9b241ea46346a3746d9ca93f21c73116
-Author: Maria Matejka 
-Date:   Wed Oct 4 10:39:46 2023 +0200
-
-    Channel feeding request respects the subnet tries
-
-commit 898e268d0f3119cfd01f33f2e60c452fc53f2ae0
-Author: Maria Matejka 
-Date:   Wed Oct 4 10:02:43 2023 +0200
-
-    Channel feeding request has a done-hook
-
-commit 361155588312687ede542119ad905a627ee9d000
-Merge: 3cb8d73e2 333ddd4f9
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:34:06 2023 +0100
-
-    Merge commit '333ddd4f' into mq-aggregator-for-v3
-
-commit f730ecef4f13a8c83f1529dfe6b46261da9ff11d
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:25:40 2023 +0100
-
-    Dumping route sources along with protocols and routes
-
-commit 6f1485baf90feba852828df53efcad87306594ec
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:25:15 2023 +0100
-
-    Debug file fix
-    
-    It got mistakenly closed while applying the log configuration.
-
-commit e85f4e890a4b3d910758df36886943e6e335dc08
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:24:32 2023 +0100
-
-    Nexthop dump fix for unreachables
-
-commit 796f0af0ccdaf9d4078ee254365007d12a669b4d
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:23:43 2023 +0100
-
-    Fixes to root pool and meta loop to allow resource dumps
-
-commit 15d890e87b0930a855eb0d18a55931936b666130
-Merge: f90f2ed68 3cb8d73e2
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:19:55 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into HEAD
-
-commit 3cb8d73e2eec49c11554c9f921066060f5b72f86
-Merge: 29e3a86ad e55696a4f
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:08:34 2023 +0100
-
-    Merge commit 'e55696a4' into mq-aggregator-for-v3
-
-commit f90f2ed680c7f453fde670e8cb99fa58636093c1
-Merge: d8463ca7d 29e3a86ad
-Author: Maria Matejka 
-Date:   Wed Nov 1 18:08:49 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 29e3a86ad148fffd802f994bf81ffd9b9a03de79
-Merge: dd0f3940d 21213be52
-Author: Maria Matejka 
-Date:   Wed Nov 1 17:49:12 2023 +0100
-
-    Merge commit '21213be5' into mq-aggregator-for-v3
-
-commit d8463ca7d995ce950ff21d52ec3bc1d0957c3573
-Merge: f32e53d7b dd0f3940d
-Author: Maria Matejka 
-Date:   Wed Nov 1 17:48:00 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit dd0f3940d3aa20c21af2076437617741123fbe71
-Merge: 5f166f678 8ad9c4bb3
-Author: Maria Matejka 
-Date:   Wed Nov 1 17:46:52 2023 +0100
-
-    Merge commit '8ad9c4bb' into mq-aggregator-for-v3
-
-commit f32e53d7b183fb399b6f17ebbbb7a29ce158ec80
-Merge: 11faa7d36 5f166f678
-Author: Maria Matejka 
-Date:   Wed Nov 1 17:44:37 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into thread-next
-
-commit 5f166f67828fb4ebdada5868ac5a51cb9ae2ebef
-Author: Maria Matejka 
-Date:   Wed Nov 1 14:30:46 2023 +0100
-
-    Aggregator: fixed route source unlocking on shutdown and withdraw
-
-commit 11faa7d36be79b73d9a7ad94208ec2d1dfe1d132
-Merge: 8917f16e4 b95822895
-Author: Maria Matejka 
-Date:   Wed Nov 1 10:58:44 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into HEAD
-
-commit 8917f16e4b2937c967ff98e18c4cd08d77c83b09
-Merge: e8dcc62ec d16126dac
-Author: Maria Matejka 
-Date:   Wed Nov 1 10:57:57 2023 +0100
-
-    Merge branch 'mq-aggregator-for-v3' into HEAD
-
-commit b95822895312ba998253a8fb03a879cc3265887d
-Author: Maria Matejka 
-Date:   Wed Nov 1 10:57:43 2023 +0100
-
-    Aggregator: Fixed bugs in filter usage
-
-commit d16126dacd3cc0686b15fe3f4d4e4eec7e8ec2fd
-Merge: c103b51fc a4adb09f5
-Author: Maria Matejka 
-Date:   Wed Nov 1 10:15:32 2023 +0100
-
-    Merge commit 'a4adb09f5a5c3806488fb121eafc0e6c969135e7' into HEAD
-
-commit c103b51fcae0181595b49cdcda4544cfe0603f55
-Author: Maria Matejka 
-Date:   Tue Oct 31 11:37:54 2023 +0100
-
-    Aggregator: Expressed most of the attribute logic in filter language
-
-commit e8dcc62ecd5e79274d1e9c398a4d1df10f98eda8
-Merge: 9ebd38059 ba91f4c83
-Author: Maria Matejka 
-Date:   Tue Oct 31 16:54:58 2023 +0100
-
-    Merge commit 'ba91f4c831f057b81104d1453f99b012c01f9c9e' into thread-next
-
-commit 9ebd380593a0825f892459d6f18952f31b816543
-Merge: fc3f07fdc df5a08e7c
-Author: Maria Matejka 
-Date:   Tue Oct 31 16:48:48 2023 +0100
-
-    Merge commit 'df5a08e7c717ff421a52b4144d741f0a9749159f' into thread-next
-
-commit f42c118aa75c08006178d112a1e4a8ded5ba6504
-Author: Igor Putovny 
-Date:   Wed Jun 21 13:15:07 2023 +0200
-
-    Basic route aggregation
-    
-    Add a new protocol offering route aggregation.
-    
-    User can specify list of route attributes in the configuration file and
-    run route aggregation on the export side of the pipe protocol. Routes are
-    sorted and for every group of equivalent routes new route is created and
-    exported to the routing table. It is also possible to specify filter
-    which will run for every route before aggregation.
-    
-    Furthermore, it will be possible to set attributes of new routes
-    according to attributes of the aggregated routes.
-    
-    This is a work in progress.
-    
-    Original work by Igor Putovny, subsequent cleanups and finalization by
-    Maria Matejka.
-    
-    This is a split-commit of the neighboring aggregator branch
-    with a bit improved lvalue handling, to have easier merge into v3.
-
-commit ba91f4c831f057b81104d1453f99b012c01f9c9e
-Author: Maria Matejka 
-Date:   Tue Oct 31 12:03:49 2023 +0100
-
-    Filters: allowing to return any number of values
-
-commit df5a08e7c717ff421a52b4144d741f0a9749159f
-Author: Maria Matejka 
-Date:   Tue Oct 31 11:52:30 2023 +0100
-
-    Filter: value hashing
-    
-    Added a code for computing hash of filter values.
-    
-    This is a split-commit of the neighboring aggregator branch
-    with improved lvalue and attribute handling.
-
-commit fc3f07fdc3e1b197dbfc838f888e398570088e0d
-Merge: d18a68cef 407eb388b
-Author: Maria Matejka 
-Date:   Tue Oct 31 10:28:01 2023 +0100
-
-    Merge commit '407eb388b7082b52921e93476c8ff1a98fe3b873' into thread-next
-
-commit d18a68cef7790607fcf814caeaf618ca0e682f41
-Merge: b0797c2dc f0187d713
-Author: Maria Matejka 
-Date:   Tue Oct 31 10:20:22 2023 +0100
-
-    Merge commit 'f0187d713c36e841fe8bab350e84f5257a74981a' into thread-next
-
-commit b0797c2dcd03231f6f35d7dd56e7faa183f26e4b
-Merge: ddf698ec9 de70474fe
-Author: Maria Matejka 
-Date:   Tue Oct 31 09:58:42 2023 +0100
-
-    Merge commit 'de70474fed139f9acb4ed3f8e925d12de4edcdd0' into thread-next
-
-commit 407eb388b7082b52921e93476c8ff1a98fe3b873
-Author: Maria Matejka 
-Date:   Mon Oct 30 10:44:45 2023 +0100
-
-    Filter: predefined variables for specific blocks
-    
-    This is a split-commit of the neighboring aggregator branch
-    with a bit improved lvalue handling, to have easier merge into v3.
-
-commit f0187d713c36e841fe8bab350e84f5257a74981a
-Author: Maria Matejka 
-Date:   Mon Oct 30 09:49:20 2023 +0100
-
-    Filter: adding explicit route-block type
-    
-    This is a split-commit of the neighboring aggregator branch
-    with a bit improved lvalue handling, to have easier merge into v3.
-
-commit de70474fed139f9acb4ed3f8e925d12de4edcdd0
-Author: Maria Matejka 
-Date:   Sun Oct 29 19:53:09 2023 +0100
-
-    Filter: adding explicit route type
-    
-    This is a split-commit of the neighboring aggregator branch
-    with a bit improved lvalue handling, to have easier merge into v3.
-
-commit ddf698ec99284a8c634e3396550c0cbed28907a5
-Author: Maria Matejka 
-Date:   Sun Oct 29 16:25:01 2023 +0100
-
-    Renamed nest/rt.h back to nest/route.h
-    
-    Some [redacted] (yes, myself) had a really bad idea
-    to rename nest/route.h to nest/rt.h while refactoring
-    some data structures out of it.
-    
-    This led to unnecessarily complex problems with
-    merging updates from v2. Reverting this change
-    to make my life a bit easier.
-    
-    At least it needed only one find-sed command:
-    
-        find -name '*.[chlY]' -type f -exec sed -i 's#nest/rt.h#nest/route.h#' '{}' +
-
-commit c5f6dc8142e7139a8b16f95e572be7f9d87ba5bd
-Merge: 737807c11 0a729b509
-Author: Maria Matejka 
-Date:   Sun Oct 29 15:42:46 2023 +0100
-
-    Merge commit '0a729b50' into thread-next
-    
-    This merge was particularly difficult. I finally resorted to delete the
-    symbol scope active flag altogether and replace its usage by other
-    means.
-    
-    Also I had to update custom route attribute registration to fit
-    both the scope updates in v2 and the data model in v3.
-
-commit 737807c118ad77bd478129288e6adb17f8843bf8
-Merge: cc6a233c7 bb8e28248
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:56:06 2023 +0200
-
-    Merge commit 'bb8e2824' into thread-next
-
-commit cc6a233c7fced3dc6b679722853bedfad17ac4a0
-Merge: de8288c67 9ffea830b
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:51:34 2023 +0200
-
-    Merge commit '9ffea830' into thread-next
-
-commit de8288c67987f2a8f1312abd48733999b92625ab
-Merge: a725e3e58 a3dc26455
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:50:38 2023 +0200
-
-    Merge commit 'a3dc2645' into thread-next
-
-commit a725e3e580bcd4d0120191f0d38f661fa5d6a1d3
-Merge: 7d3d53e96 cc1099a04
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:14:52 2023 +0200
-
-    Merge commit 'cc1099a0' into thread-next
-    
-    Updated f_implicit_roa_check() to use type methods and moved to filter/f-util.c
-
-commit 7d3d53e96877899a2df937fa44dcfab701419380
-Merge: ef0274499 c0231b092
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:02:04 2023 +0200
-
-    Merge commit 'c0231b09' into thread-next
-
-commit ef027449988c232e0bc5ee04458425eae3da374a
-Merge: 1a49a4aea fdd39c81b
-Author: Maria Matejka 
-Date:   Sun Oct 29 00:00:07 2023 +0200
-
-    Merge commit 'fdd39c81' into thread-next
-
-commit 1a49a4aea8f96701d9de291e39271d8aa30f2ee5
-Merge: d6d122e24 fc9d471b3
-Author: Maria Matejka 
-Date:   Sat Oct 28 23:42:21 2023 +0200
-
-    Merge commit 'fc9d471b' into thread-next
-    
-    Conflicts:
-            conf/cf-lex.l
-            conf/conf.h
-            filter/config.Y
-            filter/data.c
-            filter/data.h
-
-commit d6d122e2450c219cc7a43f0d61d94810236a3a0d
-Merge: 0ba22509a 6b95353eb
-Author: Maria Matejka 
-Date:   Fri Oct 27 18:30:37 2023 +0200
-
-    Merge commit '6b95353e' into thread-next
-
-commit 0ba22509a8bb0d443927aa3f87003e0fd0c9ce2c
-Merge: e6baff89f 51f2e7afa
-Author: Maria Matejka 
-Date:   Fri Oct 27 18:29:31 2023 +0200
-
-    Merge commit '51f2e7af' into thread-next
-    
-    Conflicts:
-            conf/cf-lex.l
-            conf/conf.h
-            conf/confbase.Y
-            filter/config.Y
-            nest/config.Y
-            nest/proto.c
-            nest/rt-table.c
-            proto/bgp/bgp.c
-            sysdep/unix/main.c
-
-commit e6baff89f861fdcf7876a738f5c9d4aa20c49d5a
-Merge: da52d6617 5951dfbd5
-Author: Maria Matejka 
-Date:   Fri Oct 27 15:56:06 2023 +0200
-
-    Merge commit '5951dfbd' into thread-next
-
-commit a740054db50b8532680bd1673a5d4519af889c0f
-Author: Ondrej Zajicek 
-Date:   Wed Oct 25 18:25:46 2023 +0200
-
-    Nest: Minor fixes in MPLS
-
-commit da52d661774a5637bc6ca63c018f542b40941e00
-Merge: c4bcded8b 58efa9446
-Author: Maria Matejka 
-Date:   Wed Oct 25 14:41:11 2023 +0200
-
-    Merge commit '58efa944' into thread-next
-    
-    Conflicts:
-            conf/cf-lex.l
-            conf/conf.h
-            conf/confbase.Y
-            conf/gen_keywords.m4
-            conf/gen_parser.m4
-            filter/config.Y
-            nest/config.Y
-            proto/bgp/config.Y
-            proto/static/config.Y
-    
-    Keywords and attributes are split to separate namespaces, to avoid
-    collisions between regular keyword use and attribute overlay.
-
-commit 06301a991d80597a2a0a9e449d0cdf4bc1eda6d1
-Author: Michal Rada 
-Date:   Tue Oct 17 14:58:14 2023 +0200
-
-    Doc: prefix match prefix pattern definition typo (in sets of prefixes definition)
-
-commit 63f1c4d918209ba4210024638011f7b9ccdd894b
-Author: Ondrej Zajicek 
-Date:   Tue Mar 14 16:02:32 2023 +0100
-
-    Use RTA_MAX_SIZE in rta_do_cow()
-    
-    This allows to modify MPLS label stack in filters. Fixes a bug in
-    handling of 'gw_mpls' attribute.
-
-commit 108c4cfaf3b0fda5daf4bccf2f1ea45d7f3a271d
-Author: Maria Matejka 
-Date:   Tue Oct 24 12:40:52 2023 +0200
-
-    Autoconf: minor reduction of redundancy
-    
-    Joined BIRD_CHECK_GCC_OPTION and BIRD_ADD_GCC_OPTION.
-
-commit c4bcded8b9f5f23a7471d321adeb2726908e5669
-Merge: 25f846ee8 a5a6de581
-Author: Maria Matejka 
-Date:   Tue Oct 24 10:39:52 2023 +0200
-
-    Merge commit 'a5a6de58' into thread-next
-    
-    Conflicts:
-          filter/config.Y
-          filter/data.h
-          filter/data.c
-
-commit 25f846ee8e1a390fdb432c45cd36a4cfbbe0b332
-Merge: 6c85016dd 865981839
-Author: Maria Matejka 
-Date:   Tue Oct 24 09:34:43 2023 +0200
-
-    Merge commit '86598183' into thread-next
-
-commit 6c85016dd42045e3d57d7ba58fb57cecd939ae8b
-Merge: 304c08391 aa70e14c9
-Author: Maria Matejka 
-Date:   Tue Oct 24 09:34:06 2023 +0200
-
-    Merge commit 'aa70e14c' into thread-next
-
-commit c9b7b032110fbd49a5f084bfe3bc886e0e1edfe4
-Author: Ondrej Zajicek 
-Date:   Wed Oct 18 01:48:11 2023 +0200
-
-    CI: Update for new netlab worker
-    
-     - Change tag from 'birdlab' to 'netlab'
-     - Change path of gitlab-runner home dir
-     - Use stayrtr from Debian
-
-commit 5973031460372a4d695c44a9f398d516b0e5bac1
-Author: Ondrej Zajicek 
-Date:   Mon Oct 16 15:24:32 2023 +0200
-
-    CI: Add MPLS tests
-
-commit b5e9e5197bb75c4d7c8f19b1e76b31f9defcb915
-Author: Ondrej Zajicek 
-Date:   Mon Oct 16 15:21:36 2023 +0200
-
-    MPLS: Fix issue with recursive MPLS routes
-    
-    Recursive MPLS routes used hostentry from the original route, which
-    triggered different table than MPLS table, and therefore were not
-    updated.
-
-commit 304c08391376b199456da0cc401d3ee8ebe6d26d
-Merge: 7efa3bac4 f5140d102
-Author: Maria Matejka 
-Date:   Fri Oct 13 15:18:07 2023 +0200
-
-    Merge commit 'f5140d10' into thread-next
-    
-    Smashed as "ours" as local changes are completely incompatible.
-    Relevant fixes will be merged from later commits if possible.
-
-commit 7efa3bac4f9a8e2ac00d0e2bb92db85bc12731b5
-Merge: fb4cf949d cce48c6cd
-Author: Maria Matejka 
-Date:   Fri Oct 13 14:02:21 2023 +0200
-
-    Merge commit 'cce48c6c' into thread-next
-
-commit fb4cf949d5311c4bdd38aa1c218c3b4642507335
-Merge: cdb95c285 32427c9ce
-Author: Maria Matejka 
-Date:   Fri Oct 13 13:49:09 2023 +0200
-
-    Merge commit '32427c9c' into thread-next
-
-commit cdb95c2858fe77d6574803d3557d0f3234a34111
-Merge: 123445341 f411a19bb
-Author: Maria Matejka 
-Date:   Fri Oct 13 13:46:04 2023 +0200
-
-    Merge commit 'f411a19b' into thread-next
-
-commit 1234453419620f8917f6625ecec5a725fe82bb32
-Author: Maria Matejka 
-Date:   Fri Oct 13 13:38:15 2023 +0200
-
-    CI: Temporarily disabling test-ibgp-loop-big as it tends to hang
-
-commit 407e73640487a1e168c35adc68539edb63f63cde
-Merge: e7acdf642 0dbcc9272
-Author: Maria Matejka 
-Date:   Fri Oct 13 13:36:47 2023 +0200
-
-    Merge commit '0dbcc927' into thread-next
-
-commit e7acdf6428f2aea4e28adae18b036aee3d089aba
-Merge: dabf2f562 fc3547880
-Author: Maria Matejka 
-Date:   Fri Oct 13 11:32:53 2023 +0200
-
-    Merge commit 'fc354788' into thread-next
-
-commit dabf2f5625c73226d7efbe92924085f8ea9b2832
-Author: Maria Matejka 
-Date:   Fri Oct 13 11:23:21 2023 +0200
-
-    RIP: actually remove the interface structures on shutdown
-    
-    This avoids a spurious route update fail when protocol shutdown collides
-    with an incoming RIP packet.
-
-commit 21b75c472d9fab7942825d1a4b25f77e4a244d47
-Merge: b901cca2d e3c0eca95
-Author: Maria Matejka 
-Date:   Fri Oct 13 11:04:39 2023 +0200
-
-    Merge commit 'e3c0eca9' into thread-next
-
-commit b901cca2df7c57c0e5840454115bb5e12601a714
-Author: Maria Matejka 
-Date:   Fri Oct 13 10:22:09 2023 +0200
-
-    Protocol: better granularity of pool management
-    
-    There are now 3 different pools with specific lifetime. All of these are
-    available since protocol start, anyway they get freed in different
-    moments.
-    
-    First, pool_up gets freed immediately after announcing PS_STOP, to e.g.
-    stop all timers and events regularly updating the routing table when the
-    imports are already flushing.
-    
-    Then, pool_inloop gets freed just before the protocol loop is finally
-    stopped, after all channels, imports and exports and other hooks are
-    cleaned up.
-    
-    And finally, the pool itself is freed the last. Unless you explicitly
-    need the early free, use this pool.
-
-commit 767b7b22a0ff2baed1f30877570e1fbf1383a2ea
-Merge: afb9d5d45 512110113
-Author: Maria Matejka 
-Date:   Thu Oct 12 14:12:33 2023 +0200
-
-    Merge commit '5121101136cb80151a9361c63dc4822afeb44eef' into thread-next
-
-commit afb9d5d450bbaa31dc78faa08fca07dfc8812d72
-Author: Maria Matejka 
-Date:   Thu Oct 12 10:07:57 2023 +0200
-
-    Channel: using a separate pool for export data
-
-commit 3cfa9ac253aaae9ee757650e523c3b31edefaf94
-Merge: b708dd367 e2f08c382
-Author: Maria Matejka 
-Date:   Thu Oct 12 11:38:16 2023 +0200
-
-    Merge commit 'e2f08c382a2adbbbd94c5cd7d996ce9175e0fb9c' into HEAD
-
-commit b708dd367ace101a72cb09bde0f7597d242fadf1
-Merge: 2cbf7c48a 4972590ea
-Author: Maria Matejka 
-Date:   Thu Oct 12 09:29:51 2023 +0200
-
-    Merge commit '4972590e' into thread-next
-
-commit e2f08c382a2adbbbd94c5cd7d996ce9175e0fb9c
-Author: Maria Matejka 
-Date:   Thu Oct 12 10:57:55 2023 +0200
-
-    BGP/BMP: fixed build with no bmp at all
-
-commit 4972590ea5cc9fb5ff20b28227badd6338830649
-Author: Maria Matejka 
-Date:   Thu Oct 12 09:29:09 2023 +0200
-
-    BGP: dropped bgp_fix_attr_flags() (useless remnant from previous versions)
-
-commit 2cbf7c48ad067ad3a529f1dbb03ce592703b01b1
-Merge: 65ced75e9 b20b6a9ad
-Author: Maria Matejka 
-Date:   Wed Oct 11 22:26:41 2023 +0200
-
-    Merge commit 'b20b6a9ad204f2648ed3d62720435bb21dfb947c' into thread-next
-
-commit b20b6a9ad204f2648ed3d62720435bb21dfb947c
-Author: Maria Matejka 
-Date:   Wed Oct 11 22:23:34 2023 +0200
-
-    BGP/BMP: Moved temporary allocation checks to the freeing functions
-
-commit 65ced75e9525f2c0cdd80046c14343e457b1ad7a
-Merge: 1b0f32037 2ed9b2d76
-Author: Maria Matejka 
-Date:   Wed Oct 11 22:06:18 2023 +0200
-
-    Merge branch 'mq-bmp-to-merge-to-v3' into thread-next
-
-commit 1b0f3203712e5cd6705ef7e22cf5d7aa74c302e3
-Merge: 4b5757ee5 2d988f71a
-Author: Maria Matejka 
-Date:   Wed Oct 11 14:16:39 2023 +0200
-
-    Merge commit '2d988f71a5c3caf3b56426a45d4d234c4fd4fce7' into thread-next
-
-commit 4b5757ee522eeb9dcffd7e9099217ace6b425f07
-Merge: 8d1215dba 6e908775c
-Author: Maria Matejka 
-Date:   Wed Oct 11 13:28:30 2023 +0200
-
-    Merge commit '6e908775' into thread-next
-
-commit 2ed9b2d7695de1b39c52a37e9f49bd70243a8b0e
-Merge: 2d988f71a 4558adabf
-Author: Maria Matejka 
-Date:   Tue Oct 10 15:04:26 2023 +0200
-
-    Merge branch 'mq-bmp-to-merge-to-v3' into HEAD
-
-commit 2d988f71a5c3caf3b56426a45d4d234c4fd4fce7
-Author: Ondrej Zajicek 
-Date:   Mon Aug 21 04:17:21 2023 +0200
-
-    Nest: Use generic rte_announce() also for import tables
-    
-    Remove special rte_announce_in(), so we can use generic rte_announce()
-    for bot feed and notifications.
-
-commit 6e908775cba9efdae09f06a630cc7777282e2715
-Author: Ondrej Zajicek 
-Date:   Thu Apr 27 18:20:49 2023 +0200
-
-    Conf: Improve handling of keywords
-    
-    For whatever reason, parser allocated a symbol for every parsed keyword
-    in each scope. That wasted time and memory. The effect is worsened with
-    recent changes allowing local scopes, so keywords often promote soft
-    scopes (with no symbols) to real scopes.
-    
-    Do not allocate a symbol for a keyword. Take care of keywords that could
-    be promoted to symbols (kw_sym) and do it explicitly.
-
-commit 6b2c9b7c66d9b9648213d3a7f071d0f720048e46
-Author: Ondrej Zajicek 
-Date:   Thu Apr 27 17:09:00 2023 +0200
-
-    Conf: Fix symbol lookup
-    
-    The symbol table used just symbol name as a key, and used a trick with
-    active flag to find symbols in active scopes with one hash table lookup.
-    
-    The disadvantage is that it can degenerate to O(n) for negative queries
-    in situations where are many symbols with the same name in different
-    scopes.
-    
-    Thanks to Yanko Kaneti for the bugreport.
-
-commit 0e1fbaa5b21db8e5c64a732dbaf0b8afe707a147
-Author: Ondrej Zajicek 
-Date:   Fri Oct 6 18:53:25 2023 +0200
-
-    NEWS and version update
-
-commit 23f94b1368b71faa0a03e50b9e9d0cf8535cff3a
-Author: Ondrej Zajicek 
-Date:   Fri Oct 6 18:52:02 2023 +0200
-
-    Doc: Minor fixes
-
-commit c5c3a22bccda5454775b48ad318a7fd4bf197f86
-Author: Ondrej Zajicek 
-Date:   Fri Oct 6 02:36:59 2023 +0200
-
-    Conf: Bytestrings with hex: should use the same general format as ones without.
-    
-    Either hex:01234567, or hex:01:23:45:67. No confusing formats like
-    hex:0123:4567:ab:cdef, which looks like there is an implicit zero byte.
-
-commit e83beb70bd14923cece5b35411606ade6fb8fbee
-Author: Pavel Šorejs 
-Date:   Fri Oct 6 04:31:19 2023 +0200
-
-    KRT: Allow to learn routes with RTPROT_KERNEL
-    
-    The Kernel protocol, even with the option 'learn' enabled, ignores
-    direct routes created by the OS kernel (on Linux these are routes
-    with rtm_protocol == RTPROT_KERNEL).
-    
-    Implement optional behavior where both OS kernel and third-party routes
-    are learned, it can be enabled by 'learn all' option.
-    
-    Minor changes by committer.
-
-commit 57aa077227d1f2440dc1b2bb6cbbebd418a6b898
-Author: Ondrej Zajicek 
-Date:   Thu Oct 5 21:29:04 2023 +0200
-
-    BGP: Improve custom BGP attributes
-    
-     - Implement EA_GET for custom BGP attributes
-     - Forbid EA_SET on existing opaque attributes
-     - Forbid redefining existing attributes
-     - Document possible compatibility problems
-
-commit ba01a6f2e66d03eb5d9426fdf4973f30e09c5710
-Author: Ondrej Zajicek 
-Date:   Thu Oct 5 17:54:43 2023 +0200
-
-    MPLS: Handle compatibility with old configs
-    
-    Old configs do not define MPLS domains and may use a static protocol
-    to define static MPLS routes.
-    
-    When MPLS channel is the only channel of static protocol, handle it
-    as a main channel. Also, define implicit MPLS domain if needed and
-    none is defined.
-
-commit de09fda5dcef16bf50663f7ffb56074e6ad20b5a
-Author: Ondrej Zajicek 
-Date:   Thu Oct 5 14:26:22 2023 +0200
-
-    Filter: Fix scope handling in for loops
-    
-    Changes in scope implementation broke scope handling in for loops.
-    The term in for loops is supposed to be parsed in the parent scope.
-
-commit abae806efdf6ac5f919c93057dd8df1faff1058c
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 20:14:12 2023 +0200
-
-    Conf: Fix 'show symbols'
-    
-    Seems like the root scope was not marked as active.
-
-commit ab47c2ae466f785212f0519388417ebb31b2cf24
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 19:45:00 2023 +0200
-
-    BGP: Custom attribute definitions should use cfg_alloc(), not malloc()
-    
-    Otherwise we would get memory leaks.
-
-commit d41b06238dc2167f8e470aa2fb31cb937ff8fb3e
-Author: Maria Matejka 
-Date:   Wed Oct 4 19:57:55 2023 +0200
-
-    Filter: explicitly forbidden for-loop with pre-defined variable
-
-commit 6a242b3ec66f2ab89f9277e67125eab3e3676644
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 17:36:03 2023 +0200
-
-    IO: Fix race condition in event processing
-    
-    When regular event was added from work event, we did remember that
-    regular event list was empty and therefore we did not use zero time
-    in poll(). This leads to ~3 s latency in route reload during
-    reconfiguration.
-
-commit 0bfa216f496279905b843abcfb1242477b86783c
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 15:25:05 2023 +0200
-
-    Doc: Fix syntax errors in SGML
-
-commit be09b030ed40c76ee0727dd3980df77094fdc907
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 15:00:24 2023 +0200
-
-    MPLS: Update to support and use 64bit source id
-
-commit cab5fce2b6822b7f3a892103077f26e197fecfbc
-Author: Ondrej Zajicek 
-Date:   Wed Oct 4 13:00:06 2023 +0200
-
-    Doc: L3VPN documentation
-
-commit 8a70885694c5a3b384deba0f8cd25b7f63b99fcd
-Author: Ondrej Zajicek 
-Date:   Tue Oct 3 16:11:18 2023 +0200
-
-    Doc: MPLS documentation
-
-commit 8f5511dafb54b5788546065c9b572f9b4f9d47ee
-Author: Ondrej Zajicek 
-Date:   Sun Oct 1 05:02:46 2023 +0200
-
-    L3VPN: Import/export target reconfiguration
-
-commit d8130da86bda6244e1f5c06eb9b9033625b781e6
-Author: Ondrej Zajicek 
-Date:   Sat Sep 30 23:18:04 2023 +0200
-
-    BGP, L3VPN: Fix MPLS channel reload
-    
-    When a MPLS channel is reloaded, it should reload all regular MPLS-aware
-    channels. This causes re-evaluation of routes in FEC map and possibly
-    reannouncement of MPLS routes.
-
-commit a7a9df8639c701dd020cf61d19b205230742a17e
-Author: Ondrej Zajicek 
-Date:   Sat Sep 30 20:07:40 2023 +0200
-
-    MPLS: Implement FEC map reconfiguration
-    
-    This allows changing label policy or label range without restart.
-
-commit 9b775859cd7fd54a6fe2bd88359955fce079999d
-Author: Ondrej Zajicek 
-Date:   Tue Sep 26 18:50:20 2023 +0200
-
-    MPLS: Handle label allocation failures
-
-commit e915f99e1cd4f6c90e640f7290c201633ab992f0
-Author: Ondrej Zajicek 
-Date:   Sun Sep 24 00:24:50 2023 +0200
-
-    L3VPN: Fix bug in reconfiguration
-    
-    Fields import_target / export_target link to config structures, must be
-    updated during reconfiguration.
-
-commit b6385decb3f9f4d4029ee7bfc2f013b495a725f8
-Author: Ondrej Zajicek 
-Date:   Sat Sep 23 17:55:01 2023 +0200
-
-    MPLS: Improve handling of static label allocations
-    
-    Use mpls_new_label() / mpls_free_label() also for static labels, to keep
-    track of allocated labels and to enforce label ranges.
-    
-    Static label allocations always use static label range, regardless of
-    configured label range.
-
-commit 81a20ca5d8508f7317f2e023a3be5e5da454d740
-Author: Ondrej Zajicek 
-Date:   Fri Sep 22 19:49:15 2023 +0200
-
-    Static: Add syntax for static MPLS labels
-    
-    Instead of just using route attributes, static routes with
-    static MPLS labels can be defined just by e.g.:
-    
-      route 10.1.1.0/24 mpls 100 via 10.1.2.1 mpls 200;
-
-commit 35726051517aaf1869458caed03c7ee1c516721c
-Author: Ondrej Zajicek 
-Date:   Fri Sep 22 15:47:48 2023 +0200
-
-    MPLS: Label range non-intersection check
-
-commit fcf22586200000f0d19ffed339524d2530ed0d6f
-Author: Ondrej Zajicek 
-Date:   Mon Sep 18 17:47:17 2023 +0200
-
-    MPLS: Improve label range reconfiguration
-    
-    Allow to shorten label range over unused area.
-
-commit 8e9e013b0ddec438151c9d12fd4bac079c350310
-Author: Ondrej Zajicek 
-Date:   Mon Sep 18 17:32:24 2023 +0200
-
-    MPLS: Add command 'show mpls ranges'
-    
-    Add command to show MPLS label ranges and their stats.
-
-commit 3397ca51f8a33e6ef97ab5ec7209dfce7051bc5d
-Author: Ondrej Zajicek 
-Date:   Mon Sep 18 14:19:20 2023 +0200
-
-    Nest: Fix missing RTS_* values in filters
-
-commit e338c4b63c6a9258d858f158049943e1e8f00e6f
-Author: Ondrej Zajicek 
-Date:   Mon Sep 18 14:12:22 2023 +0200
-
-    Lib: Extend MPLS label allocator bitmap
-    
-    Add function lmap_last_one_in_range() for finding the last active label
-    in a label range.
-
-commit bcff3ae79acfd938459869ac98db4f83e3d422b6
-Author: Ondrej Zajicek 
-Date:   Mon Oct 3 20:06:13 2022 +0200
-
-    L3VPN: BGP/MPLS VPNs using MPLS backbone
-    
-    The L3VPN protocol implements RFC 4364 BGP/MPLS VPNs using MPLS backbone.
-    It works similarly to pipe. It connects IP table (one per VRF) with (global)
-    VPN table. Routes passed from VPN table to IP table are stripped of RD and
-    filtered by import targets, routes passed in the other direction are extended
-    with RD, MPLS labels and export targets in extended communities. A separate
-    MPLS channel is used to announce MPLS routes for the labels.
-
-commit 9ca86ef69cc56cb75e48e6f46bfdbe1b1e3e99b6
-Author: Ondrej Zajicek 
-Date:   Sat Oct 1 22:38:49 2022 +0200
-
-    MPLS: Add support for per-VRF labeling policy
-    
-    The new labeling policy MPLS_POLICY_VRF assigns one label to all routes
-    (from the same FEC map associated with one VRF), while replaces their
-    next hops with a lookup to a VRF table. This is useful for L3VPN
-    protocol.
-
-commit 9d456d5366593c7b0ebfde003be0517adb554541
-Author: Ondrej Zajicek 
-Date:   Thu Sep 15 02:30:15 2022 +0200
-
-    BGP: Add MPLS support
-    
-    When MPLS is active, received routes on MPLS-aware SAFIs (ipvX-mpls,
-    vpnX-mpls) are automatically labeled according to active label policy and
-    corresponding MPLS routes are automatically generated. Also routes sent
-    on MPLS-aware SAFIs announce local labels when it should be done.
-
-commit 15c86ed061d3dbc7e4ef863e396cda5ec3ed0d4c
-Author: Ondrej Zajicek 
-Date:   Thu Sep 15 02:29:12 2022 +0200
-
-    Static: Add MPLS support
-    
-    When MPLS is active, static IP/VPN routes are automatically labeled
-    according to active label policy and corresponding MPLS routes are
-    automatically generated.
-
-commit 333ddd4f981b90d5d3dff166b6abf9bf40bede9f
-Author: Ondrej Zajicek 
-Date:   Thu Sep 15 01:38:18 2022 +0200
-
-    MPLS subsystem
-    
-    The MPLS subsystem manages MPLS labels and handles their allocation to
-    MPLS-aware routing protocols. These labels are then attached to IP or VPN
-    routes representing label switched paths -- LSPs.
-    
-    There was already a preliminary MPLS support consisting of MPLS label
-    net_addr, MPLS routing tables with static MPLS routes, remote labels in
-    next hops, and kernel protocol support.
-    
-    This patch adds the MPLS domain as a basic structure representing local
-    label space with dynamic label allocator and configurable label ranges.
-    To represent LSPs, allocated local labels can be attached as route
-    attributes to IP or VPN routes with local labels as attributes.
-    
-    There are several steps for handling LSP routes in routing protocols --
-    deciding to which forwarding equivalence class (FEC) the LSP route
-    belongs, allocating labels for new FECs, announcing MPLS routes for new
-    FECs, attaching labels to LSP routes. The FEC map structure implements
-    basic code for managing FECs in routing protocols, therefore existing
-    protocols can be made MPLS-aware by adding FEC map and delegating
-    most work related to local label management to it.
-
-commit e55696a4f88b63c622bb3a0360f9114d01253e53
-Author: Ondrej Zajicek (work) 
-Date:   Sat May 22 12:31:47 2021 +0200
-
-    Lib: Indirect bitmap for MPLS label allocator
-
-commit 198fb23a3a74aa650700c795c55aa5dd0cd02bbb
-Merge: 8d1215dba 93509af4c
-Author: Maria Matejka 
-Date:   Tue Oct 3 11:26:46 2023 +0200
-
-    Merge commit '93509af4' into HEAD
-
-commit 93509af4c1cc508c57873dcb0de6babbf424825c
-Author: katerina.kubecova 
-Date:   Tue Oct 3 11:08:28 2023 +0200
-
-    Table preexport net-filter refactoring
-    
-    Also added a possibility for filtering by trie.
-
-commit 216abcb12e4ade097ce06a9853f1dca46cf8f98b
-Author: katerina.kubecova 
-Date:   Tue Oct 3 11:07:46 2023 +0200
-
-    ROA notifications store the affected nets into trie
-
-commit 8d1215dba6c76f2f4fe5360cd20eca8a953fb0f0
-Author: Maria Matejka 
-Date:   Fri Sep 29 16:24:50 2023 +0200
-
-    Channel: Refeeding by an auxiliary request if needed.
-    
-    If the protocol supports route refresh on export, we keep the stop-start
-    method of route refeed. This applies for BGP with ERR or with export
-    table on, for OSPF, Babel, RIP or Pipe.
-    
-    For BGP without ERR or for future selective ROA reloads, we're adding an
-    auxiliary export request, doing the refeed while the main export request
-    is running, somehow resembling the original method of BIRD 2 refeed.
-    
-    There is also a refeed request queue to keep track of different refeed
-    requests.
-
-commit 21213be523baa7f2cbf0feaa617f265c55e9b17a
-Author: Ondrej Zajicek 
-Date:   Mon Oct 2 15:09:30 2023 +0200
-
-    Nest: Expand rte_src.private_id to u64
-    
-    In general, private_id is sparse and protocols may want to map some
-    internal values directly into it. For example, L3VPN needs to
-    map VPN route discriminators to private_id.
-    
-    OTOH, u32 is enough for global_id, as these identifiers are dense.
-
-commit 8ad9c4bb339172d445d1346876b2c9f3c27199c1
-Author: Maria Matejka 
-Date:   Wed Sep 27 12:51:55 2023 +0200
-
-    BGP config: Splitting Route Refresh and Enhanced Route Refresh
-    
-    Both toggles are on by default but if some implementation needs one or
-    another to be switched off separately, then it's possible now.
-
-commit b58ebc4ef18f9e4a77e466a218f61eeaadb8ecb4
-Author: Maria Matejka 
-Date:   Wed Sep 27 16:47:25 2023 +0200
-
-    Babel: Properly handle route refeed
-
-commit bf84daca8c83a28e2227c73a36cb41e49189148a
-Author: Maria Matejka 
-Date:   Wed Sep 27 16:29:44 2023 +0200
-
-    RIP: Properly handle route refeed
-
-commit a4adb09f5a5c3806488fb121eafc0e6c969135e7
-Author: Maria Matejka 
-Date:   Fri Sep 22 15:10:45 2023 +0200
-
-    Aggregator: brief documentation
-
-commit 018a77fc0bc90f74e7267b40ce3bc82074ec8582
-Author: Maria Matejka 
-Date:   Fri Sep 22 14:21:21 2023 +0200
-
-    Aggregator: Forbidden dangerous filter computations
-
-commit 8674d7ab4bf76cadc256ca24609ffe4b1e8fcbf4
-Author: Maria Matejka 
-Date:   Wed Jul 12 15:11:00 2023 +0200
-
-    Aggregator: Fixed hashing of adata
-
-commit 977b82fba49b22d9548546d88b105945921efaed
-Author: Igor Putovny 
-Date:   Wed Jun 21 13:15:07 2023 +0200
-
-    Basic route aggregation
-    
-    Add a new protocol offering route aggregation.
-    
-    User can specify list of route attributes in the configuration file and
-    run route aggregation on the export side of the pipe protocol. Routes are
-    sorted and for every group of equivalent routes new route is created and
-    exported to the routing table. It is also possible to specify filter
-    which will run for every route before aggregation.
-    
-    Furthermore, it will be possible to set attributes of new routes
-    according to attributes of the aggregated routes.
-    
-    This is a work in progress.
-    
-    Original work by Igor Putovny, subsequent cleanups and finalization by
-    Maria Matejka.
-
-commit 860fbf0d657d8e0b34b6fb2ff72c90f4030ed7ef
-Author: Maria Matejka 
-Date:   Mon Sep 25 09:31:18 2023 +0200
-
-    Babel: Remove interfaces on shutdown
-    
-    This avoids calling interface timer between Babel going
-    PS_DOWN and finally cleaning up the resource pool.
-
-commit 5cdc1b679cb879393b8d140ac5cbf81893d11258
-Author: Maria Matejka 
-Date:   Sun Sep 24 22:20:27 2023 +0200
-
-    Kernel: refeed routes and delete them from kernel before actual shutdown
-
-commit e65a5257b2136ff668fd16979f4c1a6bcb95faa0
-Author: Maria Matejka 
-Date:   Sun Sep 24 23:22:43 2023 +0200
-
-    Protocols have now assigned startup phases
-    
-    For now, there are 4 phases: Necessary (device), Connector (kernel, pipe), Generator (static, rpki) and Regular.
-    Started and reconfigured are from Necessary to Regular, shutdown backwards.
-    
-    This way, kernel can flush routes before actually being shutdown.
-
-commit 5ab182d8d1bc6404ea8bac51411e63067dfbfb28
-Author: Maria Matejka 
-Date:   Sun Sep 24 22:20:01 2023 +0200
-
-    Iface: trace log messages cleanup
-
-commit c92b5ad218f65571b601573b0deca40219059bb0
-Author: Maria Matejka 
-Date:   Sun Sep 24 12:15:26 2023 +0200
-
-    Table: Added some journal and export tracing
-
-commit 32bb548c116b40f79d077c10356c037770ed1005
-Author: Maria Matejka 
-Date:   Sun Sep 24 11:47:24 2023 +0200
-
-    Table: Fixed feed race condition
-    
-    The problem happened like this:
-    
-    1. Single route for the given net in table
-    2. A feed is started
-    3. The route is deleted (from another thread)
-    4. The feed finds an empty net, exports nothing, ignores journal (here is bug)
-    5. The route is added
-    6. The export transitions from FEEDING to READY
-    7. While processing the journal, the route deletion and addition combines into noop.
-    
-    This way routes mysteriously disappeared in specific cases of link instability.
-    
-    Problem fixed by explicitly marking the empty-net journal entries as processed in step 4.
-
-commit c262c728eb974e13e333cc87d3aa65183e8890b5
-Author: Maria Matejka 
-Date:   Tue Aug 15 12:31:28 2023 +0200
-
-    Export: More strict export state checking on change
-
-commit a920b5111c2748568d89edfd09c8cba0ef30e5cf
-Author: Maria Matejka 
-Date:   Mon Jul 3 20:38:24 2023 +0200
-
-    Properly consted routes inside table
-
-commit 206b33fd0b3506766b832e89f3fccb889219b031
-Author: Maria Matejka 
-Date:   Sun Jul 2 15:10:39 2023 +0200
-
-    Filter iterator accepts lines instead of filter
-
-commit b43580d77d24b30d620b4fc394d596b4d2125754
-Author: Vojtech Vilimek 
-Date:   Thu Sep 14 15:21:53 2023 +0200
-
-    Renamed channel class pointers
-    
-    The channel class pointers were strangely named , not .
-
-commit 144ac4c1d301863bf85b8aee8e9dca7a7e9e4466
-Author: Maria Matejka 
-Date:   Thu Aug 24 17:00:54 2023 +0200
-
-    Logging: fixed size logfiles behaving as mmapped ringbuffers
-    
-    This variant of logging avoids calling write() for every log line,
-    allowing for waitless logging. This makes heavy logging less heavy
-    and more useful for race condition debugging.
-
-commit 75a5936924e2c65cf1f344946fe7c8a9d40ff2d9
-Author: Maria Matejka 
-Date:   Thu Aug 24 15:38:44 2023 +0200
-
-    Logging limit enforcement moved into the rfile structure
-
-commit 427177edb73120e4a43944f00babd0540b1890a5
-Author: Maria Matejka 
-Date:   Mon Aug 21 18:44:10 2023 +0200
-
-    Logging now doesn't lock with each message
-    
-    The original logging routines were locking a common mutex. This led to
-    massive underperformance and unwanted serialization when heavily logging
-    due to lock contention. Now the logging is lockless, though still
-    serializing on write() syscalls to the same filedescriptor.
-    
-    This change also brings in a persistent logging channel structures and
-    thus avoids writing into active configuration data structures during
-    regular run.
-
-commit 3c9429a282be9400a04bea0c591ea8666e931a86
-Author: Maria Matejka 
-Date:   Mon Aug 21 20:56:19 2023 +0200
-
-    Threads: added a generic method to run in all threads
-
-commit 32009cb6eb8f53333e56c96050896a6645d68f50
-Author: Maria Matejka 
-Date:   Wed Aug 16 15:05:36 2023 +0200
-
-    Logging: Abolished stdio in favor of write() to make the logging faster.
-
-commit 0a729b509c2c4476cbf66c64620a863e6a381c8c
-Author: Maria Matejka 
-Date:   Fri Jun 23 09:05:48 2023 +0200
-
-    Simple testing of reconfiguration to a slightly different one
-
-commit a0fb0eaa6780e60b7c5434dfe0e2ed402e5a4ea4
-Author: katerina.kubecova 
-Date:   Tue Sep 19 11:11:24 2023 +0200
-
-    BGP: Setting and unsetting unknown attributes
-    
-    All these must be declared as bytestring. Allows operators to delete
-    unwanted attributes breaking the Internet:
-    
-        https://blog.benjojo.co.uk/post/bgp-path-attributes-grave-error-handling
-
-commit cc122bf0c295207a909061a365eccd49462b1b16
-Author: katerina.kubecova 
-Date:   Mon Sep 18 14:07:59 2023 +0200
-
-    Attributes declared in config can be bytestrings
-
-commit 8cc9d198c7ab906e176a7926484ea85d4f53cab6
-Author: katerina.kubecova 
-Date:   Wed Sep 20 09:50:22 2023 +0200
-
-    Filter: Function unset() accepts attributes declared in config
-
-commit bb8e28248be0ad1f728433e4884dfe2db3772b30
-Author: katerina.kubecova 
-Date:   Mon Sep 18 14:43:58 2023 +0200
-
-    Structures bytestring and adata merged into adata.
-
-commit 9ffea830b673a8b8506877a371e0c9fc52c99b94
-Author: Ondrej Zajicek 
-Date:   Thu Sep 14 17:24:09 2023 +0200
-
-    Conf: Move definition of struct keyword to conf.h
-
-commit 88307c31c5156e8e963ac7196ec221f76a965846
-Author: Maria Matejka 
-Date:   Tue Aug 15 17:05:58 2023 +0200
-
-    CLI: Dropping the mechanism of echoing log messages
-    
-    This is better done by running tail -f on a logfile.
-
-commit 8638c6f0b3f0809ae754045a8aca64552d077210
-Author: Maria Matejka 
-Date:   Thu Sep 14 14:44:35 2023 +0200
-
-    BGP: When debug { routes } is set, updates considered as loop are logged
-
-commit 0faf3bb6306bbc36f2f600bf5b3f8dcba8559c7f
-Author: Maria Matejka 
-Date:   Thu Sep 14 14:40:33 2023 +0200
-
-    Enhanced tracing of route refresh state
-
-commit a3dc26455d125310ddf3c903208b0168dbbd81d4
-Author: Ondrej Zajicek 
-Date:   Wed Sep 13 06:21:26 2023 +0200
-
-    Filter: Use common initializer for undefined variables and eattrs.
-    
-    Undefined paths and clists should use typed f_val with empty adata
-    instead of just void f_val. Use common initializer to handle both
-    variables and eattrs.
-
-commit 7395b97daf529cab1065f107c924bed310a8ad75
-Author: Ondrej Zajicek 
-Date:   Tue Sep 12 18:44:20 2023 +0200
-
-    Filter: Minor updates to methods
-    
-    Remove warning when function-like syntax is used for calling
-    add/remove/... methods.
-    
-    Fix argument offset in error messages for function-like syntax.
-
-commit 132f1edaf402aba79ae3983966795b2f1220afbb
-Author: Ondrej Zajicek 
-Date:   Tue Jul 25 19:33:51 2023 +0200
-
-    Filter: Split clist add/delete operations to multiple methods
-
-commit f0d1396073dc7c3a6ab5f88baa07f2494cbd5328
-Author: Ondrej Zajicek 
-Date:   Tue Jul 25 17:43:52 2023 +0200
-
-    Filter: Implement constant promotion for multiple dispatch methods
-
-commit e88695913148ae63e1f8c8ac64f7b039dd3fc286
-Author: Ondrej Zajicek 
-Date:   Wed Jul 12 20:11:34 2023 +0200
-
-    Filter: Print proper error response in multiple method dispatch
-    
-    When no matching method is found, print an error response containing
-    position and type of infringing argument and a set of expected types.
-
-commit e4ce88cc50a7af21e0b7042f60abd11e4288c6fe
-Author: Ondrej Zajicek 
-Date:   Wed Jul 12 20:01:03 2023 +0200
-
-    Filter: Move argument list reversal from function_call to var_list
-    
-    List of arguments for function calls is constructed in reverse and then
-    reverted. This was done in function_call grammar rule. Do the reverse
-    directly in var_list grammar rule. This fixes reverse order of arguments
-    in method calls.
-
-commit cc1099a04169b768cb4803686ee20423a6d3fede
-Author: Ondrej Zajicek 
-Date:   Mon Jul 3 17:00:58 2023 +0200
-
-    Filter: Implement multiple dispatch for methods
-    
-     - Extend method descriptors with type signature
-     - Daisy chain method descriptors for the same symbol
-     - Dispatch methods for same symbol based on type signature
-     - Split add/delete/filter operations to multiple methods
-     - Replace ad-hoc dispatch of old-style syntax with scope-based dispatch
-     - Also change method->arg_num to count initial arg
-    
-    It still needs some improvements, like better handling of untyped
-    expressions and better error reporting when no dispatch can be done.
-    
-    The multiple dispatch could also be extended to dispatch regular
-    function-like expressions in a uniform way.
-
-commit fc4398b4e1d18142a5c428a7c90484071a81ab9c
-Author: Ondrej Zajicek 
-Date:   Tue Jul 4 19:07:30 2023 +0200
-
-    Filter: Better syntax for function return types
-    
-    The C-style syntax does not really fit into rest of our syntax.
-
-commit c696e3cb8e53229a438a8509a05e9d0ff27b8b4a
-Author: Ondrej Zajicek 
-Date:   Wed Jun 28 01:21:23 2023 +0200
-
-    Filter: Make f_method_call_*() usage symmetric
-
-commit ab61476ebf2b8873d542f77069ec111030329268
-Author: Ondrej Zajicek 
-Date:   Tue Jun 27 21:38:05 2023 +0200
-
-    Filter: Convert more methods to use METHOD_R()
-
-commit 4cdd6f2ea0af64843082c05147c307eb62165352
-Author: Ondrej Zajicek 
-Date:   Tue Jun 27 21:16:11 2023 +0200
-
-    Filter: Remove number of args from METHOD_R()
-    
-    Macro METHOD_R() is used for simplest methods, there is no place to
-    define argument types, so let's force it to be 0.
-
-commit c0231b092960c66dd17119f75ce3d2b4101f42aa
-Author: Ondrej Zajicek 
-Date:   Tue Jun 27 14:49:28 2023 +0200
-
-    Conf: Remove toksym from symbol_known
-    
-    No need to have toksym in symbol_known, as defined symbols are preferred
-    (by scope) to keywords anyway. Adding it just creates grammar conflicts.
-
-commit fdd39c81bd4cb04dc9f0f5e5cc8db95909b76cbf
-Author: Maria Matejka 
-Date:   Mon Jun 19 17:24:30 2023 +0200
-
-    Filter: Print instructions take only one value (simplification)
-
-commit 6d411fc7bdd82ee40a96fee1ded228fa102b62c9
-Author: Maria Matejka 
-Date:   Mon Jun 19 15:49:51 2023 +0200
-
-    Filter: Shortened method declarations
-
-commit 21faa54ec3251cb730a23a663ebf7775834ee7a8
-Author: Maria Matejka 
-Date:   Sun Jun 18 22:50:45 2023 +0200
-
-    Filter: The for loop uses the method system for type dispatch
-
-commit 1d38726c646ee3a4b6431d55f921fa6ede92fca1
-Author: Maria Matejka 
-Date:   Sat Jun 17 13:05:23 2023 +0200
-
-    Removing unused terminals from filter config
-
-commit fc9d471b36b91429e5d86aa794716683a5281449
-Author: Maria Matejka 
-Date:   Fri Jun 16 17:35:37 2023 +0200
-
-    Filter: Methods rework
-    
-    Methods can now be called as x.m(y), as long as x can have its type
-    inferred in config time. If used as a command, it modifies the object,
-    if used as a value, it keeps the original object intact.
-    
-    Also functions add(x,y), delete(x,y), filter(x,y) and prepend(x,y) now
-    spit a warning and are considered deprecated.
-    
-    It's also possible to call a method on a constant, see filter/test.conf
-    for examples like bgp_path = +empty+.prepend(1).
-    
-    Inside instruction definitions (filter/f-inst.c), a METHOD_CONSTRUCTOR()
-    call is added, which registers the instruction as a method for the type
-    of its first argument. Each type has its own method symbol table and
-    filter parser switches between them based on the inferred type of the
-    object calling the method.
-    
-    Also FI_CLIST_(ADD|DELETE|FILTER) instructions have been split to allow
-    for this method dispatch. With type inference, it's now possible.
-
-commit 39f8f46d81203ebd6b976da56e83930f972dccab
-Author: Maria Matejka 
-Date:   Sat Jun 17 10:16:28 2023 +0200
-
-    Uninitialized filter variables of path/[el]?clist types are now explicitly empty
-
-commit 6f798683a34aa87f5e4f590be4c90253a1135e08
-Author: Maria Matejka 
-Date:   Fri Jun 16 22:11:03 2023 +0200
-
-    Conf: config warnings show the file position
-
-commit 062ff656830f89bd3bca5b39a86c4d41b535a7bf
-Author: Maria Matejka 
-Date:   Thu Jun 15 13:25:40 2023 +0200
-
-    Filter: functions can and should have typed return values
-
-commit f86c86b7913f55c1221d8c5e1ff27700aa663a6e
-Author: Maria Matejka 
-Date:   Tue Jun 13 09:39:29 2023 +0200
-
-    Filter/Conf: Method names have their own keyword hash
-    
-    To allow for future dynamic method definition, parsing method names is
-    done via a dedicated keyword hash/scope.
-
-commit 6b95353ebdaa724252492f941ebe75f80e9e545a
-Author: Maria Matejka 
-Date:   Tue Jun 13 11:09:41 2023 +0200
-
-    Conf: Allowing conf scope to be explicitly read only
-
-commit 51f2e7afaf069508685281e8c1b8bb1ceda79d8f
-Author: Maria Matejka 
-Date:   Tue Jun 13 10:51:03 2023 +0200
-
-    Conf: Symbol manipulation gets its context explicitly
-
-commit 5951dfbd5ed21d973e7627740c069d6612d7b899
-Author: Maria Matejka 
-Date:   Mon Jun 12 11:37:50 2023 +0200
-
-    Filter: any lvalue can get its methods called
-
-commit ae8ecafda9e28bfd417795fbb43408d6857df76d
-Author: Maria Matejka 
-Date:   Mon Jun 12 11:20:49 2023 +0200
-
-    Filter: split out dot-notation methods to separate targets
-    
-    This is just a preparationary refactoring to allow type-based method
-    tables.
-
-commit 58efa94460381309c754a3162df257ae043c2cbd
-Author: Maria Matejka 
-Date:   Fri Jun 9 12:49:19 2023 +0200
-
-    Conf: Keywords have their default symbols
-    
-    This avoids unnecessary collapsed soft scopes caused by keyword symbol multiallocation.
-
-commit 8e177cf35b582ec973c1abce4709c80847adb711
-Author: Maria Matejka 
-Date:   Mon May 2 20:29:03 2022 +0200
-
-    Conf: Symbol hashes for all scopes
-    
-    This is a backport cherry-pick of commits
-      165156beeb2926472bbceca3c103aacc3f81a8cc
-      cce974e8ea992d0e6d2f649eca7880b436d91d71
-    
-    from the v3.0 branch as we need symbol hashes directly inside their
-    scopes for more general usage than before.
-
-commit a5a6de581b79641b21b26277580cb4cc118da7ea
-Author: Maria Matejka 
-Date:   Fri Jun 9 11:02:05 2023 +0200
-
-    Dropping empty-type const f_vals, they were copied anyway
-
-commit 86598183917cd9ff1d21900e0d8cc18dd1e791e1
-Author: Maria Matejka 
-Date:   Fri Jun 9 13:49:17 2023 +0200
-
-    Conf: Adding dummy thread-number setting for easier sharing of configuration between v2 and v3
-
-commit aa70e14c9e4cfeb70d2dc9cee497c40057dc105e
-Author: Ondrej Zajicek 
-Date:   Tue Aug 29 18:23:29 2023 +0200
-
-    BFD: Improve handling of AdminDown
-    
-    According to RFC 5882, system should not interpret the local or remote
-    session state transition to AdminDown as failure. We followed that for
-    the local session state but not for the remote session state (which
-    just triggered a transition of the local state to Down). The patch
-    fixes that.
-    
-    We do not properly generate AdminDown on our side, so the patch is
-    relevant just for interoperability with other systems.
-    
-    Thanks to Sunnat Samadov for the bugreport.
-
-commit 510b1046e186a913ea4195d27009e95794dd1e51
-Author: Maria Matejka 
-Date:   Mon Aug 28 15:36:40 2023 +0200
-
-    Hostentry application locking
-    
-    Due to a race condition between rta_apply_hostentry() and rt_update_hostentry(),
-    happening when a new route is inserted to a table, this commit makes it mandatory
-    to lock the next hop resolution table while resolving the next hop.
-    
-    This may be slow, we'll fix it better in some future release
-
-commit f5140d1027f514bc59d46ab8aa09181f5870afbd
-Author: Ondrej Zajicek 
-Date:   Tue Dec 13 19:31:46 2022 +0100
-
-    Conf: Allow keywords to be redefined by user symbols
-    
-    Most syntactic constructs in BIRD configuration (e.g. protocol options)
-    are defined as keywords, which are distinct from symbols (user-defined
-    names for protocols, variables, ...). That may cause backwards
-    compatibility issue when a new feature is added, as it may collide with
-    existing user names.
-    
-    We can allow keywords to be shadowed by symbols in almost all cases to
-    avoid this issue.
-    
-    This replaces the previous mechanism, where shadowable symbols have to be
-    explictly added to kw_syms.
-
-commit cce48c6cdd9484c606879ea76d4c633fce12ba36
-Author: Ondrej Zajicek 
-Date:   Fri Aug 25 23:14:36 2023 +0200
-
-    Filter: Add separate instruction for uninitialized variable declaration
-    
-    The previous approach (use VOID constant for variable initialization)
-    failed due to dynamic type check failure.
-    
-    Thanks to Alexander Zubkov  for the bugreport.
-
-commit 116285f2b000a4b78044f1bcf1eb1d6655f1d2fe
-Author: Ondrej Zajicek 
-Date:   Fri Aug 25 04:32:01 2023 +0200
-
-    RPKI: Fix conflict in config grammar
-
-commit 32427c9ce119df5457d3d2c6e677429e31a5edad
-Author: Ondrej Zajicek 
-Date:   Fri Aug 25 04:29:32 2023 +0200
-
-    Nest: Fix missing bar in kw_sym
-    
-    Thanks to Alexander Zubkov for the notice.
-
-commit 9d8e4b01bc53d684f5a5b3230c371382860de58b
-Author: Alexander Zubkov 
-Date:   Thu Aug 24 18:04:33 2023 +0200
-
-    Doc: Document bytestring type
-
-commit cbb43d6ff31fcae8a682659ec514cbea21ee4e25
-Author: Alexander Zubkov 
-Date:   Thu Aug 24 17:41:51 2023 +0200
-
-    Doc: Document RAdv "custom option" configuration definition
-
-commit 7776e47e321e0561a0ae8934a2d1f6414bce9002
-Author: Maria Matejka 
-Date:   Mon Aug 21 15:37:09 2023 +0200
-
-    Config obstacles are lockless now
-
-commit f411a19bb0467cfc421f8aa6f5ead49972bab058
-Author: Ondrej Zajicek 
-Date:   Thu Aug 24 16:59:23 2023 +0200
-
-    Conf: Use nonterminal bytestring instead of BYTETEXT
-    
-    Nonterminal bytestring allows to provide expressions to be evaluated in
-    places where BYTETEXT is used now: passwords, radv custom option.
-    
-    Based on the patch from Alexander Zubkov , thanks!
-
-commit 0dbcc927260c6da918fa1bd78c86800e41ab05a8
-Author: Alexander Zubkov 
-Date:   Thu Aug 24 04:45:55 2023 +0200
-
-    Filter: Use more generic approach for intra-config expressions
-    
-    Replace f_eval_int() function with a type-generic variant: cf_eval().
-    Implement similar fuction: cf_eval_int() via inline call to cf_eval().
-
-commit fc3547880aafad726509f0514df2d5e0bb140728
-Author: Alexander Zubkov 
-Date:   Thu Aug 24 04:30:42 2023 +0200
-
-    Filter: Add bytestring type
-    
-     - Rename BYTESTRING lexem to BYTETEXT, not to collide with 'bytestring' type name
-     - Add bytestring type with id T_BYTESTRING (0x2c)
-     - Add from_hex() filter function to create bytestring from hex string
-     - Add filter test cases for bytestring type
-    
-    Minor changes by committer.
-
-commit eddc0ffdab239c61cc0e064b6ebd33dfadcef3cd
-Author: Ondrej Zajicek 
-Date:   Thu Aug 24 03:04:58 2023 +0200
-
-    Lib: Add functions for reading and writing of bytestrings
-    
-    Based on patch from Alexander Zubkov, thanks!
-
-commit e3c0eca95642a846ab65261424a51dd99d954017
-Author: Ondrej Zajicek 
-Date:   Wed Aug 23 15:55:31 2023 +0200
-
-    Nest: Treat VRF interfaces as inside respective VRFs
-    
-    Despite not having defined 'master interface', VRF interfaces should be
-    treated as being inside respective VRFs. They behave as a loopback for
-    respective VRFs. Treating the VRF interface as inside the VRF allows
-    e.g. OSPF to pick up IP addresses defined on the VRF interface.
-    
-    For this, we also need to tell apart VRF interfaces and regular interfaces.
-    Extend Netlink code to parse interface type and mark VRF interfaces with
-    IF_VRF flag.
-    
-    Based on the patch from Erin Shepherd, thanks!
-
-commit 5121101136cb80151a9361c63dc4822afeb44eef
-Merge: d2dbe8546 4558adabf
-Author: Ondrej Zajicek 
-Date:   Tue Aug 22 15:28:05 2023 +0200
-
-    Merge branch 'bmp'
-
-commit d2dbe854631813eae9fbf3e264ced4460ea4c432
-Author: Jakub Ružička 
-Date:   Tue Aug 22 14:13:55 2023 +0200
-
-    RPM: Sync bird.spec from Fedora dist-git
-    
-    It seems all Fedora packages are built from epel7 branch.
-
-commit 31ef5645e9155365db96705b847968008d378658
-Author: Jakub Ružička 
-Date:   Wed Apr 26 17:26:30 2023 +0200
-
-    Distro: Add apkg packaging test
-    
-    The test was written by Maria Matejka, thanks!
-    
-    Run this using
-    
-        apkg test
-
-commit 215f7161c426975ca821f5d3c1866889287dcdbc
-Author: Jakub Ružička 
-Date:   Fri May 21 04:48:27 2021 +0200
-
-    Distro: Add apkg compat level
-    
-    This will allow compatibility on future apkg config updates.
-
-commit 5fb871def46c9fc0d0e02d5bf1f2c8f76c40dc30
-Author: Jakub Ružička 
-Date:   Wed May 3 14:13:21 2023 +0200
-
-    Debian: Fix for arm64 cross build
-    
-    Mirrors debian patch.
-
-commit 5fe00df693a7a06888d6fba2a967fe0ca04f29ae
-Author: Jakub Ružička 
-Date:   Thu Oct 20 18:47:09 2022 +0200
-
-    Debian: Use {{ now }} in changelog
-
-commit 2b4ab79de1f5afdfd821689e81883db662f433c6
-Author: Jakub Ružička 
-Date:   Wed Feb 22 19:01:31 2023 +0100
-
-    Debian: Bump compat level to 11
-    
-    Current is 13, remaining blockers:
-    
-    - Debian 9 @ 11 (EOL)
-    - Ubuntu 18.04 @ 12 (EOL 2023-04-02)
-
-commit b983b5916594731b5af1ed8f7ef12c64ce36e7fb
-Author: Jakub Ružička 
-Date:   Tue Feb 7 19:20:52 2023 +0100
-
-    Debian: Sync packaging with Debian
-
-commit b0c3c286a54050b56af0c0fe398e0761cc320581
-Author: Jakub Ružička 
-Date:   Tue Feb 7 19:19:57 2023 +0100
-
-    Debian: Add birdcl manpage
-    
-    Mirrors Debian package change.
-
-commit ad514e603329807e28ddda6beaaa3ebc8f36b069
-Author: Jakub Ružička 
-Date:   Thu May 20 18:07:46 2021 +0200
-
-    RPM: Add missing BuildRequires: autoconf
-
-commit fea04d7c34b92d854cfcd4cc3db2dcba60caba7b
-Author: Alexander Zubkov 
-Date:   Tue Aug 22 14:44:18 2023 +0200
-
-    Use more proper pointers to constant bytestrings
-
-commit 9bf20484764364b9f32bef0a3a7f877abbc29914
-Author: Ondrej Zajicek 
-Date:   Tue Aug 22 14:20:59 2023 +0200
-
-    BGP: Update RFC reference
-    
-    RFC 5549 was obsoleted by RFC 8950.
-
-commit 4558adabfbbe3696156d20767168010d6238f434
-Author: Ondrej Zajicek 
-Date:   Tue Aug 22 01:24:21 2023 +0200
-
-    BMP: Improve peer_down handling
-    
-    Move all bmp_peer_down() calls to one place and make it synchronous with
-    BGP session down, ensuring that BMP receives peer_down before route
-    withdraws from flushing.
-    
-    Also refactor bmp_peer_down_() message generating code.
-
-commit 52641e086675832e9f43f86237b0cddbd5ec551e
-Author: Ondrej Zajicek 
-Date:   Mon Aug 21 04:20:32 2023 +0200
-
-    BMP: Use generic channel feed instead of direct walk over rtable
-    
-    Now we use rt_notify() and channels for both feed and notifications,
-    in both import tables (pre-policy) and regular tables (post-policy).
-    
-    Remove direct walk in bmp_route_monitor_snapshot().
-
-commit ef6ab5ce86af925ee10687fde4e62912fb892433
-Author: Ondrej Zajicek 
-Date:   Mon Aug 21 04:17:21 2023 +0200
-
-    Nest: Use generic rte_announce() also for import tables
-    
-    Remove special rte_announce_in(), so we can use generic rte_announce()
-    for bot feed and notifications.
-
-commit c40f29a79035b54a8b48ece0e91d38d9066529e3
-Author: Ondrej Zajicek 
-Date:   Fri Aug 18 15:39:08 2023 +0200
-
-    BMP: Fix route timestamps
-
-commit f4deef89bebae6e41654217e20f2a7531c65bf49
-Author: Ondrej Zajicek 
-Date:   Fri Aug 18 03:53:58 2023 +0200
-
-    BMP: Refactor route monitoring
-    
-     - Manage BMP state through bmp_peer, bmp_stream, bmp_table structures
-     - Use channels and rt_notify() hook for route announcements
-     - Add support for post-policy monitoring
-     - Send End-of-RIB even when there is no routes
-     - Remove rte_update_in_notify() hook from import tables
-     - Update import tables to support channels
-     - Add bmp_hack (no feed / no flush) flag to channels
-
-commit aec21cda249f9460d63c14ca83a9fa4210bcc20d
-Author: Ondrej Zajicek 
-Date:   Tue Aug 1 18:39:38 2023 +0200
-
-    BMP: Remove useless buffer
-
-commit 8ded8baba2a95cec81f20b10160c81d229f8fae8
-Author: Ondrej Zajicek 
-Date:   Tue Aug 1 17:56:56 2023 +0200
-
-    BMP: Simplify route monitoring hooks
-    
-    No need for *_begin(), *_commit(), and *_end() hooks. The hook *_notify()
-    is sufficient for everything.
-
-commit ecbae010bf057dbaf0ec46e888fb7446fee9c736
-Author: Alexander Zubkov 
-Date:   Fri Jun 30 13:16:09 2023 +0200
-
-    Fixed a typo in documentation
-    
-    The problem was the "/" symbol in the prefix mask that finished the formatting definition prematurely.
-
-commit ccfa48a24aea64d1a844fb97cfe15965197c0908
-Author: Alexander Zubkov 
-Date:   Mon Jun 26 15:35:22 2023 +0200
-
-    RAdv: Use new syntax for custom options
-    
-    And use WALK_LIST macro
-
-commit 9c81250c04798fd274ae9d77380e93b941ac2d7f
-Author: Alexander Zubkov 
-Date:   Fri Jun 23 17:21:05 2023 +0200
-
-    RAdv: Add custom options
-    
-    Currently one can use only a predefined set of advertised options in RAdv
-    protocol, which are supported by BIRD configuration. It would be convenient
-    to be able to specify other possible options at least manually as a blob
-    so one should not wait until it is supported in the code, released, etc.
-    
-    This idea is inspired by presentation by Ondřej Caletka at CSNOG, in which
-    he noticed the lack of either PREF64 option or possibility to add custom
-    options in various software.
-    
-    The patch makes it possible to define such options with the syntax:
-    
-      other type  
-
-commit 65d6a525944faa3f77041419991d77106d8f0a0d
-Author: Alexander Zubkov 
-Date:   Fri Jun 23 16:47:37 2023 +0200
-
-    Add hex:XYZ syntax for short hex strings
-    
-    Hexadecimal bytestring literals have minimal length to not collide
-    with IP addresses or regular (hexadecimal) number literals.
-    
-    Allow to use shorter literals with explicit hex: prefix.
-
-commit 5f2ecb2298a6fe4b2fcd9efc0b39c36202496c2c
-Merge: f8bcb037b 52bae235b
-Author: Maria Matejka 
-Date:   Thu Jun 22 17:25:18 2023 +0200
-
-    Merge tag 'v2.13.1'
-
-commit 52bae235b716a3c8d629ddf1306178568c69833f
-Author: Maria Matejka 
-Date:   Thu Jun 22 16:14:12 2023 +0200
-
-    NEWS and version update
-
-commit 1499a335f6f44a0fd85365e404c2a11842d7f75c
-Author: Maria Matejka 
-Date:   Thu Jun 22 16:07:28 2023 +0200
-
-    Filter: Fixed segfault when a case option had an empty block
-    
-    Thanks to Kobayashi_Bairuo  for reporting.
-
-commit ac7341a18146bf0f0b2c60477c4292a9cd428a87
-Author: Ondrej Zajicek 
-Date:   Fri May 19 01:02:57 2023 +0200
-
-    BGP: Fix role check when no capability option is present
-    
-    When an OPEN message without capability options was parsed, the remote
-    role field was not initialized with the proper (non-zero) default value,
-    so it was interpreted as if 'provider' was announced.
-    
-    Thanks to Mikhail Grishin for the bugreport.
-
-commit f8bcb037b5b71a19209f1b63d52895c8c34c675b
-Author: Luiz Amaral 
-Date:   Thu Jun 15 15:01:50 2023 +0200
-
-    Netlink: Allow RTA_VIA even without MPLS support
-    
-    It is necessary for IPv4 over IPv6 nexthop support on FreeBSD,
-    and RTA_VIA is not really related to MPLS.
-    
-    It breaks build for some very old systems like Debian 8 and CentOS 7,
-    but we generally do not support older kernels than 4.14 LTS anyway.
-
-commit 90f417604518cbaa6f5b8a833352d73c51e53e57
-Author: Ondrej Zajicek 
-Date:   Thu Jun 15 15:50:18 2023 +0200
-
-    CI: Remove obsolete CI targets
-    
-    Remove build-debian-8, build-ubuntu-14_04, build-centos-7, pkg-debian-9,
-    and pkg-centos-7 targets.
-    
-    Debian 8, Ubuntu 14.04, and CentOS 7 have unsupported kernels, Debian 9
-    has okay kernel, but is EOL.
-
-commit 43d41d8449a4eb196422d6d309dbea998d920541
-Author: Ondrej Zajicek 
-Date:   Thu Jun 8 05:10:05 2023 +0200
-
-    BMP: Ensure that bmp_fire_tx() does nothing when not up
-
-commit e8838d930cd5c875f32aa2b7da5d84995b14ccac
-Author: Ondrej Zajicek 
-Date:   Thu Jun 8 04:56:41 2023 +0200
-
-    BMP: Support multiple instances of BMP protocol
-    
-    Add internal BMP functions with plicit bmp_proto *p as first argument,
-    which allows using TRACE() macro. Keep list of BMP instances and call
-    internal functions. Old BMP functions are wrappers that call internal
-    functions for all enabled BMP instances.
-    
-    Extract End-of-RIB mark into separate function.
-    
-    Based on patch from Michal Zagorski . Thanks!
-
-commit 69372dc9aa8b234b79999c4cdcdfa3aa05e3a672
-Author: Ondrej Zajicek 
-Date:   Fri Jun 2 02:34:05 2023 +0200
-
-    Babel: Minor changes to RTT formatting
-    
-    Use existing %t printf code and move 'ms' in CLI output to table header.
-
-commit f08abcb8dda6ff488fa1b52314a67d97aee059d7
-Author: Toke Høiland-Jørgensen 
-Date:   Fri Jun 2 00:31:53 2023 +0200
-
-    Babel: Add support for the RTT extension
-    
-    This adds support to the Babel protocol for the RTT extension specified
-    in draft-ietf-babel-rtt-extension. While this extension is not yet at the
-    RFC stage, it is one of the more useful extensions to Babel[0], so it
-    seems worth having in Bird as well.
-    
-    The extension adds timestamps to Hello and IHU TLVs and uses these to
-    compute an RTT to each neighbour. An extra per-neighbour cost is then
-    computed from the RTT based on a minimum and maximum interval and cost
-    value specified in the configuration. The primary use case for this is
-    improving routing in a geographically distributed tunnel-based overlay
-    network.
-    
-    The implementation follows the babeld implementation when picking
-    constants and default configuration values. It also uses the same RTT
-    smoothing algorithm as babeld, and follows it in adding a new 'tunnel'
-    interface type which enables RTT by default.
-    
-    [0] https://alioth-lists.debian.net/pipermail/babel-users/2022-April/003932.html
-
-commit d8cf3cad5104ab7a9887397b2a34d94c8a5f2aef
-Author: Toke Høiland-Jørgensen 
-Date:   Fri Jun 2 00:26:41 2023 +0200
-
-    IO: Add current_time_now() function for immediate timestamp
-    
-    Add a current_time_now() function which gets an immediate monotonic
-    timestamp instead of using the cached value from the event loop. This is
-    useful for callers that need precise times, such as the Babel RTT
-    measurement code.
-    
-    Minor changes by committer.
-
-commit 0799fc99abb523432bc3f903f6a32eafbe37d043
-Author: Ondrej Zajicek 
-Date:   Wed May 31 18:32:53 2023 +0200
-
-    BMP: Fix bug in buffer resize
-    
-    The buffer code in bmp_buffer_grow(), reuse the MRT buffer handling code.
-    
-    Based on comments by Michal Zagorski , Thanks!
-
-commit e8be7a7080be2ffd800ead5377b06c7a535b564a
-Author: Ondrej Zajicek 
-Date:   Wed May 31 17:41:53 2023 +0200
-
-    BMP: Proper reconfiguration and protocol status
-    
-    Based on patches from Michal Zagorski  co-authored
-    with Pawel Maslanka . Thanks!
-
-commit 1e45e2aa4e173869be071bfa28057d8b52e8948c
-Author: Ondrej Zajicek 
-Date:   Tue May 30 17:23:56 2023 +0200
-
-    BMP: Add station address check
-    
-    Also, do not initialize it to IPA_NONE4, use regular IPA_NONE.
-
-commit 62d8fbdc1cb3d358b0d20d7b10bd3f17f357d567
-Author: Michal Zagorski 
-Date:   Tue May 30 17:09:25 2023 +0200
-
-    BMP: Add local address option
-    
-    Also remove unused local and ip_post_policy options.
-    
-    Co-authored with Pawel Maslanka .
-    
-    Minor changes by committer.
-
-commit ae4d934c53cdc4cc5ec3d4535cd5138fdf9b25cb
-Author: Ondrej Zajicek 
-Date:   Tue May 30 15:52:01 2023 +0200
-
-    BMP: Minor formatting cleanups
-    
-    Based on patches from Michal Zagorski  co-authored
-    with Pawel Maslanka . Thanks!
-
-commit c1821a9aba3c7fbdb48cee7d86e4661317900a0a
-Author: Ondrej Zajicek 
-Date:   Tue May 30 15:37:52 2023 +0200
-
-    BGP: Improve bgp_create_update_bmp()
-    
-    Fix issue with missing AF cap (e.g. IPv4 unicast when no capabilities
-    are announced).
-    
-    Add Linpool save/restore action similar to bgp_create_update().
-    
-    Based on patch from Michal Zagorski  co-authored
-    with Pawel Maslanka . Thanks!
-
-commit 5ba9878b4f74a375d54a2d79a5ab80c7f1d0c466
-Author: Maria Matejka 
-Date:   Mon May 29 19:32:26 2023 +0200
-
-    BFD: Fixed reconfiguration issues
-    
-    After converting BFD to the new IO loop system, reconfiguration never
-    really worked. Sadly, we missed this case in our testing suite so it
-    passed under the radar for quite a while.
-    
-    Thanks to Andrei Dinu  for reporting and
-    isolating this issue.
-
-commit f8ba82804faba5cc1520d4545330502e29b9e920
-Author: Ondrej Zajicek 
-Date:   Fri May 19 01:02:57 2023 +0200
-
-    BGP: Fix role check when no capability option is present
-    
-    When an OPEN message without capability options was parsed, the remote
-    role field was not initialized with the proper (non-zero) default value,
-    so it was interpreted as if 'provider' was announced.
-    
-    Thanks to Mikhail Grishin for the bugreport.
-
-commit b0e97617d98ed02235de37b7e498d81f01330b50
-Author: Ondrej Zajicek 
-Date:   Thu May 18 15:55:45 2023 +0200
-
-    Lib: Improve IP/net hashing
-    
-    Backport some changes from branch oz-parametric-hashes. Replace naive
-    hash function for IPv6 addresses, fix hashing of VPNx (where upper half
-    of RD was ignored), fix hashing of MPLS labels (where identity was used).
-
-commit 3cf91fb9eb5e6aa51e63edcd237ee266373aec79
-Author: Ondrej Zajicek 
-Date:   Tue May 16 13:25:48 2023 +0200
-
-    Nest: Add tests and benchmark for FIB
-    
-    Basic fib_get() / fib_find() test for random prefixes, FIB_WALK() test,
-    and benchmark for fib_find(). Also generalize and reuse some code from
-    trie tests.
-
-commit 6a3e5c2ae81540ec55ec4e642b50e8db5293c0f6
-Author: Maria Matejka 
-Date:   Sat May 13 20:33:35 2023 +0200
-
-    Fixed abort when running in foreground but stdin is closed
-    
-    A forgotten else-clause caused BIRD to treat some pseudo-random place in
-    memory as fd-pair. This was happening only on startup of the first
-    thread in group and the value there in memory was typically zero ... and
-    writing to stdin succeeded.
-    
-    When running BIRD with stdin not present (like systemd does), it died on
-    this spurious write. Now it seems to work correctly.
-    
-    Thanks to Daniel Suchy  for reporting.
-    
-    http://trubka.network.cz/pipermail/bird-users/2023-May/016929.html
-
-commit deb303a451d38fad10ebcf66a7f3dac9f05079fa
-Author: Maria Matejka 
-Date:   Thu May 11 11:37:48 2023 +0200
-
-    NEWS and version update
-
-commit 92d934f0d191e56c3fe172b40cfcc2dd49087bdb
-Author: Maria Matejka 
-Date:   Tue May 9 23:31:47 2023 +0200
-
-    Fix use-after free in thread stopping code
-
-commit 794f555f63cc662c73e9113fd1eff2ebba4e50ff
-Author: Maria Matejka 
-Date:   Mon May 8 18:57:32 2023 +0200
-
-    BGP: fix listen socket cleanup
-
-commit 2623b7ba5d2bc52640fe875fd8b02ec6c54cf7a2
-Author: Maria Matejka 
-Date:   Mon May 8 15:13:49 2023 +0200
-
-    ID Maps are checking whether their pool is locked
-
-commit fcbf22d1f62851fbb710bdb2bafb609d9b62b491
-Author: Maria Matejka 
-Date:   Mon May 8 13:09:02 2023 +0200
-
-    Properly protecting the route src global index by RCU read lock and atomic operations
-    
-    There was a bug occuring when one thread sought for a src by its global id
-    and another one was allocating another src with such an ID that it caused
-    route src global index reallocation. This brief moment of inconsistency
-    led to a rare use-after-free of the old global index block.
-
-commit b36d2847887b8e398885d4401ce3e7d23ad4b4c5
-Author: Maria Matejka 
-Date:   Sun May 7 23:40:38 2023 +0200
-
-    Threads take loops faster
-
-commit a818a3011e6543f6e224e37fb8eb46f64bafa490
-Author: Maria Matejka 
-Date:   Sun May 7 23:04:47 2023 +0200
-
-    Channel: configurable feed block size
-
-commit bb28b16fd6b9173ffdfaedddb3b2fd6de772674f
-Author: Maria Matejka 
-Date:   Sun May 7 21:39:05 2023 +0200
-
-    BGP: proactively rehash prefix hash up to shorten collision lists
-
-commit 318ac8720fcf5ab14ef794d36947870abb7d85f9
-Author: Maria Matejka 
-Date:   Sun May 7 17:30:33 2023 +0200
-
-    OLocks in BGP must be freed early
-
-commit cb51ff1fbb83c15fece1f6c4fa3e538dc137d186
-Author: Maria Matejka 
-Date:   Fri May 5 20:35:55 2023 +0200
-
-    IO Loop / Thread Groups Lock moved to level -attrs- to allow for page allocation while locked
-
-commit 62432affd97b94f257471bd562fc6c680d5a79c3
-Author: Maria Matejka 
-Date:   Fri May 5 16:08:50 2023 +0200
-
-    Fixed loop movement to not collide on LTT_MOVE
-
-commit e0c09e6bee8e9bd8686d8165d819a488dc3e09f8
-Author: Maria Matejka 
-Date:   Fri May 5 15:19:14 2023 +0200
-
-    Fix loop dropping routines
-
-commit a95141111c89803347c36501185a76fc73a9764a
-Author: Maria Matejka 
-Date:   Fri May 5 09:39:13 2023 +0200
-
-    Fixed a bug in hot page global storage
-    
-    The original algorithm was suffering from an ABA race condition:
-    
-    A: fp = page_stack
-    B: completely allocates the same page and writes into it some data
-    A: unsuspecting, loads (invalid) next = fp->next
-    B: finishes working with the page and returns it back to page_stack
-    A: compare-exchange page_stack: fp => next succeeds and writes garbage
-    to page_stack
-    
-    Fixed this by using an implicit spinlock in hot page allocator.
-
-commit 00f30ac40bda76b289b1dc5c5aa8a5d2e4941985
-Author: Maria Matejka 
-Date:   Wed May 3 19:01:19 2023 +0200
-
-    Debug: keep a circular log of memory page operations
-
-commit 1e998a434909b6ad5506c4b0084b7ad1ef3da2b1
-Author: Maria Matejka 
-Date:   Wed May 3 18:59:52 2023 +0200
-
-    Fixed cold page cache leak
-    
-    The empty_pages pointer wasn't being propagated into the ->next pointer
-    when more empty_pages were to be stored
-
-commit ed91d884d3f31eb0185c68d4cf1237cf56ed579e
-Author: Maria Matejka 
-Date:   Mon May 1 14:20:27 2023 +0200
-
-    Hostentry: fix pool locking
-
-commit 7d8e54105713ee29c03c9aea108c3a6880836dcd
-Author: Maria Matejka 
-Date:   Mon May 1 15:10:53 2023 +0200
-
-    Linpool state save and restore refactoring
-
-commit b21909c6ee9dee131a9177a003c6d97cfb6fe1e0
-Author: Maria Matejka 
-Date:   Mon May 1 14:21:26 2023 +0200
-
-    Debug: Explicit mprotect() on freed pages to better locate use-after-free bugs
-
-commit fac64056696680a21f1121d15620969876407ef7
-Author: Maria Matejka 
-Date:   Wed May 3 21:39:36 2023 +0200
-
-    Page allocator: indentation of messy ifdef blocks
-
-commit fa973c2c153eaaa1abcef8d0f52a0b1fd68c37d8
-Author: Maria Matejka 
-Date:   Sun Apr 30 22:17:42 2023 +0200
-
-    First try of loop balancing
-    
-    If a thread encounters timeout == 0 for poll, it considers itself
-    "busy" and with some hysteresis it tries to drop loops for others to
-    pick and thus better distribute work between threads.
-
-commit 9f25dd79b8e9fdea9050c9f7e3a10cea8791d745
-Author: Maria Matejka 
-Date:   Fri Apr 28 23:48:03 2023 +0200
-
-    Allocation from linpools and slabs requires the appropriate lock to be taken
-
-commit 010c26c29602d52e704ea7cb83f2f6acacbddd0d
-Author: Maria Matejka 
-Date:   Fri Apr 28 12:32:41 2023 +0200
-
-    Linpool flushes unused pages even on lp_restore()
-
-commit 91471531a1a7c9a4794731d5ed327e7ab7861ffa
-Author: Maria Matejka 
-Date:   Thu Apr 27 12:38:50 2023 +0200
-
-    Fixed race condition in hostentry allocation
-
-commit 9bc5cbd3c74a20a0071ce87884bfb217c0aacb8d
-Author: Maria Matejka 
-Date:   Thu Apr 27 11:02:02 2023 +0200
-
-    Show threads: Fixed problems with CLI buffer reallocation
-    
-    ... by allocating all the output locally and then sending it out at
-    once.
-
-commit 8bc27583ff6d5d8f6789ca1b3d628c967f24a13a
-Author: Maria Matejka 
-Date:   Thu Apr 27 10:42:11 2023 +0200
-
-    Explicitly counting loops and threads
-
-commit 9c2231061212c24de1466b235486c4ee0ec8dc0f
-Author: Maria Matejka 
-Date:   Wed Apr 26 22:24:42 2023 +0200
-
-    Loop spent time refactored to separate structures and functions
-
-commit aa3c35498d3c5ae7ec7fd34bf8758652fc2748f1
-Author: Ondrej Zajicek 
-Date:   Mon May 1 03:35:21 2023 +0200
-
-    BMP: Use OPEN messages stored in BGP
-    
-    The BMP protocol needs OPEN messages of established BGP sessions to
-    construct appropriate Peer Up messages. Instead of saving them internally
-    we use OPEN messages stored in BGP instances. This allows BMP instances
-    to be restarted or enabled later.
-    
-    Because of this change, we can simplify BMP data structures. No need to
-    keep track of BGP sessions when we are not started. We have to iterate
-    over all (established) BGP sessions when the BMP session is established.
-    This is just a scaffolding now, but some kind of iteration would be
-    necessary anyway.
-    
-    Also, the commit cleans up handling of msg/msg_length arguments to be
-    body/body_length consistently in both rx/tx and peer_up/peer_down calls.
-
-commit 1be0be1b71f0127740a4aa6f35d4a256d6c34fb9
-Author: Ondrej Zajicek 
-Date:   Fri Apr 28 19:13:56 2023 +0200
-
-    BGP: Save sent and received OPEN messages
-    
-    These are necessary for BMP Peer UP message and it is better to keep them
-    in BGP than in BMP (so BMP could be restarted or added later).
-
-commit a8a64ca0fed41c78376b27880e934296bd3c3a7f
-Author: Ondrej Zajicek 
-Date:   Thu Apr 27 18:20:49 2023 +0200
-
-    Conf: Improve handling of keywords
-    
-    For whatever reason, parser allocated a symbol for every parsed keyword
-    in each scope. That wasted time and memory. The effect is worsened with
-    recent changes allowing local scopes, so keywords often promote soft
-    scopes (with no symbols) to real scopes.
-    
-    Do not allocate a symbol for a keyword. Take care of keywords that could
-    be promoted to symbols (kw_sym) and do it explicitly.
-
-commit 9b471e72d75c154f3b8c4fa134c7c9f1a55fe27f
-Author: Ondrej Zajicek 
-Date:   Thu Apr 27 17:09:00 2023 +0200
-
-    Conf: Fix symbol lookup
-    
-    The symbol table used just symbol name as a key, and used a trick with
-    active flag to find symbols in active scopes with one hash table lookup.
-    
-    The disadvantage is that it can degenerate to O(n) for negative queries
-    in situations where are many symbols with the same name in different
-    scopes.
-    
-    Thanks to Yanko Kaneti for the bugreport.
-
-commit ab83bab9d1c51e4102f6626430e0e1b2b7f1e53a
-Author: Maria Matejka 
-Date:   Wed Apr 26 19:34:29 2023 +0200
-
-    Loops track also locking time
-
-commit 2ddb34c9d18bc4e793c04658b7bec243e35d6b17
-Author: Maria Matejka 
-Date:   Wed Apr 26 19:10:52 2023 +0200
-
-    IO loops now actually measuring their time (show threads all works)
-
-commit ce7495b49a5192b1cba17fd88cdb2495a40824e2
-Author: Maria Matejka 
-Date:   Mon Apr 24 16:10:59 2023 +0200
-
-    Refactoring of domains connected to pools
-
-commit 19e79eb8adddb6194248974443b9a906f66984ce
-Author: Maria Matejka 
-Date:   Mon Apr 24 11:35:05 2023 +0200
-
-    Fix of failing show threads command
-
-commit db2b67268c133d26c4d7971369a5515efa2f3b60
-Merge: fa8848aca d61505b03
-Author: Maria Matejka 
-Date:   Mon Apr 24 10:40:53 2023 +0200
-
-    Merge commit 'd61505b039bf0aa6697e28b2a4e07907c89ba1fb' into thread-next
-
-commit fa8848aca3f0473412f3ae6288d71dee8458bcfa
-Merge: 942d3cbcd 22f54eaee
-Author: Maria Matejka 
-Date:   Mon Apr 24 10:39:13 2023 +0200
-
-    Merge branch 'mq-resource-locking' into thread-next
-
-commit 942d3cbcdd548a73ecc1915a97e297e9bf0bb5e6
-Author: Maria Matejka 
-Date:   Mon Apr 24 10:39:08 2023 +0200
-
-    Removed duplicate version 3.0-alpha0 news
-
-commit 22f54eaee6c6dbe12ad7bb0ee1da09e3e026b970
-Author: Maria Matejka 
-Date:   Fri Apr 21 15:26:06 2023 +0200
-
-    Resource pools are now bound with domains.
-    
-    Memory allocation is a fragile part of BIRD and we need checking that
-    everybody is using the resource pools in an appropriate way. To assure
-    this, all the resource pools are associated with locking domains and
-    every resource manipulation is thoroughly checked whether the
-    appropriate locking domain is locked.
-    
-    With transitive resource manipulation like resource dumping or mass free
-    operations, domains are locked and unlocked on the go, thus we require
-    pool domains to have higher order than their parent to allow for this
-    transitive operations.
-    
-    Adding pool locking revealed some cases of insecure memory manipulation
-    and this commit fixes that as well.
-
-commit 6230d87c74e3629e21f1e0fe22a874a58302a01e
-Author: Maria Matejka 
-Date:   Sat Apr 22 21:20:19 2023 +0200
-
-    Protocols and tables now use the birdloop pools as primary
-
-commit 1141ce4e2d924f29e6e31ccf5e325f870c8895dd
-Author: Maria Matejka 
-Date:   Thu Apr 20 21:08:38 2023 +0200
-
-    Resource pool closing has its dedicated function
-
-commit b3f805ce29487f790090fcf31096f5a7cf1d585d
-Author: Maria Matejka 
-Date:   Thu Apr 20 21:06:42 2023 +0200
-
-    Socket closing has its dedicated function
-
-commit 074739e0e9baaba53f2a99edd348b76c3613b455
-Author: Maria Matejka 
-Date:   Wed Apr 19 21:18:12 2023 +0200
-
-    Global protocol list is typed to avoid typecast confusion
-
-commit 48dfcb60d61ab7aec478468bd50eb0196c332ee3
-Author: Maria Matejka 
-Date:   Wed Apr 19 21:02:20 2023 +0200
-
-    Typed lists: added add_after() and unit tests
-
-commit ca0f239c72486cebfe171e335e3b8a86f5999714
-Author: Ondrej Zajicek 
-Date:   Fri Apr 21 20:24:43 2023 +0200
-
-    NEWS and version update
-
-commit 1a1e13cc2fc2df82e2319b7beeb18bb8eb92fbd2
-Author: Ondrej Zajicek 
-Date:   Fri Apr 21 19:29:17 2023 +0200
-
-    Filter: Disable some trie formatting tests
-    
-    Trie formatting works slightly different with 4-way tries than with
-    16-way ones, so these tests generated false error. Block them for now.
-
-commit 2c809894dc194ecd2778b8b57771c5c67ae7bb6e
-Author: Ondrej Filip 
-Date:   Fri Apr 21 09:08:54 2023 +0200
-
-    Alpha0 news added
-
-commit 52450bc96dcedbc30cbb2e282c6706ad9e5e5774
-Merge: d61505b03 f3b599afe
-Author: Ondrej Zajicek 
-Date:   Fri Apr 21 04:47:55 2023 +0200
-
-    Merge branch 'bmp'
-
-commit f3b599afe5bde0c7f232421743041b305bb8afa7
-Author: Ondrej Zajicek 
-Date:   Fri Apr 21 04:42:13 2023 +0200
-
-    BMP: Add some basic documentation
-
-commit d61505b039bf0aa6697e28b2a4e07907c89ba1fb
-Author: Luiz Amaral 
-Date:   Fri Apr 21 01:37:30 2023 +0200
-
-    BSD: IPv4 over IPv6 nexthop support on FreeBSD
-    
-    The support for IPv4 routes with IPv6 nexthops was implemented in FreeBSD
-    13.1, this patch allows to import and export such routes from/to kernel.
-    
-    Minor change from committer.
-
-commit 335409248ea932e93ce4361564b8e92d0b83b071
-Author: Maria Matejka 
-Date:   Thu Apr 20 19:33:00 2023 +0200
-
-    Linpool: Fix lp_restore()
-    
-    When lp_save() is called on an empty linpool, then some allocation is
-    done, then lp_restore() is called, the linpool is restored but the used
-    chunks are inaccessible. Fix it.
-
-commit 976dec048a25fc22efb07fa73be1316c95046420
-Author: Ondrej Zajicek 
-Date:   Thu Apr 20 17:14:45 2023 +0200
-
-    BMP: Silence some log messages
-    
-    Hooks called from BGP to BMP should not log warning when BMP is not
-    connected, that is not an error (and we do not want to flood logs with
-    a ton of messages).
-    
-    Blocked sk_send() should not log warning, that is expected situation.
-    Error during sk_send() is handled in error hook anyway.
-
-commit 2c7d2141ac86b0d482d3221447d1ad920c557108
-Author: Ondrej Zajicek 
-Date:   Thu Apr 20 16:13:58 2023 +0200
-
-    BMP: Fix connection management
-    
-    Replace broken TCP connection management with a simple state machine.
-    Handle failed attempts properly with a timeout, detect and handle TCP
-    connection close and try to reconnect after that. Remove useless
-    'station_connected' flag.
-    
-    Keep open messages saved even after the BMP session establishment,
-    so they can be used after BMP session flaps.
-    
-    Use proper log messages for session events.
-
-commit 06963f96b363680380f83ccbb073d7e42f811afd
-Author: Maria Matejka 
-Date:   Wed Apr 19 17:52:52 2023 +0200
-
-    Typed lists keep an explicit pointer to the list head.
-    
-    This change adds one pointer worth of memory to every list node.
-    Keeping this information helps auditing the lists, checking that the
-    node indeed is outside of list or inside the right one.
-    
-    The typed lists shouldn't be used anywhere with memory pressure anyway,
-    thus the one added pointer isn't significant.
-
-commit 010df43519b12e83b0ff2cba9e344cba698586bb
-Author: Ondrej Zajicek 
-Date:   Tue Apr 18 18:57:54 2023 +0200
-
-    BMP: Fix reconfiguration
-    
-    It is not supported, but at least it must update internal config
-    pointer to not keep old one.
-
-commit 02164814b49a3385caae0ea10aa042487c6002d2
-Author: Ondrej Zajicek 
-Date:   Tue Apr 18 17:21:13 2023 +0200
-
-    BMP: Allow build without BMP and disable BMP build by default
-    
-    It has still several important issues to be enabled by default.
-
-commit fbeef4b74dfd73fb86b1ccc5dd1c6109e3c21624
-Author: Ondrej Zajicek 
-Date:   Tue Apr 18 15:13:24 2023 +0200
-
-    BMP: Move initialization to bmp_start()
-    
-    That fixes BMP socket allocation from an invalid pool.
-
-commit 04e3a76c9417d35acdfba96a11327e99000fe47d
-Author: Ondrej Zajicek 
-Date:   Tue Apr 18 15:09:21 2023 +0200
-
-    BMP: Fix missing template
-    
-    It is mandatory for protocol.
-
-commit 67fe3d096d57760af5f412240aaf79d63f5bbb44
-Author: Maria Matejka 
-Date:   Tue Apr 18 10:11:07 2023 +0200
-
-    Updated the version number to not include dash (breaks RPM)
-
-commit 9f0ef3045d2a0b0eafaa7a01c8c1b53b256b3d05
-Author: Maria Matejka 
-Date:   Tue Apr 18 09:52:12 2023 +0200
-
-    NEWS and version update
-
-commit d975827f5f3af5127f12c7c45c99b89c869d0f95
-Merge: 787fb56da 7404a2158
-Author: Maria Matejka 
-Date:   Tue Apr 18 09:43:06 2023 +0200
-
-    Merge tag '3.0-alpha0' into HEAD
-    
-    3.0-alpha0
-
-commit 787fb56da37bfe9da4ea8d1a5a0d0cab02c9523a
-Author: Maria Matejka 
-Date:   Mon Apr 17 11:37:29 2023 +0200
-
-    IO: added a specific loop pickup group for BFD; to be done better in future
-
-commit 3925e65938e7c778f650d62a721dec7a66c19ab3
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 15 18:32:47 2021 +0200
-
-    BMP: Add some missing bmp_buffer_free() calls
-    
-    They were inadvertently removed during recent code refactoring.
-    
-    Thanks to Dawid Macek for the bugreport and patch.
-
-commit 4d56b70dc5facdf4b839b76bf80c93856bcbb121
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 29 04:43:04 2021 +0200
-
-    BMP: Remove duplicate functions for update encoding
-    
-    Use existing BGP functions also for BMP update encoding.
-
-commit 568fd666136fcf7a37eb445d18b478b6464536c4
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 28 16:41:53 2021 +0200
-
-    BMP: Integrate bmp_conn to bmp_proto
-    
-    There is only one socket per BMP instance, no need to have separate
-    struct (like in BGP).
-
-commit 4adebdf198d6e2ca1afcd7cb9bfac81725e7b24e
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 28 15:36:59 2021 +0200
-
-    BMP: Minor cleanups
-    
-    Remove redundant 'disable' option, simplify IP address serialization,
-    and remove useless macros.
-
-commit a995ed43860eb139a13456242aa12486179fac86
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 28 15:13:23 2021 +0200
-
-    BMP: Do not use global instance ptr internally
-    
-    Use local variable to refence relevant instance instead of using global
-    instance ptr. Also, use 'p' variable instead of 'bmp' so we can use
-    common macros like TRACE().
-
-commit ad16e351773f4b606dd8b4dbbe77c2cb35bf5133
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 28 04:30:11 2021 +0200
-
-    BMP: Remove superfluous error handling
-    
-    Most error handling code was was for cases that cannot happen,
-    or they would be code bugs (and should use ASSERT()). Keep error
-    handling for just for I/O errors, like in rest of BIRD.
-
-commit a848dad40aa618e5e24417e4ef46b62c860de679
-Author: Pawel Maslanka 
-Date:   Mon Mar 29 22:45:21 2021 +0200
-
-    BMP protocol support
-    
-    Initial implementation of a basic subset of the BMP (BGP Monitoring
-    Protocol, RFC 7854) from Akamai team. Submitted for further review
-    and improvement.
-
-commit 61e64d6a4119c32e0fa1b03285f805e21a00f6ab
-Merge: 0c9e33fa7 9e44ace39
-Author: Maria Matejka 
-Date:   Fri Apr 14 15:18:18 2023 +0200
-
-    Merge commit '9e44ace3' into thread-next-iface
-
-commit 0c9e33fa7ae2bf0c0adb94c6ef9a446913ed50b8
-Merge: dc75d3e30 f881b98d9
-Author: Maria Matejka 
-Date:   Fri Apr 14 14:30:48 2023 +0200
-
-    Merge commit 'f881b98d' into thread-next-iface
-
-commit dc75d3e305ba748dbb81a97cc4c88c68202e7fc5
-Merge: a9db956b6 231c63851
-Author: Maria Matejka 
-Date:   Fri Apr 14 14:00:54 2023 +0200
-
-    Merge commit '231c6385' into thread-next-iface
-
-commit a9db956b61cb7f6ab4a27e9faff575ce6f601a04
-Merge: 90b9e37bc 2f080b543
-Author: Maria Matejka 
-Date:   Fri Apr 14 13:59:23 2023 +0200
-
-    Merge commit '2f080b54' into thread-next-iface
-
-commit 90b9e37bc45740e6352da7b351f6953c60feea14
-Merge: 110692721 6c058ae40
-Author: Maria Matejka 
-Date:   Fri Apr 14 13:43:32 2023 +0200
-
-    Merge commit '6c058ae4' into thread-next-iface
-
-commit 11069272133a6818e4b24d6f2c2ef33338ac499a
-Merge: ea30d596d 913ec57f2
-Author: Maria Matejka 
-Date:   Fri Apr 14 13:43:24 2023 +0200
-
-    Merge commit '913ec57f' into thread-next-iface
-
-commit ea30d596d3732b3d2c4b1f55ebdc7cc018dd20bb
-Merge: eb978f3a8 ee9196589
-Author: Maria Matejka 
-Date:   Fri Apr 14 13:42:42 2023 +0200
-
-    Merge commit 'ee919658' into thread-next-iface
-
-commit eb978f3a8357e53fcfeede1caf355e80d782ca6a
-Merge: a1fcd1c57 0851fcde6
-Author: Maria Matejka 
-Date:   Fri Apr 14 11:37:23 2023 +0200
-
-    Merge commit '0851fcde' into thread-next-iface
-
-commit a1fcd1c57a06baa99c38af4263f4845c9dba466e
-Merge: 16144c19a dc4c5f51f
-Author: Maria Matejka 
-Date:   Fri Apr 14 11:32:20 2023 +0200
-
-    Merge commit 'dc4c5f51' into thread-next-iface
-
-commit 9e44ace3928a19560058dc713fcbff3a8bad3b3c
-Author: Trisha Biswas 
-Date:   Fri Apr 14 04:28:37 2023 +0200
-
-    BGP: Add 'allow bgp_med' option for EBGP sessions
-    
-    This option allows to treat bgp_med as regular transitive attribute
-    on EBGP sessions (without hacks in filters).
-    
-    Minor changes from committer.
-
-commit dc139fb6438f0864e83a9dc71e7c212c5acaf3ef
-Author: Jakub Ružička 
-Date:   Thu Apr 13 20:06:55 2023 +0200
-
-    Increase tests timeout
-    
-    Tests may take longer than 5 s to complete on slow/virtual machines.
-
-commit 16144c19a81439c462bdbc366c610c56c387f9a7
-Author: Maria Matejka 
-Date:   Wed Apr 12 18:42:59 2023 +0200
-
-    Temporarily disable MRT as it still lacks proper locking; to be re-enabled in 3.0-alpha2
-
-commit 6e2f00ff9391ed41c7e0e991daff17f603d51c4d
-Author: Maria Matejka 
-Date:   Thu Apr 6 20:18:04 2023 +0200
-
-    Loop: keep running the same loop for some time if there is work to do
-
-commit 22a0900ec22511b6ce872f126e9766ccb4e5a824
-Author: Maria Matejka 
-Date:   Wed Apr 5 21:59:01 2023 +0200
-
-    BFD: fixed a request pickup race condition
-    
-    When several BGPs requested a BFD session in short time, chances were
-    that the second BGP would file a request while the pickup routine was
-    still running and it would get enqueued into the waiting list instead of
-    being picked up.
-    
-    Fixed this by enforcing pickup loop restart when new requests got added,
-    and also by atomically moving the unpicked requests to a temporary list
-    to announce admin down before actually being added into the wait list.
-
-commit 4a69a64745e44066abfa4f6a17a7bb7a2fde9834
-Author: Maria Matejka 
-Date:   Mon Mar 6 20:00:01 2023 +0100
-
-    BGP: set free bind also for connect sockets if configured
-
-commit 1b1ed1fc78740f0a2c76e7288be0fc85877484da
-Author: Maria Matejka 
-Date:   Sun Apr 2 19:15:27 2023 +0200
-
-    BGP: sockets use sk_resume_rx and sk_pause_rx
-
-commit e33902e15cb5399900fd346b4dba522ad821f0f0
-Author: Maria Matejka 
-Date:   Sun Apr 2 19:35:35 2023 +0200
-
-    BGP now has its own loop
-
-commit 836e857b3098f8962c621a33f7ae5b532cf512f3
-Author: Maria Matejka 
-Date:   Sun Apr 2 19:15:22 2023 +0200
-
-    Sockets: Unified API for main and other loops
-    
-    Now sk_open() requires an explicit IO loop to open the socket in. Also
-    specific functions for socket RX pause / resume are added to allow for
-    BGP corking.
-    
-    And last but not least, socket reloop is now synchronous to resolve
-    weird cases of the target loop stopping before actually picking up the
-    relooped socket. Now the caller must ensure that both loops are locked
-    while relooping, and this way all sockets always have their respective
-    loop.
-
-commit 571c4f69bfbcf437d848b332bb2f4995fea2347d
-Author: Maria Matejka 
-Date:   Fri Feb 24 09:13:35 2023 +0100
-
-    More efficient IO loop event execution to avoid long loops
-    
-    If there are lots of loops in a single thread and only some of the loops
-    are actually active, the other loops are now kept aside and not checked
-    until they actually get some timers, events or active sockets.
-    
-    This should help with extreme loads like 100k tables and protocols.
-    
-    Also ping and loop pickup mechanism was allowing subtle race
-    conditions. Now properly handling collisions between loop ping and pickup.
-
-commit d9f0f4af7dc49c22232cc3be5e40866fc7d5dda7
-Author: Maria Matejka 
-Date:   Tue Feb 28 10:42:47 2023 +0100
-
-    Resource dumps also write out block addresses
-
-commit 8e6abea41eca5c18b03e46706cbfa2972085f954
-Author: Maria Matejka 
-Date:   Tue Feb 28 15:19:21 2023 +0100
-
-    Linpool: State restoration works in initial linpool state
-
-commit d16321686eeda23eed53fa83d40099c2607c5c2c
-Author: Maria Matejka 
-Date:   Tue Feb 28 15:23:48 2023 +0100
-
-    Misc allocator fixes
-
-commit b8d0ba36e6a64518ac078139c24a7a01002dce21
-Author: Maria Matejka 
-Date:   Mon Feb 27 19:12:29 2023 +0100
-
-    Allocator fix: thread local kept pages counter must be thread local
-
-commit 0b7657a9dc449fc19f6c06a99e9b86ffad37570e
-Author: Maria Matejka 
-Date:   Fri Mar 31 10:46:17 2023 +0200
-
-    Route feed marks only the relevant pending exports as done
-
-commit 98f69aa4190d31f749ac4999cab9700850da15a9
-Author: Maria Matejka 
-Date:   Thu Mar 30 11:37:16 2023 +0200
-
-    Propagated const through route feed routines
-
-commit 3a53a12af4fb300ab18052ec485e2b825808f670
-Author: Maria Matejka 
-Date:   Thu Mar 30 10:34:28 2023 +0200
-
-    Moved channel export hooks to rt.h as the channel refactoring isn't going to take place soon
-
-commit 731ec008402a6e800ceb4c1171e44852ecc4679a
-Author: Maria Matejka 
-Date:   Sun Mar 19 13:21:35 2023 +0100
-
-    Allowing to restart a route refresh.
-    
-    Repeated pipe refeed should not end route refresh as the prune routine
-    may start pruning otherwise valid routes.
-    
-    The same applies for BGP repeated route refresh.
-
-commit 765bf99b695a9525fe4dfbc3f5e0bb90f56826d0
-Author: Maria Matejka 
-Date:   Thu Mar 9 16:34:17 2023 +0100
-
-    Fixed default table configuration
-    
-    When changing default table behavior, I missed that it enabled to
-    configure multiple master4 and master6 tables. Now BIRD recognizes it
-    and fails properly.
-
-commit 88fc87afe631f6600e82c3f7135f6003a9c729b6
-Author: Maria Matejka 
-Date:   Wed Mar 8 13:47:42 2023 +0100
-
-    Fixed use-after-free of old protocol name pointer copied into rte_owner structure
-
-commit 90de93ca0336b95038dddaef276d0c7ae5b7bbff
-Author: Maria Matejka 
-Date:   Wed Mar 8 13:44:18 2023 +0100
-
-    Fixed unwanted reloads while reconfiguring protocols with import table on
-
-commit 97d2875e999487bfe91f16c77c409ac0080541d3
-Author: Maria Matejka 
-Date:   Wed Mar 8 21:38:18 2023 +0100
-
-    Fixed bad filter re-evaluation with import table if filtered->accepted
-    
-    The import table feed wasn't resetting the table-specific route values
-    like REF_FILTERED and thus made the route look like filtered even though
-    it should have been re-evaluated as accepted.
-
-commit aa5fc3b99d9bada123cb4b7030fa0c8ba5fae2ea
-Author: Maria Matejka 
-Date:   Tue Mar 7 23:22:03 2023 +0100
-
-    Fixed channel stopping when reload is active
-
-commit 7d6fe6dfb115196b6fc598bd0c6b5e17469586a9
-Author: Maria Matejka 
-Date:   Mon Mar 6 19:28:08 2023 +0100
-
-    Fix obvious mistake in protocol debug dump
-
-commit c8507c124709a8640fbae46fa37015d1e00a694f
-Author: Maria Matejka 
-Date:   Thu Mar 2 11:48:17 2023 +0100
-
-    Fixed stopping of import request with no imports in idle table
-
-commit 03bfb8b59dbd6da41990d717a639662aeb31c144
-Author: Maria Matejka 
-Date:   Mon Mar 6 13:16:12 2023 +0100
-
-    Moved table hostcache updater to table service routines to not bother the mainloop
-
-commit 9073eda854ecee61f723894e66036de266e63606
-Author: Maria Matejka 
-Date:   Mon Feb 27 22:03:41 2023 +0100
-
-    Reducing initial channel bitmap sizes to help extreme cases
-
-commit e565e045b6be0deae5c55bd3ae64fc1909a0a873
-Author: Maria Matejka 
-Date:   Tue Feb 7 17:01:34 2023 +0100
-
-    Flowspec links must have the destination table service loop locked
-
-commit 227352c4611a9024c93b22c94c7bbd9ac474effe
-Author: Maria Matejka 
-Date:   Wed Mar 8 19:28:31 2023 +0100
-
-    BGP Export Table: Fixed route source objects leaking when prefix best routes is updated
-
-commit 2898f8f1771dedf4e385a5c0333da03e55d5decb
-Author: Maria Matejka 
-Date:   Wed Mar 29 18:55:46 2023 +0200
-
-    BGP: LLGR Staleness optimization dropped.
-    
-    This brought unnecessary complexity into the decision procedures while the
-    performance aspects weren't worth it. It just saved one ea_list traversal
-    when many others are also done.
-
-commit adbce76517f53e06243ed954b20172cc1313d5c3
-Author: Maria Matejka 
-Date:   Sun Mar 5 16:22:55 2023 +0100
-
-    BGP: show detailed TX state in show proto all output
-
-commit 6543303ad4d509340643ae1f2b585f6278cf0463
-Author: Maria Matejka 
-Date:   Tue Feb 7 15:14:40 2023 +0100
-
-    BFD notifications respect protocol loop settings
-
-commit 958bb84f772ba098d67d70bcbbdb9b700f17abb7
-Author: Maria Matejka 
-Date:   Thu Mar 9 16:32:20 2023 +0100
-
-    Temporarily switching off time annotations of debug log
-    
-    The "dump *" commands are totally garbled by the time annotations.
-
-commit 6899ba2232f232e44c4e45d06036409f173fbe23
-Author: Ondrej Zajicek 
-Date:   Sun Feb 19 03:59:10 2023 +0100
-
-    Conf: Fix too early free of old configuration
-    
-    The change 371eb49043d225d2bab8149187b813a14b4b86d2 introduced early free
-    of old_config. Unfortunately, it did not properly check whether it is not
-    still in use (blocked by obstacle during reconfiguration). Fix that.
-    
-    It also means that we still could have a short peak when three configs
-    are in use (when a new reconfig is requeste while the previous one is
-    still active).
-
-commit b8a230e478d41def757344bbe1eee7fa886682e5
-Author: Maria Matejka 
-Date:   Tue Apr 4 16:41:55 2023 +0200
-
-    Interface subsystem locking
-
-commit a26d307eabc9d670c8a39ade3b540cabde5851a3
-Author: Maria Matejka 
-Date:   Sun Apr 2 19:34:22 2023 +0200
-
-    Proto: published protocol-loop connections
-
-commit f881b98d9b48e7a60c46dffc29009a86dac63233
-Author: Ondrej Zajicek 
-Date:   Tue Apr 4 05:20:49 2023 +0200
-
-    BGP: Fix bgp_med handling
-    
-    Missing translation from BGP attribute ID to eattr ID in bgp_unset_attr()
-    broke automatic removal of bgp_med during export to EBGP peers.
-    
-    Thanks to Edward Sun for the bugreport.
-
-commit 231c63851e3a56201dd02abfbf3fce47a80f8ae0
-Author: Johannes Moos 
-Date:   Sat Mar 18 15:33:48 2023 +0100
-
-    Add missing references to "show route in" in the cli-help and doc.
-    
-    The feature of showing all prefixes inside the given one has been added
-    in v2.0.9 but not well documented. Fixing it by this update.
-    
-    Text in doc and commit message added by commiter.
-
-commit 2b712554d18dfb09274c003315a573f8578270ec
-Author: Maria Matejka 
-Date:   Thu Mar 16 19:23:19 2023 +0100
-
-    BGP: Free bind applies also to outbound connections
-    
-    Even though the free bind option is primarily meant to alleviate problems
-    with addresses assigned too late, it's also possible to use BIRD with AnyIP
-    configuration, assigning whole ranges to the machine. Therefore free bind
-    allows also to create an outbound connection from specific address even though
-    such address is not assigned.
-
-commit 6b38285f587be9d4b128ae816bc25cb338f7f07c
-Author: Ondrej Zajicek 
-Date:   Mon Mar 6 11:57:40 2023 +0100
-
-    Net: Replace runtime checks with STATIC_ASSERT()
-
-commit 0f679438f36d8c2a31dfe490007e983b085caef6
-Author: Petr Vaněk 
-Date:   Mon Mar 6 11:19:30 2023 +0100
-
-    Printf test suite fails on systems with musl libc because tests for "%m"
-    and "%M" formats expect "Input/output error" message but musl returns
-    "I/O error". Proposed change compares the printf output with string
-    returned from strerror function for EIO constant.
-    
-    See-also: https://bugs.gentoo.org/836713
-    
-    Minor change from committer.
-
-commit 2f080b543296aa2fa18bf7451b5174d942b0a952
-Author: Maria Matejka 
-Date:   Thu Feb 16 14:22:23 2023 +0100
-
-    Config: Dropping filter instruction trees after linearization
-
-commit 6c058ae40cf33d6d36c0159d0c40c9925c8e60d8
-Author: Maria Matejka 
-Date:   Wed Feb 22 14:45:20 2023 +0100
-
-    Linpool flush drops all the allocated pages but one
-    
-    When a linpool is used to allocate a one-off big load of memory, it
-    makes no sense to keep that amount of memory for future use inside the
-    linpool. Contrary to previous implementations where the memory was
-    directly free()d, we now use the page allocator which has an internal
-    cache which keeps the released pages for us and subsequent allocations
-    simply get these released pages back.
-    
-    And even if the page cleanup routine kicks in inbetween, the pages get
-    only madvise()d, not munmap()ed so performance aspects are negligible.
-    
-    This may fix some memory usage peaks in extreme cases.
-
-commit 913ec57f27b06845e3698e8ea08821d39b9575cf
-Author: Ondrej Zajicek 
-Date:   Sun Feb 19 15:35:07 2023 +0100
-
-    BGP: Update RFC references
-
-commit 501256cfc8c1fb5e225c81c4d3300b7c219baf63
-Author: Ondrej Zajicek 
-Date:   Sun Feb 19 15:34:43 2023 +0100
-
-    Babel: Update RFC references
-
-commit eefb29679957fed3724e6d5db2ddf112e28f646f
-Author: Ondrej Zajicek 
-Date:   Sun Feb 19 03:59:10 2023 +0100
-
-    Conf: Fix too early free of old configuration
-    
-    The change 371eb49043d225d2bab8149187b813a14b4b86d2 introduced early free
-    of old_config. Unfortunately, it did not properly check whether it is not
-    still in use (blocked by obstacle during reconfiguration). Fix that.
-    
-    It also means that we still could have a short peak when three configs
-    are in use (when a new reconfig is requeste while the previous one is
-    still active).
-
-commit ee919658948772105d0bd3b4535ba28883484f2c
-Author: Toke Høiland-Jørgensen 
-Date:   Tue Feb 14 18:18:32 2023 +0100
-
-    Babel: Keep separate auth PC counters for unicast and multicast
-    
-    The babel protocol normally sends all its messages as multicast packets,
-    but the protocol specification allows most messages to be sent as either
-    unicast or multicast, and the two can be mixed freely. In particular, the
-    babeld implementation can be configured to unicast updates to all peers
-    instead of sending them as unicast.
-    
-    Daniel discovered that this can cause problems with the packet counter
-    checks in the MAC extension due to packet reordering. This happens on WiFi
-    networks where clients have power save enabled (which is quite common in
-    infrastructure networks): in this case, the access point will buffer all
-    multicast traffic and only send it out along with its beacons, leading to a
-    maximum buffering in default Linux-based access point configuration of up
-    to 200 ms.
-    
-    This means that a Babel sender that mixes unicast and multicast messages
-    can have the unicast messages overtake the multicast messages because of
-    this buffering; when authentication is enabled, this causes the receiver to
-    discard the multicast message when it does arrive because it now has a
-    packet counter value less than the unicast message that arrived before it.
-    Daniel observed that this happens frequently enough that Babel ceases to
-    work entirely when runner over a WiFi network.
-    
-    The issue has been described in draft-ietf-babel-mac-relaxed, which is
-    currently pending RFC publication. That also describes two mitigation
-    mechanisms: Keeping separate PC counters for unicast and multicast, and
-    using a reorder window for PC values. This patch implements the former as
-    that is the simplest, and resolves the particular issue seen on WiFi.
-    
-    Thanks to Daniel Gröber for the bugreport.
-    
-    Minor changes from committer.
-
-commit eecc3f02e41bcb91d463c4c1189fd56bc44e6514
-Author: Andreas Rammhold 
-Date:   Tue Feb 14 16:17:03 2023 +0100
-
-    Babel: Implement IPv4 via IPv6 extension (RFC 9229)
-    
-    The patch implements an IPv4 via IPv6 extension (RFC 9229) to the Babel
-    routing protocol (RFC 8966) that allows annoncing routes to an IPv4
-    prefix with an IPv6 next hop, which makes it possible for IPv4 traffic
-    to flow through interfaces that have not been assigned an IPv4 address.
-    
-    The implementation is compatible with the current Babeld version.
-    
-    Thanks to Toke Høiland-Jørgensen for early review on this work.
-    
-    Minor changes from committer.
-
-commit 9508cd85ce21a476ba47417999d2157594c73c85
-Author: Maria Matejka 
-Date:   Mon Feb 6 15:06:12 2023 +0100
-
-    Protocol shutdown/restart from limits is respecting the loops
-
-commit a2fd889a3b95960311560a3796be5cdf92affcfc
-Merge: f7c2a886c 0bb04d539
-Author: Maria Matejka 
-Date:   Tue Feb 7 14:27:23 2023 +0100
-
-    Merge commit '0bb04d5390f21b0c96fc4894ba5d5510c541f0ef' into HEAD
-
-commit 0bb04d5390f21b0c96fc4894ba5d5510c541f0ef
-Author: Maria Matejka 
-Date:   Sun Feb 5 19:54:06 2023 +0100
-
-    BGP: opening and closing listening socket asynchronously
-
-commit 0851fcde651301a886fefc574a4f739bf68119b9
-Author: Maria Matejka 
-Date:   Fri Feb 3 09:12:34 2023 +0100
-
-    Documentation: Adding roadmap as decided in January 2023
-
-commit 597a4b33a700773032038051abc4f9f5e92942bd
-Author: Maria Matejka 
-Date:   Thu Feb 2 13:27:10 2023 +0100
-
-    Macro: stringify
-
-commit 226839c97731394b98cc8c7421a152964061c1aa
-Author: Maria Matejka 
-Date:   Thu Feb 2 13:26:49 2023 +0100
-
-    Lists: fixed bugs in expensive checks in quirky usecases
-
-commit c354e8f4c199ca7dec441394156d18badac71b81
-Author: Maria Matejka 
-Date:   Tue Jan 31 13:07:46 2023 +0100
-
-    Interface updates are asynchronous
-    
-    Instead of propagating interface updates as they are loaded from kernel,
-    they are enqueued and all the notifications are called from a
-    protocol-specific event. This change allows to break the locking loop
-    between protocols and interfaces.
-    
-    Anyway, this change is based on v2 branch to keep the changes between v2
-    and v3 smaller.
-
-commit 64e08775251960a2b009fc35a084610c9c4c4909
-Author: Maria Matejka 
-Date:   Wed Feb 1 12:10:34 2023 +0100
-
-    Proto: Adding a list of associated neighbors
-    
-    This makes for safer and faster pruning and notifying as protocol now on
-    its shutdown prunes only its neighbors and nothing else.
-
-commit 6e035a9a8c7c943ea5b58932a2bd4c9b733d91ff
-Author: Maria Matejka 
-Date:   Tue Jan 31 14:30:35 2023 +0100
-
-    Typed lists: shortcut for simple nodes
-
-commit e077d0e770f00c98f26ee6b3cdb7905bf9bea4c1
-Author: Maria Matejka 
-Date:   Tue Jan 31 13:11:55 2023 +0100
-
-    Moved interface list flush to device protocol cleanup hook.
-    
-    The interface list must be flushed when device protocol is stopped. This
-    was done in a hardcoded specific hook inside generic protocol routines.
-    The cleanup hook was originally used for table reference counting late
-    cleanup, yet it can be also simply used for prettier interface list flush.
-
-commit 0ab62f267449d6496e753625e37924357fb0aa95
-Author: Ondrej Zajicek 
-Date:   Wed Feb 1 19:30:21 2023 +0100
-
-    Build: Partial revert of one of previous changes
-    
-    There are many compatibility issues with echo -e, scratch that.
-
-commit ba348b2029f3c51559bed0bd752c4365793f0ea9
-Author: Ondrej Zajicek 
-Date:   Wed Feb 1 17:46:48 2023 +0100
-
-    Build: Minor improvement to build output
-
-commit 23f3dd5cfbe8681b4e71c8d7345bdeaafc86e077
-Author: Ondrej Zajicek 
-Date:   Wed Feb 1 16:15:13 2023 +0100
-
-    Nest: Minor cleanup in buildsystem
-    
-    There ware missing dependencies for proto-build.c generation, which
-    sometimes lead to failed builds, and ignores changes in the set of
-    built protocols. Fix that, and also improve formatting of proto-build.c
-
-commit dc4c5f51f83f97100b207136ecfde8ff94e597e6
-Author: Toke Høiland-Jørgensen 
-Date:   Tue Jan 31 15:52:14 2023 +0100
-
-    Babel: Initialise source seqno from incoming message
-    
-    When creating a new babel_source object we initialise the seqno to 0. The
-    caller will update the source object with the right metric and seqno value,
-    for both newly created and old source objects. However if we initialise the
-    source object seqno to 0 that may actually turn out to be a valid (higher)
-    seqno than the one in the routing table, because of seqno wrapping. In this
-    case the source metric will not be set properly, which breaks feasibility
-    tracking for subsequent updates.
-    
-    To fix this, add a new initial_seqno argument to babel_get_source() which
-    is used when allocating a new object, and set that to the seqno value of
-    the update we're sending.
-    
-    Thanks to Juliusz Chroboczek for the bugreport.
-
-commit 96d7c4679df49b34be004177b10a99210af5f141
-Author: Ondrej Zajicek 
-Date:   Mon Jan 30 23:49:20 2023 +0100
-
-    Babel: Improve clarity of unfeasible update handling.
-    
-    Add a comment and (unnecessary) check to make correctness obvious.
-
-commit 3e7e4a71868bc519aacc0eb785471b46fc345a5c
-Author: Toke Høiland-Jørgensen 
-Date:   Mon Jan 30 23:36:39 2023 +0100
-
-    Babel: Fix missing modulo comparison of seqnos
-    
-    Juliusz noticed there were a couple of places we were doing straight
-    inequality comparisons of seqnos in Babel. This is wrong because seqnos can
-    wrap: so we need to use the modulo-64k comparison function for these cases
-    as well.
-    
-    Introduce a strict-inequality version of the modulo-comparison for this
-    purpose.
-
-commit 05d8c3699d51866c68747167556e7c1f06390afe
-Author: Maria Matejka 
-Date:   Tue Jan 24 11:01:34 2023 +0100
-
-    Object locks use events
-    
-    Instead of calling custom hooks from object locks, we use standard event
-    sending mechanism to inform protocols about object lock changes. This is
-    a backport from version 3 where these events are passed across threads.
-    
-    This implementation of object locks doesn't use mutexes to lock the
-    whole data structure. In version 3, this data structure may get accessed
-    from multiple threads and must be protected by mutex.
-
-commit 4334f86251429eb39bfe81ff19496d141fccef84
-Author: Maria Matejka 
-Date:   Mon Nov 15 10:53:58 2021 +0100
-
-    VRF setting reduced to one argument, using default dummy iface for default vrf
-
-commit f7c2a886c9fb73b2749d5e270f15b79c44e72a62
-Author: Maria Matejka 
-Date:   Tue Jan 24 11:01:34 2023 +0100
-
-    Object locks use events
-    
-    Instead of calling custom hooks from object locks, we use standard event
-    sending mechanism to inform protocols about object lock changes. As
-    event sending is lockless, the unlocking protocol simply enqueues the
-    appropriate event to the given loop when the locking is done.
-
-commit 3ac628e0f0b7ffaa49c95688cc95954ece8f61fc
-Merge: 02b2a4eca 5437104af
-Author: Maria Matejka 
-Date:   Tue Jan 24 09:45:50 2023 +0100
-
-    Merge v2.0.12 into thread-next
-
-commit 02b2a4ecaaf850ce04b0cd2e74c1ff6fede3f181
-Merge: 3d96a16ae 3186ffe79
-Author: Maria Matejka 
-Date:   Tue Jan 24 09:45:40 2023 +0100
-
-    Merge commit '3186ffe79714a48542d5ad61a94c81216b522fd0' into thread-next
-
-commit 3d96a16ae85db4329d2a24b7df9b3c18ae4e1045
-Merge: 717612fa1 6bb992cb0
-Author: Maria Matejka 
-Date:   Tue Jan 24 09:44:43 2023 +0100
-
-    Merge commit '6bb992cb04926895be57dc97e7d569ea15a07db1' into thread-next
-
-commit 717612fa181f541f9be83d29317395bc2964e384
-Merge: 21b772fd4 9dc9124ce
-Author: Maria Matejka 
-Date:   Tue Jan 24 09:21:34 2023 +0100
-
-    Merge commit '9dc9124c' into thread-next
-
-commit 9dc9124cec3b576b16fc484ee3cd207a9b74ebdf
-Author: Maria Matejka 
-Date:   Tue Jan 24 09:20:36 2023 +0100
-
-    Revert "Filter: Allow setting the 'onlink' route attribute in filters"
-    
-    This reverts commit 7144c9ca46f092da33a4e051bbce8f973a3bd8c4.
-    
-    The onlink attribute implementation collides with the nexthop attribute
-    behavior in v3; keeping it aside until finding out how to reimplement it
-    correctly.
-
-commit 21b772fd4394feeb875121051c868eb9b738cb48
-Merge: 758aabd96 928a1cb03
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:51:24 2023 +0100
-
-    Merge commit '928a1cb034e6f9e8edcdd1dc07264cd703e00827' into thread-next
-
-commit 758aabd96c0f09709183dff4261ffbfdd72ae870
-Merge: 4821612c9 7fb23041a
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:46:26 2023 +0100
-
-    Merge commit '7fb23041a52d01754c53ba963e2282e524813364' into thread-next
-
-commit 4821612c94f9e935a6e841f6bcace9465dd2ad78
-Merge: 4e6cd1b2e d1cd5e5a6
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:42:12 2023 +0100
-
-    Merge commit 'd1cd5e5a63b2256eb71661f7438537e4ded7b01a' into thread-next
-
-commit 4e6cd1b2e354efb1df087a4296560b4b4b03fd7c
-Merge: 5481bcd82 b28431e55
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:36:22 2023 +0100
-
-    Merge commit 'b28431e557c4f63923476094a919a0630001275e' into thread-next
-
-commit 5481bcd82f4c9dc2074267fb56858f5bf48910df
-Merge: 7bb93efc2 d3f50ede1
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:05:41 2023 +0100
-
-    Merge commit 'd3f50ede127df338f575e188566035b2a46cf6c6' into thread-next
-
-commit 7bb93efc27c1c6f7d1f3cb66791005903f7b1a26
-Merge: 5aeaa0c2c 6d1ae197d
-Author: Maria Matejka 
-Date:   Mon Jan 23 19:03:16 2023 +0100
-
-    Merge commit '6d1ae197d189d50e60279796441c6e74272ddc54' into thread-next
-
-commit 5aeaa0c2ca9696cbfc40ff04a0c7b3c64ad69157
-Merge: 521fec2fd 8b06a4d8a
-Author: Maria Matejka 
-Date:   Mon Jan 23 18:57:13 2023 +0100
-
-    Merge commit '8b06a4d8af46511f0f8dbb8905afa88590a831b6' into thread-next
-
-commit 72230d3ca37d34cafa0442c23f83121ae1fc41be
-Author: Alexander Zubkov 
-Date:   Mon Jan 23 14:23:00 2023 +0100
-
-    Small fix of indenting
-
-commit 5437104afad90f2a74ce52946f06da607d021e2b
-Author: Ondrej Zajicek 
-Date:   Mon Jan 23 02:23:19 2023 +0100
-
-    NEWS and version update
-
-commit 99872676df45f1a490d3d63f43081afb41477040
-Author: Ondrej Zajicek 
-Date:   Sun Jan 22 23:42:08 2023 +0100
-
-    BFD: Improve incoming packet matching
-    
-    For active sessions, ignore received packets with zero local id and
-    mismatched remote id. That forces a session timeout instead of an
-    immediate session restart. It makes BFD sessions more resilient to
-    packet spoofing.
-    
-    Thanks to André Grüneberg for the suggestion.
-
-commit a82683694da23799f247b3392a00efdd342afdfc
-Author: Ondrej Zajicek 
-Date:   Sun Jan 22 18:12:04 2023 +0100
-
-    VRF: Fix issues with reconfiguration
-    
-    Protocols receive if_notify() announcements that are filtered according
-    to their VRF setting, but during reconfiguration, they access iface_list
-    directly and forgot to check VRF setting here, which leads to all
-    interfaces be addedd.
-    
-    Fix this issue for Babel, OSPF, RAdv and RIP protocols.
-    
-    Thanks to Marcel Menzel for the bugreport.
-
-commit 521fec2fdc391ee468fd3f58f994609483e6a6eb
-Merge: 21c4c8eaf 2b7643e1f
-Author: Maria Matejka 
-Date:   Sun Jan 22 13:19:22 2023 +0100
-
-    Merge commit '2b7643e1f8ecb0bd4cf9af4183b4fd53b655d19c' into thread-next
-
-commit 3186ffe79714a48542d5ad61a94c81216b522fd0
-Author: Maria Matejka 
-Date:   Sun Jan 22 12:55:31 2023 +0100
-
-    Added test case for switch bug fixed in e20bef69ccc4a85ef62359ee539c9db2dbe09127
-
-commit 21c4c8eafb7125375b2e562cc0e7e9d52bbb1aaf
-Merge: 2f764c87f 1e47b9f20
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:49:52 2023 +0100
-
-    Merge commit '1e47b9f203aaaad0fb658d40a1670f1d0437f1f8' into thread-next
-
-commit 2f764c87ff3c8a8af6d3bc043b439276ba2b0a79
-Merge: 0f9df6d1b e48f898fd
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:46:45 2023 +0100
-
-    Merge commit 'e48f898fdaf06b61754ae520410729a9984ab65b' into thread-next
-
-commit 0f9df6d1bdf801ead054ed9f71ca5486a2f94450
-Merge: 985c06034 a80cd4707
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:46:33 2023 +0100
-
-    Merge commit 'a80cd4707464cedb526eb72e7704b097af20beb7' into thread-next
-
-commit 985c060342867b5f386ef2921d1dce2e0f2406e5
-Merge: 4500749ce 3859e4efc
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:45:13 2023 +0100
-
-    Merge commit '3859e4efc1597368df647323c5a3cc1771cb64ca' into thread-next
-
-commit 4500749ce63b7b225d8016fc5e58253c84b23b52
-Merge: 7a262bc99 e80156d93
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:45:04 2023 +0100
-
-    Merge commit 'e80156d9363a594ff23524f56d59f0eee160859d' into thread-next
-
-commit 7a262bc9994c7a545d355046c16f4203b19db05d
-Author: Maria Matejka 
-Date:   Sat Jan 21 23:42:02 2023 +0100
-
-    Adding forgotten pthread.h #include in io-loop.h (breaks at openbsd 7.1)
-
-commit 61f9b78c24c3b4b9b4cd3901ed06a6caa6f17505
-Merge: cca385707 a50d2fa65
-Author: Maria Matejka 
-Date:   Sat Jan 21 22:57:12 2023 +0100
-
-    Merge commit 'a50d2fa65f3350ee55f5106b87a884d1b98e7761' into thread-next
-
-commit cca385707fbbae29cda333aca9dacae4041828ef
-Merge: 343628d8c 543c8ba09
-Author: Maria Matejka 
-Date:   Sat Jan 21 22:32:29 2023 +0100
-
-    Merge commit '543c8ba0971e91da3fe507dbfc1e1f9b556642b1' into thread-next
-
-commit 343628d8c0f1848b968930f6dbabdd1174404b14
-Author: Maria Matejka 
-Date:   Fri Jan 20 14:07:38 2023 +0100
-
-    Fixed various build problems on FreeBSD and/or CLang
-
-commit af611f93aa5040acc606ed289a873bf1136831c2
-Author: Ondrej Zajicek 
-Date:   Fri Jan 20 15:55:47 2023 +0100
-
-    BGP: Add received role value to role mismatch log message
-
-commit 1127f19a7a12b162064b1f521acd5c0017fbcf89
-Merge: 84c298465 140c534fb
-Author: Maria Matejka 
-Date:   Thu Jan 19 13:24:12 2023 +0100
-
-    Merge commit '140c534fb81d0e165b7d674e869c646455ed19d1' into thread-next
-
-commit 84c298465f6360a8694d4837f3420961ea321fa5
-Author: Maria Matejka 
-Date:   Thu Jan 19 10:49:47 2023 +0100
-
-    Decoupling loops from threads to allow fixed thread count
-    
-    On large configurations, too many threads would spawn with one thread
-    per loop. Therefore, threads may now run multiple loops at once. The
-    thread count is configurable and may be changed during run. All threads
-    are spawned on startup.
-    
-    This change helps with memory bloating. BIRD filters need large
-    temporary memory blocks to store their stack and also memory management
-    keeps its hot page storage per-thread.
-    
-    Known bugs:
-    * Thread autobalancing is not yet implemented.
-    * Low latency loops are executed together with standard loops.
-
-commit 4d8d81f144e72fe2e182d7569087f2a8c8c5b938
-Author: Maria Matejka 
-Date:   Thu Jan 19 10:56:16 2023 +0100
-
-    Table prune routine doesn't walk over lists unless needed.
-    
-    If no channel is flushing, table prune doesn't walk over routes in nets
-    and also doesn't walk over importing channel lists. This helps to
-    alleviate the memory caching burdens a lot.
-
-commit 59a5bf18f997e11a3e3ddd70d59f597f77fa2b6c
-Author: Maria Matejka 
-Date:   Thu Jan 19 10:53:09 2023 +0100
-
-    CLI closing fix when its action is run asynchronously.
-    
-    Some CLI actions, notably "show route", are run by queuing an event
-    somewhere else. If the user closes the socket, in case such an action is
-    being executed, the CLI must free the socket immediately from the error
-    hook but the pool must remain until the asynchronous event finishes and
-    cleans everything up.
-
-commit 34aeafbf9ea98c8644f6403b3810ff0490350465
-Author: Maria Matejka 
-Date:   Wed Jan 18 14:31:11 2023 +0100
-
-    Removed config reparsing from unrelated tests
-
-commit 804916daa91834a4740edba96a43c7f0a43744b3
-Author: Ondrej Zajicek 
-Date:   Wed Jan 18 13:40:21 2023 +0100
-
-    Alloc: Minor cleanups
-    
-     - Fix THP disable on old systems
-     - Failed syscalls should use die() instead of bug()
-     - Our printf uses %ld for s64 instead of long
-
-commit 6bb992cb04926895be57dc97e7d569ea15a07db1
-Merge: 973aa37e1 7144c9ca4
-Author: Maria Matejka 
-Date:   Wed Jan 18 12:33:06 2023 +0100
-
-    Merge branch 'master' of https://gitlab.nic.cz/labs/bird
-
-commit 973aa37e1e28a9c508fe09c008196f64cd3966fd
-Author: Maria Matejka 
-Date:   Wed Jan 18 09:39:45 2023 +0100
-
-    Fix memory pre-allocation
-    
-    When BIRD has no free memory mapped, it allocates several pages in
-    advance just to be sure that there is some memory available if needed.
-    This hysteresis tactics works quite well to reduce memory ping-ping with
-    kernel.
-    
-    Yet it had a subtle bug: this pre-allocation didn't take a memory
-    coldlist into account, therefore requesting new pages from kernel even
-    in cases when there were other pages available. This led to slow memory
-    bloating.
-    
-    To demonstrate this behavior fast enough to be seen well, you may:
-      * temporarily set the values in sysdep/unix/alloc.c as follows to
-        exacerbate the issue:
-          #define KEEP_PAGES_MAIN_MAX    4096
-          #define KEEP_PAGES_MAIN_MIN    1000
-          #define CLEANUP_PAGES_BULK     4096
-      * create a config file with several millions of static routes
-      * periodically disable all static protocols and then reload config
-      * log memory consumption
-    
-    This should give you a steady growth rate of about 16kB per cycle. If
-    you don't set the values this high, the issue happens much more slowly,
-    yet after 14 days of running, you are going to see an OOM kill.
-    
-    After this fix, pre-allocation uses the memory coldlist to get some hot
-    pages and the same test as described here gets you a perfectly stable
-    constant memory consumption (after some initial wobbling).
-    
-    Thanks to NIX-CZ for reporting and helping to investigate this issue.
-    Thanks to Santiago for finding the cause in the code.
-
-commit 7144c9ca46f092da33a4e051bbce8f973a3bd8c4
-Author: Radu Carpa 
-Date:   Tue Jan 17 18:13:37 2023 +0100
-
-    Filter: Allow setting the 'onlink' route attribute in filters
-    
-    Add static route attribute to set onlink flag for route next hop. Can be
-    used to build a dynamically routed IP-in-IP overlay network. Usage:
-    
-         ifname = "tunl0";
-         onlink = true;
-         gw = bgp_next_hop;
-
-commit 928a1cb034e6f9e8edcdd1dc07264cd703e00827
-Author: Ondrej Zajicek 
-Date:   Tue Jan 17 17:13:50 2023 +0100
-
-    Alloc: Disable transparent huge pages
-    
-    The usage pattern implemented in allocator seems to be incompatible with
-    transparent huge pages, as memory released using madvise(MADV_DONTNEED)
-    with regular page size and alignment does not seem to trigger demotion
-    of huge pages back to regular pages, even when significant number of
-    pages is released. Even if demotion is triggered when system memory
-    is low, it still breaks memory accounting.
-
-commit 54234c9eae978463a2518446da399470ff916252
-Author: Ondrej Zajicek 
-Date:   Fri Jan 13 16:44:42 2023 +0100
-
-    Build: Fix cleanup of nest/proto-build.c
-
-commit f8276812e6bf3aaefe22cdf9135b06e344298273
-Author: Ondrej Zajicek 
-Date:   Fri Jan 13 13:32:29 2023 +0100
-
-    Minor cleanups
-
-commit 7fb23041a52d01754c53ba963e2282e524813364
-Author: Ondrej Zajicek 
-Date:   Fri Jan 13 13:17:46 2023 +0100
-
-    BSD: Add support for kernel route metric
-    
-    Add support for kernel route metric/priority, exported as krt_metric
-    attribute, like in Linux. This should also fix issues with overwriting
-    or removing system routes.
-
-commit 64a2b7aaa303be0b407508747bfc96c1c656f1e2
-Author: Mike Crute 
-Date:   Thu Jan 12 17:40:53 2023 +0100
-
-    Log message before aborting
-    
-    Log message before aborting due to watchdog timeout. We have to use
-    async-safe write to debug log, as it is done in signal handler.
-    
-    Minor changes from committer.
-
-commit e20bef69ccc4a85ef62359ee539c9db2dbe09127
-Author: Ondrej Zajicek 
-Date:   Sat Jan 7 20:18:44 2023 +0100
-
-    Filter: Change linearization of branches in switch instruction
-    
-    Most branching instructions (FI_CONDITION, FI_AND, FI_OR) linearize its
-    branches in a recursive way, while FI_SWITCH branches are linearized
-    from parser even before the switch instruction is allocated.
-    
-    Change linearization of FI_SWITCH branches to make it similar to other
-    branching instructions. This also fixes an issue with constant
-    switch evaluation, where linearized branch is mistaken for
-    non-linearized during switch construction.
-    
-    Thanks to Jiten Kumar Pathy for the bugreport.
-
-commit d1cd5e5a63b2256eb71661f7438537e4ded7b01a
-Author: Ondrej Zajicek 
-Date:   Tue Jan 3 19:09:51 2023 +0100
-
-    BGP: Allow role specific keywords to be used as symbols
-    
-    Some of these new BGP role keywords use generic names that collides with
-    user-defined symbols. Allow them to be redefined. Also remove duplicit
-    keyword definition for 'prefer'.
-
-commit 309c874f9c8b217dbed1569c73b4a3035f5cb170
-Author: Ondrej Zajicek 
-Date:   Tue Jan 3 17:14:48 2023 +0100
-
-    Configure: Expensive check option was broken, never worked
-
-commit b28431e557c4f63923476094a919a0630001275e
-Author: Ondrej Zajicek 
-Date:   Tue Jan 3 17:01:54 2023 +0100
-
-    Nest: Fix leaking internal attributes in RIP and Babel
-    
-    During backporting attribute changes from 3.0-branch, some internal
-    attributes (RIP iface and Babel seqno) leaked to 'show route all' output.
-    Allow protocols to hide specific attributes with GA_HIDDEN value.
-    
-    Thanks to Nigel Kukard for the bugreport.
-
-commit d3f50ede127df338f575e188566035b2a46cf6c6
-Author: Ondrej Zajicek 
-Date:   Mon Jan 2 15:55:55 2023 +0100
-
-    Add compile-time option to enable 4-way tries instead of 16-way ones
-    
-    In some cases 16-way tries are too memory-heavy, while 4-way are
-    almost as efficient as the original 2-way ones.
-
-commit 6d1ae197d189d50e60279796441c6e74272ddc54
-Author: Ondrej Zajicek 
-Date:   Sun Jan 1 20:10:23 2023 +0100
-
-    Nest: Fix several issues with pflags
-    
-    There were some confusion about validity and usage of pflags, which
-    caused incorrect usage after some flags from (now removed) protocol-
-    specific area were moved to pflags.
-    
-    We state that pflags:
-    
-     - Are secondary data used by protocol-specific hooks
-     - Can be changed on an existing route (in contrast to copy-on-write
-       for primary data)
-     - Are irrelevant for propagation (not propagated when changed)
-     - Are specific to a routing table (not propagated by pipe)
-    
-    The patch did these fixes:
-    
-     - Do not compare pflags in rte_same(), as they may keep cached values
-       like BGP_REF_STALE, causing spurious propagation.
-    
-     - Initialize pflags to zero in rte_get_temp(), avoid initialization in
-       protocol code, fixing at least two forgotten initializations (krt
-       and one case in babel).
-    
-     - Improve documentation about pflags
-
-commit 8b06a4d8af46511f0f8dbb8905afa88590a831b6
-Author: Toke Høiland-Jørgensen 
-Date:   Sat Dec 24 15:47:11 2022 +0100
-
-    Babel: Rework seqno request handling
-    
-    The seqno request retransmission handling was tracking the destination
-    that a forwarded request was being sent to and always retransmitting to
-    that same destination. This is unnecessary because we only need to
-    retransmit requests we originate ourselves, not those we forward on
-    behalf of others; in fact retransmitting on behalf of others can lead to
-    exponential multiplication of requests, which would be bad.
-    
-    So rework the seqno request tracking so that instead of storing the
-    destination of a request, we just track whether it was a request that we
-    forwarded on behalf of another node, or if it was a request we originated
-    ourselves. Forwarded requests are not retransmitted, they are only used
-    for duplicate suppression, and for triggering an update when satisfied.
-    If we end up originating a request that we previously forwarded, we
-    "upgrade" the old request and restart the retransmit counter.
-    
-    One complication with this is that requests sent in response to unfeasible
-    updates (section 3.8.2.2 of the RFC) have to be sent as unicast to a
-    particular peer. However, we don't really need to retransmit those as
-    there's no starvation when sending such a request; so we just change
-    such requests to be one-off unicast requests that are not subject to
-    retransmission or duplicate suppression. This is the same behaviour as
-    babeld has for such requests.
-    
-    Minor changes from committer.
-
-commit 2b7643e1f8ecb0bd4cf9af4183b4fd53b655d19c
-Author: Ondrej Zajicek 
-Date:   Sun Dec 18 20:10:14 2022 +0100
-
-    BSD: Use ip_mreqn on FreeBSD 12.1+ and OpenBSD 6.9+
-
-commit 6825f94570b05f933f09ae1bd7e520954d903e6a
-Author: Alexander Chernikov 
-Date:   Fri Dec 16 19:35:02 2022 +0100
-
-    FreeBSD: use interface index instead of IP address when specifying multicast interface
-    
-    Minor changes from committer.
-
-commit 176fc68aed32a5675aa643e3b7c6f65ff9ad13d0
-Author: Alexander Chernikov 
-Date:   Fri Dec 16 19:20:05 2022 +0100
-
-    Netlink: move OS-specific headers and defines to sysdep
-    
-    Minor changes from committer.
-
-commit 7b6c9649775b288653b0d61df6004d79f0d83ccf
-Author: Ondrej Zajicek 
-Date:   Fri Dec 16 19:03:41 2022 +0100
-
-    BSD: Add missing makefile for bsd-netlink target
-    
-    Use symlinks to linux/netlink* to avoid limitations of our buildsystem.
-
-commit 1e47b9f203aaaad0fb658d40a1670f1d0437f1f8
-Author: Ondrej Zajicek 
-Date:   Sun Dec 11 17:28:14 2022 +0100
-
-    NEWS and version update
-
-commit 34ebc4e1ba41c618e5d46112696011ed596c5ebc
-Author: Ondrej Zajicek 
-Date:   Sun Dec 11 16:28:28 2022 +0100
-
-    BSD: Workaround for direct routes on FreeBSD 13.0
-    
-    FreeBSD 13.0 added some safechecks for syscalls, rejecting sockaddrs that
-    are too small, later versions loosen up the check.
-
-commit 937ebf2536e6b4d65f996af53a29ac550ac0cc2a
-Author: Ondrej Zajicek 
-Date:   Sat Dec 10 18:03:41 2022 +0100
-
-    BGP: Log unacceptable hold time as decimal number
-    
-    Thanks Johannes Moos for the suggestion.
-
-commit 4c19a8a984c39c7269cf497808735f147243800b
-Author: Ondrej Zajicek 
-Date:   Sat Dec 10 17:32:42 2022 +0100
-
-    CLI: Fix for long-lived sessions during high loads
-    
-    When there is a continuos stream of CLI commands, cli_get_command()
-    always returns 1 (there is a new command). Anyway, the socket receive
-    buffer was reset only when there was no command at all, leading to a
-    strange behavior: after a while, the CLI receive buffer came to its end,
-    then read() was called with zero size buffer, it returned 0 which was
-    interpreted as EOF.
-    
-    The patch fixes that by resetting the buffer position after each command
-    and moving remaining data at the beginning of buffer.
-    
-    Thanks to Maria Matejka for examining the bug and for the original bugfix.
-
-commit 1124f39f731610687eb8fdd6d7079c20063809c1
-Author: Ondrej Zajicek 
-Date:   Sat Dec 10 03:02:26 2022 +0100
-
-    Client: Unknown command should return nonzero errorcode
-
-commit e48f898fdaf06b61754ae520410729a9984ab65b
-Author: Ondrej Zajicek 
-Date:   Fri Dec 9 22:43:27 2022 +0100
-
-    Doc: Document issue with import tables
-    
-    The import table does not work reliably together with re-evaluation of
-    routes due to recursive next hops or flowspec validation. We will at
-    least document that here, as import tables are completely redesigned and
-    this issue is fixed in BIRD 3.x branch.
-
-commit a80cd4707464cedb526eb72e7704b097af20beb7
-Author: Alexander V. Chernikov 
-Date:   Fri Dec 9 15:59:06 2022 +0100
-
-    Netlink on FreeBSD support
-    
-    Netlink support was added to FreeBSD recently. It is not as full-featured
-    as its Linux counterpart yet, however the added subset is enough to make
-    a routing daemon work. Specifically, it supports multiple tables,
-    multipath, nexthops and nexthops groups. No MPLS support yet.
-    
-    The attached change adds 'bsd-netlink’ sysconf target, allowing to build
-    both netlink & rtsock versions on FreeBSD.
-
-commit 3859e4efc1597368df647323c5a3cc1771cb64ca
-Author: Ondrej Zajicek 
-Date:   Fri Dec 9 05:51:30 2022 +0100
-
-    BGP: Improve handling of hold and keepalive timers
-    
-    The effective keepalive time now scales relative to the negotiated
-    hold time, to maintain proportion between the keepalive time and the
-    hold time. This avoids issues when both keepalive and hold times
-    were configured, the hold time was negotiated to a smaller value,
-    but the keepalive time stayed the same.
-    
-    Add new options 'min hold time' and 'min keepalive time', which reject
-    session attempts with too small hold time.
-    
-    Improve validation of config options an their documentation.
-    
-    Thanks to Alexander Zubkov and Sergei Goriunov for suggestions.
-
-commit e80156d9363a594ff23524f56d59f0eee160859d
-Author: Ondrej Zajicek 
-Date:   Tue Dec 6 19:40:02 2022 +0100
-
-    Nest: Avoid spurious announcements triggered by filtered routes
-    
-    When filtered routes (enabled by 'import keep filtered' option) are
-    updated, they trigger announcements by rte_announce(). For regular
-    channels (e.g. type RA_OPTIMAL or RA_ANY) such announcement is just
-    ignored, but in case of RA_ACCEPTED (BGP peer with 'secondary' option)
-    it just reannounces the old (and still valid) best route.
-    
-    The patch ensures that such no-change is ignored even for these channels.
-
-commit a50d2fa65f3350ee55f5106b87a884d1b98e7761
-Author: Ondrej Zajicek 
-Date:   Wed Nov 30 02:45:07 2022 +0100
-
-    CI: Remove docker rebuild phase
-    
-    It is unnnecessary and takes too much time
-
-commit ff38ee598648ae2fc76cc18dada7602dcfc90668
-Author: Ondrej Zajicek 
-Date:   Tue Nov 29 18:30:16 2022 +0100
-
-    CI: Try new workers
-
-commit 543c8ba0971e91da3fe507dbfc1e1f9b556642b1
-Author: Ondrej Zajicek 
-Date:   Tue Nov 29 19:43:38 2022 +0100
-
-    BSD: Fix krt socket code w.r.t. rte/rta changes
-
-commit 140c534fb81d0e165b7d674e869c646455ed19d1
-Author: Ondrej Zajicek 
-Date:   Tue Nov 29 03:50:33 2022 +0100
-
-    Fix build variables for OpenBSD
-
-commit bbac9ca958c73fd08b4691ea40067d1cc3ac275a
-Author: Ondrej Zajicek 
-Date:   Wed Nov 9 22:02:46 2022 +0100
-
-    Conf: Make 'configure check' command restricted
-    
-    While it does not directly change BIRD state, it can trigger reading
-    arbitrary files and eating significant memory.
-
-commit 371eb49043d225d2bab8149187b813a14b4b86d2
-Author: Ondrej Zajicek 
-Date:   Wed Nov 9 21:09:16 2022 +0100
-
-    Conf: Free stored old config before parsing new one
-    
-    BIRD keeps a previous (old) configuration for the purpose of undo. The
-    existing code frees it after a new configuration is successfully parsed
-    during reconfiguration. That causes memory usage spikes as there are
-    temporarily three configurations (old, current, and new). The patch
-    changes it to free the old one before parsing the new one (as user
-    already requested a new config). The disadvantage is that undo is
-    not available after failed reconfiguration.
-
-commit 84545a26cc3f7ce68408a663c1ad4a50edccdacc
-Author: Maria Matejka 
-Date:   Tue Nov 8 10:20:55 2022 +0100
-
-    Added more netlab tests for automatic run.
-    
-    This commit uses bird-tools in version
-    f35e8bce829f4bff61ec7eb07ec9c67aa867bc9a
-
-commit 47e4e97db484e6b8ba5f05e6cc7164f35488f53b
-Merge: 7bbd0b5a3 57308fb27
-Author: Maria Matejka 
-Date:   Mon Nov 7 16:52:27 2022 +0100
-
-    Merge remote-tracking branch 'origin/master' into thread-next
-
-commit 7bbd0b5a3b670cfbe72df21054465b71a632962f
-Merge: 40bae8e1b 37b644413
-Author: Maria Matejka 
-Date:   Mon Nov 7 10:28:01 2022 +0100
-
-    Merge commit '37b64441' into thread-next
-
-commit 40bae8e1b788a535466ac673629fc93b6a258576
-Merge: 54179a1ab 324252975
-Author: Maria Matejka 
-Date:   Mon Nov 7 10:25:52 2022 +0100
-
-    Merge commit '32425297' into thread-next
-
-commit 54179a1ab38542e7087db37bfe3de9d32886c78e
-Merge: 96d380405 8f79e6b93
-Author: Maria Matejka 
-Date:   Mon Nov 7 10:24:56 2022 +0100
-
-    Merge commit '8f79e6b9' into thread-next
-
-commit 96d380405701bb01d792ff1c867a607d7fefa001
-Merge: 34e803c6c 8478de881
-Author: Maria Matejka 
-Date:   Mon Nov 7 10:09:40 2022 +0100
-
-    Merge commit '8478de88' into thread-next
-
-commit 34e803c6c32032cffeb9bd230d0f85861acd9222
-Merge: d2d83c477 54430df95
-Author: Maria Matejka 
-Date:   Mon Nov 7 10:09:01 2022 +0100
-
-    Merge commit '54430df9' into thread-next
-
-commit d2d83c47776e1655a73e9134c87590bae084b03b
-Merge: 8d7f516b2 0f2be469f
-Author: Maria Matejka 
-Date:   Mon Nov 7 09:51:21 2022 +0100
-
-    Merge commit '0f2be469' into thread-next
-
-commit 57308fb277788ab082a0047e8764fe8023aff6df
-Author: Maria Matejka 
-Date:   Thu Nov 3 12:38:57 2022 +0100
-
-    Page allocator: Fixed minor bugs and added commentary
-
-commit 9d03c3f56ced3d3191982f57029f9a3d12fa2e5a
-Author: Maria Matejka 
-Date:   Tue Nov 1 18:40:56 2022 +0100
-
-    Memory pages are not munmapped, instead we just madvise()
-    
-    Memory unmapping causes slow address space fragmentation, leading in
-    extreme cases to failing to allocate pages at all. Removing this problem
-    by keeping all the pages allocated to us, yet calling madvise() to let
-    kernel dispose of them.
-    
-    This adds a little complexity and overhead as we have to keep the
-    pointers to the free pages, therefore to hold e.g. 1 GB of 4K pages with
-    8B pointers, we have to store 2 MB of data.
-
-commit 37b644413723670928f6b54f2abe0c852eb0b652
-Author: Maria Matejka 
-Date:   Tue Nov 1 08:56:26 2022 +0100
-
-    Moved config-related allocations to config_pool and showing its size in memory usage
-
-commit 5aebce5e0cc59c4c8459ab92a201df5868f46e7a
-Author: Alexander Zubkov 
-Date:   Tue Oct 18 04:25:29 2022 +0200
-
-    Doc: Add documentation for "show route (import|export) table"
-
-commit e471f9e0fb7ade475dd3eb8b230bcb440877ee7e
-Author: Ondrej Zajicek 
-Date:   Tue Oct 18 03:58:19 2022 +0200
-
-    Filter: Fix handling of variables in anonymous filters
-    
-    Define scope for anonymous filters, and also explicitly distinguish block
-    scopes and function/filter scopes instead of using anonymous / named
-    distinction.
-    
-    Anonymous filters forgot to push scope, so variables for them were in
-    fact defined in the top scope and therefore they shared a frame. This got
-    broken after rework of variables, which assumed that there is a named
-    scope for every function/filter.
-
-commit 8d7f516b2a255a40659ce7857fe30937a6ecf7f2
-Author: Maria Matejka 
-Date:   Wed Oct 12 18:04:39 2022 +0200
-
-    Attribute blocks are now allocated from slabs instead of malloc()
-
-commit d3af586da442b531ff83a341d1e992113c1b2ee0
-Author: Maria Matejka 
-Date:   Wed Oct 12 18:02:34 2022 +0200
-
-    Removed an accidentally merged debug call introduced in 5395880908fdb264b5b78ccc455dced49eb29915
-
-commit 324252975004154cc70623c94f05083bff100209
-Author: Ondrej Zajicek 
-Date:   Wed Oct 12 17:57:26 2022 +0200
-
-    Netlink: Parse onlink flag even on direct routes
-    
-    While onlink flag is meaningful only with explicit next hops, it can be
-    defined also on direct routes. Parse it also in this case to avoid
-    periodic updates of the same route.
-    
-    Thanks to Marcin Saklak for the bugreport.
-
-commit a9fe913a41a9eff33ce9d39a7e3a80c8498bae0e
-Author: Maria Matejka 
-Date:   Wed Oct 12 14:23:50 2022 +0200
-
-    GDB connection: resource pools don't keep free pages
-
-commit ed7336e06e105b3ddc72b0b97e8372339a366174
-Merge: a1c591dc7 ab0994a10
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:34:14 2022 +0200
-
-    Merge commit 'ab0994a1' into thread-next
-
-commit a1c591dc7c1bcc219b9aa61cd52a179c9b82a2dd
-Merge: ff24f027a 57d0ecb9b
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:30:38 2022 +0200
-
-    Merge commit '57d0ecb9' into thread-next
-
-commit ff24f027a6e689e294d756142ce788d67fdaf69b
-Merge: 217a724d5 539588090
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:30:27 2022 +0200
-
-    Merge commit '53958809' into thread-next
-
-commit 217a724d5a25f2e7fbbc518085ee2c261505aa39
-Merge: c4957647b 821344c78
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:24:26 2022 +0200
-
-    Merge commit '821344c7' into thread-next
-
-commit c4957647b4b2d763ecf0c3d63f3dccec9188268b
-Merge: 2b7829734 4ba991f19
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:24:23 2022 +0200
-
-    Merge commit '4ba991f1' into thread-next
-
-commit 2b7829734af5717ea2328e330afa8621468f36df
-Merge: f182771f9 44dbedbe3
-Author: Maria Matejka 
-Date:   Wed Oct 12 11:16:44 2022 +0200
-
-    Merge commit '44dbedbe' into thread-next
-
-commit f182771f96280115e839315d9d3e5aa7c9343d54
-Author: Maria Matejka 
-Date:   Wed Oct 12 10:52:53 2022 +0200
-
-    Fixed SSH known hosts checking with older versions of libssh
-
-commit 2d99f1277317040d05cca7b8f04b43a66f6fe643
-Author: Maria Matejka 
-Date:   Wed Oct 12 10:44:18 2022 +0200
-
-    Tamed slab signedness warning on 32-bit architectures
-
-commit fdacb89a536b1be2fc01904a73e1bee48a49e0d3
-Author: Maria Matejka 
-Date:   Tue Oct 11 19:26:31 2022 +0200
-
-    BGP refeed and reload with Adj-RIB-In/Out is done without route refresh
-
-commit c1cb2dc31c26154fc616607b767f3f20c6efe25b
-Author: Maria Matejka 
-Date:   Tue Oct 11 11:08:49 2022 +0200
-
-    TES_HUNGRY doesn't inhibit export cleanup any more
-
-commit 6d5929be24ec0e7846b83fab7b4ea910accbcc80
-Author: Maria Matejka 
-Date:   Tue Oct 11 11:08:15 2022 +0200
-
-    More thorough logging of route update corner cases
-
-commit 26552a7ec85e0f8845a2672a797c5cb2c9bf47d5
-Author: Maria Matejka 
-Date:   Tue Oct 11 11:07:38 2022 +0200
-
-    Fixed BGP reload limits
-
-commit b83a9d5f9a93d6b01d4b06429195e4508377504c
-Author: Maria Matejka 
-Date:   Tue Oct 11 11:06:58 2022 +0200
-
-    Limited value must never go under zero
-
-commit 02dc89555032c2e045e6910fbc6ee2c45d03a41a
-Author: Maria Matejka 
-Date:   Tue Oct 11 11:06:32 2022 +0200
-
-    CLI fix to break busy-loop waiting for corked show-route exports
-
-commit 2ae32374dd17cb3b22d9ee35265ed27490643924
-Author: Maria Matejka 
-Date:   Thu Oct 6 17:51:32 2022 +0200
-
-    Fixed export hook stopping in some corner cases.
-    
-    Notably, it's in a corked state and also when refeed is pending.
-
-commit 6abef2b20b88ec2aa747ff3885d7fd1c7d147cef
-Author: Maria Matejka 
-Date:   Sun Nov 21 12:06:19 2021 +0100
-
-    BGP: End route refresh before another starts
-
-commit 8f79e6b93e32a4eb7e4dda9bd4a9d04400b79d45
-Author: Ondrej Zajicek 
-Date:   Mon Oct 10 05:06:19 2022 +0200
-
-    BGP: Add option 'next hop prefer global'
-    
-    Add BGP channel option 'next hop prefer global' that modifies BGP
-    recursive next hop resolution to use global next hop IPv6 address instead
-    of link-local next hop IPv6 address for immediate next hop of received
-    routes.
-
-commit e1701128bfdc737e04fe4bd4609020d5f93853c6
-Author: Maria Matejka 
-Date:   Wed Oct 5 16:26:13 2022 +0200
-
-    Poll errors must also drop a corefile. And we shouldn't run sockets when sockets have changed
-
-commit 4d687d7aecb2bc4b695d26418bc761acb1d15c76
-Author: Maria Matejka 
-Date:   Tue Oct 4 13:20:04 2022 +0200
-
-    Fixed previously untested paths in RPKI
-
-commit 1e01721525032bf3608aa457cafde58543b8a977
-Merge: 7911148b2 dc9351d32
-Author: Maria Matejka 
-Date:   Wed Oct 5 15:17:51 2022 +0200
-
-    Merge commit 'dc9351d3' into HEAD
-
-commit 7911148b22a9efb1fd200b23e3c71cb1df3a0620
-Author: Maria Matejka 
-Date:   Wed Oct 5 15:17:38 2022 +0200
-
-    Fixed pipe reload/refeed to properly propagate as route refresh to the other table
-
-commit dc9351d326b9d2d8bcb7e9a0e5126878c2b02762
-Merge: 00679a688 67256d503
-Author: Maria Matejka 
-Date:   Tue Oct 4 16:15:36 2022 +0200
-
-    Merge commit '67256d50' into HEAD
-
-commit 00679a688a5feff7a919cbeae71dd050ccc90b22
-Merge: f69ba3921 3ace3a428
-Author: Maria Matejka 
-Date:   Tue Oct 4 16:09:48 2022 +0200
-
-    Merge commit '3ace3a42' into HEAD
-
-commit f69ba3921a1842f9cac9b9fbd0a32800615da02e
-Merge: a414ba6b9 fb7fb6744
-Author: Maria Matejka 
-Date:   Tue Oct 4 16:09:41 2022 +0200
-
-    Merge commit 'fb7fb674' into HEAD
-
-commit a414ba6b975a1187a59cac1f58bc68e5e4b7d37d
-Merge: 0eba27c69 e9e6baae3
-Author: Maria Matejka 
-Date:   Tue Oct 4 16:02:23 2022 +0200
-
-    Merge commit 'e9e6baae' into HEAD
-
-commit 0eba27c69fbbd3cd701debc1f1254b51d1906388
-Merge: 4e1c582ca a32cee781
-Author: Maria Matejka 
-Date:   Tue Oct 4 15:59:15 2022 +0200
-
-    Merge commit 'a32cee78' into HEAD
-
-commit 4e1c582caddb6876b9fcbdc29b8bad5ab0b09ee7
-Merge: becca314e 71b434a98
-Author: Maria Matejka 
-Date:   Tue Oct 4 15:53:12 2022 +0200
-
-    Merge commit '71b434a9' into HEAD
-
-commit becca314e2546d6005a23398ce2d3012d4b396cb
-Merge: 61c127c02 0072d11f3
-Author: Maria Matejka 
-Date:   Tue Oct 4 15:40:52 2022 +0200
-
-    Merge commit '0072d11f' into tmp-learn
-
-commit 8478de8817c58af02f7aed1d621013891115a2dc
-Author: Ondrej Zajicek 
-Date:   Mon Oct 3 18:53:21 2022 +0200
-
-    Nest: Add channel config flag to distinguish new or copy
-    
-    It is useful to distinguish whehter channel config returned from
-    channel_config_get() was allocated new, or existing from template.
-    Caller may want to initialize new ones.
-
-commit 54430df953d6c590e5f446530a21d18277eeda56
-Author: Ondrej Zajicek 
-Date:   Thu Sep 8 19:41:02 2022 +0200
-
-    BGP: Do not assume that all channels are struct bgp_channel
-    
-    In principle, the channel list is a list of parent struct proto and can
-    contain general structures of type struct channel, That is useful e.g.
-    for adding MPLS channels to BGP.
-
-commit 92a856554780c262f188acb4cdcee363bf6dd1bb
-Author: Ondrej Zajicek 
-Date:   Tue Sep 27 16:47:52 2022 +0200
-
-    Filter: Add some minor functions for f_tree and EC
-    
-    Add some supportive functions for f_tree and EC. These functions are used
-    by L3VPN code.
-
-commit da0b589e7bbcd8177702caa925063d36e7f316ec
-Author: Ondrej Zajicek 
-Date:   Tue Sep 27 16:13:27 2022 +0200
-
-    BGP: Some fixes related to VRF and MPLS interactions
-    
-     - When next hop is reset to local IP, we should remove BGP label stack,
-       as it is related to original next hop
-    
-     - BGP next hop or immediate next hop from one VRF should not be passed
-       to another VRF, as they are different IP namespaces
-
-commit 605ff0a0ebdd32b1a98316737c3e65acb528a156
-Author: Maria Matejka 
-Date:   Mon Oct 3 17:09:02 2022 +0200
-
-    RPKI: wait for retry_time if we get error immediately after connected
-
-commit 67256d50359d42aca4e64bb1cb5dcb3c63669578
-Merge: 7901c4050 61c127c02
-Author: Maria Matejka 
-Date:   Thu Sep 29 10:00:32 2022 +0200
-
-    Merge branch 'tmp-bad-learn' into thread-next
-
-commit 61c127c021ac34eba25d3245ccf8f9eb9dd352f5
-Merge: 9be7aa9b4 9efaf6baf
-Author: Maria Matejka 
-Date:   Thu Sep 29 09:58:27 2022 +0200
-
-    Merge commit '9efaf6ba' into tmp-bad-learn
-    
-    Also fixed forgotten best route selection among alien routes.
-
-commit 9be7aa9b450f22cec9c97143d0cb7650f4fd7cc9
-Merge: 32a67c93e 4364ee9b6
-Author: Maria Matejka 
-Date:   Tue Sep 27 12:46:22 2022 +0200
-
-    Merge commit '4364ee' into tmp-bad-learn
-
-commit 32a67c93ebf29309286dca5195f026eeda3f78a2
-Merge: 57a34d466 cae597987
-Author: Maria Matejka 
-Date:   Tue Sep 27 12:39:07 2022 +0200
-
-    Merge commit 'cae5979871ee7aa341334f8b1af6bafc60ee9692' into tmp-bad-learn
-
-commit 57a34d466e85bedbf40a0f7cbde23b843a303c8d
-Author: Maria Matejka 
-Date:   Tue Sep 27 12:17:05 2022 +0200
-
-    KRT: Fix route learning
-    
-    This is a reimplementation of commit 0f2be469f897b6d9f925563bbf522438c83522ea
-    by Alexander Zubkov. In the master branch, changes in commit eb937358
-    broke setting of channel preference for alien routes learned during
-    scan. The preference was set only for async routes.
-    
-    The original solution is extended here to accomodate for v3 specifics.
-
-commit 0f2be469f897b6d9f925563bbf522438c83522ea
-Author: Alexander Zubkov 
-Date:   Wed Sep 21 17:07:11 2022 +0200
-
-    KRT: Fix setting default preference
-    
-    Changes in commit eb937358 broke setting of channel preference for alien
-    routes learned during scan. The preference was set only for async routes.
-    Move common attribute processing part of functions krt_learn_async() and
-    krt_learn_async() to a separate function to have only one place for such
-    changes.
-
-commit 7901c40500af1749848b79833ddfe66c22e81f50
-Merge: c2261fa8a 3fd1f4618
-Author: Maria Matejka 
-Date:   Mon Sep 26 12:21:33 2022 +0200
-
-    Merge commit '3fd1f461' into thread-next
-    
-    closes #16
-    closes #17
-    closes #18
-
-commit c2261fa8add264d3668f1fe270b6961d81afe6b5
-Merge: 6cfe2066a aadf690b1
-Author: Maria Matejka 
-Date:   Mon Sep 26 12:09:51 2022 +0200
-
-    Merge commit 'aadf690b' into thread-next
-    
-    Merging the old version of route refresh export settle times with -s
-    ours as the new version is more contained.
-
-commit 6cfe2066ab024251936b119ab5c39a3892d8342a
-Author: Maria Matejka 
-Date:   Mon Sep 26 12:09:14 2022 +0200
-
-    Higher export settle times when route refresh is running.
-    
-    This helps the route refresh procedures to finish or at least
-    do more work before the exporters jump in and steal all the CPU time
-    for themselves.
-
-commit ecaa3df3c4b090cceac4494658f80eb0a0b1e8b6
-Author: Maria Matejka 
-Date:   Fri Sep 23 09:58:00 2022 +0200
-
-    More verbose logging of table auxiliary export states
-
-commit 5338a779c975c12074e9dd7ba10ba49fb7ed4bda
-Author: Maria Matejka 
-Date:   Fri Sep 23 09:57:40 2022 +0200
-
-    Fixed possible race condition in hostcache trie matching code not triggering HCU
-
-commit b1ade5efa1164e42ff62cb0f242774cc9b47886d
-Author: Maria Matejka 
-Date:   Wed Sep 21 18:43:44 2022 +0200
-
-    Fixed the export settle timer to be actually a settle timer
-
-commit f51837ace6bfa357f45c6bb5f573fd61a3f1f039
-Author: Maria Matejka 
-Date:   Wed Sep 21 16:53:17 2022 +0200
-
-    Caching eattrs in filters is not needed anymore.
-    
-    After flattening the route attribute structure, the ea_list ** is derivable
-    from rte * by arithmetics. Caching the derived value doesn't help performance
-    and therefore is removed as unnecessary.
-
-commit 05c63ae734f4dcfeb479e4bd69550f6ce4fef1d7
-Author: Maria Matejka 
-Date:   Wed Sep 21 13:39:13 2022 +0200
-
-    Flushing tmp_linpool in tree test and in static protocol
-
-commit 30a909f9bc3b18182070f7385342f7fbcb41dbdd
-Author: Maria Matejka 
-Date:   Wed Sep 21 12:08:52 2022 +0200
-
-    Trie test uses direct tmp_allocz() instead of lp_allocz(tmp_linpool)
-
-commit 896dbbfe4a6fec663b1fa3bb3c529b7c4fb2f625
-Author: Maria Matejka 
-Date:   Wed Sep 21 11:49:35 2022 +0200
-
-    Local page allocation
-
-commit 6768e0cf9e4b7befbc29f2d40a6b15e1198908f5
-Author: Maria Matejka 
-Date:   Tue Sep 20 17:01:50 2022 +0200
-
-    Pipe kick-and-drain packed into a neat structure and functions.
-
-commit 4b4fe1bd65f0dcebe3ff51a395acf0fd21c46a5d
-Author: Maria Matejka 
-Date:   Tue Sep 20 17:14:31 2022 +0200
-
-    BFD: The old pipe notification mechanism replaced by events
-
-commit 28d4ac6c97fd8021083a523fc713fc6d9322f181
-Author: Maria Matejka 
-Date:   Tue Sep 20 14:57:43 2022 +0200
-
-    Fixed display of standby memory
-
-commit a00e0b5930b6f1e56eed65cb5250aa9120a6f506
-Merge: 4ba52a268 df476c2e5
-Author: Maria Matejka 
-Date:   Tue Sep 20 13:10:29 2022 +0200
-
-    Merge commit 'df476c2e' into thread-next
-    
-    Implemented the corking by our own commit, merging with "ours" strategy.
-
-commit 4ba52a26877f0f9ac91ace02b99624b7d8152d22
-Author: Maria Matejka 
-Date:   Tue Sep 20 12:40:23 2022 +0200
-
-    Route export may get corked on refeed startup
-
-commit 5d7b2676a1e64b624c3996d1148b2f43d0c19995
-Merge: 28427a68c 0fd1c1d09
-Author: Maria Matejka 
-Date:   Tue Sep 20 09:52:03 2022 +0200
-
-    Merge commit '0fd1c1d0' into thread-next
-    
-    Using the "ours" strategy as the changes introduced in merged commits
-    are already implemented in thread-next in a different way.
-
-commit 28427a68c32d5684652dd22400a9143722294886
-Merge: 29712c691 adf37d8ef
-Author: Maria Matejka 
-Date:   Tue Sep 20 09:14:39 2022 +0200
-
-    Merge commit 'adf37d8e' into thread-next
-
-commit 29712c691d4f2cadb6517e3759bdf5e60b1fb4d9
-Merge: a4a9e9cf1 dc160e11e
-Author: Maria Matejka 
-Date:   Tue Sep 20 09:13:36 2022 +0200
-
-    Merge commit 'dc160e11' into thread-next
-
-commit a4a9e9cf194c459688adc9a6b032341627f64c6a
-Merge: c179d4d64 c73343de6
-Author: Maria Matejka 
-Date:   Mon Sep 19 12:58:26 2022 +0200
-
-    Merge remote-tracking branch 'origin/master' into thread-next
-    
-    Ignoring that revert as the thread stack needs a completely different
-    allocation strategy. Not the current one either, yet it has to be done
-    yet.
-
-commit c179d4d644cfa835f53c2fc4aeb83728f5b3b76d
-Author: Maria Matejka 
-Date:   Wed Sep 14 14:45:21 2022 +0200
-
-    Switched off forking for filter test.
-    
-    You don't want to fork with threads running.
-
-commit f33793acf768646b63c42287de2e09e7f33d7b1f
-Merge: cf38092b2 4f3fa1623
-Author: Maria Matejka 
-Date:   Sun Sep 18 16:36:07 2022 +0200
-
-    Merge commit '4f3fa162' into HEAD
-
-commit cf38092b2ddf7c3bc8d2ec25e57c2621462c02c2
-Author: Maria Matejka 
-Date:   Wed Sep 14 10:25:09 2022 +0200
-
-    Fix for table hostcache corking and shutdown race conditions
-
-commit 12fd6c989a6676ff2bcb9475e96897338c59c5f8
-Merge: 0861d3a8a 1518970c1
-Author: Maria Matejka 
-Date:   Sun Sep 18 16:35:40 2022 +0200
-
-    Merge commit '1518970c' into HEAD
-
-commit 0861d3a8a3af3935d474a12c6227ea2403375b4c
-Author: Maria Matejka 
-Date:   Mon Sep 12 11:09:43 2022 +0200
-
-    Fixing several race-conditions in event code.
-    
-    After a suggestion by Santiago, I added the direct list pointer into
-    events and the events are now using this value to check whether the
-    route is active or not. Also the whole trick with sentinel node unioned
-    with event list is now gone.
-    
-    For debugging, there is also an internal circular buffer to store what
-    has been recently happening in event code before e.g. a crash happened.
-    By default, this debug is off and must be manually enabled in
-    lib/event.c as it eats quite some time and space.
-
-commit e3e15f36fa54414e497fab1a054c89c6b1cdd1df
-Author: Maria Matejka 
-Date:   Tue Sep 13 11:39:35 2022 +0200
-
-    Longer unit test default timeout to prevent spurious build failures on slow virtuals
-
-commit c9d18e5ec57d0cb641ba8aee6d71476c4f5d2a73
-Author: Maria Matejka 
-Date:   Mon Sep 12 18:27:01 2022 +0200
-
-    Table: Re-scheduling prune event when another prune loop is pending
-
-commit ff86f23dc71e75f3761042f750044645ab4e2ea1
-Author: Maria Matejka 
-Date:   Mon Sep 12 12:28:05 2022 +0200
-
-    Export event doesn't have to be postponed before requeuing as an export-stop event
-
-commit 769224d79c3a25057932dda1d5d3ea9b583db1e5
-Author: Maria Matejka 
-Date:   Mon Sep 12 10:25:14 2022 +0200
-
-    Converted simple table events to loop flags
-
-commit eac634575959a3d32007ebed9921897976c9a82d
-Author: Maria Matejka 
-Date:   Mon Sep 12 10:24:55 2022 +0200
-
-    Loop flags: a simple idempotent event announcement mechanism
-
-commit 66f27005ec1a3e1fa78733aad56dcd976fbb2744
-Author: Maria Matejka 
-Date:   Sun Sep 11 22:26:24 2022 +0200
-
-    Cancelling all timers when loop stops
-
-commit c49ee6e1a673fc1dc396857dbf8a73fa5d9d6b74
-Author: Maria Matejka 
-Date:   Fri Sep 9 13:52:37 2022 +0200
-
-    Routing tables have their own service loops.
-
-commit b80823fe828a0687d4baae3c34c737d46fbf439c
-Author: Maria Matejka 
-Date:   Fri Sep 9 20:57:59 2022 +0200
-
-    Memory pages allocator is now a global simple lockless structure
-
-commit c73343de67afc703dfe812b8e94034b1b1dcfca8
-Author: Maria Matejka 
-Date:   Fri Sep 16 10:11:51 2022 +0200
-
-    Revert "Reducing filter stack size to allow for lesser thread stack size"
-    
-    This reverts commit 2c13759136951ef0e70a3e3c2b2d3c9a387f7ed9.
-
-commit 1518970c128e6ab68884a7f49e09e2dc2a5d9fe3
-Author: Maria Matejka 
-Date:   Wed Sep 14 09:59:45 2022 +0200
-
-    Revert "Routing tables now have their own loops."
-    
-    This reverts commit 878eeec12bf020c9e7460040d225a929bbbd2bd2.
-    
-    These changes have been done in a different way in the other branch of
-    the future merge.
-
-commit 3d627d09d4da3bdc1712bde67ba62c9cfbfcedc9
-Author: Maria Matejka 
-Date:   Fri Sep 9 19:09:31 2022 +0200
-
-    Table export announcer needs both an event and a timer to do export bundling the right way
-
-commit 974f16b1f70ae8b7fa4efa6a217988e1811069e7
-Author: Maria Matejka 
-Date:   Fri Sep 9 15:04:36 2022 +0200
-
-    Created a dedicated settle timer structure
-
-commit 31e881bcbd59cf55c8614a7a7324d4a7ed8f3ed8
-Merge: 26bfd4cc0 71b3456ee
-Author: Maria Matejka 
-Date:   Fri Sep 9 13:17:24 2022 +0200
-
-    Merge remote-tracking branch 'origin/master' into thread-next
-
-commit 26bfd4cc0350ef3249b0283d7fa9977cb13a5e55
-Merge: 3ace3a428 d2c1036a4
-Author: Maria Matejka 
-Date:   Fri Sep 9 13:15:50 2022 +0200
-
-    Merge commit 'd2c1036a42881d413ec97203ede92a69f8cd218f' into thread-next
-
-commit 3ace3a4281c2533a8cf39617644be0bbed8747a3
-Merge: fb7fb6744 16ac6c3c7
-Author: Maria Matejka 
-Date:   Fri Sep 9 13:10:18 2022 +0200
-
-    Merge branch 'mq-fix-eattr-setting' into thread-next
-
-commit fb7fb6744582b2bb74b3b1e32696bd5534e93054
-Author: Maria Matejka 
-Date:   Wed Sep 7 13:54:20 2022 +0200
-
-    Table access is now locked.
-
-commit a42877b9bf09c4c042bced3910ade9b71ce3724c
-Author: Maria Matejka 
-Date:   Wed Sep 7 20:26:20 2022 +0200
-
-    Table feed refactoring to allow for locking and unlocking
-
-commit 5103de4e8ed7f4744326129a4296cf3511b1e1f9
-Author: Maria Matejka 
-Date:   Wed Sep 7 15:06:22 2022 +0200
-
-    Table long-locking debug code
-
-commit e2c612063649cb5134459ab0a2c7377f00d6e9c0
-Author: Maria Matejka 
-Date:   Wed Sep 7 13:12:44 2022 +0200
-
-    Next hop updater has its own event
-
-commit a61a04b5c8fcfccf491f7f9baebab352c3692f54
-Author: Maria Matejka 
-Date:   Tue Sep 6 19:38:40 2022 +0200
-
-    Next hop refactoring to allow for table locking
-
-commit 71b3456eede17be6646b7deebff84f34ee5755f7
-Author: Maria Matejka 
-Date:   Fri Oct 22 19:43:55 2021 +0200
-
-    Better profylaction recursive route loops
-    
-    In some specific configurations, it was possible to send BIRD into an
-    infinite loop of recursive next hop resolution. This was caused by route
-    priority inversion.
-    
-    To prevent priority inversions affecting other next hops, we simply
-    refuse to resolve any next hop if the best route for the matching prefix
-    is recursive or any other route with the same preference is recursive.
-    
-    Next hop resolution doesn't change route priority, therefore it is
-    perfectly OK to resolve BGP next hops e.g. by an OSPF route, yet if the
-    same (or covering) prefix is also announced by iBGP, by retraction of
-    the OSPF route we would get a possible priority inversion.
-
-commit 28accd4f05e9c153d702736f3e08fa66e81a5536
-Author: Maria Matejka 
-Date:   Mon Sep 5 12:55:36 2022 +0200
-
-    Next hop update triggered at the very end of hostcache update
-
-commit 636bc44e61b5361b675ddd1ad7edb0b5ff2c2f2f
-Author: Maria Matejka 
-Date:   Mon Sep 5 06:58:42 2022 +0200
-
-    Exporter routine refactoring to allow for nicer table locking
-
-commit 66ccdc2a0c8f10263679e7fac37c1db1adf64b4f
-Author: Maria Matejka 
-Date:   Thu Sep 1 11:17:35 2022 +0200
-
-    Added an indirection to the export announcement routine
-    
-    There are performance reasons for this, mostly that we don't want to
-    ping the table service routine with every import.
-
-commit dd786e338c4adccee7077c8ecfaf56df2831ee4c
-Author: Maria Matejka 
-Date:   Thu Sep 1 10:39:56 2022 +0200
-
-    ROA subscriptions are also converted to export requests.
-    
-    By this, the requesting channels do the timers in their own loops,
-    avoiding unnecessary synchronization when the central timer went off.
-    
-    This is of course less effective for now, yet it allows to easily
-    implement selective reloads in future.
-
-commit cd628d124dbdcfdbd870b3df5840cc6888d36f9d
-Author: Maria Matejka 
-Date:   Wed Aug 31 16:04:36 2022 +0200
-
-    Flowspec revalidate notification converted to an export hook
-    
-    Instead of synchronous notifications, we use the asynchronous export
-    framework to notify flowspec src route updates. This allows us to
-    invoke flowspec revalidation without locking collisions.
-
-commit ecdb1ec6eabbf0c47c410e9bb8551ab5d039a650
-Author: Maria Matejka 
-Date:   Wed Aug 31 14:01:59 2022 +0200
-
-    Hostcache update notification converted to an export hook
-    
-    Instead of synchronous notifications, we use the asynchronous export
-    framework to notify also hostcache updates. This allows us to do the
-    hostcache update and the subsequent next hop update notification without
-    locking collisions.
-
-commit 7450eea071941c683da158d6dfe8365288eed5b8
-Author: Maria Matejka 
-Date:   Wed Aug 31 11:58:27 2022 +0200
-
-    Miscellaneous refactoring
-
-commit 83ceb91b50ae75ee5509faa74e2f6d4bdcf78505
-Author: Maria Matejka 
-Date:   Tue Aug 30 19:40:58 2022 +0200
-
-    Table debug is now a per-table setting and has categories.
-
-commit 397fec4741b40f61d06a467b4110aad7e996485c
-Author: Maria Matejka 
-Date:   Thu Sep 1 14:21:56 2022 +0200
-
-    Default tables are not created unless actually used.
-    
-    This allows for setting default table values at the beginning of config
-    file before "master4" and "master6" tables are initialized.
-
-commit 34912b029b161cbbed44057dfa913669ccb087eb
-Author: Maria Matejka 
-Date:   Tue Aug 30 18:05:00 2022 +0200
-
-    Tables: Requesting prune only after export cleanup
-    
-    We can't free the network structures before the export has been cleaned
-    up, therefore it makes more sense to request prune only after export
-    cleanup. This change also reduces prune calls on table shutdown.
-
-commit d2c1036a42881d413ec97203ede92a69f8cd218f
-Merge: dc28c6ed1 16ac6c3c7
-Author: Maria Matejka 
-Date:   Thu Aug 18 22:07:50 2022 +0200
-
-    Merge branch 'mq-fix-eattr-setting' into backport
-
-commit dc28c6ed1c6643ec19d2e8f94f92955f58c357a7
-Author: Maria Matejka 
-Date:   Thu Aug 18 18:32:33 2022 +0200
-
-    Simplified the protocol hookup code in Makefiles
-
-commit 16ac6c3c74020f043204ecf44aba30ba7257a3e3
-Author: Maria Matejka 
-Date:   Thu Aug 18 17:44:00 2022 +0200
-
-    Fixed initialization of Linux kernel route attributes
-
-commit 95d970d7a0e7bd6cab03f3b8535eed031c43773c
-Merge: e9e6baae3 bc4ad83da
-Author: Maria Matejka 
-Date:   Fri Aug 5 11:14:33 2022 +0200
-
-    Merge branch 'backport' into thread-next
-
-commit e9e6baae3756a80a581391eec6dcbda866fe769d
-Merge: a32cee781 082905a83
-Author: Maria Matejka 
-Date:   Fri Aug 5 11:09:44 2022 +0200
-
-    Merge commit '082905a8' into thread-next
-
-commit a32cee7813dc4e69f480d1b5fa574a159aded5f7
-Merge: 3ed6d0be9 534d0a4b4
-Author: Maria Matejka 
-Date:   Fri Aug 5 10:37:53 2022 +0200
-
-    Merge commit '534d0a4b' into thread-next
-
-commit 3ed6d0be93e79e8eb1867749e11e062f5cfe3f5c
-Merge: 12ae5d1b6 2e484f8d2
-Author: Maria Matejka 
-Date:   Fri Aug 5 10:31:40 2022 +0200
-
-    Merge commit '2e484f8d' into thread-next
-
-commit 12ae5d1b6bc7a115cfbc7549c6e5ab55a9fa349a
-Merge: 80f3603d6 971721c9b
-Author: Maria Matejka 
-Date:   Fri Aug 5 10:26:13 2022 +0200
-
-    Merge commit '971721c9' into thread-next
-
-commit 80f3603d69c9340a64fb31974d25c5f2ab5b3290
-Merge: 74eb4bad5 4d48ede51
-Author: Maria Matejka 
-Date:   Fri Aug 5 09:26:23 2022 +0200
-
-    Merge commit '4d48ede5' into thread-next
-
-commit 74eb4bad5fc8bef867fb4306185644aa1aa39d2b
-Merge: e60b83d8a c7d0c5b25
-Author: Maria Matejka 
-Date:   Wed Aug 3 20:01:42 2022 +0200
-
-    Merge commit 'c7d0c5b2' into thread-next
-
-commit e60b83d8ac361fc838d7ca0917f92aa96860312a
-Merge: 70e01358a 18f66055e
-Author: Maria Matejka 
-Date:   Wed Aug 3 18:00:17 2022 +0200
-
-    Merge commit '18f66055' into thread-next
-
-commit 70e01358a08b59ba70fc62affa31d9d2ebd96d07
-Merge: 5a96b9b12 038fcf1c8
-Author: Maria Matejka 
-Date:   Wed Aug 3 17:37:16 2022 +0200
-
-    Merge commit '038fcf1c' into thread-next
-    
-    It was necessary to update the code to match removal of rta, as well as
-    existence of cached nested attribute lists.
-
-commit bc4ad83dacb07ad6bb454b75d78daa2f9c953088
-Merge: 73abd91ac 082905a83
-Author: Maria Matejka 
-Date:   Wed Aug 3 15:04:42 2022 +0200
-
-    Merge commit '082905a8' into HEAD
-
-commit 73abd91ac661f28d9341c7fbb80d2f7a71db186d
-Author: Maria Matejka 
-Date:   Fri Jul 22 16:09:37 2022 +0200
-
-    rip_rte_better() uses the IGP_METRIC_UNKNOWN instead of protocol-specific infinity
-
-commit 5a96b9b12496082b9d6165f51597403546ed617d
-Merge: 71b434a98 97476e002
-Author: Maria Matejka 
-Date:   Wed Aug 3 14:07:53 2022 +0200
-
-    Merge commit '97476e00' into thread-next
-    
-    Had to fix route source locking inside BGP export table as we need to
-    keep the route sources properly allocated until even last BGP pending
-    update is sent out, therefore the export table printout is accurate.
-
-commit 97476e002d7dfb24a4613ac401b8f3192ca68d05
-Author: Maria Matejka 
-Date:   Wed Aug 3 11:57:29 2022 +0200
-
-    BGP: The bucket/prefix hashes are now a resource to allow for proper cleanup
-
-commit 71b434a987067475b517792360f58dbe03bfee9e
-Merge: 0072d11f3 f0507f05c
-Author: Maria Matejka 
-Date:   Tue Aug 2 22:08:59 2022 +0200
-
-    Merge commit 'f0507f05ce57398e135651896dace4cb68eeed54' into thread-next
-
-commit 0072d11f3431165240656edf6ade473554b8747e
-Merge: 2e95d269d db9153e21
-Author: Maria Matejka 
-Date:   Tue Aug 2 17:58:14 2022 +0200
-
-    Merge branch 'ballygarvan' into HEAD
-    
-    Replacing the old 3.0-alpha0 cork mechanism with another one inside the
-    routing table. This version should be simpler and also quite clear what
-    it does, why and when.
-
-commit 2e95d269d6bd42372d3273264e14775242b0744d
-Author: Maria Matejka 
-Date:   Tue Aug 2 17:55:50 2022 +0200
-
-    Revert "Split route table event into separate events"
-    
-    This reverts commit 445eeaf3df126af2c7b61e71c4f08a583eb4fa60.
-
-commit de5b884280fef52cf3307f336262a7c61f3acbfe
-Author: Maria Matejka 
-Date:   Tue Aug 2 17:55:47 2022 +0200
-
-    Revert "Table cork: Stop creating updates when there are too many pending."
-    
-    This reverts commit 3b20722a1fc777c27ab2e0451d0ea3fee7fa81a2.
-
-commit db9153e216b6f1847ac9cdf170b1d14c04552e41
-Author: Maria Matejka 
-Date:   Tue Aug 2 17:51:58 2022 +0200
-
-    Also next hop update routines are corking themselves when congestion is detected
-
-commit 449cd471adfc214c4ec0f0d574818d469b13deec
-Author: Maria Matejka 
-Date:   Tue Aug 2 12:54:11 2022 +0200
-
-    BGP: respecting table cork
-
-commit f8500b5943490ca62a1538fead4d8a88ad189c5a
-Author: Maria Matejka 
-Date:   Thu Jul 28 13:50:59 2022 +0200
-
-    Route table cork: Indicate whether the export queues are congested.
-    
-    These routines detect the export congestion (as defined by configurable
-    thresholds) and propagate the state to readers. There are no readers for
-    now, they will be added in following commits.
-
-commit 058ed711397df75350d905fc135758a6470c0143
-Author: Maria Matejka 
-Date:   Fri Nov 12 22:58:40 2021 +0100
-
-    Introducing basic RCU primitives for lock-less shared data structures
-
-commit f1d6c66a78758449f00ed709891e24ab3571cc9c
-Author: Maria Matejka 
-Date:   Mon Aug 1 15:17:41 2022 +0200
-
-    Fixed main birdloop init in unit tests
-    
-    Some unit tests weren't initializing the birdloop, trying to write the
-    birdloop ping into stdin. Fixed this and also forced stdin close on
-    startup of every test just to be sure that CI and local build behave the
-    same in this. (CI was failing on this while local build not.)
-
-commit f60f7dfdee556a12c47940bc6ec3113fdae46a5c
-Author: Maria Matejka 
-Date:   Thu Jul 28 19:52:19 2022 +0200
-
-    Sending an event must also ping the target IO loop
-
-commit e858dce757f8766a29f2151ec3ffef3df85af66b
-Author: Maria Matejka 
-Date:   Thu Jul 28 19:49:03 2022 +0200
-
-    Moved the thread starting code to IO loop code
-
-commit 00f6b162c9c357bddf48d52d08b6abb6010004b6
-Merge: e91754f5b 03bf6b908
-Author: Maria Matejka 
-Date:   Thu Jul 28 19:22:58 2022 +0200
-
-    Merge commit '03bf6b90' into thread-next
-
-commit 03bf6b90879bb6e5f0fab05a61a843bb437dd30a
-Author: Maria Matejka 
-Date:   Thu Jul 28 19:22:48 2022 +0200
-
-    Revert "Adding a generic cork mechanism for events"
-    
-    This reverts commit 6e841b3153565632b6753f6b1fe74850c37f2808.
-
-commit 082905a8338b4ba20a08ada0d562bbc5e15c707b
-Merge: 2e484f8d2 ddb1bdf28
-Author: Ondrej Zajicek 
-Date:   Wed Jul 27 00:47:24 2022 +0200
-
-    Merge branch 'master' into backport
-
-commit ddb1bdf2819ce69248d5a51e71d803f13548b217
-Author: Ondrej Zajicek 
-Date:   Tue Jul 26 18:45:20 2022 +0200
-
-    Netlink: Restrict route replace for IPv6
-    
-    Seems like the previous patch was too optimistic, as route replace is
-    still broken even in Linux 4.19 LTS (but fixed in Linux 5.10 LTS) for:
-    
-      ip route add 2001:db8::/32 via fe80::1 dev eth0
-      ip route replace 2001:db8::/32 dev eth0
-    
-    It ends with two routes instead of just the second.
-    
-    The issue is limited to direct and special type (e.g. unreachable)
-    routes, the patch restricts route replace for cases when the new route
-    is a regular route (with a next hop address).
-
-commit 722daa950046a7ad307fd7aca8e0506f30b3d000
-Author: Ondrej Zajicek 
-Date:   Mon Jul 25 00:11:40 2022 +0200
-
-    Netlink: Simplify handling of IPv6 ECMP routes
-    
-    When IPv6 ECMP support first appeared in Linux kernel, it used different
-    API than IPv4 ECMP. Individual next hops were updated and announced
-    separately, instead of using RTA_MULTIPATH as in IPv4. This has several
-    drawbacks and requires complex code to merge received notifications to
-    one multipath route.
-    
-    When Linux came with IPv6 RTA_MULTIPATH support, the initial versions
-    were somewhat buggy, so we kept using the old API for updates (splitting
-    multipath routes to sequences of route updates), while accepting both
-    old-style routes and RTA_MULTIPATH routes in scans / notifications.
-    
-    As IPv6 RTA_MULTIPATH support is here for a long time, this patch fully
-    switches Netlink to the IPv6 RTA_MULTIPATH API and removes old complex
-    code for handling individual next hop announces.
-    
-    The required Linux version is at least 4.11 for reliable operation.
-    
-    Thanks to Daniel Gröber for the original patch.
-
-commit 2e484f8d2977186f6d97213827a66847738d2c31
-Merge: 4d48ede51 971721c9b
-Author: Ondrej Zajicek 
-Date:   Sun Jul 24 20:08:02 2022 +0200
-
-    Merge branch 'master' into backport
-
-commit 534d0a4b44aa193da785ae180475a448f57805e2
-Author: Ondrej Zajicek 
-Date:   Sun Jul 24 02:15:20 2022 +0200
-
-    KRT: Scan routing tables separetely on linux to avoid congestion
-    
-    Remove compile-time sysdep option CONFIG_ALL_TABLES_AT_ONCE, replace it
-    with runtime ability to run either separate table scans or shared scan.
-    
-    On Linux, use separate table scans by default when the netlink socket
-    option NETLINK_GET_STRICT_CHK is available, but retreat to shared scan
-    when it fails.
-    
-    Running separate table scans has advantages where some routing tables are
-    managed independently, e.g. when multiple routing daemons are running on
-    the same machine, as kernel routing table modification performance is
-    significantly reduced when the table is modified while it is being
-    scanned.
-    
-    Thanks Daniel Gröber for the original patch and Toke Høiland-Jørgensen
-    for suggestions.
-
-commit 432dfe3b9b97062be243609d69e0f49bdb0bcaf6
-Author: Maria Matejka 
-Date:   Fri Jul 22 15:48:20 2022 +0200
-
-    Fixed a rarely used part of Babel: comparing two routes in table by their metric
-
-commit 4d48ede51dfff9a59572a6b7a21a1bbf159dec60
-Author: Maria Matejka 
-Date:   Fri Jul 22 15:37:21 2022 +0200
-
-    Revert "Export table: Delay freeing of old stored route."
-    
-    This reverts commit cee0cd148c9b71bf47d007c850193b5fbf9486c1.
-    This change is not needed in version 2 and the surrounding code has
-    disappeared mostly in version 3.
-
-commit e91754f5b9ef68d52f5ff3abcd24661034a0feed
-Author: Maria Matejka 
-Date:   Fri Jun 24 19:53:34 2022 +0200
-
-    Event lists rewritten to a single linked list
-    
-    In multithreaded environment, we need to pass messages between workers.
-    This is done by queuing events to their respective queues. The
-    double-linked list is not really useful for that as it needs locking
-    everywhere.
-    
-    This commit rewrites the event subsystem to use a single-linked list
-    where events are enqueued by a single atomic instruction and the queue
-    is processed after atomically moving the whole queue aside.
-
-commit 08c84846089a131a0e7e9e0185b6c6ccb4ed4e2d
-Merge: 4b6f5ee87 94eb0858c
-Author: Maria Matejka 
-Date:   Mon Jul 18 12:33:00 2022 +0200
-
-    Merge commit '94eb0858' into thread-next
-
-commit 4b6f5ee8709b2fae9da13c58bfbae21b84cd40c5
-Merge: 9901ca6fb a4451535c
-Author: Maria Matejka 
-Date:   Mon Jul 18 11:11:46 2022 +0200
-
-    Merge commit 'a4451535' into thread-next
-
-commit 9901ca6fb3683091c7eb424cbba8c7bc94e41cbb
-Author: Maria Matejka 
-Date:   Mon Jul 18 10:56:20 2022 +0200
-
-    Fixed an annoying warning in ea_get_storage()
-
-commit 812edb85e14de1d5fe07a246176b4ed1a2ec0054
-Author: Maria Matejka 
-Date:   Mon Jul 18 10:26:55 2022 +0200
-
-    Fixing build issues caused by a nonportable Makefile rule
-
-commit 636ab95f44efee774343f711ec46e69c6bea4e81
-Merge: 05673b16a a845651bc
-Author: Maria Matejka 
-Date:   Mon Jul 18 10:19:59 2022 +0200
-
-    Merge commit 'a845651b' into thread-next
-
-commit 05673b16a87792baf8734dfcbf12ac2fd867f80b
-Merge: 1c2851ecf c70b3198d
-Author: Maria Matejka 
-Date:   Fri Jul 15 14:57:02 2022 +0200
-
-    Merge commit 'c70b3198' into thread-next [lots of conflicts]
-    
-    There were more conflicts that I'd like to see, most notably in route
-    export. If a bisect identifies this commit with something related, it
-    may be simply true that this commit introduces that bug. Let's hope it
-    doesn't happen.
-
-commit 1c2851ecfa94f3d0b732a267c6c2db8b817c37f4
-Author: Maria Matejka 
-Date:   Thu Jul 14 11:09:23 2022 +0200
-
-    Fixed invalid routes handling
-    
-    The invalid routes were filtered out before they could ever get
-    exported, yet some of the routines need them available, e.g. for
-    display or import reload.
-    
-    Now the invalid routes are properly exported and dropped in channel
-    export routines instead.
-
-commit 239edf8d315f90de23c3ff6c68be77049fa6fa05
-Merge: 68a2c9d4c b5c8fce28
-Author: Maria Matejka 
-Date:   Wed Jul 13 14:46:36 2022 +0200
-
-    Merge branch 'backport' into thread-next
-
-commit 68a2c9d4c91a36c90a768926495f7894324287c5
-Merge: af0d5ec27 2e5bfeb73
-Author: Maria Matejka 
-Date:   Wed Jul 13 14:14:37 2022 +0200
-
-    Merge commit '2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f' into thread-next
-
-commit af0d5ec2797bab2a928fa8ce2caf81608a3f7443
-Merge: 5be34f5ab d429bc5c8
-Author: Maria Matejka 
-Date:   Wed Jul 13 12:54:20 2022 +0200
-
-    Merge commit 'd429bc5c841a8e9d4c81786973edfa56d20a407e' into thread-next
-
-commit 5be34f5ab4aa0c8852db6bf19cad5e81f46640e3
-Merge: 4ec443b5c 7e9cede1f
-Author: Maria Matejka 
-Date:   Wed Jul 13 12:02:34 2022 +0200
-
-    Merge commit '7e9cede1fd1878fb4c00e793bccd0ca6c18ad452' into thread-next
-
-commit 4ec443b5c283fc4f37629bc38ef3730e0a7cc932
-Author: Maria Matejka 
-Date:   Wed Jul 13 11:19:00 2022 +0200
-
-    Fixed bug in repeated show route command
-    
-    Introduced by 13ef5e53dd4a98c80261139b4c9ce4b1074cac40, the CLI was not
-    properly cleaned up when the command finished, causing BIRD to not parse
-    any other command after "show route".
-
-commit 4f16270dd91df68410760edad3fa7a1ecfc1c35b
-Merge: 2a2756442 f18968f52
-Author: Maria Matejka 
-Date:   Tue Jul 12 15:05:04 2022 +0200
-
-    Merge commit 'f18968f5' into thread-next
-
-commit 971721c9b50d361e886762f1c7d0392e10f74021
-Author: Ondrej Zajicek 
-Date:   Tue Jul 12 15:03:17 2022 +0200
-
-    BGP: Minor improvements to BGP roles
-    
-    Add support for bgp_otc in filters and warning for configuration
-    inside confederations.
-
-commit 2a27564423638e2bbe2a3d879bf2967d2d3b9426
-Merge: bc2ce4aaa 1df20989c
-Author: Maria Matejka 
-Date:   Tue Jul 12 14:46:17 2022 +0200
-
-    Merge commit '1df20989' into thread-next
-
-commit 1df20989c191353d9c6da4d8679f8cb1ead49f7f
-Author: Maria Matejka 
-Date:   Tue Jul 12 14:46:06 2022 +0200
-
-    Revert "Special table hooks rectified."
-    
-    This reverts commit 44f26c49f966ca842ff9af55468de0b98c44b73e.
-
-commit bc2ce4aaa8d1e4d56776ee35352c5e2caa09a0e5
-Author: Maria Matejka 
-Date:   Tue Jul 12 12:40:18 2022 +0200
-
-    Removing the rte_modify API
-    
-    For BGP LLGR purposes, there was an API allowing a protocol to directly
-    modify their stale routes in table before flushing them. This API was
-    called by the table prune routine which violates the future locking
-    requirements.
-    
-    Instead of this, BGP now requests a special route export and reimports
-    these routes into the table, allowing for asynchronous execution without
-    locking the table on export.
-
-commit 080cbd1219ba86dd44712d0d24ceae884b34ec4b
-Author: Maria Matejka 
-Date:   Tue Jul 12 10:36:10 2022 +0200
-
-    Route refresh in tables uses a stale counter.
-    
-    Until now, we were marking routes as REF_STALE and REF_DISCARD to
-    cleanup old routes after route refresh. This needed a synchronous route
-    table walk at both beginning and the end of route refresh routine,
-    marking the routes by the flags.
-    
-    We avoid these walks by using a stale counter. Every route contains:
-      u8 stale_cycle;
-    Every import hook contains:
-      u8 stale_set;
-      u8 stale_valid;
-      u8 stale_pruned;
-      u8 stale_pruning;
-    
-    In base_state, stale_set == stale_valid == stale_pruned == stale_pruning
-    and all routes' stale_cycle also have the same value.
-    
-    The route refresh looks like follows:
-    + ----------- + --------- + ----------- + ------------- + ------------ +
-    |             | stale_set | stale_valid | stale_pruning | stale_pruned |
-    | Base        |     x     |      x      |        x      |       x      |
-    | Begin       |    x+1    |      x      |        x      |       x      |
-      ... now routes are being inserted with stale_cycle == (x+1)
-    | End         |    x+1    |     x+1     |        x      |       x      |
-      ... now table pruning routine is scheduled
-    | Prune begin |    x+1    |     x+1     |       x+1     |       x      |
-      ... now routes with stale_cycle not between stale_set and stale_valid
-          are deleted
-    | Prune end   |    x+1    |     x+1     |       x+1     |      x+1     |
-    + ----------- + --------- + ----------- + ------------- + ------------ +
-    
-    The pruning routine is asynchronous and may have high latency in
-    high-load environments. Therefore, multiple route refresh requests may
-    happen before the pruning routine starts, leading to this situation:
-    
-    | Prune begin |    x+k    |     x+k     |    x -> x+k   |       x      |
-      ... or even
-    | Prune begin |   x+k+1   |     x+k     |    x -> x+k   |       x      |
-      ... if the prune event starts while another route refresh is running.
-    
-    In such a case, the pruning routine still deletes routes not fitting
-    between stale_set and and stale_valid, effectively pruning the remnants
-    of all unpruned route refreshes from before:
-    
-    | Prune end   |    x+k    |     x+k     |       x+k     |      x+k     |
-    
-    In extremely rare cases, there may happen too many route refreshes
-    before any route prune routine finishes. If the difference between
-    stale_valid and stale_pruned becomes more than 128 when requesting for
-    another route refresh, the routine walks the table synchronously and
-    resets all the stale values to a base state, while logging a warning.
-
-commit c73b5d2d3d94204d2a81d93efd02c4c115859353
-Author: Eugene Bogomazov 
-Date:   Mon Jul 11 17:19:34 2022 +0200
-
-    BGP: Implement BGP roles
-    
-    Implement BGP roles as described in RFC 9234. It is  a mechanism for
-    route leak prevention and automatic route filtering based on common BGP
-    topology relationships. It defines role capability (controlled by 'local
-    role' option) and OTC route attribute, which is used for automatic route
-    filtering and leak detection.
-    
-    Minor changes done by commiter.
-
-commit 4ef2262bd575b071e43c30d0199398a5f6ac27a5
-Author: Maria Matejka 
-Date:   Mon Jul 11 17:08:59 2022 +0200
-
-    There are now no internal tables at all.
-
-commit 9efaf6bafea1c69629e59c6504980fb2986287fe
-Author: Maria Matejka 
-Date:   Mon Jul 11 17:04:52 2022 +0200
-
-    Dropped the internal kernel protocol table for learnt routes.
-    
-    The learnt routes are now pushed all into the connected table, not only
-    the best one. This shouldn't do any damage in well managed setups, yet
-    it should be noted that it is a change of behavior.
-    
-    If anybody misses a feature which they implemented by misusing this
-    internal learn table, let us know, we'll consider implementing it in a
-    better way.
-
-commit 6b0368cc2c317d1acc0881a96b32ded291d82741
-Author: Maria Matejka 
-Date:   Mon Jun 20 19:10:49 2022 +0200
-
-    Export tables merged with BGP prefix hash
-    
-    Until now, if export table was enabled, Nest was storing exactly the
-    route before rt_notify() was called on it. This was quite sloppy and
-    spooky and it also wasn't reflecting the changes BGP does before
-    sending. And as BGP is storing the routes to be sent anyway, we are
-    simply keeping the already-sent routes in there to better rule out
-    unneeded reexports.
-    
-    Some of the route attributes (IGP metric, preference) make no sense in
-    BGP, therefore these will be probably replaced by something sensible.
-    Also the nexthop shown in the short output is the BGP nexthop.
-
-commit d5e3272f3d9b1bad7ceb6d0d5897a7269e28a537
-Author: Maria Matejka 
-Date:   Wed Jun 29 13:22:40 2022 +0200
-
-    Hash: iterable now per partes by an iterator
-    
-    It's now possible to pause iteration through hash. This requires
-    struct hash_iterator to be allocated somewhere handy.
-    
-    The iteration itself is surrounded by HASH_WALK_ITER and
-    HASH_WALK_ITER_END. Call HASH_WALK_ITER_PUT to ask for pausing; it may
-    still do some more iterations until it comes to a suitable pausing
-    point. The iterator must be initalized to an empty structure. No cleanup
-    is needed if iteration is abandoned inbetween.
-
-commit b06911f6ef1b4cd3f7ea541b062187e80a934dd8
-Author: Maria Matejka 
-Date:   Wed Jun 29 12:51:07 2022 +0200
-
-    Do not try to check flowspec validity for piped routes
-
-commit 61842ff3157d323f4d13b92effeca1c56c1dd262
-Author: Maria Matejka 
-Date:   Tue Jun 28 12:57:18 2022 +0200
-
-    Fixed bad import table attributes freeing
-
-commit fd72c696784ba74e793db1fb7c44668c47a383b2
-Author: Maria Matejka 
-Date:   Tue Jun 28 10:51:00 2022 +0200
-
-    Attribute lists split to storage headers and data to save BGP memory
-
-commit dc720a085f0f805891eb086bf96dac99c8a1b7da
-Author: Maria Matejka 
-Date:   Mon Jun 27 19:53:06 2022 +0200
-
-    Show route uses the export request also for one-net queries
-
-commit b5c8fce284a2bb529aee6ff201fe044f09a0e418
-Author: Maria Matejka 
-Date:   Mon Jul 11 13:04:01 2022 +0200
-
-    Added forgotten route source locking in flowspec validation
-
-commit 2e5bfeb73ac25e236a24b6c1a88d0f2221ca303f
-Merge: d429bc5c8 cb339a306
-Author: Maria Matejka 
-Date:   Mon Jul 11 11:08:10 2022 +0200
-
-    Merge remote-tracking branch 'origin/master' into backport
-
-commit d429bc5c841a8e9d4c81786973edfa56d20a407e
-Merge: 7e9cede1f beb5f78ad
-Author: Maria Matejka 
-Date:   Mon Jul 11 10:41:17 2022 +0200
-
-    Merge commit 'beb5f78a' into backport
-
-commit 7e9cede1fd1878fb4c00e793bccd0ca6c18ad452
-Merge: 652be92a2 b867c798c
-Author: Maria Matejka 
-Date:   Sun Jul 10 14:19:24 2022 +0200
-
-    Merge version 2.0.10 into backport
-
-commit cb339a30677901f2c248de08ff535cf0a9efab3d
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 14 20:36:20 2022 +0100
-
-    Filter: Implement for loops
-    
-    For loops allow to iterate over elements in compound data like BGP paths
-    or community lists. The syntax is:
-    
-      for [  ]  in  do 
-
-commit 1ac8e11bba15551ad6473a57a585649757fefa6b
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 10 01:02:45 2022 +0100
-
-    Filter: Implement mixed declarations of local variables
-    
-    Allow variable declarations mixed with code, also in nested blocks with
-    proper scoping, and with variable initializers. E.g:
-    
-    function fn(int a)
-    {
-      int b;
-      int c = 10;
-    
-      if a > 20 then
-      {
-        b = 30;
-        int d = c * 2;
-        print a, b, c, d;
-      }
-    
-      string s = "Hello";
-    }
-
-commit a2527ee53d9d8fe7a1c29b56f8450b9ef1f9c7bc
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 9 02:32:29 2022 +0100
-
-    Filter: Improve handling of stack frames in filter bytecode
-    
-    When f_line is done, we have to pop the stack frame. The old code just
-    removed nominal number of args/vars. Change it to use stored ventry value
-    modified by number of returned values. This allows to allocate variables
-    on a stack frame during execution of f_lines instead of just at start.
-    
-    But we need to know the number of returned values for a f_line. It is 1
-    for term, 0 for cmd. Store that to f_line during linearization.
-
-commit f31f4e6eef1762a4b9bf54a274f1ba9e9e161802
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 9 00:31:39 2022 +0100
-
-    Filter: Simplify handling of command sequences
-    
-    Command sequences in curly braces used a separate nonterminal in grammar.
-    Handle them as a regular command.
-
-commit 1e6acf34bbf2d9c31246c6fc450ac3b0232531e2
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 6 22:57:33 2022 +0100
-
-    Filter: Fix bug in variable shadowing
-    
-    When a new variable used the same name as an existing symbol in an outer
-    scope, then offset number was defined based on a scope of the existing
-    symbol ($3) instead of a scope of the new symbol (sym_). That can lead
-    to two variables sharing the same memory slot.
-
-commit 946cedfcfe3bdfd850613c4d891f8abfd6b2cafd
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 6 16:37:30 2022 +0100
-
-    Filter: Implement soft scopes
-    
-    Soft scopes are anonymous scopes that most likely do not contain any
-    symbol, so allocating regular scope is postponed when it is really
-    needed.
-
-commit 26bc4f9904b014c9949489e8ae28366da473e85d
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 6 02:18:01 2022 +0100
-
-    Filter: Implement direct recursion
-    
-    Direct recursion almost worked, just crashed on function signature check.
-    Split function parsing such that function signature is saved before
-    function body is processed. Recursive calls are marked so they can be
-    avoided during f_same() and similar code walking.
-    
-    Also, include tower of hanoi solver as a test case.
-
-commit fb1d8f65136aa6190b527b691f24abe16a461471
-Author: Ondrej Zajicek (work) 
-Date:   Fri Mar 4 17:51:50 2022 +0100
-
-    Filter: Apply constant promotion for FI_EQ / FI_NEQ
-    
-    Equality comparison is defined on all values, even of different
-    types, but we still want to do constant promotion if possible.
-
-commit b2d6d2948af268812a8f55f260d340194eb3f7ac
-Author: Alexander Zubkov 
-Date:   Fri Mar 4 14:07:58 2022 +0100
-
-    Filter: Add literal for empty set
-    
-    Add literal for empty set [], which works both for tree-based sets
-    and prefix sets by using existing constant promotion mechanism.
-    
-    Minor changes by committer.
-
-commit 8f3c6151b4ff11d98a20f6f9919723f0fb719161
-Author: Ondrej Zajicek (work) 
-Date:   Fri Mar 4 02:01:34 2022 +0100
-
-    Nest: Cleanups in as_path_filter()
-    
-    Use struct f_val as a common argument for as_path_filter(), as suggested
-    by Alexander Zubkov. That allows to use NULL sets as valid arguments.
-
-commit 9b302c133f02f96edc5caa769dfd21dc9ef038b5
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 3 20:34:44 2022 +0100
-
-    Filter: Ensure that all expressions declared return type
-    
-    All instructions with a return value (i.e. expressions, ones with
-    non-zero outval, third argument in INST()) should declare their return
-    type. Check that automatically by M4 macros.
-    
-    Set outval of FI_RETURN to 0. The instruction adds one value to stack,
-    but syntactically it is a statement, not an expression.
-    
-    Add fake return type declaration to FI_CALL, otherwise the automatic
-    check would fail builds.
-
-commit cde8094c1f81a74d8a434c4cbf41b4d9183e2879
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 3 15:11:05 2022 +0100
-
-    Filter: Improve description of type system
-
-commit 93d6096c8714f3c7c9450df89e812021a212b978
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 3 03:38:12 2022 +0100
-
-    Filter: Implement type checks for function calls
-    
-    Keep list of function parameters in f_line and use it to verify
-    types of arguments for function calls. Only static type checks
-    are implemented.
-
-commit 4c0c507b1fabbdab557d66eb9d90a2d3c8009880
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 1 02:04:35 2022 +0100
-
-    Filter: Clean up function call instruction
-    
-    Pass instructions of function call arguments as vararg arguments to
-    FI_CALL instruction constructor and move necessary magic from parser
-    code to interpreter / instruction code.
-
-commit beb5f78ada79ac90f31f2c4923302c74d9ab38bf
-Author: Maria Matejka 
-Date:   Mon Jun 27 19:04:22 2022 +0200
-
-    Preexport callback now takes the channel instead of protocol as argument
-    
-    Passing protocol to preexport was in fact a historical relic from the
-    old times when channels weren't a thing. Refactoring that to match
-    current extensibility needs.
-
-commit bdd6f728399a7601eaeff7165645fb0c597d309d
-Author: Maria Matejka 
-Date:   Mon Jun 27 13:39:28 2022 +0200
-
-    Moved nexthop + hostentry display to other eattrs
-
-commit d5cac1a4ef49f4159f3b95f53a405f81d785711b
-Author: Maria Matejka 
-Date:   Mon Jun 27 12:44:11 2022 +0200
-
-    Route attribute display now normalizes ea_lists.
-    
-    This is needed to display every attribute only once with overlay
-    attribute lists recently introduced.
-
-commit c431d9c33c72203498133d7e2422423c37c4719d
-Author: Maria Matejka 
-Date:   Mon Jun 27 12:32:15 2022 +0200
-
-    Fixed new route comparison
-
-commit d2142ad4050c64991f856734bafadd527c28e74b
-Author: Maria Matejka 
-Date:   Mon Jun 27 12:14:05 2022 +0200
-
-    Fixed displaying BGP and RIP attributes after recent reworks
-
-commit 0f2f5ac58c8bc487ad62d153bfc5ebdb97d54fbd
-Author: Maria Matejka 
-Date:   Mon Jun 27 11:04:57 2022 +0200
-
-    Fixed minor bugs in handling some route attributes
-
-commit dfb61dfceaa72dda477a5433a193da316dccef7f
-Author: Maria Matejka 
-Date:   Sun Jun 26 14:48:55 2022 +0200
-
-    Fixed undefined attribute handling
-
-commit 13ef5e53dd4a98c80261139b4c9ce4b1074cac40
-Author: Maria Matejka 
-Date:   Fri Jun 24 15:27:26 2022 +0200
-
-    The show-route CLI command now uses the route export API
-    
-    In the multithreaded environment, it is not supposed that anybody
-    traverses the routing table as the CLI show-route was doing. Now the
-    routing table traversal is gone and CLI won't hold the table locked
-    while computing filters.
-
-commit 5c1ebe012e1bbfec52b4fba8b59edd355a7dff91
-Author: Maria Matejka 
-Date:   Sun Jun 26 14:11:08 2022 +0200
-
-    Fixed forgotten preference handling in filters
-
-commit 9c9059fd172dcc2f8805529de4b3174f280c109c
-Author: Maria Matejka 
-Date:   Wed Jun 22 12:45:42 2022 +0200
-
-    Allowed optimized exporting of a subprefix tree
-    
-    Added an option for export filter to allow for prefiltering based on the
-    prefix. Routes outside the given prefix are completely ignored. Config
-    is simple:
-    
-            export in  ;
-
-commit 050b4b4e5e6d4c05345bed2ec62c865258b4e7ee
-Author: Maria Matejka 
-Date:   Mon Jun 20 21:29:10 2022 +0200
-
-    Table export generalized to allow for exporting from non-tables
-
-commit becab5072d6d84d6f9c9402387a9e1c14dcc384d
-Author: Maria Matejka 
-Date:   Thu Jun 16 23:24:56 2022 +0200
-
-    Import tables are stored as an attribute layer inside the main tables.
-    
-    The separate import tables were too memory-greedy, there is no need for
-    them being stored as full-sized tables.
-
-commit 8c92f47ac77f267368b6d6bd161689a0c0bc5e5a
-Author: Maria Matejka 
-Date:   Thu Jun 16 23:24:53 2022 +0200
-
-    Route attribute storage keeps the previous layers
-
-commit 54d94f4b1a5b9d8f2943236323d789290bb7bb2f
-Author: Maria Matejka 
-Date:   Thu Jun 16 12:39:08 2022 +0200
-
-    Showing the nexthop resolution target in import tables
-
-commit b867c798c3e42c875311a79fe53a36d4a5bfd126
-Author: Ondrej Zajicek 
-Date:   Thu Jun 16 02:58:37 2022 +0200
-
-    NEWS and version update
-
-commit 4364ee9b6f3764c971ab111bf7dc87477fd7272c
-Merge: cae597987 938742dec
-Author: Maria Matejka 
-Date:   Wed Jun 8 15:31:28 2022 +0200
-
-    Merge commit '938742decc6e1d6d3a0375dd012b75172e747bbc' into haugesund
-
-commit cae5979871ee7aa341334f8b1af6bafc60ee9692
-Merge: 8fd3811d9 950775f6f
-Author: Maria Matejka 
-Date:   Wed Jun 8 11:47:49 2022 +0200
-
-    Merge commit '950775f6fa3d569a9d7cd05e33538d35e895d688' into haugesund
-    
-    There were quite a lot of conflicts in flowspec validation code which
-    ultimately led to some code being a bit rewritten, not only adapted from
-    this or that branch, yet it is still in a limit of a merge.
-
-commit 8fd3811d9d29d73570e03147eb024a4e5fde199b
-Author: Maria Matejka 
-Date:   Tue Jun 7 12:18:23 2022 +0200
-
-    Fixing FlowSpec validation for v3 internal API
-    
-    Validation is called internally from route table at the same place where
-    nexthop resolution is done. Also accounting for rte->sender semantics
-    change (not a channel but the import hook instead).
-
-commit 141fb51f1a3c22c45025426775c00f66c06406a7
-Author: Maria Matejka 
-Date:   Tue Jun 7 10:35:48 2022 +0200
-
-    IPv4 flowspec literals should reject IPv6 prefices in a well-behaved way
-    
-    When writing flow4 { dst 2001:db8::dead:beef/128; }, BIRD crashed on an
-    not-well-debuggable segfault as it tried to copy the whole 128-bit
-    prefix into an IPv4-sized memory.
-
-commit ad686c55c3fad13f39e44ee5732c38296caff782
-Author: Ondrej Zajicek 
-Date:   Sun Jun 5 04:03:43 2022 +0200
-
-    Babel: Do not try to remove multicast seqno request objects from neighbour list
-    
-    The Babel seqno request code keeps track of which seqno requests are
-    outstanding for a neighbour by putting them onto a per-neighbour list. When
-    reusing a seqno request, it will try to remove this node, but if the seqno
-    request in question was a multicast request with no neighbour attached this
-    will result in a crash because it tries to remove a list node that wasn't
-    added to any list.
-    
-    Fix this by making the list remove conditional. Also fix neighbor removal
-    which were changing seqno requests to multicast ones instead of removing
-    them.
-    
-    Fixes: ebd5751cdeb4 ("Babel: Seqno requests are properly decoupled from
-    neighbors when the underlying interface disappears").
-    
-    Based on the patch from Toke Høiland-Jørgensen ,
-    bug reported by Stefan Haller , thanks.
-
-commit f39e9aa20363eccc38289958f23c789d037c269b
-Author: Ondrej Zajicek 
-Date:   Sat Jun 4 17:54:08 2022 +0200
-
-    IO: Improve resolution of latency debugging messages
-
-commit a8a3d95be5db1a8a7d5a17e2eb8e233417b1d8c7
-Author: Ondrej Zajicek 
-Date:   Sat Jun 4 17:34:57 2022 +0200
-
-    Nest: Improve GC strategy for rtables
-    
-    Use timer (configurable as 'gc period') to schedule routing table
-    GC/pruning to ensure that prune is done on time but not too often.
-    
-    Randomize GC timers to avoid concentration of GC events from different
-    tables in one loop cycle.
-    
-    Fix a bug that caused minimum inter-GC interval be 5 us instead of 5 s.
-    
-    Make default 'gc period' adaptive based on number of routing tables,
-    from 10 s for small setups to 600 s for large ones.
-    
-    In marge multi-table RS setup, the patch improved time of flushing
-    a downed peer from 20-30 min to <2 min and removed 40s latencies.
-
-commit ea109ce3e3474dd10d7592c44d2371b794f5c867
-Merge: 1493695c6 4fe9881d6
-Author: Maria Matejka 
-Date:   Tue May 31 12:51:34 2022 +0200
-
-    Merge commit '4fe9881d625f10e44109a649e369a413bd98de71' into haugesund
-
-commit 1493695c6ba2b169523f7c2097fac8e8343352fe
-Merge: 7b0c89a47 f15f2fcee
-Author: Maria Matejka 
-Date:   Mon May 30 17:36:36 2022 +0200
-
-    Merge commit 'f15f2fcee7eeb5a100bd204a0e67018e25953420' into haugesund
-
-commit 7b0c89a47fa1f63248ceaa1e9c1b3948dd29a68d
-Merge: 41508ceac f2e725a76
-Author: Maria Matejka 
-Date:   Mon May 30 17:27:03 2022 +0200
-
-    Merge commit 'f2e725a76882ba6b75c3ce4fb3c760bd83462410' into haugesund
-
-commit 41508ceac3cdd74ca705d3bfc6a79464bf38e0b5
-Merge: 65254128e 1c30b689d
-Author: Maria Matejka 
-Date:   Mon May 30 17:26:25 2022 +0200
-
-    Merge commit '1c30b689ddd032ef8000fb7836348a48ba3184ff' into haugesund
-
-commit 65254128e105903b6b470c6b4bb4729f56cf81bc
-Merge: 1a92ee9d4 702c04fbe
-Author: Maria Matejka 
-Date:   Mon May 30 17:18:46 2022 +0200
-
-    Merge commit '702c04fbef222e802ca4dfac645dc75ede522db6' into haugesund
-
-commit 1a92ee9d4df265018c0344064019f53bc3afce3a
-Merge: 674587d9c 337c04c45
-Author: Maria Matejka 
-Date:   Mon May 30 17:18:03 2022 +0200
-
-    Merge commit '337c04c45e1472d6d9b531a3c55f1f2d30ebf308' into haugesund
-
-commit 674587d9c84ed70151abc56003c371668079ae31
-Merge: 5051e3c4a d8661a439
-Author: Maria Matejka 
-Date:   Mon May 30 17:11:30 2022 +0200
-
-    Merge commit 'd8661a4397e4576ac404661b192dd99d928e7890' into haugesund
-
-commit 5051e3c4afe04aeb59abeaa3370c9e660dfa37f1
-Merge: c1645b9d5 17f91f9e6
-Author: Maria Matejka 
-Date:   Mon May 30 16:59:24 2022 +0200
-
-    Merge commit '17f91f9e6e70f7e3f29502e854823c0d48571eaa' into haugesund
-
-commit c1645b9d5bef3d08ef91ac21197a4860a490bfd4
-Merge: 8b4b7c6ea 165156bee
-Author: Maria Matejka 
-Date:   Mon May 30 16:53:18 2022 +0200
-
-    Merge commit '165156beeb2926472bbceca3c103aacc3f81a8cc' into haugesund
-
-commit 8b4b7c6eaefff43508179b05acbc061fa6b19291
-Merge: b7e2edd44 cf07d8ad7
-Author: Maria Matejka 
-Date:   Mon May 30 16:52:38 2022 +0200
-
-    Merge commit 'cf07d8ad79273a3bbf0617c17e438602e4b64ece' into haugesund
-
-commit b7e2edd4419fecb09b8690f8731e172f0c24789c
-Merge: d7bec897a 1d309c4ce
-Author: Maria Matejka 
-Date:   Mon May 30 16:48:17 2022 +0200
-
-    Merge commit '1d309c4ce6e95b68c64a8f007f6dd2f1830a5707' into haugesund
-
-commit d7bec897ab772cdccce10b296d4efd48d9181297
-Merge: e16e1e413 ef4313e16
-Author: Maria Matejka 
-Date:   Mon May 30 16:47:30 2022 +0200
-
-    Merge commit 'ef4313e1667a8745c8d8813ac78342ec7c035895' into haugesund
-
-commit e16e1e4138cf10fd8f2508fa0e41e5ec98de6d53
-Merge: 0097f24e2 f2f3163f6
-Author: Maria Matejka 
-Date:   Mon May 30 16:41:15 2022 +0200
-
-    Merge commit 'f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc' into haugesund
-
-commit 0097f24e2e8b3feb56d4ae5c5b56a8defd9f7d2e
-Merge: 86ac1045d de86040b2
-Author: Maria Matejka 
-Date:   Mon May 30 16:21:48 2022 +0200
-
-    Merge commit 'de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc' into haugesund
-
-commit 86ac1045d7497af8c7556c5051d4b005fbfcdbe1
-Merge: b3649ec77 3fb70b26f
-Author: Maria Matejka 
-Date:   Mon May 30 16:21:02 2022 +0200
-
-    Merge commit '3fb70b26faca6788aa0bdf1d558414f9f777c6cd' into haugesund
-
-commit b3649ec77ee7101fe77845bb727cc8e8a7cd4b1c
-Merge: ba35b0f81 ef6a903e6
-Author: Maria Matejka 
-Date:   Mon May 30 16:20:35 2022 +0200
-
-    Merge commit 'ef6a903e6f44b467f9606018446095521ad01ef1' into haugesund
-
-commit ba35b0f818cadc354aba3efe373f21939249c6ed
-Merge: 54344f15f 0e1e632f7
-Author: Maria Matejka 
-Date:   Mon May 30 15:43:45 2022 +0200
-
-    Merge commit '0e1e632f70b74cf111f08175ab3634db2f962579' into haugesund
-
-commit 54344f15f8a6a6f5f0388097a1825a9c08c17482
-Merge: 375265485 0d0f6554a
-Author: Maria Matejka 
-Date:   Mon May 30 15:43:13 2022 +0200
-
-    Merge commit '0d0f6554a5c233bf2bf830ae319191c4b1808d49' into haugesund
-
-commit 3752654852f4962465154257348000d6de1c2dae
-Merge: 032201378 80272d4b6
-Author: Maria Matejka 
-Date:   Mon May 30 15:39:32 2022 +0200
-
-    Merge commit '80272d4b64a38ee6f04a1c4e8566cac3a2293176' into haugesund
-
-commit 032201378faa52e2d7a15ea265426e133d9becca
-Merge: 45af19dd9 cd9550b24
-Author: Maria Matejka 
-Date:   Mon May 30 15:38:24 2022 +0200
-
-    Merge commit 'cd9550b24487ac7327b0234fd825f4214fdf7b16' into haugesund
-
-commit 45af19dd99b3c8f954621e09075e8be180e2f731
-Merge: ef3a8138c 652be92a2
-Author: Maria Matejka 
-Date:   Mon May 30 15:36:54 2022 +0200
-
-    Merge commit '652be92a21f5575e5f74f6abe98eb4200b86776c' into haugesund
-
-commit ef3a8138c909baf58c61ddf2edd815eab899d3a6
-Merge: 81aeccbb0 98fd158e2
-Author: Maria Matejka 
-Date:   Mon May 30 15:35:29 2022 +0200
-
-    Merge commit '98fd158e28d89f10ee7a41b4f6a14fbd0021ef35' into haugesund
-
-commit 81aeccbb00bdc457c53bb8ab96715537513f7b2c
-Merge: d7b077f5d d39ef961d
-Author: Maria Matejka 
-Date:   Mon May 30 15:32:11 2022 +0200
-
-    Merge commit 'd39ef961d1dde230c55fcc931b53f44cb34a1e63' into haugesund
-
-commit d7b077f5d63625beaca1bcfe971e3b853dbfcc06
-Merge: d024f471e 4a23ede2b
-Author: Maria Matejka 
-Date:   Mon May 30 15:31:19 2022 +0200
-
-    Merge commit '4a23ede2b056a41456790cc20a0c3d92a7137693' into haugesund
-
-commit d024f471ea5239a8cb6ce2ccd83b686a1d438aa5
-Merge: 921344c3b ebd807c0b
-Author: Maria Matejka 
-Date:   Mon May 30 15:27:46 2022 +0200
-
-    Merge commit 'ebd807c0b8eb0b7a3dc3371cd4c87ae886c00885' into haugesund
-
-commit 652be92a21f5575e5f74f6abe98eb4200b86776c
-Merge: f196b12c6 9e60b500c
-Author: Maria Matejka 
-Date:   Mon May 30 15:20:21 2022 +0200
-
-    Merge remote-tracking branch 'origin/master' into haugesund-to-2.0
-
-commit f196b12c62633e382541ba156e6df1534860c568
-Merge: 097f15718 9eec503b2
-Author: Maria Matejka 
-Date:   Mon May 30 15:20:05 2022 +0200
-
-    Merge commit '9eec503b251c3388579032b300d32640403d8612' into haugesund-to-2.0
-
-commit 097f1571821caa775aec3ada52a1b02b5ffc89bb
-Merge: 5299fb9db 692055e3d
-Author: Maria Matejka 
-Date:   Mon May 30 15:17:52 2022 +0200
-
-    Merge commit '692055e3df6cc9f0d428d3b0dd8cdd8e825eb6f4' into haugesund-to-2.0
-
-commit 921344c3ba5a0e30f04511d2039dff79b6f82dd9
-Merge: b4336b088 3a6eda995
-Author: Maria Matejka 
-Date:   Mon May 30 15:15:19 2022 +0200
-
-    Merge commit '3a6eda995ecfcebff3130d86ee3baeab12a41335' into haugesund
-
-commit 938742decc6e1d6d3a0375dd012b75172e747bbc
-Author: Maria Matejka 
-Date:   Mon May 30 12:03:03 2022 +0200
-
-    Squashing the route attribute structure into one level.
-    
-    For now, all route attributes are stored as eattrs in ea_list. This
-    should make route manipulation easier and it also allows for a layered
-    approach of route attributes where updates from filters will be stored
-    as an overlay over the previous version.
-
-commit 950775f6fa3d569a9d7cd05e33538d35e895d688
-Author: Maria Matejka 
-Date:   Sun May 15 18:09:30 2022 +0200
-
-    Route destination field merged with nexthop attribute; splitting flowspec validation result out.
-    
-    As there is either a nexthop or another destination specification
-    (or othing in case of ROAs and Flowspec), it may be merged together.
-    This code is somehow quirky and should be replaced in future by better
-    implementation of nexthop.
-    
-    Also flowspec validation result has its own attribute now as it doesn't
-    have anything to do with route nexthop.
-
-commit 9e60b500c76945ccdea94d3a67e7acfde5e3f969
-Author: Ondrej Zajicek 
-Date:   Fri May 27 16:07:24 2022 +0200
-
-    CI: Remove broken FreeBSD builds
-    
-    We currently do not have FreeBSD CI workers.
-
-commit 4fe9881d625f10e44109a649e369a413bd98de71
-Author: Maria Matejka 
-Date:   Sun May 15 15:53:35 2022 +0200
-
-    Moved hostentry to eattr
-
-commit f15f2fcee7eeb5a100bd204a0e67018e25953420
-Author: Maria Matejka 
-Date:   Thu May 5 18:08:37 2022 +0200
-
-    Moved nexthop from struct rta to extended attribute.
-    
-    This doesn't do anything more than to put the whole structure inside
-    adata. The overall performance is certainly going downhill; we'll
-    optimize this later.
-    
-    Anyway, this is one of the latest items inside rta and in several
-    commits we may drop rta completely and move to eattrs-only routes.
-
-commit a9c19b923c886ddfaefd0fa5052d4799b80579e2
-Author: Ondrej Zajicek 
-Date:   Sat May 21 16:21:34 2022 +0200
-
-    BGP: Display neighbor port on show protocol
-
-commit 7bb06b34a110bbf40e7308eb19f32202a66d58ba
-Author: Ondrej Zajicek 
-Date:   Sat May 21 16:03:08 2022 +0200
-
-    RPKI: Display cache server port on show protocol
-    
-    Thanks to Luiz Amaral for the idea.
-
-commit 9a9439d5e1d3b1372dadb25207d67d83a2e1e98c
-Author: Luiz Amaral 
-Date:   Thu May 19 19:43:59 2022 +0200
-
-    RPKI: Implement VRF support
-
-commit ba2a076001be6e4140fbd2703cd134e5aa51450b
-Author: Ondrej Zajicek 
-Date:   Sun May 15 15:05:13 2022 +0200
-
-    BGP: Improve tx performance during feed/flush
-    
-    The prefix hash table in BGP used the same hash function as the rtable.
-    When a batch of routes are exported during feed/flush to the BGP, they
-    all have similar hash values, so they are all crowded in a few slots in
-    the BGP prefix table (which is much smaller - around the size of the
-    batch - and uses higher bits from hash values), making it much slower due
-    to excessive collisions. Use a different hash function to avoid this.
-    
-    Also, increase the batch size to fill 4k BGP packets and increase minimum
-    BGP bucket and prefix hash sizes to avoid back and forth resizing during
-    flushes.
-    
-    This leads to order of magnitude faster flushes (on my test data).
-
-commit f2e725a76882ba6b75c3ce4fb3c760bd83462410
-Author: Maria Matejka 
-Date:   Thu May 5 19:28:56 2022 +0200
-
-    All outstanding MPLS label stacks are stored as adata
-
-commit 1c30b689ddd032ef8000fb7836348a48ba3184ff
-Author: Maria Matejka 
-Date:   Wed May 4 14:41:51 2022 +0200
-
-    Moved route source attribute (RTS_*) to eattrs
-
-commit 702c04fbef222e802ca4dfac645dc75ede522db6
-Author: Maria Matejka 
-Date:   Wed May 4 12:41:54 2022 +0200
-
-    Removing the route scope attribute. Use custom attributes instead.
-    
-    The route scope attribute was used for simple user route marking. As
-    there is a better tool for this (custom attributes), the old and limited
-    way can be dropped.
-
-commit 337c04c45e1472d6d9b531a3c55f1f2d30ebf308
-Author: Maria Matejka 
-Date:   Wed Apr 20 12:24:26 2022 +0200
-
-    Moved route preference to eattrs
-
-commit d8661a4397e4576ac404661b192dd99d928e7890
-Author: Maria Matejka 
-Date:   Wed Apr 20 10:25:14 2022 +0200
-
-    Joined the RTA igp_metric and EA igp_metric attributes
-
-commit 0c4e0e4a635169cada395144dd67d1e66f1c9649
-Author: Maria Matejka 
-Date:   Wed May 4 12:33:01 2022 +0200
-
-    Removed forgotten remnants of unused enum rtc
-
-commit cce974e8ea992d0e6d2f649eca7880b436d91d71
-Author: Maria Matejka 
-Date:   Wed May 4 12:24:30 2022 +0200
-
-    Conf: Allowing keyword redefinition
-    
-    Some tokens are both keywords and symbols. For now, we allow only
-    specific keywords to be redefined; in future, more of the keywords may
-    be added to this category.
-    
-    The redefinable keywords must be specified in any .Y file as follows:
-    
-      toksym: THE_KEYWORD ;
-    
-    See proto/bgp/config.Y for an example.
-    
-    Also dropped a lot of unused terminals.
-
-commit 8ebac84bc8d51e2404ce6d6dc5e35fb261830596
-Author: Maria Matejka 
-Date:   Wed Apr 20 13:56:04 2022 +0200
-
-    Moved advertising router info (FROM attribute) to eattrs
-
-commit 17f91f9e6e70f7e3f29502e854823c0d48571eaa
-Author: Maria Matejka 
-Date:   Sat Mar 19 16:23:42 2022 +0100
-
-    Explicit definition structures of route attributes
-    
-    Changes in internal API:
-    
-    * Every route attribute must be defined as struct ea_class somewhere.
-    * Registration of route attributes known at startup must be done by
-      ea_register_init() from protocol build functions.
-    * Every attribute has now its symbol registered in a global symbol table
-      defined as SYM_ATTRIBUTE
-    * All attribute ID's are dynamically allocated.
-    * Attribute value custom formatting hook is defined in the ea_class.
-    * Attribute names are the same for display and filters, always prefixed
-      by protocol name.
-    
-    Also added some unit testing code for filters with route attributes.
-
-commit 165156beeb2926472bbceca3c103aacc3f81a8cc
-Author: Maria Matejka 
-Date:   Mon May 2 20:29:03 2022 +0200
-
-    Conf: Symbols are properly scoped
-    
-    Now there is a persistent root symbol scope and all scopes have their
-    symbol hashes to store local symbols and not leak any symbol out.
-
-commit cf07d8ad79273a3bbf0617c17e438602e4b64ece
-Author: Maria Matejka 
-Date:   Thu Apr 14 18:32:19 2022 +0200
-
-    Replaced boilerplate eattr allocation by ea_set_attr()
-
-commit 1d309c4ce6e95b68c64a8f007f6dd2f1830a5707
-Author: Maria Matejka 
-Date:   Thu Apr 14 16:51:18 2022 +0200
-
-    Enforcing certain data structure explicit paddings.
-    
-    Implicit paddings have undefined values in C. We want the eattr blocks
-    to be comparable by memcmp and eattrs settable directly by structrure
-    literals. This check ensures that all paddings in eattr and bval are
-    explicit and therefore zeroed in all literals.
-
-commit ef4313e1667a8745c8d8813ac78342ec7c035895
-Author: Maria Matejka 
-Date:   Sun Apr 10 19:15:18 2022 +0200
-
-    Local route attributes are always allocated from tmp_linpool
-
-commit f2f3163f6c3fba7f9ef03640d7b2f6323873d2cc
-Author: Maria Matejka 
-Date:   Sun Apr 10 18:55:15 2022 +0200
-
-    Filters always allocate from tmp_linpool
-
-commit de86040b2cf4ec9bfbb64f0e208a19d4d7e51adc
-Author: Maria Matejka 
-Date:   Sun Apr 10 14:11:46 2022 +0200
-
-    Attribute list normalization cleanup
-
-commit 3fb70b26faca6788aa0bdf1d558414f9f777c6cd
-Author: Maria Matejka 
-Date:   Thu Mar 31 19:22:07 2022 +0200
-
-    Complex route attributes are data structures, shall be in lib also
-
-commit ef6a903e6f44b467f9606018446095521ad01ef1
-Author: Maria Matejka 
-Date:   Thu Mar 31 19:09:38 2022 +0200
-
-    Splitting route data structures out to lib
-
-commit 0e1e632f70b74cf111f08175ab3634db2f962579
-Author: Maria Matejka 
-Date:   Thu Mar 31 19:00:00 2022 +0200
-
-    FIB is a data structure generic enough to be in lib
-
-commit 0d0f6554a5c233bf2bf830ae319191c4b1808d49
-Author: Maria Matejka 
-Date:   Sat Mar 26 11:56:02 2022 +0100
-
-    Unified attribute and filter types
-    
-    This commit removes the EAF_TYPE_* namespace completely and also for
-    route attributes, filter-based types T_* are used. This simplifies
-    fetching and setting route attributes from filters.
-    
-    Also, there is now union bval which serves as an universal value holder
-    instead of private unions held separately by eattr and filter code.
-
-commit 80272d4b64a38ee6f04a1c4e8566cac3a2293176
-Author: Maria Matejka 
-Date:   Sat Mar 26 12:40:46 2022 +0100
-
-    Opaque types are named opaque also in filters
-
-commit cd9550b24487ac7327b0234fd825f4214fdf7b16
-Author: Maria Matejka 
-Date:   Sat Mar 19 16:38:32 2022 +0100
-
-    Implicit ROA check converted to explicit filter instruction sequence
-
-commit c1194ab7edbb17cb7371ac38e6eab5ae3ae72163
-Author: Maria Matejka 
-Date:   Sun Apr 10 19:31:50 2022 +0200
-
-    Protocols use EA_LITERAL_* to set attributes
-
-commit 0b871c170472202770691af8995766ee57920fdc
-Author: Maria Matejka 
-Date:   Thu Mar 31 19:29:17 2022 +0200
-
-    Moved filter value union to lib
-
-commit 58f59d5d9dc11dcc5513ed1fdfcb12c1730b4a19
-Author: Maria Matejka 
-Date:   Sat Mar 26 15:05:03 2022 +0100
-
-    Filters: removing adata_empty() duplicating lp_alloc_adata()
-
-commit 22f95d9889f07d868ffaec40ab43fd8dd9b0bb31
-Author: Maria Matejka 
-Date:   Sat Mar 26 12:37:41 2022 +0100
-
-    Special attribute types for enums
-
-commit e261b325113a63410bc30287c135bf162480c3b2
-Author: Maria Matejka 
-Date:   Thu Apr 14 12:06:17 2022 +0200
-
-    Dropping EAF_VAR_LENGTH as the attribute data is either embedded or adata
-
-commit bc17fee1bfdbd330f5a4377bf40f6de0681afa5c
-Author: Maria Matejka 
-Date:   Fri Mar 25 19:51:35 2022 +0100
-
-    Filter: Bitfield eattrs reading / writing moved to filter code
-    
-    Before this change, fetch-update-write and bitmasking was hardcoded in
-    attribute access code cased by the attribute type. Several filter
-    instructions are used to do it instead.
-    
-    As this is certainly going to be a little bit slower than before, the
-    switch block in attribute access code should be completely removed in
-    near future, helping with both performance and code cleanliness.
-    
-    The user interface should have stayed intact.
-
-commit d4bcef0e0bfee911d403c0cf830de3e3007eeb38
-Author: Maria Matejka 
-Date:   Fri Mar 25 19:15:11 2022 +0100
-
-    Filter operations: bitwise AND and OR
-
-commit 5299fb9db0e3fb75c37f233e9a8b737c46e61265
-Author: Alexander Zubkov 
-Date:   Wed May 4 15:37:23 2022 +0200
-
-    Fixed spurious undef of route attributes
-
-commit 207ac4853316ceffa6d56ff06f8904320d3bf45f
-Author: Vincent Bernat 
-Date:   Fri Apr 22 17:06:27 2022 +0200
-
-    Doc: fix mating -> matching in flowspec section
-
-commit d8298001389f021f68ead1ed2b4809edb60ae416
-Author: Toke Høiland-Jørgensen 
-Date:   Fri Apr 22 17:04:56 2022 +0200
-
-    Babel: Fix compilation when LOCAL_DEBUG is set in packets.c
-    
-    The debug output was not updated with the rest of the code, so packets.c
-    fails to compile if LOCAL_DEBUG is set.
-
-commit 4aef70136d8bae68e171fa7178889e6ad9fff9b8
-Author: Toke Høiland-Jørgensen 
-Date:   Fri Apr 22 16:41:52 2022 +0200
-
-    Babel: Send out low-interval hello on shutdown
-    
-    When shutting down a Babel instance we send a wildcard retraction to make
-    sure all peers can quickly switch to other route origins. Add another small
-    optimisation borrowed from babeld: sending a Hello message (along with the
-    retraction) with a very low interval.
-    
-    This will cause neighbours to modify their expiry timers for the node's
-    state to quickly time it out, thus conserving resources in the network.
-
-commit 98fd158e28d89f10ee7a41b4f6a14fbd0021ef35
-Author: Maria Matejka 
-Date:   Wed Apr 13 17:05:12 2022 +0200
-
-    RIP: fixed the EA_RIP_FROM attribute
-    
-    The interface pointer was improperly converted to u32 and back. Fixing
-    this by explicitly allocating an adata structure for it. It's not so
-    memory efficient, we'll optimize this later.
-
-commit 9eec503b251c3388579032b300d32640403d8612
-Author: Maria Matejka 
-Date:   Wed Apr 13 11:28:15 2022 +0200
-
-    Fixed a munmap abort bug
-    
-    When BIRD was munmapping too many pages, it sometimes aborted, saying
-    that munmap failed with "Not enough memory" as the address space was
-    getting more and more fragmented.
-    
-    There is a workaround in place, simply keeping that page for future use,
-    yet it has never been compiled in because I somehow forgot to include
-    errno.h. And because I also thought that somebody may have ENOMEM not
-    defined (why?!), there was a check which quietly omitted that
-    workaround.
-    
-    Anyway, ENOMEM is POSIX. It's an utter nonsense to check for its
-    existence. If it doesn't exist, something is broken.
-
-commit 692055e3df6cc9f0d428d3b0dd8cdd8e825eb6f4
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 7 19:33:40 2022 +0200
-
-    BFD: Add 'strict bind' option
-    
-    Add BFD protocol option 'strict bind' to use separate listening socket
-    for each BFD interface bound to its address instead of using shared
-    listening sockets.
-
-commit d39ef961d1dde230c55fcc931b53f44cb34a1e63
-Author: Maria Matejka 
-Date:   Tue Apr 5 15:09:56 2022 +0200
-
-    BGP uses lp_save / lp_restore instead of linpool flushing
-    
-    It is too cryptic to flush tmp_linpool in these cases and we don't want
-    anybody in the future to break this code by adding an allocation
-    somewhere which should persist over that flush.
-    
-    Saving and restoring linpool state is safer.
-
-commit 4a23ede2b056a41456790cc20a0c3d92a7137693
-Author: Maria Matejka 
-Date:   Fri Mar 18 22:05:50 2022 +0100
-
-    Protocols have their own explicit init routines
-
-commit ebd807c0b8eb0b7a3dc3371cd4c87ae886c00885
-Author: Maria Matejka 
-Date:   Mon Apr 4 20:31:14 2022 +0200
-
-    Slab allocator can free the blocks without knowing the parent structure
-
-commit 3a6eda995ecfcebff3130d86ee3baeab12a41335
-Author: Maria Matejka 
-Date:   Mon Apr 4 20:28:23 2022 +0200
-
-    Typed lists for easier walking and stronger type checking
-
-commit 7e86ff2076f3046c6dcca53e7756f112362aeee9
-Author: Maria Matejka 
-Date:   Mon Apr 4 22:34:14 2022 +0200
-
-    All linpools use pages to allocate regular blocks
-
-commit 0f68515263e91dd49b2d845cdff35af40c064dc2
-Author: Maria Matejka 
-Date:   Mon Mar 14 11:13:48 2022 +0100
-
-    Unsetting route attributes without messing with type system
-
-commit dabd7bccb3b9e2b7482cf4ae7619a67559f3ac94
-Author: Maria Matejka 
-Date:   Tue Mar 22 14:39:32 2022 +0100
-
-    BGP: Fixed LLGR depreferencing in bgp_rte_mergable
-
-commit 63cf5d5d8c8e156a1f427614c8017ca71c32191c
-Author: Maria Matejka 
-Date:   Mon Mar 14 10:06:44 2022 +0100
-
-    Eattr flags (originated and fresh) get their own struct fields
-
-commit af8568a8700b83f4d1946b7075fa3eac96d1d5b6
-Author: Maria Matejka 
-Date:   Wed Mar 16 10:22:49 2022 +0100
-
-    Minor fix: f_val literals should always have named struct fields
-
-commit 170b20701c46b36e6272d85fd00cc65f72c70b0d
-Author: Maria Matejka 
-Date:   Mon Apr 4 20:31:25 2022 +0200
-
-    Converted Slab allocator to typed lists
-
-commit 4b1aa37f931888febfd768309d5e2ef36f5e7194
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 16 23:16:26 2022 +0100
-
-    Netlink: Remove superfluous sysdep/linux/netlink.c.orig
-    
-    Thanks to Vincent Bernat for notice.
-
-commit 269bfff9bf4b2349248bb48ff61009cf1c5a4aec
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 16 19:50:16 2022 +0100
-
-    Lib: Allow use of 240.0.0.0/4 as a private range
-    
-    There were several requests to allow use of 240.0.0.0/4 as a private
-    range, and Linux kernel already allows such routes, so perhaps we can
-    allow that too.
-    
-    Thanks to Vincent Bernat and others for suggestion and patches.
-
-commit c53f547a0bf437fb95923b2a0b9ac497e474aef1
-Author: Maria Matejka 
-Date:   Tue Mar 15 11:21:46 2022 +0100
-
-    Printf variant with a result allocated inside a pool / linpool
-
-commit b4336b0880dee2a039ca55321f4344444512f97d
-Merge: 41572e0c1 3c42f7af6
-Author: Maria Matejka 
-Date:   Mon Mar 14 17:38:25 2022 +0100
-
-    Merge branch 'haugesund-to-2.0' into HEAD
-
-commit 3c42f7af6a23de3f135235521318301e5b34f2de
-Author: Maria Matejka 
-Date:   Mon Mar 14 17:29:39 2022 +0100
-
-    Slab memory allocator unit test
-
-commit c3828879a395c84bd7aac089903c88bb3a9c149d
-Author: Vincent Bernat 
-Date:   Fri Mar 11 15:47:00 2022 +0100
-
-    Pkg: Improve RPM package unit file
-    
-    Update the RPM package unit file to check configuration before start and
-    to use "birdc configure" instead of "kill -HUP".
-
-commit 9b0b2c0d410fd26e1b48d158a667e42f4bbec52c
-Author: Ondrej Zajicek (work) 
-Date:   Fri Mar 11 03:40:03 2022 +0100
-
-    Client: Use exit status to report errors
-    
-    When birdc is called with a command as an argument, it should set exit
-    status to non-zero when BIRD replied with an error reply code.
-    
-    Thanks to Vincent Bernat and others for suggestion.
-
-commit 41572e0c1b53e3aee6e84a2daada97c5f7620697
-Merge: 9dc1d7782 f81702b7e
-Author: Maria Matejka 
-Date:   Wed Mar 9 15:03:48 2022 +0100
-
-    Merge commit 'f81702b7' into haugesund
-
-commit 9dc1d7782ef792787b49b929d1b331429d23c68e
-Merge: 6151e51ff 0767a0c28
-Author: Maria Matejka 
-Date:   Wed Mar 9 14:39:55 2022 +0100
-
-    Merge commit '0767a0c2' into haugesund
-    
-    Conflicts:
-            nest/rt-table.c
-
-commit 6151e51ffaffd946cc1d7208aefd51acbac625d1
-Merge: 4eeae4821 8f3942a97
-Author: Maria Matejka 
-Date:   Wed Mar 9 14:09:34 2022 +0100
-
-    Merge commit '8f3942a9' into haugesund
-    
-    Conflicts:
-            nest/rt-table.c
-
-commit 4eeae48214bde9807e8b3312f5a7a5de9f2f1b42
-Merge: 01c9f3d78 56c8f2f03
-Author: Maria Matejka 
-Date:   Wed Mar 9 13:49:31 2022 +0100
-
-    Merge commit '56c8f2f0' into haugesund
-    
-    Conflicts:
-            nest/route.h
-            nest/rt-table.c
-
-commit 01c9f3d78e596336434fd313e4ed8bdc8db248b6
-Merge: 36f5fea31 575da88f7
-Author: Maria Matejka 
-Date:   Wed Mar 9 13:37:12 2022 +0100
-
-    Merge commit '575da88f' into haugesund
-    
-    Conflicts:
-            nest/rt-table.c
-
-commit 4e60b3ee7270a432357e203824a7d519a3134f01
-Author: Maria Matejka 
-Date:   Wed Mar 9 13:27:49 2022 +0100
-
-    Fixed a static assert in page allocator
-
-commit 36f5fea31a61d9067d81ffb1620fdf174f47d5e4
-Author: Maria Matejka 
-Date:   Wed Mar 9 13:27:49 2022 +0100
-
-    Fixed a static assert in page allocator
-
-commit 92b832380d31fc9995d6e45b3db4ce496fcb7837
-Merge: 9b6db9f9b 1b9189d5f
-Author: Maria Matejka 
-Date:   Wed Mar 9 13:13:05 2022 +0100
-
-    Merge commit '1b9189d5' into haugesund
-
-commit 1b9189d5fdab672f91600b7e72a1deeab277eafc
-Author: Maria Matejka 
-Date:   Wed Mar 9 12:30:05 2022 +0100
-
-    Route validity check converted to generic macro dispatch
-
-commit 9b6db9f9b8e561d215e1df01169b15a9dfaba1b9
-Merge: 19e727a24 5ddf98f6b
-Author: Maria Matejka 
-Date:   Wed Mar 9 11:51:00 2022 +0100
-
-    Merge remote-tracking branch 'origin/master' into haugesund
-
-commit 19e727a248d15e9f8871986ac286cf74b3d86e61
-Merge: 8a4bc4fdb 60880b539
-Author: Maria Matejka 
-Date:   Wed Mar 9 11:28:34 2022 +0100
-
-    Merge commit '60880b539b8886f76961125d89a265c6e1112b7a' into haugesund
-
-commit 8a4bc4fdbf2f4c6ccaa684c922779ddc11489e68
-Author: Maria Matejka 
-Date:   Fri Feb 11 22:29:13 2022 +0100
-
-    BGP Flowspec validation: Removed in-route optimization for multithreading compatibility
-
-commit 24773af9e099530aa6ccf4c730ad31c452284228
-Merge: 83d9920f9 e42eedb91
-Author: Maria Matejka 
-Date:   Wed Mar 9 11:01:44 2022 +0100
-
-    Merge commit 'e42eedb9' into haugesund
-
-commit 83d9920f90738e4df75b3cf57335b43c094051cd
-Merge: ff47cd80d 5cff1d5f0
-Author: Maria Matejka 
-Date:   Wed Mar 9 10:56:06 2022 +0100
-
-    Merge commit '5cff1d5f' into haugesund
-    
-    Conflicts:
-          proto/bgp/attrs.c
-          proto/pipe/pipe.c
-
-commit ff47cd80dd04bc11692248a40cbf52ee8d351064
-Merge: 9e60a1fbc d5a32563d
-Author: Maria Matejka 
-Date:   Wed Mar 9 10:50:38 2022 +0100
-
-    Merge commit 'd5a32563' into haugesund
-
-commit 9e60a1fbc3ef9ab93b414dcf451bbe741e2e8827
-Author: Maria Matejka 
-Date:   Wed Mar 9 10:30:03 2022 +0100
-
-    Fixed resource initialization in unit tests
-
-commit b90c9b164fedd44115c01fb2b07f71fb40ab3b77
-Author: Maria Matejka 
-Date:   Wed Mar 9 10:30:33 2022 +0100
-
-    Linpools with pages fixed to the final page allocator version
-
-commit eeec9ddbf2a3536417c6dd434da9a7dd2bbdaa42
-Merge: c78247f9b 0c59f7ff0
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:13:55 2022 +0100
-
-    Merge commit '0c59f7ff' into haugesund
-
-commit 0c59f7ff0112abd1261afb8f21b7c00fc5e37885
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:13:31 2022 +0100
-
-    Revert "Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls"
-    
-    This reverts commit 7f0e59820899c30a243c18556ce2e3fb72d6d221.
-
-commit c20506dc07e1b99cf1d9f2cf9d00e9211cd9e2f4
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:13:21 2022 +0100
-
-    Revert "fixup! Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls"
-    
-    This reverts commit bea582cbb53e30dd32a5b6829c7443e0e5558d11.
-
-commit 1c7df2c24029d6721745b99fd4137935db03e257
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:13:20 2022 +0100
-
-    Revert "Multipage allocation"
-    
-    This reverts commit 6cd37713781a3092f8166b2178fae35cbfec1e28.
-
-commit 1740ff57e8ea05d7d9f15d1a6830ce42add3e4bd
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:13:18 2022 +0100
-
-    Revert "fixup! Multipage allocation"
-    
-    This reverts commit a54f75f454b7ed8c8ff2c1787a506528f22cbae7.
-
-commit c78247f9b97802d6fe76d9b7cddf2c1940134d33
-Author: Maria Matejka 
-Date:   Wed Mar 9 09:10:44 2022 +0100
-
-    Single-threaded version of sark-branch memory page management
-
-commit 06ece3265e222f218224bb394c250cb414e44ab4
-Author: Maria Matejka 
-Date:   Wed Mar 2 11:22:32 2022 +0100
-
-    Replacing BGP temporary linpools by the common temporary linpool
-
-commit d814a8cb9381e8cb22c3f37d3c970ca7972656a6
-Author: Maria Matejka 
-Date:   Wed Mar 2 10:59:52 2022 +0100
-
-    Replaced custom linpools in tests for the common tmp_linpool
-
-commit 48bf1322aa141ca6259b26b37551402758cff0cc
-Author: Maria Matejka 
-Date:   Wed Mar 2 10:35:21 2022 +0100
-
-    Introducing an universal temporary linpool flushed after every task
-
-commit 2e8b8bfcc46ec1493f9e0efe9c796b88df85ada4
-Author: Maria Matejka 
-Date:   Wed Mar 2 11:22:01 2022 +0100
-
-    Static list initializer
-
-commit 5ddf98f6bdfec213d64957a580e0425c3ed4d660
-Author: Ondrej Filip 
-Date:   Wed Mar 2 10:52:09 2022 +0100
-
-    Small improvement in directory test
-
-commit 7404a215806972fb5e7205aaa99a3ff7b00ede16
-Author: Ondrej Filip 
-Date:   Wed Mar 2 10:38:15 2022 +0100
-
-    Minor doc and gendist changes
-
-commit d071aca7aaf7a4add9e0d1d93029fb9a0fad560a
-Merge: fcb4dd0c8 2c1375913
-Author: Maria Matejka 
-Date:   Wed Mar 2 10:01:44 2022 +0100
-
-    Merge commit '2c13759136951ef0e70a3e3c2b2d3c9a387f7ed9' into haugesund
-
-commit fcb4dd0c831339c4374ace17d8f2ae6ebfeed279
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 27 03:10:38 2022 +0100
-
-    Babel: Fix bug in iface reconfiguration
-    
-    A recent change in Babel causes ifaces to disappear after
-    reconfiguration. The patch fixes that.
-    
-    Thanks to Johannes Kimmel for an insightful bugreport.
-
-commit eb859a3fb063b261fb76304e5b8eca206e7a162a
-Author: Ondrej Filip 
-Date:   Sun Feb 20 15:30:47 2022 +0100
-
-    Small change to fix doc building on Debian
-
-commit 9b13fa4d9c3cd8894f61ed84a38ef3c69fe4fe6f
-Author: Ondrej Filip 
-Date:   Sun Feb 20 14:28:06 2022 +0100
-
-    Small changes related to the new release
-
-commit 64d5d6d2c34fc198753f232959108305b5bd4b4c
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 13 16:45:49 2022 +0100
-
-    NEWS: Fix formatting and add some notes
-
-commit 71c9484b00b4428ae6c7d7c8eea6d96073683a54
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 9 03:47:49 2022 +0100
-
-    NEWS and version update
-
-commit 2fc8b4c4bac576427b0054a13cc78e395b93d6c4
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 8 22:42:00 2022 +0100
-
-    Alloc: Use posix_memalign() instead of aligned_alloc()
-    
-    For compatibility with older systems use posix_memalign(). We can
-    switch to aligned_alloc() when we commit to C11 for multithreading.
-
-commit ef614f29843ab2bdfb0ff5ed5da0a989eeaa33a6
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 8 22:21:08 2022 +0100
-
-    Netlink: Minor cleanup
-
-commit 935c066402d56d9b01ae41527c2e760d189b01f9
-Author: Maria Matejka 
-Date:   Mon Feb 7 22:35:05 2022 +0100
-
-    NEWS and version update
-
-commit a6fc31f153f4d6ad2fa7f63a4ba137fc263f4200
-Author: Maria Matejka 
-Date:   Mon Feb 7 22:27:42 2022 +0100
-
-    Blogpost about performance + data.
-
-commit edc1a2401752c3db30df1b9c6c796c06a8c59cc1
-Author: Ondrej Zajicek (work) 
-Date:   Mon Feb 7 04:39:49 2022 +0100
-
-    Lib: Update alignment of slabs
-    
-    Alignment of slabs should be at least sizeof(ptr) to avoid unaligned
-    pointers in slab structures. Fixme: Use proper way to choose alignment
-    for internal allocators.
-
-commit 53a25406878ed686a58ec3e7379d6cb45b784942
-Merge: 4c6ee53f3 24600c642
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 6 23:32:15 2022 +0100
-
-    Merge branch 'oz-trie-table'
-
-commit 24600c642a1f50e2404f4d9dd98bd8a0c9844860
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 6 22:53:55 2022 +0100
-
-    Trie: Fix trie format
-    
-    After switching to 16-way tries, trie format ignored unaligned / internal
-    prefixes and only reported the primary prefix of a trie node.
-    
-    Fix trie format by showing internal prefixes based on the 'local' bitmask
-    of a node. Also do basic (intra-node) reconstruction of prefix patterns
-    by finding common subtrees in 'local' bitmask.
-    
-    In future, we could improve that by doing inter-node reconstruction, so
-    prefixes entered as one pattern for a subtree (e.g. 192.168.0.0/18+)
-    would be reported as such, like with aligned prefixes.
-
-commit 5a89edc6fd0b03716ccb77084e8d1a1910f52ab0
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 4 05:34:02 2022 +0100
-
-    Nest: Implement locking of prefix tries during walks
-    
-    The prune loop may may rebuild the prefix trie and therefore invalidate
-    walk state for asynchronous walks (used in 'show route in' cmd). Fix it
-    by adding locking that keeps the old trie in memory until current walks
-    are done.
-    
-    In future this could be improved by rebuilding trie walk states (by
-    lookup for last found prefix) after the prefix trie rebuild.
-
-commit de6318f70a06854a324b436b3a4cca0b3d60024b
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 3 06:08:51 2022 +0100
-
-    Nest: Implement prefix trie pruning
-    
-    When rtable is pruned and network fib nodes are removed, we also need to
-    prune prefix trie. Unfortunately, rebuilding prefix trie takes long time
-    (got about 400 ms for 1M networks), so must not be atomic, we have to
-    rebuild a new trie while current one is still active. That may require
-    some considerable amount of temporary memory, so we do that only if
-    we expect significant trie size reduction.
-
-commit ba5aec94cdf643350677f6b0ac4d335039c22396
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 2 05:06:49 2022 +0100
-
-    Trie: Add prefix counter
-    
-    Add counter of prefixes stored in trie. Works only for 'restricted' tries
-    composed of explicit prefixes (pxlen == l == h), like ones used in rtables.
-
-commit d0f9a77f641d44472679caf85b7bef6e13ce926a
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 31 18:42:50 2021 +0100
-
-    Doc: Describe routing table options
-
-commit 1f2eb2aca8e348fefc1822ec2adcad0cc97768d8
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 20 20:25:35 2021 +0100
-
-    BGP: Implement flowspec validation procedure
-    
-    Implement flowspec validation procedure as described in RFC 8955 sec. 6
-    and RFC 9117. The Validation procedure enforces that only routers in the
-    forwarding path for a network can originate flowspec rules for that
-    network.
-    
-    The patch adds new mechanism for tracking inter-table dependencies, which
-    is necessary as the flowspec validation depends on IP routes, and flowspec
-    rules must be revalidated when best IP routes change.
-    
-    The validation procedure is disabled by default and requires that
-    relevant IP table uses trie, as it uses interval queries for subnets.
-
-commit 1ae42e522374ae60c23fe4c419c62b2209fbeea8
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 22 04:32:26 2021 +0100
-
-    Nest: Add routing table configuration blocks
-    
-    Allow to specify sorted flag, trie fla, and min/max settle time.
-    
-    Also do not enable trie by default, it must be explicitly enabled.
-
-commit fde1cff0122ee9d68f141976395e7f89ba28c311
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 20 20:44:36 2021 +0100
-
-    Nest: Add convenience functions to check rtable net type
-
-commit 61375bd0b3803fada0d7bb5b81b5824bab16b7c1
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 2 04:05:17 2021 +0100
-
-    Nest: Avoid unnecessary net_format() in 'show route' command
-    
-    When output of 'show route' command was generated, the net_format() was
-    called for each network prematurely, even if the result was not needed.
-    
-    Fix the code to call net_format() only when needed. This makes queries
-    that process many networks but show only few (e.g. 'show route where ..',
-    or 'show route count') much faster (like 5x - 10x faster).
-
-commit 9ac16df3d7239bc82d8016591755b41b14285608
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 2 03:30:39 2021 +0100
-
-    Nest: Add trie iteration code to 'show route'
-    
-    Add trie iteration code to rt_show_cont() CLI hook and use it to
-    accelerate 'show route in ' commands using interval queries.
-
-commit ea97b8905197180bee5244bce378d03e4b741d88
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 2 02:22:30 2021 +0100
-
-    Nest: Implement 'show route in ' command
-    
-    Implement 'show route in ' command, which shows all routes in
-    networks that are subnets of given network. Currently limited to IP
-    network types.
-
-commit 836a87b8acd5da40bde6b89702090c6616e06dfb
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 29 19:23:42 2021 +0100
-
-    Nest: Attach prefix trie to rtable for faster LPM and interval queries
-    
-    Attach a prefix trie to IP/VPN/ROA tables. Use it for net_route() and
-    net_roa_check(). This leads to 3-5x speedups for IPv4 and 5-10x
-    speedup for IPv6 of these calls.
-    
-    TODO:
-     - Rebuild the trie during rt_prune_table()
-     - Better way to avoid trie_add_prefix() in net_get() for existing tables
-     - Make it configurable (?)
-
-commit 3f6462ad35ca49dc4898546bba59147792481b25
-Author: Maria Matejka 
-Date:   Fri Feb 4 17:04:18 2022 +0100
-
-    Dropping (end-of-life) Debian 8 automated tests
-
-commit c9aa53eaf5d10b37c6f056b6aec156c60ef91b9c
-Author: Maria Matejka 
-Date:   Fri Feb 4 16:47:39 2022 +0100
-
-    Build test default timeout raised to allow for tests on slow virtual machines
-
-commit 5a65ae45e5da06b9e7c6a690aa7c4afdd08dca6c
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:50:21 2022 +0100
-
-    Tamed harmless i368 warnings
-
-commit cc73726620da84a8ed79cf852384226aa05e5458
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:42:04 2022 +0100
-
-    Compilation fixes for CLang
-
-commit fe840ddad96259ed7b2f1d0d2f07bdf8d4c03384
-Merge: 14bb6fd29 a9646efd4
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:26:36 2022 +0100
-
-    Merge commit 'a9646efd40569f3a1d749bc1bd13219876b33a00' into sark-bgp-rebased
-
-commit 14bb6fd29a1c88103e73138d5fd4396e610aa469
-Merge: 92e48894c bcb25084d
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:24:28 2022 +0100
-
-    Merge commit 'bcb25084d31fdb90fcf1666f10e73fe0f863afc0' into sark-bgp-rebased
-
-commit 92e48894c379862003efe0a752411751e298b54e
-Merge: 28a43d53e 75aceadaf
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:21:16 2022 +0100
-
-    Merge commit '75aceadaf746f8ed0acce0424f89903283dacf16' into sark-bgp-rebased
-
-commit 28a43d53e7189524ad6312d04a5d12c90f27212d
-Merge: d62a3d027 00410fd6c
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:18:48 2022 +0100
-
-    Merge commit '00410fd6c17697a5919cb32a44f7117dd3a0834a' into sark-bgp-rebased
-
-commit d62a3d0274b9c1ccfbbc4302bb2ca56159696f8b
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:18:44 2022 +0100
-
-    Thread performance: Moved graph key to left top corner where it fits better
-
-commit b554457e5e99f2a5e9ac70bbd866384299dc2f14
-Author: Maria Matejka 
-Date:   Fri Feb 4 15:18:06 2022 +0100
-
-    Thread documentation: Final version of chapter 3
-
-commit 765c940094e8e070212ef66b7a77e86829b0cf60
-Author: Maria Matejka 
-Date:   Thu Feb 3 22:42:26 2022 +0100
-
-    Thread documentation: Rewritten chapter 3 on loops and locks once again
-
-commit 216bcb7c68fadcd2a363bf912db743b00b155459
-Author: Maria Matejka 
-Date:   Wed Feb 2 15:36:22 2022 +0100
-
-    Protocol limit restart/down must be callable from protocol context
-
-commit d262695d4e8ddee7b9408bb726b4100f68d217d7
-Author: Maria Matejka 
-Date:   Wed Feb 2 11:20:53 2022 +0100
-
-    BFD: direct notifications to protocol loops
-
-commit 09380db594e1befb991be626b36783cae525d823
-Author: Maria Matejka 
-Date:   Tue Feb 1 14:54:03 2022 +0100
-
-    Neighbor prune fixup
-
-commit c019008383a439b5e5cf46dc71f902f335a0a9df
-Author: Maria Matejka 
-Date:   Tue Feb 1 14:53:38 2022 +0100
-
-    IO loop duration fixup
-
-commit aca4c3fc8e4a6043cafcb8778055d9a505283376
-Author: Maria Matejka 
-Date:   Mon Jan 10 11:43:21 2022 +0100
-
-    BGP now runs in its own thread
-
-commit fccaeb0141136b192884f76edd0a53575f47d87e
-Author: Maria Matejka 
-Date:   Mon Jan 10 09:31:27 2022 +0100
-
-    BGP: Static global linpools replaced by private linpools
-
-commit 8447b24e59bcb6bf1f5d0c2a00880b74bde748fd
-Author: Maria Matejka 
-Date:   Tue Feb 1 09:45:50 2022 +0100
-
-    Socket cork fixes
-
-commit 127862f626f39d52b758084931e0fbdc91db745c
-Author: Maria Matejka 
-Date:   Wed Jan 26 21:16:19 2022 +0100
-
-    Asynchronous neighbor notifications fixes
-
-commit 0f6ea957541dc59b15f4e8a42e9ed006345a2a70
-Author: Maria Matejka 
-Date:   Mon Jan 10 13:03:15 2022 +0100
-
-    Explicitly storing and checking loop information in sockets
-
-commit d37513a372b0d5b133f59293af185ec831e2456f
-Author: Maria Matejka 
-Date:   Mon Jan 24 15:48:18 2022 +0100
-
-    Neighbors: Locking and asynchronous notifications
-
-commit c651cef737c7c7578c26bd787c0abd3c364bf4b8
-Author: Maria Matejka 
-Date:   Mon Jan 24 10:01:10 2022 +0100
-
-    Global interface list renamed to not clash with local lists
-
-commit b6c9263543060141d79e205e1b3408099ad1afc4
-Author: Maria Matejka 
-Date:   Wed Jan 12 14:06:49 2022 +0100
-
-    Interfaces and neighbor notifications do properly enter protocol loops
-
-commit b5155d5cea6af783619144ca49648ad743cf4e38
-Author: Maria Matejka 
-Date:   Mon Jan 10 14:49:58 2022 +0100
-
-    Page cleanup routines updated to allow nested birdloops
-
-commit 87512ccdff9cb95847e3bec36893665558db5c95
-Author: Maria Matejka 
-Date:   Tue Jan 11 13:10:01 2022 +0100
-
-    Route table fast prune fixup
-
-commit f22bab98186a52f6e7247422ead4332f4c37e0ce
-Author: Maria Matejka 
-Date:   Mon Jan 10 10:30:55 2022 +0100
-
-    Babel: fixed interface pool removal
-
-commit 3cf5e0f1443a1438ae3a84d0e91d7ad098590897
-Author: Maria Matejka 
-Date:   Mon Jan 10 09:30:46 2022 +0100
-
-    Dropping a nonsensical assert which broke Babel
-
-commit ee84ff14a10ebae1e000946be56ff1d1277ca7d5
-Author: Maria Matejka 
-Date:   Mon Jan 24 16:04:03 2022 +0100
-
-    Removing periodic wakeup of mainloop in debug version to search for notification issues
-
-commit 935b0b7124a72e561b3151bfce7cab6b9c7bd255
-Author: Maria Matejka 
-Date:   Thu Dec 9 21:53:00 2021 +0100
-
-    Performance data of sark vs. v2.0.8 with a chart generator
-
-commit 4c6ee53f31a7ac667bc597b0fe19b6365abad415
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 28 18:13:18 2022 +0100
-
-    BGP: Make routing loops silent
-    
-    One of previous commits added error logging of invalid routes. This
-    also inadvertently caused error logging of route loops, which should
-    be ignored silently. Fix that.
-
-commit 963b2c7ce219df6bf9c179fff2dd2386cf26edf9
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 28 05:35:22 2022 +0100
-
-    BGP: Use proper class in attribute error messages
-    
-    Most error messages in attribute processing are in rx/decode step and
-    these use L_REMOTE log class. But there are few that are in tx/export
-    step and these should use L_ERR log class.
-    
-    Use tx-specific macro (REJECT()) in tx/export code and rename field
-    err_withdraw to err_reject in struct bgp_export_state to ensure that
-    appropriate error reporting macros are called in proper contexts.
-
-commit 75d01ecc2d32f3f673f82d90552f17b753e5e739
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 28 05:03:03 2022 +0100
-
-    BGP: Improve 'invalid next hop' error reporting
-    
-    Distinguish multiple causes of 'invalid next hop' message and report
-    the relevant next hop address.
-    
-    Thanks to Simon Ruderich for the original patch.
-
-commit 9dbb7eb6ebda016cd14ce8fef403c2b3f7bdd504
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jan 24 03:44:21 2022 +0100
-
-    BGP: Log route updates that were changed to withdraws
-    
-    Typical BGP error handling is treat-as-withdraw, where an invalid route
-    is replaced with a withdraw. Log route network when it happens.
-
-commit a9646efd40569f3a1d749bc1bd13219876b33a00
-Author: Matous Holinka 
-Date:   Thu Jan 6 09:53:23 2022 +0100
-
-    .gitlab-ci.yml: minor changes inside the .yml file.
-    
-    + ubuntu:21.10 added into the pipeline,
-    - ubuntu:20.10 removed from the pipeline,
-    
-    + misc/docker/ubuntu-21.10-amd64/Dockerfile added,
-    - misc/docker/ubuntu-20.10-amd64/Dockerfile removed.
-
-commit 81ee6cda2e60bbd3d97ab63da30657a54b09feda
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jan 17 05:11:29 2022 +0100
-
-    Netlink: Add option to specify netlink socket receive buffer size
-    
-    Add option 'netlink rx buffer' to specify netlink socket receive buffer
-    size. Uses SO_RCVBUFFORCE, so it can override rmem_max limit.
-    
-    Thanks to Trisha Biswas and Michal for the original patches.
-
-commit bbc33f6ec310d98b9100fb883a2b8908ede1b5a8
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jan 15 22:39:40 2022 +0100
-
-    Netlink: Add another workaround for older kernel headers
-    
-    Unfortunately, SOL_NETLINK is both recently added and arch-dependent,
-    so we cannot just define it.
-
-commit 8988264a64dc9985303332568832b108dba3acd3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 14 23:15:05 2022 +0100
-
-    Netlink: Add workaround for older kernel headers
-
-commit e818f16448e918ed07633480291283f3449dd9e4
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 14 21:53:40 2022 +0100
-
-    Netlink: Enable strict checking for KRT dumps
-    
-    Add strict checking for netlink KRT dumps to avoid PMTU cache records
-    from FNHE table dump along with KRT.
-    
-    Linux Kernel added FNHE table dump to the netlink API in patch:
-    
-    https://patchwork.ozlabs.org/project/netdev/patch/8d3b68cd37fb5fddc470904cdd6793fcf480c6c1.1561131177.git.sbrivio@redhat.com/
-    
-    Therefore, since Linux 5.3 these route cache entries are dumped together
-    with regular routes during periodic KRT scans, which in some cases may be
-    huge amount of useless data. This can be avoided by using strict checking
-    for netlink dumps:
-    
-    https://lore.kernel.org/netdev/20181008031644.15989-1-dsahern@kernel.org/
-    
-    The patch mitigates the risk of receiving unknown and potentially large
-    number of FNHE records that would block BIRD I/O in each sync. There is a
-    known issue caused by the GRE tunnels on Linux that seems to be creating
-    one FNHE record for each destination IP address that is routed through
-    the tunnel, even when the PMTU equals to GRE interface MTU.
-    
-    Thanks to Tomas Hlavacek for the original patch.
-
-commit d0dd1d20cd40e75e417d58569fac3ff0bf1db41a
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 14 19:07:57 2022 +0100
-
-    Netlink: Explicitly skip received cloned routes
-    
-    Kernel uses cloned routes to keep route cache entries, but reports them
-    together with regular routes. They were skipped implicitly as they
-    do not have rtm_protocol filled. Add explicit check for cloned flag
-    and skip such routes explicitly.
-    
-    Also, improve debug logs of skipped routes.
-
-commit 60e9def9ef7b5d16f868b0fb4ab1192d59fd7541
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jan 9 02:40:58 2022 +0100
-
-    BGP: Add option 'free bind'
-    
-    The BGP 'free bind' option applies the IP_FREEBIND/IPV6_FREEBIND
-    socket option for the BGP listening socket.
-    
-    Thanks to Alexander Zubkov for the idea.
-
-commit 87a02489f3880689a4e2ad72b0b981649dad2154
-Author: Alexander Zubkov 
-Date:   Sat Jan 8 18:31:56 2022 +0100
-
-    IO: Support nonlocal bind in socket interface
-    
-    Add option to socket interface for nonlocal binding, i.e. binding to an
-    IP address that is not present on interfaces. This behaviour is enabled
-    when SKF_FREEBIND socket flag is set. For Linux systems, it is
-    implemented by IP_FREEBIND socket flag.
-    
-    Minor changes done by commiter.
-
-commit bcb25084d31fdb90fcf1666f10e73fe0f863afc0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 5 20:07:27 2022 +0100
-
-    Test: Activate some remaining build tests
-
-commit f5c8fb5fba959d356ce1ea0fb5879223f76137f7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 5 19:25:42 2022 +0100
-
-    Netlink: Do not ignore dead routes from BIRD
-    
-    Currently, BIRD ignores dead routes to consider them absent. But it also
-    ignores its own routes and thus it can not correctly manage such routes
-    in some cases. This patch makes an exception for routes with proto bird
-    when ignoring dead routes, so they can be properly updated or removed.
-    
-    Thanks to Alexander Zubkov for the original patch.
-
-commit 77d032c71f62e44293a10ccc22f8c157442df179
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 5 18:46:41 2022 +0100
-
-    Netlink: Improve multipath parsing errors
-    
-    Function nl_parse_multipath() should handle errors internally.
-
-commit 29dda184e56ce3a1ec72db4612198f6b3ba84e82
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 5 16:38:49 2022 +0100
-
-    Conf: Fix parsing full-length IPv6 addresses
-    
-    Lexer expression for bytestring was too loose, accepting also
-    full-length IPv6 addresses. It should be restricted such that
-    colon is used between every byte or never.
-    
-    Fix the regex and also add some test cases for it.
-    
-    Thanks to Alexander Zubkov for the bugreport
-
-commit 75aceadaf746f8ed0acce0424f89903283dacf16
-Author: Matous 
-Date:   Thu Oct 14 12:16:46 2021 +0200
-
-    gitlab-ci.yml: failing gitlab runner fixed.
-    
-    'registry.labs.nic.cz' -> 'registry.nic.cz' changed
-
-commit 77042292ff1ebeb5451f3a4119c3cbde0629f5b1
-Author: Alexander Zubkov 
-Date:   Tue Dec 28 04:09:36 2021 +0100
-
-    Doc: Document min/max operators for lists
-
-commit 0e1fd7ea6af8aaeb68a23e320c2a0a0a8480d6de
-Author: Alexander Zubkov 
-Date:   Tue Dec 28 04:05:05 2021 +0100
-
-    Filter: Add operators to find minimum and maximum element of sets
-    
-    Add operators .min and .max to find minumum or maximum element in sets
-    of types: clist, eclist, lclist. Example usage:
-    
-    bgp_community.min
-    bgp_ext_community.max
-    filter(bgp_large_community, [(as1, as2, *)]).min
-    
-    Signed-off-by: Alexander Zubkov 
-
-commit e15e465720c428e765ab88fd587afb4f4f5d70ae
-Author: Alexander Zubkov 
-Date:   Tue Dec 28 03:48:42 2021 +0100
-
-    Doc: Document community components access operators
-
-commit a2a268da4f0c05012d691b57f9b358e3f35ef121
-Author: Alexander Zubkov 
-Date:   Tue Dec 28 03:46:13 2021 +0100
-
-    Filter: Add operators to pick community components
-    
-    Add operators that can be used to pick components from
-    pair (standard community) or lc (large community) types.
-    For example:
-    
-    (10, 20).asn --> 10
-    (10, 20).data --> 20
-    
-    (10, 20, 30).asn --> 10
-    (10, 20, 30).data1 --> 20
-    (10, 20, 30).data2 --> 30
-    
-    Signed-off-by: Alexander Zubkov 
-
-commit a39cd2cc0b0c64235457c07e2b618318bbdfcacd
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 27 19:10:35 2021 +0100
-
-    BSD: Assume onlink flag on ifaces with only host addresses
-    
-    The BSD kernel does not support the onlink flag and BIRD does not use
-    direct routes for next hop validation, instead depends on interface
-    address ranges. We would like to handle PtMP cases with only host
-    addresses configured, like:
-    
-      ifconfig wg0 192.168.0.10/32
-      route add 192.168.0.4 -iface wg0
-      route add 192.168.0.8 -iface wg0
-    
-    To accept BIRD routes with onlink next-hop, like:
-    
-      route 192.168.42.0/24 via 192.168.0.4%wg0 onlink
-    
-    BIRD would dismiss the route when receiving from the kernel, as the
-    next-hop 192.168.0.4 is not part of any interface subnet and onlink
-    flag is not kept by the BSD kernel.
-    
-    The commit fixes this by assuming that for routes received from the
-    kernel, any next-hop is onlink on ifaces with only host addresses.
-    
-    Thanks to Stefan Haller for the original patch.
-
-commit ffa6a51c58e7880a330e2bc3da22e5e5174e2100
-Author: Maria Matejka 
-Date:   Wed Dec 22 15:35:29 2021 +0100
-
-    Thread documentation: Chapter 4 on memory management
-
-commit b9f38727a7ba7c9c7e383ade80dbf77086dfce05
-Author: Job Snijders 
-Date:   Sat Dec 18 16:35:28 2021 +0100
-
-    RPKI: Add contextual out-of-bound checks in RTR Prefix PDU handler
-    
-    RFC 6810 and RFC 8210 specify that the "Max Length" value MUST NOT be
-    less than the Prefix Length element (underflow). On the other side,
-    overflow of the Max Length element also is possible, it being an 8-bit
-    unsigned integer allows for values larger than 32 or 128. This also
-    implicitly ensures there is no overflow of "Length" value.
-    
-    When a PDU is received where the Max Length field is corrputed, the RTR
-    client (BIRD) should immediately terminate the session, flush all data
-    learned from that cache, and log an error for the operator.
-    
-    Minor changes done by commiter.
-
-commit 00410fd6c17697a5919cb32a44f7117dd3a0834a
-Author: Simon Ruderich 
-Date:   Sat Dec 18 03:17:48 2021 +0100
-
-    Doc: bgp: remove "advertise ipv4"
-    
-    The option was removed in d15b0b0a ("BGP redesign", 2016-12-07)
-    but the documentation wasn't updated.
-
-commit b21104c97e59128973501fc23570e2d929f48923
-Author: Ondrej Zajicek (work) 
-Date:   Sat Dec 18 00:58:47 2021 +0100
-
-    Nest: Do not ignore secondary flag changes in ifa updates
-    
-    Compare all IA_* flags that are set by sysdep iface code.
-    
-    The old code ignores IA_SECONDARY flag when comparing whether iface
-    address updates from kernel changed anything. This is usually not an
-    issue as kernel removes all secondary addresses due to removal of the
-    primary one, but it breaks when sysctl 'promote_secondaries' is enabled
-    and kernel promotes secondary addresses to primary ones.
-    
-    Thanks to 'Alexander' for the bugreport.
-
-commit a840170e84b004b398552687f8e3fd54816ae2a5
-Author: Maria Matejka 
-Date:   Wed Dec 8 20:31:12 2021 +0100
-
-    Thread documentation: Completely rewritten chapter 3 on loops and locks
-
-commit 827c78297e624ff8489f2c61204a42a9a59c7e8d
-Author: Maria Matejka 
-Date:   Wed Jun 9 07:10:13 2021 +0200
-
-    Final version of asynchronous export documentation
-
-commit b6612ec792a1539a22163429080967c9c416cae6
-Author: Maria Matejka 
-Date:   Fri Jun 4 18:14:10 2021 +0200
-
-    Thread documentation: chapter 3, coroutines and locking
-
-commit f459deee9f494ae8f741cc3b04e0e0db94a77c53
-Author: Maria Matejka 
-Date:   Thu Mar 4 20:11:26 2021 +0100
-
-    Thread documentation: chapters 0, 1 and 2
-
-commit 493d45d95076ea1f375346942a1ce4e21dcc55e6
-Author: Maria Matejka 
-Date:   Tue Dec 7 16:59:44 2021 +0000
-
-    Fixed build errors for OpenBSD
-
-commit f9e098c98af98096c8f47a054b57cff63d345074
-Author: Maria Matejka 
-Date:   Tue Dec 7 14:55:27 2021 +0100
-
-    Fixed standby memory page counters on shutdown
-    
-    Bug introduced by commit 38278d94ba0a179d5eeb061a59850a4e1c150e5b.
-
-commit 542f24555d9f7c98830ffbca29efc17151bed13b
-Author: Maria Matejka 
-Date:   Tue Dec 7 11:49:35 2021 +0000
-
-    GDB: io loop printing support in resource dumps, better iterating over linpool chunks
-
-commit a9efce68b59efa1d2ceb89a2c19f9e2bf50391ea
-Author: Maria Matejka 
-Date:   Tue Dec 7 12:47:42 2021 +0100
-
-    Fixed a race condition in channel aux table cleanup
-
-commit 4f43d326b4ab8c8ddd4bc00152859e768c27590a
-Author: Maria Matejka 
-Date:   Mon Dec 6 19:03:00 2021 +0100
-
-    Event list asserts to prevent running into rotten data
-
-commit e32eafaaa76c27fe5cae496e500e257a5dede7f3
-Author: Maria Matejka 
-Date:   Tue Dec 7 13:04:00 2021 +0100
-
-    Using more Python-ish constructions in BIRD linked-list accessors
-
-commit 2117864a87cf9c83d645e5ed1b0863b0e9e95f9a
-Author: Maria Matejka 
-Date:   Thu Dec 2 11:41:53 2021 +0000
-
-    Main IO loop shouldn't skip sockets when ping is received
-
-commit c5b6b184135b898a22c2a5ab9690c570c3def603
-Author: Maria Matejka 
-Date:   Thu Dec 2 11:29:59 2021 +0000
-
-    Standby memory pages are accounted for as overhead in show memory command
-
-commit 78ddfd2600a31305a78dc205b65deba6fb2e0240
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 29 19:00:24 2021 +0100
-
-    Trie: Clarify handling of less-common net types
-    
-    For convenience, Trie functions generally accept as input values not only
-    NET_IPx types of nets, but also NET_VPNx and NET_ROAx types. But returned
-    values are always NET_IPx types.
-
-commit 38278d94ba0a179d5eeb061a59850a4e1c150e5b
-Author: Maria Matejka 
-Date:   Wed Dec 1 22:02:42 2021 +0000
-
-    No memory unmapping when shutting down
-    
-    All the memory is just freed implicitly on exit, no need for
-    page-by-page unmapping.
-
-commit b2bac7ae91253b0bd27e9b03ec5fc30ac1522928
-Author: Maria Matejka 
-Date:   Wed Dec 1 21:52:55 2021 +0000
-
-    Faster shutdown and cleanups by freeing route attributes strictly from main loop
-
-commit 387b279f605c096c6ecb16d6608c700c533edb13
-Author: Maria Matejka 
-Date:   Wed Dec 1 21:33:38 2021 +0000
-
-    Faster prune on table deletion
-
-commit 5f94d684d0ae07306002c319d9a2e921b28b13cf
-Author: Maria Matejka 
-Date:   Wed Dec 1 16:21:35 2021 +0000
-
-    Table prune routines request export announcements directly
-
-commit 7092bdc0c9fa77b5cad1c29b342b81f01ba087be
-Author: Maria Matejka 
-Date:   Thu Nov 25 20:21:58 2021 +0000
-
-    fixed duplicate routes propagation
-
-commit b50224a00351904f25a5105a98d56a62ed2c33a4
-Merge: 55ee9961e f772afc52
-Author: Maria Matejka 
-Date:   Wed Dec 1 13:02:44 2021 +0100
-
-    Merge branch 'master' into HEAD
-
-commit 55ee9961e0d130bb16b22b7b5acffd815f266d63
-Author: Maria Matejka 
-Date:   Wed Dec 1 10:46:49 2021 +0100
-
-    Fix of shutdown: premature log cleanup led to use-after-free
-
-commit bb63e99d7877023667edaf26495dd657ec2fd57b
-Author: Maria Matejka 
-Date:   Tue Nov 30 23:57:14 2021 +0100
-
-    Page allocator moved from pools to IO loops.
-    
-    The resource pool system is highly hierarchical and keeping spare pages
-    in pools leads to unnecessarily complex memory management.
-    
-    Loops have a flat hiearchy, at least for now, and it is therefore much
-    easier to keep care of pages, especially in cases of excessive virtual memory
-    fragmentation.
-
-commit 385b3ea3956aefc2868cdd838fc0a90f1d8a7857
-Author: Maria Matejka 
-Date:   Tue Nov 30 18:16:49 2021 +0100
-
-    For safer memory allocations, resources are bound to loops.
-    
-    Also all loops have their basic resource pool for allocations which are
-    auto-freed when the loop is stopping.
-
-commit f772afc525156498900770ffe5a98349df89a45c
-Author: Maria Matejka 
-Date:   Sat Nov 27 00:21:12 2021 +0100
-
-    Memory statistics split into Effective and Overhead
-    
-    This feature is intended mostly for checking that BIRD's allocation
-    strategies don't consume much memory space. There are some cases where
-    withdrawing routes in a specific order lead to memory fragmentation and
-    this output should give the user at least a notion of how much memory is
-    actually used for data storage and how much memory is "just allocated"
-    or used for overhead.
-    
-    Also raising the "system allocator overhead estimation" from 8 to 16
-    bytes; it is probably even more. I've found 16 as a local minimum in
-    best scenarios among reachable machines. I couldn't find any reasonable
-    method to estimate this value when BIRD starts up.
-    
-    This commit also fixes the inaccurate computation of memory overhead for
-    slabs where the "system allocater overhead estimation" was improperly
-    added to the size of mmap-ed memory.
-
-commit 14fc24f3a53ebc5525b854ccdc93274aa74a400f
-Author: Ondrej Zajicek (work) 
-Date:   Fri Nov 26 03:26:36 2021 +0100
-
-    Trie: Implement longest-prefix-match queries and walks
-    
-    The prefix trie now supports longest-prefix-match query by function
-    trie_match_longest_ipX() and it can be extended to iteration over all
-    covering prefixes for a given prefix (from longest to shortest) using
-    TRIE_WALK_TO_ROOT_IPx() macro.
-
-commit ab0994a10c26bd76b4154a675267d96d19dfb509
-Author: Maria Matejka 
-Date:   Wed Nov 24 23:20:26 2021 +0100
-
-    fixup of table reload bug
-
-commit 644e9ca94e2d10ba0c2de45f94523da2414328e3
-Author: Maria Matejka 
-Date:   Wed Nov 24 17:30:13 2021 +0100
-
-    Directly mapped pages are kept for future use if temporarily not needed
-
-commit 57d0ecb9b739afec9a050178ed664ff5ec9cf42e
-Author: Maria Matejka 
-Date:   Tue Nov 23 18:04:16 2021 +0000
-
-    GDB pretty printer for resource pools
-
-commit 5395880908fdb264b5b78ccc455dced49eb29915
-Author: Maria Matejka 
-Date:   Tue Nov 23 12:06:27 2021 +0000
-
-    Fixed pipe reload/refeed
-
-commit 821344c781a99a4f559949a7497617b64c061c82
-Author: Maria Matejka 
-Date:   Tue Nov 23 11:13:11 2021 +0000
-
-    Stored pages release routine
-
-commit 4ba991f19c2f8aa893a723f29775c50e1370ed07
-Author: Maria Matejka 
-Date:   Tue Nov 23 11:12:32 2021 +0000
-
-    Fixed channel export map confusion
-
-commit 44dbedbe3fa77a16ea7d5736f07e65d9e2c0b165
-Author: Maria Matejka 
-Date:   Sun Nov 21 12:06:19 2021 +0100
-
-    BGP: End route refresh before another starts
-
-commit 3fd1f46184aa74d8ab7ed65c9ab6954f7e49d309
-Author: Maria Matejka 
-Date:   Wed Nov 17 21:34:54 2021 +0100
-
-    RPKI has its own loop
-
-commit aadf690b14b3ac7773beb63102989fb8c1cdf7db
-Author: Maria Matejka 
-Date:   Tue Nov 16 12:23:24 2021 +0100
-
-    Higher settle times when route refresh in the source table is running
-
-commit df476c2e5d0684c3beab9058bc85d627b0e4d7ed
-Author: Maria Matejka 
-Date:   Mon Nov 15 22:48:24 2021 +0100
-
-    Corking also feed start to keep BIRD running when refeeds would easily cause congestion
-
-commit 0fd1c1d091ee8e43eb0e15c67a92960ca581ed5f
-Author: Maria Matejka 
-Date:   Sat Nov 13 22:13:51 2021 +0100
-
-    Route attribute cache is now lockless on read / clone.
-    
-    Lots of time was spent locking when accessing route attribute cache.
-    This overhead should be now reduced to a minimum.
-
-commit adf37d8eff8f281871295c402a51ae1dd654851c
-Author: Maria Matejka 
-Date:   Mon Nov 15 10:53:58 2021 +0100
-
-    VRF setting reduced to one argument, using default dummy iface for default vrf
-
-commit dc160e11e1a9e4344bbee6fd0bc8aee229d7c540
-Author: Maria Matejka 
-Date:   Fri Nov 12 15:53:33 2021 +0000
-
-    Route table import-to-export announcement indirection to reduce pipe traffic
-
-commit 4f3fa1623f66acd24c227cf0cc5a4af2f5133b6c
-Author: Maria Matejka 
-Date:   Mon Oct 18 21:22:58 2021 +0200
-
-    Pipe runs in parallel.
-
-commit 878eeec12bf020c9e7460040d225a929bbbd2bd2
-Author: Maria Matejka 
-Date:   Wed Sep 29 16:15:13 2021 +0200
-
-    Routing tables now have their own loops.
-    
-    This basically means that:
-    * there are some more levels of indirection and asynchronicity, mostly
-      in cleanup procedures, requiring correct lock ordering
-    * all the internal table operations (prune, next hop update) are done
-      without blocking the other parts of BIRD
-    * the protocols may get their own loops very soon
-
-commit c7d0c5b2523a8cbfcaee9a235955dd5e58fab671
-Author: Maria Matejka 
-Date:   Wed Oct 27 12:42:05 2021 +0000
-
-    Route subscription uses events
-
-commit 18f66055e3f7eec2108e18679652aee47f5de6b2
-Author: Maria Matejka 
-Date:   Wed Sep 29 17:59:50 2021 +0200
-
-    Global table update pool removed
-
-commit 038fcf1c8b7716415235384de5dc47d07dc45b85
-Author: Maria Matejka 
-Date:   Mon Sep 27 17:44:19 2021 +0200
-
-    Locking route attributes cache
-    
-    To access route attribute cache from multiple threads at once, we have
-    to lock the cache on writing. The route attributes data structures are
-    safe to read unless somebody tries to tamper with the cache itself.
-
-commit f0507f05ce57398e135651896dace4cb68eeed54
-Author: Maria Matejka 
-Date:   Mon Sep 27 16:40:28 2021 +0200
-
-    Route sources have an explicit owner
-    
-    This commit prevents use-after-free of routes belonging to protocols
-    which have been already destroyed, delaying also all the protocols'
-    shutdown until all of their routes have been finally propagated through
-    all the pipes down to the appropriate exports.
-    
-    The use-after-free was somehow hypothetic yet theoretically possible in
-    rare conditions, when one BGP protocol authors a lot of routes and the
-    user deletes that protocol by reconfiguring in the same time as next hop
-    update is requested, causing rte_better() to be called on a
-    not-yet-pruned network prefix while the owner protocol has been already
-    freed.
-    
-    In parallel execution environments, this would happen an inter-thread
-    use-after-free, causing possible heisenbugs or other nasty problems.
-
-commit 20ace7f2e61bc6881e4ea22c63f0d0eb9a1dd1a2
-Author: Maria Matejka 
-Date:   Tue Nov 16 21:14:24 2021 +0000
-
-    RPKI: Use the route refresh mechanism also for the first load
-
-commit 2a224a9e1e1fbe1abec96c8585dd754fb716d020
-Author: Maria Matejka 
-Date:   Sat Nov 13 17:52:34 2021 +0100
-
-    Route sources have their separate global lock
-
-commit 794a4eefa11f3166404d91edddd0f4f19458f652
-Author: Maria Matejka 
-Date:   Thu Nov 11 16:25:59 2021 +0100
-
-    Keeping un-unmmappable pages until they can be reused
-    
-    On Linux, munmap() may fail with ENOMEM when virtual memory is too
-    fragmented. Working this around by just keeping such blocks for future
-    use.
-
-commit 1e8e3b7c1214393844c35fe3fbba9865b56ec95f
-Author: Maria Matejka 
-Date:   Tue Nov 16 21:13:32 2021 +0000
-
-    More information on RPKI errors
-
-commit 1b39473993abcc6180657c8d3bd5f9e12e4bc816
-Author: Maria Matejka 
-Date:   Fri Nov 12 22:58:40 2021 +0100
-
-    Introducing basic RCU primitives for lock-less shared data structures
-
-commit 3b20722a1fc777c27ab2e0451d0ea3fee7fa81a2
-Author: Maria Matejka 
-Date:   Mon Sep 27 14:08:03 2021 +0200
-
-    Table cork: Stop creating updates when there are too many pending.
-    
-    The corked procedure gets a callback when uncorked. Supported by table
-    maintenance routines and also BGP.
-
-commit 6e841b3153565632b6753f6b1fe74850c37f2808
-Author: Maria Matejka 
-Date:   Wed Oct 20 23:08:58 2021 +0200
-
-    Adding a generic cork mechanism for events
-
-commit 94eb0858c2b938549d9d1703c872c6149901e7dd
-Author: Maria Matejka 
-Date:   Sat Jun 19 20:50:18 2021 +0200
-
-    Converting the former BFD loop to a universal IO loop and protocol loop.
-    
-    There is a simple universal IO loop, taking care of events, timers and
-    sockets. Primarily, one instance of a protocol should use exactly one IO
-    loop to do all its work, as is now done in BFD.
-    
-    Contrary to previous versions, the loop is now launched and cleaned by
-    the nest/proto.c code, allowing for a protocol to just request its own
-    loop by setting the loop's lock order in config higher than the_bird.
-    
-    It is not supported nor checked if any protocol changed the requested
-    lock order in reconfigure. No protocol should do it at all.
-
-commit a4451535c69b8f934523905a8131ae2f16be2146
-Author: Maria Matejka 
-Date:   Wed Aug 4 22:48:51 2021 +0200
-
-    Unified time for whole BIRD
-    
-    In previous versions, every thread used its own time structures,
-    effectively leading to different time in every thread and strange
-    logging messages.
-    
-    The time processing code now uses global atomic variables to keep
-    current time available for fast concurrent reading and safe updates.
-
-commit a845651bc50b75b2be41b4427e04857ce3c106a6
-Author: Maria Matejka 
-Date:   Mon Feb 15 18:23:15 2021 +0100
-
-    Multithreaded BIRD needs reasonably new software to compile
-
-commit c70b3198dc349127273d202ab8c36afeebb6d9d0
-Author: Maria Matejka 
-Date:   Mon Sep 27 13:04:16 2021 +0200
-
-    Route export is now asynchronous.
-    
-    To allow for multithreaded execution, we need to break the import-export
-    chain and buffer the exports before actually processing them.
-
-commit f18968f52f461946b64aaea6c4a0e88c5235fb07
-Author: Maria Matejka 
-Date:   Fri Oct 22 19:43:55 2021 +0200
-
-    Better profylaction recursive route loops
-    
-    In some specific configurations, it was possible to send BIRD into an
-    infinite loop of recursive next hop resolution. This was caused by route
-    priority inversion.
-    
-    To prevent priority inversions affecting other next hops, we simply
-    refuse to resolve any next hop if the best route for the matching prefix
-    is recursive or any other route with the same preference is recursive.
-    
-    Next hop resolution doesn't change route priority, therefore it is
-    perfectly OK to resolve BGP next hops e.g. by an OSPF route, yet if the
-    same (or covering) prefix is also announced by iBGP, by retraction of
-    the OSPF route we would get a possible priority inversion.
-
-commit 44f26c49f966ca842ff9af55468de0b98c44b73e
-Author: Maria Matejka 
-Date:   Wed Oct 6 15:10:33 2021 +0200
-
-    Special table hooks rectified.
-    
-    * internal tables are now more standalone, having their own import and
-      export hooks
-    * route refresh/reload uses stale counter instead of stale flag,
-      allowing to drop walking the table at the beginning
-    * route modify (by BGP LLGR) is now done by a special refeed hook,
-      reimporting the modified routes directly without filters
-
-commit 445eeaf3df126af2c7b61e71c4f08a583eb4fa60
-Author: Maria Matejka 
-Date:   Fri Oct 22 21:03:25 2021 +0200
-
-    Split route table event into separate events
-    
-    The former rt_event is dropped in favour of separate table events.
-    This allows for selective corking of NHU and prune.
-
-commit c84ed603714db2c42a781f8dbb5b3fd540ff689f
-Author: Maria Matejka 
-Date:   Fri Jun 18 18:23:41 2021 +0200
-
-    Moved BFD IO loop out of BFD as we want to use it as socket-io coroutine
-
-commit a2af807357875f866f149b0f6db4d463d4533204
-Author: Maria Matejka 
-Date:   Mon Jun 28 15:43:45 2021 +0200
-
-    Debug messages with timestamps.
-    
-    On most of current hardware, getting monotonic clock is fast enough to
-    get it and write for each debug message.
-
-commit 8d706aedba42f8ace0084c7b983ddaaaf47dff91
-Author: Maria Matejka 
-Date:   Mon Aug 9 11:51:19 2021 +0200
-
-    Fixing expensive list checks. Debug only commit.
-
-commit df3264f51ff38c9366398564a9d342a26bc83f37
-Author: Maria Matejka 
-Date:   Mon May 24 13:41:23 2021 +0200
-
-    Lock position checking allows for safe lock unions
-
-commit b5ca6a79d36549fcc5b934b8ffc283f15b8da4a5
-Author: Maria Matejka 
-Date:   Wed Oct 13 14:50:02 2021 +0200
-
-    GDB: SKIP_BACK and linked list tools
-
-commit 1289c1c5eede5b3d015d06b725d30024ccac51bd
-Author: Maria Matejka 
-Date:   Mon Feb 8 09:51:59 2021 +0100
-
-    Coroutines: A simple and lightweight parallel execution framework.
-
-commit 2d7e42cc593b3c99f8eacaaa506194aeb3a5cf85
-Author: Maria Matejka 
-Date:   Wed Oct 13 11:33:48 2021 +0200
-
-    Type checking in SKIP_BACK macro
-
-commit 1db83a507a9ae287815d62733d1337074993b433
-Author: Maria Matejka 
-Date:   Thu Feb 4 15:52:42 2021 +0100
-
-    Locking subsystem: Just a global BIRD lock to begin with.
-
-commit feb17ced234bad13ae64b52a3f86241f74517997
-Author: Maria Matejka 
-Date:   Fri Jun 18 18:10:42 2021 +0200
-
-    Dropping the POSIX thread-local variables in favor of much easier-to-use C11 thread-local variables
-
-commit b5061659d3cc011118024861c2f048e67affbd39
-Author: Maria Matejka 
-Date:   Thu Feb 4 15:08:52 2021 +0100
-
-    POSIX threads and thread-local storage is needed for concurrent execution
-
-commit f81702b7e44ba7f2b264fe14f0f4e1e30913e475
-Author: Maria Matejka 
-Date:   Mon Jun 21 17:07:31 2021 +0200
-
-    Table import and export are now explicit hooks.
-    
-    Channels have now included rt_import_req and rt_export_req to hook into
-    the table instead of just one list node. This will (in future) allow for:
-    
-    * channel import and export bound to different tables
-    * more efficient pipe code (dropping most of the channel code)
-    * conversion of 'show route' to a special kind of export
-    * temporary static routes from CLI
-    
-    The import / export states are also updated to the new algorithms.
-
-commit 062e69bf520e5788913bdd564076ad9892b24a87
-Author: Ondrej Zajicek (work) 
-Date:   Fri Nov 19 18:04:32 2021 +0100
-
-    Trie: Implement trie walking code
-    
-    Trie walking allows enumeration of prefixes in a trie in the usual
-    lexicographic order. Optionally, trie enumeration can be restricted
-    to a chosen subnet (and its descendants).
-
-commit 71c18d9f53ec0ea5eb512fdb6510d0c3350f96b4
-Author: Ondrej Zajicek (work) 
-Date:   Sat Nov 13 21:11:18 2021 +0100
-
-    Trie: Simplify network matching code
-    
-    Introduce ipX_prefix_equal() and use it to simplify network matching code.
-
-commit 69d1ffde4c724882398b3b630ea1199f12c0c288
-Author: Maria Matejka 
-Date:   Tue Jan 28 11:42:46 2020 +0100
-
-    Split route data structure to storage (ro) / manipulation (rw) structures.
-    
-    Routes are now allocated only when they are just to be inserted to the
-    table. Updating a route needs a locally allocated route structure.
-    Ownership of the attributes is also now not transfered from protocols to
-    tables and vice versa but just borrowed which should be easier to handle
-    in a multithreaded environment.
-
-commit 0767a0c288097dfaec45fe505c401407ecc5de55
-Author: Maria Matejka 
-Date:   Thu Sep 30 13:50:54 2021 +0200
-
-    Secondary and merged exports get a whole feed instead of traversing the table structures directly
-
-commit 8f3942a97e16370f5c22e9c39ddbfe63b38bd5ce
-Author: Maria Matejka 
-Date:   Mon Mar 9 15:31:10 2020 +0100
-
-    Route export: rejected by filter bitmap
-    
-    If a route has been rejected by filter, store that information
-    to avoid repeated export filter runs on rejected routes.
-
-commit 56c8f2f03a8631417dc3b730625c08ffca42ead2
-Author: Maria Matejka 
-Date:   Fri May 1 22:26:24 2020 +0200
-
-    Nest: Route generations and explicit tracking route propagion through pipes
-
-commit 575da88f7a6cac54d204839d2b2cfc1809811ba3
-Author: Maria Matejka 
-Date:   Thu Feb 25 21:52:49 2021 +0100
-
-    Recursive route nexthop updates now announced with valid new_best/old_best information
-
-commit 3a8197a9dce6fc5d38b089a291ac79d8d394fea1
-Author: Maria Matejka 
-Date:   Sat Nov 6 20:34:16 2021 +0100
-
-    Limit containment
-
-commit c56752e4367733c03a05e65ba62ccd2e54f7aadd
-Author: Maria Matejka 
-Date:   Mon Jun 21 19:11:42 2021 +0200
-
-    Protocol stats split to import and export
-
-commit 1c2f66f2bd9b2996c8cba0604e7ac38738399000
-Author: Maria Matejka 
-Date:   Fri May 14 16:23:18 2021 +0200
-
-    Refeed is done from export table when appropriate
-
-commit 1e76f6e954e8043ec08c917c3f53e20f7dd06c99
-Author: Maria Matejka 
-Date:   Thu Sep 30 11:54:11 2021 +0200
-
-    Suppressed MRT unused static function warning
-
-commit 46739f007a8a21c7887a29a465db0c2520fb4a13
-Author: Maria Matejka 
-Date:   Sat Oct 30 15:50:16 2021 +0000
-
-    RPKI: Do nothing when protocol is stopping
-
-commit 13ebe7717685aaa64bbbe09a2e6cc0c6da2bd6bd
-Author: Maria Matejka 
-Date:   Sat Oct 30 14:56:55 2021 +0000
-
-    RPKI shouldn't process more packets when being stopped
-
-commit 6d87cf4be7536433d263609828414e687e1d4f08
-Author: Maria Matejka 
-Date:   Fri Oct 1 14:11:13 2021 +0200
-
-    Kernel routes are flushed on shutdown by kernel scan, not by table scan
-
-commit 60880b539b8886f76961125d89a265c6e1112b7a
-Author: Maria Matejka 
-Date:   Tue Nov 9 17:42:36 2021 +0100
-
-    Extended route trace: logging Path Identifiers
-
-commit 9f24fef5e91fb4df301242ede91ee7ac1b46b8a8
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 20 01:51:28 2021 +0200
-
-    Conf: Fix crash during shutdown
-    
-    BIRD implements shutdown by reconfiguring to fake empty configuration.
-    Such fake config structure is created from the last running config and
-    shares some data, including symbol table. This allows access to (removed)
-    routing tables and causes crash when 'show route' command is used during
-    shutdown.
-    
-    Clean up symbol table, table list and links to default tables, so removed
-    routing tables cannot be accessed during shutdown.
-
-commit 0b295d695acab007dd7baab3e9e97c682f716ee8
-Author: Maria Matejka 
-Date:   Tue Sep 14 11:20:16 2021 +0200
-
-    Dropping the unused rte_same hook
-
-commit 89ff49f8f0bcd2015f157134728d28ec428e1262
-Author: Maria Matejka 
-Date:   Mon Feb 17 12:42:14 2020 +0100
-
-    Dropping rte-local dumper entries
-
-commit e42eedb912428aa9af450b0426e53b0a7004dfb1
-Author: Maria Matejka 
-Date:   Thu Feb 13 16:59:53 2020 +0100
-
-    Kernel: Convert the rte-local attributes to extended attributes and flags to pflags
-
-commit 5cff1d5f022755df61af6fc21cc4f2e5d384404e
-Author: Maria Matejka 
-Date:   Fri Apr 10 17:08:29 2020 +0200
-
-    Route: moved rte_src pointer from rta to rte
-    
-    It is an auxiliary key in the routing table, not a route attribute.
-
-commit d5a32563df1653952937117133f09143929ff0c2
-Author: Maria Matejka 
-Date:   Sun Apr 12 21:54:20 2020 +0200
-
-    Preexport: No route modification, no linpool needed
-
-commit 541881bedf391d9a19f071b856dcbd55e850dece
-Author: Maria Matejka 
-Date:   Thu Sep 16 11:00:19 2021 +0200
-
-    RIP fixup + dropping the tmp_attrs mechanism as obsolete
-
-commit 3660f19dd534224da4870a507efcef5b36794506
-Author: Maria Matejka 
-Date:   Mon Feb 17 11:18:32 2020 +0100
-
-    Dropping the RTS_DUMMY temporary route storage.
-    
-    Kernel route sync is done by other ways now and this code is not used
-    currently.
-
-commit eb937358c087eaeb6f209660cc7ecfe6d6eff739
-Author: Maria Matejka 
-Date:   Mon Feb 10 08:41:05 2020 +0100
-
-    Preference moved to RTA and set explicitly in protocols
-
-commit cee0cd148c9b71bf47d007c850193b5fbf9486c1
-Author: Maria Matejka 
-Date:   Sat Mar 20 21:16:12 2021 +0100
-
-    Export table: Delay freeing of old stored route.
-    
-    This is needed to provide the protocols the full old route after filters
-    when export table is enabled.
-
-commit ddd89ba12d03d648e9bb820c6a4f48b1f96f15d2
-Author: Maria Matejka 
-Date:   Mon Feb 10 15:01:36 2020 +0100
-
-    BGP: Moved the suppressed and stale flags to pflags
-
-commit c507fb41bb2e62f336357121598debab95a7c767
-Author: Maria Matejka 
-Date:   Thu Feb 13 13:22:15 2020 +0100
-
-    Babel: Convert the rte-local attributes to extended attributes
-
-commit 8216ec3027d01b790e59a266227d378ba77a623e
-Author: Maria Matejka 
-Date:   Wed Sep 8 15:30:09 2021 +0000
-
-    There may be a symbol with NULL protocol when reconfiguring
-
-commit 5f0cb61d82315035a3a7f10eef510884da9f94c6
-Author: Maria Matejka 
-Date:   Tue Feb 11 21:24:15 2020 +0100
-
-    OSPF: Convert the rte-local attributes to extended attributes
-
-commit 8ac20511e17af14d62cd84fcc4e460474820a584
-Author: Maria Matejka 
-Date:   Wed Sep 8 08:33:25 2021 +0000
-
-    Show route may be accidentally called on shutdown also when not all default tables are present
-
-commit a0e4c66404681c5613ef7f6e80f8b8c3022446d4
-Author: Maria Matejka 
-Date:   Tue Sep 14 20:12:33 2021 +0200
-
-    RIP: convert the rte-local attributes to extended attributes
-
-commit 6e13df70fdaeb0f08ae5171f62240402501783ea
-Author: Maria Matejka 
-Date:   Tue Sep 14 19:53:03 2021 +0200
-
-    Extended route attributes may include also pointers
-
-commit d471d5fc7ce587ed836ca7fa10a79331bc181d45
-Author: Maria Matejka 
-Date:   Sat Mar 20 23:18:34 2021 +0100
-
-    IGP metric getter refactoring to protocol callback
-    
-    Direct protocol hooks for IGP metric inside nest/rt-table.c make the
-    protocol API unnecessarily complex. Instead, we use a proper callback.
-
-commit a54f75f454b7ed8c8ff2c1787a506528f22cbae7
-Author: Maria Matejka 
-Date:   Wed Oct 13 19:08:35 2021 +0200
-
-    fixup! Multipage allocation
-
-commit 6cd37713781a3092f8166b2178fae35cbfec1e28
-Author: Maria Matejka 
-Date:   Wed Sep 8 11:29:49 2021 +0200
-
-    Multipage allocation
-    
-    We can also quite simply allocate bigger blocks. Anyway, we need these
-    blocks to be aligned to their size which needs one mmap() two times
-    bigger and then two munmap()s returning the unaligned parts.
-    
-    The user can specify -B  on startup when  is the exponent of 2,
-    setting the block size to 2^N. On most systems, N is 12, anyway if you
-    know that your configuration is going to eat gigabytes of RAM, you are
-    almost forced to raise your block size as you may easily get into memory
-    fragmentation issues or you have to raise your maximum mapping count,
-    e.g. "sysctl vm.max_map_count=(number)".
-
-commit 3a31c3aad6c53ea9673743f983e13728d8551149
-Author: Maria Matejka 
-Date:   Tue Sep 7 16:22:32 2021 +0000
-
-    CLI socket accept() may also fail and should produce some message, not a coredump.
-
-commit d322ee3d548a87d6e996dd20b2b415aad4b53f62
-Author: Maria Matejka 
-Date:   Sun Sep 5 13:00:08 2021 +0200
-
-    OSPF: explicitly stop the periodic tick on shutdown to avoid recalculation races
-
-commit e5a8eec6d720408139d0a209ef149848c5dcfbe3
-Author: Maria Matejka 
-Date:   Fri Sep 3 19:48:38 2021 +0200
-
-    Linpools may use pages instead of xmalloc
-
-commit bea582cbb53e30dd32a5b6829c7443e0e5558d11
-Author: Maria Matejka 
-Date:   Wed Oct 13 18:59:45 2021 +0200
-
-    fixup! Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls
-
-commit 067f69a56de0e0e61d423ec5aa68095aa28e3124
-Author: Ondrej Zajicek (work) 
-Date:   Sat Sep 25 16:00:30 2021 +0200
-
-    Filter: Add prefix trie benchmarks
-    
-    Add trie tests intended as benchmarks that use external datasets
-    instead of generated prefixes. As datasets are not included, they
-    are commented out by default.
-
-commit e709dc09e61c4604821d10b81604d38616b81a0b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 21 13:49:29 2020 +0200
-
-    Filter: Improve prefix trie tests
-    
-    Add tests explicitly matching insides and outsides of trie and update
-    tests to do testing of both IPv4 and IPv6 tries.
-
-commit dd61278c9db1d4bea29f0a21aa460c7fe931eb32
-Author: Ondrej Zajicek (work) 
-Date:   Mon Apr 6 14:20:16 2020 +0200
-
-    Filter: Update trie documentation
-
-commit 562a2b8c29a50cca5731b0a19e99a87a261ab4ef
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 5 03:56:07 2020 +0200
-
-    Filter: Fix trie test
-    
-    Generated prefixes must be valid.
-
-commit 13225f1dbff54619476f2d8f6bc779dbb4983e3e
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 5 03:24:46 2020 +0200
-
-    Filter: Faster prefix sets
-    
-    Use 16-way (4bit) branching in prefix trie instead of basic binary
-    branching. The change makes IPv4 prefix sets almost 3x faster, but
-    with more memory consumption and much more complicated algorithm.
-    
-    Together with a previous filter change, it makes IPv4 prefix sets
-    about ~4.3x faster and slightly smaller (on my test data).
-
-commit 7f0e59820899c30a243c18556ce2e3fb72d6d221
-Author: Maria Matejka 
-Date:   Wed Sep 1 00:46:46 2021 +0200
-
-    Bound allocated pages to resource pools with page caches to avoid unnecessary syscalls
-
-commit 2c13759136951ef0e70a3e3c2b2d3c9a387f7ed9
-Author: Maria Matejka 
-Date:   Wed Aug 25 22:20:48 2021 +0200
-
-    Reducing filter stack size to allow for lesser thread stack size
-
-commit ceef6de459b25d8fcc5dd416e0cecf179bd243e7
-Author: Maria Matejka 
-Date:   Thu May 27 10:35:38 2021 +0200
-
-    OSPF: Setting a list node NULL before use
-
-commit 923a6644b206f70435c3d01b93b6880701938b49
-Author: Maria Matejka 
-Date:   Thu May 27 10:35:33 2021 +0200
-
-    Fixed memory poisoning in slab
-
-commit 227e2d5541e86210b383c8e8054805692ad3cf14
-Author: Maria Matejka 
-Date:   Wed May 26 16:42:02 2021 +0200
-
-    Debug output uses local buffer to avoid clashes between threads.
-
-commit eb2025165546d12114ca5ca4f2b338765f338af6
-Author: Maria Matejka 
-Date:   Mon Apr 27 22:33:10 2020 +0200
-
-    Filter: Additional consistency checks
-
-commit 47d92d8f9d9891a9b40f3fbef1d762537af4ae25
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jun 17 16:56:51 2021 +0200
-
-    Nest: Clean up main channel handling
-    
-    Remove assumption that main channel is the only channel.
-
-commit f761be6b30633054a54369eee7d08b951a366e5e
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jun 17 16:56:51 2021 +0200
-
-    Nest: Clean up main channel handling
-    
-    Remove assumption that main channel is the only channel.
-
-commit 1b9bf4e192a252db861acadc7f800d7046435a3f
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jun 14 20:02:50 2021 +0200
-
-    Nest: Fix export of tmpattrs through pipes
-    
-    Pipes copy the original rte with old values, so they require rte to be
-    exported with stored tmpattrs. Other protocols access stored attributes
-    using eattr list, so they require rte to be exported with expanded
-    tmpattrs. This is temporary hack, we plan to remove whoe tmpattr mechanism.
-    
-    Thanks to Paul Donohue for the bugreport.
-
-commit 3ebabab2778d05212cc07ebccf583159d5e0890a
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jun 14 17:58:37 2021 +0200
-
-    Revert "Nest: Fix export of tmpattrs through pipes"
-    
-    This reverts commit f8e273b5e7a3c721f4a30cf27a0b4fe54602e83f.
-
-commit f8e273b5e7a3c721f4a30cf27a0b4fe54602e83f
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jun 14 16:30:59 2021 +0200
-
-    Nest: Fix export of tmpattrs through pipes
-    
-    In most cases of export there is no need to store back temporary
-    attributes to rte, as receivers (protocols) access eattr list anyway.
-    But pipe copies the original rte with old values, so we should store
-    tmpattrs also during export.
-    
-    Thanks to Paul Donohue for the bugreport.
-
-commit 3f19100f5a47dce96d336d68e0cbe72de5d9ba60
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jun 11 01:31:10 2021 +0200
-
-    CI: Allow Babel tests
-
-commit 596f2e32e38bef076001f4b9a4c75b07fd0264b7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 9 19:54:01 2021 +0200
-
-    Nest: Allow both 'password' and 'key' keywords for authentication keys
-
-commit 6d26f853951675bd188dbf88d539ccb9d02d7eb1
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 9 19:31:55 2021 +0200
-
-    Babel: Simplify auth expiration
-    
-    Just use hello_expiry for that, keep init_expiry for initial
-    unauthentized neighbors.
-
-commit 8eea396baf2bd73ea846a48e82d5c42fc2aec6d5
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 6 19:10:33 2021 +0200
-
-    Nest: Fix password list parsing code
-    
-    One of previous patches broke password list parsing code, fix that.
-
-commit ee9516dbe85b7205c6c8e400780c5a25787d6bff
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 6 17:23:45 2021 +0200
-
-    Lib: Fix static assert macro
-
-commit b174cc0abc0a9d7e84cc6fae46d9e19b714fbcfb
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 6 15:22:59 2021 +0200
-
-    Babel: Add MAC authentication support - update
-    
-    Some cleanups and bugfixes to the previous patch, including:
-    
-     - Fix rate limiting in index mismatch check
-    
-     - Fix missing BABEL_AUTH_INDEX_LEN in auth_tx_overhead computation
-    
-     - Fix missing auth_tx_overhead recalculation during reconfiguration
-    
-     - Fix pseudoheader construction in babel_auth_sign() (sport vs fport)
-    
-     - Fix typecasts for ptrdiffs in log messages
-    
-     - Make auth log messages similar to corresponding RIP/OSPF ones
-    
-     - Change auth log messages for events that happen during regular
-       operation to debug messages
-    
-     - Switch meaning of babel_auth_check*() functions for consistency
-       with corresponding RIP/OSPF ones
-    
-     - Remove requirement for min/max key length, only those required by
-       given MAC code are enforced
-
-commit b218a28f61e1e9a93c3a4f2e180590f85df62e79
-Author: Toke Høiland-Jørgensen 
-Date:   Sat Apr 17 15:04:16 2021 +0200
-
-    Babel: Add MAC authentication support
-    
-    This implements support for MAC authentication in the Babel protocol, as
-    specified by RFC 8967. The implementation seeks to follow the RFC as close
-    as possible, with the only deliberate deviation being the addition of
-    support for all the HMAC algorithms already supported by Bird, as well as
-    the Blake2b variant of the Blake algorithm.
-    
-    For description of applicability, assumptions and security properties,
-    see RFC 8967 sections 1.1 and 1.2.
-
-commit 69d10132a6020e00ea2e8f899fdebf8128329699
-Author: Toke Høiland-Jørgensen 
-Date:   Thu Apr 15 20:15:53 2021 +0200
-
-    Babel: Refactor TLV parsing code for easier reuse
-    
-    In preparation for adding authentication checks, refactor the TLV
-    walking code so it can be reused for a separate pass of the packet
-    for authentication checks.
-
-commit 589f7d1e4f3aaca3fec6c38474bb962a9c578ebe
-Author: Toke Høiland-Jørgensen 
-Date:   Thu Apr 15 04:38:49 2021 +0200
-
-    Nest: Allow MAC algorithms to specify min/max key length
-    
-    Add min/max key length fields to the MAC algorithm description and
-    validate configured keys before they are used.
-
-commit 35f88b305ab6a0e27b5ff1b445f63f544986e14e
-Author: Toke Høiland-Jørgensen 
-Date:   Wed Apr 14 21:39:43 2021 +0200
-
-    Nest: Allow specifying security keys as hex bytes as well as strings
-    
-    Add support for specifying a password in hexadecimal format, The result
-    is the same whether a password is specified as a quoted string or a
-    hex-encoded byte string, this just makes it more convenient to input
-    high-entropy byte strings as MAC keys.
-
-commit f1a824190c22f8159ad0f9378c2dd23e521eaf61
-Author: Toke Høiland-Jørgensen 
-Date:   Wed Apr 14 20:00:03 2021 +0200
-
-    Lib: Add tests for blake2s and blake2b
-    
-    Import the blake2-kat.h header with test vector output from the blake
-    reference implementation, and add tests to mac_test.c to compare the
-    output of the Bird MAC algorithm implementations with that reference
-    output.
-    
-    Since the reference implementation only has test vectors for the full
-    output size, there are no tests for the smaller-sized output variants.
-
-commit 725d9af94a6eaf3cbce1b107e36c8cf342828ea6
-Author: Toke Høiland-Jørgensen 
-Date:   Sat Apr 10 17:33:28 2021 +0200
-
-    Lib: Add Blake2s and Blake2b hash functions
-    
-    The Babel MAC authentication RFC recommends implementing Blake2s as one of
-    the supported algorithms. In order to achieve do this, add the blake2b and
-    blake2s hash functions for MAC authentication. The hashing function
-    implementations are the reference implementations from blake2.net.
-    
-    The Blake2 algorithms allow specifying an arbitrary output size, and the
-    Babel MAC spec says to implement Blake2s with 128-bit output. To satisfy
-    this, we add two different variants of each of the algorithms, one using
-    the default size (256 bits for Blake2s, 512 bits for Blake2b), and one
-    using half the default output size.
-    
-    Update to BIRD coding style done by committer.
-
-commit e5724f71d2c054bc51d66092beb6af4da21e0c62
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 8 01:15:17 2021 +0200
-
-    sysdep: Add wrapper to get random bytes - update
-    
-    Simplify the code and fix an issue with getentropy() return value.
-
-commit c48ebde5ce6db3da8cd571d213d1a1f265de8983
-Author: Toke Høiland-Jørgensen 
-Date:   Thu Apr 1 19:20:13 2021 +0200
-
-    sysdep: Add wrapper to get random bytes
-    
-    Add a wrapper function in sysdep to get random bytes, and required checks
-    in configure.ac to select how to do it. The configure script tries, in
-    order, getrandom(), getentropy() and reading from /dev/urandom.
-
-commit 91d04583891f7a6f4aee612cf3f143cc84a73991
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 1 01:59:20 2021 +0200
-
-    BGP: Ensure that freed neighbor entry is not accessed
-    
-    Routes from downed protocols stay in rtable (until next rtable prune
-    cycle ends) and may be even exported to another protocol. In BGP case,
-    source BGP protocol is examined, although dynamic parts (including
-    neighbor entries) are already freed. That may lead to crash under some
-    race conditions. Ensure that freed neighbor entry is not accessed to
-    avoid this issue.
-
-commit ebd5751cdeb4c753c6c9df31b82dcd6afee2cd39
-Author: Maria Matejka 
-Date:   Sun May 30 13:07:16 2021 +0200
-
-    Babel: Seqno requests are properly decoupled from neighbors when the underlying interface disappears
-    
-    When an interface disappears, all the neighbors are freed as well. Seqno
-    requests were anyway not decoupled from them, leading to strange
-    segfaults. This fix adds a proper seqno request list inside neighbors to
-    make sure that no pointer to neighbor is kept after free.
-
-commit 10498b8e89a4509bdd447bd14f07a3b3e35ae575
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 26 18:57:32 2021 +0200
-
-    OSPF: Fix OSPFv3 in IPv4 mode with multiple areas
-    
-    Some area handling code got confused by IPv4 setup in OSPFv3 mode.
-
-commit 8650e26dd1566032d587a654376092a9f31a1123
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 20 15:02:48 2021 +0200
-
-    CI: Try different locale for Centos 7
-
-commit 0c4dca7ffd2957cca3635d607cb4acc8dfd4af90
-Author: Matous Holinka 
-Date:   Wed May 19 19:10:09 2021 +0200
-
-    CI: Package build for more platforms
-    
-    .gitlab-ci.yml:
-    + pkg targets for some distros added
-    + artifacts added
-    - some distros were commented out (due to errors).
-    
-    misc/docker/*:
-    + Dockerfiles updated with the necessary packages.
-
-commit 98ef34c0c77d49d766def88f263dab0e91817288
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 19:52:19 2021 +0200
-
-    CI: Try utf-8 locale to workaround apkg issue
-
-commit 445d0e699f2b98e5a892c812af9f021671920c1b
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 11:24:46 2021 +0200
-
-    CI: Build documentation where tools are available
-
-commit 656c744080d308f75cc9707b139e2a3ec31ad5b7
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 03:37:54 2021 +0200
-
-    CI: Update docker images for building of documentation
-
-commit 5ea3c5bfee6ed24139bc8e82cc35f08c49d6aaff
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 03:07:25 2021 +0200
-
-    Pkg: Enable docs subpackage for Debian
-
-commit 81666d2f126b94e99042ed963e45de5a95f63df5
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 23 00:20:36 2021 +0200
-
-    CI: Test of apkg build
-    
-    Also temporarily disable cf-ospf-auth, as there is some problem with it.
-
-commit 312aeda393f9775f603a78c7feb0a11f3c789c02
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 22 19:23:18 2021 +0200
-
-    Tools: Improve make-dev-archive
-    
-    Use git-archive to avoid unrelated and temporary files and fix some
-    minor issues (e.g. dependency on bash as system shell).
-
-commit 280d133a9b50dab88d51871927f26cd967211f85
-Author: Jakub Ružička 
-Date:   Tue Apr 13 20:29:11 2021 +0200
-
-    ubuntu: use any init-system-helpers
-    
-    init-system-helpers (>= 1.56~) can't be satisfied on:
-    
-    * Ubuntu 18.04 (1.51)
-    * Ubuntu 16.04 (1.29)
-    * Debian 9 (1.48)
-    
-    Remove the specific version requirement in order to enable build on
-    older platforms.
-
-commit 53cabf94f8de41f740ed08456877f6b8b5889170
-Author: Jakub Ružička 
-Date:   Fri Apr 9 18:36:25 2021 +0200
-
-    suse: fix bird.spec to work on SUSE
-    
-    SUSE is more strict about .spec.
-    
-    * use SPDX license id
-    * add missing %ghost file directive
-
-commit 60167856af243f5683840d7365493ed0b3fa6cd0
-Author: Jakub Ružička 
-Date:   Fri Apr 9 16:35:10 2021 +0200
-
-    docs: disable docs subpackage to fix FTBFS
-    
-    Adressing following FTBFS on all older debian/ubuntu distros:
-    
-        Can't locate LinuxDocTools/Data/Latin1ToSgml.pm in @INC (you may need to install the LinuxDocTools::Data::Latin1ToSgml module)
-
-commit 329d6e3fbc5a09a9bc8800bd8a5d239dec1a3d24
-Author: Jakub Ružička 
-Date:   Tue Apr 6 18:13:16 2021 +0200
-
-    add apkg-powered upstream packaging for deb, rpm
-    
-    Files in a single new distro/ dir allow apkg to build BIRD packages for
-    various distros directly from upstream sources as well as from upstream
-    archives.
-    
-    Please see distro/README.md for more detail as well as apkg docs:
-    
-    https://apkg.rtfd.io
-    
-    I've used these files to build bird-2.0.8 on all currently supported
-    releases of following distros:
-    
-    * Debian
-    * Ubuntu
-    * Fedora
-    * CentOS
-    * openSUSE
-    
-    Please note that latest apkg with accumulated fixes for bird is needed:
-    https://gitlab.nic.cz/packaging/apkg/-/merge_requests/35
-
-commit c3c691e95cd40d8654b720be8d9a8ae9fb050951
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 18 20:41:01 2021 +0200
-
-    Flowspec: Documentation update
-
-commit abc9ccc5cb7a3adcbb2090ba7314031b835b0e04
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 18 20:18:06 2021 +0200
-
-    Flowspec: Label field should use numeric operator and not bitmask operator
-
-commit dd8481cc1c92af32ec69cded42b985b7bad40b26
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 18 19:54:18 2021 +0200
-
-    Flowspec: Do not use comma for bitmask operators
-    
-    For numeric operators, comma is used for disjunction in expressions like
-    "10, 20, 30..40". But for bitmask operators, comma is used for
-    conjunction in a way that does not really make much sense. Use always
-    explicit logical operators (&& and ||) to connect bitmask operators.
-    
-    Thanks to Matt Corallo for the bugreport.
-
-commit e5468d16855600aeb8172e29936789c46ea58da0
-Author: Trisha Biswas 
-Date:   Mon May 17 17:50:04 2021 +0200
-
-    Filter: Add MPLS label route attribute
-    
-    Add support to set or read outgoing MPLS labels using filters. Currently
-    this supports the addition of one label per route for the first next hop.
-    
-    Minor changes by committer.
-
-commit d114959e3aeef872441dccea34552047380af742
-Author: Ondrej Zajicek (work) 
-Date:   Fri May 14 18:44:52 2021 +0200
-
-    Flowspec: Fix values for true/false operators
-    
-    RFC 8955 is pretty clear that 000 is false and 111 is true.
-
-commit 69a33c92ffce12d173794508cc9d8acfa87d1dc3
-Author: Ondrej Zajicek (work) 
-Date:   Fri May 14 18:33:15 2021 +0200
-
-    Flowspec: Add code for conversion of flowspec parts to interval lists
-    
-    Implement function flow_explicate_part() to convert flowspec numeric
-    expressions to a simple list of (disjoint, sorted) intervals. That could
-    be used in filters to build f_tree-based int-sets from them.
-
-commit c1511b92cc9c215224314be38c28ed80843f55e4
-Author: Ondrej Zajicek (work) 
-Date:   Mon May 10 20:09:31 2021 +0200
-
-    Babel: Log the reason when refusing to run on an interface
-    
-    The babel protocol code checks whether iface supports multicast, and
-    whether it has a link-local address assigned. However, it doesn not give
-    any feedback if any of those checks fail, it just silently ignores the
-    interface. Fix this by explicitly logging when multicast check fails.
-    
-    Based on patch from Toke Høiland-Jørgensen, thanks!
-
-commit b17adf073594974b05a60ddaaa6e36da4eac4831
-Author: Toke Høiland-Jørgensen 
-Date:   Mon May 10 19:49:43 2021 +0200
-
-    BSD: Propagate OS-level IFF_MULTICAST to internal IF_MULTICAST flag
-    
-    The BSD code did not propagate the OS-level IFF_MULTICAST flag to the
-    Bird-internal IF_MULTICAST flag, which causes problems with Wireguard
-    interfaces on FreeBSD. The Linux sysdep code does propagate the flag
-    already, so just copy over the same check and flag update.
-
-commit 2a0af925b83f699d126cf0e733a49c75ffd86033
-Author: Ondrej Zajicek (work) 
-Date:   Mon May 10 13:39:55 2021 +0200
-
-    OSPF: Allow ifaces with host address as unnumbered PtP or PtMP ifaces
-    
-    Ifaces with host address (/32) were forced to be stubby, but now they
-    can be used as PtP or PtMP. For these ifaces we need to:
-    
-     - Do not force stub mode
-     - Accept packets from any IP as local
-     - Accept any configured neighbor as local
-     - Detect ifaces properly as unnumbered
-     - Use ONLINK flag for nexthops
-
-commit bc591061f618cdc35cf21c7973a660f8d7018b43
-Author: Ondrej Zajicek (work) 
-Date:   Sun May 9 15:16:13 2021 +0200
-
-    OSPF: Packets on PtP networks should be always sent to AllSPFRouters
-    
-    As specified in RFC 2328 8.1: "On physical point-to-point networks,
-    the IP destination is always set to the address AllSPFRouters."
-    
-    Note that this likely break setups with multiple neighbors on a network
-    configured as PtP, which worked before. These should be configured as
-    PtMP.
-    
-    Thanks to Senthil Kumar Nagappan for the original patch and to Joakim
-    Tjernlund for suggestions.
-
-commit 1647923bd8d2f8e53337365abc5be7e343aa570c
-Author: Ondrej Zajicek (work) 
-Date:   Sun May 9 14:51:39 2021 +0200
-
-    OSPF: Minor refactoring of packet sending code
-    
-    Common behavior for LSupd and delayed LSack moved to ospf_send_to_iface()
-    and other minor changes.
-
-commit 255722e0fcf251c101ff5bec92f1867edf841daa
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 02:34:46 2021 +0200
-
-    CI: Fix debian-10-i386 docker file
-
-commit 58510024bead8df9cba6e316f8275423a38fd51b
-Author: Ondrej Zajicek (work) 
-Date:   Sun Apr 25 01:07:14 2021 +0200
-
-    Doc: Include full LinuxDocTools code
-    
-    BIRD uses hacked LinuxDocTools for building documentation, keeping some
-    parts locally and using remaining parts from system-installed one. This
-    setup breaks when LinuxDocTools makes some internal changes and is hard
-    to keep consistent.
-    
-    Just include full LinuxDocTools code (both hacked and unmodified parts)
-    to avoid consistency issues. Note that we still need some binaries from
-    LinuxDocTools, so it still needs to be installed to build documentation.
-
-commit b646c0098120bbb10ec91fa2fbf1df416c5849bd
-Author: Matous 
-Date:   Wed Apr 21 13:22:23 2021 +0200
-
-    CI/CD: some latest releases added.
-    
-    /misc/docker/:
-    + debian 11 (i386+amd64) added,
-    + fedora 32 added,
-    + fedora 33 added,
-    + fedora 34 added,
-    + opensuse 15.2 added,
-    + opensuse 15.3 added,
-    + ubuntu 20.04 added,
-    + ubuntu 20.10 added,
-    + ubuntu 21.04 added,
-    - ubuntu 19.10 removed.
-    
-    /.gitlab-ci.yml:
-    + stages 'image' and 'build' updated.
-
-commit 3d90241f62393e6d614c1d20fde4013c9ff24685
-Author: Maria Matejka 
-Date:   Mon Apr 19 15:13:20 2021 +0200
-
-    Internal route tables have a reduced cleanup routine
-    
-    This fixes an internal table cleanup bug introduced
-    in ff397df7edcbe7a8abca5b419729b9c64c063847.
-
-commit a7c9515ebc88c42f26ce97255c98b2e61ad52934
-Author: Stefan Haller 
-Date:   Mon Apr 19 15:06:42 2021 +0200
-
-    BSD: Fix invalid pointer derefence in logging code
-    
-    For logging purposes a stack allocated net_addr struct was passed by
-    value as vararg (instead of the expected pointer). This resulted in
-    a segfault when the specific error condition got logged.
-
-commit 9c41e1ca3e93d4498eaa085139caf1545e08c1d8
-Author: Ondrej Zajicek (work) 
-Date:   Mon Apr 12 17:01:31 2021 +0200
-
-    Lib: Fix handling of buffers in timestamp formatting
-    
-    The code in tm_format_real_time() mixed up two buffers and their
-    sizes, which may cause crash in MRT dumping code.
-    
-    Thanks to Piotr Wydrych for the bugreport.
-
-commit a2277975d787fb388e753432673acefd69454b1a
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 7 16:14:20 2021 +0200
-
-    Unix: Expand accepted ranges of iproute2 constants
-    
-    We support 32bit table and realm/flow ids, we should also accept them as
-    constants.
-    
-    Thanks to Patrick Hemmer for the bugreport.
-
-commit 5caf32efa209bc3e9d741fe2acfc992d2cfad3e7
-Author: Ondrej Zajicek (work) 
-Date:   Sat Apr 3 20:09:32 2021 +0200
-
-    Doc: Fix flowspec example
-    
-    Thanks to Matt Corallo for the bugreport.
-
-commit 7c8b7649f95c72c207bcf95064d08e831d5738ce
-Author: Maria Matejka 
-Date:   Tue Mar 30 21:44:35 2021 +0200
-
-    Allocation of ea_list in one contiguous memory block
-    
-    This saves some bytes of memory for complex ea's.
-
-commit ff397df7edcbe7a8abca5b419729b9c64c063847
-Author: Maria Matejka 
-Date:   Tue Mar 30 18:51:31 2021 +0200
-
-    Routing table is now a resource allocated from its own pool
-    
-    This also fixes memory leaks from import/export tables being never
-    cleaned up and freed.
-
-commit a9938b179203a4d5c54eae6c814bfa8766f4fde0
-Author: Maria Matejka 
-Date:   Tue Mar 30 16:03:33 2021 +0200
-
-    Resources: added mb_move() to complement rmove() for memory blocks
-
-commit 4635314cefd55aaa2a0146b6722df55e7efba4b8
-Author: Maria Matejka 
-Date:   Tue Mar 30 15:09:53 2021 +0200
-
-    Routing tables list iteration should use explicit node struct position
-
-commit 7a74ad5a61c82ab0062a62dbc9ea6ab91d480485
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 30 16:59:11 2021 +0200
-
-    BGP: Do not keep BAF_EXT_LEN flag internally
-    
-    The flag makes sense just in external representation. It is reset during
-    BGP export, but keeping it internally broke MRT dumps for short attributes
-    that used it anyways.
-    
-    Thanks to Simon Marsh for the bugreport and the patch.
-
-commit a06469d9fc1d3ec4b17b3109627aff7d9877ba0e
-Author: Maria Matejka 
-Date:   Thu Mar 25 20:51:23 2021 +0100
-
-    Dropping automatic tests for Debian 7 Wheezy.
-    
-    Debian 7 Wheezy has been superseded by Debian 8 Jessie on Apr 25, 2015,
-    with LTS support ending on May 31, 2018.
-    
-    Debian 7 Wheezy's default GCC doesn't fully support C11. It should
-    anyway still be possible to build BIRD for Debian 7 if you backport
-    a C11-capable compiler there.
-
-commit 886dd92eeefa070d8db6aaf0245a67f7a9e9b983
-Author: Maria Matejka 
-Date:   Wed Jul 22 00:09:15 2020 +0200
-
-    Slab: head now uses bitmask for used/free nodes info instead of lists
-    
-    From now, there are no auxiliary pointers stored in the free slab nodes.
-    This led to strange debugging problems if use-after-free happened in
-    slab-allocated structures, especially if the structure's first member is
-    a next pointer.
-    
-    This also reduces the memory needed by 1 pointer per allocated object.
-    OTOH, we now rely on pages being aligned to their size's multiple, which
-    is quite common anyway.
-
-commit 82f19ba95e421f00a8e99a866a2b8d9bbdba6cdc
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 18 20:18:38 2021 +0100
-
-    NEWS and version update
-
-commit f1ffe6a23144a4b13f020194f23055ac8c20dea6
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 18 15:54:44 2021 +0100
-
-    Add new BGP tests
-
-commit 5a6e8380f89deb4fff21805a7879658d2352471a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 18 15:44:04 2021 +0100
-
-    BGP: Do not show statistics
-    
-    BGP statistics code was preliminary and i wanted to replace it by
-    separate 'show X stats' command. The patch hides the preliminary
-    output in 'show protocols all' so it is not part of the released
-    version.
-
-commit 454ae3044598466ca7c50c12c6882d84ea545afa
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 17 17:24:00 2021 +0100
-
-    RPKI: Improve error handling of DNS resolver
-
-commit 0a3db4c68040473ab45b974a7f9256c277c5d31c
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 17 15:56:12 2021 +0100
-
-    Minor fixes for restricted builds
-
-commit 2f981534902302cbd13cdb12d4f0c6e9a255687a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 16 20:10:00 2021 +0100
-
-    Pipe: Propagate debug flags from protocol to channels
-    
-    Pipe channels are kind-of implicit, so setting protocol debug flags
-    should also set pipe debug flags.
-
-commit ae9ae864d3fec20a74ce2567536e186ce178d032
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 16 16:34:42 2021 +0100
-
-    OSPFv3: Update neighbor authentication state from Hello packets
-    
-    In OSPFv3, only Hello and DBDes packets contain flags specifying whether
-    RFC 7166 authentication trailer is used. Other packets are processed
-    based on stored authentication state in neighbor structure. Update this
-    state with each received Hello to handle authentication change from
-    reconfigurations.
-    
-    Thanks to Joakim Tjernlund and Kenth Eriksson for the bugreport.
-
-commit 94abefc00bb22b93493831798391d5d5b21f9d4c
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 15 18:35:23 2021 +0100
-
-    Filter: Update 'gw' to handle IPv6 link-local addresses
-    
-    When a link-local address is set, use the existing iface for scope.
-    
-    Thanks to Marcel Krüger for the bugreport.
-
-commit 0d1a11cca3136828808b8e73f4d5e547cc787fb8
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 15 17:51:33 2021 +0100
-
-    Doc: Document automatic RPKI reload
-
-commit 6489a2450e0ab4aa63c25ac2f9be354fdbd711d2
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 15 16:16:32 2021 +0100
-
-    Doc: Document channel debug options
-
-commit 7be3af7fa662958782d2e23989d79cc2c652b6bf
-Author: Ondrej Zajicek (work) 
-Date:   Fri Mar 12 15:35:56 2021 +0100
-
-    Rate-limit scheduling of work-events
-    
-    In general, events are code handling some some condition, which is
-    scheduled when such condition happened and executed independently from
-    I/O loop. Work-events are a subgroup of events that are scheduled
-    repeatedly until some (often significant) work is done (e.g. feeding
-    routes to protocol). All scheduled events are executed during each
-    I/O loop iteration.
-    
-    Separate work-events from regular events to a separate queue and
-    rate limit their execution to a fixed number per I/O loop iteration.
-    That should prevent excess latency when many work-events are
-    scheduled at one time (e.g. simultaneous reload of many BGP sessions).
-
-commit 9cf3d533110313d55b60d47c134f1b7050d6be78
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 10 15:07:19 2021 +0100
-
-    Static: Implement reload hook
-
-commit 211fe69c984c657095930d2831f46896197ec65b
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 8 20:45:22 2021 +0100
-
-    Nest: No automatic ROA reload on non-reloadable channels
-
-commit d3782c72b9243f4609e61edf5f29e6adeaa41e9c
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 12 05:05:18 2021 +0100
-
-    Nest: Add option to control automatic RPKI reload
-    
-    Also, no automatic reload for BGP channels without import/export table.
-
-commit 77ce849ecf0f89455eeabefbe520c6b4888837b0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 10 17:29:14 2021 +0100
-
-    Tests: Add missing mockup function to tests
-
-commit 714238716ef36f1dfc5721055e2ec4affd42ebfa
-Author: Vincent Bernat 
-Date:   Wed Feb 10 16:53:57 2021 +0100
-
-    BGP: Add support for BGP hostname capability
-    
-    This is an implementation of draft-walton-bgp-hostname-capability-02.
-    It is implemented since quite some time for FRR and in datacenter, this
-    gives a nice output to avoid using IP addresses.
-    
-    It is disabled by default. The hostname is retrieved from uname(2) and
-    can be overriden with "hostname" option. The domain name is never set
-    nor displayed.
-    
-    Minor changes by committer.
-
-commit 00b85905b9f5081eb2fce0ed79542085278e9f42
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 10 03:09:57 2021 +0100
-
-    Nest: Automatic channel reloads based on RPKI changes
-    
-    If there are roa_check() calls in channel filters, then the channel
-    subscribes to ROA table notifications, which are sent when ROA tables
-    are updated (subject to settle time) and trigger channel reload or
-    refeed.
-
-commit d06a875b042b608e61b2d5a2bb594641d3e1322f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 7 19:21:42 2021 +0100
-
-    Filter: Recursive filter iteration code
-    
-    Add macros for recursive filter iteration that allows to examine
-    all instructions reachable from a filter.
-
-commit 5d414309ec5a01024d4de4c4f9521f8daa5c06ff
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 22 04:34:15 2021 +0100
-
-    MRT: Fix MP-BGP next hops
-    
-    Flag signalling that MP-BGP mode should be used got reset after first
-    batch of routes, so remaining routes were processed without that, leading
-    to missing MP_REACH_NLRI attribute.
-    
-    Thanks to Piotr Wydrych for the bugreport.
-
-commit df83f626973fda1e67769d295c47d4d246e4c1c4
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 14 01:51:09 2021 +0100
-
-    Netlink: Ignore dead routes
-    
-    With net.ipv4.conf.XXX.ignore_routes_with_linkdown sysctl, a user can
-    ensure the kernel does not use a route whose target interface is down.
-    Such route is marked with a 'dead' / RTNH_F_DEAD flag.
-    
-    Ignore these routes or multipath nexthops during scan.
-    
-    Thanks to Vincent Bernat for the original patch.
-
-commit a40ddf5c616465a93287e4ac41a98d04b4fb2b37
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 12 15:43:54 2021 +0100
-
-    Build: Fix tags generation
-
-commit d774f6d721b0e52ed800c4b9a3a482c8ce9dd074
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 12 15:37:01 2021 +0100
-
-    MRT: Fix IPv6 table dumps
-    
-    Add fake MP_REACH_NLRI attribute with BGP next hop when encoding MRT
-    table dumps for IPv6 routes. That is necessary to encode next hop as
-    NEXT_HOP attribute is not used for MP-BGP.
-    
-    Thanks to Santiago Aggio for the bugreport.
-
-commit 910adaa08bbd416288797505399ab47f990817e6
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jan 10 15:29:02 2021 +0100
-
-    BFD: Dispatch sessions also by interface index
-    
-    Direct BFD sessions needs to be dispatched not only by IP addresses, but
-    also by interfaces, in order to avoid collisions between neighbors with
-    the same IPv6 link-local addresses.
-    
-    Extend BFD session hash_ip key by interface index to handle that. Use 0
-    for multihop sessions.
-    
-    Thanks to Sebastian Hahn for the original patch.
-
-commit 17663b6a7c505226cfe9ccc0671611075a3dff57
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 7 05:56:34 2021 +0100
-
-    RPKI: Remove port (and SSH username) from 'Cache server' output line
-    
-    It was mixed-up if hostname is IPv6 address, and reporting separate
-    values (like port) on separate lines fits better into key-value style
-    of 'show protocols all' output. Also, the patch simplifies transport
-    identification formatting (although it is unused now).
-    
-    Thanks to Alarig Le Lay for the suggestion.
-
-commit 2a8cc7259e236773f1b8423ef63305a5b8bfd652
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 7 01:56:00 2021 +0100
-
-    Kernel: Do not check templates
-    
-    So one can define kernel protocol template without channels.
-    For other protocols, it is either irrelevant or already done.
-    
-    Thanks to Clemens Schrimpe for the bugreport.
-
-commit a141959f0729b2381a90aaa9b7ed0e41a5f9513e
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 7 01:20:56 2021 +0100
-
-    Doc: Describe per-nexthop static route options
-    
-    Also remove description of (no longer supported) per-route 'bfd' option,
-    and add examples of IPv6 routes with link-local nexthops.
-
-commit 7a1f4baac11cbfad82a2d09a130b3ae7bb48e9bd
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 6 14:51:49 2021 +0100
-
-    Nest: remove last_tx_filter_change
-    
-    No longer needed after redesign of export handling.
-
-commit 4155104c90bc2f3fb680e8041e079ceb3d80a3b1
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 6 14:44:23 2021 +0100
-
-    BGP: Deprecate 'missing lladdr' option
-    
-    The option is not implemented since transition to 2.0 and no plan to add it.
-    Also remove some deprecated RTS_* valus from documentation.
-    
-    Thanks to Sébastien Parisot for notification.
-
-commit 21f9acd2a01306af01f19914105985a8a0f9bcba
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 6 05:25:59 2021 +0100
-
-    Kernel: Fix handling of krt_realm with ECMP routes
-    
-    For ECMP routes, RTA_FLOW attribute must be set per-nexthop, not
-    per-route. Our corresponding krt_realm attribute is per-route.
-    
-    Thanks to Mikhail Petrov for the bugreport.
-
-commit 455c13dc9971ae4aa701135b5c1709d61477bdec
-Author: James Lu 
-Date:   Tue Dec 29 02:23:54 2020 +0100
-
-    Nest: Read Babel metric as IGP metric
-    
-    (Minor syntactic changes by committer)
-
-commit ea3c6c1a15ce9b93f583f96919c70f7a2fd34e98
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 28 21:19:27 2020 +0100
-
-    Static: Fix handling of 'net' attribute in per-route filters
-    
-    We need to define 'net' field temporarily as it may be accessed by
-    per-route filters.
-    
-    Thanks to Damian Zaremba for the bugreport.
-
-commit 9e2635505a08e3453eef487360e49b4b70987ceb
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 28 15:23:28 2020 +0100
-
-    Filter: Fix return on top-level
-    
-    Broken detection of top-level case caused crash when return was called
-    from top-of-stack position. It should behave as reject/accept.
-    
-    Thanks to Damian Zaremba for the bugreport.
-
-commit 61dae32b29cc57b9884a1c13e5d630096e157a38
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 7 22:19:40 2020 +0100
-
-    Nest: Per-channel debug flags
-    
-    The patch add support for per-channel debug flags, currently just
-    'states', 'routes', and 'filters'. Flag 'states' is used for channel
-    state changes, remaining two for routes passed through the channel.
-    The per-protocol debug flags 'routes'/'filters' still enable reporting
-    of routes for all channels, to keep existing behavior.
-    
-    The patch causes minor changes in some log messages.
-
-commit 8cc5bb09e344038a1f8dff96946e05ec80607c93
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 2 05:02:26 2020 +0100
-
-    Filter: Add 'weight' route attribute
-    
-    Add 'weight' route attribute that allows to get and set ECMP weight of
-    nexthops. Similar to 'gw' attribute, it is limited to the first nexthop,
-    but it is useful for handling BGP multipath, where an ECMP route is
-    merged from multiple regular routes.
-
-commit 246586771296d1c42a012c06bdc75b36a7ce0b4f
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 25 15:44:00 2020 +0100
-
-    BGP: Zero the newly allocated bucket structure
-    
-    This fixes an issue with dirty node passed to add_tail().
-    
-    Thanks to Andreas Rammhold for the initial patch.
-
-commit 62d57b9bdf82cc978f889f0118c8aa19ae999a3d
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 25 15:15:13 2020 +0100
-
-    Log: Fix locking during log reconfiguration
-    
-    The log subsystem should be locked earlier, as default_log_list() may
-    internally manipulate with the current_log_list (if it is also a default
-    log list).
-
-commit 0ef082c51e5d905e9137e1484036b9d9b32e9a75
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 25 15:04:34 2020 +0100
-
-    Log: Reinitialize the static logging structures
-    
-    The static logging structures are reused, we need to reinitialize them
-    otherwise add_tail() would fail in debug build. Reinitializing these
-    structures should be fine as the list they belong to is being
-    reinitialized on entry to the very same function.
-    
-    Thanks to Andreas Rammhold and Mikael Magnusson for patches.
-
-commit 30b846826905b4da76f59a212a31928bd55e9783
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 04:09:11 2020 +0100
-
-    Minor cleanups with cfg_allocz()
-    
-    Also fixes some more failed asserts due to add_tail().
-
-commit 1678bc07467e6d977fc2f6bf830274ca92e0a6e5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 03:42:23 2020 +0100
-
-    Fix some failed asserts due to add_tail()
-    
-    When config structures are copied due to template application,
-    we need to reset list node structure before calling add_tail().
-    
-    Thanks to Mikael Magnusson for patches.
-
-commit c9ae81656f97bcc55910e80b6f00d3ee9383d848
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 03:21:44 2020 +0100
-
-    Some minor sl_allocz() cleanups
-
-commit db2d29073acfd4086fca18ba43a5ed6baccaa8ad
-Author: Toke Høiland-Jørgensen 
-Date:   Tue Nov 24 02:32:13 2020 +0100
-
-    lib/slab: introduce sl_allocz() function and use it in Babel
-    
-    The babel protocol code was initialising objects returned from the slab
-    allocator by assigning to each of the struct members individually, but
-    wasn't touching the NODE member while doing so. This leads to warnings on
-    debug builds since commit:
-    
-    baac7009063d ("List expensive check.")
-    
-    To fix this, introduce an sl_allocz() variant of the slab allocator which
-    will zero out the memory before returning it, and switch all the babel call
-    sites to use this version. The overhead for doing this should be negligible
-    for small objects, and in the case of babel, the largest object being
-    allocated was being zeroed anyway, so we can drop the memset in
-    babel_read_tlv().
-
-commit 3347aaafec5b269637604d1ea5f5969797beadea
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 19 16:38:39 2020 +0100
-
-    Static: Support for multiple routes with the same network
-    
-    Add support for proper handling of multiple routes with the same network
-    to the static protocol. Routes are distinguished by internal index, which
-    is assigned automatically (sequentially for routes within each network).
-    Having different route preference or igp_metric attribute is optional.
-
-commit df65d519d6a5a7511cc893d2be55399b38b838be
-Author: Nigel Kukard 
-Date:   Wed Nov 18 18:00:12 2020 +0100
-
-    Doc: Added example of static routes with BGP large communities
-
-commit 00ddd18b02a4a4db973adecf6ef63a350c909cbd
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 18 17:37:29 2020 +0100
-
-    OSPFv3: Fix intra-area-prefix-LSA origination on DR
-    
-    When a new link-LSA is originated, we need to notify intra-area-prefix-LSA
-    handling, like when a new link-LSA is received. Otherwise a new network
-    prefix added to a DR is not propagated immediately.
-    
-    Thanks to Bala Sajja for the bugreport.
-
-commit 6ea8a46ccb540701dfe747566e6a5b7bc318db01
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 15 16:28:13 2020 +0100
-
-    Doc: Fix typo
-    
-    Thanks to Hexhu for the bugreport.
-
-commit b962967e20f186f797c163f69c673b0ee4ef3b2b
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 15 16:01:19 2020 +0100
-
-    Nest: Fix crash in receive limit handling in import table
-    
-    Logging as a result of triggered receive limit in import table code
-    accesset rte->net, which was not filed yet.
-    
-    Thanks to Pier Carlo Chiodi for the bugreport.
-
-commit 4a42e7e92520e7d07e585d542ef54e1de302fb1d
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 12 04:50:45 2020 +0100
-
-    BFD: Update documentation about per-session options
-
-commit 3b56bf8849283977f2f4fa7b8f3dc62fdd8d7587
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 12 04:02:38 2020 +0100
-
-    BFD: Better handling of BFD options in BGP configs
-    
-    Merge multiple BFD option blocks in BGP configs instead of using the last
-    one. That is necessary for proper handling of templates when BFD options
-    are used both in a BGP template and in a BGP protocol derived from that
-    template.
-
-commit 99ad208dd73d357156672a53f48b77dcf6515c30
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 12 02:37:42 2020 +0100
-
-    BFD: Fix superfluous reconfiguration of sessions
-
-commit 9d3fc3062b236f51b2c72a4c2c7b068f1946261d
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 8 15:33:22 2020 +0100
-
-    BFD: Allow per-request session options
-    
-    BFD session options are configured per interface in BFD protocol. This
-    patch allows to specify them also per-request in protocols requesting
-    sessions (currently limited to BGP).
-
-commit fc1e3211b109400c0e96f889829c9f5145ac7226
-Author: Ondrej Zajicek (work) 
-Date:   Sun Oct 11 00:53:19 2020 +0200
-
-    RPKI: Add 'ignore max length' option
-    
-    Add 'ignore max length' option to RPKI protocol, which ignores received
-    max length in ROA records and instead uses max value (32 or 128). This
-    may be useful for implementing loose RPKI check for blackholes.
-
-commit 6c11dbcf28faa145cfb7310310a2a261fd4dd1f2
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 5 14:52:55 2020 +0200
-
-    Doc: Fix missing semicolons
-    
-    Thanks to Marco Gartmann for the bugreport.
-
-commit 14ce8904e7b9f6ceeaf2587faeab200cd67401d9
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 5 14:45:01 2020 +0200
-
-    Doc: Fix typo
-    
-    Thanks to Sergey Kulikov for the bugreport.
-
-commit 600eb695b1a273f8b3fd4f2c524d8eeef25483aa
-Author: Maria Matejka 
-Date:   Mon Aug 31 15:41:39 2020 +0200
-
-    OSPF: Fixed a debug assert
-
-commit dc8d9dec4a3484f358d2117328fe860e8e7b16bb
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 12 19:42:44 2020 +0200
-
-    OSPF: Skip out-of-state packets earlier
-    
-    Sometimes multicast OSPF packet is received when neighbor adjacency is
-    not established. Such packet should be ignored earlier in packet
-    processing as otherwise it causes strange error messages when OSPFv3
-    authentication is enabled.
-
-commit c0e1f534c95f5f395fda62b01ea1c245323e3aed
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 16 15:02:10 2020 +0200
-
-    Nest: Keep route ordering during route updates
-    
-    Put new non-best routes to the end of list instead of the second
-    position. Put updated routes to their old position. Position is changed
-    just by best route selection.
-
-commit c26c6bc2d78a2fe76f27dcc9fbb5afc95c3a7626
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 14 03:48:17 2020 +0200
-
-    Show info from multiple protocols when protocol is not specified
-    
-    Most commands like 'show ospf neighbors' fail when protocol is not
-    specified and there are multiple instances of given protocol type.
-    This is annoying in BIRD 2, as many protocols have IPv4 and IPv6
-    instances. The patch changes that by showing output from all protocol
-    instances of appropriate type.
-    
-    Note that the patch also removes terminating cli_msg() call from these
-    commands and moves it to the common iterating code.
-
-commit a948cf9a5c338518773e6c98e895c829c469f56b
-Author: Kazuki Yamaguchi 
-Date:   Sun Jun 28 15:37:01 2020 +0200
-
-    Filter: Improve handling of sets in BGP path masks
-    
-    Compare the content of PM_ASN_SET in path masks. A reconfiguration
-    was not properly triggering a reload of affected protocols when the
-    members of a set in a path mask change.
-    
-    Also, update the printing code to so that it can display sets in a path
-    mask.
-
-commit 4ef0a966392672d04a567c25758462fe3bbb0fb4
-Author: Kazuki Yamaguchi 
-Date:   Sun Jun 28 15:33:26 2020 +0200
-
-    Filter: Fix comparison of BGP path mask
-    
-    Add a missing return statement. Path masks with the same length were all
-    considered the same. Comparing two with different length would cause
-    out-of-bounds memory access.
-
-commit 82937b465b3a50bdcb00eff0b7aa6acb3fc21772
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 10 13:27:14 2020 +0200
-
-    OSPF: Fix bad header length test
-    
-    Thanks to Slava Aseev for the thorough bugreport.
-
-commit 71e08edd942557ec333902bb45c57794f7a66bf8
-Author: Kenth Eriksson 
-Date:   Wed Jun 3 23:05:29 2020 +0200
-
-    Doc: Add 'ptp address' to OSPF doc overview
-
-commit 63451c19611b5972769ed519bd7eb6c1b995a8a0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 3 16:15:29 2020 +0200
-
-    Test: Fix unit test mockups
-
-commit f1b5f179dbd8aaef5eca4936b557e753e377d818
-Author: Kazuki Yamaguchi 
-Date:   Wed Jun 3 15:18:02 2020 +0200
-
-    Netlink: Fix parsing of MPLS multipath routes
-    
-    Add support for RTA_MULTIPATH attribute parsing for AF_MPLS routes.
-    
-    BIRD is capable of installing a multipath route into kernel on Linux,
-    but it would not be seen because parsing fails. This made BIRD attempt
-    to install the same route repeatedly.
-    
-    (The patch minorly updated by committer)
-
-commit 19f8f173202d6f5cbf97ca2a9f66fcea6b9bb44f
-Author: Kazuki Yamaguchi 
-Date:   Wed Jun 3 15:05:35 2020 +0200
-
-    RPKI: Fix unnecessary reconnection on reconfiguration
-    
-    Compare the new timing parameters with the old configuration, not with
-    the temporary state of the current connection.
-    
-    The timing values in struct rpki_cache is updated by a version 1 End Of
-    Data PDU, unless this behavior is suppressed by the configuration
-    explicitly by the "keep" keyword. Consequently, every reconfiguration
-    of BIRD triggers a reconnection even if it is not necessary.
-
-commit fae5448134dfec004be818d18ff1583cc61e5549
-Author: Ondrej Zajicek (work) 
-Date:   Sun May 31 13:21:55 2020 +0200
-
-    Log: Do not open logfiles when parse-and-exit option is active
-    
-    This is a quick workaround for an issue where configured logfiles are
-    opened/created during parsing of a config file even when parse-and-exit
-    option is active. We should later refactor the logging code to avoid
-    opening log during parsing altogether.
-
-commit eee8af4db2d36a5017eac4447075cac3346e8b23
-Author: Maria Matejka 
-Date:   Tue Jun 2 16:58:06 2020 +0200
-
-    OSPF: setting list node to zero before enlisting
-
-commit 4e8f8afc68cc7ba09ca42d989e47dbfcb17d2772
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 26 23:43:13 2020 +0200
-
-    Babel: Set onlink flag for IPv4 routes with unreachable next hop
-    
-    If the next hop of a route is not a reachable address, the route should be
-    installed as onlink. This enables a configuration common in mesh networks
-    where the mesh interface is assigned a /32 and babel handles the routing by
-    installing onlink routes.
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit c1632ad0f39f7221d649a9e469cacc38105528e2
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 26 18:21:43 2020 +0200
-
-    OSPF: Fix handling of unnumbered PtPs
-    
-    This issue has a long history. In 2012, we changed data field for
-    unnumbered PtP links from iface id (specified by RFC) to IP address based
-    on reports of bugs in Quagga that required it, and we used out-of-band
-    information to distinquish unnumberred PtPs with the same local IP
-    address.
-    
-    Then with OSPF graceful restart implementation, we found that we can no
-    longer use out-of-band information, and we need to use only LSAdb info
-    for routing table calculation, but i forgot to finish handling of this
-    case, so multiple unnumbered PtPs with the same local IP addresses were
-    broken.
-    
-    Considering that even recent Mikrotik RouterOS has broken next hop
-    calculation that depends on IP address in PtP link data field, we
-    cannot just switch back to the iface id for unnumbered PtP links.
-    
-    The patch makes two changes: First, it goes back to use out-of-band
-    (position) info for distinguishing local interfaces in SPF when graceful
-    restart is not enabled, while still uses LSAdb-only approach for SPF
-    calculation when graceful restart is enabled.
-    
-    Second, it adds OSPF interface option 'ptp address', which controls
-    whether IP address or iface id is used in data field. It is enabled
-    by default except for unnumbered PtP links with enabled graceful
-    restart.
-    
-    Thanks to Kenth Eriksson for the bugreport and Joakim Tjernlund for
-    suggestions.
-
-commit 1ca7665fa4a9858a6d4c591ccff5b61e5e6aed13
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 19 02:50:47 2020 +0200
-
-    Nest: Allow key id 0
-    
-    There is nothing in RFCs specifying that id 0 is not allowed. Some
-    implementations does not support it, while some other use key id 0 by
-    default. We allow it but start with key id 1 by default.
-    
-    Thanks to Kenth Eriksson for the bugreport.
-
-commit b729e731f99aa6ece085597091618ed559a9f656
-Author: Ondrej Zajicek (work) 
-Date:   Mon May 18 22:16:37 2020 +0200
-
-    RIP: Triggered RIP (demand circuit) documentation
-
-commit ec430a7feefd3b32ee39c641a48c44528d0eab25
-Author: Ondrej Zajicek (work) 
-Date:   Mon May 18 16:25:08 2020 +0200
-
-    Nest: Implement BGP path mask loop operator
-    
-    Implement regex-like '+' operator in BGP path masks to match previous
-    path mask item multiple times. This is useful as ASNs may appear
-    multiple times in paths due to path prepending for traffic engineering
-    purposes.
-
-commit 5fc8407177fd34f2d57441a8ff9a068f4162fbfb
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 12 03:46:47 2020 +0200
-
-    RIP: Fix handling of passive mode for demand circuit interfaces
-
-commit b8bbbbaf569799ab8faff0ee185528b6a2129154
-Author: Ondrej Zajicek (work) 
-Date:   Mon May 11 04:29:36 2020 +0200
-
-    Nest: Fix neighbor handling for colliding ranges
-    
-    Resolve neighbors using longest prefix match. Although interface ranges
-    should not generally collide, it may happen for unnumbered links.
-    
-    Thanks to Kenth Eriksson for the bugreport.
-
-commit f7c34aa227693194e53ca0435dba52c2a839bae8
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 5 02:20:30 2020 +0200
-
-    Tests: Activate BGP-int test
-
-commit e6785c469b418785568c33241157d17107afd55c
-Author: Matous Holinka 
-Date:   Wed Apr 29 16:15:17 2020 +0200
-
-    Tests: Change unsupported Ubuntu 19.04 for supported version 19.10
-
-commit 82bfee76f0adfd50d51833343c63ba9e2afcb60e
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 29 15:07:33 2020 +0200
-
-    Filter: Remove quitbird command
-    
-    No need for this debug filter command and it can be abused from CLI.
-
-commit b12442c985f2bd8c9fd47ca63151724962fabdc2
-Author: Maria Matejka 
-Date:   Fri May 1 15:41:42 2020 +0200
-
-    Fixed a harmless warning in production build
-
-commit 048eb2ddf1ee9587d9fa30cbb3f87d6f650a2133
-Merge: 17de3a023 59238768b
-Author: Maria Matejka 
-Date:   Fri May 1 15:34:17 2020 +0200
-
-    Merge remote-tracking branch 'origin/mq-static-analysis'
-
-commit 59238768b3b05fa134348d2232b42537d0403994
-Author: Maria Matejka 
-Date:   Mon Aug 19 14:43:14 2019 +0200
-
-    Slab: Init node in slab head to NULLs.
-
-commit ea259d6201973eb0f764cbb2bb6549b6ac79b316
-Author: Maria Matejka 
-Date:   Sat Aug 17 16:09:29 2019 +0200
-
-    Timer: Adding missing initializer.
-
-commit 0c3b8ffe25f43e59dfe8b1aeb219ff1cb4c6aa2b
-Author: Maria Matejka 
-Date:   Sat Aug 17 15:03:09 2019 +0200
-
-    Lexer: strtoul shall never set endptr to NULL; it should be an error
-
-commit cdde3550dc188f493daf82ef9d9acf8b85d9d722
-Author: Maria Matejka 
-Date:   Sat Aug 17 14:57:41 2019 +0200
-
-    Unix socket: Path length check directly before copying the path.
-    
-    This is not needed as the string is always short enough, anyway
-    it may be needed in future and one strlen during BIRD start is
-    cheap enough.
-
-commit 9ac13d7af25d6b26866bf4f4a4fab371925fb1df
-Author: Maria Matejka 
-Date:   Mon Aug 19 14:36:51 2019 +0200
-
-    Lists: Replaced replace_node() by update_node() which is the only use of that function.
-
-commit e26a5195dd6c62e6f4b80d13b6ecd5f40ee68546
-Author: Maria Matejka 
-Date:   Sat Aug 17 14:03:47 2019 +0200
-
-    Lists: fix a stupid sanitizer bug
-
-commit 3bb10b4d31d68a8139e284c27f7eb6fca897721d
-Author: Maria Matejka 
-Date:   Sat Aug 17 14:18:41 2019 +0200
-
-    Uninitialized list nodes fixes
-
-commit 258be56539a3d4b47fe779f9658ca3d88761878d
-Author: Maria Matejka 
-Date:   Sat Aug 17 13:36:36 2019 +0200
-
-    Nest: Added const to ea_show just to declare that this shouldn't really change anything
-
-commit a7d9b8f116d00194e94c7505cbc8ed7f8784eeab
-Author: Maria Matejka 
-Date:   Sat Aug 17 10:28:55 2019 +0200
-
-    OSPF: Zero-initialization of a temporary neighbor
-
-commit 0fa8bf91cd474e393ded85b329fde30ba35f6a26
-Author: Maria Matejka 
-Date:   Sat Aug 17 10:20:46 2019 +0200
-
-    Nest: Several assumptions to tame the static analyzer
-
-commit bbe49ae569534d0cf7ff226d19e729dcc764e606
-Author: Maria Matejka 
-Date:   Sat Aug 17 08:59:06 2019 +0200
-
-    Nest: Assumption in rt-show for not-so-intuitive invariant.
-
-commit a08853a26989d343c507a41257dedcdea3befd73
-Author: Maria Matejka 
-Date:   Sat Aug 17 08:54:08 2019 +0200
-
-    Static scanner and expensive debugging setup fix
-
-commit 5f60d14edeb48824d28e6393e7eb1aa50d5f2cd1
-Author: Maria Matejka 
-Date:   Fri Aug 16 21:22:56 2019 +0200
-
-    RPKI: fixed rare va_list leak
-
-commit b7482209065a03c3186d74e5e4129539ce7a3ce4
-Author: Maria Matejka 
-Date:   Fri Aug 16 21:15:49 2019 +0200
-
-    Static check: Don't report dead code
-
-commit 9e64ac4b7c23aa3b8b9149794c05305315cf31e5
-Author: Maria Matejka 
-Date:   Fri Aug 16 14:04:53 2019 +0200
-
-    OSPF: Adding a note about a static analyzer result.
-
-commit dccee408262262ab9a63403141b74a0d937284bc
-Author: Maria Matejka 
-Date:   Fri Aug 16 12:47:13 2019 +0200
-
-    OSPF: variable-length array of size 0 replaced by alloca()'d pointer
-    
-    NULL pointer is safer than a random pointer onto stack if this function
-    gets changed and eventually broken.
-
-commit baac7009063d94799821422ecc63ea2af41561ea
-Author: Maria Matejka 
-Date:   Wed Aug 14 16:23:58 2019 +0200
-
-    List expensive check.
-
-commit a0d0a71a1828cce725c3132f8c243bf0c537786f
-Author: Maria Matejka 
-Date:   Wed Aug 14 16:22:39 2019 +0200
-
-    Expensive check declaration
-    
-    Intended to be run at every operation with complex data structures
-    to check their consistency and validity.
-
-commit a1b61a271af40a9d6ef0837424ab2c98d29f1575
-Author: Maria Matejka 
-Date:   Wed Aug 14 12:29:04 2019 +0200
-
-    IPv6 address parser: fail on incomplete addresses
-
-commit d65a926a67749f8e8ffb6df9b3e2e123669b0656
-Author: Maria Matejka 
-Date:   Wed Aug 14 11:49:20 2019 +0200
-
-    Filter: Don't alloc varargs array if its length would be zero
-
-commit 30ba7c1661a13d665ae0aaa4e40cb5ed24023450
-Author: Maria Matejka 
-Date:   Wed Aug 14 11:31:03 2019 +0200
-
-    Filter: Removed forgotten dead code
-
-commit bf9486bf20ee16af71e338ee690fc36805d98fe5
-Author: Maria Matejka 
-Date:   Mon Apr 27 22:33:10 2020 +0200
-
-    Non-null function argument declaration
-
-commit 17de3a023f7bde293892b41bfafe5740c8553fc8
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 29 02:50:29 2020 +0200
-
-    BGP: Fix handling of strange IPv6 link-local-only next hops
-    
-    There are three common ways how to encode IPv6 link-local-only next hops:
-    (:: ll), (ll), and (ll ll). We use the first one but we should accept all
-    three. The patch fixes handling of the last one.
-    
-    Thanks to Sebastian Hahn for the bugreport.
-
-commit 8029ae527edde4d47a51b55efdbdea546296c5ef
-Author: Maria Matejka 
-Date:   Thu Aug 1 14:25:01 2019 +0200
-
-    More assertion categories
-
-commit d607205486d7ea11f2cbf3dcc3d5e7e6b53f1d0f
-Author: Maria Matejka 
-Date:   Wed Aug 14 10:28:23 2019 +0200
-
-    Not calling memcpy with n=0.
-
-commit 124d860f648f4c1c080e77b5f070b97d094f5285
-Author: Maria Matejka 
-Date:   Wed Aug 14 11:06:49 2019 +0200
-
-    Filter: fixed omitted overflow check in EC constructor
-
-commit 59a86cbc7c5d5640b16ca9d8a99be979b11a4c68
-Author: Maria Matejka 
-Date:   Wed Aug 14 10:14:15 2019 +0200
-
-    Makefile rule for static analyzer
-
-commit b465604eb13fc57ebe240556ebf0d4469690c906
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 28 14:58:43 2020 +0200
-
-    Tests: Activate BGP-auth test
-
-commit 716e11a58437498c09ffdb321b0de4e28a7383d8
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 28 03:52:47 2020 +0200
-
-    Tests: Activate OSPF-VRF test
-
-commit 3c838ad9fdc553c658ee2fbb466ab8ab4cd14805
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 22 16:03:37 2020 +0200
-
-    Tests: Activate BGP test
-
-commit a6548d5b5be1d0186dfab43b76790803f8c8625e
-Author: Nasato Goto 
-Date:   Wed Apr 15 03:46:53 2020 +0200
-
-    BGP: Fix handling of 16bit-only ASN translation
-    
-    The bug generated invalid AGGREGATOR attribute during translation of
-    32bit ASN to 16bit-only BGP peer. The patch fixes that.
-
-commit fd9f0c0640fd02a26b96b4f9d3cbbffbb6544a84
-Author: Maria Matejka 
-Date:   Wed Apr 8 22:25:15 2020 +0200
-
-    Configuration strings are constant.
-    
-    This is merely a const propagation. There was no problem in there.
-
-commit a109056145a6bc8a6b498ecb6e309ebc143c8b3c
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 28 17:17:51 2020 +0100
-
-    Doc: Update prefix set comment
-
-commit 2928c5bcc7c3caaeb6de34a84ca63de9a12e1f1a
-Author: Maria Matejka 
-Date:   Sun Apr 5 01:12:06 2020 +0200
-
-    Fletcher16 test fixed to work at bigendian architectures.
-    
-    To be honest, it was wrong in concept, anyway it accidentally worked.
-
-commit c9d11e6230c49cdfd1f17829be0e877aba05e90b
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 26 04:53:23 2020 +0100
-
-    Filter: Remove mixed address tests and fix formatting
-
-commit 27550028907fd135051a43dda0abe76e9118b7e9
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 26 03:57:48 2020 +0100
-
-    Filter: Optimize IPv4 prefix sets
-    
-    Use separate IPv4 and IPv6 implementation of prefix sets. Just this
-    change makes IPv4 prefix sets 60% smaller and 50% faster.
-
-commit d516c68ad838351fa5e20e3e10bd3fb2b3157618
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 14 17:04:49 2020 +0100
-
-    RIP: Improvements to demand circuit mode
-    
-    Restart iface after changing demand circuit mode during reconfiguration.
-    Fix next_regular interval reset during reconfiguration. Send flushing
-    response when iface goes down.
-
-commit dc042d87cb68e44b49e9f4f153db444afaa00fba
-Author: Maria Matejka 
-Date:   Mon Jan 27 17:42:11 2020 +0100
-
-    Perf: changed route update pattern to be more like common protocols
-
-commit e2630a494ebc90bee97729ebe92a1bb9fd8bb611
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 5 23:51:28 2020 +0100
-
-    Netlink: Handle interfaces with missing broadcast addresses
-
-commit 1ad98965c5eacd5c5f468beac146dfd0d63c83f2
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 5 22:01:30 2020 +0100
-
-    Tests: Enforce cleanup before running a test
-
-commit ead531ffefdad0f6b5d654330d0e4aba94757569
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 5 17:39:52 2020 +0100
-
-    Tests: Activate OSPF tests
-
-commit e6746da6de45bcacc42010cea828129eae38ba67
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 3 19:04:05 2020 +0100
-
-    Flowspec: Fix tests
-    
-    Missing dst no longer generates error.
-
-commit 78e4a123bb937bb45f7eaebb0ea475095443bfd0
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 3 17:45:16 2020 +0100
-
-    BGP: Handle flowspec rules without dst part
-    
-    The RFC 5575 does not explicitly reject flowspec rules without dst part,
-    it just requires dst part in validation procedure for feasibility, which
-    we do not implement anyway. Thus flow without dst prefix is syntactically
-    valid, but unfeasible (if feasibilty testing is done).
-    
-    Thanks to Alex D. for the bugreport.
-
-commit 757cab18d6427d9246618ce48c158f2b05183838
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 27 16:16:48 2020 +0100
-
-    BGP: Support for MD5SIG together with remote range
-    
-    When dynamic BGP with remote range is configured, MD5SIG needs to use
-    newer socket option (TCP_MD5SIG_EXT) to specify remote addres range for
-    listening socket.
-    
-    Thanks to Adam Kułagowski for the suggestion.
-
-commit 22c3cf955dbbb65aa29e322efa70dabb749f0232
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 21 02:35:50 2020 +0100
-
-    RIP: Demand circuit support (RFC 2091)
-
-commit 3343088a7164a54b1e6c6cf9648d8036a61e9827
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 14 22:37:07 2020 +0100
-
-    RIP: Fix crash when interface is removed
-    
-    Recent changes in neighbor code caused RIP to access neighbor field which
-    is NULL during interface/neighbor removal and caused crash when debug
-    messages are enabled. Use correct field to get iface from neighbor.
-
-commit ab089f4fb5e1ac762a9c95ed4638e2477803678e
-Author: Maria Matejka 
-Date:   Tue Feb 4 10:34:46 2020 +0100
-
-    Conf: Better error message when reading iproute2 config
-    
-    Reported by: Martin Weinelt 
-
-commit 027a3e66f786be8863784aefb043097b41090896
-Author: Maria Matejka 
-Date:   Tue Feb 4 10:15:35 2020 +0100
-
-    RPKI: Allow build without libSSH
-
-commit 4bbc10614f3431c37e6352f5a6ea5c693c31021e
-Author: Maria Matejka 
-Date:   Tue Feb 4 10:11:16 2020 +0100
-
-    Added missing extern
-    
-    Thanks to Robert Scheck  who reported it
-    and Toke Høiland-Jørgensen  who suggested this patch.
-
-commit 7f9adafc109d576d5249c25ef284606dbac4adfa
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 28 18:07:25 2020 +0100
-
-    BFD: Option to specify which class of BFD sessions are accepted
-    
-    Allows to configure IPv4/IPv6-only or direct/multihop-only BFD protocol
-    instances.
-
-commit 9f2670277cc0d56d3364d4784348056174175aba
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 9 02:59:59 2020 +0100
-
-    OSPF: Fix bad initialization of tx_hdrlen field
-    
-    Function ifa_tx_hdrlen() uses fields autype and passwords, so it must be
-    called after these are set.
-    
-    Thanks to Kenth Eriksson for the bugreport.
-
-commit 7d767c5a3d001a6a1a5c3e800553202fd492190c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 7 18:35:03 2020 +0100
-
-    KRT: Improve syncer code to avoid using temporary data in rtable
-    
-    The old code stored route verdicts and temporary routes directly in
-    rtable. The new code do not store received routes (it immediately
-    compares them with exported routes and resolves conflicts) and uses
-    internal bitmap to keep track of which routes were received and which
-    needs to be reinstalled.
-    
-    By not putting 'invalid' temporary routes to rtable, we keep rtable
-    in consistent state, therefore scan no longer needs to be atomic
-    operation and could be splitted to multiple events.
-
-commit ef8c45749c82e246d477ea4d7f749668a9c7e9ee
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 7 01:24:30 2020 +0100
-
-    Filter: Fix typecheck for AND/OR.
-    
-    Do not apply dynamic type check for second argument of AND/OR, as it is
-    not evaluated immediately like regular argument would be.
-    
-    Thanks to Mikael for the bugreport.
-
-commit cc75b3e1dc4a7440479d6f4d73e7e1b9ba65332f
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 19 16:34:35 2019 +0100
-
-    KRT: Remove KRF_SYNC_ERROR flag
-    
-    This info is now stored in an internal bmap. Unfortunately, net.flags
-    is still needed for temporary kernel data.
-
-commit 90a9c97e38e3769b400b434723516213eccb3ab0
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 17 16:30:29 2019 +0100
-
-    KRT: Fix removal of KRF_INSTALLED
-    
-    Use route id from net->routes to check export_map. Route received from
-    sysdep KRT code does not have proper id.
-
-commit 3dabf7b8d09c3188ea41b7e2f763397946943778
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 17 00:01:53 2019 +0100
-
-    Test: Improve filter_test
-    
-    Initial parsing of test.conf must be done directly in filter_test main,
-    while reconfiguration is handled as a regular test. Also fix several
-    minor issues in test code.
-
-commit 3232d1718636eb7617fedc7b27378cd1d8f8691d
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 16 18:05:56 2019 +0100
-
-    Doc: Fix documentation of BGP gateway option
-    
-    Thanks to Nico Schottelius for the bugreport.
-
-commit c132acae362b6106c2eecbef2d8c163acde84035
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 16 02:40:28 2019 +0100
-
-    KRT: Remove KRF_INSTALLED flag
-    
-    The same information is stored in export_map of kernel protocol.
-
-commit d3aa4f2aeddf7f546b3c0c9bd5fc7958ecb3814a
-Author: Maria Matejka 
-Date:   Thu Dec 12 15:42:29 2019 +0100
-
-    Filter: fix filter comparison test
-
-commit dfb3eb771683ae4cc5ae43a990352578ab20f0fa
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 10 18:53:16 2019 +0100
-
-    Filter: Fix function comparison
-    
-    Check the SYM_FLAG_SAME in new symbols. The old code checked that
-    in old symbols (f2).
-
-commit 4ab54f1aefd6a3ecc5e2340cbc15d492444daff5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 10 18:18:02 2019 +0100
-
-    Nest: Fix bitmap cleanup
-    
-    Channel currently does not have independent pool and uses protocol pool,
-    which is freed when protocol changes state to down, while channel is
-    still in flushing. Move some some cleanup code to channel_do_flush()
-    so it is done before freeing of protocol pool.
-
-commit ff2ca10cba9c5a3be690ec1a77a068e23395ef20
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 9 04:23:01 2019 +0100
-
-    Filter: Add support for src/dst accessors for Flowspec and SADR
-
-commit 21d09632a524c0d2a7f44a51f877370ad07b983c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 3 18:05:41 2019 +0100
-
-    BGP: Add some statistics
-    
-    Add some statistic counters to BGP consistent with BGP MIB (RFC 4273),
-    including persistent 'FSM established transitions'.
-
-commit 92249894b333f7785e62b2f629dca1bbe6597c2f
-Author: Matous Holinka 
-Date:   Tue Nov 26 19:33:01 2019 +0100
-
-    CI: Add more build tests
-    
-    Add more Docker images with distributions (CentOS 8, Debian 10,
-    Fedora 27-31, OpenSUSE 15.0 & 15.1, and Ubuntu 18.04 & 19.04).
-    Fix some issues with older ones.
-
-commit 0adfa0ec076196275a3cf034ba3ce82ffbcd2fbd
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 11 00:24:07 2019 +0100
-
-    CI: Cleanup of job templates
-    
-    Env templates were used for separate IPv4/IPv6 build, that is no longer
-    needed.
-
-commit 6a314d26cbcc0e75c872d6c222f93661049466b7
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 10 22:58:23 2019 +0100
-
-    CI: Update new netlab location
-
-commit 148bd9ee92c55ba23be2d60a278dfa7ad0005971
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 10 03:43:30 2019 +0100
-
-    CI: Minor update
-
-commit faa43a755eba5194c50fae20dddc0e3837fe5dc5
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 10 03:02:58 2019 +0100
-
-    Apply relevant changes from branch mh-test-gitlab
-
-commit 5176455f1a4506e9397e23895e1de525c3c190c9
-Author: Ondrej Zajicek (work) 
-Date:   Fri Nov 1 00:13:59 2019 +0100
-
-    Gitlab test
-
-commit 5ea39eaa96625ec8274703b1eb2c8f59042a8a32
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 9 02:55:32 2019 +0200
-
-    Nest: Use bitmaps to keep track of exported routes
-    
-    Use a hierarchical bitmap in a routing table to assign ids to routes, and
-    then use bitmaps (indexed by route id) in channels to keep track whether
-    routes were exported. This avoids unreliable and inefficient re-evaluation
-    of filters for old routes in order to determine whether they were exported.
-
-commit af02b83b888c693c292960072195f0e1caf1d2a1
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 9 02:43:39 2019 +0200
-
-    Lib: Basic and hierarchical bitmaps
-    
-    Basic bitmap is obvious. Hierarchical bitmap is structure of several
-    bitmaps, where higher levels are conjunctions of intervals on level
-    below, allowing for efficient lookup of first unset bit.
-
-commit d033e6327d1e63f5d212981fca785b5086491905
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 26 16:43:09 2019 +0100
-
-    CLI: Fix continuation lines after final one
-    
-    Continuation lines may use short form (with space instead of message
-    number), but this should not be done when previous line is final.
-    
-    Thanks to Kenth Eriksson for the bugreport and analysis.
-
-commit 0f88200247cc61175c7a1d98a3e935aedce93f3b
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 18 17:44:34 2019 +0100
-
-    BGP: Fix processing of IPv6 Flowspec
-    
-    During NLRI parsing of IPv6 Flowspec, dst prefix was not properly
-    extracted from NLRI, therefore a received flow was stored in a different
-    position in flowspec routing table, and was not reachable by command
-    'show route '.
-    
-    Add proper prefix part accessors to flowspec code and use them from BGP
-    NLRI parsing code.
-    
-    Thanks to Alex D. for the bugreport.
-
-commit 53401bef63013dfee01b65d071ffbd88e457539f
-Author: Ondrej Zajicek 
-Date:   Tue Nov 12 18:13:21 2019 +0100
-
-    Netlink: Handle IPv4 routes with IPv6 nexthops
-    
-    Accept RTA_VIA attribute in all cases. The old code always used
-    RTA_GATEWAY for IPv4 / IPv6 and RTA_VIA for MPLS. The new code uses
-    RTA_VIA in cases where AF of network and AF of nexthop differs.
-
-commit 0b228fca04c8a9a81af6a4973877ceba9aede3f0
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 10 02:06:07 2019 +0100
-
-    BGP: Add option to enforce first AS in AS_PATH
-    
-    This is optional check described in RFC 4271. Although this can be also
-    done by filters, it is widely implemented option in BGP implementations.
-    
-    Thanks to Eugene Bogomazov for the original patch.
-
-commit becda5638a8ff8b056ec04b5e156e86b168cb9ef
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 5 16:29:47 2019 +0100
-
-    Doc: Minor fix
-
-commit d54a69ac7f0a29846cd9dbc697d1d369f51988bb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 5 16:00:25 2019 +0100
-
-    Doc: Add documentation for BGP option 'allow as sets'
-
-commit 10c4cd9677555e88a4ac8c95784aa281655e3326
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 5 15:14:57 2019 +0100
-
-    Filter: Add type info for more instructions
-
-commit 87512e97516160ec980e9d0621522ada405438fe
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 5 15:13:57 2019 +0100
-
-    Filter: Improve typecheck error messages
-
-commit c00c20a79941b2bbed9e957134259763dcbb29f0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 23 22:56:23 2019 +0200
-
-    Filter: Better constant promotion
-    
-    We use constant promotion from IPv4 to Router-ID values, as they have
-    same literals. Instead of ad-hoc code in filter instructions, add
-    constant promotion code to parse-time typecheck code.
-
-commit 26194bd684b2926740a74ebdfe73e6afc3c145b6
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 23 22:53:23 2019 +0200
-
-    Filter: Improved parse-time typechecks
-
-commit 6fbcd8914aa2b0e0f50c6f20a15cd6eb1ba44497
-Author: Ondrej Zajicek 
-Date:   Tue Oct 22 19:19:36 2019 +0200
-
-    Filter: Parse-time typechecks
-    
-    Most expressions can be type-validated in parse time. It is not
-    strong enough to eliminate runtime checks, but at least one gets
-    errors immediately during reconfigure.
-
-commit a52476c9be41e8d33e4a22e3dc733240ce791b42
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 4 22:07:03 2019 +0100
-
-    BGP: Add option to reject AS_SETs
-    
-    There is a pending draft to make them obsolete
-
-commit 0edf0c8cd919a8b3fbf5bc036f27ea0b4ed0b91a
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 3 20:26:54 2019 +0100
-
-    Support for address family constants
-    
-    We already had them defined on BGP level, but they are more general.
-
-commit 08c4c9a30b7ed61be39ddc71aebd69a0fea6a55a
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 3 20:25:42 2019 +0100
-
-    Nest: Fix bug in export table
-    
-    For regular channels do not compare src in export table, as we want to
-    keep here only the best (exported) route per network.
-
-commit be7c1aef429092bb90167a7f1b5c33b74a8030c2
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 26 01:28:38 2019 +0200
-
-    BGP: RFC 8654 got released
-
-commit 498d8145c0984acf6b39d7e312950315571e7030
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 25 13:28:51 2019 +0200
-
-    Nest: Fix primary flag in show route
-    
-    The route is changed by rte_make_tmp_attrs(), so we need to compare
-    net->routes to the original one.
-    
-    Thanks to Kenth Eriksson for the bugreport.
-
-commit ec331acf48535211fb5b50c87e74bf1c8370283a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 24 17:47:45 2019 +0200
-
-    BGP: Fix handling of transitive extended communities
-    
-    Transitive extended communities should be removed on external sessions,
-    the old code them in all cases.
-    
-    Thanks to Jean-Daniel Pauget for the original patch.
-
-commit 5ce881be82d6698c32e36add9ed6e1643150c3f3
-Author: Ondrej Zajicek 
-Date:   Tue Oct 22 16:20:38 2019 +0200
-
-    Accept uppercase letters in iproute2 names
-    
-    Names read from texfiles in /etc/iproute2/* are normalized by replacing
-    non-alphanumeric chars with underscore. The patch fixes handling of
-    uppercase letters, which were handled as non-alphanumberic.
-    
-    Thanks to Igor Gavrilov for the bugreport.
-
-commit f9eb9b4cab65b850c61738dd56632bae0e7329ca
-Author: Fabrice Fontaine 
-Date:   Sat Oct 19 12:50:27 2019 +0200
-
-    Nest: Fix build without protocols
-    
-    (CHECK keyword added by commiter)
-
-commit 4e23b499696da81acf0ed5ad181573b94ccdb9a3
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 19 03:37:43 2019 +0200
-
-    RPKI: Fix handling of IPv6 cache addresses
-    
-    The old code used just sizeof(struct sockaddr) bytes of IP address.
-
-commit b000a94275d7bb81868b9d6ad7582e5a3939532a
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 11 00:18:38 2019 +0200
-
-    NEWS and version update
-
-commit 6c9cda6f924ec400e6e55ed009bfaf7a7fd9819d
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 10 23:33:40 2019 +0200
-
-    BGP: Fix reconfiguration with import table
-    
-    Change of some options requires route refresh, but when import table is
-    active, channel reload is done from it instead of doing full route
-    refresh. So in this case we request it internally.
-
-commit eeb2c61653cb8a912a1c92ad3b98932245c2c202
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 10 22:43:41 2019 +0200
-
-    Doc: Minor documentation fixes
-    
-    Thanks to Christoph for the bugreport.
-
-commit 843b10c8b0c28ed3bea9a37b166500aabf5e930f
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 10 15:25:36 2019 +0200
-
-    Nest: Handle non-MPLS on MPLS case in recursive route update
-    
-    When non-MPLS recursive route resolves to MPLS underlying route,
-    then it should get MPLS labels from the the underlying route.
-
-commit 9eace84342bc879abf371a84f8af3bd697e1c0a2
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 10 15:06:32 2019 +0200
-
-    Nest: Handle PtP links in recursive route update
-    
-    Underlying (IGP) route may lead to PtP link, in this case it does not
-    need gateway. Which is different than direct route without gateway.
-    
-    When recursive (BGP) route uses PtP route, it should not use recursive
-    next hop as immediate next hop, while for direct routes it should.
-
-commit cb2b6e0494e685fc4cce52a1d449ffd69bec351e
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 10 14:01:16 2019 +0200
-
-    Nest: Fix recursive route update
-    
-    Missing cleanup can lead to dangling pointer to old next hops.
-
-commit 09ee846d9275b4cb0b77f7e458aba6a71b111c52
-Author: Ondrej Zajicek (work) 
-Date:   Sat Sep 28 14:17:20 2019 +0200
-
-    BGP: AIGP metric support (RFC 7311)
-
-commit 759b204be33fa8485c9e28038ee029a49e2e9d3f
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 1 17:01:29 2019 +0200
-
-    Lib: Support for 64-bit numbers in bvsnprintf()
-    
-    Use 'l' for s64/u64 instead of for long/ulong, as that is much more
-    useful. Also make number() correct with regard to signed/unsigned
-    typecasts.
-
-commit cc95b4594ac924b40325a4f1adcae5312179db40
-Author: Maria Matejka 
-Date:   Mon Sep 30 13:54:14 2019 +0200
-
-    Build: Pass -g to cc called as linker to explicitly keep debug info
-
-commit d6eea6caee187dc5f6d8ed585a59031039a5c523
-Author: Maria Matejka 
-Date:   Mon Sep 23 15:41:55 2019 +0200
-
-    Testing measures times
-
-commit 368f70604f347e310ca70828bfdd2504fd116064
-Author: Maria Matejka 
-Date:   Wed Sep 25 16:37:16 2019 +0200
-
-    LTO: debug info also kept with the final binary
-
-commit 6dda6931d1d8f99d944d85770e235bfe75db0eb6
-Author: Maria Matejka 
-Date:   Wed Aug 21 17:35:27 2019 +0200
-
-    Perf: allow testing with cached route attributes.
-
-commit 15a758378716a0af1d198c55d56a66da4ef08c93
-Author: Ondrej Zajicek 
-Date:   Tue Oct 8 14:20:25 2019 +0200
-
-    Doc: Fix duplicated lines
-    
-    Thanks to elados93 for the patch.
-
-commit c41a914d6e9be91cda40c7e7c05a8b4f2b515089
-Author: Maria Matejka 
-Date:   Mon Sep 30 13:53:24 2019 +0200
-
-    Testing: Don't call vsnprintf with NULL format
-
-commit 24493e9169d3058958ab3ec4d2b02c5753954981
-Author: Maria Matejka 
-Date:   Fri Oct 4 12:20:02 2019 +0200
-
-    Fixed undefined behavior on signals.
-    
-    The C11 specification allows only sig_atomic_t and _Atomic variable
-    access. All other accesses to global variables are undefined behavior.
-    
-    Using int was probably OK on x86 and x86_64; yet there were some reports
-    from other architectures (especially some MIPS) that in rare cases,
-    after issuing SIGHUP, BIRD did strange things.
-
-commit 4821251ebb13c05e8752f6f54b8e5ad6d87fecaa
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 30 19:10:14 2019 +0200
-
-    BFD: Fix reconfiguration of neighbors
-    
-    The bfd_reconfigure_neighbors() returned after first reconfigured
-    neighbor instead of continuing with the next one.
-    
-    Thanks to Winston Chen for the bugreport and a patch.
-
-commit ca2dacfcee92d8cfecff74dd020c2d16202b0d5c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 24 17:12:15 2019 +0200
-
-    Nest: Fix bug in export table
-    
-    Exported route may be in modified state, we need to get cached one for
-    rte_same() and rta_clone() to work properly.
-
-commit ea0917bcba86d354f9c8516a4f114c38d04f890b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 24 00:18:48 2019 +0200
-
-    Filter: Fix eval command
-
-commit 9c79022153c6ef3a6c35b2db8be6b259104e67f3
-Author: Ondrej Zajicek (work) 
-Date:   Sun Sep 22 23:32:22 2019 +0200
-
-    Nest: Fix help for 'graceful restart' command
-    
-    Multi-worded commands are not automatically added to top-level
-    help output.
-    
-    Thanks to Christoph for the bugreport.
-
-commit 3f477ccb03ed99cf6754baaca179fcf791bcda55
-Author: Maria Matejka 
-Date:   Fri Sep 20 10:16:51 2019 +0200
-
-    Filters: Function body comparison result now used.
-    
-    Function bodies were compared in post-parse time, yet the result was not
-    used and the functions were incorrectly considered the same as before.
-    
-    Now the result is used to reload affected protocols.
-
-commit eb1e43a9af9e1905b754f1f191d228e2676ce181
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 17 14:45:14 2019 +0200
-
-    BGP: Fix setup with multiple dynamic BGP ranges
-    
-    Based on a patch from Liam Nattrass, thanks.
-
-commit 5235c3f78da15826b0654ba68dc7a897faa42c98
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 10 17:34:41 2019 +0200
-
-    NEWS and version update
-
-commit 532471967e6d92ae7a480367cc6d935cca75c7b2
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 10 17:28:06 2019 +0200
-
-    Doc: Update BGP mask documentation
-
-commit 452e90ba72f57c44b44f9940ac951d2fde417583
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 10 13:45:18 2019 +0200
-
-    Filter: Fix crash with 'where' filters and function calls
-    
-    The old 'where' code computed size value incorrectly, which leads
-    to invalid instruction lines and filter errors or crashes.
-
-commit 1127887a8b111dab18c592f1f3f575920f38bfe3
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 9 13:17:30 2019 +0200
-
-    BGP: Fix handling of bgp_aggregator atttribute
-    
-    The attribute should not be modifiable by filters as we do not
-    support its type.
-
-commit 8388f5a7e14108a1458fea35bfbb5a453e2c563c
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 9 03:13:35 2019 +0200
-
-    BGP: Fix bugs in handling of shutdown messages
-    
-    There is an improper check for valid message size, which may lead to
-    stack overflow and buffer leaks to log when a large message is received.
-    
-    Thanks to Daniel McCarney for bugreport and analysis.
-
-commit 56d8b1e7f6252158caf0ecd3147376b858b16d97
-Author: Ondrej Zajicek (work) 
-Date:   Thu Aug 29 20:58:16 2019 +0200
-
-    OSPF: Fix 'show ospf lsadb' cmd without proto arg
-    
-    It crashed when used without protocol argument.
-    
-    Thanks to Alexander for the bugreport.
-
-commit 32a254050d3da57ca6d7627aa606a8dce11907ee
-Author: Maria Matejka 
-Date:   Mon Aug 26 21:53:56 2019 +0200
-
-    Channel refeed with import table splitting between routes for one prefix
-
-commit 5ab3447de18235de566eb5116c0aec24050f5f85
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 21 17:30:00 2019 +0200
-
-    Sysdep: Drop supplementary groups when dropping GID
-    
-    We forgot to do that. Oops.
-
-commit 4fa0e472cf3e8c61a3f67e91d201dbc12ea94221
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 21 17:16:08 2019 +0200
-
-    BGP: Use reallocation for capability structure
-    
-    Instead of having large stack buffer for max amount of AFI/SAFI pairs.
-    The old code is not correct w.r.t. extendeded option length, as more
-    AFI/SAFI pairs may fit into the capability option.
-
-commit 524d2538537b2530bf031daa1d5c8e4653f92c5c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 20 19:12:59 2019 +0200
-
-    BGP: Implement extended optional parameters length
-    
-    Extends BGP options/capabilities data length to 16bit, to avoid issues
-    with too many capabilities. See draft-ietf-idr-ext-opt-param-07
-
-commit a297a4f044bcc7c38549710a720bc1f97df9ba65
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 13 18:57:40 2019 +0200
-
-    Nest: Fix crash in route reload when some channels are not up.
-    
-    Only channels that are up can be reloaded.
-
-commit b7d7599ce3576f28310af18b403fed49a0840b67
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 13 18:22:07 2019 +0200
-
-    BGP: implement Adj-RIB-Out
-    
-    The patch implements optional internal export table to a channel and
-    hooks it to BGP so it can be used as Adj-RIB-Out. When enabled, all
-    exported (post-filtered) routes are stored there. An export table can be
-    examined using e.g. 'show route export table bgp1.ipv4'.
-
-commit dfe63ed84d42178a53b01071c64f23250e74d6d9
-Author: Maria Matejka 
-Date:   Tue Aug 13 16:45:27 2019 +0200
-
-    Filter: Fixing empty block and never-executed-statement bug
-
-commit 70a4320bdd44122d7a93bc71c77a9d684b3c9adc
-Author: Ondrej Zajicek (work) 
-Date:   Mon Aug 12 00:41:36 2019 +0200
-
-    RAdv: Allow solicited RAs to be sent as unicast
-    
-    Add option to send solicited router advertisements as unicast directly
-    to soliciting nodes instead of as multicast to all-nodes group.
-
-commit 9f3e09832081bc029dc98ae6dda49ee86d138fde
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 6 18:54:19 2019 +0200
-
-    Filter: Allow to use set constants / expressions in path masks
-    
-    Allow to not only use set literals in path masks, but also existing
-    set constants or set expressions.
-
-commit ef113c6f725349a2ab52f3cbef18403f82c84134
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 6 16:58:13 2019 +0200
-
-    Filter: Allow to use sets in path masks
-
-commit e2b530aa729f9c5973e498b45dd6f55ab669d1ac
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 6 15:29:06 2019 +0200
-
-    BGP: Improve reconfiguration
-    
-    Several BGP channel options (including 'next hop self') could be
-    reconfigured without session reset, with just route refeed/refresh.
-    The patch improves reconfiguration code to do it that way.
-
-commit f6a6a77640a9749c79a91300d130ba6b5941d408
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 6 15:09:42 2019 +0200
-
-    BGP: Fix 'deterministic med' to work with 'merge paths'
-    
-    The 'deterministic med' option is implemented by suppressing other than
-    best-in-group routes (grouped by ASN) from best route selection. This
-    interferes with 'merge paths' as supressed routes are no longer mergable
-    with best route. This is fixed by suppressing only those routes that are
-    not mergable with best-in-group route.
-
-commit 8c42205e35e24537122a4c821bd3128d698abf1b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 6 14:53:02 2019 +0200
-
-    Configure: CFLAGS update
-    
-     - add -flto only to default CFLAGS
-     - add -fno-strict-aliasing, -fno-strict-overflow always
-     - remove -Wno-implicit-fallthrough
-
-commit cc02da816fb062c93b4f0d61b0cfa02b673a5e00
-Author: Ondrej Zajicek 
-Date:   Thu Aug 1 14:49:03 2019 +0200
-
-    Show LDFLAGS in configure
-
-commit 3ffb0c4f25eff926989867b4a7f604f54d68281b
-Author: Ondrej Zajicek 
-Date:   Thu Aug 1 14:45:23 2019 +0200
-
-    Enable more threads for flto
-
-commit de41d24a3d67c98d7330551bcf7549c007b89ae8
-Author: Ondrej Zajicek 
-Date:   Thu Aug 1 14:27:20 2019 +0200
-
-    Fix output of CFLAGS in configure script
-
-commit 543875e080969876c33d365474589899c1f960e3
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 31 23:35:29 2019 +0200
-
-    NEWS and version update
-
-commit 96e4d0960c2b1bb01dc90ebfe341af8e4284090a
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 31 19:45:29 2019 +0200
-
-    Change 'graceful down' command to 'graceful restart' and update docs
-    
-    The command initiating planned graceful restart including bird shutdown
-    should be called 'graceful restart' instead of 'graceful down', as the
-    later should be reserved for graceful shutdown in style of RFC 8326.
-
-commit 8c703ecf73d7ccbd5e767858ba47a5f3ad0bc439
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 30 19:21:06 2019 +0200
-
-    Doc: Update documentation about VRFs and BFD
-
-commit 2de1e2062eba66893a36f5a84f922c880ab6c351
-Author: Maria Matejka 
-Date:   Tue Jul 30 14:28:40 2019 +0200
-
-    Conf: Fixed symbol redefinition
-
-commit 48addc88be27c46d83805ec2854bf1b5e0f0ddb3
-Author: Maria Matejka 
-Date:   Tue Jul 30 12:11:49 2019 +0200
-
-    Log: Fixed race condition in reconfigure while BFD is running
-
-commit 3b62417c356796a35229ce07238abf98fb569ccb
-Author: Vincent Bernat 
-Date:   Mon Jul 29 15:42:30 2019 +0200
-
-    RPKI: Fix allocation of hostname when using an IPv6 address
-
-commit 00284f0ed67370c7c697adf20b08840482ea18ea
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 25 14:24:16 2019 +0200
-
-    BFD: Fix formatting of 'show bfd sessions'
-    
-    The formatting was broken due to longer date in 'since' column.
-
-commit cec40a74679821513e627f93b924067a404f6475
-Merge: 18f70a622 8263690e7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 24 15:38:32 2019 +0200
-
-    Merge remote-tracking branch 'origin/mq-filter-stack'
-
-commit 18f70a6229f586d5e4f387075be42d7a1ef5d269
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 24 15:08:03 2019 +0200
-
-    Nest: VRF of protocol can be explicitly specified as 'default'
-    
-    Protocol can have specified VRF, in such case it is restricted to a set
-    of ifaces associated with the VRF, otherwise it can use all interfaces.
-    
-    The patch allows to specify VRF as 'default', in which case it is
-    restricted to a set of iface not associated with any VRF.
-
-commit 048c2f0e8cc1451b1fa48e915e0bb5e124aa9d26
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 23 17:02:41 2019 +0200
-
-    OSPF: Fix formatting of 'show ospf neighbors'
-    
-    The formatting was broken when too short router-id was used.
-
-commit 15b0a9229431dc75425c229b2f94e680db49d594
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 23 01:52:18 2019 +0200
-
-    RPKI: Fix reconfiguration when ssh parameters are undefined
-
-commit d843c274781bf9d30bfba93229b9f02a88f26fe2
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 18 02:39:35 2019 +0200
-
-    Lib: Improve printf() tests
-    
-    Includes patch from Maximilian Eschenbacher
-
-commit 39edf4abcafda429f33f98c31ae11bf6a27ab18e
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 18 01:57:26 2019 +0200
-
-    Lib: Fix print of 64-bit router id
-    
-    Mismatched types to printf(). The old code coincidentally worked on amd64
-    due to its calling conventions.
-    
-    Thanks to Maximilian Eschenbacher for the bugreport.
-
-commit cf7ff99513728e4e405508e5ccd7522289d4ec82
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 17 16:20:35 2019 +0200
-
-    BFD: Support for VRFs
-    
-    Allow multiple BFD instances in separate VRFs, dispatch BFD requests
-    according to VRFs.
-    
-    Thanks to Alexander Zubkov for notice and patches.
-
-commit 2eaf65ec607b68748744fa8e0d596cf1f3ba117a
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jul 15 18:16:55 2019 +0200
-
-    Netlink: Fix parsing of multipath routes with MPLS labels
-
-commit 8235c4747dcc92de2ea991f78cdf9c6b8fa7f522
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jul 15 16:23:18 2019 +0200
-
-    Netlink: Use route replace for IPv4
-    
-    Use route replace netlink op instead of delete+add netlink ops for kernel
-    IPv4 route replace. This avoids some packetloss during route replace.
-    Still use the old behavior for IPv6, as some kernel bugs are hidden in
-    IPv6 ECMP handling.
-
-commit 8263690e754a83b8f3c58bd0080a1628d6cba556
-Merge: efd7c87b5 1aec7112f
-Author: Maria Matejka 
-Date:   Mon Jul 15 16:07:16 2019 +0200
-
-    Merge remote-tracking branch 'origin/master' into mq-filter-stack
-
-commit efd7c87b5bcd476ba74ffe9f369e2f6fe978cbb1
-Author: Maria Matejka 
-Date:   Mon Jul 15 15:43:47 2019 +0200
-
-    Filter: further split of print & die to FI_PRINT, FI_FLUSH and FI_DIE
-
-commit 3782454e8dead1184e698fa84f7491182b54454e
-Author: Maria Matejka 
-Date:   Mon Jul 15 15:23:35 2019 +0200
-
-    Filter: Simpler filter context allocation
-
-commit f634adc7dcf8cfc2a8ea8a61fe2f85d8aadf5a75
-Author: Maria Matejka 
-Date:   Mon Jul 15 15:17:04 2019 +0200
-
-    Filter: FID_MEMBER debug string is a C constant string
-
-commit c0999a149c223fa9c622552a314c767e6a640bf6
-Author: Maria Matejka 
-Date:   Mon Jul 15 15:12:18 2019 +0200
-
-    Filter: Converted FI_PRINT and FI_PATHMASK_CONSTRUCT to VARARG
-
-commit c29d73a06a8052f653e85f6472c663f70f6706cc
-Author: Maria Matejka 
-Date:   Mon Jul 15 15:06:52 2019 +0200
-
-    Filter: fixed excessive stack allocation in functions with args but no local vars
-
-commit 0da06b7103a5601fb7c224ab82a6d3799cb55308
-Author: Maria Matejka 
-Date:   Mon Jul 15 13:19:01 2019 +0200
-
-    Filter: lots of documentation
-
-commit 1b9db6d4a7d8ab9f3ada5d21f8f05c3c8bf3c2e2
-Author: Maria Matejka 
-Date:   Mon Jul 15 12:03:47 2019 +0200
-
-    Filter: Don't write out when re-evaluating filter for internal purposes.
-
-commit 547be53b8cefc6d346cf13dcedb3e527c3472b06
-Author: Maria Matejka 
-Date:   Mon Jul 15 12:03:13 2019 +0200
-
-    Filter: Don't fail badly when trying to access non-existent route in config time
-
-commit 1aec7112f7314c3e9a4d8b9440dd85a782295310
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 10 18:25:36 2019 +0200
-
-    OSPF: Fix handling of NSSA option flags
-    
-    Per RFC 3101, N-bit signalling NSSA support should be used only in Hello
-    packets, not in DBDES packets. BIRD since 2.0.4 verifies N-bit in
-    neighbor structure, which is learned from DBDES packets, therefore
-    NSSA-LSAs are not propagated to proper implementations of RFC 3101.
-    
-    This patch fixes that. Both removing the check and removing N-bit from
-    DBDES packet. This will fix compatibility issues with proper
-    implementations, but causes compatibility issues with BIRD 2.0.4.
-
-commit bfa15a642f8e262af5c18ba5898597a20bdf4e2f
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 10 16:46:31 2019 +0200
-
-    Filter: Minor cleanups
-
-commit b2a4feeb4c877ff56d9b2ebd8119225c53ea40db
-Merge: eac9250fd 422a93342
-Author: Maria Matejka 
-Date:   Wed Jul 10 11:27:08 2019 +0200
-
-    Merge branch 'master' into mq-filter-stack
-
-commit 422a9334294dd9a5b13abd8563a3dc7233e64b13
-Author: Maria Matejka 
-Date:   Wed Jul 10 11:12:41 2019 +0200
-
-    Debug: growing message format buffer
-    
-    This led in corner cases to undefined buffer content
-    and garbage output.
-
-commit deb84d79896cca3ac10ff9f853604f845c9420a7
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 9 15:57:46 2019 +0200
-
-    OSPF: Minor fix in graceful restart
-    
-    Most LSA origination is blocked in ospf_update_topology(), this fix
-    blocks LSA origination from ospf_rt_spf().
-
-commit e840cb9cd54162efca72137f53fddbb0e490d6fe
-Author: Vincent Bernat 
-Date:   Tue Jul 9 15:25:40 2019 +0200
-
-    Doc: Fix typo in BGP dynamic names feature description
-
-commit 74a38adb6b4b4bf2a67e7a779a7c95b0ef1b9894
-Merge: 1322e205e 2872ab927
-Author: Maria Matejka 
-Date:   Tue Jul 9 14:53:15 2019 +0200
-
-    Merge branch 'master' of gitlab.labs.nic.cz:labs/bird
-
-commit 1322e205e2066c0da8526bed505dc699d0f5b92a
-Author: Maria Matejka 
-Date:   Fri Feb 8 11:19:04 2019 +0100
-
-    Test: Fixed annoying warnings (and possible obscure bugs).
-
-commit bb001af0e8022f6445ff50b7f32c9ac102cc244e
-Author: Maria Matejka 
-Date:   Tue Jul 9 14:34:26 2019 +0200
-
-    Test: better random u64 generator
-
-commit 2872ab927ecb94b1555f5e3c8bd33021261d0c54
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 9 03:48:02 2019 +0200
-
-    OSPF: Update DR when local priority changes
-    
-    When priority is reconfigured locally, we need to trigger DR election.
-    
-    (recommiting, was reset by the previous commit)
-
-commit 85840d4c03552a69927b666774fa39921e7b1047
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 9 03:31:54 2019 +0200
-
-    OSPF: Fix handling of external routes on graceful restart
-    
-    We need to flush learned external LSAs a bit later than other LSAs (after
-    first feed after end of the graceful restart) to avoid flap of external
-    routes.
-
-commit 05e3933c06b488e71c9c149c25aec9c733a8bd1f
-Author: Maria Matejka 
-Date:   Mon Jul 8 13:04:50 2019 +0200
-
-    Nest: Uninitialized variable fix
-    
-    Thanks to Vincent Bernat for reporting this.
-
-commit 2ce25ebbefd2eaf517361a446fe40679e78e23e9
-Author: Maria Matejka 
-Date:   Mon Jul 8 13:00:13 2019 +0200
-
-    Libdmalloc macros fixed
-
-commit fa1e0ba35416561bda3708ec808d24641dd8995f
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 4 13:34:42 2019 +0200
-
-    OSPF: Update DR when local priority changes
-    
-    When priority is reconfigured locally, we need to trigger DR election.
-
-commit eac9250fd5b10809830361b94438339b3b31b270
-Merge: 8816b6cdd 026bfedb3
-Author: Maria Matejka 
-Date:   Wed Jul 3 11:09:52 2019 +0200
-
-    Merge branch 'master' into mq-filter-stack
-
-commit 8816b6cdd98d24535eece6b5e35730aac57cd9f7
-Merge: c376555ce 84ac62d39
-Author: Maria Matejka 
-Date:   Wed Jul 3 08:44:42 2019 +0200
-
-    Merge branch 'mq-filter-stack' of gitlab.labs.nic.cz:labs/bird into mq-filter-stack
-
-commit 84ac62d3967f5294f4dc208b803a273a101744a8
-Author: Maria Matejka 
-Date:   Wed Jul 3 08:13:07 2019 +0200
-
-    Filter: CLI command to dump all the linearized filters
-
-commit 0206c070ace90c48a806a74fac52ba6e6ff9858b
-Author: Maria Matejka 
-Date:   Wed Jul 3 01:23:49 2019 +0200
-
-    Filter: Split printing and dying
-
-commit 3265c9169dfc185ccdb787c6c83d9d8e2d0429c1
-Author: Maria Matejka 
-Date:   Wed Jul 3 00:04:24 2019 +0200
-
-    Removed obsolete comment at as_path_cut()
-
-commit 78976974e711e52c3b8fa6a80b290cf2fa4f692d
-Author: Maria Matejka 
-Date:   Wed Jul 3 00:00:11 2019 +0200
-
-    Dynamic attributes definition split whether it is bitmask or not.
-
-commit 263fa2c4a6bf226172a6aef9a6b8198a5901c5bf
-Author: Maria Matejka 
-Date:   Tue Jul 2 22:57:00 2019 +0200
-
-    Filter: Dropped some more irrelevant whitespace from generated files
-
-commit 59d3a3611f05c05040cec4bf09f31c26ade0fa0a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 2 18:23:06 2019 +0200
-
-    Netlink: Handle alien routes with unsorted nexthops
-    
-    Nest requires that nexthops are sorted, the kernel protocol have to
-    ensure that for alien routes.
-
-commit 84c58aabd0d7a6a3d1508de004a29fd22423fde6
-Author: Maria Matejka 
-Date:   Tue Jul 2 17:59:21 2019 +0200
-
-    Filter: Nicer whitespaces in generated inst-gen.h
-
-commit 550a6488c9e2241e2979317c04d6d73752618402
-Author: Maria Matejka 
-Date:   Tue Jul 2 17:39:56 2019 +0200
-
-    Filter: documentation of the M4 preprocessor
-
-commit 1187627a1dded6a3673c0d43033f431f15cd1b8f
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 2 16:30:36 2019 +0200
-
-    Netlink: Do unified scan for both IPv4 and IPv6
-    
-    Instead of separate scans for IPv4, IPv6 and MPLS, do one AF_UNSPEC scan.
-    
-    This also avoids kernel issue when kernel reported IPv4 and IPv6 routes
-    during MPLS scan if MPLS is not active.
-
-commit c376555cecbfea83314e9f76bce5002185d3566a
-Author: Maria Matejka 
-Date:   Tue Jul 2 13:13:29 2019 +0200
-
-    Filter: GCC, don't complain about indentation in generated code.
-
-commit b40c0f028f37086991fefa9197708ba8c7b3d571
-Author: Maria Matejka 
-Date:   Tue Jul 2 10:45:53 2019 +0200
-
-    Filter: Pre-evaluation of constant expressions
-
-commit 30667d50417f926fc948905aaab3e679b416b2e1
-Author: Maria Matejka 
-Date:   Mon Jul 1 14:12:05 2019 +0200
-
-    Filter: Resolving of defined constants in config time
-
-commit 26bfe59f450c2497dabc536c3e2a604e8aa5839a
-Author: Maria Matejka 
-Date:   Mon Jul 1 13:13:06 2019 +0200
-
-    Filter: Moved singleton member definitions to f-inst.c
-
-commit 4212c0e7e5647e107e6e06238a417afc44fd7f75
-Author: Maria Matejka 
-Date:   Mon Jul 1 12:49:02 2019 +0200
-
-    Filter: Moved f_inst allocation to separate function
-
-commit f74d19765ea3fafdff8fd3443f50a7b309babe89
-Author: Maria Matejka 
-Date:   Mon Jul 1 12:07:06 2019 +0200
-
-    Filter: Getting rid of RESULT_OK. Adding RESULT_VOID.
-    
-    This is a preparation for filter pre-evaluation.
-
-commit 236828d06f512b44457970795e44068d9d38ad3e
-Author: Maria Matejka 
-Date:   Mon Jul 1 11:57:35 2019 +0200
-
-    Filter: The interpreter code now shares its diversion with constructor
-    
-    This is a preparation for filter pre-evaluation.
-
-commit 026bfedb332d8c0dde28c693c177fe993b5df26d
-Author: Maria Matejka 
-Date:   Tue Jun 11 13:19:21 2019 +0000
-
-    BGP: Prefix hash is too small, increase its max size.
-    
-    This doesn't make any change for you until you have
-    millions of updates waiting to be sent. Increasing
-    the max hash size from 2^20 to 2^24.
-
-commit 9dac814ee89fe41856923a532c87ffd14dbc0f79
-Author: Maria Matejka 
-Date:   Tue Jun 11 09:35:25 2019 +0000
-
-    BGP: split tx explicitly
-    
-    If BGP has too many data to send and BIRD is slower than the link, TX is
-    always possible until all data is sent. This patch limits maximum number
-    of generated BGP messages in one iteration of TX hook.
-
-commit bb57d9171f2b4567f54169c8864953c4e5e18025
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 30 22:30:56 2019 +0200
-
-    Add mock-up function for unit tests
-    
-    They failed without it.
-
-commit 6c0f85d5de1588b6427f6f47c1be4a220799cd70
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 30 22:11:11 2019 +0200
-
-    Doc: OSPF graceful restart options
-
-commit 1a2ad348f660b150265f6df759a07de8a2b6de2f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jun 30 20:12:59 2019 +0200
-
-    OSPF: Support for graceful restart
-    
-    Implement OSPFv2 (RFC 3623) and OSPFv3 (RFC 5187) graceful restart,
-    for both restarting and helper sides. Graceful restart is initiated
-    by 'graceful down' command.
-
-commit 8a68316eb96be1fecf91ca395f3321aa99997ad2
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 18 16:27:21 2019 +0200
-
-    Nest: Add command to request graceful restart
-    
-    When 'graceful down' command is entered, protocols are shut down
-    with regard to graceful restart. Namely Kernel protocol does
-    not remove routes and BGP protocol does not send notification,
-    just closes the connection.
-
-commit 63f49457dcc4216002742166dfecce751efa78d5
-Author: Maria Matejka 
-Date:   Fri Jun 28 11:08:48 2019 +0200
-
-    Filter: renaming pointers for consistency
-    
-    The struct f_inst * is now always "what"
-    and the union member pointer is always "whati".
-
-commit 64bb1346c71cbd2764b1e0a00dc88290bec72a5a
-Author: Maria Matejka 
-Date:   Thu Jun 27 15:55:48 2019 +0200
-
-    Filter: A little cleanup of M4 interpreter generator
-
-commit a8ab54d18d3af8e7dc9811ab8e3ba9a105131a25
-Merge: 63e762046 2e0777317
-Author: Maria Matejka 
-Date:   Tue Jun 25 22:40:05 2019 +0200
-
-    Merge remote-tracking branch 'refs/remotes/origin/mq-filter-stack' into mq-filter-stack
-
-commit 63e7620462b80c9c6bbbd4f128b6816e0748d6c6
-Author: Maria Matejka 
-Date:   Tue Jun 25 16:18:06 2019 +0200
-
-    Conf/Filters: Moved argument count to conf scope
-
-commit 2e0777317f373921487d80e88c376d23a842ba2c
-Author: Maria Matejka 
-Date:   Fri Jun 21 11:33:28 2019 +0200
-
-    Filter instructions don't confuse now v1 and res.
-
-commit a84b8b6ebb2b6825b7059e34cfaafe405ab0117e
-Author: Maria Matejka 
-Date:   Wed Jun 19 14:09:57 2019 +0200
-
-    Revert "Filter: Dropped the setter instructions in favor of direct result storage."
-    
-    This reverts commit bd91338246c1ba40358243f1bdf5a6dbd3a29f35.
-
-commit 5c864e2cfaf5ff5e8e3db3ccd746162fbc7aac5b
-Author: Maria Matejka 
-Date:   Thu Jun 13 14:27:58 2019 +0200
-
-    String: bstrtoul macro expanded to bstrtoul10 and 16
-
-commit 87c82334a77dfa3fea3057fa6d4bcf8558f203a4
-Author: Maria Matejka 
-Date:   Thu Jun 13 14:24:48 2019 +0200
-
-    Filter: removal of semantically insane consts in filter_commit
-
-commit bdf2e55d98636eacaac8188ee0bd000cc10d217c
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 12 18:02:01 2019 +0200
-
-    Add mock-up function for unit tests
-    
-    They failed without it.
-
-commit 9106a750cd76d4a76c7a60294ce3a43eede166c9
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 12 16:13:21 2019 +0200
-
-    Add CLI command to test reconfiguration status
-    
-    Based on patch from Kenth Eriksson .
-
-commit 8a2cbb88d1657b4aee366605cb3d8ffcc5d3f90a
-Author: Kenth Eriksson 
-Date:   Wed Jun 12 15:03:37 2019 +0200
-
-    BIRD coding conventions
-    
-    Added Emacs config file describing BIRD coding conventions, as suggested
-    by Kenth Eriksson based on existing practice.
-
-commit d35fb9d732b05f20a556e9bda798939358459975
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 12 16:35:42 2019 +0200
-
-    BGP: Fix bug introduced in one of last patches
-
-commit bd91338246c1ba40358243f1bdf5a6dbd3a29f35
-Author: Maria Matejka 
-Date:   Fri May 31 17:33:41 2019 +0200
-
-    Filter: Dropped the setter instructions in favor of direct result storage.
-    
-    This should help filter performance a bit.
-
-commit aa6c5f4d92f225452e432991671e7bdad185506a
-Author: Maria Matejka 
-Date:   Thu May 30 14:42:54 2019 +0200
-
-    Filter: Just a little comments in filter structure
-
-commit 1757a6fce5bd23c44cc5b72a042644c4abb744c8
-Author: Maria Matejka 
-Date:   Wed May 29 21:03:52 2019 +0200
-
-    Filter: Stacks moved to thread-local storage if available.
-
-commit 6479e403ef7398f48c0e1c0f1a71aa112938a357
-Author: Maria Matejka 
-Date:   Thu May 23 11:27:24 2019 +0000
-
-    Filters: If somebody doesn't like _Thread_local, don't fail for now, just be a little slower.
-    
-    When the parallel execution comes into place, we'll likely enforce this
-    C11 feature. It's much simpler and also faster than pthread_[sg]etspecific().
-
-commit 23e3b1e6652bac4a003a7eb1e074bdaf7ebb4900
-Author: Maria Matejka 
-Date:   Wed May 22 15:16:32 2019 +0000
-
-    Filter: Some people can't pronounce "postfixify" correctly. Let's try "linearize" instead.
-    
-    This is just a naming change.
-
-commit 96d757c13fe4b2e21b265275af9ac7d1e2c3f075
-Author: Maria Matejka 
-Date:   Tue May 21 16:33:37 2019 +0000
-
-    Filter: Store variables and function arguments on stack
-
-commit 20c6ea70ccb69f3c1d9ca46cc7941eb686f283c6
-Author: Maria Matejka 
-Date:   Mon May 20 17:53:10 2019 +0000
-
-    Filter: Making the filter state thread local.
-    
-    While having the filter code still reentrant if we really need,
-    the compiler can now do constant propagation and address the
-    thread local storage directly to save some computation time.
-
-commit 9eef9c648cee7179e069ea1f978d4e86cef580d3
-Author: Maria Matejka 
-Date:   Fri May 17 22:18:49 2019 +0200
-
-    Lexer now returns known sym / unknown sym / keyword
-
-commit dbbe4a783b3d4e7722bcb466673f8a1d2832fc7b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 30 16:16:50 2019 +0200
-
-    Doc: Dynamic BGP
-
-commit 7ff34ca2cb86f3947bf049f73e76e6ce5d57e4a8
-Author: Alexander Azimov 
-Date:   Tue Apr 30 13:55:43 2019 +0200
-
-    BGP: Compliance with RFC8203bis
-
-commit 0b1e1e1a007f860230855d0c9e8adc88969ee077
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 30 13:44:11 2019 +0200
-
-    BGP: Output Local AS number in show protocol
-    
-    Useful for implementation of agents implementing the SNMP-BGP MIB, which
-    requires the local AS of a session to be specified.
-    
-    Thanks to Jan-Philipp Litza for the patch.
-
-commit e0835db4f137c1686c26165053ec9c0578b94009
-Author: Ondrej Zajicek (work) 
-Date:   Mon Apr 8 17:05:07 2019 +0200
-
-    BGP: Dynamic BGP
-    
-    Support for dynamically spawning BGP protocols for incoming connections.
-    Use 'neighbor range' to specify range of valid neighbor addresses, then
-    incoming connections from these addresses spawn new BGP instances.
-
-commit df092aa1def0419da74f15bd20582fab4ec09207
-Author: Ondrej Filip 
-Date:   Wed Apr 24 13:49:18 2019 +0200
-
-    Small type in doc.
-
-commit 6ff811976513132c831a352bd0aa0f3600252acb
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 12 14:11:23 2019 +0200
-
-    OSPFv3: Fix some overlooked cases in IPv4 mode
-    
-    Prefixes with max length (/32) were not handled properly.
-    
-    Thanks to bauen1 for the bugreport.
-
-commit 4a50c8bd0310053a3dcab45c8dde0362348c0503
-Author: Ondrej Zajicek (work) 
-Date:   Mon Apr 8 16:39:22 2019 +0200
-
-    BGP: Handle corner cases in event ordering
-    
-    When BGP connection is opened, it may happen that rx hook (with remote
-    OPEN) is called before tx hook (for local OPEN). Therefore, we need to do
-    internal changes (like setting local_caps) synchronously with OPENSENT
-    transition and we need to ensure that OPEN is sent before KEEPALIVE.
-
-commit 23ee6b1cd6dc597876d91db9a015f7a633764808
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 3 15:54:50 2019 +0200
-
-    BGP: Promiscuous ASN mode
-    
-    Allow to specify just 'internal' or 'external' for remote neighbor
-    instead of specific ASN. In the second case that means BGP peers with
-    any non-local ASNs are accepted.
-
-commit a22c3e59683d0ea6c379a37f990e74a6d281ccef
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 2 17:22:31 2019 +0200
-
-    BGP: Separate runtime and config usage of local/remote ip and as fields
-
-commit fe503c7c0632b385222c92b85d04526fdf36a1a3
-Author: Maria Matejka 
-Date:   Sat Mar 23 13:32:14 2019 +0100
-
-    Filter: fixed error-checking bug in !~ operator
-
-commit 7078aa63ae498b55c729df4a075eb28019917e81
-Author: Maria Matejka 
-Date:   Fri Mar 22 21:40:35 2019 +0100
-
-    Fixed one warning and one undefined value.
-
-commit 2ab680c6972306db71d9a8d4ee4fabf265981d30
-Author: Maria Matejka 
-Date:   Wed Mar 20 16:50:58 2019 +0100
-
-    Fixed an undefined symbol bug in CLI introduced by filter refactoring
-
-commit 3a22a6e858cd703d254ab331183ccd56fe195c6b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 19 19:38:32 2019 +0100
-
-    Doc: Route attribute cleanups
-
-commit 3c3605818fb304f8de6975c56096bfafa43a8b6b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 19 17:44:50 2019 +0100
-
-    BGP: Mandatory option for channels
-    
-    Allow to mark channel to be mandatory, and do not allow BGP sessions if
-    no common AFI/SAFI is established.
-
-commit 7e5f769d91319b4130f7d611dd14252806892ace
-Author: Ondrej Zajicek (work) 
-Date:   Fri Mar 15 20:54:01 2019 +0100
-
-    BGP: Handle case where capabilites are not used
-    
-    If peer does not announce capabilities at all, or when we have
-    capabilities disabled, handle that as implicit IPv4 unicast.
-
-commit 8d65add626b34256879a3e83855af3c0fa8ce4e7
-Merge: 2f02c25e3 5d511948c
-Author: Maria Matejka 
-Date:   Mon Mar 18 12:54:40 2019 +0100
-
-    Merge branch 'master' into HEAD
-
-commit 5d511948cddee415c2f0f1103bda0468a193f2d6
-Author: Maria Matejka 
-Date:   Fri Mar 15 15:07:00 2019 +0100
-
-    Build: Automatic dependency tracking for generated files
-
-commit 2f02c25e36f3946019c24dafe9b894a9e195350d
-Author: Maria Matejka 
-Date:   Thu Mar 7 18:02:05 2019 +0100
-
-    Perf: fixed stupid allocation bug
-
-commit d638c1794a48dec79fa0a6c118296356754a134d
-Author: Maria Matejka 
-Date:   Wed Mar 6 21:45:28 2019 +0100
-
-    Gitlab CI: Drop CentOS 6 test build as unsupported.
-    
-    If someone wants to maintain BIRD for CentOS 6,
-    feel free to send patches.
-
-commit 875cc073b067f295cccc668008e10218f8e98dd3
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 14 17:22:22 2019 +0100
-
-    Nest: Update handling of temporary attributes
-    
-    The temporary atttributes are no longer removed by ea_do_prune(), but
-    they are undefined by store_tmp_attrs() protocol hooks. This fixes
-    several bugs where temporary attributes were removed when they should
-    not or not removed when they should be. The flag EAF_TEMP is no longer
-    needed and was removed.
-    
-    Update all protocol make_tmp_attrs() / store_tmp_attrs() hooks to use
-    helper functions and to handle unset attributes properly.
-    
-    Also fix some related bugs like improper handling of empty eattr list.
-
-commit 9aa77fccebc4d84b5e1496884cd124d09893041b
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 6 18:14:12 2019 +0100
-
-    OSPF: Improved handling of tmpattrs
-    
-    Keep track of whether OSPF tmpattrs are actually defined for given route
-    (using flags in rte->pflags). That makes them behave more like real
-    eattrs so a protocol can define just a subset of them or they can be
-    undefined by filters.
-    
-    Do not set ospf_metric2 for other than type 2 external OSPF routes and do
-    not set ospf_tag for non-external OSPF routes. That also fixes a bug
-    where internal/inter-area route propagated from one OSPF instance to
-    another is initiated with infinity ospf_metric2.
-    
-    Thanks to Yaroslav Dronskii for the bugreport.
-
-commit e1ac6f1e301416037725b631fd6529a805e65d51
-Author: Maria Matejka 
-Date:   Wed Mar 6 15:01:10 2019 +0100
-
-    Faster filters: documentation on what is happening there
-
-commit a68442e0563f5b756f9a7323cea44a25ce048738
-Author: Maria Matejka 
-Date:   Wed Feb 27 14:40:05 2019 +0100
-
-    Fixed link time optimizer check for FreeBSD
-
-commit b9deced219cfda2afe8604b24351ae10ac56f98b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 26 18:19:35 2019 +0100
-
-    NEWS and version update
-
-commit f249d0b84c840242a084966999a1d228c603b431
-Author: Maria Matejka 
-Date:   Tue Feb 26 16:44:24 2019 +0100
-
-    Filters: comparison of functions and filters caching
-
-commit 0d12aa48363802e751d3b9a4afd6eb090592d7a3
-Author: Maria Matejka 
-Date:   Tue Feb 26 16:11:40 2019 +0100
-
-    Build: No link time optimization when debug is enabled
-
-commit 2915e711f77d68dff756babd19af8da1677c4549
-Author: Maria Matejka 
-Date:   Mon Feb 25 23:28:36 2019 +0100
-
-    Custom number parser to speed up config parsing
-    
-    The glibc's generic parser is slow due to its versatility. Specialized
-    parsers for base-10 and base-16 are much faster and we don't use other
-    bases.
-
-commit 99911873a196975f5221aad89ae5eac42e1330e0
-Author: Maria Matejka 
-Date:   Mon Feb 25 17:19:47 2019 +0100
-
-    Conf: Lexer parses quoted strings in a more descriptive way
-
-commit 7c36eb3e8bd7d06f65dc7319d42b6abe782c5b89
-Author: Maria Matejka 
-Date:   Fri Feb 22 12:41:51 2019 +0100
-
-    Conf: Switch for faster (and slightly bigger) lexer
-
-commit 412614c700085ac964b07ff9405403eaf02fa5b4
-Author: Maria Matejka 
-Date:   Fri Feb 22 12:41:51 2019 +0100
-
-    Conf: Switch for faster (and slightly bigger) lexer
-
-commit 93af78d2d29ce11e20d46f60cfe1d3ef68052e5c
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 22 02:16:39 2019 +0100
-
-    Nest: Do not compare rte.flags during rte_update()
-    
-    Route flags are mosty internal state of rtable, they are not significant
-    to whether a route has changed. With the old code, all routes received as
-    a part of enhanced route refresh are always re-announced to other peers
-    due to change in REF_STALE.
-
-commit ad702bae0ce95ee1913327dd13a877e6bf9b320d
-Author: Maria Matejka 
-Date:   Wed Feb 20 22:14:28 2019 +0100
-
-    Enabled link time optimization.
-
-commit d1039926f5ee5a4e0442919474f16f3c93385cc9
-Author: Maria Matejka 
-Date:   Tue Feb 19 12:34:16 2019 +0100
-
-    Filter: Interpreter merged into the common m4 generator.
-    
-    The config-time partial evaluation of constant expressions in filters is nearby.
-
-commit 32793ab685b047b553d6f7afc23b3245e8850e4a
-Author: Maria Matejka 
-Date:   Mon Feb 18 14:57:15 2019 +0100
-
-    Filter: Fixed bugs in FI_CALL and FI_SWITCH
-
-commit d348a916f57cb0ac390718295624dd9a1cf2d32a
-Author: Maria Matejka 
-Date:   Mon Feb 18 14:56:49 2019 +0100
-
-    Test: Added -d flag to die directly after first error.
-
-commit d4bf74816faf9955297f93f8bb6973c1f600dbe2
-Author: Maria Matejka 
-Date:   Mon Feb 18 14:56:10 2019 +0100
-
-    GDB: Added more pretty printers for filters
-
-commit ea4f55e3dcd472bb6d18c030839597ffd9583462
-Author: Maria Matejka 
-Date:   Fri Feb 15 23:59:44 2019 +0100
-
-    Filter: More cleanup -- customized structures also in struct f_line_item
-
-commit 0b39b1cbb70c6f37a30a3130e1c308ddd0ba36de
-Author: Maria Matejka 
-Date:   Fri Feb 15 13:53:17 2019 +0100
-
-    Conf: Symbol implementation converted from void pointers to union
-    
-    ... and consted some declarations.
-
-commit 132529ce8908661fd2baa0758c335006fb039ef0
-Author: Maria Matejka 
-Date:   Wed Feb 13 12:25:30 2019 +0100
-
-    Filter: merged filter compare functions into common M4 file
-
-commit dd4d409551ae22d0a9bf4e3a6edc6fb9656911b9
-Author: Maria Matejka 
-Date:   Tue Feb 12 20:37:32 2019 +0100
-
-    Filter: Merged postfixify routine
-
-commit de12cd18fb213ee9cc872fec77b789f34cfd7cc4
-Author: Maria Matejka 
-Date:   Tue Feb 12 14:16:28 2019 +0100
-
-    Filter: Merged filter line item dumpers into common generated source
-
-commit b256f241459c51224a4bf428f4bc5dfa44882920
-Author: Maria Matejka 
-Date:   Tue Feb 12 11:35:41 2019 +0100
-
-    Filter: auto-generating enum-to-string
-
-commit 041608129ab15b5eab6fb607c45ddd2d748295b5
-Author: Maria Matejka 
-Date:   Tue Feb 12 11:31:18 2019 +0100
-
-    Filter generator: workaround for M4 claiming all the put-around code be on one line
-
-commit 5289304519918f62d099463123bf6c69a0dd497e
-Author: Maria Matejka 
-Date:   Mon Feb 11 17:12:48 2019 +0100
-
-    Filter data manipulation functions separated to their file
-
-commit 87bd7cd7b03f24c9d7c37a2a060ef553f26ead29
-Author: Maria Matejka 
-Date:   Mon Feb 11 16:44:14 2019 +0100
-
-    Filter: split the constructors to a separate file
-
-commit 75206f266f8534367b88401be463953b7d5dc770
-Author: Maria Matejka 
-Date:   Mon Feb 11 15:27:47 2019 +0100
-
-    Conf: Fixed makefiles
-
-commit 4f082dfa892e95f86ca8137410992a248110b6ef
-Author: Maria Matejka 
-Date:   Fri Feb 8 13:38:12 2019 +0100
-
-    Filter: merged filter instruction constructors, counting line size on instruction construct
-
-commit 0a793ebc6059f4354c62ccec62ef7c950988ca4a
-Author: Maria Matejka 
-Date:   Fri Feb 8 11:19:04 2019 +0100
-
-    Test: Fixed annoying warnings (and possible obscure bugs).
-
-commit 8bdb05edb2b4e1d2989ed98d67992047ad69443c
-Author: Maria Matejka 
-Date:   Thu Feb 7 21:25:38 2019 +0100
-
-    Filters: split the large filter.h file to smaller files.
-    
-    This should be revised, there are still ugly things in the filter API.
-
-commit c1e97169cd96ce39337e75cfdf6882b180341f09
-Author: Maria Matejka 
-Date:   Wed Feb 6 14:41:39 2019 +0100
-
-    Filter: M4 convertors polished a bit.
-
-commit c0e958e022aac79f69e6aca2652fdb6a529e68e2
-Author: Maria Matejka 
-Date:   Wed Jan 30 14:03:47 2019 +0100
-
-    Filter + Config: Fix bugs, tests and split symbols by type
-
-commit 713658798dfafabcd0a74f510c1639f6e3c9c820
-Author: Maria Matejka 
-Date:   Wed Jan 23 17:08:27 2019 +0100
-
-    GDB pretty printers: f_inst and f_val.
-
-commit 9b46748d5b50d1e8c242a571e80fe1f9f33aeb73
-Author: Maria Matejka 
-Date:   Mon Jan 21 09:17:54 2019 +0100
-
-    Filter: refactoring of instruction constructors
-
-commit 4c553c5a5b40c21ba67bd82455e79678b204cd07
-Author: Maria Matejka 
-Date:   Thu Dec 27 14:26:11 2018 +0100
-
-    Filter refactoring: dropped the recursion from the interpreter
-    
-    This is a major change of how the filters are interpreted. If everything
-    works how it should, it should not affect you unless you are hacking the
-    filters themselves.
-    
-    Anyway, this change should make a huge improvement in the filter performance
-    as previous benchmarks showed that our major problem lies in the
-    recursion itself.
-    
-    There are also some changes in nest and protocols, related mostly to
-    spreading const declarations throughout the whole BIRD and also to
-    refactored dynamic attribute definitions. The need of these came up
-    during the whole work and it is too difficult to split out these
-    not-so-related changes.
-
-commit 967b88d9388b3800efed45798542cd0b41f2b903
-Author: Maria Matejka 
-Date:   Thu Dec 20 16:25:54 2018 +0100
-
-    Filter refactoring: The instructions are converted to the switch body by M4
-
-commit 8436040735b84bb185311125bfc91375f740fd86
-Author: Maria Matejka 
-Date:   Thu Dec 20 16:07:59 2018 +0100
-
-    Filter refactoring: Drop the roa check specific f_inst
-
-commit ca2ee91a80aa87b7f18898c28e93ff22cebf73d7
-Author: Maria Matejka 
-Date:   Thu Dec 20 15:25:04 2018 +0100
-
-    Filter refactoring: The constant f_val is simply included inside the instruction
-    
-    With 32 bits, size of the args is 12 bytes, the f_val is 20 bytes.
-    With 64 bits, size of the args is 24 bytes, the f_val the same.
-    
-    This is not so nice on 32 bits, anyway the f_inst itself is
-    24 vs. 32 bytes and the overall size of filters must be 32k of
-    instructions to get to one megabyte of RAM eaten by f_inst.
-    
-    Therefore it seems to be improbable for common user to get into
-    problems with this change.
-
-commit 7f0ac73724f7383a2bcc229910414d339dbd2434
-Author: Maria Matejka 
-Date:   Thu Dec 20 14:55:40 2018 +0100
-
-    Filter refactoring: Changed arguments from separate unions to an array
-
-commit 224b77d4f786ea09bb2632476a89f0976baafd64
-Author: Maria Matejka 
-Date:   Thu Dec 20 14:34:35 2018 +0100
-
-    Filter refactoring: Converted condition to three-args instruction
-
-commit 8e8b1fe48cfcb92d54e15df5198e8cef9bc3dd8e
-Author: Maria Matejka 
-Date:   Thu Dec 20 14:29:47 2018 +0100
-
-    Filter refactoring: Some instructions eat up excessively much space.
-
-commit c577493908a9cda9008cc4043d0473b69fb2da66
-Author: Maria Matejka 
-Date:   Thu Dec 20 14:05:32 2018 +0100
-
-    Filter refactoring: Expanded the short instructions with common code.
-    
-    This will make the further changes more straightforward.
-
-commit a8740d6c09547dd9fe445b3deb5238305c0a5959
-Author: Maria Matejka 
-Date:   Tue Dec 18 17:10:05 2018 +0100
-
-    Filter refactoring: indentation fix
-
-commit fc8df41ec6cd5e6e3d53036a97dc7219dbbade5e
-Author: Maria Matejka 
-Date:   Mon Dec 17 15:00:01 2018 +0100
-
-    Filter refactoring: The values are now saved on a custom stack.
-    
-    This shall help with performance.
-
-commit 7afa1438866fa94454ba133608b6877171f71d37
-Author: Maria Matejka 
-Date:   Mon Dec 17 13:51:11 2018 +0100
-
-    Filter refactoring: Passing the resulting struct f_val as a pointer.
-    
-    This also drops the multiplexing of errors with the f_val itself
-    together with the T_RETURN f_val type flag.
-
-commit f62a369fb48be066560d6e8f0df82eef9c464ef0
-Author: Maria Matejka 
-Date:   Mon Dec 17 13:08:08 2018 +0100
-
-    Filter refactoring: Moved filter instruction definition to a separate file
-
-commit 25566c68109381178e0305f3e7e1464dea15b90b
-Author: Maria Matejka 
-Date:   Mon Dec 17 12:58:01 2018 +0100
-
-    Filter refactoring: Moved the bitfield bit position formula to route.h
-
-commit aca8263926df6156322e1a1157886f1cad2486b1
-Author: Maria Matejka 
-Date:   Mon Dec 17 12:48:33 2018 +0100
-
-    Filter refactoring: Moved the interpret macros inside the block
-
-commit 02dcbf343d94dd548605c5efbf724f89d81d7258
-Author: Maria Matejka 
-Date:   Mon Dec 17 12:45:21 2018 +0100
-
-    Configure: Don't check for implicit fallthrough unless when debugging.
-
-commit a946317fab9776754192f679f38cb7789050c52d
-Author: Maria Matejka 
-Date:   Tue Feb 27 15:39:39 2018 +0100
-
-    Filter: Converted static global variables to a filter_state struct.
-    
-    The static filter state was messy and blocked the planned parallel
-    execution of filters. Anyway, this will be also slower as the state
-    structure must be passed almost everywhere with us.
-
-commit ae294cc2d02ec02cbea11c275b64e7637ba0ea68
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 19 18:30:28 2019 +0100
-
-    HTML are no longer generated in srcdir
-
-commit 900fda4411a5346f808a575101b1260b5f73fa93
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 19 18:20:07 2019 +0100
-
-    Doc: Detect SP/OpenSP automatically
-
-commit 3a8ca7abbcf6452fa56d0c1c6ddcf7d5bd6876ed
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 19 16:26:09 2019 +0100
-
-    Nest: Prevent withdraws from propagation back to source protocol (for accepted mode)
-    
-    Update for one of previous patches, handles the the issue for
-    first-accepted mode of route propagation.
-
-commit bf8d7bba9ef3c6d95661f97dc71fa7a6b2cf0b87
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 17 01:54:01 2019 +0100
-
-    OSPF: Reset LSAs during area type change
-    
-    When area is reconfigured to a different type, we need to flush LSAs as
-    they may not be valid (e.g. NSSA-LSA for non-NSSA area). Also, when we
-    have have just one OSPF area and that changes type, we could restart OSPF
-    as there is no state to keep anyway. That solves issue with different
-    handling of external routes exported to OSPF based of main area type.
-
-commit 4a3f5b36173299d44e26dc18db4e5d103875f8c4
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 13 15:40:22 2019 +0100
-
-    OSPF: Basic support for DN-bit handling (RFC 4576)
-    
-    External LSAs originated by OSPF routers with VPN-PE behavior enabled are
-    marked by DN flag and they are ignored by other OSPF routers with VPN-PE
-    enabled.
-
-commit 1e958e52d3ef0c38e5fb5e673bcce95d1c28ac0e
-Author: Ondrej Zajicek (work) 
-Date:   Sat Feb 9 16:15:01 2019 +0100
-
-    OSPF: Do not originate Router-Information LSA
-    
-    As we do not have much usage for it yet.
-
-commit cd16538fc91778e31f8241f62ee47056f099c051
-Merge: 6e8fb6685 f9b97f1c6
-Author: Ondrej Zajicek (work) 
-Date:   Sat Feb 9 15:53:16 2019 +0100
-
-    Merge remote-tracking branch 'origin/mq-opt'
-
-commit 6e8fb66859a17b295cd9246264221a75cdbe6c55
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 5 19:00:43 2019 +0100
-
-    Nest: Improve export counter handling
-    
-    One of previous workarounds for phantom route avoidance breaks export
-    counters by expanding sending of spurious withdraws, which are send when
-    we are not sure whether we have advertised that routes in the past.
-    If not, then export counter is decreased, but it was not increased
-    before, so it overflows under zero.
-    
-    The patch fixes that by sendung spurious withdraws, but not counting them
-    on export counter. That may lead to error in the other direction, but that
-    happens only as a race condition (i.e., in normal operation filters
-    return proper values about old route export state).
-
-commit 52fdd1cb76be1e278799001fa57f56888062dd86
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 5 15:59:26 2019 +0100
-
-    Nest: Report preferred counters also when 'import keep filtered' is enabled
-    
-    Thanks to Michal Nowak for reporting the issue.
-
-commit a9b97cbcb74d918f3f606eb87a506712dccd2832
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 3 20:22:40 2019 +0100
-
-    OSPF: Send direct acknowledgements as unicast
-    
-    Direct acknowledgements should be send as unicast to a corresponding
-    neighbor. Only delayed acks should be send as multicast to all/designated
-    routers.
-
-commit 16605f2fdad730b8bb570e17192dc5f45cf15d3f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 3 17:31:27 2019 +0100
-
-    OSPF: Reject duplicate DBDES packets after dead interval
-    
-    Master may free last DBDES packet immediately. Slave must wait dead
-    interval before freeing last DBDES packet and then reject duplicate
-    DBDES packets with SeqNumberMismatch.
-
-commit 9c94583a3ded3b2792bd08d88beb10100a82d7b4
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 3 16:20:37 2019 +0100
-
-    OSPF: DD seqnum should be initialized only for first attempts
-    
-    After SeqNumberMismatch/BadLSReq, we should continue with the old
-    seqnum++. The old code tries to do that by n->adj, but it was set
-    nowhere.
-
-commit 267da8138d7f429941f2d829b44cf9bdd94a14d6
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 3 15:45:43 2019 +0100
-
-    OSPF: Reject DBDES packets with non-matching MTU
-    
-    As it is specified in RFC 2328. The old code just provided warning.
-
-commit e1c275d87b26f35c29ec8bfab0a3265810463574
-Author: Ondrej Zajicek (work) 
-Date:   Sat Feb 2 13:28:16 2019 +0100
-
-    Nest: Reestablish preferred counters
-
-commit f9b97f1c6282be398d2c2bb896dbb453f638f720
-Author: Maria Matejka 
-Date:   Fri Feb 1 14:09:01 2019 +0100
-
-    Perf: Added forgotten all-protocol options
-
-commit a8d0f2516c1ee0372edfc607832ae78632e404ca
-Author: Maria Matejka 
-Date:   Tue Jan 29 15:19:06 2019 +0100
-
-    Nest: FIB rehash values tweaked for better performance
-
-commit e85e37d91d0c5fca6cb7a3ea80fac582074c389d
-Author: Maria Matejka 
-Date:   Tue Jan 29 14:22:55 2019 +0100
-
-    Perf: Prune the table after every loop to have clean state.
-
-commit 7411b694c3ca9db4947f577f826b622ff23e570d
-Author: Maria Matejka 
-Date:   Thu Jan 31 15:03:43 2019 +0100
-
-    Perf: Write also BIRD version to have all the needed data in the logfile
-
-commit c65a9a05f9005d8b7369d07a3f0e99b2f205955b
-Author: Maria Matejka 
-Date:   Thu Jan 31 15:02:15 2019 +0100
-
-    Nest: Don't lookup net in table before filters are run.
-    
-    Using dummy net instead. This should help with performance on rejected
-    routes.
-
-commit e84c81b76ff6af88041b55c4ed25c208f78d4826
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 30 17:25:21 2019 +0100
-
-    Nest: Prevent withdraws from propagation back to source protocol
-    
-    The earlier fix loosen conditions for not running filters on old
-    route when deciding about route propagation to a protocol to avoid
-    issues with ghost routes in some race conditions.
-    
-    Unfortunately, the fix also caused back-propagation of withdraws. For
-    regular updates, back-propagation is prevented in import_control hooks,
-    but these are not called on withdraws. For them, import_control hooks
-    are called on old routes instead, changing (old, NULL) notification
-    to (NULL, NULL), which is ignored. By not calling export processing
-    in some cases, the withdraw is not ignored and is back-propagated.
-    
-    This patch fixes that by contract conditions so the earlier fix is not
-    applied to back-propagated updates.
-
-commit ee95f281f038684a4a2613a0c54af7389afe64da
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jan 26 21:02:35 2019 +0100
-
-    Doc: Add documentation for OSPF retransmit delay option
-    
-    Thanks to Igor Podlesny for notification.
-
-commit 1c730ee761b3c9b7ff12a0ad11c5b1768d1e4ada
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jan 26 20:44:37 2019 +0100
-
-    Doc: Remove doc for already removed option
-
-commit b8a3608aa59a67364f05dbd0d0332371a200f226
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jan 26 19:48:16 2019 +0100
-
-    BGP: Cleanup channels when going down
-    
-    When going up, uncleaned old channel state may trigger unexpected
-    conditions crashing bird.
-
-commit 5a50a98980a3554b66cedda6992ece4063a0e85a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 24 22:34:33 2019 +0100
-
-    OSPF: Opaque LSAs and Router Information LSA
-    
-    Add support for OSPFv2 Opaque LSAs (RFC 5250) and for Router Information
-    LSA (RFC 7770). The second part is here mainly for testing opaque LSAs.
-
-commit 954888859969587a288501b6801ab0ddb1f94133
-Author: Maria Matejka 
-Date:   Fri Dec 14 16:10:19 2018 +0100
-
-    Nest: Don't make tmp_attr before preexport is called
-
-commit 3e60932a289e55e212dec1cbaf3bca44b2bbaeb8
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jan 5 00:38:37 2019 +0100
-
-    NEWS and version update
-
-commit d7e8f00e7e35daff9bcf96aa455ebc6f932d0882
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 4 23:49:26 2019 +0100
-
-    Unix: Remove removed option from help
-    
-    Also includes minor cleanup of help.
-
-commit a1ee5eb2aae1f5e78909b36c979fd689ba319bbd
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jan 4 17:03:48 2019 +0100
-
-    BSD: Fix TCP-MD5 code on current FreeBSD kernels
-    
-    Current FreeBSD kernels require SA records for both directions.
-    
-    Thanks to Joseph Mulloy and Andrey V. Elsukov for reporting and
-    solving the issue.
-
-commit 4d9049dc1a57ccbf0ff9fa2642282a30e875e9e1
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jan 3 17:11:56 2019 +0100
-
-    Doc: README and INSTALL update
-    
-    Minor cleanups, updates and clarifications. Also removes (incomplete
-    and well-known) build steps from README, as they are better described
-    in INSTALL.
-
-commit 470740f97bfa61c3c5c79d6f2d92f2014a119031
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 2 16:01:21 2019 +0100
-
-    BGP: Better dispatch of incoming connections
-    
-    Since v2 we have multiple listening BGP sockets, and each BGP protocol
-    has associated one of them. Use listening socket that accepted the
-    incoming connection as a key in the dispatch process so only BGP
-    protocols assocaited with that listening socket can be selected.
-    This is necesary for proper dispatch when VRFs are used.
-
-commit e16b0aef31adf7000c22430adc3ceb9fc969ae14
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 2 15:57:14 2019 +0100
-
-    BGP: Postpone setting link_addr
-    
-    It may happen that the LLv6 address for given iface is not defined during
-    BGP start, so we postpone the check to the the session establishment.
-
-commit 4659b2ae45672868646900c81c963da221363b40
-Author: Arthur Gautier 
-Date:   Fri Dec 28 19:38:18 2018 +0100
-
-    KRT: Fix debug messages in netlink code
-
-commit c2d29dd197cbff6c143a570576c81bee20fc06eb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 18 19:16:23 2018 +0100
-
-    IO: Workaround for broken FreeBSD behavior
-    
-    FreeBSD silently changes TTL to 1 when MSG_DONTROUTE is used, even when
-    it is explicitly set to another value. That breaks TTL security sockets,
-    including BFD which always uses TTL 255. Bad FreeBSD!
-
-commit 82b742533bdbf977ec95997fc0011a47a672bcc8
-Author: Maria Matejka 
-Date:   Fri Oct 26 09:32:35 2018 +0200
-
-    Perf: Protocol to measure BIRD performance internally
-    
-    This protocol is highly experimental and nobody should use it in
-    production. Anyway it may help you getting some insight into what eats
-    so much time in filter processing.
-
-commit 78131eee64aeaf14cf418d6e5bf3f17ca602afb7
-Author: Maria Matejka 
-Date:   Fri Dec 14 15:50:44 2018 +0100
-
-    Debug: support for -gdwarf-4 is not available everywhere
-
-commit bda5863425854cc1c705c6f428e952bafd01d2a1
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 18 14:41:12 2018 +0100
-
-    Nest: Handle labels_orig correctly in attribute cache
-
-commit cea2e25f417866129ce7e78f1c078e993743173c
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 17 17:01:08 2018 +0100
-
-    OSPF: Fix wrong LSA collisions detection
-    
-    In some circumstances (old LSA flushed but not acknowledged and not
-    removed) origination of a new LSA may wrongly triggers LSA collision
-    code. The patch fixes that.
-    
-    Thanks to Asbjorn Mikkelsen for the bugreport and @mdelagueronniere
-    for the original patch.
-
-commit 1cab2b4a7cffb7ad604dcbd200267733ef079973
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 16 23:44:24 2018 +0100
-
-    BGP: Extend 'next hop keep' and 'next hop self' options
-    
-    Extend 'next hop keep' and 'next hop self' options to have boolean values
-    (enabled / disabled) and also values 'ibgp'/ 'ebgp' to restrict it to
-    routes received from IBGP / EBGP. This allows to have it enabled by
-    default in some cases, matches features of other implementations, and
-    allows to handle some strange cases like EBGP border router with 'next
-    hop self' also doing IBGP route reflecting.
-    
-    Change default of 'next hop keep' to enabled for route servers, and
-    'ibgp' for route reflectors.
-    
-    Update documentation for these options.
-
-commit 337165959c5a556d6556fb2acbba5e7f2b1c35a5
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 16 23:39:53 2018 +0100
-
-    Nest: Fix handling of ECMP next hop flags
-    
-    Flag field was not copied when next hop was cached.
-
-commit cfa6ff95695bcaff0c1046c63eb4a839c7a90cb7
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 16 22:48:13 2018 +0100
-
-    Nest: fix bug in previous patches related to channel reconfiguration
-    
-    The patch d506263d... blocked adding channel during reconfiguration,
-    that broke protocols which use the same functiona also during init.
-    This patch fixes that.
-
-commit cb311b441a6bbc02e88cd4a92e19044e2e95aac2
-Author: Ondrej Zajicek (work) 
-Date:   Sat Dec 15 14:01:57 2018 +0100
-
-    BGP: Better handling of non-matching AFI in nexthops
-
-commit 3a2a3c7325b34923c4ecc465700708dd13e6ad73
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 14 02:03:42 2018 +0100
-
-    Doc: Rename code documentation files back to Doc
-
-commit 1e0fccd1af54fdd4dbd79f6e7c5715478f83dea3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 14 01:53:32 2018 +0100
-
-    Doc: Move root of code documentation to doc dir
-    
-    It reduces clutter in root and also avoid collision with doc dir on
-    case-insensitive filesystems when name back to Doc.
-
-commit 532116e7e33d80a79e176f043defffbfc2b8d06e
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 12 17:36:54 2018 +0100
-
-    BGP: Do not prepend ASN in export from non-RS EBGP to RS EBGP
-    
-    When route is exported to regular EBGP, local ASN should be prepended to
-    AS_PATH. When route is propagated by route server (between RS-marked
-    EBGP peers), it should not change AS_PATH. Question is what to do in
-    other cases (from non-RS EBGP, IBGP, or locally originated to RS EBGP).
-    
-    In 1.6.x, we did not prepend ASN in non-RS EBGP or IBGP to RS EBGP, but
-    we prepended in local to RS EBGP.
-    
-    In 2.0.x, we changed that so only RS-EBGP to RS-EBGP is not prepended.
-    We received some negative responses (thanks to heisenbug and Alexander
-    Zubkov), we decided to change it back. One reason is that it is simple
-    to modify the AS_PATH by filters, but not possible to un-modify
-    changes done by BGP itself. Also, as 1.6.x behavior was not really
-    consistent, the final behavior is that ASN is never prepended when
-    exported to RS EBGP, like to IBGP.
-    
-    Note that i do not express an opinion about whether such configurations
-    are even reasonable.
-
-commit 6b5ad2066a8002bb0fd1dde58e6c0f1e43613aee
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 12 16:54:23 2018 +0100
-
-    Doc: Document log rotation feature
-
-commit 0f40405fc94fa253b5020e6603dc9ec7a02e13e7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 12 16:38:30 2018 +0100
-
-    Update RFC references
-    
-    Progdoc comments do not allow SGML tags
-
-commit 9e92f357becf405643fa8c536734cccf2ae26da2
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 12 16:04:15 2018 +0100
-
-    Doc: Document BGP import table option
-
-commit 67d8665af58a14bdc26963f8910e738886edb373
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 11 13:52:30 2018 +0100
-
-    Nest: Update statistics and rx-limit for Adj-RIB-In
-
-commit 682d3f7de0905ca2e853844734cce7ff65f7d77d
-Author: Ondrej Zajicek (work) 
-Date:   Thu Sep 27 22:57:55 2018 +0200
-
-    BGP: implement Adj-RIB-In
-    
-    The patch implements optional internal import table to a channel and
-    hooks it to BGP so it can be used as Adj-RIB-In. When enabled, all
-    received (pre-filtered) routes are stored there and import filters can
-    be re-evaluated without explicit route refresh. An import table can be
-    examined using e.g. 'show route import table bgp1.ipv4'.
-
-commit 01fd00f5ed9298ab5829403cd7a8a9ba22bcc96a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 11 18:43:58 2018 +0100
-
-    Doc: Fix typo in previous LinuxDoc change
-
-commit d506263da713673f95bc17aaedceebaaad03580d
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 11 17:57:14 2018 +0100
-
-    Nest: Forbid adding channels during reconfiguration
-    
-    When a new channel is found during reconfiguration, do force restart
-    of the protocol, like with any other un-reconfigurable change.
-    
-    The old behavior was that the new channel was added but remained in down
-    state, even if the protocol was up, so a manual protocol restart was
-    often necessary.
-    
-    In the future this should be improved such that a reconfigurable
-    channel addition (e.g. direct) is accepted and channel is started,
-    while an un-reconfigurable addition forces protocol restart.
-
-commit baeacdcfd3ce30b3fa89ebdd4e53c60c38c26c31
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 10 02:11:42 2018 +0100
-
-    OSPF: Fix reconfiguration of vlinks
-    
-    Fix crash during reconfiguration of OSPF config with vlinks. When vlink
-    is reconfigured, a generic iface-reconfiguration code is used, which in
-    one place supposes that it is running on a regular iface.
-    
-    Thanks to Cybertinus for a bugreport.
-
-commit 9a5ef043c11ad9fba00557dedcc0d7ae0d2794e9
-Merge: 0e4920632 265419a36
-Author: Maria Matejka 
-Date:   Thu Dec 6 09:55:34 2018 +0100
-
-    Merge branch 'mq-custom' into int-new
-
-commit 265419a3695b9a5c0a01d9fffc60f66fea8bee13
-Author: Maria Matejka 
-Date:   Wed Nov 21 20:37:11 2018 +0100
-
-    Custom route attributes
-    
-    For local route marking purposes, local custom route attributes may be
-    defined. These attributes are seamlessly stripped after export filter to
-    every real protocol like Kernel, BGP or OSPF, they however pass through
-    pipes. We currently allow at most 256 custom attributes.
-    
-    This should be much faster than currently used bgp communities
-    for marking routes.
-
-commit 0e4920632aa30dab4fbfb0530bce5a959e7a7675
-Author: Robert Scheck 
-Date:   Tue Dec 4 18:14:04 2018 +0100
-
-    Doc: Allow overriding $SGML_CATALOG_FILES using distribution specific paths
-
-commit f26bf60fb58bc975d510a9fff3adb76817ddb624
-Author: Robert Scheck 
-Date:   Tue Dec 4 18:11:42 2018 +0100
-
-    Doc: Add alternative path for SGML ISO entities 8879.1986 to $SGML_CATALOG_FILES
-    
-    The existing paths are valid for Debian, alternative paths are necessary
-    for Fedora and RHEL/CentOS.
-
-commit 3fda08e40532245ba69e14cdac0623a138b939f9
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 4 16:55:25 2018 +0100
-
-    Unix: Change debugging options
-    
-    The old behavior was that enabling debugging did many nontrivial changes
-    in BIRD behavior. The patch changes it that these changes are generally
-    independent. Compiling with --enable-debug now just enables compile-time
-    debug macros, but do not automatically activate debug mode (-d) nor local
-    mode (-l). Debug mode with output to file (-D) do not force foreground
-    mode (-f), therefore there is no need for backgroud option (-b), which is
-    removed. Also fixes a bug when the default log target in -D mode was
-    stderr instead of given debug file.
-
-commit 0642fb4d456fe12e1bbeb2ffc2149433f228c02e
-Author: Maria Matejka 
-Date:   Tue Nov 27 08:49:31 2018 +0100
-
-    Hash: mem_hash doesn't modify the memory, declared constant
-
-commit d73c4ac869048e60276c5e568450c7342bc0bc8a
-Author: Maria Matejka 
-Date:   Thu Nov 1 12:17:49 2018 +0100
-
-    Route table max hash size raised to 2^24.
-    
-    This is still OK for everybody to fit into RAM and also probably enough
-    to keep a little collision rate for full BGP table.
-
-commit 84661bf6da683d70e6e5e0e490d95abaf91b470b
-Author: Maria Matejka 
-Date:   Tue Oct 30 15:25:32 2018 +0100
-
-    Changed IPv4 hash function to simple multiplication.
-
-commit 14375237f6901a926d59cc54870cf44ed2a61d20
-Author: Maria Matejka 
-Date:   Wed Feb 14 13:42:53 2018 +0100
-
-    Terminology cleanup: The import_control hook is now called preexport.
-    
-    Once upon a time, far far away, there were the old Bird developers
-    discussing what direction of route flow shall be called import and
-    export. They decided to say "import to protocol" and "export to table"
-    when speaking about a protocol. When speaking about a table, they
-    spoke about "importing to table" and "exporting to protocol".
-    
-    The latter terminology was adopted in configuration, then also the
-    bird CLI in commit ea2ae6dd0 started to use it (in year 2009). Now
-    it's 2018 and the terminology is the latter. Import is from protocol to
-    table, export is from table to protocol. Anyway, there was still an
-    import_control hook which executed right before route export.
-    
-    One thing is funny. There are two commits in April 1999 with just two
-    minutes between them. The older announces the final settlement
-    on config terminology, the newer uses the other definition. Let's see
-    their commit messages as the git-log tool shows them (the newer first):
-    
-        commit 9e0e485e50ea74c4f1c5cb65bdfe6ce819c2cee2
-        Author: Martin Mares 
-        Date:   Mon Apr 5 20:17:59 1999 +0000
-    
-            Added some new protocol hooks (look at the comments for better explanation):
-    
-                    make_tmp_attrs          Convert inline attributes to ea_list
-                    store_tmp_attrs         Convert ea_list to inline attributes
-                    import_control          Pre-import decisions
-    
-        commit 5056c559c4eb253a4eee10cf35b694faec5265eb
-        Author: Martin Mares 
-        Date:   Mon Apr 5 20:15:31 1999 +0000
-    
-            Changed syntax of attaching filters to protocols to hopefully the final
-            version:
-    
-                    EXPORT     for outbound routes (i.e., those announced
-                                            by BIRD to the rest of the world).
-                    IMPORT     for inbound routes (i.e., those imported
-                                            by BIRD from the rest of the world).
-    
-            where  is one of:
-    
-                    ALL                     pass all routes
-                    NONE                    drop all routes
-                    FILTER            use named filter
-                    FILTER {  }     use explicitly defined filter
-    
-            For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes
-            the kernel protocol, so that you need to add EXPORT ALL to get the previous
-            configuration of kernel syncer (as usually, see doc/bird.conf.example for
-            a bird.conf example :)).
-    
-    Let's say RIP to this almost 19-years-old inconsistency. For now, if you
-    import a route, it is always from protocol to table. If you export a
-    route, it is always from table to protocol.
-    
-    And they lived happily ever after.
-
-commit e2ae08694e45b2a127c9d741e41dee4b14c2964d
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 28 16:43:17 2018 +0100
-
-    Nest: Do not hard-reset interface when preferred address is changed
-    
-    Modify protocols to use preferred address change notification instead on
-    depending on hard-reset of interfaces in that case, and remove hard-reset
-    in that case. This avoids issue when e.g. IPv6 protocol restarts
-    interface when IPv4 preferred address changed (as hard-reset is
-    unavoidable and common for whole iface).
-    
-    The patch also fixes a bug when removing last address does not send
-    preferred address change notification.
-
-commit 66934aceff0e5299719177782bcbf151f8030591
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 21 16:30:22 2018 +0100
-
-    Autoconf: Minor cleanup
-
-commit fc1b933304c325775169d5241ce1ac5ae3266680
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 21 16:00:22 2018 +0100
-
-    MRT documentation
-
-commit 863ecfc78538657e51f1ec67441aec32261aa405
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 20 17:38:19 2018 +0100
-
-    The MRT protocol
-    
-    The new MRT protocol is responsible for periodic RIB table dumps in the
-    MRT format (RFC 6396). Also the existing code for BGP4MP MRT dumps is
-    refactored and splitted between BGP to MRT protocols, will be more
-    integrated into MRT in the future.
-    
-    Example:
-    
-    protocol mrt {
-            table "*";
-            filename "%N_%F_%T.mrt";
-            period 60;
-    }
-    
-    It is partially based on the old MRT code from Pavel Tvrdik.
-
-commit 6712e77271fb3cb4a3c48cd7b027b39c5cea00a2
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 14 17:16:05 2018 +0100
-
-    Unix: Implement log file size limit / log rotation
-    
-    Allow to specify log file size limit and ensure that log file is rotated
-    to secondary name to avoid exceeding of log size limit.
-    
-    The patch also fixes a bug related to keeping old fds open after
-    reconfiguration and using old fds after 'configure undo'.
-
-commit c68ba7d093e1fcf01fceb341438fc5dc95f93ac5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 13 18:13:11 2018 +0100
-
-    Unix: Refactor tracked files
-    
-    We need access to resource in order to free it.
-
-commit d0b4597842ba1f65e5280529fca243ce5b5043fa
-Author: Ondrej Zajicek (work) 
-Date:   Sun Nov 18 01:22:09 2018 +0100
-
-    Configure: Use standard --runstatedir option
-    
-    Newer Autoconf defines --runstatedir option for setting directory for
-    run-time variable data. Use it instead our old --with-runtimedir.
-
-commit f2d8e6801e88a84b1e57da72d078d7569598a5f5
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 5 22:03:21 2018 +0100
-
-    Filter: Make ifname attribute modifiable
-    
-    Allow to change an interface associated with a route by setting
-    ifname attribute. It will also change the route to a direct one.
-
-commit 69b2f63d9a477ab5d083773e16ca15ed2e570144
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 5 13:56:59 2018 +0100
-
-    Nest: Fix crash in rta_show() for RPKI and Babel routes
-    
-    Some new route source values did not have associated string
-    in rta_show(), which might caused crash in some cases.
-
-commit e19d08055a4614f03e51ee72617be10946ce7919
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 26 19:11:33 2018 +0200
-
-    BGP: Fix VRF for listening socket
-    
-    Listening socket should be bound to specified interface and VRF.
-    
-    Thanks to Alexander Zubkov for the bugreport.
-
-commit 0ac9cb2c1f6592290e025f61ccd0fef0dc09de46
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 25 17:22:37 2018 +0200
-
-    OSPF: Fix some trace messages
-    
-    Missing argument in MTU change trace message can crash bird when MTU
-    change happens and trace messages are active.
-    
-    Thanks to Alexander Velkov for the bugreport.
-
-commit df50598f1c285a5e2820b7427998c6ebf86bbbec
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 25 12:39:13 2018 +0200
-
-    Lib: Force output type in ip4_addr constructor
-    
-    Fixes type issue when u64 is pushed into it.
-
-commit 83715aa82966020100afa35f15d1ca56cadf6d10
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 25 11:26:58 2018 +0200
-
-    Filter: Add support for VPN_RD sets
-
-commit 41b83e52f7f0a0de88c220aab88a4dd31f05fce0
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 25 11:23:15 2018 +0200
-
-    Filter: Fix minor bug in accessing bgp_path
-    
-    Not relevant for regular BGP paths, just for BGP paths added by filters
-    to e.g. static routes.
-
-commit 01dd78f9e924cc6d7511da1ec32c8f36d357db7a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 11 15:03:09 2018 +0200
-
-    Fix installation with --disable-client
-    
-    The old check assumed that @CLIENT@ does not contain
-    birdc, which is not true in 2.0 branc.
-    
-    Thanks to Thomas Petazzoni for the bugreport and original patch.
-
-commit addb1bcd86885dcee559a61eb18998ae6a38b2ab
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 11 14:39:13 2018 +0200
-
-    Nest: Fix 'show interfaces summary' command
-    
-    The command showed interfaces that were removed / in shutdown.
-
-commit 961671c0f51693aff34bf3adf5319b35275a86d3
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 1 15:55:23 2018 +0200
-
-    Lib: Add and use ev_new_init()
-
-commit 0db7a1d69c80b1089f10a268ceacb059db41ced8
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 1 15:35:43 2018 +0200
-
-    BGP: Fix bug in show protocol related to LLGR
-    
-    When channel is not active due to not be negotiated during sessino
-    establishment, the LLGR timer is not allocated, so we should not show it.
-
-commit d4cebc6bbe2a55bd344383fcc27255a12d686195
-Author: Maria Matejka 
-Date:   Tue Sep 18 14:21:11 2018 +0200
-
-    No more warnings ...
-    
-    no more warnings
-    No more warnings over me
-    And while it is being compiled all the log is black and white
-    Release BIRD now and then let it flee
-    
-    (use the melody of well-known Oh Freedom!)
-
-commit d50b0bc437f5ffd0d2c9f843217f8ed098c8d675
-Author: Maria Matejka 
-Date:   Tue Sep 11 16:55:41 2018 +0200
-
-    Conf: Show the line:char position where the syntax error happens
-
-commit 89b0af3978caf15e1478922a8d9d4f7e38145a61
-Author: Maria Matejka 
-Date:   Tue Aug 28 16:45:50 2018 +0200
-
-    Main: Add -b to force background even in debug mode
-
-commit a043f2d79488cdfbc4d97ac0bad4926d29bf9a82
-Author: Ondrej Zajicek (work) 
-Date:   Fri Aug 24 18:54:27 2018 +0200
-
-    Doc: Fix description of 'description'
-    
-    Thanks to Clemens Schrimpe for the bugreport.
-
-commit 64c5ad58d276d8a0463aa9ad2b34f75b7d1f4108
-Author: Maria Matejka 
-Date:   Wed Aug 22 14:58:53 2018 +0200
-
-    Lib: recursive printf
-    
-    Use like this:
-    
-    void func(const char *msg, va_list args) {
-      ...
-      bvsnprintf(buf, len, "file %s, line %d: %V (foo %d, bar %d)", file, line, msg, &args, foo, bar);
-      ...
-    }
-
-commit 765f400f6b7ac054ddb4fcc4f5bec58f94d1bdd4
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 21 15:24:55 2018 +0200
-
-    DOC: Remove pipe mode reference
-    
-    Pipe mode was removed in 2.0, remove reference to it in the documentation.
-    
-    Thanks to Piotr Wydrych for the bugreport.
-
-commit 7ffc0a6534fb66ad27d22984e25bd0789f4404b6
-Author: Maria Matejka 
-Date:   Tue Aug 14 14:36:44 2018 +0200
-
-    Bison: A bit more verbose error messages in config.
-
-commit 78ca6ea8f0b8ab312b1e0ef56629a18e3efbce42
-Author: Maria Matejka 
-Date:   Tue Jul 17 15:39:06 2018 +0200
-
-    Make: Add option to force colors in compiler output
-
-commit 86b9e8e39a0b42407c95921ca8262b0a75cad5f2
-Author: Maria Matejka 
-Date:   Tue Jul 17 15:30:59 2018 +0200
-
-    M4: generate synchronization lines
-    
-    This also includes Bison version check. Versions before 3.0 don't
-    support them in a reliable way and we don't promise to work with
-    versions older than 2.4.
-
-commit 1279a83103262950ab99e8a6fe3c6cc2da8d42a8
-Author: Pavel Tvrdik 
-Date:   Mon Nov 14 14:53:10 2016 +0100
-
-    sysdep/unix/main.c: Remove trailing spaces
-
-commit d33cf3f4c3a92f895e8b52fc19ed8a88f350a32b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 7 14:46:24 2018 +0200
-
-    Doc: Fix notes related to obsolete option
-    
-    Thanks to Julien Dessaux for the report.
-
-commit 5bd734317c05008a66eefaa14fc98a6d533cf9ef
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 31 18:40:38 2018 +0200
-
-    BGP: Long-lived graceful restart
-    
-    The patch implements long-lived graceful restart for BGP, namely
-    draft-uttaro-idr-bgp-persistence-03.
-
-commit 318acb0f6cb77a32aad5d7f79e06f3c5065ac702
-Author: Ondrej Zajicek (work) 
-Date:   Sat Jul 28 16:54:06 2018 +0200
-
-    BSD: Use MSG_DONTROUTE for unicast packets on FreeBSD
-    
-    BSD systems cannot use SO_DONTROUTE, because it does not work properly
-    with multicast packets (perhaps it tries to find iface based on multicast
-    group address). But we can use MSG_DONTROUTE sendmsg() flag for unicast
-    packets. Works on FreeBSD, is ignored on OpenBSD and is broken on NetBSD
-    (i guess due to integrated routing table and ARP table).
-
-commit 0ed3129f6b0a80afea877340d940e45f1a5d3000
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 19 20:54:10 2018 +0200
-
-    RAdv: Fix crash during prefix change
-    
-    Thanks to Julian Schuh for the bugreport.
-
-commit 8bd718b3ba34cee95a5443f3d20d6f16c2d4c946
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jul 19 20:48:13 2018 +0200
-
-    OSPF: Fix crash during route removal
-    
-    The bug was introduced by an earler patch which removed additional eattr
-    argument to rt_notify hook.
-
-commit 092c4930277c0f0f0dcb0c4013ff642314f90842
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jul 6 02:04:45 2018 +0200
-
-    Nest: Fix race condition during reconfiguration, part 2
-    
-    If export filter is changed during reconfiguration and a route disappears
-    between reconfiguration and refeed (e.g., if the route is a static route
-    also removed during the reconfiguration), the route is not withdrawn.
-    
-    The issue was fixed for regular channels by an earlier patch. This patch
-    fixes the issue for channels in RA_ACCEPTED mode (first-pass-the-filter),
-    used by BGP with 'secondary' option.
-
-commit 7b9b0c0a0087def6a3fc11824a891be5940a257b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 3 18:08:35 2018 +0200
-
-    Cleanup some warnings
-
-commit a81e18da254ddd7cccff82feab61aa943a277805
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 3 17:52:51 2018 +0200
-
-    Nest: Fix race condition during reconfiguration
-    
-    If export filter is changed during reconfiguration and a route disappears
-    between reconfiguration and refeed (e.g., if the route is a static route
-    also removed during the reconfiguration), the route is not withdrawn.
-    The patch fixes that by adding tx reconfiguration timestamp.
-
-commit 8e86ffce8251f4e48f61b6d8e89966d037ef8e59
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jul 1 01:03:16 2018 +0200
-
-    BGP: Use implicit-NULL label when announcing MPLS routes with local next-hop
-    
-    We currently cannot assing local labels, but we can still be LSP egress
-    router. Therefore when we announce labeled route with local next-hop, we
-    should announce implicit-NULL label instead of rejecting it completely.
-
-commit 93c1defdb03729ae8b41752d2155dff65964df5b
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jul 1 00:43:24 2018 +0200
-
-    BGP: Fix parsing of MPLS withdrawals
-    
-    RFC 3107 was bit vague with regard to labeled withdrawals, RFC 8277
-    clarified that. The old code was incompatible with some implementations,
-    namely with Juniper.
-    
-    Thanks to Vadim Fedorenko for the original patch.
-
-commit daf113ac66fb9dc83a904ce9bcc68e90830624d0
-Author: Maria Matejka 
-Date:   Fri Jun 29 17:23:27 2018 +0200
-
-    BGP: Attribute set function merged with its common counterpart
-
-commit d8e816c150ebad08ff75ef34eb459a67a09a34d0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 27 17:08:59 2018 +0200
-
-    BSD: Fix of the previous commit
-
-commit 586c1800c447ff099d34889b23647c4733876d9b
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 27 16:51:53 2018 +0200
-
-    Nest: Neighbor cache cleanups
-    
-    Simplify neighbor cache code, fix several minor bugs, and improve
-    handling of ONLINK flag.
-
-commit 45f28d85818f79790968725a945063228989bae7
-Author: Maria Matejka 
-Date:   Mon Apr 23 15:59:02 2018 +0200
-
-    Autotools: updated config.guess and config.sub
-    
-    Updated to version 63b4ce2e8c28aee6a32133e400436e4ca885215a
-    from git://git.savannah.gnu.org/config.git
-    
-    Previous version was 93b5037172b15ad28952481933517f1ba93d125b
-
-commit da16b33ab98602628d66ed4f434dc6fa76f338c6
-Author: Maria Matejka 
-Date:   Mon Apr 23 15:54:20 2018 +0200
-
-    Android: check for extra libs needed for build
-
-commit c2fc4c10ac81b8815c1434aa2b0945aa937df4fa
-Author: Maria Matejka 
-Date:   Mon Apr 23 11:29:13 2018 +0200
-
-    Doc: renamed progdoc files Doc -> progdoc to fix collision with doc/ folder on case-insensitive filesystems
-
-commit f851f0d7e30cbd1e2ba20a5bf06a584acc136828
-Author: Maria Matejka 
-Date:   Tue Jun 26 14:29:03 2018 +0200
-
-    Config: Dropping CF_ADDTO.
-
-commit 1771f70d7473b8c8e0c6bd47d5c35cc5fbe7eb19
-Author: Maria Matejka 
-Date:   Tue Jun 19 16:16:08 2018 +0200
-
-    Filter: fixed eattr cached pointer
-    
-    Use ACCESS_RTE to guard **f_rte, use ACCESS_EATTRS to guard **f_eattrs.
-    Use f_rta_cow() before writing to rta or eattrs, use f_rte_cow() before
-    writing preference (stored in rte).
-    
-    Do not access eattrs indirectly through (*f_rte)->attrs->eattrs, it is
-    way too slow. The cached pointer is faster.
-
-commit 1ef23f05ee00394e6a2748f658b73c20d3ff7c45
-Merge: 13c0be19d caa9d03d6
-Author: Maria Matejka 
-Date:   Tue Jun 19 14:32:16 2018 +0200
-
-    Merge branch 'int-new' into HEAD
-
-commit caa9d03d65ce827ce536d54b26988e70767e032f
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 13 15:22:29 2018 +0200
-
-    Babel: Fix handling of missing IPv4 next hops
-    
-    In case of missing IPv4 next hop, we should skip such routes
-    on transmit and ignore such routes on receive.
-    
-    Thanks to Julian Schuh for the bugreport and Toke Hoiland-Jorgensen
-    for the original patch.
-
-commit 9c9050ff12c52762708dadda78a05108a5b533b2
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 13 14:47:37 2018 +0200
-
-    BGP: Handle missing NEXT_HOP attribute properly
-    
-    RFC 7606 specifies handle-as-withdraw instead of session reset.
-
-commit 13c0be19d3d2acc9c1636bbab9222aabdf27d7ac
-Author: Maria Matejka 
-Date:   Tue May 29 12:08:12 2018 +0200
-
-    Nest: Removing separate tmpa from route propagation
-    
-    This is a fundamental change of an original (1999) concept of route
-    processing inside BIRD. During import/export, there was a temporary
-    ea_list created which was to be used instead of the another one inside
-    the route itself.
-    
-    This led to some confusion, quirks, and strange filter code that handled
-    extended route attributes. Dropping it now.
-    
-    The protocol interface has changed in an uniform way -- the
-    `struct ea_list *attrs` argument has been removed from store_tmp_attrs(),
-    import_control(), rt_notify() and get_route_info().
-
-commit 18b4f2082c30586890596988086fbc3e15336526
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 29 14:23:14 2018 +0200
-
-    OSPF: Fix invalid NSSA RFC references
-
-commit ee7e2ffd265fd76dbc8c94d9c2d48da54c27ff76
-Author: Maria Matejka 
-Date:   Mon May 7 14:47:00 2018 +0200
-
-    Protocol: Introducing an enum protocol_class
-    
-    This supersedes the EAP_* constants.
-
-commit c3becfe1934da2dc2c0881a71eac8a26f810791f
-Author: Maria Matejka 
-Date:   Wed May 2 12:34:35 2018 +0200
-
-    Filter: macro for recursive interpretation of instructions
-
-commit 0ec6b5ecd37529d57079e13748c4ecbd336332c1
-Author: Maria Matejka 
-Date:   Mon Apr 30 16:06:53 2018 +0200
-
-    Filter: Simple type checks converted to ARG() macro
-
-commit 478f9babed361f8df8a9c944f20bcbe116dc30aa
-Author: Maria Matejka 
-Date:   Mon Apr 30 13:29:05 2018 +0200
-
-    Filter: Removing the third argument hack
-    
-    Just to make the code a bit more clean and easier to maintain.
-
-commit cff9e937fd0ed42b88be1deb5e1aa9fe301caabd
-Author: Maria Matejka 
-Date:   Mon Apr 30 12:49:22 2018 +0200
-
-    Filter: instruction names
-
-commit 31d6939cde071ab04d1da6b3ff6fb6cd579e164a
-Author: Maria Matejka 
-Date:   Mon Apr 30 12:39:32 2018 +0200
-
-    Filter: Instruction codes linearized
-
-commit 906092534ba8479ca76723b7dd7ee233f5a70d1e
-Author: Maria Matejka 
-Date:   Mon Apr 30 12:20:04 2018 +0200
-
-    Macro: Added a bunch of dirty C preprocessor tricks
-    
-    Included are Makefile implicit rules to show the preprocessed source.
-    When debugging something around this, it may be handy.
-
-commit feae132e0f9bdc62d2b90bf676d12241af8e794c
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 24 14:51:05 2018 +0200
-
-    Do not initialize route metrics in import_control hook
-    
-    During route export, the receiving protocol often initialized route
-    metrics to default value in its import_control hook before export filter
-    was executed. This is inconsistent with the expectation that an export
-    filter would process the same route as one in the routing table and it
-    breaks setting these metrics before (e.g. for static routes directly in
-    static protocol).
-    
-    The patch removes the initialization of route metrics in import_control
-    hook, the default values are already handled in rt_notify hook called
-    after export filters.
-    
-    The patch also changed the behavior of OSPF to keep metrics when a route
-    is reannounced between OSPF instances (to be consistent with other
-    protocols) and the behavior when both ospf_metric1 and ospf_metric2
-    are specified (to have more expected behavior).
-
-commit b24b781117179f301116837f0a39468343e4805b
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 16 11:19:29 2018 +0200
-
-    Filter: Add support for src filter op to access SADR source prefix
-    
-    The patch allows to use 'net.src' to access SADR source prefix
-    from filters.
-    
-    Thanks to Toke Hoiland-Jorgensen for the original patch for srclen.
-
-commit eaf63d314d50cba5b2cfa8f18de64a91d3131b94
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 3 17:07:39 2018 +0200
-
-    Better initialization of random generator
-    
-    Use full time precision to initialize random generator. The old
-    code was prone to initialize it to the same values in specific
-    circumstances (boot without RTC, multiple VMs starting at once).
-
-commit 70fab17837dbb4c5848681e4c6b9b90891891130
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 3 16:55:11 2018 +0200
-
-    Babel: Add option to randomize router ID
-    
-    When a Babel node restarts, it loses its sequence number, which can cause
-    its routes to be rejected by peers until the state is cleared out by other
-    nodes in the network (which can take on the order of minutes).
-    
-    There are two ways to fix this: Having stable storage to keep the sequence
-    number across restarts, or picking a different router ID each time.
-    
-    This implements the latter, by introducing a new option that will cause
-    BIRD to randomize a high 32 bits of router ID every time it starts up.
-    This avoids the problem at the cost of not having stable router IDs in
-    the network.
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit 23b079043bea5899b49a750c4616aff5b332c50d
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 3 16:02:29 2018 +0200
-
-    Babel: Fix type of route entry router ID
-    
-    The router ID being assigned to routes was a uint, which discards the
-    upper 32 bits. This also has the nice side effect of echoing the wrong
-    router ID back to other routers.
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit 29958745c8f58cffd24e1793702524ce84545e5a
-Author: Maria Matejka 
-Date:   Thu May 3 11:14:49 2018 +0200
-
-    Makefile: Only set git version if BIRD is build from its repository.
-    
-    Thanks to Toke Høiland-Jørgensen  for reporting this bug.
-
-commit 823ad12191e66e243dd088a81c66e4a518563e40
-Author: Maria Matejka 
-Date:   Fri Apr 27 14:38:41 2018 +0200
-
-    Filter: Added missing instruction comparators.
-    
-    These instructions caused SIGABORTs on reconfiguration.
-
-commit 4727d1db9d83a8f1025481cbcc06a7e4c8ec9f33
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 25 15:50:57 2018 +0200
-
-    OSPF: Support of authentication trailer for OSPFv3
-    
-    Implement RFC 7166, crypthographic authentication for OSPFv3
-    analogous to authentication used for OSPFv2.
-
-commit f3a8cf050e6181e158dcde2fe885d7bf220eedc3
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 12 16:55:56 2018 +0200
-
-    BGP: Fix extended next hop handling
-    
-    For IPv4 with extended next hop, we use MP-BGP format and therefore no
-    independent NEXT_HOP attribute.
-    
-    Thanks to Arvin Gan for the bugreport.
-
-commit c408d807a374b521dc66c434ca0dc5987820646f
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 3 17:31:45 2018 +0200
-
-    Doc: Documentation for BGP disable after cease option
-
-commit a63d20aa872364873d0fbfa03d1c3c6d9a1889eb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 3 16:53:58 2018 +0200
-
-    Doc: Documentation for BGP extended next hop feature
-    
-    Thanks to Arvin Gan for the bugreport.
-
-commit 157f6c2aaddbf8668e33ed6efcd874a6677fa005
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 24 01:53:03 2018 +0100
-
-    Doc: Remove some superfluous slashes
-
-commit 6807320a0f732829c475ab230857147bf4f0cc7c
-Author: Ondrej Filip 
-Date:   Fri Mar 23 17:24:58 2018 +0100
-
-    Autoconf replaced by autoreconf
-
-commit 4d3d34f5997128824c376a097eee60954c3611cf
-Author: Ondrej Filip 
-Date:   Thu Mar 22 13:30:10 2018 +0100
-
-    Date added.
-
-commit 966602602a0f24942bee3ab0492bbb9197e71aa1
-Merge: 440628126 4841804ff
-Author: Ondrej Filip 
-Date:   Thu Mar 22 13:25:58 2018 +0100
-
-    Merge branch 'int-new' of ssh://gitlab.labs.nic.cz/labs/bird into int-new
-
-commit 4841804fffd8bf669b2445ec3328b6a49eed31f9
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 21 15:17:56 2018 +0100
-
-    NEWS and version update
-
-commit a177e4dd04b29dc364d2c5505fe2c483981c6498
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 21 16:32:51 2018 +0100
-
-    Doc: Minor update
-
-commit 3b522a1e5cd034196cd0f5c0eab4d9e87f0f2a8a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 20 19:28:26 2018 +0100
-
-    Doc: Redesign default config file
-    
-    The old one does not work with 2.0.x.
-
-commit 89ac4dd3c433cae865d5339efe5e682d4506044d
-Merge: bcb4af81f 8a871e890
-Author: Ondrej Zajicek (work) 
-Date:   Mon Mar 19 13:29:39 2018 +0100
-
-    Merge remote-tracking branch 'birdlab-tmp/int-new' into int-new
-
-commit bcb4af81fc8ea0acf7c2fa5a6854cd3c23d92d9f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 18 13:48:47 2018 +0100
-
-    Nest: Fix table reconfiguration when nettype changes
-    
-    Thanks to Toke Hoiland-Jorgensen for the bugreport.
-
-commit 364d5823eac85178361bad188d89949b7e0d321c
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 18 02:56:51 2018 +0100
-
-    Nest: SADR support for Direct
-
-commit 159d619caf2311b62dc0d876f22c42b5d23e86c0
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 17 22:25:06 2018 +0100
-
-    Doc: SADR documentation
-
-commit 7a8ae228f907400a33375c07b31f3e42a89834e7
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 17 17:14:02 2018 +0100
-
-    Doc: Update BGP documentation
-    
-    Thanks to Joshua McQuistan for the bugreport.
-
-commit 8a871e890a7198f7cbaff5c75033160ae3ad68f3
-Merge: e95705f00 e8bc64e30
-Author: Maria Matejka 
-Date:   Wed Mar 14 12:57:16 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit e8bc64e308586b6502090da2775af84cd760ed0d
-Author: Maria Matejka 
-Date:   Wed Feb 28 16:57:50 2018 +0100
-
-    Filter: make bgpmask literals real constructors
-    
-    The bgpmask literals can include expressions. This is OK but they have
-    to be interpreted as soon as the code is run, not in the time the code
-    is used as value.
-    
-    This led to strange behavior like rewriting bgpmasks when they shan't
-    be rewritten:
-    
-            function mask_generator(int as)
-            {
-                    return [= * as * =];
-            }
-    
-            function another()
-            bgpmask m1;
-            bgpmask m2;
-            {
-                    m1 = mask_generator(10);
-                    m2 = mask_generator(20);
-                    if (m1 == m2) {
-                            print("strange"); # this would happen
-                    }
-            }
-    
-    Moreover, sending this to CLI would cause stack overflow and knock down the
-    whole BIRD, as soon as there is at least one route to execute the given
-    filter on.
-    
-            show route filter bgpmask mmm; bgppath ppp; { ppp = +empty+; mmm = [= (ppp ~ mmm) =]; print(mmm); accept; }
-    
-    The magic match operator (~) inside the bgpmask literal would try to
-    resolve mmm, which points to the same bgpmask so it would resolve
-    itself, call the magic match operator and vice versa.
-    
-    After this patch, the bgpmask literal will get resolved as soon as it's
-    assigned to mmm and it also will return a type error as bool is not
-    convertible to ASN in BIRD.
-
-commit e95705f00c9e297cd6dde1e8fa60bee4a4d539f2
-Merge: d1ba927b3 74bfd2f97
-Author: Maria Matejka 
-Date:   Tue Mar 13 17:02:49 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit 74bfd2f97c0a95b6fb73a67d9334e54a90695c58
-Author: Maria Matejka 
-Date:   Tue Mar 13 12:08:37 2018 +0100
-
-    Filters: Removed FI_COMMA, not used for 19 years.
-    
-    This instruction was removed in the commit linked below
-    and never used ever again. Rest in peace.
-    
-    commit 84c7e1943f0dbf896b1dd8d02a21120aa00463f4
-    Author: Pavel Machek 
-    Date:   Tue Mar 2 19:49:28 1999 +0000
-
-commit d1ba927b369c91ddb2143b686ca4c1be53e46e64
-Merge: f2f5a7d94 7c601e6b7
-Author: Maria Matejka 
-Date:   Tue Mar 13 16:51:04 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit 7c601e6b7b7696b24ce5f5715fa14dbb91c71d6e
-Author: Maria Matejka 
-Date:   Wed Nov 29 11:38:01 2017 +0100
-
-    Filter: recursion to loop
-    
-    It was supposed to do tail-recursion in interpret() but it didn't
-    compile as such. Converting it to loop makes a significant filter
-    performance improvement for flat filters.
-
-commit 5a14df395053f4094a1e3ebea98e3487cbfc0e63
-Author: Maria Matejka 
-Date:   Thu Oct 19 12:39:44 2017 +0200
-
-    Filter: Instruction codes named as enum
-    
-    The two-letter instructions were quite messy but they could be easily
-    read from memory dumps. Now GDB (since 2012) supports pretty printing
-    enum values and GCC checks the switch construction for missing enum
-    values so we are converting the nice two-byte values to enums.
-    
-    Anyway, the enum still keeps the old two-byte values to be able to read
-    the instruction codes even without GDB from plain memory dump.
-
-commit f2f5a7d9455f938fb14e31315a879c3be2c5d28a
-Author: Maria Matejka 
-Date:   Tue Mar 6 16:04:56 2018 +0100
-
-    Filter: the test conf checks also a bit of BGP args
-    
-    Uncommented an old test.
-
-commit 0575c7db723523701d5582e2a9058cb5c46951c9
-Author: Maria Matejka 
-Date:   Tue Mar 6 16:03:35 2018 +0100
-
-    Config: Dropped the ipv4:netmask4 syntax for IPv4 prefixes.
-
-commit d0f47327f81a278d6adb3d0a6c235ea715798d01
-Merge: 1561ee799 2d6d4b805
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 7 17:41:49 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit 2d6d4b80539be13aa53c6751fb33689b263e4010
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 7 17:35:24 2018 +0100
-
-    Babel: Fix build with restricted protocol set
-    
-    All keywords used in Babel config have to be declared locally.
-    
-    Thanks to Leo Vandewoestijne for the bugreport.
-
-commit 44062812600bd29f8edf30ebc871ff218069c5a2
-Merge: 6f46465af 1561ee799
-Author: Ondrej Filip 
-Date:   Tue Feb 27 06:08:03 2018 +0100
-
-    Merge branch 'int-new' of ssh://gitlab.labs.nic.cz/labs/bird into int-new
-
-commit 1561ee799cfe79d208ce9588e487da4b62a88dad
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 13 19:52:22 2018 +0100
-
-    Handle properly enums for extended attributes
-
-commit d5144ea9bf01f0b19cba40ab06aa05a11d70aa3e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 13 17:00:24 2018 +0100
-
-    Add cscope Makefile target
-    
-    For those who prefer cscope to etags
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit 5ce7adfcf96787878d60668cf33acf7349a69c0b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 13 16:42:03 2018 +0100
-
-    Babel: Fix accidental bitwise or assignment
-    
-    Fix an accidental bitwise or assignment that was supposed to be a
-    comparison.
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit 185a0a51f8aed635eecac0cfbd837dd262a8add0
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 13 16:39:36 2018 +0100
-
-    Babel: Add source-specific routing support
-    
-    This patch adds support for source-specific routing to the Babel protocol.
-    It changes the protocol to support both NET_IP6 and NET_IP6_SADR channels
-    for IPv6 addresses. If only a NET_IP6 channel is configured,
-    source-specific updates are ignored. Otherwise, non-source-specific
-    routes are simply treated as source-specific routes with SADR prefix 0.
-    
-    Thanks to Toke Hoiland-Jorgensen for the original patch.
-    Minor changes by Ondrej Santiago Zajicek.
-
-commit be17805c0bbd37e865dc9b17b56e8e8d210c2c6c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 13 16:27:57 2018 +0100
-
-    Add support for source-specific IPv6 routes to BIRD core
-    
-    This patch adds support for source-specific IPv6 routes to BIRD core.
-    This is based on Dean Luga's original patch, with the review comments
-    addressed. SADR support is added to network address parsing in confbase.Y
-    and to the kernel protocol on Linux.
-    
-    Currently there is no way to mix source-specific and non-source-specific
-    routes (i.e., SADR tables cannot be connected to non-SADR tables).
-    
-    Thanks to Toke Hoiland-Jorgensen for the original patch.
-    Minor changes by Ondrej Santiago Zajicek.
-
-commit a82f692e5844d5efdc091a796dc0e8ae8ab5a322
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 6 17:43:55 2018 +0100
-
-    Nest: Trivial whitespace cleanup
-
-commit 28b3b551222ab58456a067a9be4790824cdbb60e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 6 16:08:45 2018 +0100
-
-    KRT: Fix IPv6 route learn
-    
-    Internal table used for route learn was created with non-matching net
-    type for IPv6 kernel proto.
-    
-    Thanks to Toke Hoiland-Jorgensen for the bugreport
-
-commit 85ad5855a02e8b185a61bbcb601f005d2e6747db
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jan 29 12:49:37 2018 +0100
-
-    Nest: Fix corner case in recursive next hop lookup
-    
-    Thanks to Svenne Krap for the bugreport.
-
-commit 345e50d59ff299e466fab6d0e0d37c210d624d96
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 24 13:55:12 2018 +0100
-
-    Nest: remove duplicate function
-
-commit 75d98b6013c19598b1d3ba5e05e8f84525e8678a
-Merge: ace3072e0 d6cf99615
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 23 18:29:32 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit d6cf996151307d083c30e4ecde0f1d7449b19253
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 23 17:05:45 2018 +0100
-
-    IO: Fix socket priority
-    
-    On Linux, setting the ToS will also set the priority and the range of
-    accepted values is quite limited (masked by 0x1e). Therefore, 0xc0 is
-    translated to a priority of 0, not something we want, overriding the
-    "7" priority which was set previously explicitely. To avoid that, just
-    move setting priority later in the code.
-    
-    Thanks to Vincent Bernat for the patch.
-
-commit ace3072e09e445b2fd8554492b80bea5cc1f3411
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 23 15:12:43 2018 +0100
-
-    KRT: Fix option 'merge paths'
-
-commit e5ff7929c4d85b84496cdfc46f006b8cd1b4c0e5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 23 14:48:07 2018 +0100
-
-    KRT: Remove useless option
-
-commit def6efa1ef98966424a73923832c6912acefc0ba
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 23 14:26:18 2018 +0100
-
-    Doc: Fix example
-
-commit 8adaf730c0e2dae2debd7aa09633899e28428b11
-Author: Maria Matejka 
-Date:   Tue Jan 16 16:10:13 2018 +0100
-
-    Pipe: show export state
-
-commit c591810d46ae31c9e46768388878321e78e4ef94
-Author: Maria Matejka 
-Date:   Tue Jan 16 14:46:06 2018 +0100
-
-    Pipe: fixed template bug
-    
-    When pipe inherited from template, every channel config was lost.
-
-commit 63472779ad4ecdecbcfedf2d2bb40abc2f8c84b0
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 16 19:17:04 2018 +0100
-
-    BGP: Implement 'disable after cease' option
-    
-    The option allows to specify that some cease subcodes should
-    disable the protocol when received.
-
-commit b94057911554e04df9b709f8354e2e220131096a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 16 16:20:01 2018 +0100
-
-    Filter: Allow silent filter execution
-    
-    A filter should log messages only if executed explicitly (e.g., during
-    route export or route import). When a filter is executed for technical
-    reasons (e.g., to establish whether a route was exported before), it
-    should run silently.
-
-commit 6f46465af1b3d21ca67e3b4379640c008fc9d1a1
-Author: Ondrej Filip 
-Date:   Tue Jan 16 14:36:46 2018 +0100
-
-    Error in version guessing
-
-commit c2febfa33294be0f457b49f5453d8066a7d88a5d
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 16 14:18:57 2018 +0100
-
-    Add note to NEWS
-
-commit 68d0048b3d8d17cfa30846cfe06ea159c3c49a17
-Author: Ondrej Filip 
-Date:   Tue Jan 16 10:45:03 2018 +0100
-
-    Notice about RFC 8212 added
-
-commit 3831b619661d08d935fd78656732cd2f339ff811
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 16 04:14:49 2018 +0100
-
-    BGP: Require explicit import and export policies for EBGP channels
-    
-    To comply with RFC 8212 requirements.
-
-commit 4db4ac7243bf54187029abda0b42cc9d29757d13
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jan 14 21:52:58 2018 +0100
-
-    NEWS and version update
-
-commit 4d3679613179637df5ef999073aba2d187540a57
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jan 14 14:30:38 2018 +0100
-
-    KRT: Fix direct routes for BSD
-    
-    Old way to set direct routes is to use local IP as gateway, but that does
-    not work properly on newer FreeBSDs. Now we use sockaddr_dl containing
-    interface index as gateway.
-
-commit 2e507a745733b0cee2ea7d302cc9d626cb2e0c80
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 10 16:17:37 2018 +0100
-
-    Use non-fatal asserts even for regular build
-
-commit 72163bd5f3ccefc1edda585f6f605c37e774a0b8
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 9 18:42:22 2018 +0100
-
-    Nest: Allow modification of channels inherited from templates
-    
-    Multiple definitions of same channels are forbidden, but inherited
-    channel can be redefined. In such case channel options are merged.
-
-commit 09c1e370b3084f7acb7c3777427670a69945368a
-Author: Maria Matejka 
-Date:   Tue Jan 9 16:46:00 2018 +0100
-
-    Moved freebsd cflags and ldflags to configure
-
-commit 94f9be80c3686284942ba73670780d27730da997
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 9 14:36:11 2018 +0100
-
-    Nest: Fix filter reconfiguration
-    
-    Function filter_same() must be called with arguments in proper order,
-    otherwise it breaks the new filter, causing crash during route
-    processing.
-
-commit 8f8671bcde738890d312ab91336f101465b3eeac
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 3 15:44:05 2018 +0100
-
-    Filter: Handle undefined BGP paths as empty
-    
-    The same is already done for clists. Also fixes defined() to work
-    properly for paths and clists.
-
-commit 0ff86d054efa8005c5df943acf6d2122781d3175
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jan 3 14:12:00 2018 +0100
-
-    ROA: Fix reconfiguration
-
-commit 9bd8cb7c3ca23524cb7d69ee503e24658ad2ee42
-Merge: d493d0f18 cce6ba4da
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 2 16:59:59 2018 +0100
-
-    Merge branch 'master' into int-new
-
-commit d493d0f180e3df1f33d344d8b28cc1743201210b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 2 16:57:45 2018 +0100
-
-    BGP: Fix unknown attribute handling
-
-commit e62cd033079c4bc988a467f4122c7c276c77fdde
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 2 14:30:08 2018 +0100
-
-    BGP: Fix graceful restart timer
-    
-    Should use remote value, not local value.
-
-commit cce6ba4daa2e00d6e1881a831d05cdc51249b4a7
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 2 14:11:59 2018 +0100
-
-    Remove libhistory check
-    
-    According to GNU Readline developers, if we link with libreadline then
-    there is no need to link with libhistory at all.
-
-commit 4842eeaad32aeeeb1774ec9840c6da03952425ff
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 21 00:16:52 2017 +0100
-
-    Minor fix in documentation
-
-commit a63e78c31a518f4441b2f87e1947c12e1e49aba1
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 18 23:15:07 2017 +0100
-
-    Fix build without limited protocol set
-
-commit e87a95d97d18eb12d005312f27b082f0821d3923
-Author: Ondrej Zajicek (work) 
-Date:   Sat Dec 16 16:31:43 2017 +0100
-
-    Minor fixes for debug mode
-
-commit 3013fc57bdc97b0031c4f4250b9bdd172f4c0f4e
-Author: Ondrej Zajicek (work) 
-Date:   Sat Dec 16 00:42:56 2017 +0100
-
-    Netlink: Fix memory leak
-
-commit 8396094156c2ddae279ec9c265100e28acb65a8d
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 14 22:15:01 2017 +0100
-
-    Minor cleanups
-
-commit abd4367f483bc29a03cce8bcfc70a83ac5d13cdc
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 14 21:52:07 2017 +0100
-
-    Minor cleanup
-
-commit c36a298c21f1aa5b4e61d2d4740811529175df09
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 13 19:18:30 2017 +0100
-
-    Use git describe for BIRD version
-    
-    Based on patch from Pavel Tvrdik
-
-commit d807ea087f8d60e25eaef8c10168a40ca6545c57
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 13 15:57:44 2017 +0100
-
-    BGP: Fix non-transitive ext communities
-
-commit 3e7923507b40b42c80dc621aff9d896106bae8c7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 13 15:26:29 2017 +0100
-
-    Netlink: Use linpool instead of static buffer
-
-commit 772beb7308a53558e153223bc42742f719ff4a40
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 13 14:49:55 2017 +0100
-
-    Lib: Minor fix
-
-commit cb21c5ffa92494b1a4bf110605509de3326b6c3d
-Merge: 71c51aa4a 1e11918c8
-Author: Maria Matejka 
-Date:   Wed Dec 13 10:29:10 2017 +0100
-
-    Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
-
-commit 71c51aa4ab0daa3490f9a488f505eb25102c4705
-Author: Maria Matejka 
-Date:   Wed Dec 13 10:28:50 2017 +0100
-
-    Doc: Fixed misc sgml bugs, no content change
-
-commit 1e11918c8c56e3505193f4e6426c1a34aaae3941
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 12 19:51:36 2017 +0100
-
-    Lib: Save/restore state for linpools
-    
-    Also change linpool.current ptr to really point to thr current chunk.
-
-commit ac48e72bf6f9f491824e2de59a035c93aab8f81b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 12 15:56:31 2017 +0100
-
-    Fix some minor issues
-
-commit cb5df823acdc54f94b0b85094cb59ac68c83c33a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 12 15:22:01 2017 +0100
-
-    Minor CI tweak
-
-commit b5257bea853850809be7f03eb0e1dbb398c56c34
-Author: Ondrej Filip 
-Date:   Tue Dec 12 10:43:56 2017 +0100
-
-    Removed '--enable-ipv6' reference.
-
-commit 66acbc8d7f80ce3c197549922b60fca093129047
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 12 00:05:49 2017 +0100
-
-    Revive FIB and kernel MPLS code
-
-commit fa5c09a2e708ed505ca140531b98e695fdaf989c
-Author: Ondrej Filip 
-Date:   Mon Dec 11 09:36:21 2017 +0100
-
-    Changes to be able to build 2.0.0
-
-commit d4eada9e0f3dc1f1e22b83fc8a8361ae256592ff
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 11 02:05:35 2017 +0100
-
-    NEWS and version update
-
-commit c99050cce228b214c2856c6eebefbefffccade7f
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 11 01:04:15 2017 +0100
-
-    KRT: Fix bug in multipath handling
-
-commit cf3e3845c205dacf2720cdb76a9a004a816d2e6f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 10 22:47:38 2017 +0100
-
-    Doc: Documentation update
-
-commit 6b0f5f68a8ae35b05abb144cf998bf537dfa283b
-Author: Maria Matejka 
-Date:   Mon Sep 25 13:00:05 2017 +0200
-
-    Switchoff for MPLS in kernel.
-
-commit 67a2eb9177fe0b8a6854775a4fad1f7768f6a94a
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 10 13:18:36 2017 +0100
-
-    Lib: Check size of nets
-
-commit a32a7b58cebc2838de2ffd94e679d3e1ec9d493a
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 10 13:16:31 2017 +0100
-
-    Lib: Fix macro/keyword collisions
-    
-    Old code breaks with some versions of bison
-
-commit 7fc55925beb06059759294e0e9b7bae45465395f
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 10 00:55:34 2017 +0100
-
-    Several minor fixes
-
-commit ed1d853e5147376086e25f5edae9804cf242d6e0
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 17:31:33 2017 +0100
-
-    Filter: Remove old BGP path mask syntax from tests
-
-commit dea9886454c1c0953b5977dd8a96718be465b962
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 17:00:47 2017 +0100
-
-    BGP: Link check just for single-hop
-
-commit 3e52d112d714545df3cd97119824ee94c27a0606
-Author: Maria Matejka 
-Date:   Wed Sep 27 16:55:09 2017 +0200
-
-    Docs: Update to v2.0
-
-commit 517d05dff17e881b880ee4fd28a72e827c10e8c3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 15:59:44 2017 +0100
-
-    Enable ECMP and Link detection by default
-    
-    ECMP is not enabled on BSD, where it is not supported by BIRD.
-
-commit eb95b5ec1a5c3bd4e57f3a134828f8de2875cb43
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 15:16:47 2017 +0100
-
-    Nest: Minor formatting changes
-
-commit 49c7ef3b21e51ae7d1969baa52b4d8fd29b22eeb
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 14:00:36 2017 +0100
-
-    BGP: Fix IPv6 MPLS/VPN multicast SAFI
-
-commit ccee67ca3b607130bf441b6060b88525b5e50ad9
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 8 02:26:17 2017 +0100
-
-    BGP: Autoconfigure BGP next hops from preferred addresses
-
-commit 830ba75e6dd369c3e64d122f0537cc85211e56e6
-Merge: 46434a3ca 1e8721e2a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 21:54:47 2017 +0100
-
-    Merge commit '1e8721e2aeccfbc3f533e8b8abc07582cee77e9a' into int-new
-
-commit 46434a3cad99260b5a659e5df874eab4615bcb36
-Merge: 4ff15a75c 7b2c5f3d2
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 18:35:46 2017 +0100
-
-    Merge commit '7b2c5f3d2826e3175bf31b1c36056c9efc587a2b' into int-new
-
-commit 4ff15a75c56531fa2d3858d8250dcef1af4e75b6
-Merge: cd80c9b07 98bb80a24
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 17:41:09 2017 +0100
-
-    Merge commit '98bb80a243b58c43453e9be69d19d0350286549c' into int-new
-
-commit cd80c9b0700ef9533a19ab19d66c38a1722c4e08
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 14:21:38 2017 +0100
-
-    BSD: Fix in the last commit
-
-commit a6f79ca57f0b4b296f67c2d063fd85a627b611b8
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 28 17:43:20 2017 +0100
-
-    Timers: Revert temporary names and remove old timer.h
-
-commit 574b2324275d3292e98a8e329f791eb5c799f7f2
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 28 17:06:10 2017 +0100
-
-    Timers: Fix TBF and some last remains
-
-commit 3b3b0910ffb1b212b1c9ea420db6c575a3ecb71a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 28 15:11:41 2017 +0100
-
-    Babel: More changes and bugfixes
-    
-    Several changes and bugfixes in Babel, namely:
-    
-    - Exported route parameters stored directly in route table entry
-    - Exported non-babel routes no longer stored in per-entry route list
-    - Route update, selection and retraction simplified and fixed
-    - Route feasibility is evalualated per update and stored with route
-    - Unreachable route handling fixed, based on hold interval
-    - Added 'show babel routes' command
-    
-    Overall, it fixes some issues with proper propagation of triggered
-    updates, making Babel convergence after topology change almost
-    instant.
-
-commit dbf1ed263c1c15f79fb200b4dfe3bffea231f4e4
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 8 14:35:52 2017 +0100
-
-    Babel: Fix handling of seqno requests
-    
-    Old behavior has several deficiencies compared to standard behavior
-    (no triggered updates for replies, no retransmissions, ...).
-
-commit 672fb78e1272bb49cc2521176effe75e3cb22460
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 8 14:15:11 2017 +0100
-
-    Babel: Fix handling of IPv4 retractions
-    
-    Babel TLV parsing code rejected IPv4 retractions without next-hop,
-    although next-hop is needed just for regular updates.
-
-commit 268dc7c8b3c45412fc8f4b0bae451e51c4c48b31
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 27 12:20:58 2017 +0200
-
-    Babel: Remove babel_proto ptr from babel_entry
-
-commit 738a57b69bdff6244cf5093ae3997290e6c11324
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 25 17:59:57 2017 +0200
-
-    Babel: Fix hello timeout for short hello intervals
-
-commit b47eaefe12d0673af2c7c7ec1a8adff982a958ca
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 25 17:14:08 2017 +0200
-
-    Babel: Revamp cost computation and run route selection when cost change
-    
-    Also fix several minor bugs and add 'limit' option for k-out-of-j
-    link sensing strategy. Change default from 8-of-16 to 12-of-16.
-    Change IHU expiry factor from 1.5 to 3.5 (as in RFC 6126).
-
-commit f00221fadbb2c85c835cc5e4e69a0d3ce13d31b3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 13 23:46:41 2017 +0200
-
-    Babel: Fix unicast seqno requests
-
-commit 38f4721092f5a835248f9f521d34990ec9883dbd
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 13 19:34:34 2017 +0200
-
-    Babel: Avoid batch seqno updates
-
-commit 5ee69d11f2e859b77ff04bb4068f43082fd1794f
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 13 19:33:42 2017 +0200
-
-    Babel: Fix Hello and IHU expiration
-
-commit 8b58f565e4fcd076e2d9fe008c7f2b19e264b319
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 13 12:34:08 2017 +0200
-
-    Babel: Update to new timers
-
-commit 6b5cd7c05f82e87d67c1b41296021757a3d952a0
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 21 15:38:11 2017 +0200
-
-    Sysdep: Remove old timer code
-
-commit 3e405fb188bee0bb8fcf91f574126771c8661afb
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 21 14:43:49 2017 +0200
-
-    Nest: Update to new timers
-
-commit cc881bd15561224f507ed7162016114ed2b15a1e
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 21 14:14:51 2017 +0200
-
-    BGP: Update to new timers
-
-commit b32d557a6eca10c1e1dc2f2ab83e201f53d134b4
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 20 18:03:06 2017 +0200
-
-    OSPF: Update to new timers
-    
-    Note that recurrent timers are currently limited to ~1 hour.
-
-commit ee528fbd5dc482ceece52832d4a8ea5a08251bfa
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 20 15:55:39 2017 +0200
-
-    Timers: Add typecast to unit-converting macros
-
-commit 92cc1e745758893a57a2432a0e11e4cd3ad289b7
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 20 14:30:44 2017 +0200
-
-    RIP: Update to new timers
-
-commit c521b3ac324e1c97b22581a06172dcb08fd740f6
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 14 17:02:11 2017 +0200
-
-    RAdv: Update to new timers
-
-commit d59c1a295834aa5cc63aceb6769c8413fa0639fe
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 14 16:32:15 2017 +0200
-
-    RPKI: Update to new timers
-
-commit 21f4f0f4b0785e30ce2af4741ffa6f2ebdd7d714
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 14 13:15:35 2017 +0200
-
-    Kernel: Update to new timers
-
-commit d3fa9e84e98d7b8c726f5e35d6a359971eb98f94
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 13 16:52:21 2017 +0200
-
-    Timers: Show sub-second times in some protocol outputs
-
-commit 212eda07c4e481e3341ede37b0877fa22bc042a4
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 13 15:55:13 2017 +0200
-
-    Timers: Fix tests after timer change
-
-commit 49fc021337eba2e9cea228e80e1f95ef21b30cd2
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 13 15:41:49 2017 +0200
-
-    Printf: Add support for microsecond times
-    
-    Use '%t' in bsnprintf() for microsecond times (in btime) with variable
-    sub-second precision.
-
-commit f047271cb963c62663687d63b2f7cf8dd5edfbb7
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jun 6 16:47:30 2017 +0200
-
-    Timers: Parse and format functions for microsecond times
-    
-    Date/time output (e.g. in logs, show commands) can use %f to specify
-    subsecond time. By default, millisecond precision is used in output.
-
-commit 025525266f6861437ca54aca2a86eb505a486baf
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jun 1 12:33:20 2017 +0200
-
-    Timers: Replace old timers with microsecond timers
-    
-    The old timer interface is still kept, but implemented by new timers. The
-    plan is to switch from the old inteface to the new interface, then clean
-    it up.
-
-commit 28a7d3943ef915c405b3552ae06f639a86f4dc1e
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 31 15:46:04 2017 +0200
-
-    Timers: Integrate microsecond timers to the main loop
-
-commit 534215a18fb3fb7ce5b26c9e6ec1fdb32bf22ae6
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 30 19:12:35 2017 +0200
-
-    Timers: Split microsecond timers from BFD code to lib
-
-commit 7c454d918682c072a6ae6ad8e0cd8d35b9edd2aa
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 13:44:00 2017 +0100
-
-    BSD: Minor fix of penultimate commit
-
-commit abae1cc58b7c4ccf683651a6fcd51cfaecd03566
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 13:28:24 2017 +0100
-
-    KRT: Minor fix of last commit
-
-commit 153f02da3bce1f3f1a99295648679c71327e8319
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 7 13:06:01 2017 +0100
-
-    Nest: Maintain separate IPv4, IPv6 and LLv6 preferred addresses
-    
-    Also redesign preferred address selection and update protocols to use
-    appropriate preferred address.
-    
-    Based on a previous work by Jan Maria Matejka.
-
-commit 1e8721e2aeccfbc3f533e8b8abc07582cee77e9a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 28 19:33:33 2017 +0100
-
-    Babel: Parse flags in Hello TLV
-    
-    RFC6126bis introduces a flags field for the Hello TLV, and adds a unicast flag
-    that is used to signify that a hello was sent as unicast. This adds parsing of
-    the flags field and ignores such unicast hellos, which preserves compatibility
-    until we can add a proper implementation of the unicast hello mechanism.
-    
-    Thanks to Toke Hoiland-Jorgensen for the patch.
-
-commit 9ba4b4a63d27943586b76574b7f310ee532509a3
-Author: Maria Matejka 
-Date:   Thu Nov 9 15:04:05 2017 +0100
-
-    Filter test: typo fix
-
-commit 4ae3ee1200b386219673c2168eae996c6207b077
-Author: Maria Matejka 
-Date:   Tue Aug 22 13:47:01 2017 +0200
-
-    Babel: Interface address irrelevant for interface pattern matching.
-
-commit 289c1a7968c5a3c0a76124a89eb45de010f1c640
-Author: Maria Matejka 
-Date:   Mon Aug 21 14:14:07 2017 +0200
-
-    Iface address debug dump fix
-
-commit 2d7fb19c3c6eadfbd9b994f5c306e79b7c4ee994
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 10 16:07:54 2017 +0200
-
-    OSPF: Add option to disable OSPFv3-AF
-
-commit 2549300b54f262932dd14e6d465926627e6dc8ef
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 9 21:11:53 2017 +0200
-
-    OSPF: Fix minor issue in TTL check
-    
-    The TTL check must be done after instance ID dispatch to avoid warnings
-    when a physical iface is shared by multiple instances and some use TTL
-    security and some not.
-
-commit f097f7659c7ff226a53c51673158e32fb69a6d21
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 9 20:36:14 2017 +0200
-
-    OSPF: Fix next hop calculation for PtP links in IPv4 OSPFv3-AF
-    
-    In such case, next hop has to be taken from Link-LSA like in broadcast
-    case, not from neighbor source address like in other PtP cases.
-    
-    Also add some checks, comments and code cleanup.
-
-commit d3f4f92b0ece0ce4031087a25735e6cbf0d741e2
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 9 01:16:29 2017 +0200
-
-    OSPF: Support of address families in OSPFv3
-    
-    OSPFv3-AF can handle multiple topologies of diferent address families
-    (IPv4, IPv6, both unicast and multicast) using separate instances
-    distinguished by instance ID ranges.
-
-commit d9573a40ecaf9758690e4482782bebaf7847ba9b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 10 15:06:39 2017 +0200
-
-    Doc: Update sgml2* tools
-    
-    The old ones do not work on current Debian.
-
-commit 7e8d6116df68e96ef4abd64f6b9cbe7406c5985d
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 10 13:27:03 2017 +0200
-
-    Doc: Fix reference
-
-commit 18352188ed7415ddb3aa7b0d7a2fc16d57a2d5d2
-Author: Michal 'vorner' Vaner 
-Date:   Tue Sep 19 17:23:31 2017 +0200
-
-    RAdv: Documentation for more specific routes
-
-commit 7c0bab3a3987b42bc699c4417c7b2e838f189158
-Author: Ondrej Zajicek (work) 
-Date:   Fri Oct 6 12:22:18 2017 +0200
-
-    RAdv: Change specific route options to be per-interface
-    
-    And change default values of specific route options to be consistent with
-    values of default router options.
-
-commit 2a95e63343a94243745e5d7000bb3e0cb61a4a0f
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 31 15:40:23 2017 +0200
-
-    RAdv: Support for more specific routes (RFC 4191)
-    
-    The patch implements Default Router Preferences and More-Specific Routes
-    (RFC 4191) for RAdv protocol, allowing to announce router preference and
-    more specific routes in router advertisements. Routes can be exported to
-    RAdv like to regular routing protocols.
-    
-    Some cleanups, bugfixes and other changes done by Ondrej Zajicek.
-
-commit 5a8b1fb047d675badc17ab24175d0db06d7cc00c
-Author: Michal 'vorner' Vaner 
-Date:   Tue Sep 5 15:50:00 2017 +0200
-
-    filter: Allow assigning enums into extended attributes
-    
-    They are internally ints, but they got refused as a wrong type. This
-    fixes setting of the BGP origin and is also needed for RA.
-
-commit cd1d99611e445c9fe2452d05627ccfc624f35c39
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 19 19:55:37 2017 +0200
-
-    BGP: Shutdown communication (RFC 8203)
-    
-    The patch implements BGP Administrative Shutdown Communication (RFC 8203)
-    allowing BGP operators to pass messages related to BGP session
-    administrative shutdown/restart. It handles both transmit and receive of
-    shutdown messages. Messages are logged and may be displayed by show
-    protocol all command.
-    
-    Thanks to Job Snijders for the basic patch.
-
-commit 7b2c5f3d2826e3175bf31b1c36056c9efc587a2b
-Author: Michal 'vorner' Vaner 
-Date:   Thu Sep 14 12:31:15 2017 +0200
-
-    Docs: FIB iteration macros
-
-commit 18ea2ea759963a68a1a9f82d50aa9ed90b128df9
-Author: Ondrej Zajicek (work) 
-Date:   Wed Sep 13 13:10:50 2017 +0200
-
-    Doc: Document 'empty' operator
-    
-    Thanks to Alexander Zubkov for the notification.
-
-commit f2dd602fef2ecf0a6598b817d71ce2ee8fadd5cc
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 12 16:33:29 2017 +0200
-
-    Backport some minor changes from int-new
-
-commit 9f4908fe78cb3e5191bca721588ee1acb10876e3
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 12 15:49:36 2017 +0200
-
-    Nest: VRF support for neighbor cache and olock code
-    
-    Actually much simpler than expected.
-
-commit 943478b00f585725c3e7406909ee867dcfac5f87
-Author: Ondrej Zajicek (work) 
-Date:   Wed Sep 6 17:38:48 2017 +0200
-
-    Basic VRF support
-    
-    Add basic VRF (virtual routing and forwarding) support. Protocols can be
-    associated with VRFs, such protocols will be restricted to interfaces
-    assigned to the VRF (as reported by Linux kernel) and will use sockets
-    bound to the VRF. E.g., different multihop BGP instances can use diffent
-    kernel routing tables to handle BGP TCP connections.
-    
-    The VRF support is preliminary, currently there are several limitations:
-    
-    - Recent Linux kernels (4.11) do not handle correctly sockets bound
-    to interaces that are part of VRF, so most protocols other than multihop
-    BGP do not work. This will be fixed by future kernel versions.
-    
-    - Neighbor cache ignores VRFs. Breaks config with the same prefix on
-    local interfaces in different VRFs. Not much problem as single hop
-    protocols do not work anyways.
-    
-    - Olock code ignores VRFs. Breaks config with multiple BGP peers with the
-    same IP address in different VRFs.
-    
-    - Incoming BGP connections are not dispatched according to VRFs.
-    Breaks config with multiple BGP peers with the same IP address in
-    different VRFs. Perhaps we would need some kernel API to read VRF of
-    incoming connection? Or probably use multiple listening sockets in
-    int-new branch.
-    
-    - We should handle master VRF interface up/down events and perhaps
-    disable associated protocols when VRF goes down. Or at least disable
-    associated interfaces.
-    
-    - Also we should check if the master iface is really VRF iface and
-    not some other kind of master iface.
-    
-    - BFD session request dispatch should be aware of VRFs.
-    
-    - Perhaps kernel protocol should read default kernel table ID from VRF
-    iface so it is not necessary to configure it.
-    
-    - Perhaps we should have per-VRF default table.
-
-commit 98bb80a243b58c43453e9be69d19d0350286549c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Sep 5 00:02:20 2017 +0200
-
-    KRT: Fix IPv6 ECMP handling with Linux 4.11+
-    
-    Starting from Linux 4.11, IPv6 ECMP routes are now notified using
-    RTA_MULTIPATH, like IPv4 ones. The patch adds support for RTA_MULTIPATH
-    parsing for IPv6 routes. This also enables to parse ECMP alien routes
-    correctly.
-    
-    Thanks to Vincent Bernat for the original patch.
-
-commit 9befc7cc4f26889077ace537019de92903139133
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 4 22:32:45 2017 +0200
-
-    BSD: Fix alignment issue
-    
-    Incorrect structure alignment breaks kernel routing table updates on
-    FreeBSD/ARM (and perhaps other platforms).
-    
-    Thanks to Eugene Sevastyanov for the original patch.
-
-commit 96eace1ea70d7c2bc13672fbeba104d34d8ede4c
-Merge: 08b6a617e 5c4dfe0c3
-Author: Michal 'vorner' Vaner 
-Date:   Mon Sep 4 13:30:13 2017 +0200
-
-    Merge branch 'gitlab-ci'
-
-commit 5c4dfe0c30e5516fac73e6ed8455af2245ebc62a
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 17 15:02:35 2017 +0200
-
-    Gitlab CI support
-    
-    Add configuration and docker definitions for tests and builds in Gitlab
-    CI platform.
-    
-    Some of them currently fail, which is a known problem.
-
-commit 08b6a617e862ffc7b7460abb79fe4c198806517c
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 29 19:17:35 2017 +0200
-
-    RAdv: Some style nitpicks
-
-commit ec7d6a506ecae89e5019ce7fcb380a713be28bce
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 17 11:34:25 2017 +0200
-
-    RAdv: Configure how long a dead prefix is advertised
-
-commit e2d2b3ef21f082a034e79d0880d4b36428029a59
-Author: Michal 'vorner' Vaner 
-Date:   Fri Aug 11 12:25:36 2017 +0200
-
-    RAdv: Buffer prefixes awhile after they disappear
-    
-    Keep a cache of all the relevant prefixes we send out. When a prefix
-    appears, insert it into the cache. If it dies, keep it there for a
-    while, marked as dead.
-    
-    Send out the dead prefixes with zero lifetime.
-
-commit 3ac5d1ce4c10719dd48555521a50d4a9c5eadd15
-Author: Michal 'vorner' Vaner 
-Date:   Wed Aug 9 16:00:16 2017 +0200
-
-    RAdv: Extract prefix option preparation
-    
-    Put the prefix option preparation into a separate function. We're going
-    to reuse that bit of code.
-
-commit e7ed9ecba77162b4c09f34354378b0e752b9078e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 22 14:03:38 2017 +0200
-
-    Client: Fix include
-
-commit 080d9e4ce25f8f14e61ba0a81d5385bf8de3e48f
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 10 14:35:14 2017 +0200
-
-    Nicer log output
-    
-    non-primary is ugly, just omit it (and use primary in the other case).
-
-commit 5699a2036cfb32cb3a683814f83242eb21e40d02
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 10 13:06:05 2017 +0200
-
-    Less confusing log message
-    
-    A non-primary address isn't necessarily secondary, that's an independent
-    flag.
-
-commit 15a4421f9cb2c077cc484e3cda94e8710a1d68f5
-Author: Michal 'vorner' Vaner 
-Date:   Thu Aug 10 12:32:30 2017 +0200
-
-    Fix bird.conf example
-    
-    Make it syntactically correct, so it is accepted.
-
-commit 9b776458efdfae0c30b97f3670a1f4646221f072
-Author: Michal 'vorner' Vaner 
-Date:   Wed Aug 9 13:39:20 2017 +0200
-
-    Gitignore: File created by autoreconf
-
-commit da390bb11c8efc70767fc4b6d00bebf558d3b00f
-Author: Michal 'vorner' Vaner 
-Date:   Wed Aug 9 13:35:55 2017 +0200
-
-    Drop stale TODO
-    
-    A TODO file last updated 5 years ago is useless.
-
-commit 69f73992477a0e29f939f9e2722f705c4ad72a38
-Merge: 5a41eed26 b3fae3a81
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 9 12:46:27 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit b3fae3a81796b6deea48445402793660fade5eb6
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 9 12:41:44 2017 +0200
-
-    RAdv: Fix typo
-
-commit 1f182675c816e4708312f99dd817fb894f3a90b3
-Author: Michal 'vorner' Vaner 
-Date:   Tue Aug 8 14:40:51 2017 +0200
-
-    RAdv: Style updates
-    
-    Adapt the naming conventions to be a bit closer to the other protocols.
-    
-    proto_radv -> radv_proto
-    struct radv_proto *ra -> struct radv_proto *p
-    struct proto *p -> struct proto *P
-
-commit 5a41eed26d1b12861ba0ecddcd7cade335d2a192
-Author: Michal 'vorner' Vaner 
-Date:   Tue Aug 8 14:40:51 2017 +0200
-
-    RAdv: Style updates
-    
-    Adapt the naming conventions to be a bit closer to the other protocols.
-    
-    proto_radv -> radv_proto
-    struct radv_proto *ra -> struct radv_proto *p
-    struct proto *p -> struct proto *P
-
-commit 637ed49868c56c0e05467f0e0ddb6aa1231deaa4
-Author: Michal 'vorner' Vaner 
-Date:   Fri Aug 4 10:52:57 2017 +0200
-
-    radv: Fix RFC reference in comments
-
-commit afd9845e2636146a66508639614a93167d5d1728
-Author: Michal 'vorner' Vaner 
-Date:   Fri Aug 4 10:52:57 2017 +0200
-
-    radv: Fix RFC reference in comments
-
-commit b4a33e21ea3a8d23dee3ed23a515cc7430a38643
-Author: Martin Mares 
-Date:   Tue Jul 18 23:48:25 2017 +0200
-
-    Configure: Fix a typo in checking of backtrace()
-
-commit a1f5e514ef091b82754f38f0e583af40778c7d97
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 4 23:36:21 2017 +0200
-
-    Implement onlink flag for nexthops
-    
-    Add proper support for per-nexthop onlink flag in routes to handle next
-    hop addresses that are not covered by interface IP ranges. Supported by
-    kernel and static protocols.
-    
-    Thanks to Vincent Bernat for the idea.
-
-commit e46128fb50e108e8cfdf6bb6e9ab040e00f5dfdc
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jun 19 12:46:40 2017 +0200
-
-    Filters: Do not clamp EC set values to 16 bit for EC_GENERICs
-    
-    Thanks to Lennert Buytenhek  for the patch.
-
-commit 5220cb63e34961b097d3bc274e394c0fa946d7d3
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 14 12:34:43 2017 +0200
-
-    Babel: Fix pointer arithmetic in subtlv parsing
-    
-    The subtlv parsing code was doing byte-based arithmetic with non-void pointers,
-    causing it to read beyond the end of the packet.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 145ebfa1df9ad252af61cce01cc0f09db45f7c9d
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jun 9 14:33:06 2017 +0200
-
-    Babel: Parse sub-TLVs and skip TLVs with mandatory sub-TLV
-    
-    RFC6126bis formally introduces sub-TLVs to the Babel protocol, including
-    mandatory sub-TLVs. This adds support for parsing sub-TLVs to the Babel
-    protocol and skips TLVs that contain mandatory sub-TLVs, as per the spec.
-    
-    For details, see section 4.4 of
-    https://tools.ietf.org/html/draft-ietf-babel-rfc6126bis-02
-    
-    Thanks to Toke Høiland-Jørgensen  for the patch.
-
-commit b3c6273efaa15976cc1290f00d5abde4991e184e
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jun 9 13:00:20 2017 +0200
-
-    Babel: Implement IPv6 prefix compression on outgoing updates
-    
-    Previously, the Babel protocol would never use prefix compression on outgoing
-    updates (but would parse it on incoming ones). This adds compression of IPv6
-    addresses of outgoing updates.
-    
-    The compression only works to the extent that the FIB is walked in lexicographic
-    order; i.e. a prefix is only compressed if it shares bytes with the previous
-    prefix in the same packet.
-    
-    Thanks to Toke Høiland-Jørgensen  for the patch.
-
-commit 300bd0eb85d14523ea7f0a7a3a4d92184f3c4fb3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jun 9 11:56:20 2017 +0200
-
-    Babel: Add documentation for dual-stack operation and options
-    
-    This updates the documentation for the Babel protocol to mention the fact
-    that it now supports dual-stack operation, and adds documentation for the
-    new next hop options.
-    
-    Thanks to Toke Høiland-Jørgensen  for the patch.
-
-commit 4324025f981a8f545cc28ab16426ab7c2d1843cd
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jun 8 12:18:16 2017 +0200
-
-    Babel: Add support for dual-stack IPv4/IPv6 operation
-    
-    This adds support for dual-stack v4/v6 operation to the Babel protocol.
-    Routing messages will be exchanged over IPv6, but IPv4 routes can be
-    carried in the messages being exchanged. This matches how the reference
-    Babel implementation (babeld) works.
-    
-    The nexthop address for v4 can be configured per interface, and will
-    default to the first available IPv4 address on the given interface. For
-    symmetry, a configuration option to configure the IPv6 nexthop address
-    is also added.
-    
-    Thanks to Toke Høiland-Jørgensen  for the patch.
-
-commit 801fd81efea5bf51fe459d951e4be95119798b2b
-Merge: 77810030d 33f7fbc42
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 31 14:12:03 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit 33f7fbc42d0490b27e33275d0fc74d3ef55683e4
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 31 13:31:03 2017 +0200
-
-    CLI: Fix bug in symbol handling introduced in previous patches
-
-commit 77810030d2556e3af659d354a2b3d661f58dd735
-Merge: a1dc52676 4fec43067
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 30 14:44:37 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit 4fec43067e27c7a6c20a6ef9909bef0238984a64
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 30 14:43:49 2017 +0200
-
-    Workaround for older bisons
-
-commit a1dc5267602062562f9adca7acfbbc2fee3b315e
-Merge: 4b2aef885 b7761af34
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 25 23:37:50 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit b7761af34dc4ed3f1bdf874eb85d743b931b0af6
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 25 23:30:39 2017 +0200
-
-    Conf: Replace keyword and symbol hash table with generic hash table.
-    
-    The old hash table had fixed size, which makes it slow for config files
-    with large number of symbols and symbol lookups. The new one is growing
-    according to needs.
-
-commit 4b2aef8857a9ac23015e410930d2162d945892f0
-Merge: 6aaaa6351 c72b660b7
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 23 18:45:33 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit c72b660b7423b0fb687794b722884cd6e5e6c562
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 23 18:39:20 2017 +0200
-
-    Client: Fix isspace() calls
-    
-    Function isspace() expects to get *unsigned* chars (encoded as ints),
-    not that it matters for plain ASCII.
-
-commit 6aaaa63519c88c872f15dcc639643103b563b1c6
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 23 17:22:53 2017 +0200
-
-    Change parser to handle numbers as unsigned
-    
-    Lexer always parsed numbers as unsigned, but parser handled them as
-    signed and grammar contained many unnecessary checks for negativity.
-
-commit 0705a1c5658c2682c915007f466f55d2a8f7ec14
-Author: Pavel Tvrdik 
-Date:   Thu Jun 30 15:04:49 2016 +0200
-
-    Add a hint for an invalid IP prefix
-    
-    bird> eval 200.210.220.0/16
-    Invalid IPv4 prefix 200.210.220.0/16, maybe you wanted 200.210.0.0/16
-    
-    bird> eval 1000:2000::/8
-    Invalid IPv6 prefix 1000:2000::/8, maybe you wanted 1000::/8
-
-commit 734e9fb8a933898cd3396786c06728bce6a754e5
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 23 13:12:25 2017 +0200
-
-    Minor cleanups and fixes
-
-commit bb7aa06a48f52813a019861a0e06ce9fe4d20c4b
-Author: Ondrej Zajicek (work) 
-Date:   Fri May 19 00:33:52 2017 +0200
-
-    Fix type mixing in flowspec formatting
-    
-    Variable of u64 type was passed to vararg function as uint.
-
-commit e521150b8f6bed678527da1cf96e75026b86fe4f
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 18 14:51:36 2017 +0200
-
-    Fix VPN-RD parsing on 32-bit systems
-    
-    When shift count >= width of type the behavior is undefined.
-
-commit 5a9169e152779ac6f99e2eccb79a2a2f6e2c76b2
-Merge: 7d5e61a66 78e4dac99
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 18 14:28:03 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit 78e4dac993ad018bee98e245f6e858e18cc5db8a
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 18 14:26:57 2017 +0200
-
-    Fix some forgotten warnings
-
-commit 7d5e61a66a3d4ecd004f3aa44a3d1bd3682ccf07
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 18 13:29:38 2017 +0200
-
-    Fix of the previous fix
-    
-    Avoid empty macro argument to avoid default behavior.
-
-commit 271fa063a3e2078d7a046146ac2da3718b080cfa
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 18 12:05:09 2017 +0200
-
-    Fix minor bug in configure script
-    
-    Space in action branch breaks build on some platforms.
-
-commit 9b701e69cc812260788eced3370c7e65cd0e25fe
-Merge: d19617f06 d6e01ff90
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 17:37:27 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit d6e01ff90024fcee259eb145f38a0f5b000e4798
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 17:30:23 2017 +0200
-
-    Fix of the previous commit
-
-commit dab6706abad3be5b8efd44fe860689df44d20e83
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 17:03:36 2017 +0200
-
-    History lib may be integrated to Readline lib
-
-commit 81edd3b3a78265b87c2ec6100dce852db5f40d2b
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 16:05:07 2017 +0200
-
-    Fix build on systems with dirty headers
-
-commit d19617f06b4526bccc2fc5e5e15c43c754b99a4d
-Merge: 144c10fad 31874783c
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 14:50:00 2017 +0200
-
-    Merge remote-tracking branch 'origin/int-new' into int-new
-
-commit 144c10fad1ed6a2520abd1c43501ce00ea2699db
-Merge: 1c5b4c5d5 a01e951d0
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 14:38:04 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit a01e951d0fa452fea10a9faca0fbdc9c7cacff23
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 17 13:17:40 2017 +0200
-
-    One more configure cleanup
-    
-    Simplify BIRD client library checks, add proper devel header checks and
-    prefer dependency on just tinfo than full ncurses.
-
-commit 31874783c44dd59c355921908016f9b42d22ef02
-Author: Maria Matejka 
-Date:   Tue May 16 15:47:41 2017 +0200
-
-    Client: manipulate history only if interactive
-
-commit 05d47bd53e71480f1b276bd895f1c25088201e48
-Author: Maria Matejka 
-Date:   Tue May 16 14:31:16 2017 +0200
-
-    Linpool: default allocation size
-
-commit b880e3ffaea12c3231975157bc51b5f90a2f2433
-Author: Maria Matejka 
-Date:   Tue May 16 10:35:10 2017 +0200
-
-    Bird readline client saves its history.
-
-commit 1c5b4c5d5b937fe6bbc3a599296e40a05f022b33
-Merge: fd1f355b7 b845ea097
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 16 14:18:25 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit b845ea097c285f17641d60df3dea4d3e820a1475
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 11 01:29:39 2017 +0200
-
-    Remove autoconf macros for time_t and alignment
-    
-    Replaced by constant compile-time expressions. CPU_STRUCT_ALIGN is not
-    really correct, but is consistent with the old behavior.
-
-commit b81a73d1fbddda4c319899910d751215ff3d29ca
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 18:58:22 2017 +0200
-
-    Minor autoconf cleanups
-    
-    Make indentation and quotation consistent in configure macros.
-    Also remove --with-sysinclude option, which was broken for 7 years
-    and nobody complained.
-    
-    Thanks to Ruben Kerkhof for source patches.
-
-commit e40542ef3a415d163a5ff5fee26c888fead79fa6
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 16:46:41 2017 +0200
-
-    Minor autoconf cleanup and documentation update
-
-commit c253ec3a9c45cfce3661f38bc2f5156d4bdd7969
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 13:44:02 2017 +0200
-
-    Some more autoconf cleanups
-    
-    Replace integer type width detection with C99 fixed-width types.
-    Also remove some unused or obsolete code.
-    
-    Thanks to Ruben Kerkhof for the patchset.
-
-commit f8d44b01df5d93681e116ccbff39cc4618632825
-Author: Maria Matejka 
-Date:   Mon May 15 12:10:51 2017 +0200
-
-    Nest: split route show into separate file
-
-commit fd1f355b7b24f354f7d57f127911b4fd98354b34
-Merge: 525a88d87 71652572e
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 17:37:38 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit 71652572e35bfeea2f346b7c700a3050bf27e466
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 16:46:41 2017 +0200
-
-    Minor autoconf cleanup and documentation update
-
-commit 525a88d87930d01d4301e2723dda3dca208cd3d4
-Merge: 95639d957 5d6dc9304
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 14:07:14 2017 +0200
-
-    Merge branch 'master' into int-new
-
-commit 5d6dc93043a0bc77b1e0a71ea8dfe15325024b45
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 9 13:44:02 2017 +0200
-
-    Some more autoconf cleanups
-    
-    Replace integer type width detection with C99 fixed-width types.
-    Also remove some unused or obsolete code.
-    
-    Thanks to Ruben Kerkhof for the patchset.
-
-commit 95639d957758cba04aeec7ef319c2de2a5ff52da
-Author: Ondrej Zajicek (work) 
-Date:   Wed May 3 12:56:17 2017 +0200
-
-    Device: Fix option 'primary'
-
-commit 8e25f7d229fcb6591e9cd96d3cc61767b3c8dea7
-Author: Ondrej Zajicek (work) 
-Date:   Sat Apr 29 22:14:36 2017 +0200
-
-    One last update to NEWS and example
-
-commit 92a85089b887a91d0b686cd050ac59bb465c602f
-Author: Ondrej Zajicek (work) 
-Date:   Sat Apr 29 21:49:13 2017 +0200
-
-    NEWS and version update
-
-commit b644a490f03d27e0bd8ce5106f6205d122b16191
-Author: Ondrej Zajicek (work) 
-Date:   Sat Apr 29 18:37:51 2017 +0200
-
-    BSD: Fix address scan on OpenBSD
-
-commit 1d21306785392e997099362fbc863b050fe359da
-Author: Ondrej Zajicek (work) 
-Date:   Sat Apr 29 00:36:35 2017 +0200
-
-    Minor fixes
-
-commit e919601aaf29615edb2a231e58a358c2c5c9d286
-Merge: 5ca4bd5d9 33b6c292c
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 28 11:19:12 2017 +0200
-
-    Merge master into int-new
-
-commit 5ca4bd5d9018bb7572f10825e1ca431444601be7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 26 17:13:45 2017 +0200
-
-    Flowspec: Max tcp mask length is 12 bits
-
-commit a1de692a6999106c645a7b28d4124b68f63bd6f5
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 26 14:38:19 2017 +0200
-
-    Doc: BIRD example update
-
-commit 751fb2366ce6c9ebe70fb6ef769608dd34e736e7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 26 14:11:28 2017 +0200
-
-    Test: Fix broken test for filters
-
-commit 69fddac0525b1b0c940d778a161ed3a0a742ed6f
-Merge: 93a3661c1 b29499996
-Author: Maria Matejka 
-Date:   Wed Apr 26 12:30:22 2017 +0200
-
-    Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
-
-commit 93a3661c15c612e1de807524649482765b2c2702
-Author: Maria Matejka 
-Date:   Wed Apr 26 12:26:14 2017 +0200
-
-    Flowspec: split net_format_flowspec into several functions
-
-commit 2af807a83f6aa120b9d0b7b68dc04e543840e2e6
-Author: Maria Matejka 
-Date:   Wed Apr 26 12:19:39 2017 +0200
-
-    Test: fixed broken test for VPN RD output
-
-commit a2fd34f81fe4259d5ef27f1684177753a03f0f90
-Author: Maria Matejka 
-Date:   Wed Apr 26 10:53:48 2017 +0200
-
-    Debug: Add a Makefile rule for assembler intermediates.
-    
-    The main Makefile rules directly compile to object files;
-    this target is only for debug purposes.
-
-commit b29499996bbc1612a63a7e715bb53a8abf0940e3
-Author: Ondrej Zajicek (work) 
-Date:   Tue Apr 25 19:02:31 2017 +0200
-
-    Nest: Update of show route cmd
-    
-    Some code cleanup, multiple bugfixes, allows to specify also channel
-    for 'show route export'. Interesting how such apparenty simple thing
-    like show route cmd has plenty of ugly corner cases.
-
-commit 6f535924ebbb5a08d96c4a8d0cf0984b130a0995
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 6 17:16:49 2017 +0200
-
-    Filter: Fix reconfiguration of roa_check()
-
-commit 4278abfe272de64556c4d6df19efc0c853527851
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 5 16:16:04 2017 +0200
-
-    Check validity of dest w.r.t. net_type
-    
-    Allow to define static roa/flow routes without dest.
-
-commit 3484cb9a654cab9bd2c2b1164528d3000a22a79e
-Author: Maria Matejka 
-Date:   Tue Apr 18 13:45:50 2017 +0200
-
-    Client: separate config syntax structure for "show route for"
-
-commit 7ee07a3c3966ec787bcb7e5100c1add4abef9213
-Author: Maria Matejka 
-Date:   Wed Apr 5 15:11:10 2017 +0200
-
-    Nest: Fix route lookup
-
-commit 97e48b6a18142d1aa11e909d094812f3fff4ea61
-Author: Maria Matejka 
-Date:   Wed Apr 5 14:26:37 2017 +0200
-
-    Adding also our copy of struct rtvia.
-
-commit 54635f435a76ad0f3141b09a9c5072f6e2e8c319
-Author: Maria Matejka 
-Date:   Wed Apr 5 14:15:43 2017 +0200
-
-    Include local lwtunnel.h unless found in system
-
-commit 711d617dc106a8af34c6c8f3500f337a792f1f3d
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 30 14:00:08 2017 +0200
-
-    BGP: Add support for SAFI 129 (VPN multicast)
-    
-    Which, in contrast to SAFI 128, does not use MPLS labels.
-
-commit ffb38dfb8b454dc23cd08836d7236a5a9c9f80c1
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 30 13:29:34 2017 +0200
-
-    Static: Support for dual-AF IGP tables
-    
-    When recursive routes with hybrid next hops (e.g. IPv6 route with IPv4 next
-    hop) are allowed, we need both IPv4 and IPv6 IGP tables.
-
-commit 2faf519cf9d34f90d59081ee5f8d6976c62f4f6e
-Author: Maria Matejka 
-Date:   Thu Mar 30 13:52:01 2017 +0200
-
-    Client: multitable version of show route
-
-commit bff21441dd9b8cd526680e9977f8eceb9912ca6f
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 29 16:10:00 2017 +0200
-
-    Netlink: Change default kernel metric to 32
-    
-    This avoids collisions with non-BIRD routes in kernel tables.
-
-commit ed6100441ec6e95797d3692925b85c627a4e8df1
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 29 15:55:39 2017 +0200
-
-    Netlink: Better handling of an error case
-
-commit 6fe11c994151344c38d1b080c3f2e1280b4b2448
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 29 15:31:04 2017 +0200
-
-    BGP: Simplify igp table options
-
-commit c49e4a65657e9abff1b94cbfdc7686efe7376a7a
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 29 13:48:23 2017 +0200
-
-    BGP: Update list of supported standards
-
-commit 7074be22f1a8a42ec738fd34125e36a732f311a5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 28 18:14:32 2017 +0200
-
-    Netlink: Fix device route delete
-
-commit 5dbeb87ec96157ca95c84d881e014614dd3164a3
-Merge: 2282030b2 d1b8fe93f
-Author: Maria Matejka 
-Date:   Tue Mar 28 17:35:57 2017 +0200
-
-    Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
-
-commit 2282030b2a4fb07805a0cd8b82a9aab73b7586d8
-Author: Maria Matejka 
-Date:   Tue Mar 28 17:35:32 2017 +0200
-
-    Simpler format of VPN RD
-
-commit d1b8fe93f018fb272c3a423df1ab13d86c159f00
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 28 16:05:40 2017 +0200
-
-    Netlink: Fix bug in RTA_PRIORITY handling
-
-commit ef57b70fa51687865e5823c0af2df2c6de338215
-Author: Ondrej Zajicek (work) 
-Date:   Sun Mar 26 19:20:15 2017 +0200
-
-    BGP: Support for routes with mixed-AF next hops
-    
-    Covers IPv4/VPNv4 routes with IPv6 next hop (RFC 5549), IPv6 routes with
-    IPv4 next hop (RFC 4798) and VPNv6 routes with IPv4 next hop (RFC 4659).
-    Unfortunately it also makes next hop hooks more messy.
-    
-    Each BGP channel now could have two IGP tables, one for IPv4 next hops,
-    the other for IPv6 next hops.
-
-commit 01111fc42c461202d427260fb56807eac256e8d5
-Author: Ondrej Zajicek (work) 
-Date:   Thu Mar 23 14:10:42 2017 +0100
-
-    BGP: Bugfix in VPN NLRI encoding
-
-commit 1e37e35c3ea88672c677ea7ac63fe0b9df609b0c
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 22 15:00:07 2017 +0100
-
-    BGP: Support for MPLS labels and VPN SAFI
-    
-    Basic support for SAFI 4 and 128 (MPLS labeled IP and VPN) for IPv4 and
-    IPv6. Should work for route reflector, but does not properly handle
-    originating routes with next hop self.
-    
-    Based on patches from Jan Matejka.
-
-commit ead7b8f498ddefc0b7373cbba78f9a7ba1dddaa9
-Merge: da3cf9eae 61e501da8
-Author: Maria Matejka 
-Date:   Wed Mar 22 14:54:00 2017 +0100
-
-    Merge branch 'nexthop-merged' into int-new
-
-commit 61e501da895553abfd2424e56470ab2b457beac4
-Author: Maria Matejka 
-Date:   Wed Mar 22 14:53:37 2017 +0100
-
-    Filter: Check whether IP is 4 or 6
-
-commit 3c74416465d77c0e79eeaaeb988e471663484b5d
-Author: Maria Matejka 
-Date:   Fri Mar 17 15:48:09 2017 +0100
-
-    Nexthop: Fixed recursive route mpls label merging
-
-commit a5d2a34497853a02692a0b8ea812f44d6820a399
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 14 17:18:50 2017 +0100
-
-    Minor cleanups
-    
-    BTW, 'prefices' is hypercorrection, as 'prefix' is from 'praefixum' with
-    plural 'praefixa'.
-
-commit 7a855725f2ffde508da0c7ee01dc1bcd6e0a5d93
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 14 13:46:51 2017 +0100
-
-    Some autoconf cleanups
-    
-    The patch allows to use autoreconf, replaces some long obsolete
-    constructs and does some other minor cleanups. Also, the file
-    configure.in is renamed to configure.ac, as the old name has been
-    deprecated for a long time.
-    
-    Thanks to Ruben Kerkhof for the patchset.
-
-commit 33b6c292c3e3a8972d0b9f43d156aae50db65720
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 14 12:56:47 2017 +0100
-
-    BGP: Allow to specify interface for regular sessions
-    
-    This may be useful if multple interfaces share the same network range.
-    
-    Thanks to Fritz Grimpen for the original patch.
-
-commit 27f6ba651ebb07201f7964c8f14a254267f0f26a
-Author: Ondrej Zajicek (work) 
-Date:   Sat Mar 11 16:21:28 2017 +0100
-
-    BGP: Fix bug in ADD_PATH
-    
-    When a BGP session with ADD_PATH is restarted and the neighbor do not
-    announce ADD_PATH capability during reconnect, the accept_ra_types is
-    still set to RA_ANY.
-    
-    Thanks to Lennert Buytenhek for the bugreport
-
-commit 8c9986d310c58b26c000375be00be0deb9c2e360
-Author: Maria Matejka 
-Date:   Mon Mar 13 13:50:32 2017 +0100
-
-    Filters: VPN Route Distinguishers, Prefix Type, Docs Update
-
-commit 54334b5667158d4b0af55201f327faeb80c05e0e
-Author: Maria Matejka 
-Date:   Thu Mar 9 15:57:54 2017 +0100
-
-    Filter: ROA check test and mixed prefix test
-
-commit 665be7f6bdbf1fd8dbac45cef533bd4b1df35d4d
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 8 16:27:18 2017 +0100
-
-    Nest: Minor fixes in show route
-
-commit 7126cadf80fce1af2bb4aa33f8bcb7c6b5ff1a47
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 7 18:42:41 2017 +0100
-
-    Static: Minor overhaul
-    
-    The patch fixes several bugs introduced in previous changes, simplifies
-    the protocol by handing routes uniformly, introduces asynchronous route
-    processing to avoid issues with separate notifications for each next-hop
-    in ECMP routes, and makes reconfiguration faster by avoiding quadratic
-    complexity.
-
-commit 5ffb62dd034db0beab5ef245ad7dd31aadefb2d8
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 21 14:56:14 2017 +0100
-
-    Nest: Allow iface-only neighbors
-
-commit da3cf9eae3085d43a2299bae63e6ceb3828856a5
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 8 17:37:11 2017 +0100
-
-    Update OSPF and RIP protocol names and related documentation
-
-commit 039a65d0e4f33f8432caae78cd919d2fd2052eea
-Author: Maria Matejka 
-Date:   Fri Feb 24 14:05:11 2017 +0100
-
-    Nexthop: Fixed hostentry
-
-commit 1950a479c020d1972b6007d8ea0f66e3d4f8564a
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 23 16:32:07 2017 +0100
-
-    BGP: Allow exchanging LOCAL_PREF with eBGP peers
-    
-    Adds option 'allow bgp_local_pref' to override the usual restriction of
-    LOCAL_PREF on eBGP sessions.
-    
-    Thanks to Lennert Buytenhek for the patch.
-
-commit 93f50ca31757fc8e416093e0c73681e070294a3d
-Author: Maria Matejka 
-Date:   Wed Feb 22 14:02:03 2017 +0100
-
-    Nest: names for nhu_state values
-    
-    It took too much time to analyze what's the meaning of nhu_state values
-    so I spent less than the same amount of time documenting it.
-
-commit b2b84359abd382c1ec5a266b211276fbae7da0fc
-Author: Maria Matejka 
-Date:   Wed Feb 22 12:02:28 2017 +0100
-
-    Babel post-merge fixes
-
-commit c609d039860f97f400d2cf0e9ca2b4e87b3fd1cc
-Merge: 62e64905b 2be9218a3
-Author: Maria Matejka 
-Date:   Wed Feb 22 11:58:04 2017 +0100
-
-    Merge branch 'int-new' into nexthop-merged
-
-commit 2be9218a3b1dfcc8e42c8d118e95f2074d9f7a7c
-Author: Ondrej Zajicek (work) 
-Date:   Mon Feb 20 02:28:04 2017 +0100
-
-    BGP: Update RFC references
-
-commit 62e64905b76b88da72c522eac9276a74f60c9592
-Author: Ondrej Zajicek (work) 
-Date:   Mon Feb 20 02:26:45 2017 +0100
-
-    Several minor fixes
-
-commit 4e379bde60172823452cf96e9c0b6b1737c490f0
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 19 12:02:39 2017 +0100
-
-    BGP: Update RFC references
-
-commit 9be12a7d95d668a64922f935057c0b401b58ab75
-Author: Ondrej Zajicek (work) 
-Date:   Sun Feb 19 11:25:16 2017 +0100
-
-    Doc: Fix RIP example
-    
-    Thanks to Steve Leung for the bugreport.
-
-commit 30c734fc73648e4c43af4f45e68ac2de3d7ddea1
-Author: Ondrej Zajicek (work) 
-Date:   Fri Feb 17 22:54:06 2017 +0100
-
-    Static: Fix bug in static route filter expressions
-    
-    During reconfiguration, old and new filter expressions in static routes
-    are compared using i_same() function. When filter expressions contain
-    function calls, it is necessary that old filter expressions are the
-    second argument in i_same(), as it is internally modified by i_same().
-    Otherwise pointers to old (and freed) data appear in the config
-    structure.
-    
-    Thanks to Lennert Buytenhek for tracking and reporting the bug.
-
-commit c259669fa33ca13b5c6ae60eb8ffa0874ddc01b2
-Merge: 82f42ea09 da65a3d89
-Author: Ondrej Zajicek (work) 
-Date:   Wed Feb 8 14:34:48 2017 +0100
-
-    Merge branch 'master' into int-new
-
-commit 82f42ea09176afdb67ab119258d714e8c8e54d12
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 7 15:55:51 2017 +0100
-
-    BGP: Minor cleanups
-
-commit da65a3d898fde0ce567782d86919a66e29916ed7
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 24 15:35:38 2017 +0100
-
-    Filter: Fix missing case for !~ operator
-    
-    Thanks to Vincent Bernat for the patch.
-
-commit d8022d26fc64121c3416abfdb4c38fcbaf81c12e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 24 02:00:35 2017 +0100
-
-    BGP: Partial support for IPv4 routes with IPv6 next hop (RFC 5549)
-    
-    Mostly capability signalling
-
-commit 5509e17d0c1b4e75d5911864f75ba119769e5725
-Author: Ondrej Zajicek (work) 
-Date:   Sun Jan 22 16:32:42 2017 +0100
-
-    BGP: Support for AS confederations (RFC 5065)
-
-commit f6e6c3b5a5997ffc67d96785bbde76bcec072890
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 17 13:21:25 2017 +0100
-
-    Fix IP_HDRINCL usage on FreeBSD 11
-    
-    FreeBSD 11 changed endianity of ip_len field from host order to network
-    order. Also DragonFly BSD allegedly expects network order here.
-    
-    Thanks to Olivier Cochard-Labbé for the patch.
-
-commit f8aad5d5b7601d0500841e57bafa5796cc3156ab
-Author: Ondrej Zajicek (work) 
-Date:   Fri Dec 23 23:03:26 2016 +0100
-
-    Minor cleanups
-
-commit d311368bc58842552e25744a0aae9a09c42cda9f
-Author: Maria Matejka 
-Date:   Tue Feb 9 14:53:29 2016 +0100
-
-    VPN4 and VPN6 literals
-    
-    From now on, protocol static accepts VPN4 and VPN6 addressess.
-    With some concerns about VPN6 Route Distinguishers, I finally chose
-    to have the same format as for VPN4 (where it is defined by RFC 4364).
-
-commit d47c3d64b2733baea756f1bb37ef09f10d7f9644
-Author: Maria Matejka 
-Date:   Tue Aug 9 14:47:51 2016 +0200
-
-    MPLS: Label stack concatenation for recursive routes
-
-commit d14f8c3c45f7e33a7e54ebc0d45bdb0295d70301
-Author: Maria Matejka 
-Date:   Fri Mar 4 12:55:50 2016 +0100
-
-    Netlink: MPLS routes in kernel
-    
-    Anyway, Bird is now capable to insert both MPLS routes and MPLS encap
-    routes into kernel.
-    
-    It was (among others) needed to define platform-specific AF_MPLS to 28
-    as this constant has been assigned in the linux kernel.
-    
-    No support for BSD now, it may be added in the future.
-
-commit f2010f9c65ca69584c34c762fb3e5e957958478e
-Author: Maria Matejka 
-Date:   Mon Jun 13 15:49:53 2016 +0200
-
-    Static: Protocol rework wrt. struct nexthop changes; MPLS label support
-
-commit 33ad6e0188b56f682a012ca1b782812c96285d51
-Author: Maria Matejka 
-Date:   Wed Mar 2 14:37:18 2016 +0100
-
-    MPLS: added net_addr_mpls variant of net_addr
-
-commit ec5e5d23faa482495c84163c4ae38d9a31bdc00f
-Author: Maria Matejka 
-Date:   Fri Jun 10 14:34:41 2016 +0200
-
-    Nexthop: Support for label stack in nest
-
-commit 5b208e296fed0beddce16188478c5119df610d89
-Author: Maria Matejka 
-Date:   Tue Jun 7 11:46:07 2016 +0200
-
-    Removing (struct rta)->cast. Never used.
-
-commit 4e276a8920ed0496836f002f144943ab42f120f6
-Author: Maria Matejka 
-Date:   Fri May 6 15:48:35 2016 +0200
-
-    Merged multipath and single-path data structures.
-    
-    Dropped struct mpnh and mpnh_*()
-    Now struct nexthop exists, nexthop_*(), and also included struct nexthop
-    into struct rta.
-    
-    Also converted RTD_DEVICE and RTD_ROUTER to RTD_UNICAST. If it is needed
-    to distinguish between these two cases, RTD_DEVICE is equivalent to
-    IPA_ZERO(a->nh.gw), RTD_ROUTER is then IPA_NONZERO(a->nh.gw).
-    
-    From now on, we also explicitely want C99 compatible compiler. We assume
-    that this 20-year norm should be known almost everywhere.
-
-commit 017da76b729cc36c4a3416995b06386235660f42
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 21 16:46:47 2016 +0100
-
-    NEWS and version update
-
-commit 2c33da507046c25d87741fe0ce7947985c8c7a10
-Author: Maria Matejka 
-Date:   Tue Dec 20 20:13:08 2016 +0100
-
-    Netlink: fix occasional netlink hangs on busy machines
-
-commit 256cc8ee0867d7f5314d3a3d7db5429d2bf16b4e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 20 17:39:59 2016 +0100
-
-    BGP: Report capabilities in show protocols all
-
-commit 7d95c44572d79ef15ec8b0220950b4e4374c6bc6
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 15 15:31:25 2016 +0100
-
-    OSPF: Fix ECMP external merging
-    
-    The variable nfa is not cleaned before each loop iteration and can have
-    a wrong value of nfa.nhs_reuse from the previous step.
-    
-    Thanks to Bernardo Figueiredo for the bugreport and analysis.
-
-commit eeba61ccd5d1757fd79fcb0cd42b8dee9f941d7e
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 13 20:18:11 2016 +0100
-
-    Minor cleanups
-
-commit 9e7d3a781075b39a7e0f97e63b6f313955daa661
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 13 17:34:42 2016 +0100
-
-    OSPF: Fix net-summary origination combined with stubnet option
-    
-    Stubnet nodes in OSPF FIB were removed during rt_sync(), but the pointer
-    remained in top_hash_entry.nf, so net-summary LSA origination was
-    confused, reported 'LSA ID collision' and net-summary LSAs were not
-    originated properly.
-    
-    Thanks to Naveen Chowdary Yerramneni for bugreport and analysis.
-
-commit 5e8df049fbf53220735a2eeb6c751e1758869a18
-Author: Ondrej Zajicek (work) 
-Date:   Sat Dec 10 00:11:26 2016 +0100
-
-    Babel: Update to integrated branch
-
-commit 2119ae74c2e3b101bb8c6f5f0413b143d9978c9c
-Author: Ondrej Filip 
-Date:   Wed Dec 7 20:31:12 2016 +0100
-
-    Documentation build system fix
-
-commit 5546aad260a3e569e86e2fd2b5f613202ac70be3
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 19:56:42 2016 +0100
-
-    NEWS and version update
-
-commit 66e5dc157af41547f3806a5980183d95ac9bfcd1
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 19:16:02 2016 +0100
-
-    Doc: Add MP-BGP example config file
-
-commit ac3ad139f648184d44707ab145fde3a03ef5cb6e
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 18:28:07 2016 +0100
-
-    BGP: Add support for flowspec (RFC 5575)
-
-commit b7605d5c953902b461e5c9e87aa3dfa60ddce5bc
-Author: Maria Matejka 
-Date:   Wed Dec 7 17:17:04 2016 +0100
-
-    Doc: Example simple config
-
-commit c42ecaab8d606ae1362a46210e2bc02dbf6f1476
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 16:27:12 2016 +0100
-
-    Tests: Fix build
-
-commit a7848dd880a902f465eecd9ed9ea64673548874a
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 16:20:38 2016 +0100
-
-    Client: No need for birdlib functions
-
-commit 77234bbbde6bc328871af695e4450e6773adbafa
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 15:36:15 2016 +0100
-
-    Basic flow specification support (RFC 5575)
-    
-    Add flow4/flow6 network and rt-table type and operations, config grammar
-    and static protocol support.
-    
-    Squashed flowspec branch from Pavel Tvrdik.
-
-commit b94e5e58dbd33f4d2b9d721c51a9c8c4d8f77bea
-Author: Maria Matejka 
-Date:   Wed Dec 7 15:35:35 2016 +0100
-
-    RPKI: fixed some of the extended warnings
-
-commit ad88b94bca78e010357a6c7806e1d5e01701d4a7
-Merge: d15b0b0a1 af62c0f9f
-Author: Maria Matejka 
-Date:   Wed Dec 7 15:30:46 2016 +0100
-
-    Merge branch 'int-new-rpki-squashed' (early part) into int-new
-
-commit d15b0b0a1b494c14b139d2d28706d82cd6e2f139
-Author: Ondrej Zajicek (work) 
-Date:   Wed Dec 7 14:11:28 2016 +0100
-
-    BGP redesign
-    
-    Integrated and extensible BGP with generalized AFI handling,
-    support for IPv4+IPv6 AFI and unicast+multicast SAFI.
-
-commit af62c0f9f1f6382fe88c8ae5e514f70c0b5b6d05
-Author: Maria Matejka 
-Date:   Wed Dec 7 14:15:35 2016 +0100
-
-    LibSSH may be switched off together with RPKI
-
-commit cdbe1defa4b783715ed29d8d253a55d3efe0b9ed
-Author: Maria Matejka 
-Date:   Wed Dec 7 09:13:29 2016 +0100
-
-    SSH: Commented quirk based on undocumented behavior of LibSSH
-
-commit f7f70bed8f5fd50873f92b6e119de8864c2631a8
-Author: Maria Matejka 
-Date:   Wed Dec 7 09:12:06 2016 +0100
-
-    Make: upgrade Babel makefiles
-
-commit cd6ca9b1f6e5f71667c1fe6027cfb865f1dcebc1
-Author: Pavel Tvrdik 
-Date:   Thu Jun 30 14:56:09 2016 +0200
-
-    filter/test.conf: add ROA check and operator tests
-
-commit e58f8c28d252a9979c07b478091b8d0ef40a9f22
-Author: Pavel Tvrdik 
-Date:   Wed Jun 29 12:21:43 2016 +0200
-
-    Add `.maxlen' operator to all ROA prefixes in filters
-    
-    Example:
-      bird> eval (1.2.0.0/16 max 20 as 1234).maxlen
-      20
-    
-    Todo: Should be described in user docs
-
-commit 69ae5784509d51ee928c99b8b066f68a166bfe18
-Author: Pavel Tvrdik 
-Date:   Wed Jun 29 12:08:28 2016 +0200
-
-    Add `.asn' operator to all ROA prefixes in filters
-    
-    Example:
-      bird> eval (1.2.0.0/16 max 20 as 1234).asn
-      1234
-    
-    Todo: Should be described in user docs
-
-commit f6e8e141df63cd86e344ca659637f23d638d47a2
-Author: Pavel Tvrdik 
-Date:   Wed Jun 29 09:56:33 2016 +0200
-
-    Check table type at `show route for ...'
-
-commit 65d2a88dd2aaef7344cfa62918e3ddf4c72ca50a
-Author: Pavel Tvrdík 
-Date:   Thu Sep 17 17:15:30 2015 +0200
-
-    RPKI protocol with one cache server per protocol
-    
-    The RPKI protocol (RFC 6810) using the RTRLib
-    (http://rpki.realmv6.org/) that is integrated inside
-    the BIRD's code.
-    
-    Implemeted transports are:
-     - unprotected transport over TCP
-     - secure transport over SSHv2
-    
-    Example configuration of bird.conf:
-      ...
-      roa4 table r4;
-      roa6 table r6;
-    
-      protocol rpki {
-        debug all;
-    
-        # Import both IPv4 and IPv6 ROAs
-        roa4 { table r4; };
-        roa6 { table r6; };
-    
-        # Set cache server (validator) address,
-        # overwrite default port 323
-        remote "rpki-validator.realmv6.org" port 8282;
-    
-        # Overwrite default time intervals
-        retry   10;         # Default 600 seconds
-        refresh 60;         # Default 3600 seconds
-        expire 600;         # Default 7200 seconds
-      }
-    
-      protocol rpki {
-        debug all;
-    
-        # Import only IPv4 routes
-        roa4 { table r4; };
-    
-        # Set cache server address to localhost,
-        # use default ports tcp => 323 or ssh => 22
-        remote 127.0.0.1;
-    
-        # Use SSH transport instead of unprotected transport over TCP
-        ssh encryption {
-          bird private key "/home/birdgeek/.ssh/id_rsa";
-          remote public key "/home/birdgeek/.ssh/known_hosts";
-          user "birdgeek";
-        };
-      }
-      ...
-
-commit 2706747f66ab0e7a7f2b8acc6bd7fbd376647258
-Author: Pavel Tvrdik 
-Date:   Thu Jun 9 10:11:39 2016 +0200
-
-    Client: Includes stdlib.h for malloc()
-
-commit 5df4073c81942ea119de90a81431bae71c87157b
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 10:40:57 2016 +0100
-
-    filter/test.conf: Minor changes in order of calls
-
-commit 0eb7f17d9a5f29ffa8edccf9e2698f3fd70b2f22
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 11:55:33 2016 +0100
-
-    nest/a-path.c: Fix description of BS constant (block size)
-
-commit bd7958776baede8175505aa6813ffa96f3ec43fa
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 10:21:43 2016 +0100
-
-    conf/conf.h: Fix a description of a variable in a structure
-
-commit 1b7ddb0ea01aae0be6cb5f89259bad88b5066b1a
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 10:17:23 2016 +0100
-
-    conf/conf.c: Revert some includes removing
-
-commit 4abe781c27abea5f8dd0e041106ea6511c210cb7
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 10:11:12 2016 +0100
-
-    Remove filter/test_bgp_filtering.conf file
-    
-    It was an example filtering configuration from BIRD's wiki.
-
-commit 012a0d6bf8761253c67c40ac236e27b2f6b6ce43
-Author: Pavel Tvrdik 
-Date:   Wed Nov 30 10:06:37 2016 +0100
-
-    Merge test6.conf IPv6 tests into test.conf
-
-commit ed1a908e535e4333b358d83b472453a2ad6d3f51
-Author: Ondrej Zajicek (work) 
-Date:   Fri Nov 25 11:51:38 2016 +0100
-
-    BGP: Fix memory leak in graceful restart code
-    
-    Prefix and bucket tables are initialized when entering established state
-    but not explicitly freed when leaving it (that is handled by protocol
-    restart). With graceful restart, BGP may enter and leave established
-    state multiple times without hard protocol restart causing memory leak.
-
-commit c39a1cb17e396b9c94eec6af3ac26fd333adc3c6
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 14:05:59 2016 +0100
-
-    filter/test.conf: Extend tests
-
-commit 0ed1e850913cb9a9b939c616b90312070c65797e
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 13:46:08 2016 +0100
-
-    filter/test.conf: Reorder tests
-    
-    Tests are sorted from trivial tests to more complex tests
-
-commit 7dea7ccb1074e83d0c5ea2f667deca1f0c938e72
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 12:18:06 2016 +0100
-
-    filter/test.conf: Replace print func with assert and format
-
-commit 4b135d095860cf861ff47c24a10169faa41fe35a
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 12:15:43 2016 +0100
-
-    Birdtest: Add function format in grammar for stringify expression
-
-commit bb721f0d6d00bc2d7944640bfaf1cb266060d972
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 12:10:34 2016 +0100
-
-    Add lp_strdup function for string duplication on linpool
-
-commit 3ec0bedc6077ebd2716f29c68155bab806aaa8d6
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 11:09:55 2016 +0100
-
-    Birdtest: Remove bt_assert command from term
-    
-    The bt_assert function does not return any value, so it was useless to
-    have a option in term definition.
-
-commit 45ec4ce82a3b82f27ff6c44ad11570606733775e
-Author: Pavel Tvrdik 
-Date:   Wed Nov 16 11:03:39 2016 +0100
-
-    Lexer: Add a quotation mark back while parsing quotes
-    
-    Thanks to Ondrej Zajicek for code.
-
-commit 261816b0d4f3d4549a4402b95541b82fc7f10a4b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 15 16:24:39 2016 +0100
-
-    BGP: Cluster list item should be prepended
-    
-    Commit 3c09af41... changed behavior of int_set_add() from prepend to
-    append, which makes more sense for community list, but prepend must be
-    used for cluster list. Add int_set_prepend() and use it in cluster list
-    handling code.
-
-commit 5e3cd0e5b56e6c58cfba4d0d38fbbbed3657889d
-Author: Pavel Tvrdik 
-Date:   Fri Nov 11 17:43:09 2016 +0100
-
-    Birdtest: Replace BT_SUCCESS and BT_FAILURE with 1 and 0
-
-commit fa71b268a8d15d579f50d7f4f92e2edb3b431e05
-Author: Pavel Tvrdik 
-Date:   Fri Nov 11 17:03:43 2016 +0100
-
-    Birdtest: Put hard new lines for strict line width
-    
-    This patch ensures width of output lines from testing framework (not
-    debug output). So output piped lined into file that has default width 80
-    cols is now correctly wrapped.
-
-commit fd328869cc2510808074591f7b9f1b71c6439ec3
-Author: Pavel Tvrdik 
-Date:   Fri Nov 11 17:02:16 2016 +0100
-
-    birdtest: Fix no-forked mode in trie_test
-
-commit 101c5a50aa9cd46bf4b971586d78d7f9041fb656
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 9 19:08:25 2016 +0100
-
-    Filter: Add long community tests
-    
-    Based on Pavel Tvrdik's int-test-lc branch.
-
-commit 9b0a0ba9e671d9134b93c33ab73ccccb352acafa
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 9 16:36:34 2016 +0100
-
-      Unit Testing for BIRD
-    
-     - Unit Testing Framework (BirdTest)
-     - Integration of BirdTest into the BIRD build system
-     - Tests for several BIRD modules
-    
-     Based on squashed Pavel Tvrdik's int-test branch, updated for
-     current int-new branch.
-
-commit 8860e991f6650e47cfe6c1af595fe4fe92a4edfd
-Merge: cc5b93f72 c8cafc8eb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 8 19:27:58 2016 +0100
-
-    Merge branch 'master' into int-new
-
-commit c8cafc8ebb5320ac7c6117c17e6460036f0fdf62
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 8 17:46:29 2016 +0100
-
-    Minor code cleanups
-
-commit cc5b93f72db80abd1262a0a5e1d8400ceef54385
-Merge: 5de0e848d f51b1f556
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 8 17:03:31 2016 +0100
-
-    Merge tag 'v1.6.2' into int-new
-
-commit 920a86e8493fe25008f084f67f368aea9b197efd
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 3 09:53:53 2016 +0100
-
-    Add missing extern
-
-commit e03dc6a984555e3c943735d50376cada2220bac8
-Author: Ondrej Zajicek (work) 
-Date:   Sun Oct 30 23:51:23 2016 +0100
-
-    BFD: Authentication
-    
-    Implement BFD authentication (part of RFC 5880). Supports plaintext
-    passwords and cryptographic MD5 / SHA-1 authentication.
-    
-    Based on former commit from Pavel Tvrdik
-
-commit 29239ba2bbee3e9ec7d17793b25936a1bfc795ca
-Author: Ondrej Zajicek (work) 
-Date:   Thu Oct 27 20:58:21 2016 +0200
-
-    OSPF: Use message authentication interface
-    
-    Based on former commit from Pavel Tvrdik
-
-commit 390601f038b69d5de3841c691f92af0fcd088454
-Author: Ondrej Zajicek (work) 
-Date:   Wed Oct 26 16:07:45 2016 +0200
-
-    RIP: Use message authentication interface
-    
-    Based on former commit from Pavel Tvrdik
-
-commit 64385aee0cc2dfae8297f29ce6724cedf7cc4736
-Author: Pavel Tvrdík 
-Date:   Thu Jan 28 17:05:15 2016 +0100
-
-    DOC: Password algorithm option
-
-commit 56cb3bedc2634a44ea41587566c2889f5b5f5b5b
-Author: Pavel Tvrdík 
-Date:   Tue Jan 26 16:45:13 2016 +0100
-
-    Nest: Add support for MAC algorithms in grammar
-
-commit de2a27e255b6ec834d11c005909b28a150c7c0db
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 25 17:04:17 2016 +0200
-
-    Add generic message authentication interface
-    
-    Add generic interface for generating and verifying MACs (message
-    authentication codes). Replace multiple HMAC implementation with
-    a generic one.
-
-commit 7eec3988758cb4c19a0ab3bf90cab2a4914165be
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 1 16:18:27 2016 +0100
-
-    BSD: Fix build on OpenBSD broken by previous commit
-
-commit 3e236955c9369475872b9b86a58502fa777b50b9
-Author: Maria Matejka 
-Date:   Fri Oct 14 15:37:04 2016 +0200
-
-    Build: switch on -Wextra, get rid of most of the warnings
-    
-    There are several unresolved -Wmissing-field-initializers on older
-    versions of GCC than 5.1, all of them false positive.
-
-commit 17fe57d8dcc89aea520788914b252cf49cf060ff
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 1 11:37:49 2016 +0100
-
-    Log: Fix broken syslog name
-    
-    BIRD passed string from configuration to openlog(), which kept it
-    internally. After reconfiguration the old string was freed, therefore
-    openlog had invalid copy.
-    
-    Thanks to Chris Caputo for the original patch.
-
-commit 3213273d8261c69a343fcd7d4c9607385dfdbb65
-Author: Ondrej Filip 
-Date:   Thu Oct 27 11:08:28 2016 +0200
-
-    IANA assigned a different number to large BGP communities - changed.
-
-commit c68e8cd374f16a1d659c80f9ebe503f2dd0d4acb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 18 13:06:05 2016 +0200
-
-    Filter: Minor formatting changes in test.conf
-
-commit 3c09af416939d26c252aa1b339b52fd8f9f8e774
-Author: Pavel Tvrdik 
-Date:   Thu Oct 13 16:57:21 2016 +0200
-
-    Clist: The add() function will append a new value
-    
-    The add() function used to prepend a new community to clist, but after
-    this fix the add() function appends new community.
-
-commit 5fd7dacadc3cd8f91f66cb56e3a9ef81028aa102
-Author: Pavel Tvrdik 
-Date:   Thu Oct 13 15:17:41 2016 +0200
-
-    Filter: Expand testing of large community sets
-
-commit 2e7fb11a6e31324151c6db98df2fe26d2d6cffab
-Author: Maria Matejka 
-Date:   Wed Oct 12 14:16:34 2016 +0200
-
-    Fixed memory bloating on kernel merge paths together with export filter.
-    
-    Some memory was being allocated from bad linpool, not from the given one
-    as they should.
-    
-    Thanks to Madhu and Justin Cattle for reporting this.
-
-commit 9df52a98e2eae28f219510d4c3d65ec43a50c394
-Author: Pavel Tvrdik 
-Date:   Mon Sep 5 11:20:28 2016 +0200
-
-    Doc: Change debug to { flag1|flag2|flag3  [, ...] } style
-    
-    Thanks to Micah Anderson for bug report and Ondrej Zajicek for the idea!
-
-commit 9fcb9637b55d234dfedfcb54bd76ed5a9570b7a1
-Author: Pavel Tvrdik 
-Date:   Mon Sep 19 16:01:29 2016 +0200
-
-    Nest: Remove trailing whitespaces
-
-commit 3d28f0145382feddcf7f66c0a20b6c5b3e0edbc9
-Author: Pavel Tvrdik 
-Date:   Mon Sep 26 18:05:51 2016 +0200
-
-    Doc: Fix deprecated unescaped braces in perl script
-    
-    This commit should fix warning `make docs'
-    
-    ./sgml2html bird.sgml Unescaped left brace in regex is deprecated,
-      passed through in regex; marked by <-- HERE in m/\\nameurl{ <-- HERE
-        (.*)}{(.*)}/ at fmt_latex2e.pl line 287.
-
-commit c2564d34af9e01a828c24b0be7f269e5b036b5da
-Author: Pavel Tvrdik 
-Date:   Sat Oct 1 12:50:29 2016 +0200
-
-    Tree/Trie: Check the end of buffer
-    
-    We set buffer->pos to buffer->end in function buffer_print() when
-    bvsnprintf() failed, so there would be uninitialized memory between
-    the old buffer->pos and the current buffer->pos.
-
-commit 7935b9d21228dcd1eb95ebcb056b2a815e3e854b
-Author: Pavel Tvrdik 
-Date:   Thu Sep 29 18:08:40 2016 +0200
-
-    Doc: Add tag for links to RFCs
-
-commit 9c20a8b7ae69487397392c720a5e75087c343df1
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 12:35:36 2016 +0200
-
-    Doc: Fix inline 
-    
-    Don't make space before or after link name.
-
-commit 963929df021ae54d8ff4cd18ca228932fc89dc13
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 12:04:44 2016 +0200
-
-    Doc: Do not use symlinks for files
-
-commit 70104ef4fb5f8105422d6eb811a93b68aeae709d
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 11:46:40 2016 +0200
-
-    Doc: Generate one-sided version
-    
-    This removes jumping offset for odd and even pages for binding book.
-
-commit f9bd11c337afcc3e95b459e3901a4ca28cb14b85
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 11:39:56 2016 +0200
-
-    Doc: Use [table t] or [table name]
-
-commit 74d76f6c3877e4a745fb63b55486810322076153
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 11:36:44 2016 +0200
-
-    Doc: Fix unnecessary special chars
-
-commit f15dc6813870565d01378265ab20e017757af220
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 10:59:43 2016 +0200
-
-    Doc: Enable break lines in 
-
-commit f5952c7343841fe4b7b63b7a56e95aba104f2e82
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 10:32:28 2016 +0200
-
-    Doc: Daemon command-line options alphabet order
-
-commit 22558357d45c27583156f8c11412e37ce48a42e0
-Author: Pavel Tvrdik 
-Date:   Mon Oct 3 10:22:24 2016 +0200
-
-    Doc: Add command-line options --version, --help
-
-commit b9864aa87193ac1a5ebbc04d24ec782a1fe9637a
-Author: Pavel Tvrdik 
-Date:   Mon Sep 26 18:00:59 2016 +0200
-
-    Doc: Add labels to all chapters and options
-
-commit a2df7c0303d235f4122969243e9df152a8a16dcb
-Author: Pavel Tvrdik 
-Date:   Thu Sep 29 14:05:25 2016 +0200
-
-    Doc: Generate clickable PDF
-
-commit 9faf72c8cc9a099b41c90ee1822e8bca22fd0596
-Author: Pavel Tvrdik 
-Date:   Thu Sep 29 11:20:04 2016 +0200
-
-    Doc: Fix whitespaces
-
-commit a998836d4bd4df8820e67f51e16d81a5a8dc9e9b
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 4 23:19:35 2016 +0200
-
-    Filter: fix missing separator
-
-commit a46e01eeef17a7efe876618623397f60e62afe37
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 4 12:45:39 2016 +0200
-
-    Nest: Fix signedness of large communities
-
-commit cec4a73ccb22ed412e87560e4210b6df40832aad
-Author: Ondrej Zajicek (work) 
-Date:   Tue Oct 4 00:31:43 2016 +0200
-
-    Doc: Documentation for large communities
-
-commit 60566c5c804070c145fafd75ef2c17efb489a1eb
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 1 22:31:01 2016 +0200
-
-    Filter: large community sets
-    
-    Add support for lc sets to filter code. Grammar of (small) community sets
-    has to be updated to avoid parser collisions.
-
-commit 66dbdbd993115c57acafdb776d2165d0b4a90a45
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 1 12:50:29 2016 +0200
-
-    BGP: Support for large communities
-    
-    Add support for large communities (draft-ietf-idr-large-community),
-    96bit alternative to RFC 1997 communities.
-    
-    Thanks to Matt Griswold for the original patch.
-
-commit f51b1f556595108d53b9f4580bfcb96bfbc85442
-Author: Ondrej Zajicek (work) 
-Date:   Thu Sep 29 15:06:19 2016 +0200
-
-    NEWS and version update
-
-commit 5bf35a9aee448ce7e3493ec7b80c84c8f5f39242
-Author: Pavel Tvrdik 
-Date:   Thu Sep 29 13:28:18 2016 +0200
-
-    Docs: fix BFD label
-    
-    BFD headline will appear in Table of Contents again.
-
-commit ccd2a3eda24230df550e9880f4340fc6341c8f52
-Author: Maria Matejka 
-Date:   Thu Sep 29 12:00:53 2016 +0200
-
-    Kernel socket missing err_hook fix
-    
-    Thanks to Tim Weippert for bugreport.
-
-commit 79e2293ab2abbd92bb3326a95759a4ca32d9af81
-Author: Ondrej Zajicek (work) 
-Date:   Thu Sep 22 13:34:56 2016 +0200
-
-    NEWS and version update
-
-commit 768d5e1058693d2bfb7c3bcbe04306097c3246a0
-Author: Pavel Tvrdik 
-Date:   Tue Sep 20 15:13:01 2016 +0200
-
-    Add !~ operator to filter grammar
-
-commit 75ac3d199d1fd5b199dd753915234b8634c272e5
-Author: Ondrej Zajicek 
-Date:   Wed Sep 21 12:07:59 2016 +0200
-
-    Remove cvsignore
-    
-    We have gitignore
-
-commit 6e75d0d27fe85f12a22928e5729465823704281e
-Author: Ondrej Zajicek (work) 
-Date:   Mon Sep 19 12:29:56 2016 +0200
-
-    KRT: Add krt_scope attribute
-    
-    Add a new route attribute, krt_scope, to expose the Linux kernel route
-    scope. Constants from /etc/iproute2/rt_scopes (prefixed by "ips_") are
-    expected to be used with the attribute. Both import and export are
-    supported.
-    
-    Also, the patch fixes device route export to the kernel, by setting link
-    scope automatically.
-
-commit 292f7858e60b0dffd8c06f6818d90ccf3b34e0b2
-Author: Pavel Tvrdik 
-Date:   Thu Sep 8 16:27:40 2016 +0200
-
-    Main: Improve BIRD help messages
-
-commit 6273fcf072fc5789ebabf4f1acd6fc6c9fa143ee
-Author: Pavel Tvrdik 
-Date:   Wed Sep 7 14:58:51 2016 +0200
-
-    Add stdlib.h to client/commands.c
-
-commit 0f5054f6850c7419933a6337a34263f565663ee3
-Author: Pavel Tvrdik 
-Date:   Thu Sep 8 13:45:36 2016 +0200
-
-    BFD: Fix invalid read from pollfd array
-    
-    It is possible that sockets_add() are called between sockets_prepare()
-    and sockets_fire() during poll loop in birdloop_main(), so we need to
-    use loop->poll_fd.used instead of loop->sock_num to find the last field.
-
-commit a290da25a16b7c79d4a7a87f522b4068bca04979
-Author: Pavel Tvrdik 
-Date:   Tue Sep 6 17:08:45 2016 +0200
-
-    rt-table: Fix kernel protocol export filter memory bug
-    
-    Kernel protocol calls rt_export_merged(), which used @rte_update_pool for
-    temporary allocations, supposing it is called from other functions from
-    rt-table.c that handles locking and flushing of the linpool. Therefore,
-    linpool was not flushed properly and memory leaked.
-    
-    Add linpool argument to rt_export_merged() and use @krt_filter_lp when
-    called from kernel protocol.
-    
-    Thanks to Justin Cattle and Alexander Frolkin for the bugreport.
-    
-    (Commit squashed and updated by Ondrej Zajicek)
-
-commit bc00f058154bb4a630d24d64a55b5f181d235c63
-Author: Pavel Tvrdik 
-Date:   Tue Sep 6 17:18:15 2016 +0200
-
-    Filter: Prefer xmalloc/xfree to malloc/free
-
-commit 4adcb9df1bf551cc5fd1145c09af1843fdc4fe85
-Author: Ondrej Zajicek (work) 
-Date:   Thu Sep 15 14:59:06 2016 +0200
-
-    KRT: Add kernel metric protocol option
-    
-    Kernel routes with different metrics do not clash with each other,
-    therefore using dedicated metric value is a reliable way to avoid
-    overwriting routes from other sources (e.g. kernel device routes).
-    
-    Although kernel route metric could already be set as a route attribute by
-    filters, that is not consistent with the way how Linux kernel handles
-    route metric - not just a route attribute, but a part of a route key.
-
-commit 2feaa6931bfe39eba696b33b0c8aac13d313b223
-Author: Ondrej Zajicek (work) 
-Date:   Wed Sep 14 11:40:15 2016 +0200
-
-    KRT: Support for IPv6 ECMP
-    
-    Linux represents IPv6 ECMP routes as a sequence of unipath routes with
-    the same prefix. We have to translate between our representation (one
-    route with multipath next hop) and the Linux representation in both
-    directions.
-    
-    Proper learning of alien IPv6 ECMP routes still not supported.
-    
-    Thanks to Mikhail Sennikovskii for the original patch.
-
-commit 84cac51a51fc29349077e8cecadf1aed11f9b824
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 30 17:17:27 2016 +0200
-
-    Nest: Keep multipath next hops sorted
-
-commit a1839f3c61af66814a8c52b9ad28e59aab4ede0e
-Author: Ondrej Zajicek (work) 
-Date:   Wed Aug 31 14:02:41 2016 +0200
-
-    KRT: Fix trivial error
-
-commit f9f2e280ea4fa1af19d8ce9e54abeb495694c0d5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 30 12:43:46 2016 +0200
-
-    KRT: Forbid path merging on BSD
-    
-    We support ECMP routes only on Linux. Exported routes are checked in
-    krt_capable(), but a route generated during path merging avoids this
-    check.
-
-commit 768d013267bd2a52bab70ba6d413f49365fb31e3
-Merge: 678c97f21 d107ef78d
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 23 17:35:26 2016 +0200
-
-    Merge remote-tracking branch 'origin/misc-fixes'
-
-commit 678c97f21ef15c98546f41647f3244799a37db1f
-Author: Ondrej Zajicek (work) 
-Date:   Tue Aug 23 17:33:00 2016 +0200
-
-    Minor README update
-
-commit d107ef78df2564cba75af1a6dcc9894c4468b207
-Author: Pavel Tvrdik 
-Date:   Tue Aug 16 13:02:32 2016 +0200
-
-    Whitespace fixes
-
-commit dbac8793bd88279fd8956ce42db7bd2230965948
-Author: Pavel Tvrdik 
-Date:   Tue Aug 16 10:42:12 2016 +0200
-
-    Add link to INSTALL in README file
-
-commit 9b3d2464cd6dafdd3021f4513f24d19d56d42d3d
-Author: Pavel Tvrdik 
-Date:   Tue Aug 16 10:15:58 2016 +0200
-
-    Rewrote README file
-    
-    * Made structure with headlines,
-    * reordered,
-    * kicked out 'What is missing' part,
-    * Updated content by home page site and user docs
-
-commit 671ddd5b05cf35b2ab7b80f1d13641c875f22e77
-Author: Ondřej Surý 
-Date:   Tue Aug 16 09:25:50 2016 +0200
-
-    Add .gitignore to ignore generated files
-
-commit 33d22f0e9e79c387c492d1cf16bdb723ca1d588a
-Author: Ondřej Surý 
-Date:   Tue Aug 16 09:24:12 2016 +0200
-
-    whitespace fixes
-
-commit 61e6725335fbba86175ec770c1e94c5f60e76d5c
-Author: Ondřej Surý 
-Date:   Tue Aug 16 09:23:55 2016 +0200
-
-    Include  in cf-lex.l to avoid UINTx_MAX redefinition
-
-commit 0ea2afe67150661328c93679587740fbd8928b2a
-Author: Pavel Tvrdik 
-Date:   Mon Aug 15 16:16:36 2016 +0200
-
-    Adds mailing list address at the top of README file
-
-commit 13a31a4001e02ea7c84d26cbeaaa9fea816736f7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 20 15:55:45 2016 +0200
-
-    Babel: Immediately update hello interval on interface reconfigure
-    
-    An interface reconfiguration may change both the hello and update
-    intervals. An update interval change is immediately put into effect,
-    while a hello interval change is not. This also updates the hello
-    interval immediately (if the new interval is shorter than the old one),
-    and sends a hello to notify peers of the change.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit a08a81c6b40dcf07e786b67e5015fc91a44333ca
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 20 15:31:25 2016 +0200
-
-    Netlink: Fix build with older headers missing IFA_FLAGS
-
-commit e37d2e3e708db78f9b8f15eb34bb266cfae7bb42
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jul 20 15:06:57 2016 +0200
-
-    Netlink: Ignore tentative addresses
-    
-    Ignore tentative IPv6 addresses and wait until finish of Duplicate
-    Address Detection (We got notification when an address is no longer
-    tentative) to avoid problems when protocols try to use interfaces
-    with tentative link-local addresses.
-    
-    Based on patch from Jan Moskyto Matejka
-
-commit 0a21c21112eff1286a0a2a7f7afc812f8d16cfa2
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 15:40:57 2016 +0200
-
-    Doc: Fix password ID option description
-    
-    Thanks to Alexander Velkov for noticing it
-
-commit c6ed5a0f9925476714d6b351c61dbce704a4f09d
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 14:38:36 2016 +0200
-
-    Babel: Do not maintain feasibility distance for our own routes
-    
-    We do not need to maintain feasibility distances for our own router
-    ID (we ignore the updates anyway). Not doing so makes the routes be
-    garbage collected sooner when export filters change.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 0f673666017bfc9c05c9495ae53bc323b9dc6660
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 14:28:53 2016 +0200
-
-    Babel: Do not keep an infeasible route as selected
-    
-    When a route becomes infeasible it should not be kept as selected; this
-    is forbidden by section 3.6 of the RFC and prevents subsequent updates
-    from the same router ID from replacing it.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 5d6ca220850c615126ea6820f8c05528269feec6
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 14:23:41 2016 +0200
-
-    Babel: Send wildcard retractions on shutdown and startup
-    
-    This makes BIRD send a wildcard retraction on all interfaces before
-    shutting down and right after starting up. This helps ensure that
-    neighbours will discard the announced routes as soon as possible,
-    rather than only after the normal timeout procedures.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit ecae2f43f37df642e5098201a0472802e6a70e78
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 13:33:02 2016 +0200
-
-    Babel: Rework handling of retractions
-    
-    An update with wildcard AE and infinite metric should be treated as a
-    global retraction of all prefixes announced by that neighbour, per
-    section 4.4.9 of the RFC. In addition, router ID and seqno in retraction
-    updates should be ignored. This reworks the handling of retractions and
-    adjusts the parser to handle all this correctly.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 12640c149976e1eca54d9c22c593d07a27c49d42
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 12:16:51 2016 +0200
-
-    Babel: Documentation updates
-    
-    This updates the documentation to correctly mention Babel when protocols
-    are listed, and adds examples and route attribute documentation to the
-    Babel section of the docs.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 321ff8c4049ec6c2fa198858b4a7f1814ce05e39
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jul 19 11:57:20 2016 +0200
-
-    Babel: Make sure intervals do not overflow
-    
-    Intervals are carried as 16-bit centisecond values, but kept internally
-    in 16-bit second values, which causes a potential for overflow. This adds
-    some checks to make sure this does not happen.
-    
-    Signed-off-by: Toke Høiland-Jørgensen 
-
-commit 6887f409f0766c60dd8c3d3fdf01a1d989c090a5
-Author: Ondrej Filip 
-Date:   Sun Jul 17 14:54:52 2016 +0200
-
-    Prepare for longer interface names - clean up of the code.
-
-commit ea0cb652e91d871e7808e93aa15ef34fc453c4fc
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jul 11 20:41:32 2016 +0200
-
-    BGP: Fix extended messages
-    
-    Change attribute length limit to handle extended (64 kB) messages.
-    
-    Do not mix updates and withdraws (RFC 7606).
-
-commit f0b822a831d0f0f593bbedf0a7f15b94c3ca1d43
-Author: Ondrej Zajicek (work) 
-Date:   Mon Jul 11 20:22:55 2016 +0200
-
-    Log: Fix error handling of debug file open
-    
-    Logging is not yet initialized, we have to use fprintf() here.
-    
-    Thanks to Pavel Tvrdik for noticing and debugging it.
-
-commit f1f39bb9d8e2260fe181240dd8194b06bdcfb54f
-Author: Ondrej Zajicek (work) 
-Date:   Fri Jul 1 11:03:13 2016 +0200
-
-    Filter: Fixes reconfiguration with last_nonaggregated operator
-
-commit 5de0e848de06a9187046dbc380d9ce6a6f8b21a2
-Author: Pavel Tvrdik 
-Date:   Thu Jun 30 15:00:47 2016 +0200
-
-    filter/test.conf: fixes formating
-
-commit 775a5a81958e66a69663803dd2e731e3800da9e7
-Author: Ondrej Zajicek (work) 
-Date:   Wed Jun 29 14:11:03 2016 +0200
-
-    BGP: Skip empty path segments in received AS_PATH
-    
-    Although RFC 4271 does not forbid empty path segments, they are useless
-    and some implementations consider them invalid. It is clarified in RFC 7606,
-    specifying that AS_PATH with empty segment is considered malformed.
-
-commit 8f01879c5629bd714dfeec968337cfcd4dbe6a87
-Author: Pavel Tvrdík 
-Date:   Tue Mar 29 10:37:31 2016 +0200
-
-    cppcheck: fix va_end() functions
-
-commit 044e123fd34a17b13d7636def38542511f9c6baf
-Author: Pavel Tvrdik 
-Date:   Thu Jun 9 10:11:39 2016 +0200
-
-    Client: Includes stdlib.h for malloc()
-
-commit 122deb6d5b14f46f3cfb25bf3f5726005d6a3b3e
-Author: Ondrej Zajicek (work) 
-Date:   Thu Jun 9 00:30:41 2016 +0200
-
-    Filters: Fixes pm_same() w.r.t. ASN ranges and ASN expressions
-    
-    This is necessary for proper detection of filter changes during
-    reconfigurations.
-
-commit 18c53c456704f8f0ccbdf6eb8ba5f82cb43aeba7
-Author: Pavel Tvrdik 
-Date:   Thu Apr 7 12:18:57 2016 +0200
-
-    Fix declaration of shared global variables async_*
-    
-    In a header file write it with extern keyword. And in one of the *.c
-    file declare it without extern keyword.
-
-commit a0fe1944d12771d60986a352552e5f4b306e5f7f
-Author: Ondrej Filip 
-Date:   Wed Jun 8 16:22:44 2016 +0200
-
-    Add AS# ranges to bgpmask.
-
-commit 90dc0f08434323535f84d64e113dae84675c46b2
-Author: Ondrej Filip 
-Date:   Sat Jun 4 12:38:06 2016 +0200
-
-    Small typo in documentation example, submitted by Felix Eckhofer.
-
-commit 9dbcb11cb50167e959536e5a564ee9aafae509c6
-Author: Maria Matejka 
-Date:   Mon May 30 14:28:22 2016 +0200
-
-    Unix IO: Tried to fix strange behavior after POLLHUP or POLLERR.
-
-commit 925aa14912329bafff38a9e5a3f675809ff97785
-Author: Maria Matejka 
-Date:   Tue May 17 13:19:18 2016 +0200
-
-    After-master-merge simple fixes.
-    
-    BSD lib/setkey.h and lib/sysio.h #include fixes.
-    OpenBSD's flex needs -o param without space.
-    V6ONLY for SK_IP fix.
-
-commit d6f027ef3474bbc93d06865b0031bb6aae4fc031
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 17 17:59:38 2016 +0200
-
-    Make: Silence echo in verbose mode
-
-commit 379f99594086a0934155bd09696938dc39d1802d
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 17 16:19:50 2016 +0200
-
-    BSD: Fix setkey in int-new branch
-
-commit 08b3a24da5bbd1bab09d6a2400cdf7705d5e18a7
-Author: Ondrej Zajicek (work) 
-Date:   Tue May 17 15:21:49 2016 +0200
-
-    IO: Minor changes in socket AF handing
-    
-    AF can be specified implicitly by saddr or daddr, flags SKF_V4ONLY and
-    SKF_V6ONLY are to be removed.
-
-commit 5af7b59660be615fbbd7c20b92b71321c003c43a
-Merge: d39d41fbd b66a9e2f3
-Author: Maria Matejka 
-Date:   Fri May 13 13:48:04 2016 +0200
-
-    Merge branch 'int-new' of gitlab.labs.nic.cz:labs/bird into int-new
-
-commit d39d41fbda2ec86ea2bac27308eb4fb16ecc4702
-Author: Maria Matejka 
-Date:   Fri May 13 13:46:46 2016 +0200
-
-    Hash: Fix of previous commit
-
-commit b66a9e2f3376b4cb07ef4cc318f70a9c794f407a
-Merge: 659f80f26 3f2c7600f
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 21:47:50 2016 +0200
-
-    Merge branch 'master' into int-new
-
-commit 659f80f262a83d600d5f095fb8a03e912d3fbe64
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 21:47:29 2016 +0200
-
-    Make int-new compilable again
-
-commit 3f2c7600fa2e35b1028c755aa06092b5991e1a8e
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 21:29:04 2016 +0200
-
-    We don't need bvsnprintf() in BIRD client
-
-commit 776d6b2c05fe8b14e5ec357eca24fe59c549bfa4
-Merge: af678af0d 54ac0bece
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 18:11:12 2016 +0200
-
-    Merge remote-tracking branch 'origin/int-new' into int-new
-
-commit af678af0d5c9ef3d8afdc0789b33dd0c40b6d6e5
-Merge: 286e2011d 8e433d6a5
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 17:49:12 2016 +0200
-
-    Merge remote-tracking branch 'origin/master' into int-new
-
-commit 54ac0beceedb9b36eb58dd8599ba903c668382f6
-Author: Maria Matejka 
-Date:   Thu May 12 16:16:25 2016 +0200
-
-    Hash: fixed rta hashing wrt. structure padding
-
-commit 286e2011d22ea6914d5f2db5de3f11911a1fb663
-Author: Ondrej Zajicek (work) 
-Date:   Thu May 12 16:04:47 2016 +0200
-
-    Miscellaneous minor fixes
-
-commit 8e433d6a529a883d566dc1d5a4afe0f1e2750baf
-Author: Pavel Tvrdik 
-Date:   Thu May 12 15:49:44 2016 +0200
-
-    Prog Doc: Complete several missing parameters
-
-commit fff7498d6a54d4bcce4bd56db7ef3fb28be35578
-Author: Pavel Tvrdik 
-Date:   Thu May 12 13:37:23 2016 +0200
-
-    User Doc: Fix several typing error
-
-commit 31e9e10144a6994773a04d94903fa3bdde6de91e
-Author: Stijn Tintel 
-Date:   Tue May 10 16:45:35 2016 +0300
-
-    netlink: update struct msghdr
-    
-    The netlink code assumes an order for the members of struct msghdr.
-    This breaks recvmsg and sendmsg with musl libc on mips64. Fix this by
-    using designated initializers instead.
-    
-    Signed-off-by: Stijn Tintel 
-
-commit 0c6dfe52369a59d7f3da8ee6bc7c505e3da5c064
-Merge: 7a7ac6568 92912f063
-Author: Maria Matejka 
-Date:   Tue May 10 14:30:49 2016 +0200
-
-    Merge branch 'int-new' into int-new-merged
-
-commit 92912f063a94bd7c743a25628ca2073380e09ef4
-Merge: a8caff322 2003a1840
-Author: Maria Matejka 
-Date:   Tue May 10 14:21:15 2016 +0200
-
-    Merge remote-tracking branch 'origin/rte-update' into int-new
-
-commit a8caff322f83f1303c408bbefc440aeea9e619a3
-Author: Maria Matejka 
-Date:   Wed Apr 27 14:45:14 2016 +0200
-
-    Portability: Fixed C extension error generated by CLang.
-    
-    sysdep/linux/netlink.c:921:10: error: fields must have a constant size:
-    'variable length array in structure' extension will never be supported
-        char buf[128 + KRT_METRICS_MAX*8 + nh_bufsize(a->nexthops)];
-             ^
-    1 error generated.
-
-commit 7152e5efbb0fade868d5f2d2c7bc10ed52b3d19d
-Author: Maria Matejka 
-Date:   Tue Apr 12 11:14:54 2016 +0200
-
-    Build system reworked to one global Makefile with includes and no nesting
-    
-    Also removed the lib-dir merging with sysdep. Updated #include's
-    accordingly.
-    
-    Fixed make doc on recent Debian together with moving generated doc into
-    objdir.
-    
-    Moved Makefile.in into root dir
-    
-    Retired all.o and birdlib.a
-    Linking the final binaries directly from all the .o files.
-
-commit f7a99acb4eac23223f51ce83b8081cc9695fef1e
-Author: Pavel Tvrdik 
-Date:   Tue May 3 09:32:49 2016 +0200
-
-    Initialize variable ifr in sk_setup()
-    
-    ==00:00:00:02.831 2468== Syscall param socketcall.setsockopt(optval) points to uninitialised byte(s)
-    ==00:00:00:02.831 2468==    at 0x513BDEA: setsockopt (in /usr/lib/libc-2.23.so)
-    ==00:00:00:02.831 2468==    by 0x45C7AF: sk_setup (io.c:1216)
-    ==00:00:00:02.831 2468==    by 0x45CDFF: sk_open (io.c:1417)
-    ==00:00:00:02.831 2468==    by 0x44B562: rip_open_socket (packets.c:740)
-    ==00:00:00:02.831 2468==    by 0x4481A7: rip_iface_locked (rip.c:616)
-    ==00:00:00:02.831 2468==    by 0x4133E4: olock_run_event (locks.c:177)
-    ==00:00:00:02.831 2468==    by 0x45A6DE: ev_run (event.c:85)
-    ==00:00:00:02.831 2468==    by 0x45A7AD: ev_run_list (event.c:142)
-    ==00:00:00:02.831 2468==    by 0x45E0FC: io_loop (io.c:2066)
-    ==00:00:00:02.831 2468==    by 0x463B56: main (main.c:845)
-    ==00:00:00:02.831 2468==  Address 0xffefffd24 is on thread 1's stack
-    ==00:00:00:02.831 2468==  in frame #1, created by sk_setup (io.c:1188)
-    ==00:00:00:02.831 2468==  Uninitialised value was created by a stack allocation
-    ==00:00:00:02.831 2468==    at 0x45C6BB: sk_setup (io.c:1188)
-
-commit 1e3810f9f8e251d82a8157b39df9be196315c43e
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 29 13:25:46 2016 +0200
-
-    Doc: Minor fix
-
-commit 52bae25580e6e0edae8384885818044ef89103e3
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 29 13:07:21 2016 +0200
-
-    NEWS and version update
-
-commit 937e75d8f1d203b637ba0ea050026f9af92485f3
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 28 18:01:40 2016 +0200
-
-    Add the Babel routing protocol (RFC 6126)
-    
-    This patch implements the IPv6 subset of the Babel routing protocol.
-    Based on the patch from Toke Hoiland-Jorgensen, with some heavy
-    modifications and bugfixes.
-    
-    Thanks to Toke Hoiland-Jorgensen for the original patch.
-
-commit a7baa09862e6b4856cd66197c6bd74c7df336b8f
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 13 14:30:28 2016 +0200
-
-    BSD: Add the IPsec SA/SP database entries control
-    
-    Add code for manipulation with TCP-MD5 keys in the IPsec SA/SP database
-    at FreeBSD systems. Now, BGP MD5 authentication (RFC 2385) keys are
-    handled automatically on both Linux and FreeBSD.
-    
-    Based on patches from Pavel Tvrdik.
-
-commit 43fc6bb0fb720762f12124076e2241855741ceb5
-Author: Ondrej Zajicek (work) 
-Date:   Mon Apr 11 00:41:10 2016 +0200
-
-    Documentation update
-
-commit e90dd656cc9126e1fbcc45fb77a10bf1baa2a1b5
-Author: Ondrej Zajicek (work) 
-Date:   Fri Apr 8 15:10:57 2016 +0200
-
-    Direct: Implement check link for direct protocol
-    
-    When enabled, direct protocol generates routes only if the underlying
-    link state is up.
-
-commit 2003a1840731bd57365876e48c96c5a1ea0348cb
-Author: Maria Matejka 
-Date:   Fri Apr 8 13:08:03 2016 +0200
-
-    Route update: move table lookup from protocols into rte_update2().
-    
-    Many protocols do almost the same when creating a rte_update request
-    before calling rte_update2(). This commit should simplify the protocol
-    side of the route-creation routine.
-
-commit 7a7ac656829223713f9e6bcef63d2b5a5efce7d2
-Merge: 4bdf1881d 06edbb67e
-Author: Maria Matejka 
-Date:   Fri Apr 8 12:09:31 2016 +0200
-
-    Merge branch 'master' into int-new-channels
-
-commit f2ae2badff37c008ba8217a12f8ee6dc6a3c5a39
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 7 12:20:45 2016 +0200
-
-    Main: Add local option
-    
-    Add option that changes default paths for config file and control socket
-    to the current working directory.
-
-commit 4bdf1881dc6230b742d7efcaad8eeac4ed25f445
-Author: Maria Matejka 
-Date:   Mon Apr 4 16:17:11 2016 +0200
-
-    Channelize: rt_notify arg conversion table -> channel
-
-commit 0c8c8151fc1fb0dbfcd682153f50192ea1369884
-Merge: a815d62d5 1a7daab12
-Author: Maria Matejka 
-Date:   Thu Apr 7 09:58:31 2016 +0200
-
-    Merge branch 'int-new-channels' of gitlab.labs.nic.cz:labs/bird into int-new-channels
-
-commit 06edbb67ed807811654e7fd8f0f9b83766430216
-Author: Ondrej Zajicek (work) 
-Date:   Thu Apr 7 01:10:24 2016 +0200
-
-    Nest: Reset export route counter during graceful restart
-    
-    Counter exp_routes is increased during initial route feed after GR
-    recovery, so it has to start with zero, otherwise BIRD will end with
-    double value in exp_routes.
-
-commit bd22d7f41d37dec8f7b8b845f6a18c775e66ddfc
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 6 11:57:28 2016 +0200
-
-    IO: Avoid multiple event cycles in one loop cycle.
-    
-    Event cycle may took too much time and trigger next timer events, so
-    avoid cycling between timer and event cycles inside the loop cycle.
-
-commit 9e7b3ebdf9556d7464911dd39e862b1c003319b3
-Author: Ondrej Zajicek (work) 
-Date:   Wed Apr 6 11:49:34 2016 +0200
-
-    IO: Replace RX priority heuristic with explicit mark
-    
-    In BIRD, RX has lower priority than TX with the exception of RX from
-    control socket. The patch replaces heuristic based on socket type with
-    explicit mark and uses it for both control socket and BGP session waiting
-    to be established.
-    
-    This should avoid an issue when during heavy load, outgoing connection
-    could connect (TX event), send open, but then failed to receive OPEN /
-    establish in time, not sending notifications between and therefore
-    got hold timer expired error from the neighbor immediately after it
-    finally established the connection.
-
-commit e86cfd41d975122cc944db68383aef4028da9575
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 23 18:25:15 2016 +0100
-
-    KRT: Fix route learn scan when route changed
-    
-    When a kernel route changed, function krt_learn_scan() noticed that and
-    replaced the route in internal kernel FIB, but after that, function
-    krt_learn_prune() failed to propagate the new route to the nest, because
-    it confused the new route with the (removed) old best route and decided
-    that the best route did not changed.
-    
-    Wow, the original code (and the bug) is almost 17 years old.
-
-commit ea0a8be2ff5afb8385a69cc0df70984e0fd3a570
-Author: Maria Matejka 
-Date:   Wed Mar 30 16:21:32 2016 +0200
-
-    IO/Poll: fix mistaken variable merge
-    
-    The events variable is used in the short loop decision. The reasons are
-    not much clear, keeping this to keep the former behaviour.
-
-commit 54bb032d21d25a2221877e15325e79add10278ec
-Author: Maria Matejka 
-Date:   Wed Mar 23 01:45:37 2016 +0100
-
-    Birdlib: Modify lists to avoid problems with pointer aliasing rules
-    
-    The old linked list implementation used some wild typecasts and required
-    GCC option -fno-strict-aliasing to work properly. This patch fixes that.
-    However, we still keep the option due to other potential problems.
-    
-    (Commited by Ondrej Santiago Zajicek)
-
-commit 665b8e5283df4f64eb44d8fb434489be1474b5d4
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 22 13:35:40 2016 +0100
-
-    Birdlib: Do cleanups after remove/free
-    
-    To avoid byzantine behavior in case of some errors, linked lists are
-    cleared after rem_node() and resource headers are cleared after rfree().
-
-commit 39a6b19d6d7e420805bd75783b77bf442745bccb
-Author: Ondrej Zajicek (work) 
-Date:   Tue Mar 22 12:51:31 2016 +0100
-
-    OSPF: Fix bogus LSA ID collisions between received and originated LSAs
-    
-    After restart, LSAs locally originated by the previous instance are
-    received from neighbors. They are installed to LSA db and flushed. If
-    export of a route triggers origination of a new external LSA before flush
-    of the received one is complete, the check in ospf_originate_lsa() causes
-    origination to fail (because en->nf is NULL for the old LSA and non-NULL
-    for the new LSA). The patch fixes this by updating the en->nf for LSAs
-    being flushed (as is already done for empty ones). Generally, en->nf
-    field deserves some better description in the code.
-    
-    Thanks to Jigar Mehta for analyzing the problem.
-
-commit 0a505706bc909b2625d308ffb2eaed3dc8398538
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 9 17:51:50 2016 +0100
-
-    Minor changes in documentation
-
-commit a459f4df16eca156cb7c6def4a758fd89c9fa504
-Author: Ondrej Zajicek (work) 
-Date:   Wed Mar 9 17:37:44 2016 +0100
-
-    OSPF: Fix reading from freed memory
-    
-    Thanks to Pavel Tvrdik for noticing it.
-
-commit 62a4ad365760afae485ae61c5aab734012545be4
-Merge: 9036bbf2b 9c92f6927
-Author: Maria Matejka 
-Date:   Tue Mar 22 13:23:55 2016 +0100
-
-    Merge remote-tracking branch 'origin/poll'
-
-commit 9c92f69272de3795f7289969e815d99a93d0d9b3
-Author: Maria Matejka 
-Date:   Fri Mar 18 11:44:28 2016 +0100
-
-    Unix: Substituted select -> poll also in congestion checker
-    
-    It does strange things when even one fd larger than FD_SETSIZE is
-    passed to select().
-
-commit 9036bbf2b7cc781c87f2a6b3979198f77ec6ada1
-Author: Pavel Tvrdík 
-Date:   Tue Mar 15 14:55:40 2016 +0100
-
-    RIP: fix typo in configuration at rx length opt
-
-commit 79a4f74a65941603cc42680d2e61b00ec88abe97
-Author: Pavel Tvrdík 
-Date:   Tue Mar 15 10:29:32 2016 +0100
-
-    BGP: Add documentaion for extended messages
-
-commit fd926ed4eea319b94bd0e09e093b90846bcb169b
-Author: Maria Matejka 
-Date:   Tue Mar 15 14:57:49 2016 +0100
-
-    Poll: Prevent the improbable case of EAGAIN after POLLIN
-
-commit e1c13a5a7b86f2ba09178300bad960224658c833
-Author: Maria Matejka 
-Date:   Wed Mar 9 12:12:02 2016 +0100
-
-    Unix: Rework of select-loop to poll-loop
-    
-    This should lift the limit of FD_SETSIZE and allow more than 1024 fd's.
-    FD_SETSIZE limit doesn't matter now when creating new sockets.
-
-commit 1a7daab126471374841e41de7f7e590ab22f35c8
-Author: Pavel Tvrdík 
-Date:   Wed Mar 9 16:48:28 2016 +0100
-
-    cf_error(char *msg, ...) -> cf_error(const char *msg, ...)
-
-commit 43fd8fae526cbc62093a32bda572c93fa4055e98
-Author: Pavel Tvrdík 
-Date:   Wed Mar 9 11:03:49 2016 +0100
-
-    nest/proto fix local_debug mode
-
-commit 062d18fdb1f48bf7e3b10907b417d4568ba8cf3f
-Author: Pavel Tvrdík 
-Date:   Tue Feb 2 18:14:53 2016 +0100
-
-    Fix typo
-
-commit ce95af7a5f5159033e569a7ccedce0e20bb5d913
-Merge: b25509e51 e3f506f9b
-Author: Maria Matejka 
-Date:   Thu Feb 25 18:25:53 2016 +0100
-
-    Merge branch 'master' of gitlab.labs.nic.cz:labs/bird
-
-commit e3f506f9b53bd8e44976df1c935c7ec417793ace
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 25 18:16:59 2016 +0100
-
-    OSPF: Multicast ability is irrelevant for stub interfaces
-
-commit b25509e5128e6f2a856cd4a07bb78f3d6b7fc789
-Author: Maria Matejka 
-Date:   Wed Jan 20 15:23:17 2016 +0100
-
-    All the current pthread implementations are OK and working with us.
-    
-    No more need to disable pthread for specific BSD's.
-
-commit a815d62d5902fb84c28c77726dbe94fc7528bf36
-Author: Maria Matejka 
-Date:   Fri Feb 19 15:51:16 2016 +0100
-
-    Hash: typecast error fix
-
-commit 9c9cc35c0273f8bcae10fb8b546d199514b2bbc5
-Author: Ondrej Zajicek (work) 
-Date:   Tue Feb 16 17:33:58 2016 +0100
-
-    Filter: Implement last_nonaggregated operator on bgp_path
-
-commit c2106b674ca632f7c0bffd7cab4b1940f74d353c
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 11 21:53:55 2016 +0100
-
-    Unix: Fix bug in syslog name handling
-    
-    Pointer to current_log_name has to be changed even if the name is the
-    same, because the old one will be invalid/freed after reconfiguration.
-
-commit 487c6961cb29046dbe9560262e3e742e38691b83
-Author: Ondrej Zajicek (work) 
-Date:   Thu Feb 11 16:38:28 2016 +0100
-
-    BGP: Fix bug in incoming connection handling
-    
-    When a BGP session was established by an outgoing connection with
-    Graceful Restart behavior negotiated, a pending incoming connection in
-    OpenSent state, and another incoming connection was received, then the
-    outgoing connection (and whole BGP session) was closed, but the old
-    incoming connection was just overwritten by the new one. That later
-    caused a crash when the hold timer from the old connection fired.
-
-commit 9a74622ca1994669cdb3bac0bb2f6df2febd2744
-Author: Maria Matejka 
-Date:   Wed Feb 10 13:26:07 2016 +0100
-
-    Updated RTA hashes to 32-bit values.
-    
-    ... and reworked the hashes a bit. Also added mem_hash function
-    which just computes a hash of given memory block.
-
-commit 1bb3ecb2a5369bc1992514da3cf5ef59dca46416
-Author: Pavel Tvrdík 
-Date:   Mon Feb 8 16:08:50 2016 +0100
-
-    Fix closing flushed channel
-    
-    Fix reading from freed memory.
-      Free at: channel_set_state(c, CS_DOWN)
-      Read at: WALK_LIST2_DELSAFE(c, n, x, tab->channels, table_node)
-    
-    ==00:00:00:00.261 24718==
-    ==00:00:09:31.755 24718== Invalid read of size 8
-    ==00:00:09:31.755 24718==    at 0x4061BA: rt_prune_table (rt-table.c:1688)
-    ==00:00:09:31.755 24718==    by 0x405D5E: rt_event (rt-table.c:1559)
-    ==00:00:09:31.755 24718==    by 0x45D089: ev_run (event.c:85)
-    ==00:00:09:31.755 24718==    by 0x45D158: ev_run_list (event.c:142)
-    ==00:00:09:31.755 24718==    by 0x462814: io_loop (io.c:2412)
-    ==00:00:09:31.755 24718==    by 0x468712: main (main.c:833)
-    ==00:00:09:31.755 24718==  Address 0x5601538 is 136 bytes inside a block of size 304 free'd
-    ==00:00:09:31.755 24718==    at 0x4C29D2A: free (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
-    ==00:00:09:31.755 24718==    by 0x46FF3E: rfree (resource.c:166)
-    ==00:00:09:31.755 24718==    by 0x470309: mb_free (resource.c:415)
-    ==00:00:09:31.755 24718==    by 0x406A6B: rt_unlock_table (rt-table.c:1921)
-    ==00:00:09:31.755 24718==    by 0x40DAE3: channel_do_down (proto.c:297)
-    ==00:00:09:31.755 24718==    by 0x40DD46: channel_set_state (proto.c:359)
-    ==00:00:09:31.755 24718==    by 0x4061AD: rt_prune_table (rt-table.c:1692)
-    ==00:00:09:31.755 24718==    by 0x405D5E: rt_event (rt-table.c:1559)
-    ==00:00:09:31.755 24718==    by 0x45D089: ev_run (event.c:85)
-    ==00:00:09:31.755 24718==    by 0x45D158: ev_run_list (event.c:142)
-    ==00:00:09:31.755 24718==    by 0x462814: io_loop (io.c:2412)
-    ==00:00:09:31.755 24718==    by 0x468712: main (main.c:833)
-    ==00:00:09:31.755 24718==  Block was alloc'd at
-    ==00:00:09:31.755 24718==    at 0x4C28C10: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
-    ==00:00:09:31.755 24718==    by 0x470FBC: bird_xmalloc (xmalloc.c:29)
-    ==00:00:09:31.755 24718==    by 0x4701E6: mb_alloc (resource.c:339)
-    ==00:00:09:31.755 24718==    by 0x406C29: rt_commit (rt-table.c:1977)
-    ==00:00:09:31.755 24718==    by 0x45C36D: config_do_commit (conf.c:269)
-    ==00:00:09:31.755 24718==    by 0x45C545: config_commit (conf.c:361)
-    ==00:00:09:31.755 24718==    by 0x4686F9: main (main.c:822)
-    ==00:00:09:31.755 24718==
-
-commit 2a013bb3a01174fac3a841fd825ac4f13f3ea84d
-Author: Maria Matejka 
-Date:   Mon Feb 1 10:25:31 2016 +0100
-
-    Fixed sigsegv for missing proto->rt_notify hook
-    
-    If rt_notify is NULL, the export must always stay DOWN.
-
-commit ade389b326ddf2caaf08d7d3be8b3a1066ea7c97
-Author: Maria Matejka 
-Date:   Mon Feb 1 09:22:18 2016 +0100
-
-    BSD: compilation error fix
-
-commit f4a60a9bc429c28cb397402331dc01a789197450
-Author: Ondrej Zajicek (work) 
-Date:   Tue Jan 26 11:48:58 2016 +0100
-
-    Channels - explicit links between protocols and tables
-    
-    The patch adds support for channels, structures connecting protocols and
-    tables and handling most interactions between them. The documentation is
-    missing yet.
-
-commit 9f5782d9691f23296c4b1a68ef66630d9cc3a6cd
-Author: Pavel Tvrdík 
-Date:   Thu Jan 28 16:55:27 2016 +0100
-
-    Add 'GENERATE/ACCEPT FROM datetime TO datetime' to password options
-
-commit 966ca6143b8648a29e77b6328133bc3f245d50ee
-Author: Pavel Tvrdík 
-Date:   Wed Jan 27 12:14:46 2016 +0100
-
-    io.c: fix reads from uninitialized memory
-
-commit d82987d12e96db887033deabb6c46f07db64e1b8
-Author: Pavel Tvrdík 
-Date:   Wed Jan 27 12:25:30 2016 +0100
-
-    RIP: Fix DBG output
-
-commit 74d94167631ffd1b10709460510a1e3c8fc0e904
-Author: Maria Matejka 
-Date:   Mon Jan 25 10:29:06 2016 +0100
-
-    RIPng: fixed misrejection of host routes
-
-commit 2fad92144ee2e3a818a7510554d2144e46c3a4c8
-Author: Maria Matejka 
-Date:   Thu Jan 21 15:46:33 2016 +0100
-
-    BSD: fix no-return warning
-
-commit 3f35816136f1b57067d5ce426b031e4e3583085c
-Author: Maria Matejka 
-Date:   Thu Jan 21 10:59:52 2016 +0100
-
-    BSD: Explicitly dropping routes with mismatched AF's.
-
-commit 0e965f69914313857a95d03b2e6136d3e84019dd
-Author: Maria Matejka 
-Date:   Wed Jan 20 15:23:17 2016 +0100
-
-    All the current pthread implementations are OK and working with us.
-    
-    No more need to disable pthread for specific BSD's.
-
-commit 7eb9e79648e17037f3691aafa829970efacbbbc9
-Author: Pavel Tvrdík 
-Date:   Thu Jan 21 10:30:08 2016 +0100
-
-    Add condition for max_pxlen by ROA grammar
-
-commit a4caa1c0a3b6bfb9918f08dbbf856e4d3c78080a
-Author: Pavel Tvrdík 
-Date:   Thu Jan 21 10:24:50 2016 +0100
-
-    Use net_addr pointer for net_addr_roaX
-    
-    net_addr_roa6 is bigger than net_addr
-    
-    Thanks to Ondrej Zajicek for notice
-
-commit 259052199ba82f0f37b87416592e2e2ddbdaee5f
-Author: Pavel Tvrdík 
-Date:   Wed Jan 20 15:41:15 2016 +0100
-
-    Add forgotten semicolon
-
-commit 650b4189427eb5a5f96753e39c0d67f09e0ef445
-Author: Pavel Tvrdík 
-Date:   Wed Jan 20 16:29:17 2016 +0100
-
-    Delete old ROA code
-
-commit 0264ccf6f4acaea5313dee2cd3bc3bdb28c74f60
-Author: Pavel Tvrdík 
-Date:   Wed Jan 20 15:38:37 2016 +0100
-
-    Rewrite roa_check() for integrated BIRD
-    
-    Thanks to Ondrej Zajicek for his support with writing this code.
-
-commit cb1bd816db5b69acb8c6f72211d13f987a494304
-Author: Pavel Tvrdík 
-Date:   Wed Jan 20 15:06:19 2016 +0100
-
-    Add ROA_* constants values to grammar of configuration
-    
-    Add ROA_UNKNOWN, ROA_VALID and ROA_INVALID
-
-commit 513ad0a85e57e4e0f7928fde7332778ca1c2148f
-Author: Pavel Tvrdík 
-Date:   Wed Jan 20 14:55:37 2016 +0100
-
-    Add ROA net_addr to grammar
-    
-    Example:
-      protocol static
-      {
-        route 10.110.0.0/16 max 16 as 1000 blackhole;
-        route 10.120.0.0/16 max 24 as 1000 blackhole;
-        route 10.130.0.0/16 max 24 as 2000 blackhole;
-        route 10.130.128.0/18 max 24 as 3000 blackhole;
-        ...
-      }
-
-commit 8109eb765fe92f4d47b497b3e2b24b59841c3487
-Author: Maria Matejka 
-Date:   Thu Jan 7 14:45:01 2016 +0100
-
-    BSD integration fixes
-
-commit f9d729ab682156cc658eb451b95d7cbd37dfa139
-Author: Pavel Tvrdík 
-Date:   Thu Jan 14 10:03:50 2016 +0100
-
-    NET ROAx: add max_pxlen, fix format
-
-commit 9a883adf954c2f68085a398e8ab38bd54831cf52
-Author: Maria Matejka 
-Date:   Mon Jan 11 11:03:11 2016 +0100
-
-    Net address format: Do not print the -4 or -6 suffix in %I4 and %I6
-
-commit a820ae107456a26656f29a3ed14010cf0cd87842
-Author: Pavel Tvrdík 
-Date:   Tue Jan 12 11:36:28 2016 +0100
-
-    NET ROAx more small changes
-    
-    - Remove `u8 src` from net_add_roaX
-    - Add `u8 max_pxlen` to net_add_roaX
-    - Add some missing macro and functions for ROA
-    - Remove ASN from hash function for ROA
-    
-    Thanks to Ondrej Santiago Zajicek
-
-commit 93e807292cff6eb3dfcd8d590dded04b965ac1a5
-Author: Pavel Tvrdík 
-Date:   Tue Jan 12 11:27:38 2016 +0100
-
-    ROA change printf 'ASN: xxx' to 'ASxxx'
-
-commit 6ffa8f53931e2ae8becf8ec6ef09db88737a6a06
-Author: Maria Matejka 
-Date:   Thu Jan 7 12:02:54 2016 +0100
-
-    Hidden AF_INET* inside sysdep/
-
-commit 5b218c3d9bf9357aed0acf535bdfc6684cc5cda4
-Author: Maria Matejka 
-Date:   Thu Jan 7 11:29:05 2016 +0100
-
-    BFD: split of v4/v6 sockets
-
-commit b9f56921865dfe816091266e990e94db3e2fdbdf
-Author: Pavel Tvrdík 
-Date:   Thu Jan 7 18:24:14 2016 +0100
-
-    Fix check in net_route() in debug mode
-
-commit de9b87f55863f29eb7965d8a772f8a34f195f4ac
-Author: Pavel Tvrdík 
-Date:   Thu Jan 7 18:17:16 2016 +0100
-
-    Add NET ROA4/6 structures
-
-commit e691d16a63ce40bc56ecbc970e8118686d4b0148
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 29 17:12:47 2015 +0100
-
-    Explicit ip4_addr / ip6_addr printf support
-
-commit 74c838a87000ca800e8b3f265340c1317989a04a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Dec 29 15:34:48 2015 +0100
-
-    Move ID allocator to a separate file and use it also in OSPF
-
-commit 9a70c8d6c38155d8abb6d814563b9eefc134e901
-Author: Maria Matejka 
-Date:   Tue Dec 29 13:01:00 2015 +0100
-
-    Netlink: Removed forgotten if-stub (caused strange errors)
-
-commit 04632fd77f291f67753341d12d540f7dac341bd3
-Author: Ondrej Zajicek (work) 
-Date:   Thu Dec 24 15:52:03 2015 +0100
-
-    Follow-up work on integration
-
-commit 70b90dde23a684c4d32aa53685f76a73ecba941d
-Author: Maria Matejka 
-Date:   Tue Dec 22 09:45:09 2015 +0100
-
-    Better fix of missing AF_INET6? definition in lib/socket.h
-    
-    Moved the code to sysdep.
-
-commit 600998fcb1a1d155215ab32644982e9b78767e3e
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 21 20:16:05 2015 +0100
-
-    Modify FIB_WALK() and FIB_ITERATE() to work with new FIB code
-    
-    Returned user data pointers have offset relative to fib_node.
-
-commit 67aa88336a91e635753ba42df45d7de5e191ed35
-Author: Maria Matejka 
-Date:   Mon Dec 21 18:23:08 2015 +0100
-
-    BSD wants to include sys/socket.h in lib/socket.h (AF_INET6? definitions)
-
-commit 0bf95f99e6126b481a4dcac574ada59f9ad3662b
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 21 17:17:21 2015 +0100
-
-    Follow-up work on integration
-    
-    Contains some patches from Jan Moskyto Matejka
-
-commit 23c212e7f1e80a3c6b88b49918972bc28375bd51
-Author: Ondrej Zajicek (work) 
-Date:   Mon Dec 21 03:27:41 2015 +0100
-
-    Follow-up work on integration
-
-commit e92a4b855f668e8ac685ad79c288ff182ebd110b
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 20 21:43:00 2015 +0100
-
-    Filter: Fix some changes in IP<->Quad implicit conversion
-
-commit d549b83fc2f66b4c5e15e158409442993a2d62c4
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 20 19:47:36 2015 +0100
-
-    Delete ipv6 option from configure
-
-commit 0f7d5b1a889142cdcda0546d8adcc76de465ffb8
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 20 18:16:48 2015 +0100
-
-    Nest: Reimplement fib_route() and add some consts
-
-commit 29a6416276a04ca1fc2bc64ebc7ef559918d78d8
-Author: Ondrej Zajicek (work) 
-Date:   Sun Dec 20 16:58:37 2015 +0100
-
-    KRT: Integration of IPv4/IPv6 in sysdep/linux
-
-commit 7fd4143eadd5af6e1ad7825d7d7506ad021bf1ad
-Author: Maria Matejka 
-Date:   Fri Dec 18 11:57:38 2015 +0100
-
-    Integrated address print lengths
-    
-    Minor changes by Ondrej Santiago Zajicek
-
-commit 9656dce72eead158e6da3ad560720bb0addfe7e2
-Author: Maria Matejka 
-Date:   Wed Dec 16 15:30:44 2015 +0100
-
-    ROA code switchoff
-
-commit aedd3a6babbaf35becb7770f73f30b20b464393f
-Author: Maria Matejka 
-Date:   Wed Dec 16 10:43:58 2015 +0100
-
-    Implemented missing prefix manipulation functions
-
-commit 5e173e9f631913f68cf38d57a69c3ce6faf60d1e
-Author: Maria Matejka 
-Date:   Wed Dec 16 10:25:12 2015 +0100
-
-    Stop perusing f_prefix for non-prefix-set uses
-    
-    Multiple changes by Ondrej Santiago Zajicek
-
-commit d7661fbe9dea980c61daa01a11a9aa59fa7be426
-Author: Maria Matejka 
-Date:   Fri Dec 11 15:35:37 2015 +0100
-
-    Removed BITS_PER_IP_ADDRESS, MAX_PREFIX_LENGTH, BIRD_AF
-    
-    Explicit setting of AF_INET(6|) in IP socket creation. BFD set to listen
-    on v6, without setting the V6ONLY flag to catch both v4 and v6 traffic.
-    
-    Squashing and minor changes by Ondrej Santiago Zajicek
-
-commit 9b136840d90cce887cd139054c3f0a7d8b9f57d2
-Author: Maria Matejka 
-Date:   Mon Dec 7 16:24:18 2015 +0100
-
-    Netlink and BSD: Integrating IPv4 and IPv6
-    
-    Squashing and minor changes by Ondrej Santiago Zajicek
-
-commit 52e21323b6c49af9d076586241451973a7d1e7c6
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 25 15:52:58 2015 +0100
-
-    BGP: Update capability number from IANA for extended messages
-
-commit 04ae8ddaa15b72c265dc7cf038b733d235198754
-Merge: d44e686e9 33b4f40ac
-Author: Ondrej Zajicek (work) 
-Date:   Wed Nov 25 14:24:35 2015 +0100
-
-    Merge branch 'master' into int-new
-
-commit 33b4f40acce02c90b4b7766c5c94ebf2d22765c6
-Author: Pavel Tvrdík 
-Date:   Fri Nov 13 16:08:28 2015 +0100
-
-    MD5: Mormalize naming style
-
-commit 90f78507f4a13673ccf0ba7c786b43d9e882fca7
-Merge: 8eb8e546d ad2761576
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 15:21:11 2015 +0100
-
-    Merge branch 'master' into rip-new
-
-commit ad27615760e2795da3efe5e97c0e888281d5ca59
-Author: Maria Matejka 
-Date:   Tue Nov 10 14:59:41 2015 +0100
-
-    Netlink: attribute validation before parsing
-    
-    Wanted netlink attributes are defined in a table, specifying
-    their size and neediness. Removing the long conditions that did the
-    validation before.
-    
-    Also parsing IPv4 and IPv6 versions regardless on the IPV6 macro.
-
-commit e422ca0f292d08a873deacdbffbb6c6cbd79f88a
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 13:52:26 2015 +0100
-
-    Some consts for function arguments
-    
-    Patch from Pavel Tvrdik
-
-commit 5126380beace4e39578f005fe115917b8e8b8ff3
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 24 13:47:28 2015 +0100
-
-    Minor changes to SHA hash functions
-
-commit 12d752ef24ab507d249a60098ec98dcf28b70036
-Merge: 1e4891e48 f312a837e
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 23 11:32:18 2015 +0100
-
-    Merge commit 'origin/crypto-hash^'
-
-commit 1e4891e48e7b6f022564e7409d15c3fdb65ec2ad
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 23 11:13:40 2015 +0100
-
-    Nest: Fix bug in device proto
-    
-    If an interface address notification is received during device protocol
-    shutdown/restart, BIRD crashed.
-    
-    Thanks to Wei Huang for the bugreport.
-
-commit f312a837e919c660884ceb9c50c106df1e4c0658
-Author: Pavel Tvrdík 
-Date:   Fri Nov 13 16:14:36 2015 +0100
-
-    Add SHA-384/512 and HMAC-SHA-384/512 crypto hash
-
-commit 4035e0e79c609bde30a2f755eec864771ea08e21
-Author: Pavel Tvrdík 
-Date:   Fri Nov 13 16:13:15 2015 +0100
-
-    Add SHA-224/256 and HMAC-SHA-224/256 crypto hash
-
-commit 5d0c36f1da83b2a2a07e043247410948d90c600e
-Author: Pavel Tvrdík 
-Date:   Fri Nov 13 16:11:51 2015 +0100
-
-    Add SHA1 and SHA1-HMAC crypto hash
-
-commit 75ff08022ea58fe3efa96639f080ce375e997675
-Author: Pavel Tvrdík 
-Date:   Fri Nov 13 16:10:33 2015 +0100
-
-    Add get_u64() and put_u64() into lib/unaligned.h
-
-commit d44e686e9bcae5850115c0e1adfe24523dce61ee
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 12 02:03:59 2015 +0100
-
-    Follow-up commit on integrated BIRD
-    
-    Use net_addr for interface address prefixes, support net_addr in
-    configuration parser.
-
-commit fce764f90e8331d1adb6a85ec00136dfeae1a398
-Author: Pavel Tvrdík 
-Date:   Mon Nov 9 09:14:26 2015 +0100
-
-    Fix compiling with --enable-debug option
-
-commit 9ddbfbddf87462bbf50437bdc1d44499a5c223e7
-Author: Maria Matejka 
-Date:   Tue Nov 3 14:42:41 2015 +0100
-
-    Netlink: Allow more than 256 routing tables.
-    
-    Since 2.6.19, the netlink API defines RTA_TABLE routing attribute to
-    allow 32-bit routing table IDs. Using this attribute to index routing
-    tables at Linux, instead of 8-bit rtm_table field.
-
-commit 86b4e17001fe4cca6dde7ff523346121c0ae68fe
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 9 01:01:12 2015 +0100
-
-    Nest: Fixes bug in missing cleanup during table removal
-    
-    When a table is removed during reconfiguration, a reference was not
-    cleared in the old configuration, which breaks undo.
-
-commit 9b9a7143c43d01f0459d40363d56e9c7690c596f
-Author: Ondrej Zajicek (work) 
-Date:   Mon Nov 9 00:42:02 2015 +0100
-
-    Conf: Fixes bug in symbol lookup during reconfiguration
-    
-    Symbol lookup by cf_find_symbol() not only did the lookup but also added
-    new void symbols allocated from cfg_mem linpool, which gets broken when
-    lookups are done outside of config parsing, which may lead to crashes
-    during reconfiguration.
-    
-    The patch separates lookup-only cf_find_symbol() and config-modifying
-    cf_get_symbol(), while the later is called only during parsing. Also
-    new_config and cfg_mem global variables are NULLed outside of parsing.
-
-commit fe9f1a6dedda6bab23cbb605d1cd5db6cd3e2468
-Author: Ondrej Zajicek (work) 
-Date:   Thu Nov 5 12:48:52 2015 +0100
-
-    Initial commit on integrated BIRD
-    
-    New data types net_addr and variants (in lib/net.h) describing
-    network addresses (prefix/pxlen). Modifications of FIB structures
-    to handle these data types and changing everything to use these
-    data types instead of prefix/pxlen pairs where possible.
-    
-    The commit is WiP, some protocols are not yet updated (BGP, Kernel),
-    and the code contains some temporary scaffolding.
-    
-    Comments are welcome.
-
-commit 3aed0a6ff7b2b811a535202fd787281d2ac33409
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 3 11:27:27 2015 +0100
-
-    IO: Fix the previous bugfix
-    
-    I should check it after making some trivial changes. The original patch
-    from Alexander has it right.
-
-commit 338f85ca7721fac16394ccabd561ddb5ccaacb36
-Author: Ondrej Zajicek (work) 
-Date:   Tue Nov 3 11:08:57 2015 +0100
-
-    IO: Handle fd values too big for select()
-    
-    If the number of sockets is too much for select(), we should at least
-    handle it with proper error messages and reject new sockets instead of
-    breaking the event loop.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 8eb8e546dc8cc647fcfa4a3a17dfa8ab36b00958
-Merge: 8465dccb0 acb04cfdc
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 17 14:44:34 2015 +0200
-
-    Merge branch 'master' into rip-new
-
-commit acb04cfdc550697a7171a86ca559fd8c52841acb
-Author: Ondrej Zajicek (work) 
-Date:   Sat Oct 17 14:36:53 2015 +0200
-
-    Minor changes
-
-commit 8465dccb06afffed171dc1e224e4eb5f67cc3326
-Author: Ondrej Zajicek (work) 
-Date:   Mon Oct 5 12:14:50 2015 +0200
-
-    Major RIP redesign
-    
-    The new RIP implementation fixes plenty of old bugs and also adds support
-    for many new features: ECMP support, link state support, BFD support,
-    configurable split horizon and more. Most options are now per-interface.
-
-commit b5e76398de1d4468b4061d9ef57dd3154b2f745e
-Author: Ondrej Zajicek 
-Date:   Wed Aug 19 11:16:23 2015 +0200
-
-    OSPF: Fixes some issues with link detection
-    
-    Thanks to Bernardo Figueiredo and Israel G. Lugo for the bugreport.
-
-commit c7b99a932cab1873042e356143ab71755920157a
-Author: Ondrej Zajicek 
-Date:   Tue Jul 28 15:08:21 2015 +0200
-
-    Nest: Fixes one of previous commit
-
-commit dbf4c0cb258bd92efb54f95194f664f95ba98fd9
-Author: Ondrej Zajicek 
-Date:   Tue Jul 28 12:56:51 2015 +0200
-
-    Minor update to test commits
-
-commit 641172c6e5e4e291029084074f94f448d6bc69dd
-Author: Ondrej Zajicek 
-Date:   Tue Jul 28 12:35:12 2015 +0200
-
-    Netlink: Fixes uninitialized variable
-    
-    Thanks to Pavel Tvrdik for the bugfix
-
-commit 538264cf1a7690d90b2953aebff21958c2b55c44
-Author: Ondrej Zajicek 
-Date:   Fri Jul 24 18:02:07 2015 +0200
-
-    Static: Support for BFD controlled static routes
-
-commit 1321e12ac460bd542d3946a0c4a4dacd71157cfa
-Author: Ondrej Zajicek 
-Date:   Mon Jul 20 11:12:02 2015 +0200
-
-    Static: Allows to specify attributes for static routes
-    
-    The patch adds suport for specifying route attributes together with
-    static routes, e.g.:
-    
-     route 10.1.1.0/24 via 10.0.0.1 { krt_advmss = 1200; ospf_metric1 = 100; };
-
-commit ffa398b8d8bac4cf6368fe700466cad4ff12fee8
-Author: Ondrej Zajicek 
-Date:   Sun Jul 19 11:39:24 2015 +0200
-
-    BFD: Fixes crash after socket error
-    
-    Thanks to Thomas King for the bugreport.
-
-commit a8ad8fd6491d04620fe4fdebc50f0da2927f9b21
-Author: Ondrej Zajicek 
-Date:   Sat Jul 18 23:15:04 2015 +0200
-
-    Simplify build messages
-    
-    Thanks to Christian Tacke for the original patch.
-
-commit 17661ff934a80d517284c96756357d4ed5af9a64
-Author: Ondrej Zajicek 
-Date:   Sat Jul 18 19:30:35 2015 +0200
-
-    Nest: Fixes symbols in router id
-    
-    Thanks to Peter Hudec for noticing the problem.
-
-commit 6683d42d5b560c8805b977736b2a769ea2d9aa8b
-Author: Ondrej Zajicek 
-Date:   Sat Jul 18 19:05:11 2015 +0200
-
-    Documentation update
-
-commit 06e0d1b692d8a190c3f1d073c5c557d8efe78b17
-Author: Ondrej Zajicek 
-Date:   Sat Jul 18 13:38:21 2015 +0200
-
-    BGP: Extended messages support
-    
-    Implements draft-ietf-idr-bgp-extended-messages-10, for now
-    undocumented and with temporary private capability number.
-
-commit ab4da3423d89fb6c60a4137f19c189a8716ecab6
-Author: Ondrej Zajicek 
-Date:   Sat Jul 18 13:05:05 2015 +0200
-
-    Direct: Fixes behavior for the same routes on different interfaces
-    
-    Thanks to Andrew (seti.kr.ua) for the bug report.
-
-commit 8d9eef17713a9b38cd42bd59c4ce76c3ef6c2fc2
-Author: Ondrej Zajicek 
-Date:   Mon Jun 8 02:20:43 2015 +0200
-
-    BGP multipath support
-    
-    Kernel option 'merge paths' allows to merge routes exported to kernel
-    protocol (currently BGP and static routes) to multipath routes.
-
-commit db027a41d47b8fc52b65067ccabe2024554e53ca
-Author: Ondrej Zajicek 
-Date:   Thu Jun 4 11:35:26 2015 +0200
-
-    Fixes subtle bug in temporary attribute handling
-    
-    In some cases, export filter accessed attributes of a different route.
-
-commit 78a2cc289fbe11d5b5783220e2cc61d119a78ec3
-Author: Ondrej Zajicek 
-Date:   Wed Jun 3 11:58:46 2015 +0200
-
-    KRT: Fixes some minor bugs in kernel protocol
-
-commit d217ba5111a80a629e408961b902d7759c4b46f5
-Author: Ondrej Zajicek 
-Date:   Sun May 31 23:25:33 2015 +0200
-
-    Moving of mulipath merging code from OSPF to nest
-
-commit ca34698ca62d979c281ed517f040619e31c3ada3
-Author: Ondrej Zajicek 
-Date:   Sun May 31 11:29:53 2015 +0200
-
-    Fixes bug in pipe feeding when filtered routes are kept in table
-
-commit ae80a2de95d3d3c153ce20b90c9d8757d02cb33d
-Author: Pavel Tvrdík 
-Date:   Tue May 19 08:53:34 2015 +0200
-
-    unsigned [int] -> uint
-
-commit e348ef01b433e06888310c1098a05291034a856c
-Author: Pavel Tvrdík 
-Date:   Tue May 19 08:14:04 2015 +0200
-
-    unsgined char -> byte
-
-commit 398f92253186d70eb3f2e910c7f8dd2636ee5fa1
-Author: Ondrej Filip 
-Date:   Mon Jun 1 10:41:17 2015 +0200
-
-    Typo fix by Hans van Kranenburg
-
-commit 9fe1d3ca8a6420b4bdaf15a54ab7b13be6cc07eb
-Author: Ondrej Zajicek 
-Date:   Fri May 22 11:12:48 2015 +0200
-
-    Fixes unnamed protocols from templates
-
-commit d0e23d42de133de706151411d8d4091d07904d29
-Author: Ondrej Zajicek 
-Date:   Sun May 17 00:54:33 2015 +0200
-
-    Simplify flushing process
-    
-    Related to changes from previous patch.
-
-commit 86f567e13c2202fc3c3a1ce49f9a35220a50f117
-Author: Ondrej Zajicek 
-Date:   Sat May 16 20:17:59 2015 +0200
-
-    Fix minor issue in pipe route propagation
-    
-    In some circumstances during reconfiguration, routes propagated by pipes
-    to other tables may hang there even after the primary routes are removed.
-    
-    There is already a workaround for this issue in the code which removes
-    these stale routes by flush process when source protocols are shut down.
-    
-    This patch is a cleaner fix and allows to simplify the flush process
-
-commit 38e835dede88158d97c3039ed22faabed79c7181
-Author: Ondrej Zajicek 
-Date:   Wed May 13 13:19:26 2015 +0200
-
-    Fix in the last commit
-
-commit 9fdf9d29b6b570205c36934aab7e50539e042102
-Author: Ondrej Zajicek 
-Date:   Tue May 12 16:42:22 2015 +0200
-
-    KRT: Add support for plenty of kernel route metrics
-    
-    Linux kernel route metrics (RTA_METRICS netlink route attribute) are
-    represented and accessible as new route attributes:
-    
-    krt_mtu, krt_window, krt_rtt, krt_rttvar, krt_sstresh, krt_cwnd, krt_advmss,
-    krt_reordering, krt_hoplimit, krt_initcwnd, krt_rto_min, krt_initrwnd,
-    krt_quickack, krt_lock_mtu, krt_lock_window, krt_lock_rtt, krt_lock_rttvar,
-    krt_lock_sstresh, krt_lock_cwnd, krt_lock_advmss, krt_lock_reordering,
-    krt_lock_hoplimit, krt_lock_rto_min, krt_feature_ecn, krt_feature_allfrag
-
-commit 315f23a0470112ced04badbb117bc7854ee53e06
-Author: Ondrej Zajicek 
-Date:   Sat May 9 18:50:15 2015 +0200
-
-    Add bitfield route attribute type
-
-commit 77edab640925e8d1131f0d00b41de055129ff99f
-Author: Ondrej Zajicek 
-Date:   Fri May 1 14:40:56 2015 +0200
-
-    OSPF: Redesign LSA checksumming
-    
-    New LSA checksumming code separates generic Fletcher-16 and OSPF-specific
-    code and avoids back and forth endianity conversions, making it much more
-    readable and also several times faster.
-
-commit 30d09eb96e8d46143d04285016a137d71a87c416
-Author: Ondrej Zajicek 
-Date:   Tue Apr 28 13:45:44 2015 +0200
-
-    OSPF: Fixes validation of LSA checksums
-    
-    Prior to this patch, BIRD validates the OSPF LSA checksum by calculating
-    a new checksum and comparing it with the checksum in the header. Due to
-    the specifics of the Fletcher checksum used in OSPF, this is not
-    necessarily correct as the checkbytes in the header may be calculated via
-    a different means and end up with a different value that is nonetheless
-    still correct.
-    
-    The documented means of validating the checksum as specified in RFC 905
-    B.4 is to calculate c0 and c1 from the unchanged contents of the packet,
-    which must result in a zero value to be considered valid.
-    
-    Thanks to Chris Boot for the patch.
-
-commit 7069fc9e724134ddd841219f5673cc9b13c58490
-Author: Ondrej Zajicek 
-Date:   Sat Apr 25 21:41:43 2015 +0200
-
-    KRT: Fixes route reload
-    
-    Did not really worked
-
-commit c5ff44a703e4ab810a5bd45cf9140643a50fb3ec
-Author: Ondrej Zajicek 
-Date:   Sat Apr 25 20:43:43 2015 +0200
-
-    KRT: Fixes learning of preferred kernel routes.
-    
-    When a new route was imported from kernel and chosen as preferred, then
-    the old best route was propagated as a withdraw to the kernel protocol.
-    Under some circumstances such withdraw propagated to the BSD kernel could
-    remove the new alien route and thus reverting the import.
-
-commit 90097f4fb924922b416247abf291fb21f39dc8e1
-Author: Ondrej Zajicek 
-Date:   Wed Apr 22 10:53:15 2015 +0200
-
-    KRT: Support for RTM_CHANGE on BSD
-
-commit deec752ef941eef4c36c21c5c5426d08e98c7a44
-Author: Ondrej Zajicek 
-Date:   Mon Apr 20 12:27:00 2015 +0200
-
-    NEWS and version update
-
-commit b867a87c2fd694e6e690dc94da76754e89f03370
-Author: Ondrej Zajicek 
-Date:   Sun Apr 19 00:19:56 2015 +0200
-
-    Fixes port range socket option
-
-commit ef3cac669ca0f6f2b983e33ab6d553705c35f3df
-Author: Ondrej Zajicek 
-Date:   Sat Apr 18 13:22:41 2015 +0200
-
-    OSPF: Fixes handling of external routes with immediate gw
-    
-    The bug caused that received external LSAs with locally reachable
-    next hops were ignored. I wonder why nobody noticed it sooner.
-
-commit 304ac2e861a5ea28683489aff38ff37ff6873bb4
-Author: Ondrej Zajicek 
-Date:   Sun Apr 12 10:47:17 2015 +0200
-
-    Minor fixes
-
-commit d924d5a5626397da7e71fddfb1c0fd22c2714f2c
-Author: Ondrej Zajicek 
-Date:   Wed Apr 1 00:01:35 2015 +0200
-
-    BGP: Fixes serious bug in TX handling
-    
-    Under some circumstances and heavy load, TX could be postponed
-    until the session fails with hold timer expired.
-    
-    Thanks to Javor Kliachev for making the bug reproductible.
-
-commit 16a3254c4cb592e7cfa3aea744e9fd58665d6367
-Author: Ondrej Zajicek 
-Date:   Tue Mar 31 23:59:40 2015 +0200
-
-    Understand IFF_MULTICAST flag on ifaces in Linux
-    
-    Unfortunately, some interfaces support multicast but do not have
-    this flag set, so we use it only as a positive hint.
-    
-    Thanks to Clint Armstrong for noticing the problem.
-
-commit 2eadd36fa004d705a4003892d1639485eeaf8486
-Author: Ondrej Zajicek 
-Date:   Sun Mar 29 21:24:47 2015 +0200
-
-    BGP: AS-wide unique router ID (RFC 6286) support
-    
-    RFC 6286 relaxed rules for router IDs, allowing EBGP sessions between
-    routers with the same ID (but different ASN).
-
-commit 9aed29e605334d34d0e6a90fc172ee83d0274ad3
-Author: Ondrej Zajicek 
-Date:   Sun Mar 29 18:27:13 2015 +0200
-
-    BGP: Enhanced route refresh (RFC 7313) support
-    
-    Also hook feed_done is renamed to feed_end.
-
-commit a5a5a41e2ee51ad6dfef0ab24e07d6d9b16a4215
-Author: Ondrej Filip 
-Date:   Mon Mar 9 23:59:26 2015 +0100
-
-    Possibility to define unnamed protocols from template added.
-
-commit 509aab5debef5b4710d8983da6ef076a226fd7ea
-Author: Ondrej Zajicek 
-Date:   Mon Mar 2 10:58:20 2015 +0100
-
-    Fixes serious bug in BGP add-path
-    
-    Temporary rta is reused in BGP, while rta_lookup() breaks it.
-    
-    Thanks to Alexander Chernikov for analysing the problem.
-
-commit af454f9b7c3930a7900e60a7fb608b7de11852aa
-Author: Ondrej Zajicek 
-Date:   Mon Mar 2 09:42:44 2015 +0100
-
-    Fixes bug in debug dumps
-    
-    Using 'dump sockets' in IPv6 mode caused crash due to mismatched format string.
-    
-    Thanks to Pavel Tvrdik for noticing it.
-
-commit 8bcb5fb1e8a0718f88f99cde2f5b5a3bae5c4451
-Author: Ondrej Zajicek 
-Date:   Mon Mar 2 09:41:14 2015 +0100
-
-    Implement latency tracking, internal event log and watchdog
-
-commit 4e63974471c4e2f11781cda163e0dc2ac6fb72f9
-Author: Ondrej Zajicek 
-Date:   Tue Feb 24 16:19:14 2015 +0100
-
-    Add minor comment
-
-commit 9c89560e6cdf44a21b2eff8765973ed8665fa07f
-Author: Ondrej Zajicek 
-Date:   Sun Feb 22 20:14:14 2015 +0100
-
-    Use IP_PORTRANGE_HIGH for BFD where available
-
-commit 6cf72d7ad7cbe1eb2f5b63660be6967d29b37044
-Author: Ondrej Zajicek 
-Date:   Sun Feb 22 16:08:28 2015 +0100
-
-    Rename BGP option 'start delay' to 'connect delay'
-    
-    Also update log message for error-triggered startup delay.
-
-commit a1beb8f3ee7a6e41dbe4bfd336b8bf5eecb46d01
-Author: Ondrej Zajicek 
-Date:   Sun Feb 22 13:50:58 2015 +0100
-
-    Relax BGP neighbor parameter
-    
-    Permit specifying neighbor address, AS number and port independently.
-    Add 'interface' parameter for specifying interface for link-local
-    sessions independently.
-    
-    Thanks to Alexander V. Chernikov for the original patch.
-
-commit 86c3eea0f3ec74ac1024d4aba4e98c962126f387
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 21:19:49 2015 +0100
-
-    Use AF_UNSPEC for RTM_GETLINK
-    
-    This value is specified in documentation.
-
-commit 2bbc308321894e0fd301766e8d7d78a4ec119053
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 21:08:23 2015 +0100
-
-    Store protocol config size inside protocol structure
-    
-    Make proto_config_new() use this info instead of supplied size.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 374917adccb955fbb2796955166fabe46a09e096
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 20:39:59 2015 +0100
-
-    Make BGP protocol instance search a separate function
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 6264aad16f3320eceb20825c6049917e771b9364
-Author: Pavel Tvrdík 
-Date:   Wed Jan 7 15:04:02 2015 +0100
-
-    Minor fixes
-
-commit 85a3639d99a39a79b65c2dbc2a136baee6ba2a2b
-Author: Pavel Tvrdik 
-Date:   Fri Dec 5 09:25:38 2014 +0100
-
-    Better Clang compatibility
-
-commit 7d37bf79de190c89f704bfbf0a753f328d995d5a
-Author: Pavel Tvrdik 
-Date:   Wed Dec 3 10:32:26 2014 +0100
-
-    Remove a comparison of unsigned expression < 0
-
-commit e598853e681d23dd7820627eeed96bf53197eae5
-Author: Pavel Tvrdik 
-Date:   Wed Dec 3 10:57:31 2014 +0100
-
-    Add const to a param msg at functions log_msg, log_rl, die, bug and debug
-
-commit 4a591d4b947e0abc0ad013ca1b75da27c6922be5
-Author: Pavel Tvrdik 
-Date:   Wed Dec 3 10:10:34 2014 +0100
-
-    Replacing GNU old-style field designator extension
-
-commit 8ce9a87755372d7612375bb1a81a288f309746c8
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 14:52:17 2015 +0100
-
-    Fixes minor bug in BFD.
-    
-    Thanks to Pavel Tvrdik for noticing it.
-
-commit 51762a45b39f906fe72db2d3d46c9890cb01bbd8
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 14:05:20 2015 +0100
-
-    Allows user data attached to f_trie_node structure.
-    
-    Thanks to Alexander Chernikov for the patch.
-
-commit bc7f4e0e3447c579f68b43d407b64a5262f0d11e
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 12:42:31 2015 +0100
-
-    Bump max symbol length to 64.
-    
-    And move the constant to conf.h header.
-    
-    Thanks to Alexander Chernikov for the patch.
-
-commit ab006391305165c805f75e3a2ce20946748233c9
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 12:27:05 2015 +0100
-
-    Fixes a bug in locking code.
-    
-    When multiple protocols have a lock for the same IP address, it crashes
-    under some circumstances.
-    
-    Thanks to Matthias Schiffer for the bugreport.
-
-commit dfc7a6c6a0758a1d9a13b94708228c9844efe97e
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 12:24:30 2015 +0100
-
-    Fixes potential alignment bug in BGP.
-    
-    Thanks to Andrew (seti.kr.ua) for the bug report.
-
-commit 523f020b5f6b63096a7d5e90938baecd4beea0bd
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 11:46:14 2015 +0100
-
-    Link state support in BGP.
-    
-    Configurable fast shutdown of a BGP session when an interface loses link.
-
-commit 7730553b7eeb33d21e5597f110334ca584ad532d
-Merge: 0da562a7c ec2194fa7
-Author: Ondrej Zajicek 
-Date:   Sat Feb 21 11:39:45 2015 +0100
-
-    Merge remote-tracking branch 'origin/soft-int'
-
-commit 0da562a7cb25ed2b8724248ad6f841b1831a09c3
-Author: Ondrej Zajicek 
-Date:   Sat Nov 8 23:52:42 2014 +0100
-
-    Fixes error message in 'show route' cmd.
-    
-    Message 'Network not in table' was not reported if a network node without
-    any routes was found in a routing table.
-
-commit ec2194fa7a20a2768ca0027b5f3c024f0a251866
-Author: Ondrej Filip 
-Date:   Wed Nov 5 11:07:25 2014 +0100
-
-    Version 1.5.0pre
-
-commit dd5ef279bce002b9942ea437ef80ce3443bbe1dc
-Author: Ondrej Filip 
-Date:   Tue Nov 4 18:11:59 2014 +0100
-
-    Small typo fixed.
-
-commit f92e6ab364d50900bc9104af4539f6ea42b25c43
-Author: Ondrej Zajicek 
-Date:   Mon Nov 3 20:35:58 2014 +0100
-
-    Changes order of iface/addr/neigh event hooks.
-    
-    Now the order is:
-    
-    Up   -> iface, addr, neigh
-    Down -> neigh, addr, iface
-    
-    It fixes the case when an iface appears, related static routes are
-    activated and exported to OSPF before the iface notification and
-    therefore forwarding addresses are not encoded in generated external
-    LSAs.
-
-commit ac9dc669d80cbfeea3d0cdba5ec7354c804b1ae9
-Author: Ondrej Zajicek 
-Date:   Mon Nov 3 20:35:25 2014 +0100
-
-    Bugfix in latest OSPF changes.
-
-commit cd3b700393144796c9dead54b6ac2fc31aaa5272
-Author: Ondrej Zajicek 
-Date:   Mon Nov 3 14:53:59 2014 +0100
-
-    Bugfix to OSPF reconfiguration.
-
-commit 6f8bbaa10bbd21729d0b62a5878febcbee2c0811
-Author: Ondrej Zajicek 
-Date:   Mon Nov 3 10:42:55 2014 +0100
-
-    Fininshing integrated OSPF.
-
-commit d148d0af363cdac7783c4bf79527669cdd5ddf4a
-Author: Ondrej Filip 
-Date:   Sat Oct 25 21:08:35 2014 +0200
-
-    Mailling list location changed.
-
-commit 88a183c6c9a2b86b52f67e87bbc8b7edd32670c6
-Author: Ondrej Zajicek 
-Date:   Fri Oct 24 11:11:43 2014 +0200
-
-    Integrated IP functions.
-
-commit f8fefde318c6248ad94e7b6d60155deed9ab8eed
-Author: Ondrej Zajicek 
-Date:   Fri Oct 24 10:27:21 2014 +0200
-
-    Refactoring of OSPF messages.
-
-commit d26cfa0519daf1369b697b0df000c8db8b730e66
-Author: Ondrej Filip 
-Date:   Thu Oct 16 18:05:54 2014 +0200
-
-    __attribute__((packed)) added. Thank to Maksim Tamarsky
-
-commit 78342404ff573e85e396f0611014b90cea9b4c0a
-Merge: 178a197af cfdea7b85
-Author: Ondrej Zajicek 
-Date:   Tue Oct 14 17:23:34 2014 +0200
-
-    Merge remote-tracking branch 'origin/master' into soft-int
-
-commit cfdea7b85f6c520cc5a62eb907d2190db14c9900
-Author: Ondrej Zajicek 
-Date:   Sun Oct 5 23:59:18 2014 +0200
-
-    NEWS and version update.
-
-commit 7aa809016e9a2e24ef914888f7413dc1f2721b17
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 12:46:26 2014 +0200
-
-    Implements show route noexport option.
-    
-    Shows routes that would be exported to the protocol but are rejected by
-    the export filter.
-
-commit 1123e707400984108f48ac7c1be559f7ed8d9306
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 11:41:34 2014 +0200
-
-    Implements token bucket filter for rate limiting.
-
-commit dcde7ae597ccb7d81648b9ecab7c0f61c88e60f2
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 11:33:55 2014 +0200
-
-    Allows to configure different remote port for BGP sessions.
-    
-    Thanks to João Taveira Araújo for the original patch.
-
-commit 252c7e4d0b7b45c89f69b3c4763b0c013aa5830d
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 11:05:55 2014 +0200
-
-    Refresh kernel protocol when interface disappears.
-    
-    When an interface goes down, (Linux) kernel removes routes pointing to
-    that ifacem but does not send withdraws for them. We rescan the
-    kernel table to ensure synchronization.
-    
-    Thanks to Alexander Demenshin for the bugreport.
-
-commit b2f008378a39104152b20a969942cd6c99644984
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 11:02:14 2014 +0200
-
-    Allows more constants in set literals.
-    
-    Thanks to Michael Fincham for the bugreport.
-
-commit 0479b44373892db273f3e0365c7cbaad2eeb0d5f
-Author: Ondrej Zajicek 
-Date:   Thu Oct 2 10:59:34 2014 +0200
-
-    Fixes some warnings.
-
-commit 178a197afb77770d8a90765e39065679936a45d1
-Author: Ondrej Zajicek 
-Date:   Mon Jul 21 21:50:56 2014 +0200
-
-    OSPF instance id option and documentation update.
-
-commit 742029eb782f19c05decbd443d245f12360d5e78
-Author: Ondrej Zajicek 
-Date:   Sat Jul 19 17:28:38 2014 +0200
-
-    Whitespace cleanup in OSPF.
-
-commit a7a7372aa7c527619ee527e3b37013f9fb87d618
-Author: Ondrej Zajicek 
-Date:   Fri Jul 18 18:24:12 2014 +0200
-
-    Temporary integrated OSPF commit.
-
-commit 7c00551749005ad951845eb924f76e1fd28e62a2
-Author: Ondrej Filip 
-Date:   Wed Jul 9 23:46:02 2014 +0200
-
-    Version 1.4.4.
-
-commit 06c4b6ac9da204453049fa56a204474486a9c9e9
-Author: Ondrej Zajicek 
-Date:   Wed Jul 9 18:42:59 2014 +0200
-
-    NEWS and version update.
-
-commit 029ec22d0acedb79e03394b60ea99bb46c479d79
-Author: Ondrej Zajicek 
-Date:   Wed Jul 9 18:34:42 2014 +0200
-
-    Fixes a bug in BSD kernel interfacing code.
-    
-    The bug was introduced in 05476c4d04a24bdb26fa64e05ab31bc36118f34e.
-
-commit 751482899c190194b4958bc54ded428f98f565e9
-Author: Ondrej Zajicek 
-Date:   Mon Jul 7 22:56:21 2014 +0200
-
-    Implements default router preference (RFC 4191) for RAdv.
-    
-    Thanks to Baptiste Jonglez for the patch.
-
-commit 6285793f18817091060c7257f7d4af0db010a67a
-Author: Ondrej Zajicek 
-Date:   Mon Jul 7 22:23:37 2014 +0200
-
-    Replaces function name in test.conf as it collided with new keyword.
-
-commit 20e8d040b09f1e01c431c686f1ced5a12ba7bc68
-Author: Ondrej Zajicek 
-Date:   Mon Jun 30 11:55:22 2014 +0200
-
-    Fixes integer overflow in show memory command.
-    
-    Thanks to Job Snijders for the bugreport.
-
-commit 8945f73d946a9323daf8dfc1bf5b3884cf6d7664
-Author: Ondrej Zajicek 
-Date:   Thu Jun 26 13:30:27 2014 +0200
-
-    Ensures that msg_controllen includes last padding.
-    
-    Although RFC 3542 allows both cases, Theo de Raadt thinks
-    he knows better, and msg_controllen without last padding
-    fails on OpenBSD.
-    
-    Thanks to Job Snijders for the bugreport.
-
-commit 70945cb645402a4bb1d3dc46a07928caeb954c1f
-Author: Ondrej Zajicek 
-Date:   Thu Jun 26 11:58:57 2014 +0200
-
-    Temporary integrated OSPF commit.
-
-commit 9d5960cfa5b4c15ddd48dbab599f864a6aa1e025
-Author: Ondrej Zajicek 
-Date:   Tue Jun 10 12:16:01 2014 +0200
-
-    Fixes max include depth in documentation.
-    
-    Thanks to Artyom Gavrichenkov for the patch.
-
-commit 9eceab33f97724be148f9f05614d7551940e85f1
-Author: Ondrej Zajicek 
-Date:   Thu May 29 23:05:03 2014 +0200
-
-    String constants could be used for string option values.
-    
-    Thanks to Frederik Kriewitz for the patch.
-
-commit 05476c4d04a24bdb26fa64e05ab31bc36118f34e
-Author: Ondrej Zajicek 
-Date:   Sun May 18 11:42:26 2014 +0200
-
-    IPv4/IPv6 integrated socket code.
-
-commit 1149aa977d906a6400f998d5f6600871584395d0
-Author: Ondrej Zajicek 
-Date:   Mon May 5 11:05:12 2014 +0200
-
-    Fixes a problem with undoing of deconfiguring of protocol.
-    
-    Thanks to Sergey Popovich for the original patch.
-
-commit 5a3905fe905ab1cc1a58fe9e6a4284f7d5057d13
-Merge: 66370eac1 7d9ab86b7
-Author: Ondrej Zajicek 
-Date:   Sun May 4 11:59:50 2014 +0200
-
-    Merge commit 'origin/master'
-
-commit 66370eac1f88ec74b3017f1c39038d7b8b776de6
-Author: Ondrej Zajicek 
-Date:   Sun May 4 00:01:06 2014 +0200
-
-    Fixes BGP crash when update with some attributes and empty NLRI is received.
-    
-    Thanks to Charlie Allom for the bugreport.
-
-commit 7d9ab86b7ac7d1f039af92a58eb749a24811b5c9
-Author: Ondrej Zajicek 
-Date:   Sun May 4 00:01:06 2014 +0200
-
-    Fixes BGP crash when update with some attributes and empty NLRI is received.
-
-commit c865cae3eb327d1e0a745352c483bc7cb00f9323
-Author: Ondrej Zajicek 
-Date:   Mon Apr 28 17:31:03 2014 +0200
-
-    Fixes 'show route export' w.r.t. protocols with different RA_* types.
-
-commit 984d734944a39b70a59f74e57f0e6fc3f720dd48
-Author: Ondrej Zajicek 
-Date:   Sun Apr 27 00:46:32 2014 +0200
-
-    Fixes limit verification during reconfiguration.
-
-commit 145368f5474436ad7c48fa26f5bde8108ae5ef4a
-Author: Ondrej Zajicek 
-Date:   Wed Apr 23 13:54:28 2014 +0200
-
-    Extends multipath support for OSPF.
-    
-    Fixes cases where the same network or external route are propagated by
-    several OSPF routes and some other corner cases in next hop construction
-    and ECMP. Allows to specify whether external routes should be merged.
-    
-    Thanks to Peter Christensen for the original patch.
-
-commit 4dd24f05f384ac14546d4bebbfcb0ecf9a976ec6
-Merge: 1cb0f83d2 6c6ebd64c
-Author: Ondrej Zajicek 
-Date:   Wed Apr 23 13:52:15 2014 +0200
-
-    Merge commit 'origin/master'
-
-commit 6c6ebd64c3e44a2658a7ae8729159f1653c00a89
-Author: Ondrej Zajicek 
-Date:   Mon Apr 14 14:47:20 2014 +0200
-
-    NEWS and version update.
-
-commit 7c4a8007255403d046d7e909f710f0b1ed1791b1
-Author: Ondrej Filip 
-Date:   Mon Apr 14 12:28:30 2014 +0200
-
-    Fixed bug in unused function.
-
-commit 859cbd75e12966b09985b2a992da5ffb250938f8
-Author: Ondrej Zajicek 
-Date:   Mon Apr 14 12:50:03 2014 +0200
-
-    Fixes a bug in (mainly) IPv6 BGP.
-    
-    Stack variable may be used unitialized and that would lead to spurious
-    rta_free(), which may cause crash. The bug was introduced in 1.4.1 from
-    merging add-path branch.
-    
-    Thanks to Peter Andreev for reporting it and Alexander V. Chernikov for
-    resolving it.
-
-commit 1cb0f83d291d9bb3da06067bc2ea838238d5c487
-Author: Ondrej Zajicek 
-Date:   Mon Apr 7 11:48:25 2014 +0200
-
-    Fixes some asserts.
-
-commit 538fec7b1b7dd729eadf1c933e27f59080cd3576
-Author: Ondrej Zajicek 
-Date:   Wed Apr 2 23:00:10 2014 +0200
-
-    NEWS and version update.
-
-commit 2750b2484f256686a38ef6b89db7e2afe9b7999a
-Author: Ondrej Zajicek 
-Date:   Wed Apr 2 20:09:37 2014 +0200
-
-    Fixes missing line in BFD context help.
-
-commit 864f52a5f4c47ac8dc44a8808beb7f038cbf9899
-Author: Ondrej Zajicek 
-Date:   Wed Apr 2 19:58:23 2014 +0200
-
-    Fixes nasty bug in BFD.
-    
-    When a BFD session is removed while being scheduled for notification,
-    the session stays in notify list and is removed twice, which leads to
-    a strange crash after a while.
-
-commit 60442b1698563ebc5837454d89dbe4afa037882d
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 18:51:51 2014 +0200
-
-    NEWS and version update.
-
-commit d96ec7f6e0d26546d9a27064fd13591618258894
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 18:51:16 2014 +0200
-
-    Updates BFD documentation.
-
-commit eb5ea6bdd6fa45f03425ea38b8d1b16fd5ff7469
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 13:21:13 2014 +0200
-
-    Fixes build on some old systems.
-
-commit 43eb8f610f7796375419dc8d72df7a41c01c82af
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 12:02:20 2014 +0200
-
-    Removes conflicting definition.
-    
-    This function is a part of Readline interface for a long time
-    (with a different type).
-
-commit d7c0628591b802e202903b63fce53b6a422a3db2
-Author: Ondrej Zajicek 
-Date:   Mon Mar 31 00:56:44 2014 +0200
-
-    Check validity of interface definitions.
-    
-    Thanks to Aleksey Berezin for the bugreport.
-
-commit 0c3d9dacafdb807d2101c67610969707353f434a
-Author: Ondrej Zajicek 
-Date:   Tue Mar 25 14:58:00 2014 +0100
-
-    Fixes file descriptor leak when parser ends with error.
-    
-    Thanks to MrBr for the bugreport.
-
-commit 4e7c974d22ee5d938d8d8e7018f0a63f609d630b
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 19:22:19 2014 +0100
-
-    Fixes a bug in graceful restart.
-
-commit 9637c7c0acbc56bbf6fedc44d89f921386843992
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 13:33:15 2014 +0100
-
-    Minor fixes in documentation.
-
-commit dad92c30c7892457335d52a09548330498567ea8
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 12:56:56 2014 +0100
-
-    Reformat bird.sgml to have consistent line length.
-
-commit c980f8002e0f0578d5e715d48d65d9fb9a0c5a70
-Merge: 2e84b4e82 227af309e
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 12:41:43 2014 +0100
-
-    Merge branch 'bgp-grace'
-
-commit 227af309e55a59f14d1a5a757f17900164bffc97
-Author: Ondrej Zajicek 
-Date:   Mon Mar 24 12:32:12 2014 +0100
-
-    Fixes some minor issues in graceful restart.
-
-commit 2e84b4e82dbf8fce0fd12fb0c25d925ffd287970
-Author: Ondrej Zajicek 
-Date:   Sun Mar 23 01:40:37 2014 +0100
-
-    Fixes a bug in rte_src handling.
-
-commit 6eda3f135f5bab4db456531d25bc3e5f669ec22e
-Author: Ondrej Zajicek 
-Date:   Sun Mar 23 01:35:33 2014 +0100
-
-    Documentation (and minor fixes) for BGP graceful restart.
-
-commit 0c791f873aeb7c1052c97db7da4fe23873d69603
-Author: Ondrej Zajicek 
-Date:   Thu Mar 20 14:07:12 2014 +0100
-
-    BGP graceful restart support.
-    
-    Also significant core protocol state changes needed for that,
-    global graceful restart recovery state and kernel proto support
-    for recovery.
-
-commit d40c26594c22ad934a13061e11b373bdf81af8f9
-Author: Ondrej Zajicek 
-Date:   Wed Feb 26 13:25:39 2014 +0100
-
-    Fixes issues with static protocol reconfiguration.
-    
-    The old static route was not removed when the nexthop changed and the
-    new one was not viable (no neighbor).
-    
-    Thanks to Pierluigi Rolando for the original patch.
-
-commit 3216eb03ddddc057bb18fa4dd02b7935a604f71f
-Author: Ondrej Zajicek 
-Date:   Wed Feb 26 12:52:00 2014 +0100
-
-    Fixes longstanding issue with interfaces staying in IF_TMP_DOWN.
-    
-    Thanks to Pierluigi Rolando and others for the bugreport.
-
-commit d776540811cdf672dc113f29feef2415465589c6
-Author: Ondrej Zajicek 
-Date:   Wed Feb 12 12:57:38 2014 +0100
-
-    Adds configure error message.
-
-commit 4e398e34bf140baf73fe8dceaf81078fb343f65a
-Author: Ondrej Zajicek 
-Date:   Fri Feb 7 13:09:55 2014 +0100
-
-    Workaround thread-unsafeness of cli_echo().
-
-commit 9ae0f4b78c5e3619ee19969c052c863bf96be6d9
-Author: Ondrej Zajicek 
-Date:   Fri Feb 7 11:46:01 2014 +0100
-
-    Fixes autoconf check for ncurses.
-
-commit 5c200e0a4d26d183e04fda43de16340521002c40
-Merge: 4a5eb284c 080ed4d8c
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 20:15:05 2014 +0100
-
-    Merge branch 'add-path'
-
-commit 4a5eb284c9d51441e09976021d1bd93c21408d46
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 18:09:18 2014 +0100
-
-    Update include directive documentation.
-    
-    Thanks to Pierluigi Rolando for the bugreport.
-
-commit 12201fd854424628be7a00e1180ba082db7efa0b
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 18:00:41 2014 +0100
-
-    Fix a documentation update.
-
-commit 10c2e1e0125dfa600b1c2b6553883cccf2d025dd
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 17:54:25 2014 +0100
-
-    Fixes crash when state of disabled OSPF protocol is queried.
-    
-    Thanks to Ondrej Caletka for the bugreport.
-
-commit cba9cbf1bdb253c7727da10ff4f835d7ffbadeed
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 17:51:16 2014 +0100
-
-    Silence this annoying warning.
-
-commit 48e5f32db676645640f84ab3d630cce975aa6b20
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 17:46:01 2014 +0100
-
-    Many changes in I/O and OSPF sockets and packet handling.
-    
-    I/O:
-     - BSD: specify src addr on IP sockets by IP_HDRINCL
-     - BSD: specify src addr on UDP sockets by IP_SENDSRCADDR
-     - Linux: specify src addr on IP/UDP sockets by IP_PKTINFO
-     - IPv6: specify src addr on IP/UDP sockets by IPV6_PKTINFO
-     - Alternative SKF_BIND flag for binding to IP address
-     - Allows IP/UDP sockets without tx_hook, on these
-       sockets a packet is discarded when TX queue is full
-     - Use consistently SOL_ for socket layer values.
-    
-    OSPF:
-     - Packet src addr is always explicitly set
-     - Support for secondary addresses in BSD
-     - Dynamic RX/TX buffers
-     - Fixes some minor buffer overruns
-     - Interface option 'tx length'
-     - Names for vlink pseudoifaces (vlinkX)
-     - Vlinks use separate socket for TX
-     - Vlinks do not use fixed associated iface
-     - Fixes TTL for direct unicast packets
-     - Fixes DONTROUTE for OSPF sockets
-     - Use ifa->ifname instead of ifa->iface->name
-
-commit f48fa14214301382b2e6b134788a7506b61b664f
-Merge: 6601a1483 300e4008f
-Author: Ondrej Zajicek 
-Date:   Thu Feb 6 16:47:43 2014 +0100
-
-    Merge commit 'origin/master' into socket
-
-commit 300e4008f02382b87409dabb52a317b8336de55b
-Author: Ondrej Filip 
-Date:   Wed Feb 5 23:32:28 2014 +0100
-
-    Fedora init script improvement suggested by alex@alex.org.uk
-
-commit e9e6fbf924630abf821aa38f99e571f706536350
-Author: Ondrej Filip 
-Date:   Wed Feb 5 15:57:37 2014 +0100
-
-    Minor changes in Fedora init script.
-
-commit ec35c7c2fc24e499a86022860c38460ae4bbad39
-Author: Ondrej Filip 
-Date:   Tue Jan 21 23:43:22 2014 +0100
-
-    Small doc update.
-
-commit 6601a14831cdd32fc671ebc9dc299d2be427e489
-Merge: 2d0b7e24a 283c7dfad
-Author: Ondrej Zajicek 
-Date:   Tue Dec 10 22:30:46 2013 +0100
-
-    Merge branch 'add-path'
-
-commit 2d0b7e24a52d51904faa8a8e96d68863491c110a
-Author: Ondrej Zajicek 
-Date:   Mon Dec 2 11:54:32 2013 +0100
-
-    Fixes problem with source address selection in BGP and BFD.
-
-commit 080ed4d8c2c1982dd0c81c62703064b620a67a01
-Author: Ondrej Zajicek 
-Date:   Sun Dec 1 18:25:39 2013 +0100
-
-    Fixes bug in documentation.
-
-commit 10115b1d70552f3ec4446dfec9e62c3a16d9eae0
-Author: Ondrej Zajicek 
-Date:   Sun Dec 1 18:20:09 2013 +0100
-
-    Updates add-path documentation.
-
-commit e7d2ac4401be8aaf9629e248cad6a74498a6be24
-Author: Ondrej Zajicek 
-Date:   Tue Nov 26 22:37:24 2013 +0100
-
-    Finishes add-path.
-    
-    Fixes some bugs and uses generic hash implementation.
-
-commit 283c7dfada53a6dee6a8a17ecab492ffafd44b66
-Merge: 736e143fa 0bb4e37db
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 18:42:47 2013 +0100
-
-    Merge branch 'master' into add-path
-
-commit 0bb4e37db317a1290bad24fe430cac6569a9bd8c
-Author: Ondrej Filip 
-Date:   Mon Nov 25 15:16:20 2013 +0100
-
-    Release date added.
-
-commit e75520c455a1a3fd026a9633c3ad26d865165fee
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 13:46:29 2013 +0100
-
-    NEWS and version update.
-
-commit 90eb5e7a8bb60cb637626a3b433caf10cd8d2a03
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 13:44:07 2013 +0100
-
-    Use ISO 8601 timeformats by default.
-
-commit 0c95f85ec59cc970e8f9aa2da56e25dad249bbb8
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 11:06:00 2013 +0100
-
-    Fixes a reply code.
-
-commit 8137fe6d45762844248300de2a030e96042b1975
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 02:03:23 2013 +0100
-
-    Allows shorthands for birdc noninteractive commands.
-
-commit e237b28a4d4b17ab50182ac110f28594967e76dc
-Author: Ondrej Zajicek 
-Date:   Mon Nov 25 01:21:39 2013 +0100
-
-    Changes primary addr selection on BSD to respect SIOCGIFADDR ioctl() result.
-    
-    Thanks to Alexander V. Chernikov for the original patch.
-
-commit 5ebc92935cb58c78286d91f0831de94cd4ae0f9e
-Author: Ondrej Zajicek 
-Date:   Sun Nov 24 22:22:24 2013 +0100
-
-    Last state change should track protocol state change.
-    
-    And not core state change, which is not much relevant
-    (e.g. refeed in BGP).
-
-commit c72aca41e5fa55b0efa768e93b55f5c307f84025
-Author: Ondrej Zajicek 
-Date:   Sun Nov 24 22:12:51 2013 +0100
-
-    OSPF ifaces on loopback should be stub.
-
-commit e4d179f2c2f213c9190ff4d05979dc33f2c5b2c7
-Author: Ondrej Zajicek 
-Date:   Sun Nov 24 12:50:53 2013 +0100
-
-    Minor changes to default router ID calculation.
-
-commit f3e59178506dab9d54cf19ec701f8d9a7fe283f9
-Author: Ondrej Zajicek 
-Date:   Sun Nov 24 12:37:24 2013 +0100
-
-    Enables multihop mode for IBGP by default.
-    
-    This is more consistent with common usage and also with the behavior of
-    other implementations (Cisco, Juniper).
-    
-    Also changes the default for gw mode to be based solely on
-    direct/multihop.
-
-commit 52e030e14666ff00a4bb0c700d2c027fbeb87d04
-Author: Ondrej Zajicek 
-Date:   Sun Nov 24 00:17:02 2013 +0100
-
-    Converts filters to unsigned integers.
-
-commit 65194bd1eb2e6af217a750fa1e02b6eea66c7130
-Author: Ondrej Zajicek 
-Date:   Mon Aug 15 02:12:54 2011 +0200
-
-    Removes workaround related to import of kernel device routes.
-    
-    Thanks to Benjamin Cama for notification.
-
-commit 204e0d5d59279c4245d4d46b86a570b043d683cf
-Author: Ondrej Filip 
-Date:   Sat Nov 23 18:11:55 2013 +0100
-
-    Dots added.
-    New release will be 1.4.0.
-
-commit d0e33681540c9ad64b15f57a9d39c27658127a31
-Author: Ondrej Filip 
-Date:   Sat Nov 23 13:27:47 2013 +0100
-
-    Added some other features into NEWS file
-
-commit d940a2c4d4096f761a750e2df42ab55fd27a7e80
-Author: Ondrej Filip 
-Date:   Sat Nov 23 13:26:52 2013 +0100
-
-    Added a few sentences about symbol names.
-
-commit 736e143fa50607fcd88132291e96089b899af979
-Merge: 094d2bdb7 2b3d52aa4
-Author: Ondrej Zajicek 
-Date:   Sat Nov 23 11:50:34 2013 +0100
-
-    Merge branch 'master' into add-path
-    
-    Conflicts:
-    
-            filter/filter.c
-            nest/proto.c
-            nest/rt-table.c
-            proto/bgp/bgp.h
-            proto/bgp/config.Y
-
-commit 2b3d52aa421ae1c31e30107beefd82fddbb42854
-Author: Ondrej Zajicek 
-Date:   Sat Nov 23 01:56:16 2013 +0100
-
-    NEWS and version update.
-
-commit 77e43c8b72ff77dc7607accb09576c0baab422e0
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 22:49:04 2013 +0100
-
-    Minor fixes.
-
-commit 547d3bf45dd430828d597dfb56624bdc1bd798b3
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 22:42:47 2013 +0100
-
-    Allows pthreads by default on Linux and FreeBSD only.
-
-commit 41f8bf57c4d80cbec89b90b901afa9df4d2d76f1
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 21:59:43 2013 +0100
-
-    Changes identifiers to avoid use of reserved ones.
-
-commit 56027b5cbd7f432d30f7fc99bcf8680c840e6163
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 21:58:43 2013 +0100
-
-    Minor fix in log_commit() w.r.t. changes in BFD branch.
-
-commit 1fba34a7a1e245f08212a31a65030230da8c451d
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 18:45:57 2013 +0100
-
-    Adds check for buffer size in OSPF LSA flood.
-
-commit 0aeac9cb7f9887374ce0258c8653f9518529bf08
-Merge: 8931425d0 7c9930f9c
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 02:43:41 2013 +0100
-
-    Merge commit 'origin/bfd'
-
-commit 8931425d02dd8656b48142f608d3119ab6f4a96f
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 02:12:21 2013 +0100
-
-    Fixes problem with RIP on multiple ifaces on BSD.
-    
-    RIP sockets for multiple ifaces collided, because we cannot bind to
-    a specific iface on BSD. Workarounded by SO_REUSEPORT.
-    
-    Thanks to Eugene M. Zheganin for the bugreport.
-
-commit 548c329cde371bceef05f86b7f904378a392d89c
-Author: Ondrej Zajicek 
-Date:   Fri Nov 22 01:20:32 2013 +0100
-
-    Adds rate limiting to some log messages.
-
-commit 64534ea2f4361c247d7a0d1b6b14a02e8e3d6d33
-Author: Ondrej Zajicek 
-Date:   Thu Nov 21 13:17:42 2013 +0100
-
-    Fixes an issue when opposite address is mistaken for broadcast on ptp ifaces on BSDs.
-    
-    Thanks to Lex van Roon for the bugreport and to Alexander V. Chernikov
-    for examining it and locating the problem.
-
-commit 7c9930f9c8feb3b08f7a9e94a08807ccbbc096f5
-Author: Ondrej Zajicek 
-Date:   Thu Nov 21 11:36:49 2013 +0100
-
-    Adds a missing file.
-    
-    I forgot to add that to the previous commit.
-
-commit f8f2419d4c5b9028b9b3d2d893fe802f18eb239b
-Author: Ondrej Zajicek 
-Date:   Wed Nov 20 13:30:00 2013 +0100
-
-    Additional filter test case.
-
-commit 4d4979c67c65dceb1ae557707312b83fde4bc8a8
-Author: Ondrej Zajicek 
-Date:   Wed Nov 20 13:25:33 2013 +0100
-
-    Fixes some potential issues with invalid term size in clients.
-
-commit 1ec522538fb81a56b068c087d0a842faf7aa7869
-Author: Ondrej Zajicek 
-Date:   Tue Nov 19 22:33:48 2013 +0100
-
-    BFD protocol, ready for release.
-    
-    Supports OSPF and BGP and also statically configured sessions.
-
-commit 33be3ba713901befe2df651b869a406df8fc8ace
-Author: Ondrej Zajicek 
-Date:   Mon Oct 21 15:06:09 2013 +0200
-
-    Accepts a change of OSPFv3 neighbor's IP address.
-    
-    Thanks to Pierre Pfister for the patch.
-
-commit a15dab76f93337b07b4b03a64ac3bac26285dfd9
-Author: Ondrej Zajicek 
-Date:   Mon Oct 21 14:58:32 2013 +0200
-
-    Implements 'allow local as' option.
-    
-    Similar to allowas-in option on other routers.
-
-commit f8cc7396cf25328b002394bbd7af679188b03370
-Author: Ondrej Zajicek 
-Date:   Tue Oct 15 10:57:57 2013 +0200
-
-    Forces KRT rescan on syncer startup with multi syncer config.
-    
-    Thanks to  Sergey Popovich for the patch.
-
-commit 1cd198cf52b3eae677159d81eacca3e0ebe24e71
-Author: Ondrej Filip 
-Date:   Sat Oct 5 22:45:08 2013 +0200
-
-    Flag -f "run in foreground" added as requested by a package maintainter.
-
-commit 0e175f9f0fd872e95225355dbdeca49cd35ec0fd
-Author: Ondrej Zajicek 
-Date:   Sat Oct 5 20:12:28 2013 +0200
-
-    Fixes some BFD bugs and makes logging thread-safe.
-
-commit e7c2380260f20a4a3587b47df97879ef91c69774
-Author: Ondrej Zajicek 
-Date:   Sat Oct 5 19:30:12 2013 +0200
-
-    Implements PID file support.
-    
-    Thanks to Thierry Fournier for the original patch.
-
-commit 7ccb36d3308ef57d340e663f0cabd24663f4f62a
-Author: Ondrej Zajicek 
-Date:   Wed Oct 2 14:57:29 2013 +0200
-
-    Implements C.len operator for clist and eclist types.
-    
-    Thanks to Sergey Popovich for the original patch.
-
-commit 28a10f84cbc3635e59bff348cb1715859dfacade
-Author: Ondrej Zajicek 
-Date:   Wed Oct 2 14:41:37 2013 +0200
-
-    Some fixes in filter code.
-    
-    Thanks to Sergey Popovich for original patches.
-
-commit 70c5780535fa3bd2360e8208f9273ac6d1741107
-Author: Ondrej Zajicek 
-Date:   Wed Oct 2 12:10:09 2013 +0200
-
-    Minor code cleanups.
-    
-    Thanks to Sergey Popovich for the patch.
-
-commit b655596d1d9ad7664d12249c946ba3483b2de3f0
-Author: Ondrej Zajicek 
-Date:   Wed Oct 2 11:42:46 2013 +0200
-
-    Simplifies val_in_range().
-    
-    Also fixes missing type check for element ~ set.
-
-commit ec57bbf67f9e4221fb98f6769f592cedf2eb2d24
-Author: Ondrej Filip 
-Date:   Mon Sep 30 14:07:34 2013 +0200
-
-    Recheck export/import/receive limits during reconfiguration.
-
-commit a5fc59587fe864e4fcfb44eb3be57231b4ca339b
-Author: Ondrej Zajicek 
-Date:   Thu Sep 26 22:08:21 2013 +0200
-
-    Rewrites static attribute filter code and adds ifname/ifindex attributes.
-    
-    Thanks to Sergey Popovich for the original ifname/ifindex patch.
-
-commit 4df2019ebfc0f77feb16b6a33dea6d5ac595f55e
-Author: Ondrej Zajicek 
-Date:   Thu Sep 26 17:36:30 2013 +0200
-
-    Fixes build issues without BGP.
-    
-    Thanks to Sergey Popovich for the patch.
-
-commit f83ce94d5e410d5e5b921121867321c19451896b
-Author: Ondrej Zajicek 
-Date:   Thu Sep 26 17:33:00 2013 +0200
-
-    Fixes missing unregister of kernel table handling code.
-    
-    And some minor fixes.
-    
-    Thanks to Sergey Popovich for the patch.
-
-commit f515e22924591542a909db0deb8545386aaa576e
-Author: Ondrej Zajicek 
-Date:   Sun Sep 22 19:15:39 2013 +0200
-
-    Allows other than IA_PEER addresses on PtP ifaces on BSD.
-    
-    Also fixes a potential problem with link-local dest_addrs
-    for IA_PEER addresses.
-    
-    Thanks to Alexander V. Chernikov for the suggestion.
-
-commit 6a8d3f1c1ffbd964e4d11b452c73e1ea70310af3
-Author: Ondrej Zajicek 
-Date:   Mon Sep 16 23:57:40 2013 +0200
-
-    BFD work in progress.
-    
-    Now it compiles and mostly works.
-
-commit e550a37206528be39e4751865b46720885fd64ed
-Author: Ondrej Filip 
-Date:   Fri Sep 13 18:55:02 2013 +0200
-
-    Fixes problem with OSPF neighbor router ID change. Thanx to Alexander V. Chernikov
-
-commit c404f4b968b69a2c5c1975d04abf7474891d5656
-Author: Ondrej Filip 
-Date:   Wed Sep 11 01:15:34 2013 +0200
-
-    OSPF state machine fix - thanx to Alexander V. Chernikov
-
-commit 92f8878cbf5d8ad9e9b909a9dcbb2112de54a542
-Author: Ondrej Zajicek 
-Date:   Tue Sep 10 13:03:58 2013 +0200
-
-    Fixes a bug related to multiple IPs and direct protocol.
-    
-    Multiple IPs in the same IP prefix confuse the direct
-    protocol and could cause withdrawal of a valid prefix.
-    
-    Thanks to Dan Rimal for a bugreport.
-
-commit 2a0130f94d2304e316f0ffad8e52fce094559782
-Author: Ondrej Zajicek 
-Date:   Tue Sep 10 13:01:22 2013 +0200
-
-    Fixes a bug in kernel extended attribute processing.
-    
-    The bug caused that krt_prefsrc attribute was not processed when a route
-    received from a kernel protocol was exported to another kernel protocol.
-    
-    Thanks to Sergey Popovich for a bugreport.
-
-commit 507e182a60c3704f8a28a0450f1affc2c7c1b66a
-Author: Ondrej Zajicek 
-Date:   Tue Sep 10 12:58:24 2013 +0200
-
-    Fixes reconfiguration of global set variables.
-    
-    When global set variables were used, every reconfiguration restarted
-    protocols that use it in filters.
-    
-    Thanks to Sergey Popovich for a bugreport.
-
-commit d27e127aa996d500fed21be2bbbe888cafecb830
-Merge: bff9ce513 b0a8c7fc8
-Author: Ondrej Zajicek 
-Date:   Tue Sep 10 12:54:57 2013 +0200
-
-    Merge commit 'origin/master'
-
-commit bf139664aa2ae9956b520ba4813bb6e03bf1a3e8
-Author: Ondrej Zajicek 
-Date:   Tue Sep 10 12:09:36 2013 +0200
-
-    Initial BFD commit, work in progress.
-
-commit b0a8c7fc8547eef21ede33887580b5e867ee742c
-Author: Ondrej Filip 
-Date:   Thu Aug 15 20:26:50 2013 +0200
-
-    Wrong change commited - 'route limit' marked as obsolete.
-
-commit e628cad0ca9eb7d9bf4141e57201169c46faa661
-Author: Ondrej Filip 
-Date:   Thu Aug 15 20:20:05 2013 +0200
-
-    BGP option 'route limit' is marked as obsolete. 'import limit' should be used instead.
-
-commit 6d90e57332e102e261d69a1a05dfaa19fb31d933
-Author: Ondrej Filip 
-Date:   Thu Aug 15 19:54:18 2013 +0200
-
-    Typo in documentation fixed.
-
-commit 1f64a487a065cc27c52ab0d3d38b7c82926fea70
-Author: Ondrej Filip 
-Date:   Thu Aug 15 13:29:33 2013 +0200
-
-    Symbol names enclosed by apostrophes can contain colons.
-
-commit bff9ce5130d16af2fd802d42bdb2bff00980c9ae
-Author: Ondrej Zajicek 
-Date:   Thu Aug 15 01:06:47 2013 +0200
-
-    Extends delete/filter operators to work no bgp_paths.
-
-commit 8a112d8ba2e77d79468146ec8f54b3c90b6e68e4
-Author: Ondrej Zajicek 
-Date:   Tue Aug 13 23:04:06 2013 +0200
-
-    Removes strip from make install
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit b21955e05800c3ceedfe39eef605da84285296c7
-Author: Ondrej Zajicek 
-Date:   Tue Aug 13 20:42:43 2013 +0200
-
-    Fixes a bug related to mixed up neighbor events in BGP.
-    
-    Neighbor events related to received route next hops got mixed up with
-    sticky neighbor node for an IP of the BGP peer. If a neighbor for a next
-    hop disappears, BGP session is shut down.
-
-commit 00192d5ab88ff9eeccbc1bc10cb534976a56963d
-Author: Ondrej Zajicek 
-Date:   Tue Aug 13 20:25:05 2013 +0200
-
-    Implements proper setting of 'gw' route attribute.
-    
-    Thanks to Sergey Popovich for the bugreport.
-
-commit f8e8fcfabeb206287065f48e800743b0aa797cc2
-Author: Ondrej Zajicek 
-Date:   Mon Jul 29 13:07:15 2013 +0200
-
-    Test commit.
-
-commit fd6cbe9053c529df7eac431ff72d3c509ba91ca9
-Author: Ondrej Zajicek 
-Date:   Mon Jul 29 12:52:38 2013 +0200
-
-    Test commit.
-
-commit cff430f396b006ef34e756075948dcb6b07fc427
-Author: Ondrej Zajicek 
-Date:   Mon Jul 29 12:28:03 2013 +0200
-
-    Test commit.
-    
-    Also contains minor fixes in doc formatting.
-
-commit 50b71c1b96f99ac40e733295daeb03927777b206
-Author: Ondrej Filip 
-Date:   Sun Jul 28 18:50:40 2013 +0200
-
-    Fixed small error in documantation (thanks engels@openit.de).
-
-commit 643228bc1cfb6a8f5169ee8ebfe1b75c81cc8543
-Author: Ondrej Zajicek 
-Date:   Sat Jul 27 00:47:58 2013 +0200
-
-    NEWS and version update.
-
-commit f4830d8cb801c9124361bcc0c9e33f8f6005c08d
-Author: Ondrej Zajicek 
-Date:   Sat Jul 27 00:38:29 2013 +0200
-
-    Documentation update.
-
-commit 4ee39ff2ff78f86ce1ec79a77e22120984452549
-Author: Ondrej Zajicek 
-Date:   Fri Jul 26 11:06:08 2013 +0200
-
-    Fixes initial random values for function arguments.
-    
-    Thanks to Javor Kliachev for the bugreport.
-
-commit 1103b32e830fbf98d9b3e32c0425b9a589773bf8
-Author: Ondrej Zajicek 
-Date:   Thu Jul 25 22:33:57 2013 +0200
-
-    Allows to define constants of all filter types.
-
-commit ac5745134847c044b21c311e5ab11d92d05bacc1
-Author: Ondrej Zajicek 
-Date:   Thu Jul 25 13:55:24 2013 +0200
-
-    Implements RFC 6608 Subcodes for BGP FSM Error.
-
-commit 508d936078aecc8fbbb9ca1218104599c4a3cb4a
-Author: Ondrej Zajicek 
-Date:   Thu Jul 25 13:15:32 2013 +0200
-
-    Implements eval command and minor CLI cleanups.
-    
-    Implemented eval command can be used to evaluate expressions.
-    
-    The patch also documents echo command and allows to use log classes
-    instead of integer as a mask for echo.
-
-commit a0b176e3b2b50d3a30574afa927e0ee8ef65be68
-Author: Ondrej Zajicek 
-Date:   Wed Jul 24 14:20:46 2013 +0200
-
-    Fixes header file name.
-    
-    Thanks to Fritz Grimpen for the patch.
-
-commit e1afee279993363ffb4a7005554d0774eb09b764
-Author: Ondrej Zajicek 
-Date:   Wed Jul 24 14:19:37 2013 +0200
-
-    Fixes socket error hook for radv protocol.
-
-commit 9135c1f0ca6322bff9648895b5394b97761b4bcb
-Author: Ondrej Zajicek 
-Date:   Wed Jul 24 14:11:12 2013 +0200
-
-    Fixes bug in protocol flushing and rtable pruning.
-    
-    When route was propagated to another rtable through a pipe and then the
-    pipe was reconfigured softly in such a way that any subsequent route
-    updates are filtered, then the source protocol shutdown didn't clean up
-    the route in the second rtable which caused stale routes and potential
-    crashes.
-
-commit 48b15ef10fede35113af71bd0dbb0b27a5fcb8f5
-Author: Ondrej Zajicek 
-Date:   Sat Jul 13 01:39:41 2013 +0200
-
-    Fixes stuck connection during BGP session shutdown.
-    
-    If TX buffers were full during BGP session shutdown
-    then a protocol waited indefinitely to be able to
-    send notification packet to close the session.
-
-commit 354496ace87341428e6005fbc073fbe57b4e6c0e
-Author: Ondrej Zajicek 
-Date:   Thu Jul 11 13:50:44 2013 +0200
-
-    Some fixes for TTL security.
-
-commit cc31b75a8fd7949533c12db2c3e9d67eeaf46d10
-Author: Ondrej Zajicek 
-Date:   Tue Jul 9 23:27:10 2013 +0200
-
-    Implements 'bgppath ~ int set' filter op.
-
-commit c01a94663cc18f53fd741c5d44387eead9ca88af
-Author: Ondrej Zajicek 
-Date:   Sun Jul 7 12:11:42 2013 +0200
-
-    Implements multiple routing table support for FreeBSD and OpenBSD.
-    
-    Inspired by the patch from Alexander V. Chernikov.
-
-commit c6964c305b425b98aaf0492806a28b578d799d83
-Author: Ondrej Zajicek 
-Date:   Sat Jun 29 22:55:41 2013 +0200
-
-    Makes krt.c much more readable.
-
-commit 6ac4f87a2d661c739e55a63577e7bccf696c7abd
-Author: Ondrej Zajicek 
-Date:   Wed Jun 26 14:35:39 2013 +0200
-
-    Documentation for TTL security.
-
-commit 70e212f913b6ce9d343d6c401b4f1712986a5f8c
-Author: Ondrej Zajicek 
-Date:   Tue Jun 25 15:33:00 2013 +0200
-
-    Implements TTL security for OSPF and RIP.
-    
-    Interfaces for OSPF and RIP could be configured to use (and request)
-    TTL 255 for traffic to direct neighbors.
-    
-    Thanks to Simon Dickhoven for the original patch for RIPng.
-
-commit ef4a50be10c6dd0abffd957132cd146029c3d79d
-Author: Ondrej Zajicek 
-Date:   Mon Jun 24 16:37:30 2013 +0200
-
-    Better packet priority and traffic class handling.
-    
-    Implements support for IPv6 traffic class, sets higher priority for OSPF
-    and RIP outgoing packets by default and allows to configure ToS/DS/TClass
-    IP header field and the local priority of outgoing packets.
-
-commit fad04c750ca6906fb095f1b45958dec0ac8e210c
-Author: Ondrej Zajicek 
-Date:   Thu Jun 13 11:27:14 2013 +0200
-
-    Fixes problems with kernel routes multiple routing tables.
-    
-    Temporary dummy routes created by a kernel protocol during routing table
-    scan get mixed with real routes propagated from another kernel protocol
-    through a pipe.
-
-commit f623ab9875cad2d129f708e95021d3a252930000
-Author: Ondrej Zajicek 
-Date:   Tue Jun 11 12:12:11 2013 +0200
-
-    Implements OSPF stub router option (RFC 3137).
-    
-    Also fixes OSPFv3 routing table calculcation w.r.t.
-    errata 2078 to RFC 5340.
-
-commit 924868543c2010f3ef2cfcb7ba6bac5988ab3264
-Author: Ondrej Zajicek 
-Date:   Tue May 28 10:48:14 2013 +0200
-
-    Fixes crash with vlinks.
-
-commit 9810d055628877232f811d684567e203381e10dc
-Author: Ondrej Zajicek 
-Date:   Tue May 28 10:44:44 2013 +0200
-
-    Fixes problems with routing table scans on some platforms.
-    
-    Negative bit shifts are definitely undefined oprations.
-
-commit 9c99d753fd672bd9839715ee325ef01cca993dbf
-Author: Ondrej Zajicek 
-Date:   Thu May 9 11:11:06 2013 +0200
-
-    Fixes a problem with BGP neighbors, link-local addresses and locking.
-    
-    Thanks to Fritz Grimpen for the bugfix.
-
-commit a2017200c71293d0a28a39d1f250ba38d57f6289
-Author: Ondrej Zajicek 
-Date:   Mon Apr 29 22:33:50 2013 +0200
-
-    NEWS and version update.
-
-commit 572c6440432e3138ea622cfb5a4ef7580d77ef4a
-Author: Ondrej Zajicek 
-Date:   Mon Apr 29 22:08:05 2013 +0200
-
-    Fixes a crash when mrtdump is enabled and interface goes away.
-    
-    Thanks to Peter Christensen for the bugfix.
-
-commit 32622d0ea366406f3afa14bb9edb4855d6979786
-Merge: efd6d12b9 a5e9f3d26
-Author: Ondrej Zajicek 
-Date:   Tue Apr 23 02:54:13 2013 +0200
-
-    Merge branch 'birdcl'
-
-commit a5e9f3d26f887deb451a3ea086e52266c117aa0a
-Author: Ondrej Zajicek 
-Date:   Tue Apr 23 02:42:35 2013 +0200
-
-    Restructures birdc and birdcl to merge duplicated code.
-    
-    The BIRD client code is restructured that most of the code (including
-    main function) is shared in client.c, while birdc.c and birdcl.c contain
-    just I/O-specific callbacks. This removes all duplicated code from
-    variant-specific files.
-
-commit d2c392d44839baaefa48f4a38060be648d3415fb
-Author: Ondrej Zajicek 
-Date:   Fri Apr 19 13:59:08 2013 +0200
-
-    Removes unnecessary client subdirectories and updates buildsystem.
-    
-    Renames some files:
-    birdc/client.c -> birdc.c
-    birdcl/client.c -> birdcl.c
-    client_common.c -> common.c
-
-commit efd6d12b975441c7e1875a59dd9e0f3db7e958cb
-Author: Ondrej Zajicek 
-Date:   Wed Apr 17 15:09:50 2013 +0200
-
-    Adds two new default GCC options.
-    
-    Adds two new default GCC options related to optimizations
-    (-fno-strict-aliasing and -fno-strict-overflow). This
-    should fix some hyperaggressive GCC optimizations.
-    
-    Also updates autoconf option detection.
-
-commit 8df02847e8af29863c325b7297e3a2b2ed5f961c
-Author: Ondrej Zajicek 
-Date:   Wed Apr 17 13:06:40 2013 +0200
-
-    Fixes a compatibility issue in OSPFv2 PtP links.
-    
-    BIRD used zero netmask in hello packets on all PtP links, not just on
-    unnumbered ones. This patch fixes it and adds option 'ptp netmask'
-    for overriding the default behavior.
-    
-    Thanks to Alexander V. Chernikov for the original patch.
-
-commit cd3b02d198093abbbe671f647e4deb2470eb9cf1
-Author: Ondrej Zajicek 
-Date:   Tue Apr 16 17:53:22 2013 +0200
-
-    Allows IP of loopback to be used in automatic router ID selection.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 8bd9b930c320f09d3b3792b5f991cf702e9d55be
-Author: Ondrej Zajicek 
-Date:   Tue Apr 16 17:40:44 2013 +0200
-
-    Fixes a bug in IPv6 BGP next hop processing.
-    
-    BGP next hop attributes with empty link-local IPv6 addresses were not
-    handled properly.
-    
-    Thanks to Sergey Popovich for the bugfix.
-
-commit 48bc232f08141d26691237c3d79db587ce16932b
-Author: Ondrej Zajicek 
-Date:   Tue Apr 16 17:27:34 2013 +0200
-
-    Implements 'next hop keep' option for BGP.
-    
-    This option allows to keep the received next hop even in cases when
-    the route is sent to an interface with a different subnet.
-
-commit 9ff5257357d9975654279db17bbc8525583ba1cc
-Author: Ondrej Zajicek 
-Date:   Tue Apr 16 16:22:31 2013 +0200
-
-    Better handling of global addresses as configured NBMA neighbors in OSPFv3.
-    
-    Configured NBMA neighbors in OSPFv3 should be link-local addresses, old
-    behavior was to silently ignore global ones. The patch allows BIRD to
-    accept global ones, but adds a warning and a documentation notice.
-    
-    Thanks to Wilco Baan Hofman for the bugreport.
-
-commit 568d9c9faeab70951d8e9bfea521e1b38a9a3d1c
-Author: Tomas Hlavacek 
-Date:   Sat Apr 6 22:07:32 2013 +0200
-
-    Fix birdcl async message handling
-    
-    Fix handling of async messafe in the bird light client. The async message
-    may occure at the any moment so we need the client to liste for the
-    message from server when it waits for user input.
-
-commit ce1348537455e5482a283f7a4cae734d13dcf34e
-Author: Tomas Hlavacek 
-Date:   Tue Mar 19 18:02:40 2013 +0100
-
-    Fix birdcl questionmark handling
-    
-    Fix handling of questionmark handling in the bird light client. The
-    questionmark should display help when it is the last non-blank character on
-    command line. Otherwise the questionmark does not have any special meaning
-    and it could be a part of a pattern.
-
-commit 8322ecde124188a9408b54afead4666bb954e5a5
-Author: Tomas Hlavacek 
-Date:   Sun Feb 24 23:47:22 2013 +0100
-
-    Add lightweight client - birdcl
-    
-    Restructure client/ subdir. Add two different flavors of client.
-    The full featured birdc client code is in client/birdc/.
-    The new light client birtcl is in client/birdcl/.
-    Common sources of both clients are directly in client/.
-    
-    Rework on-line auto-completion in client/command.c to conditionally turn off
-    ncurses-specific code.
-    
-    Add lightweight client without libreadline and ncurses dependencies - birdcl.
-    The birdcl lacks support of history, on-line auto-completion and there
-    are different implementations of "more" functionality and help on '?' press.
-    New client operates in canonical terminal mode (apart from "more" display)
-    and therefore all commands have to be executed by a return key including help
-    commands (called by '?' character in the end of the line).
-    Apart from these limitations the interaction style should be the same as
-    for the full client - birdc.
-    Build of birdcl is always on (independent on --enable-client parameter).
-
-commit e454916149d4efe66732fdd0388181813cab6ed0
-Author: Tomas Hlavacek 
-Date:   Wed Jan 23 17:14:53 2013 +0100
-
-    Pull out independent routines from client_full.c
-    
-    Pull out routines for interacting with the server and interpreting
-    internal commands which are not dependent on libreadline and
-    ncurses libraries.
-    
-    This is a preparation step for a new lightweight birdc client.
-
-commit 5c2c4ea8b1e924fce433094e744c0467da55aaab
-Author: Tomas Hlavacek 
-Date:   Wed Jan 23 15:51:04 2013 +0100
-
-    Rename client/client.c to client_full.c
-    
-    Rename client/client.c to client-full.c and change the Makefile accordingly.
-    This is a preparation step for introducing a new lightweight client which
-    should reuse as much code as possible from the old one but it should not depend
-    on external libraries.
-    
-    Signed-off-by: Tomas Hlavacek 
-
-commit a9fc659b840e13323aa43e92eb8f39ceb19b5ed6
-Author: Ondrej Filip 
-Date:   Tue Feb 26 14:29:53 2013 +0100
-
-    Small typos fixed.
-
-commit de41dcd13d6f9d4785c80e6234ac38f2a15f5429
-Author: Ondrej Filip 
-Date:   Tue Feb 26 14:13:11 2013 +0100
-
-    Redundant lines removed.
-
-commit e667622a35722ec007137e678f4f70841562e57f
-Author: Ondrej Filip 
-Date:   Mon Feb 25 10:39:46 2013 +0100
-
-    Default rounting table for 'show route export/preexport/protocol' is the one related to a respective protocol.
-
-commit a9c38203bdcad92f7ac0a8a912241d2acb483f2c
-Author: Ondrej Filip 
-Date:   Sun Feb 24 00:43:08 2013 +0100
-
-    Allow 1 sec RIP update.
-
-commit 04ddefb357b2b8759be16633f7bb1df49b0405ea
-Author: Ondrej Filip 
-Date:   Fri Feb 22 07:15:27 2013 +0100
-
-    Use BIRD's ASSERT instead of assert.h
-
-commit 2bf59bf4d3e4fcaff489d3445134e5e2e2af9cf6
-Author: Ondrej Filip 
-Date:   Thu Feb 21 00:44:59 2013 +0100
-
-    Hotfix to solve an issue with delaying timers reported by Aleksey Chudov.
-
-commit 9d969be5f2d867704e82bd7d6c8049623d50708f
-Author: Ondrej Filip 
-Date:   Thu Feb 14 23:35:51 2013 +0100
-
-    I still believe that 0 == NULL, however this patch will make Santiago happy. :-)
-
-commit 4c2abee74e64f64fba61aad6e2b66e3895820003
-Author: Ondrej Filip 
-Date:   Tue Feb 12 13:15:01 2013 +0100
-
-    Allow submitting BIRD commands from UNIX shell even in restricted mode.
-
-commit 8c4da7e01ded3f06cbf873e67c5ae1cf70cf280b
-Author: Ondrej Filip 
-Date:   Sun Feb 10 19:17:38 2013 +0100
-
-    Symbol names enclosed by apostrophes can contain DOTs.
-
-commit 0bc3542ab6e0a96342e35ead8ff1c52f980facc2
-Author: Ondrej Filip 
-Date:   Sun Feb 10 19:06:56 2013 +0100
-
-    Route limits can be disabled - this makes sense for protocol templates
-
-commit 155134f3960bc06a18c8c7d9a97181b786d77a3a
-Author: Ondrej Filip 
-Date:   Sun Feb 10 19:04:08 2013 +0100
-
-    A few semicolons added to decrease a number of warnings.
-
-commit c6a2fe64bed8dc67af0e868052b055aa0f45cdf2
-Author: Ondrej Zajicek 
-Date:   Sat Feb 9 00:53:04 2013 +0100
-
-    Fixes handling of iface routes in static proto during reconfiguration.
-    
-    During reconfiguration, iface routes were installed even when iface was down.
-
-commit 36da2857bc911924a250a234f38cf58c3b21f1bc
-Author: Ondrej Zajicek 
-Date:   Fri Feb 8 23:58:27 2013 +0100
-
-    Implements router advertisements activated by received routes.
-    
-    The RAdv protocol could be configured to change its behavior based on
-    availability of routes, e.g., do not announce router lifetime when a
-    default route is not available.
-
-commit d214ae4fdc1e323f89efb8a80c068fef4a45758f
-Author: Ondrej Zajicek 
-Date:   Sat Jan 12 21:26:42 2013 +0100
-
-    Fix missing documentation for one option.
-
-commit 13d4dd138d5dc6c884ded280f9244fac707c4f32
-Author: Ondrej Zajicek 
-Date:   Fri Jan 11 14:53:20 2013 +0100
-
-    NEWS update.
-
-commit b662290f40ea0fa0b1a1ba283e50e833724f2050
-Author: Ondrej Zajicek 
-Date:   Thu Jan 10 13:07:33 2013 +0100
-
-    Separate import and receive limits.
-    
-    They have different behavior w.r.t. filtered routes that are kept.
-
-commit 79b4e12e6032faf6bb1f3feac385bd36ee53019e
-Author: Ondrej Zajicek 
-Date:   Thu Dec 27 12:56:23 2012 +0100
-
-    Implements interface masks for choosing router id.
-    
-    Router ID could be automatically determined based of subset of
-    ifaces/addresses specified by 'router id from' option. The patch also
-    does some minor changes related to router ID reconfiguration.
-    
-    Thanks to Alexander V. Chernikov for most of the work.
-
-commit a92cf57dd6ba021a495fe7268c86dc8e6aeecbb2
-Author: Ondrej Zajicek 
-Date:   Wed Dec 26 12:40:48 2012 +0100
-
-    Implements undo command and optional timeout for configuration
-    
-    Several new configure command variants:
-    
-    configure undo - undo last reconfiguration
-    configure timeout - configure with scheduled undo if not confirmed in timeout
-    configure confirm - confirm last configuration
-    configure check - just parse and validate config file
-
-commit 80a9cadc76101157707aecc0b482ad88ad702fc3
-Author: Ondrej Zajicek 
-Date:   Tue Nov 27 02:08:04 2012 +0100
-
-    Changes static route targets drop/reject to blackhole/unreachable.
-    
-    To be consistent with rest of BIRD and Linux. Old names are also
-    allowed for compatibility.
-
-commit b31774eeb01a2f63e4ce4dc83f36ffd17879593e
-Author: Ondrej Zajicek 
-Date:   Tue Nov 27 01:30:09 2012 +0100
-
-    Removes some nonsense.
-
-commit 3e40f3e795e39f0b92445fd5295382220077c77f
-Author: Ondrej Zajicek 
-Date:   Tue Nov 27 01:25:47 2012 +0100
-
-    Fixes setting of route attributes of type router id.
-
-commit c93c02088a026b83f452fbd260135ba4c8da7ecf
-Author: Ondrej Zajicek 
-Date:   Fri Nov 16 13:30:54 2012 +0100
-
-    NEWS and version update.
-
-commit 70577529244d6d920b75d95e797156e05141db30
-Author: Ondrej Zajicek 
-Date:   Fri Nov 16 13:29:16 2012 +0100
-
-    Fixes route tracing w.r.t. kept filtered routes.
-
-commit cf3a704b6a2263aba6bb6adb4c2c9dd93b72f470
-Author: Ondrej Zajicek 
-Date:   Fri Nov 16 02:34:12 2012 +0100
-
-    Updates the documentation.
-
-commit 6cadbf325bfcf25a04d869778abb443f9e1b6119
-Author: Ondrej Zajicek 
-Date:   Thu Nov 15 14:08:20 2012 +0100
-
-    Change unnamed ptp link description on OSPFv2.
-    
-    Although it is a slight deviation from the standard, it has no ill
-    consequences for OSPFv2 and the change fixes a compatibility issue
-    with some broken implementations.
-
-commit 15550957957f3c790f3bec3f6b8721559ea25969
-Author: Ondrej Zajicek 
-Date:   Thu Nov 15 01:29:01 2012 +0100
-
-    Changes 'rejected' to 'filtered' in one of the last patches.
-
-commit e16469bc4d182428687a5ef5f2fb4707afa15abd
-Author: Ondrej Filip 
-Date:   Mon Nov 12 13:48:29 2012 +0100
-
-    AS# in bgp.agreggator was a signed integer - fixed.
-
-commit 227af52fb5be09c841fbd9f86e7bb3992b981a4a
-Author: Ondrej Zajicek 
-Date:   Sat Nov 10 16:18:12 2012 +0100
-
-    Fixes OSPF reconfigure w.r.t. downed ifaces.
-
-commit a55a90faec5cce09cee65f484e3731207af00335
-Author: Ondrej Zajicek 
-Date:   Sat Nov 10 14:54:35 2012 +0100
-
-    Peer address of stub iface should be announced in OSPF Router LSA.
-
-commit cf98be7b6743e45dde9e0458664cc0762bf08867
-Author: Ondrej Zajicek 
-Date:   Sat Nov 10 14:26:13 2012 +0100
-
-    Allows rejected routes to be kept and examined.
-    
-    When 'import keep rejected' protocol option is activated, routes
-    rejected by the import filter are kept in the routing table, but they
-    are hidden and not propagated to other protocols. It is possible to
-    examine them using 'show route rejected'.
-
-commit dd4da6f640fb581cbd7d1ca537bf382558492b8e
-Author: Ondrej Zajicek 
-Date:   Wed Oct 31 17:14:35 2012 +0100
-
-    Fixes another bug in OSPFv3 vlinks.
-
-commit 8249ad9b304ea88b29e3aea76ebe49bb50348aaa
-Author: Ondrej Zajicek 
-Date:   Mon Oct 29 20:39:03 2012 +0100
-
-    Fixes sorting in OSPF show state.
-
-commit e4404cef0be10e639566986a2f8c1906c9f37de1
-Author: Ondrej Zajicek 
-Date:   Mon Oct 29 20:29:31 2012 +0100
-
-    Fixes several bugs related to OSPFv3 vlinks.
-
-commit 0343d066dab077d1391640c53198199b16bef993
-Author: Ondrej Zajicek 
-Date:   Wed Aug 29 12:42:49 2012 +0200
-
-    Fixes a bug in primary IP selection.
-
-commit 8ecbaf9c70b802a1200ad37f2bfd4bc64173c5fe
-Author: Ondrej Zajicek 
-Date:   Thu Aug 16 13:09:26 2012 +0200
-
-    Fixes a bug with neighbor cache and overlapping IP prefixes.
-    
-    When there are overlapping IP prefixes and one disappears,
-    neighbors associated with it was removed even if there
-    is another covering IP prefix.
-
-commit 094d2bdb79e1ffa0a02761fd651aa0f0b6b0c585
-Author: Ondrej Zajicek 
-Date:   Tue Aug 14 16:25:22 2012 +0200
-
-    Implements ADD-PATH extension for BGP.
-    
-    Allows to send and receive multiple routes for one network by one BGP
-    session. Also contains necessary core changes to support this (routing
-    tables accepting several routes for one network from one protocol).
-    It needs some more cleanup before merging to the master branch.
-
-commit d760229ab897fa1bf1fd0fe7019cc2431d21a1cc
-Author: Ondrej Filip 
-Date:   Wed Aug 8 14:10:31 2012 +0200
-
-    DragonFly support add - thanks to john@marino.st
-
-commit 60c412b9368fd7c3b0a8df2200f02140adcb0cf3
-Merge: 3fe1d9e4a 94e2f1c11
-Author: Ondrej Filip 
-Date:   Tue Aug 7 11:15:23 2012 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/bird
-
-commit 94e2f1c111721d6213ea65cac5c53036e38e3973
-Author: Ondrej Zajicek 
-Date:   Tue Aug 7 11:06:57 2012 +0200
-
-    NEWS and version update.
-
-commit c06de722ddf36f3d6aaabfd4ae9d74a3ea72bbf9
-Author: Ondrej Zajicek 
-Date:   Mon Aug 6 11:09:13 2012 +0200
-
-    Some minor fixes.
-
-commit 5400c0e7f982757418a0aeb892459b52fbbcffc3
-Author: Ondrej Zajicek 
-Date:   Mon Aug 6 02:42:24 2012 +0200
-
-    Fixes BGP subcode during global shutdown.
-
-commit bbcfd5a0485a8df9568d8da0fc524e272e3e7601
-Author: Ondrej Zajicek 
-Date:   Thu Jul 26 13:59:50 2012 +0200
-
-    Fixes default route in OSPF multiple area setting.
-
-commit 48cf5e84e6ed17578e4ad43c5ef54d6ff7d825c4
-Author: Ondrej Zajicek 
-Date:   Tue Jul 24 20:12:14 2012 +0200
-
-    Documentation update,
-
-commit 0e224d598579626e03d3727d5901ba2d654ac521
-Author: Ondrej Zajicek 
-Date:   Sun Jul 22 12:35:04 2012 +0200
-
-    RDNSS and DNSSL documentation for RAdv.
-
-commit 36415e4b1dd769458cced44525ee74d26d15f9c6
-Author: Ondrej Zajicek 
-Date:   Fri Jul 20 19:56:57 2012 +0200
-
-    Allows to redefine master table.
-
-commit c4b76d7b19cf48ddbcbe913c22ef7f1e8429f5ea
-Author: Ondrej Zajicek 
-Date:   Wed Jul 18 19:35:30 2012 +0200
-
-    Rename sk_new() to avoid name collision with OpenSSL.
-
-commit 4be266a9831799dcc2e67e83fc83d9db43828a64
-Author: Ondrej Zajicek 
-Date:   Wed Jul 18 19:29:33 2012 +0200
-
-    Implements wildcard matching in config file include.
-    
-    Also fixes some minor bugs in include.
-    
-    Thanks Kelly Cochran for suggestion and draft patch.
-
-commit abced4a91495e27fe86b142bc1967cec53bab3dc
-Merge: fc06fb624 761702644
-Author: Ondrej Zajicek 
-Date:   Mon Jul 16 14:44:45 2012 +0200
-
-    Merge branch 'rt-accepted'
-    
-    Conflicts:
-    
-            nest/config.Y
-            nest/rt-table.c
-            proto/bgp/bgp.c
-
-commit 761702644397886bd3c1be10fd55c01485b7c454
-Merge: 26822d8fe 553e40546
-Author: Ondrej Zajicek 
-Date:   Mon Jul 16 10:41:29 2012 +0200
-
-    Merge commit 'origin/rt-accepted' into rt-accepted
-
-commit 26822d8fe1376b2ffd902a3b5caa47f81a88e74e
-Author: Ondrej Zajicek 
-Date:   Wed Jul 4 21:31:03 2012 +0200
-
-    Finalize RA_ACCEPTED handling.
-
-commit fc06fb62443c135773ee4c05ed83925cc47b046d
-Author: Ondrej Zajicek 
-Date:   Sat Jul 7 10:40:00 2012 +0200
-
-    Implements RDNSS and DNSSL support for RAdv.
-
-commit 3fe1d9e4a40663b93b59f5b6f9d61af9dc6a8ae6
-Merge: 72b2db8db 95127cbbb
-Author: Ondrej Filip 
-Date:   Tue May 15 23:40:37 2012 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/bird
-
-commit 95127cbbb76e8870e029454a5313bc4b6ce69a4a
-Author: Ondrej Zajicek 
-Date:   Mon May 14 11:47:41 2012 +0200
-
-    Real broadcast mode for OSPFv2.
-
-commit 0ec031f7400fbacdd86b40ae1870c58715a7f108
-Author: Ondrej Zajicek 
-Date:   Fri May 11 18:52:59 2012 +0200
-
-    Allows to set instance ID for OSPFv3 interfaces.
-
-commit 47c447c42e0bfa1836d951d1e6c1a2236d39dcbb
-Author: Ondrej Zajicek 
-Date:   Fri May 4 23:05:47 2012 +0200
-
-    Minor cleanups.
-
-commit b7f3df79054aca327654c1fb4739c4ff02e59e6e
-Author: Ondrej Zajicek 
-Date:   Fri May 11 12:01:27 2012 +0200
-
-    Fixes a bug in RA_ACCEPTED handling.
-
-commit 72b2db8db7534c52e928618410ec1f18787752c8
-Merge: 2795700c3 95616c820
-Author: Ondrej Filip 
-Date:   Fri May 11 00:01:29 2012 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/bird
-
-commit 95616c820248018f4999972cad315f2da60e4960
-Author: Ondrej Zajicek 
-Date:   Fri May 4 16:38:25 2012 +0200
-
-    Cleanup in sysdep KRT code, part 4.
-    
-    Adding some files that was accidentally removed
-    (instead of moved) in cleanup part 2.
-
-commit 064e7be5cd4dffd564b4ea41ba6d843492a55c97
-Author: Ondrej Zajicek 
-Date:   Fri May 4 00:20:23 2012 +0200
-
-    History deduplication in birdc.
-
-commit e14bd38087ed8ef1945dd0a3878cc560478145f0
-Author: Ondrej Zajicek 
-Date:   Thu May 3 14:04:56 2012 +0200
-
-    Fixes flushing of device routes.
-
-commit ab188fb76d7822350724b182106a19995a73d719
-Author: Ondrej Zajicek 
-Date:   Thu May 3 12:25:15 2012 +0200
-
-    Implements build options to specify socket dir and suffix.
-
-commit 2795700c3158fa52b6cf957e9d0b9ad4a27c67a5
-Merge: 1f85226ec bf4220733
-Author: Ondrej Filip 
-Date:   Wed May 2 11:10:40 2012 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/bird
-
-commit 7a2c48dafce9420a23fd57408c31eecfc20c4fe0
-Author: Ondrej Zajicek 
-Date:   Mon Apr 30 22:34:06 2012 +0200
-
-    Cleanup in sysdep KRT code, part 3.
-    
-    Just one more renaming, old krt_set_notify() to krt_replace_rte().
-
-commit f1aceff59bbf942bc11c2e9a4c51e381c06f2b20
-Author: Ondrej Zajicek 
-Date:   Mon Apr 30 22:21:52 2012 +0200
-
-    Cleanup in sysdep KRT code, part 2.
-    
-    Remove support for historic Linux kernels,
-    merge krt-iface, krt-set and krt-scan stub headers.
-
-commit 396dfa9042305f62da1f56589c4b98fac57fc2f6
-Author: Ondrej Zajicek 
-Date:   Mon Apr 30 15:31:32 2012 +0200
-
-    Cleanup in sysdep KRT code, part 1.
-    
-    OS-dependent functions renamed to be more consistent,
-    prepared to merge krt-set and krt-scan headers.
-    
-    Name changes:
-    
-    struct krt_if_params -> struct kif_params
-    struct krt_if_status -> struct kif_status
-    struct krt_set/scan_params -> struct krt_params
-    struct krt_set/scan_status -> struct krt_status
-    
-    krt_if_params_same -> kif_sys_reconfigure
-    krt_if_copy_params -> kif_sys_copy_config
-    krt_set/scan_params_same -> krt_sys_reconfigure
-    krt_set/scan_copy_params -> krt_sys_copy_config
-    
-    krt_if_scan -> kif_do_scan
-    krt_set_notify -> krt_do_notify
-    krt_scan_fire -> krt_do_scan
-    
-    krt_if_ -> kif_sys_
-    krt_scan_ -> krt_sys_
-    krt_set_ -> krt_sys_
-
-commit 182a78957d60a4c91c1ff8d1ff0f09b1b64b70ba
-Author: Ondrej Zajicek 
-Date:   Sun Apr 29 01:35:52 2012 +0200
-
-    Allows some modifications of dest attribute in filters.
-
-commit bf42207332e8e502d636038f1ec44aaea6ec50e0
-Author: Ondrej Zajicek 
-Date:   Sat Apr 28 13:03:48 2012 +0200
-
-    Changes keyword 'exceed' to 'action'.
-
-commit ab758e4fb205346946f2d828236bd23efc2a419e
-Author: Ondrej Zajicek 
-Date:   Sat Apr 28 12:59:40 2012 +0200
-
-    Some fixes in route export limits.
-
-commit d494df63ac3061accdff348511a565c021411b28
-Author: Ondrej Zajicek 
-Date:   Fri Apr 27 00:04:51 2012 +0200
-
-    Some minor fixes.
-
-commit 1f85226ecb76d3803b8fe37eb0891c45a6557dcd
-Merge: 92f8f7e3a d9b77cc28
-Author: Ondrej Filip 
-Date:   Thu Apr 26 17:03:53 2012 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/bird
-
-commit d9b77cc28115e5c1ef64c69722c9d1fd1392dcd1
-Author: Ondrej Zajicek 
-Date:   Tue Apr 24 23:39:57 2012 +0200
-
-    Implements generalized export limits.
-    
-    And also fixes some minor bugs in limits.
-
-commit 3589546af4baa4d349409a318f8c9658dd11b3cc
-Merge: 7d0a31dee cca970666
-Author: Ondrej Zajicek 
-Date:   Tue Apr 24 23:37:01 2012 +0200
-
-    Merge commit 'origin/master'
-
-commit 92f8f7e3a3a5a42768c18c1f3d4d8f9f98150c61
-Author: Ondrej Filip 
-Date:   Tue Apr 24 16:31:17 2012 +0200
-
-    Small bug in detection of class-A networks.
-
-commit cca970666a90af02eaeb6848bbfc3d5a2222fa21
-Author: Ondrej Filip 
-Date:   Sun Apr 22 14:03:07 2012 +0200
-
-    Small typo in programmer's documentation.
-
-commit 7d0a31deed92971e274aa0314e12619f93c850c9
-Author: Ondrej Zajicek 
-Date:   Sat Apr 21 21:05:36 2012 +0200
-
-    Fixes in generalized import limits.
-
-commit 334a0ed24d015e106558cc9eeef301c6f0d21aec
-Author: Ondrej Zajicek 
-Date:   Fri Apr 20 21:04:55 2012 +0200
-
-    Fixes missing device attributes when exporting routes to kernel.
-    
-    Thanks to Howden Nick for the bugreport.
-
-commit 9b2b502be521b58a736f7b78644e89ee01b4418b
-Author: Ondrej Zajicek 
-Date:   Fri Apr 20 21:04:55 2012 +0200
-
-    Fixes missing device attributes when exporting routes to kernel.
-    
-    Thanks to Howden Nick for the bugreport.
-
-commit f93e6f338e59e02b0cddea85e7d367948d9cf3f2
-Author: Ondrej Filip 
-Date:   Thu Apr 19 17:14:16 2012 +0200
-
-    Small clean up in debug texts
-
-commit 553e4054609e7aa8dcb92849c92a6fea73354f0e
-Author: Ondrej Filip 
-Date:   Thu Apr 19 17:12:13 2012 +0200
-
-    Small clean up in debug texts
-
-commit ebecb6f6a11bb418dd054cf12a2673ca0d9eac37
-Author: Ondrej Zajicek 
-Date:   Sun Apr 15 15:28:29 2012 +0200
-
-    Implements generalized import hooks.
-    
-    Thanks to Alexander V. Chernikov for the original patch.
-
-commit 3e17e380598b9a512bb369f51a4cf55da269f608
-Merge: 00a09f3c3 ae8b30016
-Author: Ondrej Zajicek 
-Date:   Sun Apr 15 15:17:03 2012 +0200
-
-    Merge branch 'master' into rt-accepted
-
-commit ae8b300164a975597f9b6caea0b205af2e4db30b
-Merge: d360f129e ed7c4b0cd
-Author: Ondrej Zajicek 
-Date:   Sun Apr 15 15:15:05 2012 +0200
-
-    Merge commit 'origin/master'
-
-commit d360f129e393298ff3e5309ec06a3baf170784fb
-Author: Ondrej Zajicek 
-Date:   Sun Apr 15 15:13:12 2012 +0200
-
-    Fix static protocol w.r.t. some recent changes in protocol ahooks.
-
-commit 00a09f3c367e79297f827b52ec5f16842db1ac4e
-Author: Ondrej Zajicek 
-Date:   Sun Apr 15 15:07:58 2012 +0200
-
-    Implement RA_ACCEPTED mode of route propagation.
-
-commit ed7c4b0cd530126b9a794f817f5d1d93556a1bce
-Author: Ondrej Filip 
-Date:   Mon Apr 9 14:19:28 2012 +0200
-
-    Small bugfix in error message related to reconfiguration.
-
-commit bf2abe2f515d7b7aaed5fb4f37af82169adcd2f2
-Merge: fb829de69 c0adf7e9f
-Author: Ondrej Zajicek 
-Date:   Fri Mar 30 11:04:12 2012 +0200
-
-    Merge branch 'soon'
-    
-    Conflicts:
-    
-            nest/proto.c
-            nest/rt-table.c
-
-commit fb829de69052755a31d76d73e17525d050e5ff4d
-Author: Ondrej Zajicek 
-Date:   Wed Mar 28 18:40:04 2012 +0200
-
-    Fixes responsiveness for protocol shutdown.
-    
-    When a protocol went down, all its routes were flushed in one step, that
-    may block BIRD for too much time. The patch fixes that by limiting
-    maximum number of routes flushed in one step.
-
-commit cb3cf95859d81c711337738f004675f43c8bbb0e
-Merge: c9df01d32 16fc65acc
-Author: Ondrej Zajicek 
-Date:   Sun Mar 25 20:59:13 2012 +0200
-
-    Merge commit 'origin/master'
-
-commit c9df01d3215379c0463dd2a3b0c9b1700d6e2ac3
-Author: Ondrej Zajicek 
-Date:   Sun Mar 25 19:44:14 2012 +0200
-
-    Fixes several minor bugs in kernel syncer.
-
-commit 9ba2798c65c02254ec000ab03a76fbbaae1ddc97
-Author: Ondrej Zajicek 
-Date:   Fri Mar 23 01:17:02 2012 +0100
-
-    Adds krt_metric linux route attribute.
-
-commit 72aed1a00ba9e18116d6fd907f7e1a36d0a0a583
-Author: Ondrej Zajicek 
-Date:   Fri Mar 23 00:26:26 2012 +0100
-
-    Adds krt_source route attribute.
-    
-    Thanks Jeremie Dimino for the original patch.
-
-commit 16fc65acc536d3788efe4c0554a2f52699fedc7f
-Author: Ondrej Filip 
-Date:   Thu Mar 22 14:52:40 2012 +0100
-
-    Minor correction
-
-commit 89647357af0d8507652f257f1e8f5679fe9a7078
-Author: Ondrej Zajicek 
-Date:   Thu Mar 22 12:29:02 2012 +0100
-
-    NEWS and version update.
-
-commit c47d037ecb5b9c835700b152eed7589409a2e42f
-Author: Ondrej Zajicek 
-Date:   Thu Mar 22 11:46:38 2012 +0100
-
-    Some minor changes to CLI.
-
-commit df27911880bffb88c1eae90e36c755a3ed3d77ad
-Author: Ondrej Zajicek 
-Date:   Mon Mar 19 13:00:00 2012 +0100
-
-    Fixes problem with dirname().
-    
-    Thanks Henrique de Moraes Holschuh for the original patch.
-
-commit af582c4811175d9a27ed5d08a4f6d5eaa69ecec7
-Author: Ondrej Zajicek 
-Date:   Sun Mar 18 17:32:30 2012 +0100
-
-    Route Origin Authorization basics.
-    
-     - ROA tables, which are used as a basic part for RPKI.
-     - Commands for examining and modifying ROA tables.
-     - Filter operators based on ROA tables consistent with RFC 6483.
-
-commit fd087589f80a435a42cedb87b917c71363b11860
-Author: Ondrej Zajicek 
-Date:   Fri Mar 16 13:01:12 2012 +0100
-
-    Fixes broken vlinks in OSPF.
-
-commit 0f808c066f3b5b190de951db042a34a1eb957a16
-Author: Ondrej Zajicek 
-Date:   Fri Mar 16 12:47:12 2012 +0100
-
-    Adds filtering to 'show symbols' command.
-    
-    Thanks Alexander V. Chernikov for the original patch.
-
-commit 20ab192beca749166e19118e987b53b5e131d0cf
-Author: Ondrej Zajicek 
-Date:   Fri Mar 16 12:12:26 2012 +0100
-
-    Adds filtering to 'show ospf lsadb' command.
-    
-    Thanks Alexander V. Chernikov for the original patch.
-
-commit 0888a737b045b48106edbd28ba3cd62fcc8c191e
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 20:42:29 2012 +0100
-
-    Extends set operations in filters.
-    
-    Allows add/filter/delete clist on clist (set algebra on clists).
-    
-    Allows number ~ bgppath match.
-
-commit 9f1500f50a0196f912eeb97e77ccf6873e186c29
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 13:45:55 2012 +0100
-
-    Adds warning for mismatch MTU in OSPF packets.
-    
-    Thanks Alexander V. Chernikov for the original patch.
-
-commit 2f9955b5d508698b04ff41e5e38097acdac416b9
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 13:12:00 2012 +0100
-
-    Fixes TTL for multicast OSPF packets.
-    
-    Thanks Alexander V. Chernikov for the suggestion.
-
-commit 8796a8a56edbcd420de724a58947c7aedadf04de
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 12:50:49 2012 +0100
-
-    Fixes name for unnamed filters.
-    
-    Thanks to Alexander V. Chernikov for the suggestion.
-
-commit 7d837aa014a78bce2b329cc9f56e8dc799d456e8
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 12:43:47 2012 +0100
-
-    Fixes documentation - default pipe mode.
-    
-    Thanks to Benjamin Cama for the bugreport.
-
-commit e2bf812f3dc84981eac045b617261987c25b5e90
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 12:38:08 2012 +0100
-
-    Fixes RIPng compatibility.
-    
-    Also probably breaks compatibility with older BIRDs, but RIPng not
-    really worked here.
-    
-    Thanks to Goesta Smekal for the original patch.
-
-commit f761503760fba2d4124cc3352f5260c31fac526d
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 12:23:49 2012 +0100
-
-    Fixes RIPng socket and neighbor handling.
-    
-    RIPng did not really work because of link-local addresses.
-    
-    Thanks to Roman Hoog Antink for some notes.
-
-commit 117e3c4bbfd4b7f1b2cae6ef9e5cb603fe33307a
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 12:18:26 2012 +0100
-
-    Fixes a bug in pair set intervals.
-    
-    Pair intervals in form (a,b)..(c,d) were mishanded.
-    
-    Thanks to Alexander Shikoff for the bugreport.
-
-commit c0adf7e9fc0bb920175a639c6f56ed7b4190f3e4
-Author: Ondrej Zajicek 
-Date:   Thu Mar 15 11:58:08 2012 +0100
-
-    Better support for multitable protocols.
-    
-    The nest-protocol interaction is changed to better handle multitable
-    protocols. Multitable protocols now declare that by 'multitable' field,
-    which tells nest that a protocol handles things related to proto-rtable
-    interaction (table locking, announce hook adding, reconfiguration of
-    filters) itself.
-    
-    Filters and stats are moved to announce hooks, a protocol could have
-    different filters and stats to different tables.
-    
-    The patch is based on one from Alexander V. Chernikov, thanks.
-
-commit 46c1a583a5c1ea81e8d8f372bd7f614506a63938
-Author: Ondrej Zajicek 
-Date:   Fri Feb 3 11:50:51 2012 +0100
-
-    Fixes a bug causing crash during soft reconfiguration of export to kernel proto.
-
-commit 39c028e9e9e3acf840051f4271fadd4939fde2af
-Author: Ondrej Zajicek 
-Date:   Tue Jan 24 11:31:00 2012 +0100
-
-    Assign default protocol preference via proto_config_new().
-    
-    The patch from Alexander V. Chernikov.
-
-commit 09686693d35bd71187847c95c0967d4125215b97
-Author: Ondrej Zajicek 
-Date:   Mon Jan 23 03:15:12 2012 +0100
-
-    Implements handling of BSD iface arrival/departure notifications.
-    
-    Thanks to Alexander V. Chernikov for original patch.
-
-commit 732a0a257d180a95a02587203555b8552b6128ac
-Author: Ondrej Zajicek 
-Date:   Mon Jan 23 01:26:40 2012 +0100
-
-    Fixes problems with creating/removing/renaming ifaces on BSD.
-
-commit 5c78e0e386d4c770b646cab4a8adc3c87987f50f
-Author: Ondrej Zajicek 
-Date:   Sun Jan 22 11:03:30 2012 +0100
-
-    Some more verbose warnings.
-
-commit bc092571171d00de8b429fec8ba70c39240d7e91
-Author: Ondrej Zajicek 
-Date:   Sat Jan 21 22:56:16 2012 +0100
-
-    Fixes another minor bug in iface scan.
-    
-    Iface flags are not updated in some cases.
-
-commit b573755df426156c22d2a4c65e3f502284820166
-Author: Ondrej Zajicek 
-Date:   Sat Jan 21 22:41:31 2012 +0100
-
-    Fixes a bug in BSD iface scan.
-    
-    if_update() should be called always, because periodic iface scan code
-    removes all not-updated ifaces.
-
-commit 544f2e1b36fb9473132f77d9c0f6e97d1495bb24
-Author: Ondrej Zajicek 
-Date:   Fri Jan 20 18:16:35 2012 +0100
-
-    NEWS and version update.
-
-commit 3ce17142791b2e1a7f0b8e512b5b74224600056c
-Author: Ondrej Zajicek 
-Date:   Fri Jan 20 16:20:03 2012 +0100
-
-    Fixes a new bug in BGP route ordering.
-
-commit 2c5ca47ad4d18cae162c2ddf85af2dedb89f00a5
-Author: Ondrej Filip 
-Date:   Tue Jan 10 13:44:06 2012 +0100
-
-    New version 1.3.5
-
-commit 4b3a8ff8c6e34f0486b82a10706f1ee0b688048e
-Author: root 
-Date:   Mon Jan 9 16:57:45 2012 +0100
-
-    Extend buffer for netlink messages.
-
-commit 2c67a564b368bee94f387ba988e8a2e9a76a04ce
-Author: Ondrej Zajicek 
-Date:   Mon Jan 9 03:32:34 2012 +0100
-
-    NEWS and version update.
-
-commit 8cf8f820fe66af1755e360ea1c5179483766131d
-Author: Ondrej Zajicek 
-Date:   Mon Jan 9 03:20:52 2012 +0100
-
-    Show interface for link-local gw in static protocol.
-
-commit d7f469c15c1fd8315061f85b87a19946c3ea4700
-Author: Ondrej Zajicek 
-Date:   Mon Jan 9 02:40:57 2012 +0100
-
-    Some minor fixes.
-
-commit 3f58437405f8e37e9c14d83274a6b82ffd9583f8
-Author: Ondrej Zajicek 
-Date:   Sun Jan 8 16:28:33 2012 +0100
-
-    Fix for IPv6 addresses on non-multiaccess ifaces on BSD.
-    
-    Thanks Matthias Schiffer for the patch.
-
-commit 53ffbff39f054e1302fb296327b9bb1b4f88226c
-Author: Ondrej Zajicek 
-Date:   Sun Jan 8 15:28:27 2012 +0100
-
-    Implements support for link-local addresses in BGP.
-    
-    Thanks Matthias Schiffer for the original patch.
-
-commit eb1451a3a0c45a4cc62dd0f1f3c3157ec38e2f8e
-Author: Ondrej Zajicek 
-Date:   Sun Jan 8 15:27:04 2012 +0100
-
-    Better support for link-local addresses in IO code.
-
-commit a03ede64936d0aee1a760a19dc6194b2fdc9c692
-Author: Ondrej Zajicek 
-Date:   Tue Jan 3 00:42:25 2012 +0100
-
-    Fixes a tricky bug in route filtering.
-    
-    Route attributes was used after rta was freed during copy-on-write in
-    filter code. This causes some random crashes, esp. with multipath
-    routes.
-
-commit 69a8259c5e438f949bd58b1a2f8e1d12a49f9216
-Author: Ondrej Zajicek 
-Date:   Sun Jan 1 12:02:20 2012 +0100
-
-    Allows sticky link-local neighbors.
-    
-    Allows using NEF_STICKY neighbors with link-local addresses. This is
-    used for static route nexthops, they can be specified like fe80::1%eth0
-    .
-
-commit c32c3f88f0c8788118ed3701c11a5aea2aaf9356
-Author: Ondrej Zajicek 
-Date:   Thu Dec 22 13:44:43 2011 +0100
-
-    Fixes parsing larger numbers on 64bit platforms.
-
-commit be4cd99a3688cef19f66e1c8b8e0506ffc1e13fc
-Author: Ondrej Zajicek 
-Date:   Thu Dec 22 13:20:29 2011 +0100
-
-    Implements deterministic MED handling.
-    
-    Thanks to Alexander V. Chernikov for many suggestions.
-
-commit cf7f0645316f5df0984467cf7001f5466254eaf3
-Author: Ondrej Zajicek 
-Date:   Mon Dec 12 00:24:15 2011 +0100
-
-    Fixes problem with sticky neighbors and iface address changes.
-    
-    Thanks Matthias Schiffer for the bugreport and the original patch.
-
-commit 2779d50a24dc1b7c6b4cf83a17af817c02462855
-Author: Ondrej Zajicek 
-Date:   Thu Nov 17 21:12:23 2011 +0100
-
-    Fixes RAdv proto w.r.t. templates.
-    
-    Thanks Alexander V. Chernikov for this.
-
-commit 60fd666b796dfa8ba12b44338754ca73b76da2e8
-Author: Ondrej Zajicek 
-Date:   Thu Nov 10 09:22:20 2011 +0100
-
-    Fixes missing header.
-
-commit a7f23f581f5e3efe92ec97dfca7d01c66f31ab04
-Author: Ondrej Zajicek 
-Date:   Mon Nov 7 00:31:23 2011 +0100
-
-    Implements protocol templates.
-    
-    Based on the patch from Alexander V. Chernikov.
-    Extended to support almost all protocols.
-    Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
-
-commit 74add5df17c386bd109ebea7b1dac04d1651ae51
-Author: Ondrej Zajicek 
-Date:   Thu Oct 27 13:21:24 2011 +0200
-
-    Fixes seqnum generation.
-    
-    Thanks Mohammad Amin Shoaie for notification.
-
-commit 78e33c29bbbc6f4dd308cd8ef589ce543c3d8d6e
-Author: Ondrej Zajicek 
-Date:   Wed Oct 26 20:06:36 2011 +0200
-
-    Some minor fixes in parser.
-
-commit 14a8f396e1d8fc5787041eace8ab026fe5a0896c
-Author: Ondrej Zajicek 
-Date:   Wed Oct 26 13:55:24 2011 +0200
-
-    Fixes sockets for IPv4 RIP.
-    
-    Thanks Roman Hoog Antink for a suggestion.
-
-commit 00a124e3fc218aa39c634bbda244789f2ea0cd3d
-Author: Ondrej Zajicek 
-Date:   Mon Oct 10 02:33:11 2011 +0200
-
-    NEWS and version update.
-
-commit 9b7fdfc84a516ede415cd1941e5ff1d6312e83ff
-Author: Ondrej Zajicek 
-Date:   Mon Oct 10 01:01:58 2011 +0200
-
-    Fixes for include.
-
-commit 1cb97af419ee5bff45049f4d3a85acadbb5b1cb9
-Author: Ondrej Zajicek 
-Date:   Sun Oct 9 17:01:01 2011 +0200
-
-    Extend the error message.
-
-commit 9491f9f593c1195039cecd1bb2a502363b58c66d
-Author: Ondrej Zajicek 
-Date:   Thu Oct 6 23:01:23 2011 +0200
-
-    Use reserved address blocks for documentation (RFC 5737).
-
-commit 32f95476a8d60508ca9d24fe20b09899b72de9d7
-Author: Ondrej Zajicek 
-Date:   Thu Oct 6 22:48:49 2011 +0200
-
-    Signal problems with route installation to kernel tables.
-
-commit 35c875f0d1eb7c72e0b0ab8a90eb32cbcbfdac02
-Author: Ondrej Zajicek 
-Date:   Sat Oct 1 09:57:49 2011 +0200
-
-    Fixes some error messages and the NSSA gw lookup.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 736fd7303cb05e910507edaa9310178a23dbcf1e
-Author: Ondrej Zajicek 
-Date:   Tue Sep 27 13:49:32 2011 +0200
-
-    Fixes a bug with multiple function arguments.
-
-commit bf6d91dc4edf3d08f0de41f71503159b1713fc9a
-Author: Ondrej Zajicek 
-Date:   Sat Sep 24 11:06:42 2011 +0200
-
-    Use undefined scope for undefined IPv6 addresses.
-
-commit 4116db182d8d80d26902a8b33f82664bb5770066
-Author: Ondrej Zajicek 
-Date:   Sat Sep 24 02:21:52 2011 +0200
-
-    Implements static recursive routes.
-
-commit 4271f2b77ed3862a2356475dc18b0cf5c1086364
-Author: Ondrej Filip 
-Date:   Sun Sep 18 13:52:50 2011 +0200
-
-    Fixed problem during 'configure' with EC
-
-commit 55b58d8c1f51942c487cc268bd9e2ca214913377
-Author: Ondrej Filip 
-Date:   Mon Sep 12 12:13:53 2011 +0200
-
-    Removed some completed jobs.
-
-commit 1e69379e70da3486a601cab7a41ccf7a5825101d
-Author: Ondrej Filip 
-Date:   Sun Sep 11 21:43:24 2011 +0200
-
-    NEWS file updated.
-
-commit 48ec367aabaaa5328f4072d237001e245a7363df
-Author: Ondrej Filip 
-Date:   Sun Sep 11 21:21:47 2011 +0200
-
-    Configuration can include other files.
-
-commit a98995273bd8788cf525f44479026d5ce6b7dd52
-Author: Ondrej Zajicek 
-Date:   Sun Sep 4 13:23:26 2011 +0200
-
-    NEWS and version update.
-
-commit cb2b586f00f5e7ef9a902b028fc5bfe117890457
-Author: Ondrej Zajicek 
-Date:   Sun Sep 4 10:39:10 2011 +0200
-
-    NetBSD compile fix.
-
-commit 51947659abbf9af861aa7dec36fd1c845fb617ab
-Author: Ondrej Zajicek 
-Date:   Sun Sep 4 00:56:02 2011 +0200
-
-    Minor changes in BGP protocol info.
-    
-    Shows neighbor IP and ASN even if protocol is down.
-
-commit 6c4df70373fa640a7f068d4e1b563621b67c0d2b
-Author: Ondrej Zajicek 
-Date:   Sat Sep 3 21:59:40 2011 +0200
-
-    Fixes possible buffer overflow when printing BGP attributes.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit 2918e61046388821c3d4411c602dc5b28ad59329
-Author: Ondrej Zajicek 
-Date:   Sat Sep 3 21:31:26 2011 +0200
-
-    Fixes for OSPF NSSA handling.
-
-commit b1b19433602f2a2ff58cfe2c1858ff883eee7b20
-Author: Ondrej Zajicek 
-Date:   Tue Aug 16 23:05:35 2011 +0200
-
-    The generalized TTL security mechanism (RFC 5082) support.
-    
-    Thanks to Alexander V. Chernikov for the patch.
-
-commit a52d52fa91ffcbcea58326fc2de476ce5644256f
-Author: Ondrej Zajicek 
-Date:   Mon Aug 15 20:54:58 2011 +0200
-
-    Fixes some missing tabs.
-    
-    They unintentionally disappeared in 1.3.2.
-
-commit a209d5d8e1bea2b37a7cddebe1f275da4ebde4e3
-Author: Ondrej Zajicek 
-Date:   Mon Aug 15 02:06:56 2011 +0200
-
-    A minor fix in BSD.
-
-commit 8815d846bf77e4231f36b64d8e4ac9a3ec2d1504
-Author: Ondrej Zajicek 
-Date:   Sun Aug 14 15:53:47 2011 +0200
-
-    BGP Extended communities documentation.
-
-commit 42a0c05408c4151442e6a0ec1c6889acbcfe9c17
-Author: Ondrej Zajicek 
-Date:   Fri Aug 12 21:03:43 2011 +0200
-
-    BGP Extended communities.
-
-commit bde872bba745e5596bdb066df6ef323b7cabcfdd
-Author: Ondrej Zajicek 
-Date:   Mon Aug 8 10:57:54 2011 +0200
-
-    The documentation update.
-
-commit ed317862c2958303cf541fe63f4ea26d00918a9a
-Author: Ondrej Zajicek 
-Date:   Mon Aug 8 01:45:31 2011 +0200
-
-    OSPF NSSA support, inter-area LSA translation.
-
-commit aca0e79faa391a2841134dac78a499dfdca68bd9
-Author: root 
-Date:   Fri Jul 29 14:52:28 2011 +0200
-
-    Handles missing macro.
-
-commit 14272097df989808790673521f643053f898aa8c
-Author: Ondrej Zajicek 
-Date:   Thu Jul 28 13:50:02 2011 +0200
-
-    Fixes crash on BSD.
-
-commit 4160a9dd9416ee5afd215750bdd6c6e7a4e7ed1f
-Author: Ondrej Zajicek 
-Date:   Fri Jul 22 20:00:24 2011 +0200
-
-    OSPF NSSA translator election.
-
-commit 41b612c31be05409e69e7365db82b3d1aefc4ca3
-Author: Ondrej Zajicek 
-Date:   Wed Jul 20 23:40:20 2011 +0200
-
-    OSPF NSSA support, part one.
-
-commit 9008579b97239564e1dcac855cf726fa9ab7dabd
-Author: Ondrej Zajicek 
-Date:   Wed Jul 20 23:46:03 2011 +0200
-
-    Fixes broken multi-area OSPF.
-
-commit c49490f8c096ef1379f08e7d70cc24f0c28b80ef
-Author: Ondrej Zajicek 
-Date:   Fri Jul 8 08:58:50 2011 +0200
-
-    NEWS and version update.
-
-commit beeda6af44e72e3a20fcd2837b231a04354790fa
-Author: Ondrej Zajicek 
-Date:   Thu Jul 7 17:43:39 2011 +0200
-
-    Removes timers for stub interfaces. Also fixes some minor bugs.
-
-commit 7d4e923603fdb43b6f017e5ef78e37d0891c699c
-Author: Ondrej Zajicek 
-Date:   Wed Jul 6 03:10:02 2011 +0200
-
-    Do not open sockets for stub interfaces.
-
-commit f796945f04d8be4e71cdf48d919c2035c0a2551d
-Author: Ondrej Zajicek 
-Date:   Sun Jul 3 23:24:38 2011 +0200
-
-    Fixes LSA checksum computation for larger LSAs.
-
-commit fdf16eb65872b3bee02fb9e25c80ea32cf59f8e9
-Author: Ondrej Zajicek 
-Date:   Sun Jul 3 19:43:30 2011 +0200
-
-    Prints full community lists during 'show route all'.
-
-commit 6370d6f61b30b2390727eee8136e0e575dff609f
-Author: Ondrej Zajicek 
-Date:   Sun Jun 26 22:25:09 2011 +0200
-
-    Fix route types in rta_show().
-
-commit e08d2ff08e4cff4bec38878e084fee7666caaaf2
-Author: Ondrej Zajicek 
-Date:   Sun Jun 26 17:09:24 2011 +0200
-
-    Adds filter clist operation.
-
-commit 35f8c731ea29bd534c74b2d0de089d5683ebcd8d
-Author: Ondrej Zajicek 
-Date:   Sat Jun 25 14:51:16 2011 +0200
-
-    Fixes output of BGP timers in 'show protocols all'.
-
-commit d8b5a786d27eed72106f88f893c521e67f1bef06
-Author: Ondrej Zajicek 
-Date:   Sat Jun 25 11:35:54 2011 +0200
-
-    IPV6_CHECKSUM should not be used on ICMPv6 sockets.
-
-commit 23fd464447c4d0f0efe7b61ca3128bbb1bc1c21c
-Author: Ondrej Zajicek 
-Date:   Mon Jun 20 20:35:59 2011 +0200
-
-    Fixes a bug related to protocol enabling and reconfigure.
-    
-    When a protocol was enabled interactively (but disabled in the config
-    file), then reconfigure in some cases forgets to disable it.
-
-commit ae85e28cf410cefe4f6e1cdf92510fbf9cea7ae0
-Author: Ondrej Zajicek 
-Date:   Mon Jun 20 07:37:55 2011 +0200
-
-    Fixes a bug in OSPF causing DoS by an invalid packet.
-
-commit 61c96d724464ee067e589b72ca9d10a2f7692901
-Author: Ondrej Zajicek 
-Date:   Tue May 31 17:27:46 2011 +0200
-
-    Fixes bug that causes crash with strange BGP updates.
-
-commit 5e9bdac28ec95172b0c31641507f6a2fcd2e95fb
-Author: Ondrej Zajicek 
-Date:   Sat May 21 22:48:08 2011 +0200
-
-    Fixes a bug with setting preference during show route cmd.
-    
-    If show route cmd was used with a filter that changed preference,
-    BIRD crashed.
-
-commit 1155c79209b6a670d0e1f85b2603363ba1132ae0
-Author: Ondrej Zajicek 
-Date:   Thu May 19 01:20:00 2011 +0200
-
-    Fixes compatibility with Mikrotik.
-
-commit b54ad333b3c8b486b059f6c0e1afc8c35b64ebea
-Author: Ondrej Zajicek 
-Date:   Mon May 16 12:39:55 2011 +0200
-
-    Documentation update.
-
-commit e8b89a610443f32b901801668cbae634e13f3e68
-Author: Ondrej Zajicek 
-Date:   Sun May 15 16:29:44 2011 +0200
-
-    Update and document the privilege restriction.
-
-commit 1bc2695744c729804af32d48ce68854cba4de8f7
-Author: Ondrej Zajicek 
-Date:   Tue May 10 02:42:17 2011 +0200
-
-    Allows run with restricted privileges.
-    
-    Adds option -u and -g to specify user and group.
-    When different user (than root) is specified,
-    linux capabilities CAP_NET_* are kept.
-
-commit 46bb7e0d176a4dc0a47bb406988f92fb29cceaf4
-Merge: b8cc390e7 b7c489810
-Author: Ondrej Zajicek 
-Date:   Fri May 6 22:09:44 2011 +0200
-
-    Merge commit 'origin/master'
-
-commit b8cc390e7ed724a9ad605453227d1e4686f3a11b
-Author: Ondrej Zajicek 
-Date:   Fri May 6 22:00:54 2011 +0200
-
-    Fixes several problems in filter syntax.
-    
-     - Fixes several conflicts in the grammar.
-     - Fixes a bug in (a..b, c) pair patterns.
-     - Makes pair patterns orthogonal.
-     - Allows term expressions in pair patterns without additional ( ).
-     - Allows several comma separated values in switch cases.
-
-commit b7c48981069f25c01c552519e10aec4ebab1f031
-Author: Ondrej Filip 
-Date:   Thu May 5 14:14:20 2011 +0200
-
-    Compilation was failing without OSPF or RIP protocol - FIXED.
-
-commit 409e8a6e21d3df0919fd2e131ba9a58222baee50
-Author: Ondrej Zajicek 
-Date:   Mon May 2 02:06:03 2011 +0200
-
-    NEWS and version update.
-
-commit a506476acd4baa212f542b257eb5abba733ba4c5
-Author: Ondrej Zajicek 
-Date:   Sun May 1 17:16:05 2011 +0200
-
-    There may be more IP address records with the same IP.
-
-commit 5964569c23829ec93fcf671a2582be01c8aebecf
-Merge: acc93efd4 d600909da
-Author: Ondrej Zajicek 
-Date:   Fri Apr 29 19:03:19 2011 +0200
-
-    Merge commit 'origin/master'
-
-commit acc93efd4c754cc995ee8edf52ce0bc45511062e
-Author: Ondrej Zajicek 
-Date:   Thu Apr 28 00:31:37 2011 +0200
-
-    Use constants from /etc/iproute2/rt_* files.
-
-commit 73272f04af40484b72451f541a986da996b0da58
-Author: Ondrej Zajicek 
-Date:   Fri Apr 22 16:13:27 2011 +0200
-
-    Adds BGP option related to MED handling.
-    
-    Adds option 'med metric' allows to compare MEDs
-    between routes received from different neighbors.
-
-commit d600909da9ef0a4b25052c1bf2de83d4e7628b0e
-Author: Ondrej Filip 
-Date:   Wed Apr 13 13:19:37 2011 +0200
-
-    Fixed bug FICORA #503685.
-
-commit 71ca77169d5d3e67459e46841b8bdb95accd8c2a
-Author: Ondrej Zajicek 
-Date:   Wed Apr 13 12:32:27 2011 +0200
-
-    Adds support for several Linux kernel route attributes.
-
-commit 4aef102be1e29d3450e53a20a6b2f96d50527139
-Author: Ondrej Zajicek 
-Date:   Thu Apr 7 11:31:56 2011 +0200
-
-    Fixes KRT sync in BSD.
-    
-    When buffer is too small (because of change between sysctls()),
-    needed is *not* changed.
-
-commit 489c308a75b121f286cc8637ead8b2bf7bf896ec
-Author: Ondrej Zajicek 
-Date:   Tue Apr 5 11:41:18 2011 +0200
-
-    Minor fixes.
-
-commit bf27abd6d4a20448f5b4c80e9aa9258dc8670f62
-Merge: 4ef095060 a5b84ab54
-Author: Ondrej Zajicek 
-Date:   Fri Apr 1 13:56:42 2011 +0200
-
-    Merge commit 'origin/master'
-
-commit 4ef0950603ffbd515d97359015585b4a7512bc75
-Author: Ondrej Zajicek 
-Date:   Fri Apr 1 13:54:39 2011 +0200
-
-    Fixes a problem with BGP protocols and implicit router IDs.
-
-commit d93a43a57d37b7cc5506a823a081d21f515c3820
-Author: Ondrej Zajicek 
-Date:   Fri Apr 1 12:21:18 2011 +0200
-
-    Fix leaked debug message.
-
-commit a5b84ab540ff3131938b38ebc82ed8e3ce46f261
-Author: Ondrej 'Feela' Filip 
-Date:   Thu Mar 31 10:30:58 2011 +0200
-
-    NEWS updated.
-
-commit eb3786e4ea46ce1abc4ca211346369b36dc17dd7
-Author: Ondrej Zajicek 
-Date:   Wed Mar 30 02:00:56 2011 +0200
-
-    NEWS and version update.
-    
-    (and minor changes in documentation)
-
-commit 06fb60c4af38d529d20b662748243b3f4a693c60
-Author: Ondrej Zajicek 
-Date:   Wed Mar 30 01:09:18 2011 +0200
-
-    Fixes some problems in BGP error handling.
-
-commit 83696b3913c9f52a3d53db073e1ba0641b60ab07
-Author: Ondrej Zajicek 
-Date:   Tue Mar 29 02:44:39 2011 +0200
-
-    Hide 6to4 route warnings.
-
-commit ab164971891c64126097eedca11d2f5586f1d8e7
-Author: Ondrej Zajicek 
-Date:   Tue Mar 29 01:41:46 2011 +0200
-
-    Fixes a nasty bug in OSPF.
-    
-    Sending malformed network prefixes in LSAs causes OSPF to crash
-    just after the LSA is propagated to the other routers.
-
-commit 52a43ae3b76f86b697537bc3ad8afdb3b421cf2c
-Author: Ondrej Zajicek 
-Date:   Mon Mar 28 22:46:18 2011 +0200
-
-    Minor changes in addresses.
-    
-    Mainly changes IA_UNNUMBERED to IA_PEER and adds IA_HOST. Also do not
-    show broadcast addr in show interfaces. Nobody cares for that.
-
-commit c454872f4e81e69a8e9950289ab810fcac3fc922
-Author: Ondrej Filip 
-Date:   Sun Mar 27 23:27:37 2011 +0200
-
-    Avoid using stack.
-
-commit 4e712ec3b7cb4678607b2a48a2feaa0658333ab2
-Author: Ondrej Filip 
-Date:   Sat Mar 26 15:21:35 2011 +0100
-
-    Added CZ.NIC copyright.
-
-commit 86c038ccae2149645058d4288ff8efb498013522
-Author: Ondrej Filip 
-Date:   Sat Mar 26 14:38:00 2011 +0100
-
-    Documentation about previous commit added.
-
-commit 4fc36f394ec0988a18decb2d1916e3cebef18d22
-Author: Ondrej Filip 
-Date:   Sat Mar 26 14:18:56 2011 +0100
-
-    This adds (*,x) functionality.
-
-commit d0e9b36d30176a9e18cad6151b20746e1588cdc8
-Author: Ondrej Zajicek 
-Date:   Wed Mar 23 17:15:11 2011 +0100
-
-    Added header file.
-
-commit 0aa88530ad3c58a6bdab886cabd9b2a4278486e8
-Author: Ondrej Zajicek 
-Date:   Wed Mar 23 13:40:46 2011 +0100
-
-    Convert && and || to shortcut boolean operators.
-
-commit 26d92bb8921ac4e022cdc88bde8fc7bc617f8766
-Author: Ondrej Zajicek 
-Date:   Wed Mar 23 12:49:53 2011 +0100
-
-    A hack to distinguish if..else from else: in case.
-    
-    The old BIRD grammar needs two lookaheads to distinguish if..else from
-    else: in case, which caused the parser to fail on some combinations of
-    both expressions.
-    
-    This patch replaces two tokens 'else' ':' by one token 'else:' to fix
-    that.
-
-commit 6bcef22580010aec695fb2b559c7b33ee00261b0
-Author: Ondrej Zajicek 
-Date:   Sat Mar 19 12:13:59 2011 +0100
-
-    Documentation for the router advertisement protocol.
-
-commit 8e48831a970a784a979446813191628790d477f1
-Author: Ondrej Zajicek 
-Date:   Thu Mar 17 15:53:36 2011 +0100
-
-    Vastly improved OSPF reconfiguration.
-    
-    Now it can handle a change in iface pattern structure.
-    It can add, remove and reconfigure interfaces, vlinks and areas.
-
-commit 93e868c730dc0b1825b2a685e0b066c051b1cb07
-Author: Ondrej Zajicek 
-Date:   Sun Mar 13 11:33:50 2011 +0100
-
-    Implements Router Advertisement protocol.
-
-commit 9d67ffb0b4cdfbbf88779ce2b44ba810d1ba85d3
-Author: Ondrej Zajicek 
-Date:   Sat Jan 8 19:34:12 2011 +0100
-
-    Fixes scope for sticky neighbors.
-
-commit d32a071da9655c2d05038e721bcf020498263c1e
-Author: Ondrej Zajicek 
-Date:   Sat Jan 8 11:31:12 2011 +0100
-
-    Some cleanups in krt_read_ifinfo().
-
-commit dad7ee70c1711b2cbdfd86c615736fe12c0d126a
-Author: Ondrej Zajicek 
-Date:   Sat Jan 8 11:22:38 2011 +0100
-
-    Fixes interface names on BSD systems.
-
-commit e7b4948cbd3e4cacf4fe0f774b44d1f74029ea6d
-Author: Ondrej Zajicek 
-Date:   Tue Dec 28 01:43:07 2010 +0100
-
-    A simplification of the next-hop calculation.
-    
-    Thanks to Joakim Tjernlund for the idea.
-
-commit 919f5411c48f509a49400a1293e670f5d5d2bcf1
-Author: Ondrej Zajicek 
-Date:   Fri Dec 24 18:08:07 2010 +0100
-
-    Implements Point-to-MultiPoint interface type for OSPF.
-
-commit 39847cda73d8e8536300b74d90d01b6e2f233ef7
-Author: Ondrej Zajicek 
-Date:   Thu Dec 23 12:24:40 2010 +0100
-
-    Add some comments.
-
-commit f0160f0e06be883528e5e29edfd509efa14d0c78
-Author: Ondrej Zajicek 
-Date:   Thu Dec 23 10:25:22 2010 +0100
-
-    Fixes a minor memory wasting.
-
-commit 8cab377d92b62c028ee7aab49049b7cb6cd53ab9
-Author: Ondrej Zajicek 
-Date:   Wed Dec 22 23:33:40 2010 +0100
-
-    Remove unnecessary check.
-
-commit 154e2aeded13f46666a69b7a7241149c43ebc01f
-Author: Ondrej Zajicek 
-Date:   Mon Dec 13 11:17:11 2010 +0100
-
-    Fixes string handling in birdc.
-
-commit e91f6960bae16314e9429719c2c2321edb484a44
-Author: Ondrej Zajicek 
-Date:   Tue Dec 7 23:36:48 2010 +0100
-
-    Documentation update (multipath).
-
-commit 32b4972834352d641f7d2c08a27c18b0babd3790
-Author: Ondrej Zajicek 
-Date:   Tue Dec 7 23:36:11 2010 +0100
-
-    Multipath support for linux kernel protocol.
-
-commit 57c574d82a44d10143aba7aaea6d1384d850c079
-Author: Ondrej Zajicek 
-Date:   Tue Dec 7 23:35:39 2010 +0100
-
-    Multipath support for OSPF
-
-commit 9852f81064a38d35ff1bd5cc9fab7fc33926c83c
-Author: Ondrej Zajicek 
-Date:   Tue Dec 7 23:34:36 2010 +0100
-
-    Multipath support for static protocol.
-
-commit 7e95c05d889f22be44aef5051eb07d35a4a8f579
-Author: Ondrej Zajicek 
-Date:   Tue Dec 7 23:33:55 2010 +0100
-
-    Core multipath support.
-
-commit 01427d3f2b69a4ae1b616b380d4911a132ec450f
-Author: Ondrej Zajicek 
-Date:   Fri Nov 19 18:03:27 2010 +0100
-
-    Remove some runaway debug messages and typos.
-
-commit 391931d45686a807d322878d4b3d5c9634e2dbca
-Author: Ondrej Zajicek 
-Date:   Fri Nov 19 13:46:21 2010 +0100
-
-    Minor finalizations of link state checks.
-
-commit 79f561a173c9ceb824d64aa32d82e43ba62acebc
-Author: Ondrej Zajicek 
-Date:   Sat Nov 13 14:19:55 2010 +0100
-
-    Fixes a typo (in OSPF_MAX_PKT_SIZE value).
-    
-    And updates a comment.
-
-commit d9e7e1b13d69fa50d1979576c418c579f05463c6
-Author: Ondrej Zajicek 
-Date:   Sat Nov 13 14:19:23 2010 +0100
-
-    Adds support for iface link detection to OSPF.
-
-commit fe181e7c63843ad65401cc1e400ae1ac3187122f
-Author: Ondrej Zajicek 
-Date:   Thu Nov 11 12:24:27 2010 +0100
-
-    Adds support for iface link check to static protocol.
-
-commit f25cb0ef9f6341648513e793a3162b32fc250d2b
-Author: Ondrej Zajicek 
-Date:   Thu Nov 11 10:03:02 2010 +0100
-
-    Implements link state detection.
-    
-    Also changes some symbol names (IFF_ADMIN_DOWN -> IFF_SHUTDOWN,
-    IFF_LINK_UP -> IFF_ADMIN_UP).
-
-commit 5cdf264f937687aff194574f5fe2badb087337b8
-Author: Ondrej Zajicek 
-Date:   Wed Nov 10 16:43:11 2010 +0100
-
-    Fixes a bug related to implicit backbone on ABR.
-
-commit c4443085a198c26a478463429477e7e8a599fa07
-Author: Ondrej Zajicek 
-Date:   Thu Nov 4 17:25:48 2010 +0100
-
-    OSPF tx buffers should have the same size as rx buffers.
-    
-    We should be able to send everything we received.
-
-commit d5356072ac18d5b0eb12f14afca6bfbea702dda2
-Author: Ondrej Zajicek 
-Date:   Thu Nov 4 17:22:43 2010 +0100
-
-    Fixes a bug in LSA update of large LSAs.
-
-commit d3209d939d4d0d8801432f212edd4302a7d03633
-Author: Ondrej Zajicek 
-Date:   Wed Nov 3 10:04:46 2010 +0100
-
-    Fixes a bug in OSPF.
-
-commit fcf5a4f4b3e1a984f65d873e7a5a8c830b1ad9bf
-Author: Ondrej Zajicek 
-Date:   Wed Nov 3 10:02:24 2010 +0100
-
-    Change default for BGP IPv6 socket to V6ONLY.
-    
-    Also add a new option 'dual' for the old behavior.
-
-commit 5adc02a6f87bda06094ce36eb699884c03760bf5
-Author: Ondrej Zajicek 
-Date:   Fri Oct 22 11:25:47 2010 +0200
-
-    Documentation update.
-
-commit ed76033c847939877e4fbfadf06898521aafb740
-Author: Ondrej Zajicek 
-Date:   Fri Oct 22 08:35:19 2010 +0200
-
-    Fixes some typos.
-
-commit 938b191b9282b138cbdd30dfc11b78c0467d6380
-Author: Ondrej Zajicek 
-Date:   Sat Oct 9 01:00:53 2010 +0200
-
-    Fixes error handling in ASN expressions.
-
-commit 112d71a73f30d26891eda4374bf0f2ab31c5c048
-Author: Ondrej Zajicek 
-Date:   Fri Oct 8 14:25:53 2010 +0200
-
-    Fixes syntactic priority of '.' .
-    
-    Dot in expressions like net.len definitely should have the highhest
-    priority.
-
-commit b2b7bbfc690a7ad6a61a8cdf4abe87345057fb2e
-Author: Ondrej Zajicek 
-Date:   Mon Oct 4 19:55:11 2010 +0200
-
-    Fixes scope of filter symbols.
-
-commit 0d1b3c4c0e3261d1d4261e9aeb9975a01d0ff2f9
-Author: Ondrej Zajicek 
-Date:   Mon Sep 20 13:01:01 2010 +0200
-
-    Changes print-like filter commands to use a log instead of a stderr.
-    
-    And extends the log subsystem to better handle that.
-
-commit 2dec1e3471385ea191862c8fe85d76a8e47410de
-Author: Ondrej Zajicek 
-Date:   Wed Sep 15 02:01:23 2010 +0200
-
-    Fixes a bug in pair sets.
-
-commit a58022a64ee8aa2fc46816020723dfbf4bfd08d9
-Author: Ondrej Zajicek 
-Date:   Sat Sep 11 20:14:53 2010 +0200
-
-    Fixes a bug in community set delete.
-
-commit 4ca93a50675489a6a5ef9369c24806cc3cbff45e
-Author: Ondrej Zajicek 
-Date:   Wed Sep 8 12:08:38 2010 +0200
-
-    Fixes a one byte buffer overflow.
-
-commit 948c865fac85f91dd7463195b190d8f133e0f741
-Author: Ondrej Zajicek 
-Date:   Fri Sep 3 17:15:02 2010 +0200
-
-    Fixes a crash in RIP during reconfigure.
-
-commit 3cb6c83f1a2eb563e459ce34d0f4850cc9dd4776
-Author: Ondrej Zajicek 
-Date:   Fri Sep 3 16:32:00 2010 +0200
-
-    Fixes a memory leak in RIP.
-
-commit faf58cec4d0c0d3c1fddee6faf2f57a1362477bb
-Author: Ondrej Zajicek 
-Date:   Sun Aug 22 14:43:53 2010 +0200
-
-    Fixes a bug in NBMA on an iface with multiple IP addresses.
-
-commit ac4a1eedfc515e041877d48fd5f64ee4e3b30532
-Author: Ondrej Zajicek 
-Date:   Fri Aug 13 14:30:36 2010 +0200
-
-    Change default for handling missing link-local addresses on route servers.
-
-commit dcc71a7fb7e507acc2e0b417e6c9d1940448908e
-Author: Ondrej Zajicek 
-Date:   Thu Aug 12 10:22:40 2010 +0200
-
-    Supports unique local unicast addresses.
-
-commit 0ef69b1c4a255360e1fa76dffd7a0cb97ea1e9dc
-Author: Ondrej Filip 
-Date:   Mon Aug 9 14:09:53 2010 +0200
-
-    Typo in doc.
-
-commit 265d06dcbc138c7373ec7b341fcd628eb87e4c4b
-Author: Ondrej Zajicek 
-Date:   Wed Aug 4 15:27:11 2010 +0200
-
-    Fixes IPv6 build.
-
-commit 373d3dbe8dfbce21af72618c0f912dd0e23a6f3c
-Author: Ondrej Zajicek 
-Date:   Wed Aug 4 13:53:52 2010 +0200
-
-    Fixes build on Sparc.
-
-commit 946dc15c928d9a48cdcc857bc80f4fabf9a4e2bf
-Author: Ondrej Filip 
-Date:   Tue Aug 3 17:35:34 2010 +0200
-
-    Documentation update and improvement of tests related to expressions in sets.
-
-commit e0e8c04a83bbe24cdcf3836ca171ce60db299b1f
-Author: Ondrej Filip 
-Date:   Tue Aug 3 15:23:30 2010 +0200
-
-    Small typo in documentation.
-
-commit edaec901e12c2f0756ab44f7493e999145d7dff9
-Author: Ondrej Filip 
-Date:   Tue Aug 3 15:22:29 2010 +0200
-
-    Even set of number can be made by expressions.
-
-commit 4733b49ed6ec11669061e15680417961d13c7a61
-Author: Ondrej Filip 
-Date:   Tue Aug 3 15:14:26 2010 +0200
-
-    Syntax of sets improved.
-
-commit 2c9033afd5ce5e99255d248fb065e94534405da7
-Author: Ondrej Zajicek 
-Date:   Tue Aug 3 08:26:47 2010 +0200
-
-    Do not allow interdependent recursive routes.
-
-commit f428631cd6f48c5155bd1b7724e9bb8a545fda12
-Author: Ondrej Zajicek 
-Date:   Tue Aug 3 01:12:43 2010 +0200
-
-    Ignore warning when BGP peer is unreachable.
-
-commit b74f45f8a05444dca16f0995c7d201ea592ce299
-Author: Ondrej Zajicek 
-Date:   Tue Aug 3 00:59:13 2010 +0200
-
-    Documentation update.
-
-commit ba5e5940aa1f11128c76a3964823bda22e47ab04
-Author: Ondrej Zajicek 
-Date:   Mon Aug 2 13:11:53 2010 +0200
-
-    Adds igp_metric attribute.
-
-commit d395fe48553062413a85fd04cda0752f933e70c6
-Author: Ondrej Zajicek 
-Date:   Sat Jul 31 11:37:30 2010 +0200
-
-    Fixes bug in OSPF ext-LSA origination.
-
-commit d1e146f2f8da303af7bbe0cec363cc15c58c37fd
-Author: Ondrej Zajicek 
-Date:   Sat Jul 31 01:04:32 2010 +0200
-
-    Implements IGP metric comparison for BGP routes.
-
-commit ac3ac49a71d4b290cfb28aecafc8ac4a69df7a64
-Author: Ondrej Zajicek 
-Date:   Wed Jul 28 13:13:34 2010 +0200
-
-    Adds route resolvability test.
-
-commit 1b180121a90ef98f3adce1a355d48d64c6fc3c4f
-Author: Ondrej Zajicek 
-Date:   Wed Jul 28 11:45:35 2010 +0200
-
-    Use link-local addresses in recursive next hops for IPv6 BGP.
-
-commit c477f48916d74c2db6156145851f9536ae0a0a6c
-Author: Ondrej Zajicek 
-Date:   Tue Jul 27 18:20:12 2010 +0200
-
-    Hostcache should use trie to filter relevant route changes.
-
-commit 7f0d245a5e6d2d789e1fce4b5388ea69aba3b428
-Author: Ondrej Zajicek 
-Date:   Tue Jul 27 17:17:11 2010 +0200
-
-    Minor changes in prefix trie.
-
-commit f2b76f2c45bb8e7c1f13f6d4924e10f0c6b12778
-Author: Ondrej Zajicek 
-Date:   Mon Jul 26 16:39:27 2010 +0200
-
-    For hostentry cache, replace FIB with a hash table using (IP, dep table) as a key.
-
-commit 852b7062e33b9886eb869fac8b9354497c49b126
-Author: Ondrej Zajicek 
-Date:   Thu Jul 22 15:09:35 2010 +0200
-
-    Fixes a buffer overflow in TX code of IPv6 BGP.
-
-commit 7873e9828ff7ba7203fd30ffa7d50859d583d4ca
-Author: Ondrej Zajicek 
-Date:   Wed Jul 14 19:03:23 2010 +0200
-
-    Fixes the documentation.
-
-commit 087cecd0e2db0ec1e630fde67ec560578264bf32
-Author: Ondrej Zajicek 
-Date:   Tue Jul 13 12:48:23 2010 +0200
-
-    Adds some options and documentation related to recursive next hops.
-
-commit f038f0a6385d7b81f57254e3c9bf84021a6b040d
-Author: Ondrej Zajicek 
-Date:   Mon Jul 12 21:39:10 2010 +0200
-
-    Fixes missing check in reconfiguration.
-
-commit 9be9a264137cdd881f339c37d1a1918527924254
-Author: Ondrej Zajicek 
-Date:   Mon Jul 12 17:39:39 2010 +0200
-
-    Implements proper multihop BGP.
-    
-    Also does some incompatible changes to config file syntax,
-    like removing 'via IP' from multihop option.
-
-commit cfe34a316e35a209fcd814ccf3523c262e8d4b0a
-Author: Ondrej Zajicek 
-Date:   Mon Jul 5 17:50:19 2010 +0200
-
-    Implements hostcache and recursive next hops.
-    
-    Hostcache is a structure for monitoring changes in a routing table that
-    is used for routes with dynamic/recursive next hops. This is needed for
-    proper iBGP next hop handling.
-
-commit 824de84d48eff6cbd0c550309fbd0bbf7740cb14
-Author: Ondrej Zajicek 
-Date:   Wed Jun 2 22:25:39 2010 +0200
-
-    Do not start with huge OSPF FIBs.
-    
-    Most OSPF instances don't need 64k FIB fields. This change halves
-    resident memory usage on small OSPF networks.
-
-commit acb60628f53ba1fc29d1a554683acdb03f961c6f
-Author: Ondrej Zajicek 
-Date:   Wed Jun 2 22:20:40 2010 +0200
-
-    Implements command that shows memory usage.
-
-commit 4461b8979143bd13024663622c419646a1db0c85
-Author: Ondrej Filip 
-Date:   Wed Jun 2 12:11:20 2010 +0200
-
-    Minor bug that appears only in debug mode.
-
-commit 9ef239946b7298a679a9b155606257738bb52347
-Author: Ondrej Zajicek 
-Date:   Mon May 31 20:41:40 2010 +0200
-
-    NEWS and version update.
-
-commit a34b09349e809a6d8f696fb0897c0bfdc3b66159
-Author: Ondrej Zajicek 
-Date:   Mon May 31 11:35:29 2010 +0200
-
-    Disable BGP protocol when cannot open listening socket.
-
-commit 9b061f7ea5933f70c200bb3b3a7be5a2e472e805
-Author: Ondrej Zajicek 
-Date:   Fri May 28 11:16:39 2010 +0200
-
-    Minor fixes.
-
-commit 691057f03310e712428e19214ae48462d0f258e1
-Author: Ondrej Zajicek 
-Date:   Wed May 26 16:09:22 2010 +0200
-
-    Support loopback/dummy addresses.
-
-commit e0a62ad0f8be198bf8afb1f6900f138dfe12d4fb
-Author: Ondrej Zajicek 
-Date:   Wed May 26 12:32:30 2010 +0200
-
-    Fixes a bug in duplicit configured stubnets.
-    
-    If there was the same configured stubnet on local and remote
-    router, the remote route always won regardless of its cost.
-
-commit 52572e94ec75728c114f47db37aaf220c1af29d6
-Author: Ondrej Zajicek 
-Date:   Sun May 23 12:34:09 2010 +0200
-
-    Check for OSPF seqnum wraparound and handle it.
-
-commit ba5c0057ed01fb006b7a6fb1bd8c21f0c9ae12be
-Author: Ondrej Zajicek 
-Date:   Sat May 22 22:47:24 2010 +0200
-
-    Extends pair set syntax, matching and deleting against clist.
-    
-    Expressions like (123,*) can be used in pair set literals, clists can be
-    matched against pair sets (community ~ pairset) and pair sets can be
-    used to specify items to delete from clists (community.delete(pairset)).
-
-commit 6d04ef8987f6f5483d353d393ef66dae4b887f30
-Author: Ondrej Zajicek 
-Date:   Fri May 21 16:40:09 2010 +0200
-
-    Comment update.
-
-commit 87a9abeac976180ade1c7619545e610d743994b5
-Author: Ondrej Zajicek 
-Date:   Fri May 21 15:17:49 2010 +0200
-
-    Fixes interface scan on Linux 2.4.x in IPv6 mode.
-
-commit 002b6423188abdd62c5a494069fd299b96863a79
-Author: Ondrej Zajicek 
-Date:   Fri May 21 11:51:39 2010 +0200
-
-    Fixes bug on Linux 2.4.x - kernel sync does not work until restart of kernel protocol.
-    
-    Which was, actually, a bug in timers - on older kernel, monotonic timer
-    is missing and the other implementation started with now == 0, which
-    collides with usage 0 as a special value in timer->expires field.
-
-commit c1cefd7bea79201c58c7c0fa8e192be3cc5ed771
-Author: Ondrej Zajicek 
-Date:   Sun May 16 11:03:59 2010 +0200
-
-    Do not remove old static route if it is in new config with different gw.
-
-commit 7ff5803becec14da870d3997d78e3963fa5ec6e6
-Author: Ondrej Zajicek 
-Date:   Sun May 16 10:27:20 2010 +0200
-
-    Do not originate summary or external LSA if it already here and not changed.
-
-commit 475977242ac5bb9ff8826c2dd8c9a1a180320de2
-Author: Ondrej Zajicek 
-Date:   Fri May 14 16:54:39 2010 +0200
-
-    Handle EPIPE as a common connection close event.
-
-commit 0267f49fb2e44525aa2777bcb9900c4bb2db41e1
-Author: Ondrej Zajicek 
-Date:   Fri May 14 15:24:53 2010 +0200
-
-    Do not add community if it is already in clist.
-
-commit ee7408c2be2cd514ba6eefc5589e57a6056198dc
-Author: Ondrej Zajicek 
-Date:   Fri May 7 15:54:27 2010 +0200
-
-    Fixes a bug in LSA flooding.
-    
-    LSAs are sometimes prematurely removed from LS retransmission lists.
-
-commit 54818e9beb6bfcbcb5dcc2b175dca9d174012e6c
-Author: Ondrej Zajicek 
-Date:   Mon May 3 00:10:48 2010 +0200
-
-    A minor bugfix in OSPF ext-LSA processing.
-
-commit 506fa1a73eab0c6426f68cd7784c6712898b88f3
-Author: Ondrej Zajicek 
-Date:   Sun May 2 22:41:40 2010 +0200
-
-    Merge several fixes suggested by Joakim Tjernlund.
-
-commit 6384c7d7aa85d1e593eca30cda48f6677b023cb0
-Author: Ondrej Zajicek 
-Date:   Sun May 2 19:58:34 2010 +0200
-
-    OSPF: most of summary LSA orig./flush logic rewritten.
-    
-    Fixes many bugs in the old code and makes it much cleaner.
-
-commit ba321706578de8402d50214a9e79a65835cdd821
-Author: Ondrej Zajicek 
-Date:   Wed Apr 28 00:39:57 2010 +0200
-
-    Better support for /31 networks.
-
-commit 48b0814ace2d05f9fef093d9f309bfa186a6f365
-Author: Ondrej Zajicek 
-Date:   Tue Apr 27 18:29:01 2010 +0200
-
-    A fix in OSPFv3 next_hop calculation.
-
-commit 96599c957baa9c82bde91d610ce4f519aead05e9
-Merge: ba1301725 9d1ee1388
-Author: Ondrej Filip 
-Date:   Tue Apr 27 11:28:44 2010 +0200
-
-    Merge branch 'master' of ssh://git.nic.cz/projects/bird/GIT/bird
-
-commit ba130172549ef2313f713e048083432f74e7d03d
-Author: Ondrej Filip 
-Date:   Tue Apr 27 11:27:54 2010 +0200
-
-    Avoid warning if not compiled with pipes.
-
-commit 9d1ee1388771a3caa6c23163571a80457adfab2c
-Author: Ondrej Zajicek 
-Date:   Mon Apr 26 19:08:57 2010 +0200
-
-    Neighbors on OSPF broadcast networks should be identified by IP address, not RID.
-    
-    Allows simple support for multiple interfaces to the same network.
-
-commit 4e5fb4b60c59db3248fd12db2bc6f0424d798122
-Author: Ondrej Zajicek 
-Date:   Sun Apr 25 20:12:34 2010 +0200
-
-    Skip LSA host<->network endianity conversions on big endians.
-
-commit c1b51598d49ff737b926bd8ad2e308a5a15ce3a2
-Author: Ondrej Zajicek 
-Date:   Sun Apr 25 19:13:49 2010 +0200
-
-    Implements changes in checksum alg suggested by Joakim Tjernlund.
-
-commit 0ea8fb4abe5acad0b8f470bbdc5cc929b6a58ced
-Author: Ondrej Zajicek 
-Date:   Sat Apr 24 15:18:21 2010 +0200
-
-    Fixes and enhancements in 'show ospf state' command.
-    
-    Now it shows a distance, option to change showing reachable/all network
-    nodes and better handling of AS-external LSAs in multiple areas. The
-    command 'show ospf topology' was changed to not show stubnets in both
-    OSPFv2 and OSPFv3 (previously it displayed stubnets in OSPFv2).
-
-commit 1d44ddf20f3ecef864d4bd20355251839fcd10ee
-Merge: 3b89a2327 6bc414d61
-Author: Ondrej Zajicek 
-Date:   Wed Apr 21 21:52:10 2010 +0200
-
-    Merge commit 'origin/master' into new
-
-commit 3b89a2327ba385abf2a8321a5a900faba3765612
-Author: Ondrej Zajicek 
-Date:   Wed Apr 21 21:50:38 2010 +0200
-
-    Fixes several problems in OSPF vlink implementation.
-
-commit 6bc414d619e1d8710990e89e5085d18e2d5c544c
-Author: Ondrej Filip 
-Date:   Mon Apr 19 16:10:20 2010 +0200
-
-    It seems that prefixes /31 and /127 are valid and used in this strange world.
-
-commit 607d991424006c083be63878b6a606e76679e1ce
-Author: Ondrej Zajicek 
-Date:   Wed Apr 14 15:35:08 2010 +0200
-
-    Fixes build on newer Linux systems.
-
-commit dcc6049444f5e12e0d0fcc4cfbb244c08b4c20b0
-Author: Ondrej Zajicek 
-Date:   Wed Apr 14 14:46:21 2010 +0200
-
-    Fixes IPv6 build on older systems.
-
-commit 6e8067609673afef9eb9e786f4e43a73a3b544f0
-Author: Ondrej Zajicek 
-Date:   Sun Apr 11 12:22:47 2010 +0200
-
-    Fixes next hop calculation on NBMA and parallel PTP links.
-
-commit 7969ea3b41db05294c78a5e0ec0bd3c29ae8c549
-Author: Ondrej Zajicek 
-Date:   Sun Apr 11 10:19:54 2010 +0200
-
-    Fixes a bug in OSPF on NBMA interfaces.
-    
-    A very tricky bug. OSPF on NBMA interfaces probably never really worked.
-    When a packet was sent to multiple destinations, the checksum was
-    calculated multiple times from a packet with already filled checksum
-    field (from previous calculation). Therefore, many packets were sent
-    with an invalid checksum.
-
-commit d759c1a6f834cd8a8a7c264d159b9ceb246aec2a
-Author: Ondrej Zajicek 
-Date:   Fri Apr 9 17:42:39 2010 +0200
-
-    NEWS and version update.
-
-commit de14a7c7aa9225cbc9f837fac9e332a99a99ed69
-Author: Ondrej Zajicek 
-Date:   Fri Apr 9 00:56:47 2010 +0200
-
-    Ignore routes with next-hop 127.0.0.1 on BSD.
-
-commit a9f380fe83187a95ead715e516696024e73f3fb7
-Author: Ondrej Zajicek 
-Date:   Thu Apr 8 18:41:17 2010 +0200
-
-    On BSD, consider unmarked non-device routes as alien.
-
-commit 6b5a8649a48d7616efbc798095eee2c10563b4e6
-Author: Ondrej Zajicek 
-Date:   Thu Apr 8 17:56:56 2010 +0200
-
-    Do not export empty community list attribute in BGP.
-
-commit 0277cc0baf1439a779f4c3ed8b2a77f29f5cfed7
-Author: Ondrej Zajicek 
-Date:   Thu Apr 8 17:47:14 2010 +0200
-
-    Revert "Fixes behavior of defined() on bgp_community attribute."
-    
-    This reverts commit 74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e.
-
-commit 646b24d93249199ee59fdecd685532212b506bda
-Author: Ondrej Zajicek 
-Date:   Wed Apr 7 23:15:56 2010 +0200
-
-    Minor changes.
-
-commit 44d4ab7a960cf143c43d1645f2985cc9d74e3077
-Author: Ondrej Zajicek 
-Date:   Wed Apr 7 11:00:36 2010 +0200
-
-    Configurable syslog name.
-    
-    Also fixes a bug in syslog initialization.
-
-commit b8113a5e92cb19a0910041d5708f4eafeb713b54
-Author: Ondrej Zajicek 
-Date:   Wed Apr 7 00:19:23 2010 +0200
-
-    Implements BGP 'show protocols' info details.
-
-commit c429d4a4ba2cc8778634461e8adea33e0f0ae022
-Author: Ondrej Zajicek 
-Date:   Sun Apr 4 15:41:31 2010 +0200
-
-    Restrict export of device routes to the kernel protocol.
-    
-    In usual configuration, such export is already restricted
-    with the aid of the direct protocol but there are some
-    races that can circumvent it. This makes it harder to
-    break kernel device routes. Also adds an option to
-    disable this restriction.
-
-commit d2d2b5d2ae43f608d03304d280367b658650138b
-Author: Ondrej Zajicek 
-Date:   Sat Apr 3 12:03:52 2010 +0200
-
-    Ignore some kernel messages.
-
-commit 44aa101cd0716daf1b9f0d9ca5ec1814386c1e0d
-Author: Ondrej Zajicek 
-Date:   Sat Apr 3 11:42:18 2010 +0200
-
-    Fixes related to routes with link-local gw on BSD.
-
-commit 46a82e9c2c04c432775c7db5ab5d5cc0301b2a94
-Author: Ondrej Zajicek 
-Date:   Sat Apr 3 10:45:21 2010 +0200
-
-    Fixes missing header.
-
-commit e60d55becdd9b2eeb36ac16daedae2ab54d05b0c
-Author: Ondrej Zajicek 
-Date:   Fri Apr 2 19:03:18 2010 +0200
-
-    Fixes OSPFv3 route generation for local stub networks.
-
-commit e7b09e4ab99fc850480480bbb577ffa36a6c5cd7
-Author: Ondrej Zajicek 
-Date:   Fri Apr 2 16:11:46 2010 +0200
-
-    Use SO_BINDTODEVICE also in Linux/IPv6.
-
-commit 97ab4c34986139b2419c563a3de7ddfe41727d07
-Author: Ondrej Zajicek 
-Date:   Fri Apr 2 11:36:38 2010 +0200
-
-    Fixes link-local addresses on BSD.
-
-commit bed417288e989c48a1362bb1177f436a2e2f9f4f
-Author: Ondrej Zajicek 
-Date:   Fri Apr 2 11:31:20 2010 +0200
-
-    Minor fixes to previous patches.
-
-commit 126683feeda03ffb5a4ce23611e59a4598382d49
-Author: Ondrej Zajicek 
-Date:   Mon Mar 29 19:29:03 2010 +0200
-
-    Filter language updates; new route attributes and datatype.
-    
-     - Adds bgp_originator_id and bgp_cluster_list route attributes.
-     - Adds dotted quad filter datatype (for router IDs, used by
-       bgp_originator_id and ospf_router_id route attributes).
-     - Fixes pair ~ pair set matching.
-     - Documentation updates.
-
-commit eb0f129fcedcecbee85403095abad8f59b82683c
-Merge: b1c030b0b 48cff379a
-Author: Ondrej Zajicek 
-Date:   Fri Mar 26 18:53:31 2010 +0100
-
-    Merge branch 'socket2' into new
-
-commit 48cff379a718998cd984d60fb6f8b48cb961c0f1
-Author: Ondrej Zajicek 
-Date:   Fri Mar 26 16:21:29 2010 +0100
-
-    Added some comments.
-
-commit af157fa3dbe2bba0674eb7634efd3ade6c89d604
-Author: Ondrej Zajicek 
-Date:   Fri Mar 26 14:48:01 2010 +0100
-
-    Disable multiple OSPF pseudointerfaces on BSD.
-
-commit b1c030b0ba59eed6da5271ed592d6b93ed088518
-Author: Ondrej Zajicek 
-Date:   Wed Mar 24 16:39:18 2010 +0100
-
-    Adds autoconf test for -Wno-pointer-sign compliler option.
-
-commit 4d9a0d1f02134235bf686caf49af44232590c456
-Author: Ondrej Zajicek 
-Date:   Wed Mar 24 10:39:14 2010 +0100
-
-    Update lastmod in 'ignored' case only for RIP routes.
-
-commit 885b3d6127ae2c5c4f17d9dba95ffe67bdf7a688
-Author: Ondrej Zajicek 
-Date:   Fri Mar 19 19:23:34 2010 +0100
-
-    Fixes LLS compatibility.
-
-commit 5d53b80770b4927b5a8205ee0e57f80454b0abf5
-Author: Ondrej Zajicek 
-Date:   Fri Mar 19 18:46:56 2010 +0100
-
-    Allow iface pattern matching code to match peer address on ptp links.
-
-commit aa4612480424ad2fede0cd4ae4c7a893f61c6c0f
-Author: Ondrej Zajicek 
-Date:   Fri Mar 19 09:41:18 2010 +0100
-
-    Clear local variables in filters and functions.
-    
-    Fixes crash when used uninitialized variables.
-    This problem was surprisingly tricky to fix.
-
-commit 74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e
-Author: Ondrej Zajicek 
-Date:   Thu Mar 18 00:10:35 2010 +0100
-
-    Fixes behavior of defined() on bgp_community attribute.
-
-commit 1528d30aebc462a13861d7cdb827e74556f3aa91
-Author: Ondrej Zajicek 
-Date:   Wed Mar 17 23:17:55 2010 +0100
-
-    Fixes unterminated string for atomic_aggr attribute formatting.
-
-commit 97e46d28fff1aa27d7d15e113cc3a52ae20934c7
-Author: Ondrej Zajicek 
-Date:   Wed Mar 17 12:19:22 2010 +0100
-
-    Adds check for no protocol and some minor CLI fixes.
-    
-    - Adds check to deny config file with no specified protocol to prevent
-      loading of empty config file.
-    - Moves CLI init before config parse to receive immediate error message
-      when cannot open control socket.
-    - Fixes socket name path check and other error handling in CLI init.
-
-commit 4e3bfd9006ba3033a814a392f9bf4bbca060c8a9
-Merge: e8da1bd0b cda2dfb7a
-Author: Ondrej Zajicek 
-Date:   Mon Mar 15 00:39:45 2010 +0100
-
-    Merge commit 'origin/master' into new
-
-commit e8da1bd0b5f83991d37bc7e8364101c3faa78b3b
-Author: Ondrej Zajicek 
-Date:   Mon Mar 15 00:34:44 2010 +0100
-
-    Fixes missing cases in filters.
-
-commit 0aad2b9292f8e5ff32d048378faf80d2d0bfbb80
-Author: Ondrej Zajicek 
-Date:   Sun Mar 14 16:36:59 2010 +0100
-
-    Temporary OSPF commit - sockets.
-
-commit 54305181f6ee3af57dd3d15d53ea2e851b36ed23
-Merge: e7b76b976 afa9f66c2
-Author: Ondrej Zajicek 
-Date:   Thu Mar 11 18:55:59 2010 +0100
-
-    Merge branch 'new' into socket2
-
-commit e7b76b976084006e430543f4b872f624326dbfe6
-Author: Ondrej Zajicek 
-Date:   Thu Mar 11 18:07:24 2010 +0100
-
-    Temoporary OSPF commit - socket changes.
-
-commit afa9f66c27e2f96b92059131def53cc7b2497705
-Author: Ondrej Zajicek 
-Date:   Wed Mar 10 01:04:09 2010 +0100
-
-    Adds support for PTP links on BSD.
-
-commit cda2dfb7a9e03543eaf407ee26e5046fc589ef29
-Author: Ondrej Filip 
-Date:   Mon Mar 8 00:05:37 2010 +0100
-
-    Arnold from DE-CIX suggested to have this formulation more precise.
-
-commit 53434e44a95fe9334f4bdf5e0da987929addffb1
-Author: Ondrej Zajicek 
-Date:   Sat Feb 27 16:00:07 2010 +0100
-
-    Better flushing of interfaces.
-    
-    When device protocol goes down, interfaces should be flushed
-    asynchronously (in the same way like routes from protocols are flushed),
-    when protocol goes to DOWN/HUNGRY.
-    
-    This fixes the problem with static routes staying in kernel routing
-    table after BIRD shutdown.
-
-commit 3075824dbd4bb654e98614dfd9992ceec0428beb
-Author: Ondrej Zajicek 
-Date:   Fri Feb 26 14:09:24 2010 +0100
-
-    Comparing cluster list length should be later in bgp_rte_better().
-
-commit 212ff335828fbe28311fcbae6154cf2495a44d0e
-Author: Ondrej Zajicek 
-Date:   Fri Feb 26 13:55:22 2010 +0100
-
-    Fixes signedness in format route attributes.
-
-commit ff2857b03db854f99902766ad842aaa5fa29ec3c
-Author: Ondrej Zajicek 
-Date:   Fri Feb 26 10:55:58 2010 +0100
-
-    Many changes in (mainly) kernel syncers.
-    
-    - BSD kernel syncer is now self-conscious and can learn alien routes
-    - important bugfix in BSD kernel syncer (crash after protocol restart)
-    - many minor changes and bugfixes in kernel syncers and neighbor cache
-    - direct protocol does not generate host and link local routes
-    - min_scope check is removed, all routes have SCOPE_UNIVERSE by default
-    - also fixes some remaining compiler warnings
-
-commit e81b440f6878605edd19ed62441648ac71260881
-Author: Ondrej Zajicek 
-Date:   Sun Feb 21 14:34:53 2010 +0100
-
-    Fix configure to enable warnings and fix most of them.
-
-commit 9e43ccf07b96597ef098955a07383d826938cd2d
-Merge: e285bd236 89534cdae
-Author: Ondrej Zajicek 
-Date:   Sun Feb 21 10:15:49 2010 +0100
-
-    Merge commit 'origin/master' into new
-
-commit e285bd236e9cd42e3f92db3a35b5ec2d307c7a48
-Author: Ondrej Zajicek 
-Date:   Sun Feb 21 10:14:41 2010 +0100
-
-    Fixes installation (missing /usr/local/var/run).
-
-commit e0a45fb42163a6bfdeeee44bd0a6a7461552e10f
-Author: Ondrej Zajicek 
-Date:   Sun Feb 21 09:57:26 2010 +0100
-
-    Restricted read-only CLI.
-    
-    Also adds support for executing commands using birdc .
-
-commit 89534cdae500cc82d9081088be90013e4121542d
-Author: Ondrej Filip 
-Date:   Sat Feb 20 21:14:02 2010 +0100
-
-    'rr client id' is not expression but ID (like router id).
-
-commit a68066538fde600941ea43c40d777e14cfac0ee7
-Author: Ondrej Filip 
-Date:   Sat Feb 20 21:09:40 2010 +0100
-
-    Minor typos in configuration example.
-
-commit e304fd4bcf5813b581a39078a25a5cf6916b9f29
-Author: Ondrej Zajicek 
-Date:   Sat Feb 20 00:03:31 2010 +0100
-
-    Implements pattern match for 'show protocols' command.
-    
-    And generally consolidates protocol commands.
-
-commit dfd48621d1a54f2beb461fe3847fc4b2a535675e
-Author: Ondrej Zajicek 
-Date:   Wed Feb 17 21:53:07 2010 +0100
-
-    Replaces the algorithm for building balanced trees.
-    
-    Changes the time complexity of the algorithm from O(n^2) to O(n*log(n)).
-    This speeds up loading of huge DEC-IX config from 128 s to 15 s. It also
-    makes the code significantly simpler.
-
-commit 14f6aca48037a0653e6bcfa27a4da48e8f962198
-Author: Ondrej Zajicek 
-Date:   Wed Feb 17 11:29:48 2010 +0100
-
-    Changes right recursion to left in the grammar of the case expression.
-
-commit dca75fd7c207f0bfc627cb6b74a484da3b27e05f
-Author: Ondrej Zajicek 
-Date:   Sat Feb 13 12:26:26 2010 +0100
-
-    Removes phantom protocol from the pipe design.
-    
-    It seems that by adding one pipe-specific exception to route
-    announcement code and by adding one argument to rt_notify() callback i
-    could completely eliminate the need for the phantom protocol instance
-    and therefore make the code more straightforward. It will also fix some
-    minor bugs (like ignoring debug flag changes from the command line).
-
-commit 9db74169be76f658df2207d1ec99eac48fa36f5f
-Author: Ondrej Zajicek 
-Date:   Sat Feb 13 10:44:46 2010 +0100
-
-    Fixes protocol statistics for pipes.
-
-commit c83876265eeae3591bfe90375503728e633cb807
-Author: Ondrej Zajicek 
-Date:   Thu Feb 11 22:27:06 2010 +0100
-
-    Fixes a tricky bug in the pipe protocol.
-    
-    When uncofiguring the pipe and the peer table, the peer table was
-    unlocked when pipe protocol state changed to down/flushing and not to
-    down/hungry. This leads to the removal of the peer table before
-    the routes from the pipe were flushed.
-    
-    The fix leads to adding some pipe-specific hacks to the nest,
-    but this seems inevitable.
-
-commit a2ea1bac601ca79946e2a215dac9427c526cedab
-Author: Ondrej Zajicek 
-Date:   Thu Feb 11 21:19:20 2010 +0100
-
-    Moves errno.h include.
-
-commit 2af25a971a28ccac05d2385669e8b103c0328f7d
-Author: Ondrej Zajicek 
-Date:   Thu Feb 11 11:12:58 2010 +0100
-
-    Fixes a crash caused by missing error hook on BGP listening socket.
-    
-    Error happened when too many BGP connections arrived in one moment
-    (ECONNABORTED).
-
-commit 353729f513aa6a1f9e7f66083a0f9d2117fe2be5
-Author: Ondrej Zajicek 
-Date:   Thu Feb 11 10:23:35 2010 +0100
-
-    Temporary OSPF commit - socket changes.
-
-commit fa5a99c766dde2a4ac3d44596ff5396a0efd1cc8
-Author: Ondrej Filip 
-Date:   Wed Feb 10 23:09:23 2010 +0100
-
-    NEWS version update.
-
-commit 75f8861898d53f43cb23dbba9c776bce223c18c8
-Author: Ondrej Zajicek 
-Date:   Wed Feb 10 16:18:17 2010 +0100
-
-    NEWS and version update.
-
-commit fae9be7782a161bdf93c83884d62941a34cbe518
-Merge: 7d1966689 0efd64627
-Author: Ondrej Zajicek 
-Date:   Wed Feb 10 14:59:26 2010 +0100
-
-    Merge commit 'origin/master' into new
-
-commit 7d1966689f3f748d8bfa36eef64ced6a750ecb47
-Author: Ondrej Zajicek 
-Date:   Wed Feb 10 14:57:16 2010 +0100
-
-    RTF_CLONING is removed in FreeBSD 8.
-
-commit 0efd646278987df023586d85817a848c2bb39a1d
-Author: Ondrej Filip 
-Date:   Wed Feb 10 12:30:14 2010 +0100
-
-    Define symbols as text between ''.
-
-commit c27b2449d1f57e780974ed13fbd572a48e2a3602
-Author: Ondrej Zajicek 
-Date:   Mon Feb 8 16:01:03 2010 +0100
-
-    Shows source (Router ID) for OSPF routes and adds such attribute.
-    
-    A sad thing is that we does not have a 'router_id' filter type,
-    so it must be given as decimal number in filters.
-
-commit 5a56f27cd00c2cad661aed9b54696699e800883c
-Author: Ondrej Zajicek 
-Date:   Mon Feb 8 12:42:09 2010 +0100
-
-    Adds asterisk to the primary route in 'show route' cmd.
-    
-    And also fixes a minor bug.
-
-commit aa80826e4af4e6e0a6de5604ab5ce7991f2a8b4e
-Author: Ondrej Zajicek 
-Date:   Sun Feb 7 09:49:34 2010 +0100
-
-    Unnumbered OSPF interfaces should be always in the point-to-point mode.
-
-commit 76b53a4e207696c535a45f4358a8e047ca936e45
-Author: Ondrej Zajicek 
-Date:   Sat Feb 6 22:57:51 2010 +0100
-
-    Adds some log messages related to configure.
-    
-    Also fixes a bug in the previous patch.
-
-commit ebae4770c949de41c64c9efbeaaef44adfb25790
-Author: Ondrej Zajicek 
-Date:   Sat Feb 6 19:19:09 2010 +0100
-
-    Modifies configure to just reload protocols when filters change.
-    
-    Before this change, protocols were restarted in that case.
-
-commit c37e78510f2ac4d9bb4c44eddf33352eda72fd0f
-Author: Ondrej Zajicek 
-Date:   Wed Feb 3 00:19:24 2010 +0100
-
-    Makes date/time formats configurable.
-
-commit 44f26560ec9f108039e6736d6de929f899bf20ea
-Author: Ondrej Zajicek 
-Date:   Tue Feb 2 10:14:21 2010 +0100
-
-    Workaround for some broken BGP implementations that skip initial KEEPALIVE.
-
-commit 5f47c4c11ed8da3415c4c8c247bf52ab6a48255d
-Author: Ondrej Zajicek 
-Date:   Tue Feb 2 00:03:46 2010 +0100
-
-    Changes right-recursion to left-recursion in a filter grammar.
-    
-    Because we don't want to have a limit on a function/filter length.
-
-commit 1a7a4e59a22f903a0be791f229e86ab881593851
-Merge: 41677025e 1960d2035
-Author: Ondrej Zajicek 
-Date:   Thu Jan 28 16:00:16 2010 +0100
-
-    Merge commit 'origin/master' into new
-
-commit 41677025ee67fcccd34493f9b205037dd68811c9
-Author: Ondrej Zajicek 
-Date:   Thu Jan 28 15:59:18 2010 +0100
-
-    Changes 'ignore communities' to 'interpret communities'.
-
-commit 1960d20350c5191b089f0a233d99969a0ff23ef6
-Author: Ondrej Filip 
-Date:   Wed Jan 27 23:45:36 2010 +0100
-
-    Priority for '||' and '&&' fixed.
-
-commit 7515dafc006f8b71bc15aa7ed9749c7d4fb00153
-Author: Ondrej Filip 
-Date:   Wed Jan 27 22:26:45 2010 +0100
-
-    Allow multiple || and && statements.
-
-commit 6cb8f742f1adf99881334b8ae21c398d98571aa1
-Author: Ondrej Zajicek 
-Date:   Wed Jan 27 17:22:57 2010 +0100
-
-    Better handling of well-known communities.
-    
-    Process well-known communities before the export filter (old behavior is
-    to process these attributes after, which does not allow to send route
-    with such community) and just for routes received from other BGP
-    protocols. Also fixes a bug in next_hop check.
-
-commit a3062085827db3115961eacd9d945ac202728174
-Author: Ondrej Zajicek 
-Date:   Wed Jan 13 14:53:33 2010 +0100
-
-    Comment update.
-
-commit 974363c172e026b00be5f78ec585dda1e402b6f6
-Merge: 99f5fc14c 844e0f65d
-Author: Ondrej Zajicek 
-Date:   Fri Jan 8 22:20:09 2010 +0100
-
-    Merge commit 'origin/master' into new
-
-commit 99f5fc14cd457f71973bc2264566284049ccfb2c
-Author: Ondrej Zajicek 
-Date:   Fri Jan 8 22:19:41 2010 +0100
-
-    A partial vlink fix.
-
-commit 844e0f65dbab98f71f2a5631277a720613d4d7a5
-Merge: 3242ab437 fc33143f0
-Author: Ondrej Filip 
-Date:   Fri Jan 8 21:19:03 2010 +0100
-
-    Merge branch 'master' of ssh://git.nic.cz/projects/bird/GIT/bird
-
-commit 3242ab437f47f34d6734726003d647d0f493a163
-Author: Ondrej Filip 
-Date:   Fri Jan 8 21:06:06 2010 +0100
-
-    Typo in documentation.
-
-commit fc33143f02642cc775a704dec37446e0b4343a43
-Author: Ondrej Zajicek 
-Date:   Fri Jan 8 17:22:51 2010 +0100
-
-    A fix for broken multi-area OSPF
-
-commit 0741e68750fdda754790b6de7739e06310bdf723
-Author: Ondrej Zajicek 
-Date:   Fri Jan 8 10:21:51 2010 +0100
-
-    Socket table update.
-
-commit 538dd2e486c3cc95ffebbdf73c934ddc71d70e09
-Author: Ondrej Filip 
-Date:   Fri Jan 8 01:14:34 2010 +0100
-
-    Cryptographic auth can be used also on virtual links.
-
-commit 5f47fd85e341d94e2cbf46801cc14be06fb65dd8
-Author: Ondrej Filip 
-Date:   Fri Jan 8 01:13:58 2010 +0100
-
-    Small typo.
-
-commit 6901fd0685f75ad5e95ea252039eec9e8926cd6a
-Author: Ondrej Filip 
-Date:   Thu Jan 7 23:42:11 2010 +0100
-
-    More information about vlinks.
-
-commit 18722dc98c57af6bfa2d9b967417b65db263e5ca
-Author: Ondrej Filip 
-Date:   Thu Jan 7 23:03:19 2010 +0100
-
-    Bugfix in DBG call.
-
-commit 3127b81755de4a09475df71072964e292c6994a7
-Author: Ondrej Filip 
-Date:   Thu Jan 7 22:54:39 2010 +0100
-
-    Be a little bit more verbose on virtual links.
-
-commit cf0858c2174c6bf0a4f63b914d06a2342c433b09
-Author: Ondrej Zajicek 
-Date:   Thu Jan 7 22:43:06 2010 +0100
-
-    A fix of a previous fix.
-
-commit ba39197c11db085c4bc062e45fd9c74f42b41ca0
-Author: Ondrej Zajicek 
-Date:   Thu Jan 7 22:22:10 2010 +0100
-
-    Fixes vlinks for OSPFv2.
-
-commit 29bfbae7936beb401d944daf0f0106aa8a92ef50
-Author: Ondrej Zajicek 
-Date:   Thu Jan 7 16:24:36 2010 +0100
-
-    Debugging change leaked to repository.
-
-commit 3034b384dd9e6c78e686a294b1f80775fdb3e392
-Author: Ondrej Zajicek 
-Date:   Thu Jan 7 11:46:11 2010 +0100
-
-    A minor fix in OSPF.
-
-commit 861f223a531be17d2e3e7abc0246be3057b809a0
-Author: Ondrej Zajicek 
-Date:   Wed Jan 6 23:20:43 2010 +0100
-
-    BSD compatibility fix.
-
-commit 0c75411bec2f4e37bfdb4c7162631a22898052c1
-Author: Ondrej Zajicek 
-Date:   Wed Jan 6 16:57:20 2010 +0100
-
-    NEWS, version and documentation update.
-
-commit cf31112f0d7618464097f71228f84bd534f1bc0f
-Author: Ondrej Zajicek 
-Date:   Sun Jan 3 12:17:52 2010 +0100
-
-    Implements MRTdump feature.
-
-commit 610bb3cff05f6d5b09c77724bc97295b809d15e2
-Author: Ondrej Zajicek 
-Date:   Tue Dec 22 10:49:39 2009 +0100
-
-    Show command cleanups.
-
-commit 0ad19261bf551ef49a1565e21e384ec749ec16d4
-Merge: c4ae53858 67b24e7c1
-Author: Ondrej Zajicek 
-Date:   Tue Dec 22 01:34:01 2009 +0100
-
-    Merge commit 'origin/master' into new
-
-commit 67b24e7c1991de345dcb14173943a28d499f6f85
-Author: Ondrej Filip 
-Date:   Mon Dec 21 16:29:23 2009 +0100
-
-    Wrong switch name in configuration example.
-
-commit c4ae53858be1bce6798f31ee2fb46775a607085f
-Author: Ondrej Zajicek 
-Date:   Mon Dec 21 11:53:58 2009 +0100
-
-    Change default mode of pipes to transparent.
-    
-    Opaque pipes are obsolete and should disappear in the future.
-
-commit fbcb7d5faf419057ccbe2340f3714f8885495c51
-Author: Ondrej Zajicek 
-Date:   Mon Dec 21 11:50:42 2009 +0100
-
-    Change default LOCAL_PREF attribute to 100 (suggested value by RFC 4277).
-
-commit ba9a122142a3d42137c129fabaef097702d44801
-Merge: 0225ea4ed c4199e303
-Author: Ondrej Zajicek 
-Date:   Sun Dec 20 22:57:44 2009 +0100
-
-    Merge branch 'ospf3' into new
-
-commit c4199e30313c88c0911060a5b5f3cc181ceedb37
-Merge: f2d7da742 ea7ada380
-Author: Ondrej Zajicek 
-Date:   Sun Dec 20 22:56:09 2009 +0100
-
-    Merge branch 'dev' into ospf3
-
-commit 053dc3d81fe6470966bc35a852e791de0c00ee68
-Author: Ondrej 'Feela' Filip 
-Date:   Sun Dec 20 16:18:22 2009 +0100
-
-    Typo corrected.
-
-commit ea7ada3809ed672bd9d2f9e5742f42b238cc5389
-Author: Ondrej Zajicek 
-Date:   Sun Dec 20 14:59:12 2009 +0100
-
-    Fixes a new bug in the pipe protocol soft reconfiguration.
-    
-    Also updates route reload for pipes.
-
-commit 1a5178587ff63234d1b323fca965acb4a42cb9e2
-Author: Ondrej Zajicek 
-Date:   Sun Dec 20 12:13:15 2009 +0100
-
-    Fixes unnecessary pipe restart during configure.
-
-commit 6877ff73a61d1924bc8940f7b646f52f7b34eca0
-Author: Ondrej Zajicek 
-Date:   Sat Dec 19 18:45:46 2009 +0100
-
-    NEWS and version update.
-
-commit 0225ea4eddb44bd9dd4f112e512325cbf80134d3
-Merge: 43c1ceccb f2d7da742
-Author: Ondrej Zajicek 
-Date:   Tue Dec 15 00:32:13 2009 +0100
-
-    Merge branch 'ospf3' into new
-
-commit f2d7da742bd683b8eaecb1be8e3b04618171c796
-Author: Ondrej Zajicek 
-Date:   Tue Dec 15 00:30:07 2009 +0100
-
-    Fixes export of routes with link-local gw.
-
-commit 43c1ceccb9caf8c4f63f191346c2f33889b4ad22
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 23:31:25 2009 +0100
-
-    Remove bgp_as4_support variable.
-
-commit 13a7395704deeeff2d86910d8bcf9a6f32a7b207
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 23:08:48 2009 +0100
-
-    Minor doc update.
-
-commit f75747073e45c3129568c4936c2f34fa618db41e
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 21:17:15 2009 +0100
-
-    Implements route reload for OSPF.
-
-commit 63542845dfb6d2277f93f77ad9ca3ad8bbaddd09
-Merge: 34a877cca 8a7fb8858
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 20:37:32 2009 +0100
-
-    Merge branch 'dev' into ospf3
-    
-    Conflicts:
-    
-            proto/ospf/lsreq.c
-            proto/ospf/lsupd.c
-            proto/ospf/rt.c
-
-commit 34a877ccac25d38172716d3d2488449c870cad0b
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 17:29:33 2009 +0100
-
-    Minor updates.
-
-commit 8a7fb8858fa87bce6f2f15ee2bbb77704b5fff4e
-Author: Ondrej Zajicek 
-Date:   Mon Dec 14 01:32:37 2009 +0100
-
-    Finishes 'route reload' feature.
-
-commit 28008482a97c0ac70e648759fe37bad0633ed9f7
-Author: Ondrej Zajicek 
-Date:   Sat Dec 12 01:35:51 2009 +0100
-
-    Minor fixes in OSPF.
-
-commit 8a70a13e7e79afa6818b10cf64d4f1ae4cf89e4b
-Author: Ondrej Zajicek 
-Date:   Fri Dec 11 01:20:53 2009 +0100
-
-    Implements protocol-specific Router ID for OSPF.
-    
-    And fixes one minor bug.
-
-commit be2d38b7e977c1f72ed9cd52f8e3e85130c0aaa1
-Author: Ondrej Zajicek 
-Date:   Fri Dec 11 00:31:56 2009 +0100
-
-    Temporary OSPFv3 commit.
-
-commit 9807690b413f3a1d29d064761cc99ed5261cfb58
-Author: Ondrej Zajicek 
-Date:   Sun Dec 6 22:05:50 2009 +0100
-
-    Fixes link-back check.
-
-commit b76aeb823446616b746b52b5c8152f4c5a73b242
-Author: Ondrej Zajicek 
-Date:   Fri Dec 4 22:20:13 2009 +0100
-
-    Fixes next hop handling.
-
-commit 98955023926734c7ecf79f9b8d004baff5225a78
-Author: Ondrej Zajicek 
-Date:   Thu Dec 3 23:20:02 2009 +0100
-
-    Fixes OSPFv2 build.
-
-commit bb3c7c6d22c48cd78b4c5b77a78ff1b92adca053
-Author: Ondrej Zajicek 
-Date:   Thu Dec 3 18:56:39 2009 +0100
-
-    Fixes some log messages.
-
-commit 69fbf9a25190e0149dcc31e830e952c586fe2024
-Author: Ondrej Zajicek 
-Date:   Thu Dec 3 18:25:14 2009 +0100
-
-    Minor fix in LSA update.
-
-commit a421ec33cb9029899122d0ab63bab0fa268348d2
-Author: Ondrej Zajicek 
-Date:   Wed Dec 2 22:22:40 2009 +0100
-
-    Fixes silly bug.
-
-commit 11361a101517c2c87e3d35d2c63cacb3ddb97724
-Author: Ondrej Zajicek 
-Date:   Wed Dec 2 22:19:47 2009 +0100
-
-    Implements route re-feed.
-    
-    This can be used to re-feed routes to protocol after soft change in
-    export filters.
-
-commit 11787b8473ae1685d43dad809592fabc64eb8f46
-Author: Ondrej Zajicek 
-Date:   Wed Dec 2 17:26:16 2009 +0100
-
-    Fixes some problems in pipes.
-    
-    For transparent pipes, loop detection works correctly now.
-    Pipes are now more symmetric - in both directions filtering
-    is done in do_rte_announce().
-
-commit e8b29bdc8dc34d4a0358458907a5d8ac29011d28
-Author: Ondrej Zajicek 
-Date:   Wed Dec 2 14:33:34 2009 +0100
-
-    Fixes one missing log message.
-
-commit 4b84bd4554b2a9331055bfd8d02a0bab0d10df92
-Author: Ondrej Zajicek 
-Date:   Sun Nov 29 10:29:33 2009 +0100
-
-    Fixes some crashes in OSPFv2.
-
-commit e4a810b0ce3d7904e87a210c44c36eda7cba7a3e
-Author: Ondrej Zajicek 
-Date:   Sun Nov 29 10:09:25 2009 +0100
-
-    Temporary commit.
-
-commit a6250a7d1013442ad4feb0d67128a707f2c6880b
-Author: Ondrej Zajicek 
-Date:   Thu Nov 26 23:23:29 2009 +0100
-
-    Fix -p option.
-
-commit bf47fe4b2e40ccfcfe6af2d86548d06cdf9739c5
-Author: Ondrej Zajicek 
-Date:   Thu Nov 26 20:47:59 2009 +0100
-
-    Implements BGP route refresh.
-
-commit 5e6f568115511e2bcf43c60dfdcbd7a35cb04b93
-Merge: 069bfcb53 1f8be1e46
-Author: Ondrej Zajicek 
-Date:   Tue Nov 24 17:19:23 2009 +0100
-
-    Merge commit 'origin/master' into dev
-
-commit 069bfcb53cef012c063a27e5af93d620be2917bd
-Author: Ondrej Zajicek 
-Date:   Tue Nov 24 17:15:20 2009 +0100
-
-    Fixes serious bug in core related to route filtering.
-    
-    If protocol announces a route, route is accepted by import filter to
-    routing table, and later it announces replacement of that route that is
-    rejected by import filter, old route remains in routing table.
-
-commit 717e4c4d8173a8dbae2956f1703ff6d4365a9d34
-Author: Ondrej Zajicek 
-Date:   Fri Nov 20 09:29:29 2009 +0100
-
-    Fixes in the documentation.
-
-commit 1f8be1e46f666e79072cc5f800c2dba91788368b
-Author: Ondrej Filip 
-Date:   Thu Nov 19 23:15:58 2009 +0100
-
-    Added word 'IPv6' to underline, that this problem was not IPv4 related.
-
-commit 6a72a276f6a677a8adec9566867023d76ac7da7e
-Author: Ondrej Zajicek 
-Date:   Thu Nov 19 12:53:55 2009 +0100
-
-    New version.
-
-commit a4644ed6ab32c098b755bdac03498634b2794409
-Author: Ondrej Zajicek 
-Date:   Thu Nov 19 11:44:17 2009 +0100
-
-    Implement option to exit after config file parsing.
-
-commit 3f9b7bfe9ff050430a5886b22a5ab11b5f253048
-Author: Ondrej Zajicek 
-Date:   Wed Nov 18 20:32:36 2009 +0100
-
-    Implements option that controls IPv6 BGP next hops when lladdr is missing.
-
-commit 62aa96caa28180f76c8aff0c49dd21128e396153
-Author: Ondrej Zajicek 
-Date:   Tue Nov 17 15:50:29 2009 +0100
-
-    Adds some documentation to the description option.
-
-commit e04555c04545278cfe3aeae85d707b1d78e5abeb
-Author: Ondrej Zajicek 
-Date:   Tue Nov 17 15:45:05 2009 +0100
-
-    Implement description field of protocol.
-
-commit d0e2d6d1e05455cf1ec4e71135edaa659fe96dac
-Author: Ondrej Zajicek 
-Date:   Tue Nov 17 14:17:23 2009 +0100
-
-    Show both IPv6 next hop addresses in BGP.
-
-commit 3228c72cc030f409914134440a7e55bbcfc9ff6a
-Author: Ondrej Zajicek 
-Date:   Tue Nov 17 11:41:29 2009 +0100
-
-    Implements RFC 5004 - prefer older external routes.
-
-commit cbf8b08d622695f360bcdd80d61eb4add967749e
-Author: Ondrej Zajicek 
-Date:   Tue Nov 17 10:31:33 2009 +0100
-
-    Temporary OSPFv3 devel commit
-
-commit 2eece54a04d95f534b935ccac4c3959b25516bd5
-Author: Ondrej Zajicek 
-Date:   Sun Nov 15 14:24:20 2009 +0100
-
-    Fixes bug related to reconfiguration with bgp_path first/last operators.
-
-commit 653b4015f137d9590147f8774ec686031696f81c
-Author: Ondrej Zajicek 
-Date:   Fri Nov 13 14:54:43 2009 +0100
-
-    After shutdown, BIRD should have exit code 0.
-
-commit d3f36e5978e85a926c497e2aa2cbdf319776ebb5
-Author: Ondrej Zajicek 
-Date:   Fri Nov 13 14:43:29 2009 +0100
-
-    Fixes BIRD socket unlink.
-
-commit 4ac7c8341c660db654821ed2dc0273645dc19645
-Author: Ondrej Zajicek 
-Date:   Mon Nov 9 23:22:53 2009 +0100
-
-    Use IPv6 checksums in OSPFv3.
-
-commit 3f22fa9e74c8643d3e4f7e3a7b4f2aa992ad09f5
-Merge: a6bc04d59 b7c0e93eb
-Author: Ondrej Zajicek 
-Date:   Mon Nov 9 22:54:39 2009 +0100
-
-    Merge branch 'dev' into ospf3
-
-commit b7c0e93ebd40cdc4f6e89067a3e5f7293263c7f9
-Merge: 7965e17d6 f1f1e899b
-Author: Ondrej Zajicek 
-Date:   Mon Nov 2 16:27:17 2009 +0100
-
-    Merge commit 'origin/master' into dev
-
-commit 7965e17d67e8e2e68d96a8471f4828c0dc0d0b21
-Author: Ondrej Zajicek 
-Date:   Mon Nov 2 16:25:05 2009 +0100
-
-    Fixes build in Debian GNU/kFreeBSD.
-
-commit f1f1e899b708e0e2ebaba46444fad650648ccb93
-Author: Ondrej 'Feela' Filip 
-Date:   Mon Nov 2 15:59:01 2009 +0100
-
-    Version 1.1.5
-
-commit a6bc04d59130c49a1dbfadffa4285b11e2ff4939
-Author: Ondrej Zajicek 
-Date:   Thu Oct 29 23:57:42 2009 +0100
-
-    Implements better checks on incoming packets and LSAs in OSPF.
-
-commit 9d4d38d1a5d67f5485d2b2fa439c879583dfdcb0
-Author: Ondrej Zajicek 
-Date:   Wed Oct 28 22:39:24 2009 +0100
-
-    Fixes some problems related to link-local routes in KRT interface.
-
-commit b5332824ea4108d62cb559205391fd2c530348e4
-Author: Ondrej Zajicek 
-Date:   Wed Oct 28 20:33:08 2009 +0100
-
-    New version.
-
-commit e6ff7a08e4e7808e1175c3c3bc830d93c0454b19
-Author: Ondrej Zajicek 
-Date:   Tue Oct 27 22:25:36 2009 +0100
-
-    Replaces local endianity testing macro with the common one.
-    
-    That makes it easier to integrate BIRD to crosscompiling
-    buildsystems.
-
-commit 9727681a38d3a7c474892e167c0e5a4e0cfac844
-Author: Ondrej Zajicek 
-Date:   Sun Oct 25 20:02:28 2009 +0100
-
-    Implements proper handling of summary/external LSA IDs.
-
-commit bff74c7aa3ce4d407cb18b48c9df7b670c3c7a3d
-Author: Ondrej Zajicek 
-Date:   Tue Oct 20 19:04:28 2009 +0200
-
-    Allows importing 'onlink' routes.
-
-commit 988992446d3aaaef9c19902d94cd1908a963fd80
-Author: Ondrej Zajicek 
-Date:   Thu Oct 15 11:57:25 2009 +0200
-
-    Implement command to show LSA db.
-
-commit b66abe8ef986698caccd08b38a991330f0791075
-Author: Ondrej Zajicek 
-Date:   Thu Oct 15 00:28:04 2009 +0200
-
-    Reimplements 'show ospf state' for OSPFv3 and fixes some bugs.
-
-commit 4cdd078453d585ac97a183ea1f3951d85f1b8784
-Author: Ondrej Zajicek 
-Date:   Mon Oct 12 23:31:42 2009 +0200
-
-    Implements protocol-specific router id and updates documentation.
-
-commit 52b9b2a1786140c38af03de570b0cc96c835c1d3
-Author: Ondrej Zajicek 
-Date:   Mon Oct 12 20:44:58 2009 +0200
-
-    Rename as_path_get_last/as_path_get_first to be consistent.
-
-commit ea89da381fc682155e7d08d6ad3d4ac8aa5fe115
-Author: Ondrej Zajicek 
-Date:   Sun Oct 11 18:56:16 2009 +0200
-
-    Workaround for stupid callback scheduler.
-    
-    There is no reak callback scheduler and previous behavior causes
-    bad things during hard congestion (like BGP hold timeouts).
-    
-    Smart callback scheduler is still missing, but main loop was
-    changed such that it first processes all tx callbacks (which
-    are fast enough) (but max 4* per socket) + rx callbacks for CLI,
-    and in the second phase it processes one rx callback per
-    socket up to four sockets (as rx callback can be slow when
-    there are too many protocols, because route redistribution
-    is done synchronously inside rx callback). If there is event
-    callback ready, second phase is skipped in 90% of iterations
-    (to speed up CLI during congestion).
-
-commit 7ea5b00f42bd3d1fdafb0be349e3ebbcdf3ea466
-Author: Ondrej Zajicek 
-Date:   Thu Oct 8 15:23:24 2009 +0100
-
-    First and last accessors to as_paths.
-
-commit d82fc18d75e4ebf615657cb5d98f000c728b13e4
-Author: Ondrej Zajicek 
-Date:   Wed Oct 7 21:10:29 2009 +0100
-
-    Implement proper LSA ID generation.
-
-commit 43c7a1ffa07dda2a9f37c046e1cd9a75242db2b7
-Author: Ondrej Zajicek 
-Date:   Wed Sep 30 18:48:38 2009 +0200
-
-    New version.
-
-commit aa7088fe2646e53b5168f7ea4e5bd098f891951c
-Author: Ondrej Zajicek 
-Date:   Wed Sep 30 16:34:47 2009 +0200
-
-    Fixes one previous commit.
-
-commit a5bf5f781cf921bd1e092b7f9ae6ccdbf7424428
-Author: Ondrej Zajicek 
-Date:   Thu Sep 24 23:14:44 2009 +0200
-
-    Show bad peer AS number in log in decimal.
-
-commit be6e39ebbf7ed107abde6fc1a18e8827ca47a7c1
-Author: Ondrej Zajicek 
-Date:   Thu Sep 24 22:12:11 2009 +0200
-
-    Passive option.
-
-commit 2d507e64b7d7029906aac30dbea317795b5339de
-Author: Ondrej Zajicek 
-Date:   Thu Sep 24 19:08:14 2009 +0200
-
-    Do not allow gateway routes with NULL iface.
-
-commit 54fe0d9230be440d9f627ff7f94a202e6117e1b9
-Author: Ondrej Zajicek 
-Date:   Fri Sep 18 13:59:04 2009 +0200
-
-    Fixes setting of IP addresses to route attributes (NEXT_HOP).
-
-commit db96fccb31bc0436ec182ff825f592d6c16dc930
-Author: Ondrej Zajicek 
-Date:   Fri Sep 18 01:11:09 2009 +0200
-
-    Fixes bug in filter rta copy-on-write.
-    
-    Filters should try to copy-on-write just cached rtas.
-
-commit 46eb80d5d50a2b284cae19444149d57d857a8e02
-Author: Ondrej Zajicek 
-Date:   Thu Sep 17 17:52:36 2009 +0200
-
-    Fixes headers for uintptr_t (and build on NetBSD).
-
-commit f4c6ca8c9c7ca7c0d481e6059396beed6adc768d
-Author: Ondrej Zajicek 
-Date:   Thu Sep 17 13:35:37 2009 +0200
-
-    Fixes preference bounds.
-
-commit 0781e9c62cd34175eb4e3bc61ffe785d08538727
-Author: Ondrej Zajicek 
-Date:   Thu Sep 17 12:40:02 2009 +0200
-
-    Fixes preference in transparent pipes.
-
-commit 9f0ba7b1c7a0754c473b8ab202f572c9c8363285
-Author: Ondrej Zajicek 
-Date:   Thu Sep 17 12:18:03 2009 +0200
-
-    Implements proper RID handling in OSPFv3.
-
-commit 5eb4d0180ed92cee31d962fbc4d0175a7e1d5933
-Author: Ondrej Filip 
-Date:   Fri Sep 11 12:20:30 2009 +0200
-
-    New release 1.1.3
-
-commit c15e569065e80f91b4c9c77b86640aac72aa0a47
-Author: Ondrej Zajicek 
-Date:   Tue Sep 8 17:06:47 2009 +0200
-
-    Make endianity swapping simpler.
-
-commit be862406627da3bd1facea9309b3f32e67422eab
-Author: Ondrej Zajicek 
-Date:   Tue Sep 8 13:45:02 2009 +0200
-
-    Temporary OSPFv3 development commit.
-    
-    Finally, it is working.
-
-commit 29bcd04e75a4d145bee500b8aef79052974b1981
-Author: Ondrej Filip 
-Date:   Sun Sep 6 21:26:46 2009 +0200
-
-    Update of config.sub & config.guess
-
-commit daeeb8e982a3463f4a866e805b64f214d9f44160
-Author: Ondrej Zajicek 
-Date:   Fri Sep 4 11:24:08 2009 +0200
-
-    Clear memory allocated by ralloc().
-    
-    This also fixes bug that timer->recurrent was not cleared
-    in tm_new() and unexpected recurrence of startup timer
-    in BGP confused state machine and caused crash.
-
-commit f9c799a00e705b1420b214628c2bb2a30bf491d9
-Author: Ondrej Zajicek 
-Date:   Fri Sep 4 11:06:51 2009 +0200
-
-    Temporary OSPFv3 development commit (changing multicast support).
-
-commit d2ceaf4ec82837239a35ace00399ce3aa845849e
-Author: Ondrej Zajicek 
-Date:   Fri Aug 28 13:45:43 2009 +0200
-
-    Temporary OSPFv3 development commit
-
-commit 05198c12f48c9d4a65ee6d1d4117bd8067a71131
-Author: Ondrej Zajicek 
-Date:   Thu Aug 27 19:01:04 2009 +0200
-
-    Some cleanups.
-
-commit 061ab802a67cfc336785f6daeecdcbd4910734ed
-Author: Ondrej Zajicek 
-Date:   Thu Aug 27 18:25:46 2009 +0200
-
-    Temporary OSPFv3 development commit
-
-commit 949bd34e81ee99370decdabefa51c9c11ffe915b
-Author: Ondrej Zajicek 
-Date:   Tue Aug 25 19:01:37 2009 +0200
-
-    Fixes bug related to AS2->AS4 conversion.
-
-commit b49e6f5a65d437cb7e7bdefe8397e0f550496012
-Author: Ondrej Zajicek 
-Date:   Tue Aug 25 16:42:14 2009 +0200
-
-    Temporary OSPFv3 development commit
-
-commit a0c405501fa6a0df8472f1598256e725cec753fd
-Author: Ondrej Filip 
-Date:   Sun Aug 23 23:04:59 2009 +0200
-
-    Version 1.1.2
-
-commit d2f8d0a509d96d752c86f8807e7f6644467e5af5
-Author: Ondrej Filip 
-Date:   Sun Aug 23 23:03:31 2009 +0200
-
-    Version 1.1.2
-
-commit 2ef58837dcb7b78edc193bc9ef1da316bba86998
-Merge: 86975e584 5516a66d4
-Author: Ondrej Zajicek 
-Date:   Fri Aug 21 09:46:49 2009 +0200
-
-    Merge commit 'origin/master' into dev
-
-commit 86975e584eeabbc4f3111f2d100f05ca00579d31
-Author: Ondrej Zajicek 
-Date:   Fri Aug 21 09:43:31 2009 +0200
-
-    Allow more kernel routing tables in IPv6.
-
-commit fee78355b480294f28c3c6814953297dca92d4a0
-Author: Ondrej Zajicek 
-Date:   Fri Aug 21 09:31:35 2009 +0200
-
-    Fixes bug in eattr binary search.
-
-commit c3226991a061415fa83b757cbff678111c586e58
-Author: Ondrej Zajicek 
-Date:   Fri Aug 21 09:27:52 2009 +0200
-
-    Temporary OSPFv3 development commit
-
-commit 5516a66d492497ba8776212defb3117ed1dbfbf8
-Author: Ondrej Filip 
-Date:   Sun Aug 16 22:41:07 2009 +0200
-
-    Ondrej Zajicek add to the team.
-
-commit 87d7fd9725ded186f6fa331d68a1e9df5d1982cf
-Author: Ondrej Filip 
-Date:   Sun Aug 16 22:36:41 2009 +0200
-
-    Bugfix - each protocol can be compiled separately.
-
-commit c5be5a163c2a7b640cb3d0942de44ec87de0f25b
-Author: Ondrej Zajicek 
-Date:   Wed Aug 12 10:26:42 2009 +0200
-
-    NEWS and version update.
-
-commit 9c46ad8e2fba592d28d19757d39bc090fc5b0d47
-Author: Ondrej Zajicek 
-Date:   Wed Aug 12 10:16:32 2009 +0200
-
-    Count number of lines (and not messages) in 'more'.
-
-commit c0973621bc1e06cb6176dc2dfd97bec637861edd
-Author: Ondrej Zajicek 
-Date:   Tue Aug 11 15:49:56 2009 +0200
-
-    Fixes another bug in rte_recalculate().
-    
-    Previous bugfix revealed another hidden bug here.
-
-commit ac07aacd2cdb5cf69a3bfdbc0e078cb0ae96c0db
-Author: Ondrej Zajicek 
-Date:   Tue Aug 11 11:03:37 2009 +0200
-
-    Replace assert with log.
-    
-    Although it is true unless there is a bug in BIRD,  this assert is not
-    needed (code below does not require that assumption), so we should not
-    crash.
-
-commit 024e633c16cf21ae94d7e023e057e59080f92175
-Author: Ondrej Zajicek 
-Date:   Tue Aug 11 10:54:50 2009 +0200
-
-    Fixes bug that caused losing of some routes.
-    
-    When update changes preferred route in such a way that
-    it ceased to be preferred, the new route was linked
-    to wrong place and lost.
-
-commit e75d3c74a8f665a6e7dc0cc743a68e980e7c10da
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 14:36:30 2009 +0200
-
-    Flex does not need the output of Bison.
-
-commit ea9097eaad7dfccd5a88480d748781d947b25cc8
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 14:13:28 2009 +0200
-
-    Fixes parallel runs of Bison.
-    
-    Previous version of Makefile executed Bison two times (in parallel),
-    because of two specified targets. I am not sure wheter this is the best
-    fix.
-    
-    Previon
-
-commit f2cfc509960741bd587cf92f7d154d06fbb2c9a4
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 13:59:56 2009 +0200
-
-    Compilation and dependency generation should be serialized.
-
-commit 581b59907ca5b79b44cc0654e57c34ab77883a96
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 13:57:08 2009 +0200
-
-    Clean files generated by Bison and Flex.
-
-commit 5b1f877e6edfb3b541d444ae5b1ffd025dd9fbd6
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 12:04:25 2009 +0200
-
-    Fixes typo in Makefile
-
-commit b92c8e30191dd757c76239076eda82d0065f2348
-Merge: 54d70d3eb 71a9574a5
-Author: Ondrej Zajicek 
-Date:   Mon Aug 10 10:16:00 2009 +0200
-
-    Merge branch 'master' into dev
-
-commit 71a9574a515613cded23b20f260a88784bcd4286
-Author: Ondrej Filip 
-Date:   Sun Aug 9 19:43:42 2009 +0200
-
-    Makefile changed to make it work with 'make -jN' where N>1
-
-commit 0ac39033c7470f7301bb108f8e777c7ce6af273f
-Author: Ondrej Filip 
-Date:   Sun Aug 9 19:43:15 2009 +0200
-
-    Missing dependency added.
-
-commit 0d328932be54a6756c6b43b0cd6d8d314a5b7fe2
-Author: Ondrej Filip 
-Date:   Thu Jul 30 18:39:41 2009 +0200
-
-    Symbols PASSWORDS and BROADCAST not declared for OSPF
-
-commit 54d70d3ebb20c36f483cde9d7d5b877772d4884e
-Author: Ondrej Zajicek 
-Date:   Thu Jul 23 22:21:17 2009 +0200
-
-    Fixes compiler warning in OFFSETOF().
-
-commit 3aab39f589c352e30e9db92346b579dd561482b3
-Author: Ondrej Zajicek 
-Date:   Thu Jul 23 16:51:28 2009 +0200
-
-    Use %R in OSPF when appropriate.
-
-commit 2f6483cd312ffd7ef055099ce801fb8f437d9abe
-Author: Ondrej Zajicek 
-Date:   Thu Jul 23 16:06:25 2009 +0200
-
-    Adds %R printf directive for Router ID.
-
-commit f0333f44a5a4bec9f3978a90cf7eda1b0a2ec151
-Author: Ondrej Zajicek 
-Date:   Wed Jul 15 01:47:29 2009 +0200
-
-    Implements 'more' feature to birdc.
-    
-    Also does some code restructuring.
-
-commit 6baef17ecf1ed994cfc8038bc610e8b7ff88506a
-Author: Ondrej Zajicek 
-Date:   Tue Jul 14 14:18:54 2009 +0200
-
-    Fixes bug in CLI TX buffer management.
-
-commit 70670bf317a612a1700ffbd0dbc8d92614e0caf2
-Author: Ondrej Zajicek 
-Date:   Thu Jul 9 15:42:39 2009 +0200
-
-    Fixed bug related to reconfiguration of BGP with MD5 passwords.
-
-commit dd7b4a13848f5a92b403a563e8e27a3cbdfc937f
-Merge: d1abbeacf bffd4c0b3
-Author: Ondrej Zajicek 
-Date:   Mon Jul 6 23:10:33 2009 +0200
-
-    Merge branch 'master' into dev
-
-commit d1abbeacfb5a099418f53b583625ac97b1c62059
-Author: Ondrej Zajicek 
-Date:   Mon Jul 6 19:07:01 2009 +0200
-
-    Fixes memory alignment problems on Sparc64.
-    
-    Not quite standard construction, i should add
-    some autoconf macro.
-    
-    Not tested yet.
-
-commit 2389c46fe314867f99bbdfa1f6c9ff92d433d754
-Author: Ondrej Zajicek 
-Date:   Sun Jul 5 21:18:55 2009 +0200
-
-    Another pile of ipa_from_u32() calls.
-
-commit b082c1bfcc53b10012a427aa3b4b8281fe2f496c
-Author: Ondrej Zajicek 
-Date:   Sun Jul 5 20:26:51 2009 +0200
-
-    Fixes OSPF on big-endians.
-    
-    Hmm, #ifdef is not very typo-safe.
-
-commit f9bdcad4694cf80690982dfc58d28f91216c8bd0
-Author: Ondrej Zajicek 
-Date:   Sun Jul 5 19:01:54 2009 +0200
-
-    Fixes type mismatch in OSPF printf statements.
-    
-    Mixing ip_addr and u32 does bad things on Ultrasparc.
-    Although both have the same size. Fascinating.
-    It was not catched by compiler because of varargs.
-
-commit bffd4c0b3900b28cfa84131752d44277866cb413
-Author: Ondrej Filip 
-Date:   Sun Jun 28 10:03:24 2009 +0200
-
-    Small typos.
-
-commit f1684ae6c05a52e1757c709dfbbedb5fc8ae1e07
-Author: Ondrej Filip 
-Date:   Sun Jun 28 09:43:29 2009 +0200
-
-    New release 1.1.0!
-
-commit ef86b8465ff7d8e81038f37103594eb9c66d9c58
-Author: Ondrej Filip 
-Date:   Sat Jun 27 18:56:26 2009 +0200
-
-    Unused file removed.
-
-commit 2d785e8d6a646a878c970583aa54a15209fa0e6e
-Author: Ondrej Zajicek 
-Date:   Fri Jun 26 13:33:41 2009 +0200
-
-    Fixes bug on TCP passive socket binding on BSD.
-    
-    BGP on BSD was bound to random port. I am surprised that
-    nobody noticed it already.
-
-commit 5004d02cb9df1f3ee231632a8e89929f4eb4f088
-Merge: 1876e18d3 99355da18
-Author: Ondrej Zajicek 
-Date:   Fri Jun 26 01:06:12 2009 +0200
-
-    Merge branch 'master' into dev
-
-commit 1876e18d32fa4b21888aae2c984b1b61338c3e60
-Author: Ondrej Zajicek 
-Date:   Thu Jun 25 15:44:43 2009 +0200
-
-    Minor bugfix.
-
-commit 200ede8226a4173b2405bcd1c98cf20604c33545
-Author: Ondrej Zajicek 
-Date:   Thu Jun 25 14:42:25 2009 +0200
-
-    NEWS and version update.
-
-commit d72cdff411d0bf4ddecaea5d0fc6d4341b4cb3f1
-Author: Ondrej Zajicek 
-Date:   Tue Jun 23 11:08:30 2009 +0200
-
-    Replace 'bind' option with 'listen' option.
-    
-    To be consistent with other daemons.
-
-commit da95a7a7dad6ebf572adfb448dfc1a5c8400e6ab
-Author: Ondrej Zajicek 
-Date:   Tue Jun 23 11:00:38 2009 +0200
-
-    Fixes bug in ORIGIN check.
-
-commit 29c430f8569b90e1962d92a26f96fad7e72d27ec
-Author: Ondrej Zajicek 
-Date:   Tue Jun 23 10:50:57 2009 +0200
-
-    Changes handling of AS_PATH_CONFED_* segments in AS_PATH.
-    
-    Although standard says that if we receive AS_PATH_CONFED_*
-    (and we are not a part of a confederation) segment, we should
-    drop session, nobody does that and it is unwise to do that.
-    
-    Now we drop session just in case that peer ASN is in
-    AS_PATH_CONFED_* segment (to detect peer that considers BIRD
-    as a part of its confederation).
-
-commit 4323099da9e6e8d53072595009731da9b39e9f19
-Author: Ondrej Zajicek 
-Date:   Sat Jun 20 00:59:32 2009 +0200
-
-    Fixes bug in scheduling of callback by main loop.
-    
-    If other side of a socket is sending data faster than
-    BIRD is processing, BIRD does not schedule any other
-    callbacks (events, timers, rx/tx callbacks).
-
-commit 2757985709f0a132427d4f440ec913b6a0064f80
-Author: Ondrej Zajicek 
-Date:   Sat Jun 20 00:40:21 2009 +0200
-
-    Documentation update
-
-commit bf1aec970e9ac0600266fe7a045847a62f18ac3b
-Author: Ondrej Zajicek 
-Date:   Fri Jun 19 23:49:34 2009 +0200
-
-    Adds support for soft reconfiguration.
-
-commit 789772ed4586213d6a7fbb867b9296a01ce1b9c0
-Author: Ondrej Zajicek 
-Date:   Thu Jun 18 19:20:07 2009 +0200
-
-    Implements option that changes BGP listening socket parametres.
-
-commit 1b3b3e34ecbc281a13d4ca0b99e891ee9c4d5cac
-Author: Ondrej Zajicek 
-Date:   Thu Jun 18 14:32:44 2009 +0200
-
-    Minor bugfixes.
-
-commit 6f5603badc12dbbf440e8f85b1165cc8f5d671c7
-Author: Ondrej Zajicek 
-Date:   Thu Jun 11 20:51:13 2009 +0200
-
-    Documentation update.
-
-commit 386752028143e78d0a617216d86f95af4024346d
-Author: Ondrej Zajicek 
-Date:   Thu Jun 11 17:25:38 2009 +0200
-
-    Implements an option that allows to change a set of stub networks.
-
-commit 3d15dcdb1cc91c694aa9319b86bb37510d7ed12b
-Author: Ondrej Zajicek 
-Date:   Wed Jun 10 23:45:08 2009 +0200
-
-    Changes OSPF to generate stub networks for non-primary addresses.
-    
-    Also does some reorganization in RT LSA announcement.
-
-commit b99d378698641b9821e4b708a90761aeb9bf6cc4
-Author: Ondrej Zajicek 
-Date:   Sun Jun 7 00:38:38 2009 +0200
-
-    Minor BGP changes related to error wait time.
-
-commit 723826267101cfbb918125f0f270166cd309229d
-Author: Ondrej Zajicek 
-Date:   Sat Jun 6 18:56:33 2009 +0200
-
-    Fixes bug related to startup delay change.
-
-commit dd91e467657b2dba84df308d0dc74d268bbfa228
-Author: Ondrej Zajicek 
-Date:   Sat Jun 6 18:16:22 2009 +0200
-
-    Differentiate between error delay and connect/reconnect delay.
-    
-    The difference is here to reject incoming connections in the
-    first case.
-
-commit 2a04b045e480bbf75229f0177abbd7f84d3b7089
-Author: Ondrej Zajicek 
-Date:   Thu Jun 4 13:38:18 2009 +0200
-
-    Adds route limit documentation.
-
-commit 72b28a041df18f0da2e6a85360d6935c6a2db471
-Author: Ondrej Zajicek 
-Date:   Thu Jun 4 13:31:09 2009 +0200
-
-    Implements import route limits.
-
-commit 925fe2d3de0e12c644f91f94d13bf388aeda9b57
-Author: Ondrej Zajicek 
-Date:   Thu Jun 4 01:22:56 2009 +0200
-
-    Implements route statistics and fixes some minor bugs.
-
-commit 99355da18f8598e93d0e55167582da9687eae082
-Author: Ondrej Filip 
-Date:   Tue Jun 2 12:01:24 2009 +0200
-
-    Inlude DESTDIR in install to make life of packagers easier.
-
-commit 26978ec419217fccfbb8901033703ede886e78b7
-Author: Ondrej Filip 
-Date:   Tue Jun 2 11:36:07 2009 +0200
-
-    Clean also ipv6 bird.ctl
-
-commit de8f238fdb85bdba8ce4b5988584403cf5dbcd1e
-Author: Ondrej Filip 
-Date:   Tue Jun 2 11:00:12 2009 +0200
-
-    Error in test fixed.
-
-commit dc16584ac2be1c097acbf8a0b2f6d412214f2a01
-Author: Ondrej Filip 
-Date:   Tue Jun 2 00:28:08 2009 +0200
-
-    Small change to make BIRD's IPv6 packaging easier
-
-commit c07c65d6d079eaf4525f03f5d126d51caa2595d6
-Author: Ondrej Zajicek 
-Date:   Mon Jun 1 23:18:45 2009 +0200
-
-    Escaped debbuging message removed.
-
-commit 92a72a4cbdd010f69e8d054019770e55a47637e0
-Author: Ondrej Zajicek 
-Date:   Mon Jun 1 19:32:41 2009 +0200
-
-    Adds support for dynamic pair and bgp mask expressions.
-
-commit f429d4348275030a9f488046c4021aa377ad1a79
-Author: Ondrej Zajicek 
-Date:   Mon Jun 1 16:20:48 2009 +0200
-
-    Removes some remnant of '|' bgp path separator.
-
-commit f98e2915794e8641f0704b22cbd9b574514f5b23
-Author: Ondrej Zajicek 
-Date:   Mon Jun 1 14:07:13 2009 +0200
-
-    The pipe cleanup.
-
-commit 2d45e09f58c4ce857e10c241cf0e89b51b9ec49c
-Author: Ondrej Zajicek 
-Date:   Mon Jun 1 12:10:10 2009 +0200
-
-    Adds opaque/transparent pipe mode selection.
-
-commit 23ac9e9a9eefe13918ee7f21a1d0f271a44d9efd
-Author: Ondrej Zajicek 
-Date:   Sun May 31 15:24:27 2009 +0200
-
-    Changes pipes to transfer all routes between routing table, not just optimal routes.
-
-commit 23e563d86b412632644bdc4a886b0b7fb60e5175
-Author: Ondrej Zajicek 
-Date:   Sat May 30 00:35:35 2009 +0200
-
-    Fixes buggy prefix ~ prefix matching.
-
-commit 9be1086d2970633fb5af2a1faaae16d5a1cf48ea
-Author: Ondrej Filip 
-Date:   Fri May 29 23:08:28 2009 +0200
-
-    New type variable 'V' defined in filters. This type is checked
-    only for name, never for value in function filter_same()
-
-commit 43de796b8a10f561d8b3ef64a86e5ce70de01eb5
-Author: Ondrej Filip 
-Date:   Fri May 29 23:04:54 2009 +0200
-
-    Function pm_path_compare() checked just length of the bgpmasks
-
-commit d59405ec6652e95f4825492c7322536bb7044db0
-Author: Ondrej Filip 
-Date:   Fri May 29 23:02:36 2009 +0200
-
-    Typo in warning fixed.
-
-commit 874b868544c3a6ba45ace062091cc3aee007b719
-Author: Ondrej Zajicek 
-Date:   Fri May 29 22:49:30 2009 +0200
-
-    Implements primary address selection base on 'primary' option.
-
-commit 51f4469f03759642870a45634d9b53054e3deb92
-Author: Ondrej Zajicek 
-Date:   Fri May 29 17:36:37 2009 +0200
-
-    Fixes problems with rewriting of kernel device routes.
-
-commit 6f68f066b63e992321ec1873a15c233f567b9aca
-Author: Ondrej Zajicek 
-Date:   Fri May 29 13:32:24 2009 +0200
-
-    Add 'primary' configuration option.
-
-commit 7c3d06b087946cbea4affa4a814e72b7a3556833
-Merge: f571473ef 4c2507da6
-Author: Ondrej Zajicek 
-Date:   Thu May 28 13:58:51 2009 +0200
-
-    Merge branch 'dev' into ospf
-
-commit a6c9f0648db56175ee9e077e2ca631b678552835
-Author: Ondrej Filip 
-Date:   Thu May 28 13:37:04 2009 +0200
-
-    Missing boolean comparison added.
-
-commit 4c2507da687cdad1b9d147c1655e5ac46aaaa511
-Author: Ondrej Filip 
-Date:   Tue May 26 10:43:59 2009 +0200
-
-    Warning for BSD system and TCP-MD5.
-
-commit 0c8c86c825f9cebf4c1d9f8d9cd57b2fad84d35b
-Author: Ondrej Zajicek 
-Date:   Mon May 25 01:41:20 2009 +0200
-
-    Adds INSTALL file.
-
-commit f571473ef3f78f6e38558d306d4d16ce7797e26c
-Author: Ondrej Zajicek 
-Date:   Sun May 24 17:55:33 2009 +0200
-
-    Hello packets on PTP networks should have zero netmask.
-    
-    This also ensures that misconfigured routers (one side
-    ptp and one side broadcast) do not make adjacency.
-
-commit 8cc598a5205dbe46f5f249fa4f2de0586438965d
-Author: Ondrej Zajicek 
-Date:   Sun May 24 17:51:27 2009 +0200
-
-    Ignore Hello packets from different IP network (than primary).
-
-commit 050ceb867fbb96395c6f7d3207acbb5fe57b8d1c
-Author: Ondrej Zajicek 
-Date:   Fri May 22 18:41:52 2009 +0200
-
-    Update versions.
-
-commit 0c51083e97a4288219b29e82be65f399d085adee
-Author: Ondrej Zajicek 
-Date:   Fri May 22 18:08:54 2009 +0200
-
-    NEWS update.
-
-commit ea2ae6dd0ae3f5dd8cd41c1e5a1170a163027725
-Author: Ondrej Zajicek 
-Date:   Fri May 22 17:12:15 2009 +0200
-
-    Change import/preimport to export/preexport to be consistent with filters.
-
-commit d72a0ac2396471ffb2b3a580ee986f950e4d23ae
-Author: Ondrej Zajicek 
-Date:   Fri May 22 15:16:53 2009 +0200
-
-    Fixes serious bug in route attribute handing.
-    
-    ea_same() sometimes returns true for different route attributes,
-    which caused that hash table in BGP does not work correctly and
-    some routes were sent with different attributes.
-
-commit 80f0d6764aa2c54eabdc1b41321a46e8cbcce2b9
-Author: Ondrej Zajicek 
-Date:   Fri May 22 13:37:07 2009 +0200
-
-    Fixes type mismatch on BSD systems.
-
-commit d0c64519e798132b73ae5769b9246acb77b4c5aa
-Author: Ondrej Zajicek 
-Date:   Fri May 22 01:13:07 2009 +0200
-
-    Ugly hack for finding readline on NetBSD
-
-commit 8de11deb9107b0bcfc7bf3922ee7edff3dbcd73a
-Author: Ondrej Zajicek 
-Date:   Fri May 22 00:26:30 2009 +0200
-
-    Better checks for M4 in configure.
-
-commit 6c84554b671fce473fe333ab3d8b548a0768882b
-Merge: f434d1917 4d176e145
-Author: Ondrej Zajicek 
-Date:   Thu May 21 09:26:59 2009 +0200
-
-    Merge branch 'master' into dev
-
-commit f434d19174cb2d3054a00248ca609aa87bf8c263
-Author: Ondrej Zajicek 
-Date:   Wed May 13 22:04:44 2009 +0200
-
-    Documentation updates
-
-commit 4d176e14509c71823a539b3c8b6103e254296d4f
-Author: Ondrej Filip 
-Date:   Mon May 11 02:01:11 2009 +0200
-
-    'show route protocol 

' added to CLI. - -commit ef9c9ab9b64a6f3b5154e5340ffdcd1d211ec4c5 -Author: Ondrej Filip -Date: Mon May 11 01:32:49 2009 +0200 - - OpenBSD port related changes. - -commit dd8d2acd3c4ed7d7eb56ca9dbb7c9a6d43e2a869 -Author: Ondrej Filip -Date: Sun May 10 19:23:05 2009 +0200 - - Fixed bug in cli help. - -commit e755986a342b9a35cb7dd52e055066b1168aef12 -Author: Ondrej Zajicek -Date: Sun May 10 13:15:17 2009 +0200 - - Fixes in documentation. - -commit 19e10907c197ef123fafdd8a2783f9eb5f4a6f72 -Author: Ondrej Zajicek -Date: Fri May 8 14:37:06 2009 +0200 - - Fixes communication on netlink sockets - - Independent sessions on netlink sockets mixed state - in some common variables. - -commit 20e94fb85b7097b57089e3912475ac881fd5528d -Author: Ondrej Zajicek -Date: Wed May 6 22:02:45 2009 +0200 - - A change in OSPF and RIP interface patterns. - - Allows to add more interface patterns to one common 'options' - section like: - - interface "eth3", "eth4" { options common to eth3 and eth4 }; - - Also removes undocumented and unnecessary ability to specify - more interface patterns with different 'options' sections: - - interface "eth3" { options ... }, "eth4" { options ... }; - -commit 10ab65a8c9eb846655feacd22c29747743a65328 -Author: Ondrej Zajicek -Date: Wed May 6 15:18:52 2009 +0200 - - Fixes one recently introduced IPv6 BGP compatibility problem. - -commit 2b70f0742e808053f87315433a2a64c749c3ec1d -Author: Ondrej Filip -Date: Mon May 4 18:17:46 2009 +0200 - - Linux specific TCP-MD5 handling moved to sysdep/linux/sysio.h - FreeBSD coded added. BSD cannot set BGP passwords itself. - This has to be done by external command. - -commit 1bc4b2cc840eb3f48c7e245528ef79c2b0ba50e7 -Author: Ondrej Filip -Date: Mon May 4 17:49:56 2009 +0200 - - Syntax error fix for systems without CONFIG_SELF_CONSCIOUS (KRT_ALLOW_LEARN) - -commit b7a735ea9d14ceb5c31712fbe122b54f0d7ec6e7 -Author: Ondrej Zajicek -Date: Wed Apr 29 22:17:40 2009 +0200 - - Allow 'third party' BGP updates for originated routes. - -commit 4827b69ff43661f4f34d437999b0edaac76f7355 -Author: Ondrej Zajicek -Date: Wed Apr 29 18:58:24 2009 +0200 - - Fixes BGP IPv6 link local next hop handling. - - When sending 'third party' BGP update, Bird used bogus link local - addresses instead of addresses it received before. - -commit ad440a570b37e8674ef35f3a18df48f0eb2579eb -Author: Ondrej Zajicek -Date: Tue Apr 28 18:11:56 2009 +0200 - - Fixes handling of 'next hop self' and 'source address' configuration - options. - -commit a6ee026693a9c24c71dcf846abd32508782e0249 -Author: Ondrej Filip -Date: Tue Apr 28 11:56:33 2009 +0200 - - Typo in gendist script. - -commit f8fbda6fb0c30fdc6e5182679e7bf1eb2fb9c8e9 -Author: Ondrej Filip -Date: Tue Apr 28 11:53:12 2009 +0200 - - Small formatting typo in documentation. - -commit 73841442d916490fa6a9b5967dbb1f797ca3dac1 -Author: Ondrej Filip -Date: Tue Apr 28 10:20:50 2009 +0200 - - Gendist script adapted to git. - -commit 11e0568f8b7a51584c7d0fa60368050dfba17193 -Author: Ondrej Zajicek -Date: Tue Apr 28 09:46:59 2009 +0200 - - NEWS and version update - -commit 64cf11f544257cae443d899111be1299b1ec0684 -Author: Ondrej Zajicek -Date: Thu Apr 23 23:15:07 2009 +0200 - - Fixes BGPv6 bug - missing endianity conversion. - - Also removes code skipping SNPAs - (obsoleted by newer RFCs, should be ignored). - -commit f307842ad85396f8186fa049d551b6cde9925484 -Author: Ondrej Zajicek -Date: Thu Apr 23 14:44:02 2009 +0200 - - Fixes BGPv6 bug - mandatory attributes weren't validated; - -commit 8f0c887a52fb19cee14725f66d435cebf2010390 -Author: Ondrej Zajicek -Date: Thu Apr 23 14:16:05 2009 +0200 - - Fixe bug in BGPv6 that causes to send invalid network withdraws. - -commit b9539e78d8ebfa9e13d7b61ec9278b76abefdac3 -Author: Ondrej Zajicek -Date: Thu Apr 23 12:36:24 2009 +0200 - - Fixes bug in BGPv6 causing crash by checking missing attributes. - -commit e366625c0ef21d02caf2dab1935862ace1e10fed -Author: Ondrej Zajicek -Date: Fri Apr 17 18:43:11 2009 +0200 - - Fixes mixed-up messages on netlink socket - - Under specific circumstances there might be two mixed-up - netlink sessions (one for scan, the other for route change - request). This patch separates netlink scans and requests - to two fds (and seq counters). - - This should fix http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=428865 - -commit c8a6b9a3d199444fd45879dd5cc5ececd9624822 -Author: Ondrej Zajicek -Date: Fri Apr 17 01:48:36 2009 +0200 - - Rewrite of buggy AS path matching. - - Old AS path maching supposes thath AS number appears - only once in AS path, but that is not true. It also - contains some bugs related to AS path sets. - - New code does not use any assumptions about semantic - structure of AS path. It is asymptotically slower than - the old code, but on real paths it is not significant. - - It also allows '?' for matching one arbitrary AS number. - -commit 024c310b537abc3ddbac3054de71fd759d422824 -Author: Ondrej Zajicek -Date: Wed Apr 8 20:15:01 2009 +0200 - - Fixes broken cryptographic authentication in OSPF - - Cryptographic authentication in OSPF is defective by - design - there might be several packets independently - sent to the network (for example HELLO, LSUPD and LSACK) - where they might be reordered and that causes crypt. - sequence number error. - - That can be workarounded by not incresing sequence number - too often. Now we update it only when last packet was sent - before at least one second. This can constitute a risk of - replay attacks, but RFC supposes something similar (like time - in seconds used as CSN). - -commit b722fe7ebdf7e11f097ed0a85302769de2ac10fb -Author: Ondrej Zajicek -Date: Mon Apr 6 16:53:06 2009 +0200 - - Fixes bug in OSPF packet retransmission. - - If a DBDES packet from a master to a slave is lost, then the old code - does not retransmit it and instead send a next one with the same - sequence number. That leads to silent desynchronization of LSA - databases. - -commit 8298d780be5a5b00c31c10a37a5f3a1353d6e234 -Author: Ondrej Zajicek -Date: Mon Apr 6 16:17:47 2009 +0200 - - Better OSPF packet tracing log messages. - - Replaces old OSPF packet tracing messages with - uniform messages with packet dumps. - -commit bcb81251b4e37b96743aa1cdf790f30ef41a465e -Author: Ondrej Zajicek -Date: Tue Mar 31 21:30:58 2009 +0200 - - Documentation update - -commit c60cdd8c3926a1b3d9156327e8aae64986084ff4 -Author: Ondrej Zajicek -Date: Tue Mar 31 21:17:00 2009 +0200 - - Cleanup changes - -commit b1a597e0c3821c791a41278454e74261cf1b95fb -Author: Ondrej Zajicek -Date: Tue Mar 31 12:55:57 2009 +0200 - - Reimplementation of prefix sets. - - Prefix sets were broken beyond any repair and have to be reimplemented. - They are reimplemented using a trie with bitmasks in nodes. - There is also change in the interpretation of minus prefix pattern, - but the old interpretation was already inconsistent with - the documentation and broken. - - There is also some bugfixes in filter code related to set variables. - -commit 1733d080c9f60de69e843f22e138f27240a8176c -Author: Ondrej Zajicek -Date: Wed Mar 25 19:15:26 2009 +0100 - - Minor text updates. - -commit 40b65f947aed065c03c5f2d5c66c6c794a5aadda -Author: Ondrej Zajicek -Date: Wed Mar 25 19:05:52 2009 +0100 - - Fixes bug in pipe route filtering. - - Routes comming through pipe from primary to secondary table were - filtered by both EXPORT and IMPORT filters, but they should be - only filtered by EXPORT filters. - -commit 4d7d0cb137b700a17751b5a565539357304f9080 -Author: Ondrej Zajicek -Date: Wed Mar 25 18:29:17 2009 +0100 - - Fixes minor bug in pipe. - - Missing macro leads to not calling some of protocol's - callbacks. - -commit 3d574679b8cceb1362bb973e7dfe9981fc93b79b -Author: Ondrej Zajicek -Date: Fri Mar 20 12:58:21 2009 +0100 - - Fix bugs related to kernel table synchronization. - - KRF_INSTALLED flag was not cleared during reconfiguration - that lead to not removing routes during reconfigure when - export rules changed. - - We also should not try to remove routes we didi not installed, - on Linux this leads to warnings (as kernel checks route source - field and do not allow to remove non-bird routes) but we should - not rely on it. - -commit 48d79d521cc13f11eafa129a4216512403b83115 -Author: Ondrej Zajicek -Date: Wed Mar 18 20:30:21 2009 +0100 - - Better handling of AS4 optional attribute errors - - AS4 optional attribute errors were handled by session - drop (according to BGP RFC). This patch implements - error handling according to new BGP AS4 draft (*) - - ignoring invalid AS4 optional attributes. - - (*) http://www.ietf.org/internet-drafts/draft-chen-rfc4893bis-02.txt - -commit eb875dbbe1afaceaf3645384f2a35c98b4c5b5f6 -Author: Ondrej Zajicek -Date: Sat Mar 14 22:18:49 2009 +0100 - - Documentation fixes. - -commit ad586334d51a0aef9de868e9586198e402576599 -Author: Ondrej Zajicek -Date: Sat Mar 14 14:01:39 2009 +0100 - - Path related documentation update - -commit cf1860349182503523975fb8084d514407a75fb4 -Author: Ondrej Zajicek -Date: Sat Mar 14 12:43:10 2009 +0100 - - New syntax for bgp_path - -commit f16ad72ed76c398f081b97b09d56f4b199822464 -Author: Ondrej Zajicek -Date: Fri Mar 13 14:19:03 2009 +0100 - - Update NEWS - -commit e8ba557c7f66aaf02dd24f554fba8b3607c2b3d5 -Author: Ondrej Zajicek -Date: Fri Mar 13 12:49:44 2009 +0100 - - Update capability handshake options - - Add 'capabilities' option, change default behavior to advertise ipv4, - add some checks and ignore incoming capabilities when capabilities - are disabled. - -commit e3299ab14877de6ce688050e550c44cd4e85b212 -Author: Ondrej Zajicek -Date: Thu Mar 5 11:52:47 2009 +0100 - - Added Cisco and Quagga capability workaround option. - -commit 82a79586e5810af2f0338cb4c5982e085b5c5292 -Author: Ondrej Zajicek -Date: Fri Feb 27 15:24:46 2009 +0100 - - Better handling of too long attributes - - This patch extends the length for attributes from 1024 to 2048 - (because both AS_PATH and AS4_PATH attributes take 2+4 B per AS). - - If there is not enough space for attributes, Bird skips that - route group. Old behavior (skipping remaining attributes) - leads to skipping required attributes and session drop. - -commit cb5303927188de9504a6e18aedec299956a22b6f -Author: Ondrej Zajicek -Date: Thu Feb 26 14:23:54 2009 +0100 - - Rate limit for most abundant log messages - -commit a9dc5e1ef2fd08c53bceb54690f6dac83ddf0c81 -Author: Ondrej Zajicek -Date: Wed Feb 25 16:28:21 2009 +0100 - - Fixes another bug in packet retransmissions. - - When slave was in full state, it didn't retransmit - lost packets. That leads to OSPF connection locked - in states loading-full. - -commit 82ba9032be9cf1210ffffd01245b99ce5d9b6b1b -Author: Ondrej Zajicek -Date: Sat Feb 21 22:46:50 2009 +0100 - - Fixes crash during some expressions - - Bird crashed when 'bgp_path.len' was used for routes that does - not came from BGP. - -commit cd17c651a60c30837b683f8ca6e07139dc57d882 -Author: Ondrej Zajicek -Date: Sat Feb 21 17:47:56 2009 +0100 - - Add format for BGP_AGGREGATOR attribute - -commit 25cb9f1d0165df5e86956021cc3e6ee87730ef3b -Author: Ondrej Zajicek -Date: Sat Feb 21 16:20:45 2009 +0100 - - Fix bug in empty bgp mask handling - -commit e312bb4014d5b4ccc706c737f4362ac6ca1046ee -Author: Ondrej Zajicek -Date: Thu Feb 12 21:53:44 2009 +0100 - - Documentation update - -commit d901db3fb72860d4669793bfb1af3a9aa7a27b91 -Author: Ondrej Zajicek -Date: Thu Feb 12 19:46:51 2009 +0100 - - Fixes bug in packet retransmissions. - - When packet was lost during dbdes exchange, slave did not retransmit - it. That leads to OSPF connection locked in states exchange-exstart. - -commit b807ef9a15db2a5db14f68011923975dfc472f49 -Author: Ondrej Zajicek -Date: Thu Feb 12 13:43:06 2009 +0100 - - Fixes bug in protocol state machine - - Scheduling flush must be done before resource pool freeing as it - frees some allocated list nodes from a global list. - -commit 80ac7dc18145baa04a05eee3a69d325087cb9472 -Author: Ondrej Zajicek -Date: Thu Feb 12 13:41:34 2009 +0100 - - Do not use ? for client-side help when in new BGP path syntax - -commit f9491630390da4de138961354433635729668b7d -Author: Ondrej Zajicek -Date: Tue Jan 27 17:35:00 2009 +0100 - - New syntax for bgp_path - -commit 11ec0f1a5171c556dec09e90c20af12f45a6d902 -Author: Ondrej Zajicek -Date: Fri Jan 16 12:49:51 2009 +0100 - - Fixes compilation on older systems. - - Older kernel headers (the ones in Debian Sarge) does not - have __kernel_sockaddr_storage . - -commit e3c460bc9034b30743dd861ddbdbc026cd2997b5 -Author: Ondrej Zajicek -Date: Fri Jan 16 12:08:07 2009 +0100 - - Fixes some past config grammar update that caused password related regression. - -commit 3b108f18e8c151d9c570fd418fc822c1e9ad5e79 -Author: Ondrej Zajicek -Date: Fri Jan 16 10:58:52 2009 +0100 - - One null-pointer dereference bugfix hidden in whitespace changes - -commit 0dd7ccc7669834495c637f5055f2cd783367f8f9 -Author: Ondrej Zajicek -Date: Tue Jan 13 19:25:27 2009 +0100 - - Fix typo. - -commit 0844b65d13d7a5928d425e9adaf28de63550a542 -Author: Ondrej Zajicek -Date: Tue Jan 13 19:15:49 2009 +0100 - - Fix OSPF protocol error recovery behavior. - - When OSPF neighbor state drops down to EXSTART, - clear LSA request and retransmit lists, as specified - by RFC. I hope that this will prevent oscillations - between EXSTART and LOADING states, which sometimes - happened. - - It also contains related fix from Yury Shevchuk that - properly resets DB summary list iterator. - -commit f15cb99c79034fbd98d90b104bd6267e6c2fec81 -Author: Ondrej Zajicek -Date: Mon Jan 12 23:42:51 2009 +0100 - - Add check detecting packet overwrite in TX buffer. - -commit 02a9eeeb8547b3f0940a0295df8a78ce2181ec30 -Author: Ondrej Zajicek -Date: Mon Jan 12 14:40:21 2009 +0100 - - Slist update - -commit 23d6702952841184d364a5520dbe6be7a1a5d14b -Author: Ondrej Zajicek -Date: Sun Jan 11 12:14:27 2009 +0100 - - Some fixes and update of OSPF debug messages - -commit 0e9617e400d54f6f5119a24e7380b7719c2fc3dd -Author: Ondrej Zajicek -Date: Sun Jan 11 10:51:54 2009 +0100 - - Move check for NULL before usage of variable. - -commit f20907adf60960f63b797f4423b4790e8591e99c -Author: Ondrej Zajicek -Date: Sun Jan 11 10:47:41 2009 +0100 - - Fixes bug in OSPF - - Checksum was not recalculated when LSA was changed and - packets with bad checksum were sent. - -commit 330aecead80140b0016d6de56dad1d193be774c8 -Author: Ondrej Zajicek -Date: Thu Dec 25 17:49:57 2008 +0100 - - Bugfix in interpret - - Missing cases in filter code interpret leads to crash - when bgp_next_hop attr was queried. - -commit 083c43e22efb5353a258827a9e6f2f995cfe822d -Author: Ondrej Zajicek -Date: Thu Dec 25 11:55:27 2008 +0100 - - fixes some 64-bit related bugs. - - Filter code used 'aux' integer field of 'symbol' struct to store ptr - to next symbol and both 'aux2' and 'def' fields for value. - Changed to just 'def' for value and 'aux2' for ptr to next symbol. - Also another minor bugfix. - -commit 165a62272720071ca5e9ed1badfddc78b7a7af10 -Author: Ondrej Zajicek -Date: Wed Dec 24 17:24:41 2008 +0100 - - Adds support for fallback to capabilityless BGP connect - - When capability related error is received, next connect will be - without capabilities. Also cease error subcodes descriptions - (according to [RFC4486]) are added. - -commit 591211557f4106ed9e877fa9b80eb56ffb99fef3 -Author: Ondrej Zajicek -Date: Wed Dec 24 12:18:10 2008 +0100 - - Fixes bug related to reconfiguration of BGP. - - BGP keeps its copy of configuration ptr and didn't update it during - reconfiguration. But old configuration is freed during reconfiguration. - That leads to unnecessary reset of BGP connection during reconfiguration - (old conf is corrupted and therefore different) and possibly other strange - behavior. - -commit 11b32d911715cbfb3ce4c87685b1388e4b0de1c4 -Author: Ondrej Zajicek -Date: Fri Dec 19 01:34:39 2008 +0100 - - Major changes to BGP - - Fixes two race conditions causing crash of Bird, several unhandled - cases during BGP initialization, and some other bugs. Also changes - handling of startup delay to be more useful and implement - reporting of last error in 'show protocols' command. - -commit b933281ed5efb9ad9375c3ea41ee2412b9f89c15 -Author: Ondrej Zajicek -Date: Thu Dec 18 23:26:08 2008 +0100 - - Fixes nasty bug in event processing. - - WALK_LIST_DELSAFE (in ev_run_list) is not safe with regard - to deletion of next node. When some events are rescheduled - during event execution, it may lead to deletion of next - node and some events are skipped. Such skipped nodes remain - in temporary list on stack and the last of them contains - 'next' pointer to stack area. When this event is later - scheduled, it damages stack area trying to remove it from - the list, which leads to random crashes with funny - backtraces :-) . - -commit 35164c501722f07beef21178b19090fa9d1930cd -Author: Ondrej Zajicek -Date: Fri Dec 12 17:48:03 2008 +0100 - - rx_hook may be cleaned in some callback so we check it before - executing sk_read(). - -commit d6a836f8d673a117fd19136d24e98fa9bbc4b27e -Author: Ondrej Zajicek -Date: Mon Dec 8 12:24:55 2008 +0100 - - Fixes core state machine. - - The core state machine was broken - it didn't free resources - in START -> DOWN transition and might freed resources after - UP -> STOP transition before protocol turned down. It leads - to deadlock on olock acquisition when lock was not freed - during previous stop. - - The current behavior is that resources, allocated during - DOWN -> * transition, are freed in * -> DOWN transition, - and flushing (scheduled in UP -> *) just counteract - feeding (scheduled in * -> UP). Protocol fell down - when both flushing is done (if needed) and protocol - reports DOWN. - - BTW, is thera a reason why neighbour cache item acquired - by protocol is not tracked by resource mechanism? - -commit fbde6c39084637c2f3f4d31261a44dbf367958d1 -Author: Ondrej Zajicek -Date: Sat Nov 22 01:12:22 2008 +0100 - - Fixes race condition leading to memory corruption and crash. - - When protocol started, feeding was scheduled. If protocol - got down before feeding was executed, then function - responsible for connecting protocol to kernel routing - tables was called after the function responsible for - disconnecting, then resource pool of protocol was freed, - but freed linked list structures remains in the list. - -commit 35f983f88912eadb1e0b25d800693256cbee33ce -Author: Ondrej Zajicek -Date: Fri Nov 21 18:17:03 2008 +0100 - - Fixes segfault with multiple routing tables. - -commit 661ec5db7fa047d883997d0b2cbdd71659f80777 -Author: Ondrej Zajicek -Date: Fri Nov 21 13:05:12 2008 +0100 - - I am not sure whether this is proper fix for a problem that birdc - shows only parts of larger outputs (for example 'show route all'). - It seems that birdc reads (from bird) and writes (to stdout) - everything but during execution of some readline code some already - written output disappeared (although it is fflush()ed and - tcdrain()ed). - - As birdc reads from stdin when select said there are some data, - O_NONBLOCK for stdin is unnecessary and when it is removed, - i didn't notified this problem. - -commit eac21b46f7cf0f704c976f2ffdb289837ad100cc -Author: Ondrej Zajicek -Date: Fri Nov 21 13:01:05 2008 +0100 - - This is bug, isn't it? - -commit e00115904ff7c1854957117d52a6db484050965b -Author: Ondrej Zajicek -Date: Fri Nov 21 12:59:03 2008 +0100 - - birdc died during terminal resize because of unhandled EINTR - in select loop. - -commit 44711e0ca2658da080e04ce7e208a78c9b20e927 -Author: Ondrej Zajicek -Date: Sun Nov 16 22:16:04 2008 +0100 - - Fix some bugs in filter interpret. - -commit ebacaf6f7b4418dd283fd3e39b84e48e331a6a66 -Author: Ondrej Zajicek -Date: Sun Nov 16 11:35:30 2008 +0100 - - Fix bug in AS path matching - -commit 258d0ad4ca550895a1ef20fc478c0160be5374f2 -Author: Ondrej Zajicek -Date: Fri Nov 14 23:03:15 2008 +0100 - - Fixes feeding of new protocol, only preferred routes are announced. - -commit 3f670371cfeef155256a8a77ac5581accee13b05 -Author: Ondrej Zajicek -Date: Fri Nov 14 21:13:56 2008 +0100 - - OSPF routes appeared with random value of ospf_tag attribute. - This patch fixes it. - -commit e29fa06ece1bf9f9a47f224db797df940556136e -Author: Ondrej Zajicek -Date: Fri Nov 14 14:50:37 2008 +0100 - - New read-only route attribute 'proto' added. It returns a string - representing a name of the protocol that originated the route. - Strings can be compared using = or matched using ~. Routes can - be filtered, for example: - - show route where proto ~ "bgp1*" - -commit aebe06b40ce730a88cc8a3121be1944b3ddf5765 -Author: Ondrej Zajicek -Date: Sat Nov 8 23:33:22 2008 +0100 - - Proper format functions for ORIGINATOR_ID, CLUSTER_LIST - -commit b21f68b4cd4794c84e5f0eb2c34204c87ccf0e9a -Author: Ondrej Zajicek -Date: Sat Nov 8 17:24:23 2008 +0100 - - Fix bugs in OSPF MD5 authentication. First bug is that default - values for MD5 password ID changed during reconfigure, Second - bug is that BIRD chooses password in first-fit manner, but RFC - says that it should use the one with the latest generate-from. - - It also modifies the syntax for multiple passwords. - Now it is possible to just add more 'password' statements - to the interface section and it is not needed to use - 'passwords' section. Old syntax can be used too. - -commit 08cca48a149bd6d5210659daf220b6dae87a43b3 -Author: Ondrej Zajicek -Date: Thu Nov 6 19:13:55 2008 +0100 - - Uprava configure - -commit fd91ae3325adfdc83f95a284caa746c000ad7e30 -Author: Ondrej Zajicek -Date: Wed Nov 5 22:36:49 2008 +0100 - - Fix problem with local time changes. - -commit 1389f3699fc643dac6fd4d2f19fb59da3624a2fa -Author: Ondrej Zajicek -Date: Wed Nov 5 21:39:04 2008 +0100 - - Fixes bugs in IPv6 code caused by recent commits. - -commit baa9ef18c62612bd91a8362ef20427046105c113 -Author: Ondrej Zajicek -Date: Tue Nov 4 14:52:47 2008 +0100 - - These warnings are so abundant (because char * / byte * mix) that they - are completely useless. - -commit 6c8102e3a8bf8ae4c15d383f0bd31294dd2ef76e -Author: Ondrej Zajicek -Date: Tue Nov 4 14:51:45 2008 +0100 - - Ignore messages related to wireless extensions. - -commit a39b165e45fbfea053fd0237e0d5a3ebdcf40f78 -Author: Ondrej Zajicek -Date: Sat Nov 1 16:58:40 2008 +0100 - - Multihop BGP was completely broken, because listening socket has always - ttl 1. - -commit a92fe607173b52cf28256f00399953c623788c35 -Author: Ondrej Zajicek -Date: Sat Nov 1 12:55:43 2008 +0100 - - Implementation of route server. - -commit e16466b379be2b94c84b351a69e63b6de5be9dc5 -Author: Ondrej Zajicek -Date: Wed Oct 29 14:16:34 2008 +0100 - - Fix race condition that breaks BGP connections after reconfigure. - - RFC says that only connections in OpenConfirm and Established state - should participate in connection collision detection. - - The current implementation leads to race condition when both sides - are trying to connect at the almost same time, then both sides - receive OPEN message by different connections at the almost same - time and close the other connection. Both connections are - closed and the both sides end in start/idle or start/active - state. - -commit f0ad56f4414fef2781339cfa41704f7bf4c61ad2 -Author: Ondrej Zajicek -Date: Tue Oct 28 16:10:42 2008 +0100 - - Fixes some sloppiness of commit a3b70dc499b64f41aa776b5b4afee5c7bfb8dfa6. - -commit a98fbf0f12b5e83e25afa0f585ca6a4d4ac5f6bf -Merge: a3b70dc49 1567edea8 -Author: Ondrej Zajicek -Date: Mon Oct 27 00:20:22 2008 +0100 - - Merge branch 'dev' into out - -commit a3b70dc499b64f41aa776b5b4afee5c7bfb8dfa6 -Author: Ondrej Zajicek -Date: Mon Oct 27 00:03:30 2008 +0100 - - Two new informative CLI commands for OSPF. - - Two new CLI commands for OSPF giving nice informative (and still machine - parsable) representation of OSPF network graph (based on datas from the - LSA database). - - The first command (show ospf topology) shows routers, networks and stub - networks, The second command (show ospf state) shows also external - routes and area-external networks and routers propagated by given area - boundary router. - -commit 68fa95cfec78f1bfe790949bf747d578ad583ec2 -Author: Ondrej Zajicek -Date: Sun Oct 26 23:55:38 2008 +0100 - - Check of socket name length - -commit 52586ccdf17cd9f34f767718d97f8a258da5efdb -Author: Ondrej Zajicek -Date: Sun Oct 26 23:53:05 2008 +0100 - - Missing newline. - -commit a97122a3caff40bf35e6019a9b60d5e5ef35a84f -Author: Ondrej Zajicek -Date: Sun Oct 26 23:43:13 2008 +0100 - - Bugfix in LSA origination for PTP OSPF links. - - The code generating LSAs for PTP OSPF links is buggy. The old behavior - is that it generates PTP link if there is a full/ptp neighbor and stub - link if there isn't. According to RFC 2328, the correct behavior is to - generate stub link in both cases (in the first case together with PTP - link). - - And because of buggy detection of unnumbered networks, for numbered - networks the code creates stub links with 0.0.0.0/32. - -commit 4c94a6c7e78fb75a9952d891db9d47605f8a26e1 -Author: Ondrej Zajicek -Date: Sun Oct 26 23:23:09 2008 +0100 - - Do not repeat 'Invalid broadcast address' error message. - - 'Invalid broadcast address' error is reported only once for - an interface and not during every interface scan. - -commit d7f3b306495327e76aa9ae381c6c7575104e0e24 -Author: Ondrej Zajicek -Date: Sun Oct 26 23:20:50 2008 +0100 - - Ignore unknown netlink events. - - Bird sometimes reported 'bird: nl_parse_link: Malformed message received'. - The cause is that bird asynchronously received netlink packet from - wireless driver about some wireless event on its link layer. In that - case bird shouldn't complain. - -commit 1567edea8d3da7da08092eef15bb3bd4544c6464 -Author: Ondrej Zajicek -Date: Sun Oct 26 23:09:46 2008 +0100 - - Bugfix for routing table breaking bug. - - Here is a patch fixing a bug that causes breakage of a local routing - table during shutdown of Bird. The problem was caused by shutdown - of 'device' protocol before shutdown of 'kernel' protocol. When - 'device' protocol went down, the route (with local network prefix) - From different protocol (BGP or OSPF) became preferred and installed - to the kernel routing table. Such routes were broken (like - 192.168.1.0/24 via 192.168.1.2). I think it is also the cause - of problem reported by Martin Kraus. - - The patch disables updating of kernel routing table during shutdown of - Bird. I am not sure whether this is the best way to fix it, I would - prefer to forbid 'kernel' protocol to overwrite routes with - 'proto kernel'. - - The patch also fixes a problem that during shutdown sometimes routes - created by Bird remained in the kernel routing table. - -commit b6bf284a905412cfe107b4967e55649e6194187e -Author: Ondrej Zajicek -Date: Sun Oct 26 22:59:21 2008 +0100 - - Bugfixes in MULIT_EXIT_DISC attribute handling. - - - Old MED handling was completely different from behavior - specified in RFCs - for example they havn't been propagated - to neighboring areas. - - - Update tie-breaking according to RFC 4271. - - - Change default value for 'default bgp_med' configuration - option according to RFC 4271. - -commit 4819c3e17ac22c6810ee80261ac3bffb5127e39d -Author: Ondrej Zajicek -Date: Sun Oct 26 22:54:23 2008 +0100 - - Bugfix in LOCAL_PREF attribute handling. - -commit 1adc17b4b57267e301fcd67309494bbbddbfa718 -Author: Ondrej Zajicek -Date: Sun Oct 26 22:52:21 2008 +0100 - - Update of a documentation - new options for AS4, MD5 auth and route reflection. - -commit ba5ed6f3e4eb4b2899cdad08e2edb99063bfbcee -Author: Ondrej Zajicek -Date: Sun Oct 26 22:48:02 2008 +0100 - - Implementation of an option for disabling AS4 support per BGP instance. - -commit 4847a894bf7d4852325c3f1ea4bb4890054a1f66 -Author: Ondrej Zajicek -Date: Sun Oct 26 22:45:09 2008 +0100 - - Implementation of route reflection for BGP - -commit d51aa2819005a03e4cfb6f62333be6ccadfb3c06 -Author: Ondrej Zajicek -Date: Sun Oct 26 22:42:39 2008 +0100 - - Implementation of MD5 authentication of BGP sessions. - -commit 11cb620266035ffbe17b21c4a174380cb8b6a521 -Author: Ondrej Zajicek -Date: Sun Oct 26 22:36:08 2008 +0100 - - Implementation of 4B ASN support for BGP - -commit 44cb1449edec6a80e063981a955e8025ee87ea65 -Author: Martin Mares -Date: Sun Oct 26 14:14:37 2008 +0100 - - The top-level Makefile is a generated file, so remove it from the repo. - -commit c94d56cb04b15dc32f54e8e39b877a92d7bda8c5 -Author: Martin Mares -Date: Sun Oct 26 14:11:06 2008 +0100 - - Updated version number in the README. - -commit 226cb2bc3ff573c4c027d525a96aa2b10a28b817 -Author: Ondrej Filip -Date: Mon Aug 25 12:51:06 2008 +0000 - - Expand ospf dump information. - -commit 97c6fa02e089e3fb057185fe5937297afc5a11ec -Author: Ondrej Filip -Date: Mon Aug 25 12:06:20 2008 +0000 - - Previous patch reverted. :-( - -commit 73e53eb555a58846c4d2db6464d41d1761a60169 -Author: Ondrej Filip -Date: Mon Aug 25 12:00:55 2008 +0000 - - Endianity problem in debug message fix. - -commit 030e3a79cb9376fa85597fdb8243299cd843ca3a -Author: Ondrej Filip -Date: Mon Aug 25 11:57:46 2008 +0000 - - Buffer overflow fix. - -commit 057021df0d699f9c21368ab0fa51fe821cc9a544 -Author: Martin Mares -Date: Mon Aug 25 11:19:49 2008 +0000 - - Fix behavior of ipa_opposite(). - - It was giving wrong results on /30 networks. - -commit 6c36c4b66be5c67a8d5cfa9578aa5a85ebebab6d -Author: Martin Mares -Date: Mon Aug 25 11:14:14 2008 +0000 - - Updated config.{guess,sub} to a recent version. - - Patch from the Debian package. - -commit 3c3271d9fce8cdd614f1d1b24bcebb3599aad930 -Author: Ondrej Filip -Date: Sun Aug 24 23:24:14 2008 +0000 - - Close fd of config file after reconfiguration. - -commit 85ae398a61184d8f7a353eacaa6aefd3422dfd71 -Author: Ondrej Filip -Date: Sun Aug 24 23:20:46 2008 +0000 - - The source address configuration in BGP added. - -commit a456788bce7f9d1e54b19ffbfd35b8fa889c4b47 -Author: Ondrej Filip -Date: Wed Jun 20 12:32:39 2007 +0000 - - New version of flex needs argument separated. - -commit 8411a37e7dc72a5fd2e4fb68d1c557dc89253973 -Author: Martin Mares -Date: Wed Jun 20 07:33:26 2007 +0000 - - Detach from the TTY properly. - -commit 4b1cf69e765b19ebc0cb988be08910c156c76376 -Author: Ondrej Filip -Date: Wed Mar 16 16:09:28 2005 +0000 - - Again back to regina.gin.cz. - -commit c81b4ec36105ff036a7e2423936ab5773011fed1 -Author: Ondrej Filip -Date: Wed Mar 16 16:08:40 2005 +0000 - - Yes, we will go for 1.0.12 - -commit f39e3bfdbff318b3a889f42acfb589e9dfd34c2f -Author: Ondrej Filip -Date: Tue Mar 15 23:42:41 2005 +0000 - - Small bugfix in tracing. - -commit 94c42054ea65d10477afc76f221e3ac345a431eb -Author: Ondrej Filip -Date: Tue Mar 15 22:06:36 2005 +0000 - - Added new parametr 'rx buffer '. BIRD is able to receive - very large packets (if configured). - -commit e6ea2e375e4c547ca1b6fc9c313c2b7940acbd77 -Author: Ondrej Filip -Date: Tue Mar 15 20:51:33 2005 +0000 - - Maximal packet size in virtual links is 576. - -commit e300066d5f66b8bd1d5561d63c10a8fbdce3ba8e -Author: Ondrej Filip -Date: Mon Mar 14 11:24:56 2005 +0000 - - OSPF can accept larger packets than MTU. - -commit 427e59939bc72c79f1566167b337927b14cb1715 -Author: Ondrej Filip -Date: Mon Mar 14 11:07:10 2005 +0000 - - Look for large packets. - -commit a2d5b405d41c212993e47d47607df3b708254c97 -Author: Ondrej Filip -Date: Mon Mar 14 10:59:52 2005 +0000 - - Bugfix in external routes calculation. - -commit f735de0290ce9a8f119f3d72bdde5a16dafe27ad -Author: Ondrej Filip -Date: Mon Feb 21 14:06:22 2005 +0000 - - Small typos in documentation. - -commit 129e912924b7726166b9ff5925a9dff84ee511f9 -Author: Ondrej Filip -Date: Mon Feb 21 10:22:57 2005 +0000 - - Ftp server change. - -commit 89478fe3ab6d07b824adbd4c8ed997ccaca5c7b4 -Author: Ondrej Filip -Date: Mon Feb 21 10:04:37 2005 +0000 - - Change of ftp servers. - -commit 39fc85b4c63582b56c4f96de49d0c6aad03c4086 -Author: Ondrej Filip -Date: Sun Feb 20 19:03:34 2005 +0000 - - Unused code deleted. - -commit 63ca37f3139505a1881bf2c343f18d4ed8e22ce4 -Author: Ondrej Filip -Date: Sun Feb 20 18:56:06 2005 +0000 - - Cleanup - all unused variables deleted. - -commit efc9e1b78b9332a0a8dfce31f1ef8efc82edc63d -Author: Ondrej Filip -Date: Sun Feb 20 17:04:00 2005 +0000 - - Some tasks are fulfilled. :-) - -commit 52d61a84989cc40140e7e8b5fc294ac48d4e0245 -Author: Ondrej Filip -Date: Sun Feb 20 16:54:09 2005 +0000 - - Intelligent reconfiguration should work again. - -commit dafaef9ba9e7b46b9ff42b2cb75954a86f920951 -Author: Ondrej Filip -Date: Sun Feb 20 16:53:06 2005 +0000 - - Originate default route into stub areas. - -commit 028a4cfc02f425de34323082d800a39b7bbc51de -Author: Ondrej Filip -Date: Sun Feb 20 04:28:55 2005 +0000 - - Let's go for 1.0.11. - -commit d8c7d9e8846f025e42227c64e992a3a52ca7dfb4 -Author: Ondrej Filip -Date: Sun Feb 20 04:27:56 2005 +0000 - - Since now I can also use 'dead interval', not just 'dead counter'. - -commit 7de7470a2a6c649ce4d4ce52146e84e6638ebf58 -Author: Ondrej Filip -Date: Sun Feb 20 03:37:47 2005 +0000 - - Bugfix - count courrectly next hop on single hop virtual link. - -commit 6eb4b73fe829cf5da56d8990c33e5c7edaa19d77 -Author: Ondrej Filip -Date: Sun Feb 20 03:30:44 2005 +0000 - - Time of neighbor's dead was not shown correctly. - -commit 5506c82ce6123f70220f2d84ff21269bb832bfac -Author: Ondrej Filip -Date: Fri Feb 18 19:36:32 2005 +0000 - - Bugfix in previous bugfix. - -commit 60e04f041303fdafd0abf0dec003a9745345c68a -Author: Ondrej Filip -Date: Fri Feb 18 18:51:42 2005 +0000 - - Minor bugfix: Summary LSA for aggregated area was always propagated with - metric = 1. Now it's metric of most distant component. - -commit 27a1e3ac35bd3f6a9b5161eafb5b8178162a37f8 -Author: Ondrej Filip -Date: Tue Feb 15 16:17:42 2005 +0000 - - Minor bugfixes in routing table calsulation. - -commit 8ffc753441cd58acf46783de335062ed9af7a12e -Author: Ondrej Filip -Date: Tue Feb 15 06:32:31 2005 +0000 - - Minor changes to keep gcc happy. - -commit c025b85273178bc7c129bf54e420a91c775a9340 -Author: Ondrej Filip -Date: Mon Feb 14 23:15:04 2005 +0000 - - Real write is only in sk_maybe_write. Previous change partially reverted. - Thank you MJ. - -commit 2eef9e887ad82976476ea81aa3a25d97c3956b87 -Author: Ondrej Filip -Date: Mon Feb 14 21:34:46 2005 +0000 - - Be more verbose in log. - -commit 7c49f715593ad7bbe0a4fb86284e2023f7b65bc1 -Author: Ondrej Filip -Date: Mon Feb 14 21:28:51 2005 +0000 - - Added s->err_hook wrapper that empties socket. - -commit 030d3b387edae4a30fb524ed839be020b7b8df8e -Author: Ondrej Filip -Date: Mon Feb 14 11:58:46 2005 +0000 - - Small changed to reduce the number of warnings. - -commit b181f444a6538b03a02296f02928e3c131b251a6 -Author: Ondrej Filip -Date: Mon Feb 14 11:54:16 2005 +0000 - - Small changes to reduce number of warnings. - -commit 75c1c585197f2b4a1b0295d36fe16a4869c21914 -Author: Ondrej Filip -Date: Mon Feb 14 11:37:40 2005 +0000 - - Yes, I'd like to go to 1.0.10 - -commit 5d3f555234d7144272e3081665411d098280d5ad -Author: Ondrej Filip -Date: Sun Feb 13 23:36:31 2005 +0000 - - Many bugfixes in routing table calculation and summary LSA origination. - -commit 0d3effcf8ca3784c36ce6229343ddfd754e405dc -Author: Ondrej Filip -Date: Sat Feb 12 22:27:55 2005 +0000 - - Time added in password management. - -commit 89ba9a18068dc83557e03c58bf280f4dc203271d -Author: Ondrej Filip -Date: Sat Feb 12 22:22:18 2005 +0000 - - Bugfix in inter-area route calculation and summary LSA origination. - Bugfix of some debugging commands. - -commit bae7c43ff35482807654519253b1daa0a6518951 -Author: Ondrej Filip -Date: Sat Feb 12 22:19:46 2005 +0000 - - Bugfix in password acceptance - -commit 9912fa51c8dabbbdf068d271ee7bddfb4a8526ef -Author: Ondrej Filip -Date: Sat Feb 12 22:18:48 2005 +0000 - - Bugfix - cost of interface can be larger than 0xffff - -commit 4991756863538cc5168cc5f10b2599c84eafd8bf -Author: Ondrej Filip -Date: Wed Sep 15 19:33:01 2004 +0000 - - Dont check netmask field on PTP links. - -commit 8910351c76af983411e09e04aff86ea5d9940cf1 -Author: Ondrej Filip -Date: Wed Sep 8 16:06:07 2004 +0000 - - sort from GNU coreutils 5.2.1 doesn't accept the +- syntax - anymore. Hopefully the -k syntax is supported by all other - sort versions - -commit c6dce04bed40959b331a5b79aadd11c3b34d4af5 -Author: Ondrej Filip -Date: Wed Sep 8 16:04:02 2004 +0000 - - Bugfix. - -commit 27e3e5e0c95b068111bf00d7dceb473dc77a93f2 -Author: Martin Mares -Date: Thu Aug 19 09:15:36 2004 +0000 - - Do not forget to propagate LDFLAGS from configure. Allows static linking, - among other things. - -commit 7715f9d9edb2cd5a230424881b1d5ec4e842738a -Author: Ondrej Filip -Date: Tue Aug 10 17:47:32 2004 +0000 - - Bugfix in config.y - -commit 56e2a4b776b0d013f71bff9fbf8550442c11df91 -Author: Ondrej Filip -Date: Thu Aug 5 18:06:30 2004 +0000 - - Bugfix in OSPF - BIRD sometimes failed during rt calculation with VLINKs. - -commit 6236beab1ec5ba61487c418119e01a933e1cacee -Author: Ondrej Filip -Date: Mon Aug 2 22:38:43 2004 +0000 - - Some more TODOs for OSPF. - -commit 8d94a524b637dbb1513c23daefa8411dcdc9a054 -Author: Ondrej Filip -Date: Fri Jul 16 08:27:11 2004 +0000 - - Added handling of STUB bool. - -commit 73089070e6e5c94ffac2da4c9e267ae9bcda2164 -Author: Ondrej Filip -Date: Fri Jul 16 08:01:32 2004 +0000 - - Typo. - -commit 002ecc063845243613eb1ff40c3aa2a46c7013a1 -Author: Ondrej Filip -Date: Fri Jul 16 07:22:43 2004 +0000 - - Bugfix - bird needed double ';' after rfc1583compat. - -commit 4e9742bb597225d7cefc0ee08270f76db29b65f1 -Author: Ondrej Filip -Date: Thu Jul 15 19:46:52 2004 +0000 - - Added note about *BSD. - -commit 6b68de07d9a4f1ad122e46dc40c6cdfd8b06ae4b -Author: Ondrej Filip -Date: Thu Jul 15 17:58:07 2004 +0000 - - News update to 1.0.9. - -commit 004cf4fc0ced85dba570173f372c51b1bf71dafe -Author: Ondrej Filip -Date: Thu Jul 15 17:28:13 2004 +0000 - - Minor bugfix to compile bird in IPv6. - -commit b37bb5ce03aed03d8b1bb0346f3277a93ff76da4 -Author: Ondrej Filip -Date: Thu Jul 15 16:48:12 2004 +0000 - - Minor bugfix - add interface routes. - -commit 28e8d862b7952419e6050230cf154d244a5bae51 -Author: Ondrej Filip -Date: Thu Jul 15 16:42:06 2004 +0000 - - Minor bugfix in calculation of external routes. - -commit 86c84d76b706e77ec5977a3c9e300b0fca9f6b10 -Author: Ondrej Filip -Date: Thu Jul 15 16:37:52 2004 +0000 - - Huge OSPF database redesign. Since now, all LSAs of all areas - are in single database. This avoids duplication of external LSAs and - fixes bug in external LSA distribution. - -commit 777acf91bb0d8ca0f33f367ae5fa00f46dde5a9a -Author: Ondrej Filip -Date: Wed Jul 14 21:47:39 2004 +0000 - - Everything is tested and works. I thins it's right time to go to 1.0.9. - -commit 3b16080c97a2d89c90f7df7a8fda0401ec9abe42 -Author: Ondrej Filip -Date: Wed Jul 14 21:46:20 2004 +0000 - - Multiple OSPF areas can be attached. - Origination of summary LSA works. - Routing table calculation works. - Virtual links works. - - Well, I hope, OSPF is fully compatible with RFC2328!!!! - -commit a417ad13a117d2458702cbec4aa418ba99981611 -Author: Ondrej Filip -Date: Tue Jul 13 23:42:14 2004 +0000 - - Send hello just after interface is up. - This makes the adjacency forming faster. - Minor code clean up. - -commit 897999c22a85499e4e8a476e27469201645012fb -Author: Ondrej Filip -Date: Tue Jul 13 23:31:37 2004 +0000 - - Send hello as soon as possible after the interface is up. - This helps to faster establish the adjacency. - -commit 490767adfce6207012f54f004babcb2aef7f33f8 -Author: Ondrej Filip -Date: Tue Jul 13 22:10:14 2004 +0000 - - Add more reasonable options to LSAs. (But it seems, that it's ignored.) - -commit fe1489e6c13a405b0c76c36213af4017dd4ea2ec -Author: Ondrej Filip -Date: Tue Jul 13 22:04:57 2004 +0000 - - Bugfix: Router was unable to advertise AS external routes. - -commit 62eee82321a9a0451eea9b41a478444ceb87ecb0 -Author: Ondrej Filip -Date: Tue Jul 13 21:27:33 2004 +0000 - - Default tick = 1. The today's CPU is fast enough. - -commit 35fdf4b6a2c3d8ad11be3a7d2525d653237fa3bf -Author: Ondrej Filip -Date: Tue Jul 13 21:22:32 2004 +0000 - - Don't inform us about every ospf_age() - -commit 16c2d48d8fe10521fd493886cf245c75d843fc69 -Author: Ondrej Filip -Date: Tue Jul 13 20:53:56 2004 +0000 - - Bugfix - RIP now updates routes with worse metric. - -commit bc956fcab678f591137cba2a0ebe80c0812437db -Author: Ondrej Filip -Date: Tue Jul 13 14:46:14 2004 +0000 - - MD5 authentication in OSPF works. :-) - -commit 32d3228d864cb6af8c679a7742f4b0a71c2facc0 -Author: Ondrej Filip -Date: Tue Jul 13 13:52:54 2004 +0000 - - Bugfix in simple authentification. - -commit 12dd8dc8779c13889a6860b769df7e0d68e7764c -Author: Ondrej Filip -Date: Tue Jul 13 12:21:24 2004 +0000 - - Bugfix - nasty bug in router LSA origination - Router did not describe all interfaces. - -commit 621ccdfe5acd2889956ec0f8e96b812acd09f168 -Author: Ondrej Filip -Date: Tue Jul 13 11:58:50 2004 +0000 - - Bugfix - options bits were not included in LSAs - Bugfix - E bit was not unset on stub areas. - -commit 9baece57d308d9e0d8eaab9d068471e1884817b8 -Author: Ondrej Filip -Date: Thu Jul 8 16:56:49 2004 +0000 - - Syntax bugfix. - -commit 69b27ed6fd7794d36852764319e4dad19d4b6f87 -Author: Ondrej Filip -Date: Thu Jul 1 15:01:44 2004 +0000 - - Length calculation bugfix. - -commit 02ad2737fd24573d870a5009a624c9b3c49aa176 -Author: Ondrej Filip -Date: Thu Jul 1 15:01:26 2004 +0000 - - Password WALK_LIST bugfix. - -commit bc4ea680cea9eca46cd2c5f41db91c3014f90167 -Author: Ondrej Filip -Date: Thu Jul 1 15:01:04 2004 +0000 - - Hello reading bugfix. - -commit ea357b8b6de387a55930a3fc831b8ccbcef24582 -Author: Ondrej Filip -Date: Sat Jun 26 22:52:39 2004 +0000 - - Update of the documentation. (passwords and md5). - Option for md5 auth in config. - -commit 3e2bd0f17aab3d2bd460d5f7aef4d3bc152ea1ab -Author: Ondrej Filip -Date: Sat Jun 26 20:15:34 2004 +0000 - - Md5 authentification added (unsested). - Packet receiving clean up. - -commit 5236fb03afecd3d7a6ec6e96712c79a31be32132 -Author: Ondrej Filip -Date: Sat Jun 26 20:11:14 2004 +0000 - - Password management redesigned (untested). - -commit 98ac61766d81d9f20c4a7c7e12859c3b82b24f4c -Author: Ondrej Filip -Date: Fri Jun 25 16:39:53 2004 +0000 - - A lot of changes: - - metric is 3 byte long now - - summary lsa originating - - more OSPF areas possible - - virtual links - - better E1/E2 routes handling - - some bug fixes.. - - I have to do: - - md5 auth (last mandatory item from rfc2328) - - !!!!DEBUG!!!!! (mainly virtual link system has probably a lot of bugs) - - 2328 appendig E - -commit 5ed68e46d781f8a14d3ef3ffd7fe3afc4a62260e -Author: Ondrej Filip -Date: Wed Jun 23 23:59:48 2004 +0000 - - Small typo changes. - -commit 973cf09c3b311691d063a00f52be7e9b8bdec376 -Author: Ondrej Filip -Date: Wed Jun 23 21:36:55 2004 +0000 - - Hotfix to problem with metric change reported by Luca. - -commit 3fe5f8990764b33cc0245317e90fbbcd0cde84de -Author: Ondrej Filip -Date: Wed Jun 23 21:34:26 2004 +0000 - - P->magic used just in LOCAL_DEBUG mode - -commit 09e4117cc19dd94efbdad6edde9bc7d715a58a9a -Author: Ondrej Filip -Date: Fri Jun 18 12:54:53 2004 +0000 - - sk_write bugfix for BSD. - -commit b4d8a0c280d34e6164a88d0e2f9ebf16fd5a1d68 -Author: Ondrej Filip -Date: Wed Jun 16 23:01:49 2004 +0000 - - Some cisco routers send shorter ospf messages in larger packets. - Well it's strange, but, actually it's correct. - -commit 1a61882d370e6aef99ebc11d6bbc4e9dc48c6b95 -Author: Ondrej Filip -Date: Fri Jun 11 09:36:50 2004 +0000 - - Better routing table calculation. We are ready to work with - multiple OSPF areas. - -commit b1f7229ad7d0b10fcc1fde6645c8b8ebbb3644a6 -Author: Ondrej Filip -Date: Fri Jun 11 09:34:48 2004 +0000 - - Better adjacency building, some minor bugfixes. - -commit 9a4b87905d727a518af04c16b8d7b603404098b7 -Author: Ondrej Filip -Date: Fri Jun 11 09:06:08 2004 +0000 - - Deleted RTS_OSPF_BOUNDARY - -commit 8bf684eca2de6ffd9ba797cad485e36db0b9548f -Author: Ondrej Filip -Date: Fri Jun 11 09:05:06 2004 +0000 - - RTS_OSPF_BONDARY is nonsense, RTS_OSPF_IA must have smaller id than RTS_OSPF_EXT - -commit 7df86c25fc6c871795265faebe02bf4dcecdd190 -Author: Ondrej Filip -Date: Wed Jun 9 12:39:49 2004 +0000 - - Better checking of configuration. - -commit b7e9c74cba36ed6932dbc30a4b9b0b9f9a06dba5 -Author: Ondrej Filip -Date: Mon Jun 7 16:51:23 2004 +0000 - - Used parameter can be marked as unused. :-) Thanx MJ. - -commit e02652a7d2e1f9bb599dbf9fa5862f03f4188efa -Author: Ondrej Filip -Date: Mon Jun 7 16:42:48 2004 +0000 - - Bugfix in RT calculation. - -commit 6721e2862bf69d3af7dd643cd9f442b76e134d5b -Author: Ondrej Filip -Date: Mon Jun 7 14:38:35 2004 +0000 - - Build and run both IPv4 and IPv6. - -commit ff61673427370c71d0a5f2d0d838f00ff46bbda1 -Author: Ondrej Filip -Date: Mon Jun 7 14:37:29 2004 +0000 - - Delete automate*cache. - -commit bf1b1b605b26202466f58b0572db5918acf8cf22 -Author: Ondrej Filip -Date: Mon Jun 7 13:07:12 2004 +0000 - - Let's go for release. - -commit 541cbe97633281b273ade8045b77834a5b6a1db4 -Author: Ondrej Filip -Date: Mon Jun 7 12:52:32 2004 +0000 - - It was too verbose. - -commit c90ac711bc5d1989dcb093088c74d062b43e9914 -Author: Ondrej Filip -Date: Mon Jun 7 10:42:24 2004 +0000 - - Cleanup in show route import

. - -commit 282997f21e6d40c840433128b198a19e9fdf41fb -Author: Ondrej Filip -Date: Mon Jun 7 10:00:29 2004 +0000 - - Some new warnings eliminated. - -commit 19d9e3033661b49cd4e4771166c45db2f1f24805 -Author: Ondrej Filip -Date: Mon Jun 7 09:52:15 2004 +0000 - - Marked unused parameters as unused. - -commit fb257e43fc23f9e0455444ef67c4be0dae22a713 -Author: Ondrej Filip -Date: Mon Jun 7 09:09:14 2004 +0000 - - Deleted some unused code. - -commit 5e3436d20ffdd95a164ffcb82f584fad76fb94e7 -Author: Ondrej Filip -Date: Sun Jun 6 19:53:52 2004 +0000 - - Cleanup in packet.c. Deleted unused parameters. - -commit d5d9693ce90c190ca7358b4ac71b9d034603a3ae -Author: Ondrej Filip -Date: Sun Jun 6 18:45:08 2004 +0000 - - Deleted unused parameters. - -commit e677d04aeb19e26da30e6a3ae94ad6e183d7af8e -Author: Ondrej Filip -Date: Sun Jun 6 17:20:16 2004 +0000 - - RPM is now able to build IPv4 and IPv6 bird. - -commit 41c8976e29bbf2986b063d1a8c5c8b386fae500e -Author: Ondrej Filip -Date: Sun Jun 6 17:05:25 2004 +0000 - - Test old instance of BIRD. - -commit cd09226078471cf9a2db4e755fbd5f6f137137c9 -Author: Ondrej Filip -Date: Sun Jun 6 17:03:56 2004 +0000 - - Be sure, that ospf_area is aged before routing table calculation. - -commit 933bfdde2a0bc4e31e74a3f9e03174b0287c03fb -Author: Ondrej Filip -Date: Sun Jun 6 16:14:57 2004 +0000 - - Keep al lSAs invalidated. - -commit 54a2178fd4c16189e7e0140c0a885b2cd6d2025e -Author: Ondrej Filip -Date: Sun Jun 6 16:05:14 2004 +0000 - - TODO updated. - -commit b8f17cf1923ff5894b6689479f7fb7d008b8ce44 -Author: Ondrej Filip -Date: Sun Jun 6 16:00:09 2004 +0000 - - Small cleanup, indentation and preparation for multiple areas routing table calculation. - -commit d631698ec8a63270f7ca9bc069508d1313a08f92 -Author: Ondrej Filip -Date: Sun Jun 6 14:27:11 2004 +0000 - - Indentation. - -commit d8d553cadfecab2a2f3d8a69624b5a743bd97ce3 -Author: Ondrej Filip -Date: Sun Jun 6 14:25:55 2004 +0000 - - This warning is stupid. - -commit 2e10a170fe70e405b5d6cb2cb53cd9a15de25b73 -Author: Ondrej Filip -Date: Sun Jun 6 09:37:54 2004 +0000 - - Indentation. - -commit 66261211a9c9abd5e1591f0875d16da1e3975fcb -Author: Ondrej Filip -Date: Sun Jun 6 09:13:37 2004 +0000 - - Struct area_net changed. - -commit b9ed99f738c10c0576a9ab8a70b028a92d0d74a7 -Author: Ondrej Filip -Date: Sun Jun 6 08:55:33 2004 +0000 - - Cleanup in iface.c - -commit a5918961f3a62c55857f811f712f861fa3d35d4f -Author: Ondrej Filip -Date: Sun Jun 6 08:12:42 2004 +0000 - - Be more verbose in troubles. - -commit 66004c91a89479abd3df89404afff62c5d60d4c3 -Author: Ondrej Filip -Date: Sat Jun 5 15:02:52 2004 +0000 - - Set size of the buffers. (Thanx MJ.) - -commit 9831e5916f6956377739f948869d377b091f5c92 -Author: Martin Mares -Date: Sat Jun 5 09:58:23 2004 +0000 - - Staticized lots of local functions. - -commit 598b984d1f04ea71fc04bc89f390f230a3960680 -Author: Martin Mares -Date: Sat Jun 5 09:58:06 2004 +0000 - - One less unused variable. - -commit 2f6de49f8c4d9c7ebd12554d386037e5b063beda -Author: Martin Mares -Date: Sat Jun 5 09:57:49 2004 +0000 - - Better prototypes. - -commit 54c411f6afeafb88649c565d252ab0245266eeee -Author: Martin Mares -Date: Sat Jun 5 09:57:35 2004 +0000 - - Add more warnings if --enable-warnings is turned on. (probably requires - gcc-3.0 or newer, but I hope it's OK) - -commit 189dab54a211d2d92148d2aae7130df3a080e7c8 -Author: Martin Mares -Date: Sat Jun 5 09:29:38 2004 +0000 - - `defaut' should be `default'. - -commit 1512813e95a7edd2fad2834221dc1cb79aab6406 -Author: Martin Mares -Date: Sat Jun 5 09:28:17 2004 +0000 - - ... and a whole bunch of unused parameters and variables in ospf. - -commit c91fc9b6064e988e7526ecedd6b9e25f0204c4b7 -Author: Martin Mares -Date: Sat Jun 5 09:27:49 2004 +0000 - - ... and in rip (there are even unused functions!). - -commit 662faa4afc4d2f29bb884d0c7ad0aca9fc7de7c9 -Author: Martin Mares -Date: Sat Jun 5 09:27:35 2004 +0000 - - ... in pipe. - -commit e21423bab8a7cfc1cf5d13ab77ebebfae8ce156e -Author: Martin Mares -Date: Sat Jun 5 09:27:17 2004 +0000 - - ... in BGP. - -commit fab37e81971a08b550c6d63ff11f0bf34f0a9aa2 -Author: Martin Mares -Date: Sat Jun 5 09:27:02 2004 +0000 - - One more in the library. - -commit 6ecd20605c62e91069ecd014374836d8392ae948 -Author: Martin Mares -Date: Sat Jun 5 09:26:55 2004 +0000 - - ... and in the filter. - -commit d7390312d4e322e0dac3fefddd6033cb255933a4 -Author: Martin Mares -Date: Sat Jun 5 09:26:48 2004 +0000 - - Unused parameters in the client. - -commit 6578a60493f9dbf83d6485ac99635094bef2af7d -Author: Martin Mares -Date: Sat Jun 5 09:11:07 2004 +0000 - - Marked unused parameters in sysdep code as such. - -commit 7c103b1ee17a274fa062fcf4b14234b48db8123a -Author: Martin Mares -Date: Sat Jun 5 09:10:56 2004 +0000 - - Marked unused parameters in core code as such. - -commit e98bc2ea9b957287e78bc51e3293fc48a49c26b2 -Author: Martin Mares -Date: Sat Jun 5 09:05:12 2004 +0000 - - Renamed log() to log_msg(), but still keeping the old name as a macro. - This is done to avoid clashes with gcc-3.3 which has built-in logarithms :) - -commit 5da8f82feb14512725e09664f6db96f03e3ece8f -Author: Martin Mares -Date: Sat Jun 5 09:01:12 2004 +0000 - - A better comment. - -commit c33d4cad9fbfb0b2a4b3ee699943d9955bcd9e3e -Author: Martin Mares -Date: Sat Jun 5 08:59:17 2004 +0000 - - Moved the tests for socket existence here. - - BTW, where do you exactly set the new buffer sizes? - -commit 4da25acb0ab964826f133025493a9b80d8bef509 -Author: Martin Mares -Date: Sat Jun 5 08:56:43 2004 +0000 - - Cleaned up sk_reallocate() and friends. - Also, removed the `if (s)' test, because I believe that as the whole - socket interface doesn't accent NULL pointers, sk_reallocate() shouldn't - be the only exception. - -commit c6bdc78befaf5ae9e5e3c58a8df1301d5cafd4e7 -Author: Ondrej Filip -Date: Fri Jun 4 21:19:47 2004 +0000 - - Be more verbose. - -commit 6f3203fabf30b0e5ca7d41b4550efbc5df0b421a -Author: Ondrej Filip -Date: Fri Jun 4 21:05:43 2004 +0000 - - cleanup in lsupd.c, indenting, "struct proto" removed... - -commit 9b7de4c4d13a5701aac446627672e65fce9e1a9d -Author: Ondrej Filip -Date: Fri Jun 4 20:41:02 2004 +0000 - - 'struct proto' removed - Finally, I found the bug reported by Andreas Steinmetz. FIXED. - -commit 54467ed46b31e29215e50d32b0a757998de29793 -Author: Ondrej Filip -Date: Fri Jun 4 19:53:36 2004 +0000 - - Useless logs removed. - -commit 551e30886d7ed156d3fe98cc9562ffa2c22e4ce3 -Author: Ondrej Filip -Date: Fri Jun 4 19:21:19 2004 +0000 - - Bugfix in last patch. - -commit e7ef86a58cc5393ba764606b0ee6d760e6164f0c -Author: Ondrej Filip -Date: Fri Jun 4 18:51:29 2004 +0000 - - OSPF is ready for changing MTU. - -commit f158bb710b8be65b626f54399c8a5db8df9bd7b6 -Author: Ondrej Filip -Date: Fri Jun 4 18:24:15 2004 +0000 - - no comment - -commit 12bed559ffaccc7093188722899e4ac85521777e -Author: Ondrej Filip -Date: Fri Jun 4 17:49:25 2004 +0000 - - dbdes indent an minor changes. - -commit 85305e5d8f7137dc5ce4572d72e80ad186792b37 -Author: Ondrej Filip -Date: Fri Jun 4 17:32:38 2004 +0000 - - typo in README - -commit 874654076a9e3d2c36a248b3d3a4066dff76276b -Author: Ondrej Filip -Date: Fri Jun 4 17:31:03 2004 +0000 - - better log() usage. - -commit 27f49a2c3c2a86b4822ff1980d751666ed8cee97 -Author: Ondrej Filip -Date: Fri Jun 4 17:28:41 2004 +0000 - - lsreq.c indented and small 'struct proto' changes. - -commit 77539c4471d4b3f19347d2efc99680f815e1c78a -Author: Ondrej Filip -Date: Fri Jun 4 17:12:27 2004 +0000 - - hello.* reindented, code cleanup. - -commit 8e15e048f2e14dcdd9915860feace487e4ae07d5 -Author: Ondrej Filip -Date: Fri Jun 4 17:05:24 2004 +0000 - - Deleted useles "struct proto" sending. - -commit 7a03e29d5c7ff07c907ed0d4c4f1c226eba5941d -Author: Ondrej Filip -Date: Fri Jun 4 16:56:54 2004 +0000 - - Better log() usage. - -commit fb9bf6888c75adb88e5a8818161b89b207cf1f9f -Author: Ondrej Filip -Date: Fri Jun 4 16:55:53 2004 +0000 - - Indented. No other change. - -commit c76ba51a5fc7d61e18213f99d9c09502af0bc192 -Author: Ondrej Filip -Date: Fri Jun 4 16:30:04 2004 +0000 - - lsack.c cleaned. Better names for functions and - DIRECT acks can be sent in one packet now. - -commit 28de5133ecdcb5b45dc251123047164fbb940e50 -Author: Ondrej Filip -Date: Fri Jun 4 15:45:35 2004 +0000 - - ackd_timer_hook moded to neighbor.c - -commit d03e8ce00b8fea374bbc06a4eb5254e911557e83 -Author: Ondrej Filip -Date: Fri Jun 4 15:26:46 2004 +0000 - - Fatal bug found. Sometimes BIRD did not originate router LSA. FIXED. :-) - -commit b90f9c526e553f1c30b9b177fc72c382ab333fc7 -Author: Ondrej Filip -Date: Fri Jun 4 14:23:58 2004 +0000 - - Initialize iterator on the right place. - -commit 18b40a40726bf6ec03e496a068faa8d173c27dd8 -Author: Ondrej Filip -Date: Fri Jun 4 14:23:21 2004 +0000 - - This can happen now. - -commit f9fdabe4f68685e6244e88524b2526958c56e44d -Author: Ondrej Filip -Date: Fri Jun 4 14:22:30 2004 +0000 - - Small reversing of previous patch. - -commit 3df1e80464ce5e6cea1b9a9500d1adbfe59cd564 -Author: Ondrej Filip -Date: Fri Jun 4 14:21:08 2004 +0000 - - Don't repeat "Sheduling rt calc....." - -commit d6c28f3ada7d2da8e762a1ed8e4fb70dfce2ca6f -Author: Ondrej Filip -Date: Fri Jun 4 14:03:30 2004 +0000 - - Code and comments cleanup. - -commit 39e517d47c6070dd81bb7d6f57358ea98e462f03 -Author: Ondrej Filip -Date: Fri Jun 4 12:53:10 2004 +0000 - - hello.c and hello.h cleaned up. No design changes. - -commit 591656cdd5b13a4626dfb26e45dd02690cdb450c -Author: Ondrej Filip -Date: Thu Jun 3 08:18:49 2004 +0000 - - Added source addr for multicast socket. - -commit 7d72aadb8acfac16e9b637e6ebb5ce288ebf1d77 -Author: Ondrej Filip -Date: Thu Jun 3 08:18:14 2004 +0000 - - CONFIG_SKIP_MC_BIND added. - BSD hates it, Linux needs it. - -commit cb4dd4e2f78f806438bfb8163b783ac7b2f43b2d -Author: Ondrej Filip -Date: Wed Jun 2 15:14:49 2004 +0000 - - Deleted useless rfree. (Socked was freed by cli_free()) - -commit 9b133458891724da2fd22f2a16ae19376e225ca0 -Author: Ondrej Filip -Date: Wed Jun 2 09:14:03 2004 +0000 - - Hotfix for router's parent without nexthop. - It will probably work perfect, but I need to eliminate such situation. - -commit f9625e9acabbdc5834f528e6fe1b87b8f4ce4968 -Author: Ondrej Filip -Date: Tue Jun 1 14:06:25 2004 +0000 - - Bugfix in external routes calculation. - -commit 7048461df113b335b9cfc56c517bc5802ef7b6c8 -Author: Ondrej Filip -Date: Tue Jun 1 13:58:39 2004 +0000 - - Code clean up. - -commit e8bf6c0766dba95c4b7ebb8b29dad31392f212b7 -Author: Ondrej Filip -Date: Tue Jun 1 13:44:53 2004 +0000 - - Easier cleanup of an interface. - -commit c9f6cf8a05aba6a79bfb57120ca48adcf8e3949d -Author: Ondrej Filip -Date: Tue Jun 1 13:29:08 2004 +0000 - - Don't free socket's resources. - -commit 035f6acbfec1e06a207217ae81153b67ced995f3 -Author: Ondrej Filip -Date: Tue Jun 1 13:12:10 2004 +0000 - - Patch from Andreas Steinmetz - -commit 8281ff201e1eebe35cb8e7716565361bed77a6cd -Author: Ondrej Filip -Date: Tue Jun 1 12:57:13 2004 +0000 - - Reverting last patch. - -commit 77772dbc6555dfb9aa76c812bcd1792ab503cbe1 -Author: Ondrej Filip -Date: Tue Jun 1 10:55:10 2004 +0000 - - Caching loopback interface. - -commit a8bb459a3f8769501726ef25e696ea127014383f -Author: Ondrej Filip -Date: Tue Jun 1 10:53:30 2004 +0000 - - log->DBG - -commit 1554cc02826794007c113bc336ed574bb771343f -Author: Ondrej Filip -Date: Tue Jun 1 10:45:28 2004 +0000 - - Minor changes caused by MJ's comment. - -commit b613b9928bdb1df3bd541d318d7f9c1bf492dfbc -Author: Ondrej Filip -Date: Tue Jun 1 10:32:02 2004 +0000 - - #ifdef CONFIG_UNIX_DONTROUTE added. - -commit 7fdd338c3600aa4e7a0ae3d5ce270b5a1f8ccc0c -Author: Ondrej Filip -Date: Tue Jun 1 10:28:25 2004 +0000 - - ALIGN -> BIRD_ALIGN - -commit 22122d4d4c43c2c64a37aae597b4d439a6bfa268 -Author: Ondrej Filip -Date: Tue Jun 1 10:10:09 2004 +0000 - - Now, only one AC_OUTPUT is used. - -commit 402a9fa78a9849dbbefcbea81cd9cf7c8ab87c22 -Author: Ondrej Filip -Date: Tue Jun 1 09:10:11 2004 +0000 - - Useles log()s deleted. - -commit e85bd57a0e106c7ae3fc44dccf9bac89e2f9939e -Author: Ondrej Filip -Date: Tue Jun 1 09:07:16 2004 +0000 - - bzero has 2 arguments. - -commit b88a1d4040df6bcd49eefe1c2c1ba8fa66ad0d43 -Author: Ondrej Filip -Date: Tue Jun 1 08:59:47 2004 +0000 - - memset -> bzero - -commit fa643be1cc6973923a46ac52a20ccec2ec5e3f18 -Author: Martin Mares -Date: Mon May 31 22:24:42 2004 +0000 - - Updated the distribution script. - -commit bb68ad2fd34dc6ab8723ae1c9c37f9dc19ed85ea -Author: Martin Mares -Date: Mon May 31 22:22:21 2004 +0000 - - Documented the pxlen parameter. - -commit 3810eccf6bc5af413d883fd298d59e0d7bdb96ea -Author: Martin Mares -Date: Mon May 31 22:16:54 2004 +0000 - - Added a simple utility for converting CVS log messages to a reasonable - changelog format. - -commit ea0ac8f69aec4eff8109eb3d74cc0ca5a330fa58 -Author: Martin Mares -Date: Mon May 31 22:00:18 2004 +0000 - - Move CLI socket to the newly created CLI's pool. - - (thanks to Andreas for the original idea) - -commit 38a608c55af7654f23c9a16129ab6211aac3b7ab -Author: Martin Mares -Date: Mon May 31 21:48:19 2004 +0000 - - Rewritten the I/O loop. All socket operations are now safe, meaning that - you can delete the socket from anywhere in the hooks and nothing should break. - Also, the receive/transmit buffers are now regular xmalloc()'ed buffers, - not separate resources which would need shuffling around between pools. - - sk_close() is gone, use rfree() instead. - -commit 206f59dfa8e59e32f4aef12dacb0804581b9f602 -Author: Martin Mares -Date: Mon May 31 21:02:09 2004 +0000 - - Added UNUSED. - -commit 6a57bb311018570b6ee7beccafd2075108e346cb -Author: Martin Mares -Date: Mon May 31 20:57:38 2004 +0000 - - Killed a couple of unused variables. - - We really should compile with warnings enabled. - -commit d83faf8dc441259183d87c6669e76e4addc61b21 -Author: Martin Mares -Date: Mon May 31 20:53:22 2004 +0000 - - static declarations don't belong to includes. (And most of them were - redundant anyway.) - -commit 7deffd845a0f2bfe4cebbb01e0505314af32693a -Author: Martin Mares -Date: Mon May 31 20:51:45 2004 +0000 - - Need for tcdrain(). - -commit 9f387e11a319ea55104c6e8362f9820bf1b00097 -Author: Martin Mares -Date: Mon May 31 20:49:11 2004 +0000 - - Make the check for work with recent libc's. - -commit 0757bcb728c8bd56fa03ea296862d62e05f6ba09 -Author: Martin Mares -Date: Mon May 31 20:35:19 2004 +0000 - - One space more. - -commit 2cc37815ae1f194c5a0c51e5761377caea9cc164 -Author: Martin Mares -Date: Mon May 31 18:47:19 2004 +0000 - - Added rmove() (by Andreas, tweaked by me). - -commit 0077aab4f9041e4d05d2d6916edfb0e15738cb37 -Author: Martin Mares -Date: Mon May 31 18:16:42 2004 +0000 - - The code was broken for external /29 to /32 routes. Assuming that you - have one machine publishing a route to 10.1.1.3/32 and another one - publishing a route to 10.1.1.4/32. If the first machine went down the - route to 10.1.1.4/32 was wrongly killed by the old code, leading either - to missing routes or worse to bug()s like "Router parent does not have - next hop" or just segfaults. The patch fixes this but in the long term a - redesign is required here. Note that the patch doesn't worse the - situation, instead it prevents the problems stated. The redesign is - required to handle multiple routes to small subnets properly. - - (by Andreas) - - Feela, I think that this is at least a good temporary fix, but it's - of course up to you to decide. - -commit 4ef3dccfa112faddf79fed76a539353b705702b5 -Author: Martin Mares -Date: Mon May 31 18:13:14 2004 +0000 - - The OSPF authentication type was sent in host byte order instead of of - network byte order thus breaking interoperability with other routing - daemons on litte endian machines. The patch fixes this but note that - this breaks compatability with older bird installations using OSPF and - password authentication - - (Andreas) - -commit 3cb96cd343196baabf847f5d670711162e66e298 -Author: Martin Mares -Date: Mon May 31 18:11:16 2004 +0000 - - The initial sequence number for RIP md5 authentication was always zero. - Bad as when bird e.g. was running for two weeks and then restarted it - would take another two weeks until the peers of this router would accept - data again from this router, as the sequence number would be too low. - Changed to use the the current system time as the starting sequence - number which is a more sane start value. - - (by Andreas, cleaned up by me) - -commit 277a34eff195fe39a63db59731f5f2c8d54abdb2 -Author: Martin Mares -Date: Mon May 31 18:08:50 2004 +0000 - - Small correction to va_start/va_end in cli_printf (va_end was missing). - - (Andreas) - -commit 5f2a6a9ff324d846c86ffafb60ae5a4c01d06313 -Author: Martin Mares -Date: Mon May 31 17:55:30 2004 +0000 - - Fix handling on full pipe to client in bird. Prevent packet overflows - for even only medium sized route table output. Fix a strange garbled - output problem in the client. The latter seems to be caused by some - library doing tcflush while there is still command output pending. So - the best fix here is to do fflush and then tcdrain. Note that this - problem occurs only under certain load situations and is not too easy to - reproduce. - - (by Andreas) - -commit a4ffe2739d1a3efb45f209b63b2b6faa558e43a9 -Author: Martin Mares -Date: Mon May 31 17:53:02 2004 +0000 - - Bird's control socket should be in /var/run and the convention for - --localstatedir is /var. The control socket pathname creation is thus - corrected here. - - (Andreas) - -commit 03e3d184b2d8fac4c82408b1ac1738cb7af5680e -Author: Martin Mares -Date: Mon May 31 17:44:39 2004 +0000 - - Fix bison input for current build tools, otherwise bison or the compiler - will abort the build. - - (by Andreas) - -commit 4a02013767ab05b9cf7567c09e5fad59c9bd1c10 -Author: Martin Mares -Date: Mon May 31 17:42:38 2004 +0000 - - Make RIP nolisten mode actually work. The socket is required for - sending, the received data has to be discarded instead. - - (patch by Andreas Steinmetz modified by me) - -commit 1bd897dd33a49bd03f661e84687f8bba25af2983 -Author: Ondrej Filip -Date: Mon May 31 17:27:21 2004 +0000 - - Changed of comments. - -commit 10af3676ea4268452776acd7b06a95c72d71f2e0 -Author: Ondrej Filip -Date: Mon May 31 17:16:47 2004 +0000 - - Grrr, committing too fast. - #include "alloca.h" -> #include "lib/alloca.h" - -commit 7dbd4fd332bb614db858944da86b29c86d9b1d81 -Author: Ondrej Filip -Date: Mon May 31 17:13:58 2004 +0000 - - alloca.h added - -commit 0e6eef620d4b838fc558711cd2d5572ec7a576c2 -Author: Ondrej Filip -Date: Mon May 31 17:07:05 2004 +0000 - - Use #include "alloca.h" - -commit c222500d8e098f0504405724b56676a2efc0861f -Author: Ondrej Filip -Date: Mon May 31 17:00:22 2004 +0000 - - Previous change was mistake. - -commit 6f18235aad187ed9e2afbb166b34c5cc3765b430 -Author: Ondrej Filip -Date: Mon May 31 16:42:12 2004 +0000 - - Useless include deleted. - -commit f54fa9e15dce42b8c80b7ea95ab2653cc5be4e4e -Author: Martin Mares -Date: Mon May 31 16:10:01 2004 +0000 - - Updated copyright notices. - - Also testing whether syncmail works. - -commit 73219ecfecbf2851e1a3b6c4a1084b2eaa6d159c -Author: Ondrej Filip -Date: Mon May 31 15:13:56 2004 +0000 - - Delete autom4te.cache in 'make distclean'. - -commit 6de62923120c1dba8461aed8aed95eff433fcf4a -Author: Ondrej Filip -Date: Mon May 31 15:08:29 2004 +0000 - - Better readline checking. - -commit 012279f395a7cb87a3085b6c4674777da7ee9661 -Author: Ondrej Filip -Date: Mon May 31 13:59:03 2004 +0000 - - Some include added. - -commit d93fb7e6b9a1d2964bc926ca9ed7ab11f5003c1d -Author: Ondrej Filip -Date: Mon May 31 13:58:38 2004 +0000 - - #ifndef ALIGN - it is defined on *BSD - -commit a60277b9997a891fdc5d62e07ac96885c009f531 -Author: Ondrej Filip -Date: Mon May 31 13:35:06 2004 +0000 - - Added RTD_NONE /* Just for internal use */ - -commit 0c745adc8003ac816be15e2246fa4685e127d120 -Author: Ondrej Filip -Date: Mon May 31 13:34:20 2004 +0000 - - #ifdef ALLOCA_H - -commit bd62eeca27aba7da34a65a8f039d1b011115ddca -Author: Ondrej Filip -Date: Mon May 31 13:32:58 2004 +0000 - - Small change to compile client on FreeBSD. - -commit b1a1fabac70201e9b05aeb9fd6af703f0fbffdb4 -Author: Ondrej Filip -Date: Mon May 31 13:25:00 2004 +0000 - - *BSD port added. (Tested on FreeBSD and NetBSD) - -commit 781aa475aaa7503d4a86f0d4b8771cd027d30c04 -Author: Ondrej Filip -Date: Mon May 31 13:22:49 2004 +0000 - - Minor bug fix in neighbor state machine. - -commit de259a41e3175d4080d5a33a39f0279308a25b56 -Author: Ondrej Filip -Date: Mon May 31 10:38:44 2004 +0000 - - Minor bug in configuration. - -commit 7cb37e6fd2d9fb5723d6f680d0e064e4ba9c6091 -Author: Ondrej Filip -Date: Mon May 31 10:26:18 2004 +0000 - - Added some more test (alloca.h, sa_len) etc. - Add AC_OUTPUT before AC_OUTPUT_COMMANDS - -commit caeb02ea19b8b3b04bc9705d5270954bfc21cab6 -Author: Ondrej Filip -Date: Wed May 19 12:30:58 2004 +0000 - - Bug in DBDES receiving fixed. - -commit 502ded521508a402910b2bf8f23f2e34f79f91cb -Author: Martin Mares -Date: Sat Dec 6 16:41:11 2003 +0000 - - Fix reporting of RIP socket errors. Thanks to Eric Leblond for the patch. - -commit 37299f1e442f5ca23fd9124d9645096c5a6f7536 -Author: Ondrej Filip -Date: Tue Sep 30 17:05:55 2003 +0000 - - OSPF was not able to be built stand-alone. - -commit 00bd27a1cc8eee6df626a7441cc548e82bf42c4c -Author: Ondrej Filip -Date: Sun Sep 14 13:41:24 2003 +0000 - - Endianity problem fixed. Thanx to Srs Jzsef - -commit 35a86ceb4082d8d31e6949f8d454eaa28c498a86 -Author: Ondrej Filip -Date: Wed Sep 3 17:31:23 2003 +0000 - - This prevents infinite loop when bird has more that 60 neighbors. Thanks to Rani Assaf - -commit bf135bcb1feca7b9ee35342c239ed3a66415d854 -Author: Ondrej Filip -Date: Mon Sep 1 08:46:07 2003 +0000 - - Prepared for release 1.0.8. - -commit c11007bc423188872d37e277fe4637094a40d90f -Author: Ondrej Filip -Date: Tue Aug 26 10:41:02 2003 +0000 - - Endian-related bug fixes sent by Krzysztof Szuster - -commit 1d1a3c1c2a72ef91b785f5ed08ca5ab3f001b14e -Author: Ondrej Filip -Date: Sat Aug 23 10:47:46 2003 +0000 - - Minor OSPF changes for faster startup. - -commit baa5dd6ccc14eb6bc43fad37a2bfe88ad190c0fa -Author: Ondrej Filip -Date: Sat Aug 23 10:42:41 2003 +0000 - - Many spelling mistakes fixed. - - Thanks you Harry Moyes. - -commit c197d44e1790ab1738cf9e438c2c91bd74e9b94e -Author: Martin Mares -Date: Wed Aug 13 22:07:55 2003 +0000 - - This probably IS the memory leak we're looking for. Alien routes weren't - correctly disposed of. - -commit 13b75bacf7221eb655dcbed54e3c3605bea5169e -Author: Martin Mares -Date: Wed Aug 13 20:04:39 2003 +0000 - - protocol->import_control() could potentially call rte_cow() as well. - AFAIK it doesn't happen in any of our protocol, but better be sure. - -commit 2adab6ae9cc586871a8854e51452839cb1dd1db0 -Author: Martin Mares -Date: Wed Aug 13 19:31:22 2003 +0000 - - This was a potential memory leak, but not the one Feela observed. - - This one could happen when an import filter of some protocol modified - the rte (so that it would be rte_cow()ed) and later rejected it. - -commit b77834b3f41e551adc045d23f387533d428349ae -Author: Martin Mares -Date: Sun Apr 6 21:36:35 2003 +0000 - - Slept for a year :-) - -commit c153ee91373438095ae6ec18e2dfb9f334d2dfe6 -Author: Martin Mares -Date: Sun Apr 6 19:52:22 2003 +0000 - - Nobody is perfect. Me twice :) - -commit 8edd56bded8ffc7fabbce690133892de6dcd5f62 -Author: Martin Mares -Date: Sun Apr 6 19:49:17 2003 +0000 - - Oops, forgot to change some paths. - -commit d02b7a738eb94d031b106319f3af259717c80fe0 -Author: Martin Mares -Date: Sun Apr 6 19:49:02 2003 +0000 - - More news. - -commit f2c642e0e5c266f8b955cfa5aec785c3f96c5ed5 -Author: Martin Mares -Date: Sun Apr 6 19:46:42 2003 +0000 - - We're 1.0.6 now. - -commit 0e41e34a231198498289e367b93b3e9b99d5eb2e -Author: Martin Mares -Date: Sun Apr 6 19:45:55 2003 +0000 - - Avoid problems with copying a directory to itself. - -commit f240a133b32db88c98ad5a7f9d72fdb909311af6 -Author: Martin Mares -Date: Sun Apr 6 19:42:28 2003 +0000 - - Releasing version 1.0.6. - -commit 9c7631235ac174ebd33a3e04e07211b3ae8501f6 -Author: Martin Mares -Date: Sun Apr 6 19:35:50 2003 +0000 - - Updated the documentation building tools to work with a recent linuxdoc-tools package. - - Note that this is (and always was) a terrible hack and we really should - replace it with something reasonable which wouldn't need changing every - time linuxdoc-tools evolve. - - I also needed to include a patched version of LinuxDocTools.pm, because the - original one explicitly refused to work with a non-linuxdoc DTD. The authors - of linuxdoc recommend to use sgmltools-lite in such cases, but it would mean - rewritting our formatting rules to the DSSSL language which I don't dare to - speak about here :) - -commit a9aa5887f3b9b43d9a3a5617ef9176da936ce35f -Author: Martin Mares -Date: Sun Apr 6 18:55:37 2003 +0000 - - Added release history. - -commit 8cf76fa8536e52a5c90d500ac1d74f49d87e905d -Author: Martin Mares -Date: Sun Apr 6 18:38:01 2003 +0000 - - Bug fixes to authentication code by Eric Leblond . - -commit d85e1f0e2f389d273ff14e89faced390b76d842b -Author: Martin Mares -Date: Thu Feb 27 10:48:30 2003 +0000 - - Prefix comparison bug (hopefully) fixed. - -commit 6ea8ca1469a9c9150a4e0be9f8e6ab025eee990a -Author: Martin Mares -Date: Sun Feb 23 10:22:04 2003 +0000 - - Updated a comment. - -commit abf06173a3d84559dd26d2a78a1e5df9656a4d80 -Author: Martin Mares -Date: Sat Feb 22 23:06:32 2003 +0000 - - Current Linux kernels don't remember rtm_protocol for IPv6 routes and supply RTPROT_BOOT instead. - Work around that. - -commit 11d4474c17e76e9811dcb32f555fa1c6f3684fab -Author: Martin Mares -Date: Sat Feb 22 22:47:45 2003 +0000 - - Better selection of link-local NLRI addresses, at least for our own - address. Need to do it better for the other neighbors -- the current - solution works only if they use the standard 64+64 global addresses - and the interface identifier in lower 64 bits is the same as for the - link-scope addresses. - -commit 7b7a7b43a6915efbe9180f07cd1284a39efacf02 -Author: Martin Mares -Date: Sat Feb 22 22:39:06 2003 +0000 - - There can be multiple primary addresses with different scopes - and only the highest scope one has IA_PRIMARY set, so report - the remaining ones as "Unselected". - -commit 8001948b43c9367e86473630f58527249d7da04f -Author: Martin Mares -Date: Sat Feb 22 22:38:15 2003 +0000 - - Report link-scope addresses as well. - -commit 8c92bf6a0ddc21f2fa19c195a73d43837f60fc23 -Author: Martin Mares -Date: Sat Feb 22 10:40:35 2003 +0000 - - Temporary fix for BGP protocol capability announcement for IPv6 mode. - -commit 60a72ed49b36aea732d3584527040a7b3b0e72e0 -Author: Martin Mares -Date: Sat Feb 22 10:25:22 2003 +0000 - - Fixed length check miscalculation in IPv6 receive path. - -commit 47f18ac39a313cf213b43320557239c5d0855a11 -Author: Martin Mares -Date: Wed Nov 13 08:47:19 2002 +0000 - - ABS should be a macro. - -commit 7d875e094bbbb9d4b234e31fe08f31510ac1d7d0 -Author: Martin Mares -Date: Wed Nov 13 08:47:06 2002 +0000 - - Added missing includes. - -commit de10a974f2e2e8a11b6a6852cd770c1096e1c25d -Author: Martin Mares -Date: Wed Nov 13 08:46:12 2002 +0000 - - Added missing semicolons. - -commit 59b96d7b4d8a055aa77917099b358cfc7b5e0731 -Author: Martin Mares -Date: Wed Nov 13 08:45:24 2002 +0000 - - Don't use obsolete functions which are no longer declared in the header. - -commit a19cd811000902facceff5a30facf7dba9cb2095 -Author: Martin Mares -Date: Wed Nov 13 08:30:56 2002 +0000 - - Added missing #include and wondering how could it ever compile. - -commit 19bd5c8e2c0fd47ff27668b8c45acc79f4d703b4 -Author: Pavel Machek -Date: Sat Sep 21 13:57:48 2002 +0000 - - Password does not need to be null-terminated, do not print garbage in - such case. Thanks to silvio@big.net. - -commit 4ca0d0847e015bbecf6db3cec8f3ce57c2d8035c -Author: Ondrej Filip -Date: Wed Apr 3 15:41:05 2002 +0000 - - Small typo fixed. - -commit 53a50af50427e2fedc4bbfeca7a5934a798a3827 -Author: Martin Mares -Date: Sun Mar 10 12:32:12 2002 +0000 - - Applied Pavel's fix for broadcast/multicast mode. - -commit e59e310e6435c6c72b585c6f4b5e6c9bbd006553 -Author: Ondrej Filip -Date: Mon Mar 4 15:54:39 2002 +0000 - - Age LSA DB after LSA origination and before routing table calculation. - -commit 025b0e856a85dcae755e97922febc190145ba89c -Author: Ondrej Filip -Date: Mon Mar 4 15:52:40 2002 +0000 - - New trace added. - -commit b78696282de32a202a9bed304f8edf044833f36f -Author: Ondrej Filip -Date: Fri Dec 7 17:34:09 2001 +0000 - - Bugfix in router importation. - -commit 30c34a10797c2773a0b99e71b22f111ee2a7f980 -Author: Ondrej Filip -Date: Fri Dec 7 17:10:49 2001 +0000 - - Small bugfix in RIP documentation. - -commit 8e32493c56a49f10a6949985d5b0bb4dbcbe204d -Author: Ondrej Filip -Date: Tue Aug 21 17:00:15 2001 +0000 - - Removed some useless (hope!) code in next hop calculation. - -commit 68db89a2ce35a96aef827f4e86c5dfd82842f9d7 -Author: Ondrej Filip -Date: Tue Aug 21 16:44:57 2001 +0000 - - Finally, next hop problem fixed. - -commit 37da55168cdb0f562266eff4b821f6e576d93931 -Author: Ondrej Filip -Date: Tue Aug 21 15:03:42 2001 +0000 - - Useless trace. - -commit e8ab16803065894497dd306c941b0815fac5b25a -Author: Ondrej Filip -Date: Tue Aug 21 15:00:29 2001 +0000 - - Hope, bug in next hop calculation for stub routes fixed. - -commit e43ae6330eaf349eafe6820465c85266eef80e07 -Author: Martin Mares -Date: Sun Aug 19 11:15:24 2001 +0000 - - Fix %I format strings. - -commit 30b773041c37d10649a16d5f28af00a25871aac7 -Author: Martin Mares -Date: Sun Aug 19 11:11:44 2001 +0000 - - IP address formatting now uses the same rules as formatting of strings - with two exceptions: - - o Any non-zero field width is automatically replaced by standard - IP address width. This hides dependences on IPv4/IPv6. - o %#I generates hexadecimal form of the address. - - Therefore |%I| generates unpadded format, |%1I| full size flush-right, - and |%-1I| full size flush-left format. - -commit 16319aebd30da5161bed95d72094250228a7f61c -Author: Ondrej Filip -Date: Sun Aug 12 00:09:47 2001 +0000 - - Dokumented switch network. - -commit c926eee72471d8127ff833548b0ce1f8cb6de276 -Author: Ondrej Filip -Date: Sun Aug 12 00:04:42 2001 +0000 - - Area networks added into configuration. - -commit b2bdb4065667f466575b831f4a3166bd309d9d14 -Author: Ondrej Filip -Date: Sat Aug 11 16:22:29 2001 +0000 - - Changed definition of stub area. - -commit 85062e8a600cc7896b8bcaf3960bb782aa9f2ff0 -Author: Ondrej Filip -Date: Sat Aug 11 14:40:51 2001 +0000 - - Bugfix in B-bit setting in router LSA. - -commit 78e2c6ccf16b41bc19a4cd69f959c8ae47e68b9d -Author: Ondrej Filip -Date: Sat Aug 11 14:01:54 2001 +0000 - - I will not originate the same lsa before MINLSINTERVAL. - -commit 5fc7c5c51344a8cc1fae2cc9077c2c331c1e419a -Author: Martin Mares -Date: Fri Aug 3 08:44:51 2001 +0000 - - Don't loop forever when trying to skip an out-sequence netlink reply. - -commit 24c00cb11915edb8c13dbc21f245a73fc34689ed -Author: Ondrej Filip -Date: Tue Jun 12 21:10:30 2001 +0000 - - Install route into main routing table just if it's necessary. - -commit c48b33292b6d39cdacd642565907c0d5b90adc68 -Author: Ondrej Filip -Date: Sat Jun 9 15:13:38 2001 +0000 - - Yes, 1.0.5 released. - -commit 87c450dffcbcc76270c95b4c923838445cd6816b -Author: Ondrej Filip -Date: Sat Jun 9 14:56:01 2001 +0000 - - Added comments. - -commit e9d3c3aaea24724c285027154bd9f5ddef8394e0 -Author: Ondrej Filip -Date: Sat Jun 9 14:55:10 2001 +0000 - - Bug in next-hop calculation fixed. (For dual connected neighbors.) - -commit ea31425a6191f0b3e181f8a1c7368fc4dfca24b4 -Author: Ondrej Filip -Date: Mon Apr 9 19:15:03 2001 +0000 - - Patch from David Rohleder thanx. - -commit 01b776e117d21ccfef996fd91c014c6e14a458a7 -Author: Martin Mares -Date: Tue Mar 6 13:40:39 2001 +0000 - - Fixed vs. problems. - -commit 27e993fb4ecc310a83da3a74b21b15c32c207a09 -Author: Martin Mares -Date: Tue Feb 20 09:49:19 2001 +0000 - - Fixed duplicity in log category numbering. - - Thanks to Zheng Yuan for spotting this. - -commit 4d04187465fdeb3fb755b4d01ec640bbe0e36eb9 -Author: Martin Mares -Date: Fri Jan 19 20:30:08 2001 +0000 - - Added paper for my talk about BIRD at SLT 2001. - -commit 0766e962e9a9539ceccd23090e5bb8e1301fce8c -Author: Martin Mares -Date: Wed Jan 17 08:32:28 2001 +0000 - - Bug fix from Zheng Yuan . - -commit a2d01907c5b24bab78cc055fa23354597bd44a03 -Author: Martin Mares -Date: Mon Jan 15 09:24:16 2001 +0000 - - Added an explanatory comment. - -commit 8c6ce98b9d9b5c4970e902cf667c1ffb64f04a62 -Author: Martin Mares -Date: Mon Jan 8 11:13:01 2001 +0000 - - Fixed infinite recursion in password_same. - - Pavel, please check. - -commit 32749f493fdaea31f70d8586597febacd2c511d9 -Author: Ondrej Filip -Date: Thu Dec 14 01:04:51 2000 +0000 - - Hmm, nasty bug, LSUPD was not well flooded via PTP interfaces. :-( - -commit 501c5bb03fabd3d5721cfd8c82298f729d79e7a3 -Author: Ondrej Filip -Date: Tue Nov 21 23:47:51 2000 +0000 - - Small bugfix in ext routes calculation. - -commit a5096a1bdebe217eb0d04a95489562ac132f4552 -Author: Ondrej Filip -Date: Wed Nov 8 22:46:54 2000 +0000 - - Yet another nasty bugfix of iface_patts_equal(). - -commit 0639f7263a9a73cce6948cad23cd2d4858d36c5b -Author: Ondrej Filip -Date: Wed Nov 8 17:06:35 2000 +0000 - - Bugfix in iface_patts_equal. - When both patterns were NULL strcmp it sigfaulted. - -commit 482bbc7396268fce66e8ecb59f248bc51229cdc9 -Author: Ondrej Filip -Date: Sat Sep 9 19:21:01 2000 +0000 - - Minor rpm changes to make RedHat happy. - -commit 52fa3e386948b13b928ff9be778a7de62a00ceb3 -Author: Ondrej Filip -Date: Mon Sep 4 21:21:34 2000 +0000 - - Fixed many bugs in rt calculation and interface adding. Now it seems to be - OK, I'm going to advertise 1.0.4. - -commit b02e40111ea8d97bf1c3bfa25970ee0d828cd7bc -Author: Ondrej Filip -Date: Mon Sep 4 19:42:17 2000 +0000 - - I allocate struct ifa before unlocking. So route exported to OSPF are correct. - I work also with interfaces that have some problems with socket opening. - I declare them as stub. - -commit fdb19982020abeddf2d9eb73efae92ae2cc58d93 -Author: Ondrej Filip -Date: Sun Sep 3 22:18:40 2000 +0000 - - Serious bug in ext lsa origination found. Going for 1.0.4. - -commit f02e4258b9bb7f823ddfbfb88284c868502b1433 -Author: Ondrej Filip -Date: Sun Sep 3 18:27:21 2000 +0000 - - Some misspells. - -commit 43dff480efcc85bf32327b07c3c53c9c68cb3941 -Author: Ondrej Filip -Date: Sun Sep 3 18:13:00 2000 +0000 - - Version 1.0.3. - -commit 19e930a9bbcc2dfdb87c8ada1a54ac4563a0cad6 -Author: Ondrej Filip -Date: Sun Sep 3 17:53:12 2000 +0000 - - Version 1.0.3 released. - -commit f82e9bc3744f9ff5aa05d08a18fd03e46fb08b6f -Author: Ondrej Filip -Date: Sun Sep 3 16:21:14 2000 +0000 - - Another atrey->atrey.karlin.mff.cuni.cz - -commit 1e972b5524ff1ad28f4013632253a851c3559fc9 -Author: Ondrej Filip -Date: Sun Sep 3 16:16:33 2000 +0000 - - Log some unusual situation. - -commit 76460860ece8ce43a42da7cb2342e57f553b646c -Author: Ondrej Filip -Date: Sun Sep 3 06:54:35 2000 +0000 - - Small bugfix. (Use atrey.karlin.... instead of atrey.) - -commit e3bc10fdc49266db827af4e4062e639862037eb6 -Author: Ondrej Filip -Date: Sat Sep 2 08:54:40 2000 +0000 - - Added stub interface. (Interface which is propagated to OSPF but - it does not sends nor listens packets.) - - I added some new options, please look at it and look into doc if it's OK. - -commit 5ddec4e6cfef8e5867d7440693894517f955e96f -Author: Ondrej Filip -Date: Sat Sep 2 07:58:05 2000 +0000 - - Reconfigure poll interval. - -commit 7cedbf217e8ce8a8669f31b1ee38e5f9ccb4eefd -Author: Ondrej Filip -Date: Sat Sep 2 00:15:07 2000 +0000 - - Reconfiguration for new options. - -commit e7e2878b744f415df9fcef291da67975da4dfc29 -Author: Ondrej Filip -Date: Sat Sep 2 00:14:46 2000 +0000 - - More examples. - -commit a190e7200bf37ba834c776a28583bf897b4377f5 -Author: Ondrej Filip -Date: Sat Sep 2 00:03:36 2000 +0000 - - Added hellos on NBMA networks. (I don't violate RFC now.) - -commit 94e2bbcc72f69edbcb3ce66ffa52998f374243c5 -Author: Ondrej Filip -Date: Mon Aug 28 14:32:11 2000 +0000 - - Better ospf metric explanation. - -commit 5a063efeea11a80e865e9fa4b5e13c4ca8514b51 -Author: Ondrej Filip -Date: Mon Aug 28 13:51:13 2000 +0000 - - Bugfix in ext lsa importing. - -commit 8b6b49239f409571486ae9589bcd57f706421517 -Author: Ondrej Filip -Date: Fri Aug 25 12:26:03 2000 +0000 - - Minor bug. It does not work on non RH systems. Thanx to - Craig Bourne - -commit 6cf7e97abe05ee8943f8a2d300e1c46038b95df1 -Author: Ondrej Filip -Date: Thu Aug 24 20:08:00 2000 +0000 - - Added files for RPM building. - -commit a24e3157628ade4c0c0c380094bec898b630b2ee -Author: Ondrej Filip -Date: Wed Aug 23 06:51:26 2000 +0000 - - Released as version 1.0.2. - -commit 9e2920824e13739a9169153f0164e6a4fe4adc1d -Author: Ondrej Filip -Date: Fri Aug 18 16:47:27 2000 +0000 - - Typo. - -commit f321a61f77262d33dd43d50136c8116ebf8139c6 -Author: Ondrej Filip -Date: Fri Aug 18 16:44:37 2000 +0000 - - Fixed bug in nex hop calculation of external routes. - -commit 88aa2af7effa3752d033ccab5e18fb1303603585 -Author: Ondrej Filip -Date: Fri Aug 18 16:36:54 2000 +0000 - - Just formatting. - -commit 28a6e1aa0ee17cee6aaad67d7433cb8038062582 -Author: Ondrej Filip -Date: Thu Aug 17 19:42:52 2000 +0000 - - Stupid bug in next hop calculation of external routes. - -commit 1eec76077814fbe06879026809759dd5f5b8655f -Author: Ondrej Filip -Date: Wed Aug 16 20:18:19 2000 +0000 - - Typo in rte_better. - -commit 059fc1e94abcd658e9340313ffd080c5829ba8ef -Author: Ondrej Filip -Date: Wed Aug 16 19:37:04 2000 +0000 - - My calculation of external routes violated rfc. :-( - -commit d6a7e2fb8590660c00e984ff41d2e668d2ead69b -Author: Ondrej Filip -Date: Wed Aug 16 19:03:06 2000 +0000 - - Bug in rte_better. - -commit e7894eceded6ea1f757829a8845863c57660c9dd -Author: Martin Mares -Date: Mon Jun 26 20:02:30 2000 +0000 - - Added slides for our presentation, but don't export them to the - distribution tarball -- they are in Czech and therefore of no use - to almost anybody :( - -commit 2084109a3734227f0dcc21f3c8915a983ad9d586 -Author: Martin Mares -Date: Wed Jun 21 22:11:29 2000 +0000 - - Include CVS ChangeLog in the distribution - -commit fc12a680b1102ae1b620180417ef8b0272b11bed -Author: Martin Mares -Date: Wed Jun 21 22:08:46 2000 +0000 - - Released as version 1.0.1. - -commit ad3907559c196ee39906d527ea4f3372beb6e6c5 -Author: Pavel Machek -Date: Wed Jun 21 19:40:46 2000 +0000 - - RIP bugfix - -commit 2836ce3951bbdda62c3dddd509669127f46e776d -Author: Martin Mares -Date: Wed Jun 21 09:58:09 2000 +0000 - - Check broadcast address sanity before believing it. - -commit bcbdcbb6ae7256e01165220bb3b2d5b72850f665 -Author: Martin Mares -Date: Tue Jun 20 07:49:08 2000 +0000 - - Don't accept incoming connections when the neighbor is not up. - -commit f9eb8f7e066970d56a814128fd49170348a7fbd8 -Author: Martin Mares -Date: Mon Jun 19 23:50:02 2000 +0000 - - If compiled with --enable-debug, don't even try to log to syslog unless - the user forces it in the config file. - -commit 972fdb45323b75af254cfe6c912c52d3596a230a -Author: Ondrej Filip -Date: Mon Jun 19 15:12:50 2000 +0000 - - Routing table calculation clean up. - -commit ca00d4a13a7207da1ea3acf1f0e38ddc27669a4d -Author: Martin Mares -Date: Sun Jun 18 19:49:32 2000 +0000 - - Fix numbering of routing tables in IPv6 version. - -commit 4daf03e5138dea8e5c409ab20a07f35667caa89e -Author: Martin Mares -Date: Fri Jun 16 23:12:47 2000 +0000 - - Use our own SUN_LEN if libc doesn't provide it. - -commit 365211d5886ec59a543e9fbc2151d6218561c18c -Author: Ondrej Filip -Date: Tue Jun 13 19:03:41 2000 +0000 - - Bugfix in logging. - -commit dd44b2ce90950033c5c5419db67a1d53fb177f71 -Author: Martin Mares -Date: Fri Jun 9 07:52:57 2000 +0000 - - bird-1.0.0 has been released. - -commit 5ddf4a58f9c4173acefa1df92ccd3da90230a863 -Author: Martin Mares -Date: Fri Jun 9 07:32:57 2000 +0000 - - During initialization, log to both syslog and stderr. When a configuration - file has been read and it doesn't specify any logging, log to syslog only - (if syslog is not available, then stderr). - -commit 0b3bf4b1d898b4e438fe4959a63fc16211baff12 -Author: Martin Mares -Date: Fri Jun 9 07:30:22 2000 +0000 - - Use SUN_LEN() for length of UNIX domain addresses. This should fix problems - with connection to clients on libc5 machines. - -commit 0e376168c570507c8cb64b143eff0049442e201e -Author: Martin Mares -Date: Fri Jun 9 06:54:01 2000 +0000 - - Shut up an uninitialized variable warning. - -commit 1aa2a9c8351d6121124831f503306ff6869bbf39 -Author: Martin Mares -Date: Fri Jun 9 06:49:43 2000 +0000 - - Added a `What is missing' section. - -commit 4386360bd9f71b159497ac3b671b4e3d117a6b73 -Author: Martin Mares -Date: Fri Jun 9 06:46:58 2000 +0000 - - Before building distribution tarballs, make distclean first. - -commit 2d176ac5d22b08c25ac277821e3daef3a6f2ae23 -Author: Martin Mares -Date: Fri Jun 9 06:45:48 2000 +0000 - - Released as 1.0.0, but marked it as a BETA version. - -commit 99955b54be850fad280a556ca80dc21374d2c5b7 -Author: Martin Mares -Date: Fri Jun 9 06:31:43 2000 +0000 - - Proper building and installation of documentation in the Makefiles. - -commit a012cbb16f3d73ca7ffafe6f7933de7369e2ee48 -Author: Ondrej Filip -Date: Thu Jun 8 19:16:21 2000 +0000 - - Nasty bug in LSA refreshing. I didn't refesh my own copy! :-( - -commit 135857e5777a4f1762fa6d948bb9d6b72e101c91 -Author: Ondrej Filip -Date: Thu Jun 8 19:14:08 2000 +0000 - - Acknoledge your own premature aged LSA. - -commit 054a352475437d924e473c95b5d3ad01ae4ab161 -Author: Ondrej Filip -Date: Thu Jun 8 19:02:31 2000 +0000 - - Don't send dbdes before rtlsa origination. - -commit 4bb18dd2daa1e13ab4f9aaff2ddc4875c4776559 -Author: Pavel Machek -Date: Thu Jun 8 16:57:41 2000 +0000 - - Fix i_same for 'c' instruction. - -commit 89e7de98e455071c5ff3796765fb6fd6860a63c6 -Author: Martin Mares -Date: Thu Jun 8 15:44:52 2000 +0000 - - Updated distribution README. - -commit d4f72db31a512eafbb8aff4e5c1226fa59879382 -Author: Martin Mares -Date: Thu Jun 8 15:22:06 2000 +0000 - - When distcleaning, clean up doc as well. - -commit 96264d4d2f22c652f6cef84ff6226352e1457cce -Author: Pavel Machek -Date: Thu Jun 8 14:06:20 2000 +0000 - - Final version of documentation (famous last words) - -commit 66701947c43d34f89be59fe9845efd7c65f64454 -Author: Martin Mares -Date: Thu Jun 8 12:56:59 2000 +0000 - - Fixes. - -commit 6567e6cf5081542dfeb2c1f2493873c4fabb012f -Author: Martin Mares -Date: Thu Jun 8 12:42:34 2000 +0000 - - Missing parameters... - -commit 1632f1fe32b9f13bf7746586bcbad70ffafe4697 -Author: Pavel Machek -Date: Thu Jun 8 12:38:16 2000 +0000 - - More spellchecking and typographic changes. - -commit 725270cb1da0672128675924844531e56c6ea64e -Author: Martin Mares -Date: Thu Jun 8 12:37:21 2000 +0000 - - Fixes for the programmer's manual. - -commit 8d56febe64769c19a06c2c0f3ff121d25eceaa5b -Author: Ondrej Filip -Date: Thu Jun 8 12:04:57 2000 +0000 - - HASH_DEF_ORDER back to 6. - -commit 2a56bb3bd66a9b52dd6c2e2626630b4eaa79d04b -Author: Martin Mares -Date: Thu Jun 8 11:05:19 2000 +0000 - - Set margins. - -commit 5a64ac70361e9dacfe155492cd52ae88eedcd75c -Author: Ondrej Filip -Date: Thu Jun 8 11:00:15 2000 +0000 - - Introduction to configuration of OSPF. - -commit c62d1c19a924668ccf5315ca8882ea041581e3bf -Author: Martin Mares -Date: Thu Jun 8 10:48:51 2000 +0000 - - ... as well there. - -commit 49569a8b53b7494b19344f5fc9cd659f68477ba4 -Author: Martin Mares -Date: Thu Jun 8 10:48:35 2000 +0000 - - Oops! Configuration compiles now. - -commit a460184532f36f75bc9727886faf07c2bde2d7f5 -Author: Pavel Machek -Date: Thu Jun 8 10:30:55 2000 +0000 - - Tiny fixes. - -commit 86598d87be6b572d3ca9731a72bc820889f5265c -Author: Martin Mares -Date: Thu Jun 8 10:27:01 2000 +0000 - - Updated. - -commit a5a947d4d8f86dd1180d76f0803402383df0dcab -Author: Pavel Machek -Date: Thu Jun 8 10:26:19 2000 +0000 - - Fixing error messages. - -commit ca77641d0787be514cae6a622e26e6a58af11d12 -Author: Pavel Machek -Date: Thu Jun 8 10:25:56 2000 +0000 - - Use `switch' for `disabled'. - -commit ec423cc725d4b097e596dbadd84f3dea40deb0b8 -Author: Martin Mares -Date: Thu Jun 8 10:25:02 2000 +0000 - - Updated CLI helps. - -commit 5a203dac615369806dc6eee0418ea39c597bea41 -Author: Pavel Machek -Date: Thu Jun 8 10:24:42 2000 +0000 - - Docs updates. - -commit b178d92a0ba1dc198f05dc8252c826e9bd62c5cf -Author: Pavel Machek -Date: Thu Jun 8 08:24:32 2000 +0000 - - Better messages - -commit 099c017fca667bbb59cff65be2ac58c82f8fb3a8 -Author: Ondrej Filip -Date: Thu Jun 8 02:28:04 2000 +0000 - - Still some endianity bugs. - -commit 59ba3342968fdd2a016b192559a64439281e25bf -Author: Ondrej Filip -Date: Thu Jun 8 02:04:45 2000 +0000 - - I forgot some endianity operations. - -commit 423230f2f1080c6a4f6d05b6d7705cfaee500f48 -Author: Ondrej Filip -Date: Thu Jun 8 01:49:19 2000 +0000 - - Ehm, my (B)DR election was based on router id, but RFC says ip! - -commit 17e29574bcf0e03e3243a48e784b0248925cc5b4 -Author: Ondrej Filip -Date: Wed Jun 7 23:48:33 2000 +0000 - - Better algoritmus of LSA aging. - -commit 25a3f3da7a2312e5ae21ada2aeccc412e2d1d867 -Author: Ondrej Filip -Date: Wed Jun 7 23:34:43 2000 +0000 - - I mark all LSA as in distance INFINITY in process of aging. - I don't have to WALK twice through it. - -commit 1186369bbd45ab901eccc313708cc20f9dbf0f42 -Author: Ondrej Filip -Date: Wed Jun 7 23:23:37 2000 +0000 - - Doc. - -commit 37c3e558ab31a5e6088cef063dcd1e267238be74 -Author: Ondrej Filip -Date: Wed Jun 7 23:05:32 2000 +0000 - - Simple explanation, how LSA are kept in database. - -commit 87f0d22ef84826f6dc6d0a1ae7ba8020b6e52573 -Author: Ondrej Filip -Date: Wed Jun 7 22:57:59 2000 +0000 - - Minor change. - -commit c2553b1b3e1ff61e24b9435b897ef942abcec006 -Author: Ondrej Filip -Date: Wed Jun 7 22:56:52 2000 +0000 - - Minor changes. - -commit eee9cefd8c13184e45878ce8e2ef12fcdece3ded -Author: Ondrej Filip -Date: Wed Jun 7 22:53:51 2000 +0000 - - Doc - -commit e9ab0b4212dc0939d782c991c86c362e09eb279f -Author: Ondrej Filip -Date: Wed Jun 7 22:31:47 2000 +0000 - - Doc in lsalib.c + related minor changes. - -commit d5e4b51865c9532a9b886e942d30bb64dc87a675 -Author: Ondrej Filip -Date: Wed Jun 7 22:10:46 2000 +0000 - - Doc - -commit 351feeb51472602c83ec847f1feba10d68a5d57b -Author: Ondrej Filip -Date: Wed Jun 7 21:56:32 2000 +0000 - - Doc. - -commit b4af36e0d8eeb6a032b2ce2464aae76a04117827 -Author: Ondrej Filip -Date: Wed Jun 7 21:50:16 2000 +0000 - - Removed some FIXMEs simply deleting them. - -commit 7ab3ff6a287d6adc8f1d371d9da1504de502c8a6 -Author: Ondrej Filip -Date: Wed Jun 7 21:46:22 2000 +0000 - - Doc in neighbor.c and some tiny changes related to. - -commit cadbb827f99fc24da9227dce545aa1185bab7916 -Author: Ondrej Filip -Date: Wed Jun 7 21:12:00 2000 +0000 - - A copyright change. - -commit 6f58dc64c9084aca66850b88d907cecf9b00c88d -Author: Ondrej Filip -Date: Wed Jun 7 20:50:08 2000 +0000 - - Doc - -commit 89755a86237c786878a2d0c5e527559c8a4c0b6d -Author: Ondrej Filip -Date: Wed Jun 7 20:30:27 2000 +0000 - - Introdution into OSPF. - -commit 64722c9852a8ea4bdc7db0304351850a8106300e -Author: Pavel Machek -Date: Wed Jun 7 15:27:16 2000 +0000 - - Added brief description of client features. Grammar really is not good place to write help from, so please check this. - -commit 3e82b32d3637a3a3d2eb935dc7036b32bc3fecd4 -Author: Pavel Machek -Date: Wed Jun 7 14:45:55 2000 +0000 - - Progdocs updates - -commit 074a166d9441a2b03931751dbc181e0d462a9d7c -Author: Pavel Machek -Date: Wed Jun 7 14:39:34 2000 +0000 - - Better explanation for if/case, and RFC pointers for rip. Still searching for - RIPv2 rfc number! - -commit 8dcf2544996af34f3c3d71116844352427787324 -Author: Pavel Machek -Date: Wed Jun 7 14:16:11 2000 +0000 - - Even better documentation of filters. - -commit 7aa99d22bcabb48cfc737055942715d8efd47f6b -Author: Martin Mares -Date: Wed Jun 7 14:12:44 2000 +0000 - - Updated. - -commit f06a219a2445bc9ff86071fdbb9b97e51b412c31 -Author: Ondrej Filip -Date: Wed Jun 7 14:12:13 2000 +0000 - - Better explanation of OSPF attributes. But it's still not perfect. - -commit 4e8ec66698e0e644f56c18b3f58393d9f5ae49a7 -Author: Martin Mares -Date: Wed Jun 7 14:08:14 2000 +0000 - - Spelling. - -commit 07f29765a58ee72fc79d74b28dbfead24e0b5baf -Author: Pavel Machek -Date: Wed Jun 7 14:06:37 2000 +0000 - - RIPv6 now works. - -commit 76c7efec63ffd2431ce5f6bd2299763f741ac37c -Author: Ondrej Filip -Date: Wed Jun 7 14:01:18 2000 +0000 - - Better example for OSPF configuration. - -commit 907503adb6d0b0763ff92266e2fbc522d77f5476 -Author: Pavel Machek -Date: Wed Jun 7 14:00:17 2000 +0000 - - Comment fix. - -commit 18b4d6bf278485f86ae5b636f3155fb36735ff1e -Author: Pavel Machek -Date: Wed Jun 7 13:58:49 2000 +0000 - - rip ipv6 bugfix - -commit 3ca3e999ecf00cc6ab8a52a73a7ead26e83a75b7 -Author: Martin Mares -Date: Wed Jun 7 13:54:24 2000 +0000 - - Spelling and style corrections to the OSPF section. - -commit 771ae456a5ff0e12379047b737da31b0be4059ea -Author: Pavel Machek -Date: Wed Jun 7 13:54:06 2000 +0000 - - Better progdocs for filters - -commit fa6c2405e2bab551245e1af7ed19b550b8bbef79 -Author: Ondrej Filip -Date: Wed Jun 7 13:46:13 2000 +0000 - - Now I can change cost of interface without OSPF restart. - -commit 6316555eea2b9b232a622fdb9aceaa4de1e23f59 -Author: Martin Mares -Date: Wed Jun 7 13:32:10 2000 +0000 - - Minor tagging fixes in OSPF docs. - -commit 25696edb03e08f562d1993ae38ec9ae43942347d -Author: Pavel Machek -Date: Wed Jun 7 13:30:02 2000 +0000 - - Full list of possible values in attributes, better operators description. - -commit 088bc8add198b27456269ca7e536d6bc77ca285b -Author: Ondrej Filip -Date: Wed Jun 7 13:28:54 2000 +0000 - - Bugfix in <>. - -commit 58f7d004fddd2cccdb019be59b6cc7a8abe50510 -Author: Martin Mares -Date: Wed Jun 7 13:25:53 2000 +0000 - - Fixes to the progdoc. - -commit 38203d789a872077ec174a63a448568725e4715f -Author: Ondrej Filip -Date: Wed Jun 7 13:19:48 2000 +0000 - - Originate rt lsa before sending first dbdes. - -commit 0c69604c8d0c9618e6cc94c98da993439d90dde6 -Author: Pavel Machek -Date: Wed Jun 7 13:15:48 2000 +0000 - - SGML syntax fix. - -commit 8fd12e6b27e713b0b7b24f3f7d9efd57038b1be6 -Author: Ondrej Filip -Date: Wed Jun 7 12:35:43 2000 +0000 - - OSPF user documentation added. - -commit 2e9b24211a523c754b9437d6b742d6df304d8aeb -Author: Martin Mares -Date: Wed Jun 7 12:29:08 2000 +0000 - - Spelling fixes to progdoc. - -commit e403aa89e50471eb6f2838117887b1207627ae3a -Author: Martin Mares -Date: Wed Jun 7 12:27:30 2000 +0000 - - Updated TODO file. - -commit cf0fca30353a9966c793647f7c9d10b0b56678a9 -Author: Martin Mares -Date: Wed Jun 7 12:27:18 2000 +0000 - - Added `progspell' target which runs ispell on the progdoc SGML file with - all function, variable and structure names removed. - -commit 1ae494a7e1fb7dde3ffc4e5dd7df31a1bf8dd6bf -Author: Martin Mares -Date: Wed Jun 7 11:55:36 2000 +0000 - - Avoid SEGV's in tracing. - -commit 8cd5c52fcb7d429f41601f7be114168cb2371072 -Author: Ondrej Filip -Date: Wed Jun 7 01:19:16 2000 +0000 - - Removed useless trace. - -commit 3df89cefc19d08f621afac0ff485dba3591a39a0 -Author: Ondrej Filip -Date: Wed Jun 7 01:18:36 2000 +0000 - - #define SIZE_OF_IP_HEADER - -commit bd457b8d2162034e03ac2bb62484d8b238fd556f -Author: Ondrej Filip -Date: Wed Jun 7 01:03:53 2000 +0000 - - Some minor changes: - Typo: transit delay!=transmit delay - Zero checks etc. - -commit edc34dc9121c188f7794d404fb112c8b162e968a -Author: Ondrej Filip -Date: Wed Jun 7 00:56:11 2000 +0000 - - Reconfiguration hook. - It will survive many timer and constat changes. - -commit 1532a244da43b25fb78b7b3a67a344fa4ac542d4 -Author: Pavel Machek -Date: Tue Jun 6 20:54:05 2000 +0000 - - mj's fixes to rip documentation. - -commit a7c9f7c065907e310ce1954821f2a8fc61c0261b -Author: Pavel Machek -Date: Tue Jun 6 20:35:59 2000 +0000 - - Batch of mj's corrections (config + filters) - -commit a63a9ce609864e6ba3e76a1c47fd6423b532dec1 -Author: Ondrej Filip -Date: Tue Jun 6 12:50:02 2000 +0000 - - Better dumping neighbors' states on PTP interface. - -commit a00c7a18f561bf46533dac46ee56227ebdf1be08 -Author: Martin Mares -Date: Tue Jun 6 11:58:25 2000 +0000 - - Typos in Static section. - -commit 02357f960e6a2946add25652c009fa8dfe847f68 -Author: Pavel Machek -Date: Tue Jun 6 11:53:22 2000 +0000 - - Merged mj's changes, up-to "import filter". - -commit 41ad16e2d5dc03f6620b94f8e531373788e11db9 -Author: Ondrej Filip -Date: Tue Jun 6 11:50:48 2000 +0000 - - Added IP protocols. - -commit a852c139dc90febae40be055050ed30490d823b8 -Author: Pavel Machek -Date: Tue Jun 6 11:05:12 2000 +0000 - - Don't let example overflow, and new chapter for "about routing tables". - -commit ee4880c82fcefe61cccb8ec729905a2b19706d33 -Author: Ondrej Filip -Date: Tue Jun 6 02:54:41 2000 +0000 - - Some '\n' deleted. - -commit 064b1d893243bc187980f53292414583ff3b4630 -Author: Ondrej Filip -Date: Tue Jun 6 02:50:49 2000 +0000 - - Tracing. - -commit bd37f45c10be697403e59c957273d172b3d3ed8e -Author: Ondrej Filip -Date: Tue Jun 6 02:43:32 2000 +0000 - - Deleted some debug() - -commit abcbfd0400eeb514c63376b50d3948581c20ca4c -Author: Ondrej Filip -Date: Tue Jun 6 02:34:57 2000 +0000 - - Tracing. - -commit 531a48d8c5c168329640ccb21cd062dbb7b6f5a2 -Author: Ondrej Filip -Date: Tue Jun 6 02:32:14 2000 +0000 - - Tracing in LS ack. - -commit 992705f65a9feb04ed0e918d06ad283928aca13a -Author: Ondrej Filip -Date: Tue Jun 6 02:27:08 2000 +0000 - - Tracing in topology - -commit d3995c498d92d7ce54fb2fcb6904e4e41f7588dc -Author: Ondrej Filip -Date: Tue Jun 6 02:16:39 2000 +0000 - - Tracing in LSUPD. - -commit f14032efdd87bca5c2839be01ffe66797976c7bc -Author: Ondrej Filip -Date: Tue Jun 6 02:09:58 2000 +0000 - - First part of tracing. - -commit 51cff78b2571e24963d3a81694f854605eb75eac -Author: Ondrej Filip -Date: Tue Jun 6 01:46:32 2000 +0000 - - Allocate OSPF areas before interfaces. - -commit c1824c4d4c7753246ba26d27c7a3b7be3006d46b -Author: Ondrej Filip -Date: Tue Jun 6 01:23:03 2000 +0000 - - Simple autentication added. - -commit fef1badfcfb0519cca10f3561e5cb79ef9f9e969 -Author: Ondrej Filip -Date: Tue Jun 6 01:00:34 2000 +0000 - - All die() renamed to bug(). - -commit 80787d418bd028f59e34ffb08c1c221992fe3b41 -Author: Ondrej Filip -Date: Tue Jun 6 00:52:35 2000 +0000 - - Dummy reconfigure added. - -commit f8f1e1f110c3ff1aec03a9fa918257cf4d29e916 -Author: Ondrej Filip -Date: Tue Jun 6 00:46:00 2000 +0000 - - Interface locks added. - -commit 7d68e18b414bbdef9a5472006e8674a3d74e5a00 -Author: Ondrej Filip -Date: Tue Jun 6 00:21:06 2000 +0000 - - Added NBMA into examples. - -commit b131e163c292aac09dc7f73924de0fad6547743d -Author: Ondrej Filip -Date: Tue Jun 6 00:16:31 2000 +0000 - - Some useles variable deleted. - -commit 3301b9d1c57b4e76d32f1244e3da33012e70d20d -Author: Ondrej Filip -Date: Tue Jun 6 00:16:03 2000 +0000 - - Some useless variable deleted. - -commit eb436e16fd85340d3403a033ee86f973428a2f08 -Author: Ondrej Filip -Date: Tue Jun 6 00:08:27 2000 +0000 - - NBMA networks seems to work, but this should be better. :-) - -commit e5b5d18c1c8b33e76e954c0696e056fc11701631 -Author: Ondrej Filip -Date: Mon Jun 5 23:44:26 2000 +0000 - - NBMA networks should work now. - -commit 5c18880e35f668d33a993be5b2854547a08d9199 -Author: Martin Mares -Date: Mon Jun 5 21:26:11 2000 +0000 - - Avoid sentence containing a colon to start new doc subsection. - -commit ab698fc57c9898790964df7f9f59329e1f8930ba -Author: Ondrej Filip -Date: Mon Jun 5 21:09:03 2000 +0000 - - Added example of OSPF configuration. - -commit a13eaf219acf5b90af09b914a2182e23d5812aee -Author: Martin Mares -Date: Mon Jun 5 21:02:57 2000 +0000 - - Define element which initializes different formatting for the - programmer's guide (\raggedbottom etc.). - - Also, omit "\usepackage{t1enc}", so that bullets work now. - -commit 854128a5ed540f230933cdc2c787e94d2658647b -Author: Martin Mares -Date: Mon Jun 5 21:01:58 2000 +0000 - - Don't print empty synopses of functions. - -commit 3b580a23ad32e8445c419932d6f7715cdc2a0687 -Author: Ondrej Filip -Date: Mon Jun 5 20:57:53 2000 +0000 - - Bugfix in NET LSA flushing. - Configuration now works! :-) - Better "show ospf" - Some minor bugfixes. - -commit f1aa23d4b3949ccd7c86f9a4e87eda63149b5f6d -Author: Martin Mares -Date: Mon Jun 5 20:24:42 2000 +0000 - - Minor tweaks of spacing. - -commit 4bb9ce56bbf42ac09fc8293d8419835b6f178e83 -Author: Ondrej Filip -Date: Mon Jun 5 19:45:06 2000 +0000 - - Reset inactim timer if you receive any packet from neighbor. - -commit 496c819f26f67593797f0b861e153399c1d63a86 -Author: Ondrej Filip -Date: Mon Jun 5 19:35:48 2000 +0000 - - Removed some FIXMEs by deleting them. - -commit 3585d400e03a4e43def868b492df440ae52a29bb -Author: Ondrej Filip -Date: Mon Jun 5 19:31:55 2000 +0000 - - Don't info about DR and BDR on non-MA networks. - -commit 2debcb9eb0d76362003726ca8b0f5f43ee275dee -Author: Martin Mares -Date: Mon Jun 5 19:17:37 2000 +0000 - - Move TeX trickery for typesetting of function descriptions to where - it belongs. - -commit fdb0c540a82d9732d4d1d36c83e186f36d756d08 -Author: Ondrej Filip -Date: Mon Jun 5 19:12:22 2000 +0000 - - PTP link in RTLSA was not announced correctly. - -commit 1605f043aa65b2434eb29d994f622bd79d0f2be7 -Author: Martin Mares -Date: Mon Jun 5 19:08:27 2000 +0000 - - Avoid using style combinations such as italic typewriter font. - -commit 8441f179253777b3e4bf3461ac847b33ddb098a4 -Author: Martin Mares -Date: Mon Jun 5 18:40:25 2000 +0000 - - Unless a filter specifies otherwise, all external routes have type 2 - metric 10000. - -commit f8032bbdb150221e84f0bd7de825cf3e9f15aa66 -Author: Martin Mares -Date: Mon Jun 5 18:32:51 2000 +0000 - - Simplified the grammar and fixed several minor bugs (e.g., `INTERFACE "eth0" };' - was a valid entry). - -commit 44fc1888cf284d863c897b861942612acf36f52f -Author: Ondrej Filip -Date: Mon Jun 5 18:09:49 2000 +0000 - - First calculate checksum and then send refreshed LSA! - -commit aba5e89f9310bb33c7362b02108e640983ad0819 -Author: Ondrej Filip -Date: Mon Jun 5 18:09:15 2000 +0000 - - Better checksum checking. - -commit 4c5f93d76bd0636407a185c175fe73411ae79a32 -Author: Pavel Machek -Date: Mon Jun 5 17:13:36 2000 +0000 - - Better documentation. There are functions whose description is good when - reading source but whose documentation does not belong to progdocs. - -commit 22080a8640f268247a4cf74c9e76f958a05c4b69 -Author: Pavel Machek -Date: Mon Jun 5 16:42:54 2000 +0000 - - Make rip example fit on page. - -commit 8798c811762f463b662108643d7c4c869deb7f98 -Author: Pavel Machek -Date: Mon Jun 5 16:36:16 2000 +0000 - - Docs updates: - - make prog.dvi - - do not overflow in .dvi - - include filter documentation in the system - -commit eb2c99a132c87c5560edc77909edfab2df44f0a2 -Author: Ondrej Filip -Date: Mon Jun 5 16:32:29 2000 +0000 - - Yet another change, now flushing of net lsa seems to be perfect. :-) - -commit b458ce83d7cdc507aa18e5fed2ab206847bc317e -Author: Martin Mares -Date: Mon Jun 5 16:19:27 2000 +0000 - - Print out function synopsis as a part of the declaration. - - Also, reverted my previous hack for `&' and replaced it by just disabling - the `& -> &' conversions. - -commit 2a5d7caa951d37c50d52ebef8ef269fa587dec5e -Author: Ondrej Filip -Date: Mon Jun 5 16:13:50 2000 +0000 - - I calculated next hop of parent instead of actual LSA. :-( - -commit 07b7100292fb87169ad5f18285927c39697f6998 -Author: Ondrej Filip -Date: Mon Jun 5 15:44:11 2000 +0000 - - Don;t send packet over downed interface. - -commit 8b79c4ccd597b90222f57eb3dfadeb24f39db7bd -Author: Pavel Machek -Date: Mon Jun 5 15:41:44 2000 +0000 - - Add safety check. - -commit 98da26a0a0ee9dd8f7030dcaf6f733adf8b8ad2c -Author: Pavel Machek -Date: Mon Jun 5 15:41:29 2000 +0000 - - Better error messages - -commit 49222deffff154ad7c287efd4a6847cc545cda6b -Author: Ondrej Filip -Date: Mon Jun 5 15:06:26 2000 +0000 - - Bug in comment. It didn't compile. - -commit b093c328f5b352e3d059cb14cceed1e4daa1b9dc -Author: Pavel Machek -Date: Mon Jun 5 12:52:57 2000 +0000 - - Updates to both programmers and users doc - -commit 73275d855dcc8a184bc19f3750c8775a59111260 -Author: Martin Mares -Date: Mon Jun 5 12:49:04 2000 +0000 - - Documented all the sysdeps (only briefly, I admit). - - Except for Filters, RIP and OSPF, the progdocs are complete. - -commit 525fa2c1f0e955455bed3fdb397aceb1e6e69a57 -Author: Martin Mares -Date: Mon Jun 5 12:19:12 2000 +0000 - - Documented sockets, events and timers. - -commit 10304bed435034cf8432b1c6262f7e7f0d84d49c -Author: Martin Mares -Date: Mon Jun 5 11:46:40 2000 +0000 - - Split random number functions off io.c, so that they can be documented - separately. - -commit 5cc1e1f805934952f38ceb2ca6947c6d2e704937 -Author: Martin Mares -Date: Mon Jun 5 11:41:41 2000 +0000 - - Documented memory resources. - -commit 9238b06a2c6faac8b16e990821c91affde4072c4 -Author: Martin Mares -Date: Mon Jun 5 10:01:09 2000 +0000 - - Spelling. - -commit 42b3daa09cda8a4b80661177d3bf74b9258b0b88 -Author: Martin Mares -Date: Mon Jun 5 09:51:24 2000 +0000 - - Description of protocol module moved to where it belongs. If documentation - of standard modules is stored in their source, such auxilliary files - should be as well. - -commit ac272c0067cc7f04e74f0418bc0c9ce63a657175 -Author: Ondrej Filip -Date: Mon Jun 5 05:06:53 2000 +0000 - - Bug in LSA origination. - -commit dc2548d2ccc45722f0dcaa861dd3b45a397d2cac -Author: Ondrej Filip -Date: Mon Jun 5 05:06:22 2000 +0000 - - Premature age LSA if you're NOT dr. - -commit 88048fb3c970842a16c65b1566ba817871a04eb5 -Author: Ondrej Filip -Date: Mon Jun 5 03:46:19 2000 +0000 - - Small patch to better hash type=2 LSAs. - -commit 273fd2c16475d3d1275a4fe17443c3ba2b93fbc4 -Author: Ondrej Filip -Date: Mon Jun 5 02:23:20 2000 +0000 - - Many bugfixes (I don't remember all of them): - Added link ID calculation for external routes with same prefix but - different mask. - Bugfix in NET lsa origination. - Bugfix in NET hashing. - Bugfix in LSA installing. - -commit 2d37d36c676e16b92ac38a60d3c269efeeaf07ac -Author: Martin Mares -Date: Sun Jun 4 20:06:42 2000 +0000 - - Updated the TODO list with our last-minute stuff. - - Moved the rest to "Various ideas". - -commit e24ddd9bef7e3d3490a8ee7667cd25069b40fe81 -Author: Martin Mares -Date: Sun Jun 4 20:00:35 2000 +0000 - - Don't set precedence and TTL for the dummy socket. - -commit 13e9bac33fc99e71efddf1790ce1e7dfdc09dfa8 -Author: Martin Mares -Date: Sun Jun 4 19:57:04 2000 +0000 - - One more newline less... :) - -commit df49d4e14b7c24f8ca958870fd1e9ddc84df1f1b -Author: Martin Mares -Date: Sun Jun 4 19:56:06 2000 +0000 - - Removed lots of trailing newlines in log messages. - - Please note that the only calls which don't add newlines automatically - (i.e., don't print a full line of output) are debug() and DBG(). - -commit 201187c55837587d8f88775cd957d9c8e423c254 -Author: Martin Mares -Date: Sun Jun 4 19:55:11 2000 +0000 - - debug -> DBG - -commit bf3eb98eb829adc8bee4a210cfcefe29ba0524a1 -Author: Martin Mares -Date: Sun Jun 4 19:30:55 2000 +0000 - - Use nested scopes properly. Updated according to cf_define_symbol() changes. - - The rest of code doesn't need changing since it doesn't use nesting. - -commit 04dc62a0116941d2f1510216539ae8c11c5f1cb3 -Author: Martin Mares -Date: Sun Jun 4 19:30:13 2000 +0000 - - Nested scopes could never have worked. My fault I wrote such a buggy code, - Pavel's fault that he's never tested shadowing of declarations in the filters. - - cf_define_symbol() has been modified to check the scope of the symbol it's - given and it if it's an already defined symbol, but in a different scope, - a copy is created in the current scope and redefined to the new meaning, - the consequence being that it cf_define_symbol() now returns the new symbol - you need to use when assigning aux and aux2. - -commit dab66519160042f1fb62a285e3a947233ce74e70 -Author: Ondrej Filip -Date: Sun Jun 4 19:21:23 2000 +0000 - - Install newer lsa even if nothing in its body change. - -commit 67cc9135bfd515149ecca62f32026cd6e2a390b0 -Author: Ondrej Filip -Date: Sun Jun 4 19:20:28 2000 +0000 - - Many bugs in ext lsa origination. - -commit ce8f0c083a5f46e001dff759e924910c415cfb48 -Author: Ondrej Filip -Date: Sun Jun 4 19:19:36 2000 +0000 - - Schedule RT calcualtion if you delete LSA by premature aging. - -commit f7667ba1c4c7a35266ae5018b059a14a01f7f907 -Author: Martin Mares -Date: Sun Jun 4 18:46:30 2000 +0000 - - When cloning a rte and replacing its rta, remember to free the old one - so that we don't leak memory. Thanks go to the resource tracking system - for quickly discovering the source of leakages. - -commit 7722938d63d206ebc0e1da732009e1e9f2cd9d72 -Author: Martin Mares -Date: Sun Jun 4 18:34:39 2000 +0000 - - Added library progdocs. - -commit 102e3e0e0277e7b123c7c1ae3635c4a8fb55c900 -Author: Ondrej Filip -Date: Sun Jun 4 17:51:52 2000 +0000 - - Just to be sure, that rt calculation cannot start beforeorigination of rt LSA. - -commit 83e50ffc472c8869d58a7d1da27846bd727a8cfd -Author: Ondrej Filip -Date: Sun Jun 4 17:33:15 2000 +0000 - - Bug in debugging. - -commit 71f7d043a6f03b5d5cd0701bb679b914b1bf47d1 -Author: Ondrej Filip -Date: Sun Jun 4 17:10:52 2000 +0000 - - :-) No bison does not have any comment to my code. :-) - -commit 54e55169da71a6e6e2d8f9fbc0123297301217d7 -Author: Martin Mares -Date: Sun Jun 4 17:06:18 2000 +0000 - - BGP documented. - -commit 3560cf8e0b68ce0cac5a9af2aadbc09d4f529e7c -Author: Ondrej Filip -Date: Sun Jun 4 16:36:57 2000 +0000 - - Clean up. - -commit e7811248685520ceff362b8bc7f090067ca42114 -Author: Ondrej Filip -Date: Sun Jun 4 16:17:39 2000 +0000 - - Another clean up. - -commit 47f8e0c2169bba2dd209f1c7ed89f1d605d36b3e -Author: Martin Mares -Date: Sun Jun 4 16:16:08 2000 +0000 - - Document. - -commit 3b31c538333156770ddb74a7a27f271784745144 -Author: Martin Mares -Date: Sun Jun 4 16:15:37 2000 +0000 - - Documented all the trivial protocols. - -commit 2a863dd6e18a43fe3de5b1f3651e816f6fc27bb1 -Author: Ondrej Filip -Date: Sun Jun 4 16:12:01 2000 +0000 - - Small change to make bison happy. - -commit 58f9453776dff92b4ee4c81f6ca3601b6ee9f041 -Author: Martin Mares -Date: Sun Jun 4 15:22:20 2000 +0000 - - Moved parser docs to cf-lex.l, so that the parser compiles. - -commit cdb898cfd40fe866a1835689814113075b7b5a67 -Author: Martin Mares -Date: Sat Jun 3 18:23:27 2000 +0000 - - Minor changes to the progdocs. - -commit 06607335ef73bc0ffeb377a420e6438b531a4ea7 -Author: Martin Mares -Date: Sat Jun 3 18:23:00 2000 +0000 - - Documentation. - -commit 899fc0abfe8400425860d0e9e4d6cc7fd338978c -Author: Martin Mares -Date: Sat Jun 3 18:22:43 2000 +0000 - - `|' now works as it should. - -commit 2e130b5cadb970b7f4f743e69cd459b5b42cf208 -Author: Martin Mares -Date: Sat Jun 3 17:02:30 2000 +0000 - - Recognize `|xxxx|' as verbatim text and typeset it using . - -commit c0b2f6463fd7464ce6fe4d9dc67f37e61bface11 -Author: Martin Mares -Date: Sat Jun 3 16:56:00 2000 +0000 - - cf_symbol_class_name now recognizes SYM_IPA. - -commit 3d675cdbe7287d3024d041ce4e28dacf7ca527cc -Author: Martin Mares -Date: Sat Jun 3 14:40:39 2000 +0000 - - More documentation. - -commit aaaff77605879ffd80f8980f06ea66329e9aaea8 -Author: Ondrej Filip -Date: Sat Jun 3 09:50:31 2000 +0000 - - More conf. items defined. - -commit a789d814ddd8473fdb85bedb02014f6cb6435373 -Author: Ondrej Filip -Date: Sat Jun 3 08:42:04 2000 +0000 - - Multiple items in area {} :-) - -commit 89d6782dd1a7775a292db3b2b622c8a48dbd757c -Author: Ondrej Filip -Date: Sat Jun 3 01:29:00 2000 +0000 - - interface {} added. - -commit b36a0a799c751864f65bc3384df301448b54f3bf -Author: Ondrej Filip -Date: Fri Jun 2 19:55:55 2000 +0000 - - area {} added to config. - -commit 7e602d5ea74206236373230a4620736370b3cc9c -Author: Martin Mares -Date: Fri Jun 2 17:42:21 2000 +0000 - - Killed several bugs in kernel-doc. The most painful one was that it - was unable to recognize structure markers `&'. - -commit a7ed3e557fd1f8c4e56fef9a5238091181c01186 -Author: Martin Mares -Date: Fri Jun 2 17:41:43 2000 +0000 - - New TODO list. - -commit ddbcb927f255ef4720e87b7f14339add37e705ce -Author: Martin Mares -Date: Fri Jun 2 17:24:11 2000 +0000 - - Documented protocol hooks. - -commit 371adba6deb0add48fd4d03d40d4e098590689fc -Author: Martin Mares -Date: Fri Jun 2 17:23:53 2000 +0000 - - Use for chapters, for sections and for subsections. - -commit 6cba2d5eeb522cbf6f1cc28c38fc2c445f41d1e6 -Author: Martin Mares -Date: Fri Jun 2 17:22:43 2000 +0000 - - Typographical enhancements. Now, the documentation is typeset using a modified - book style. - - Please look at this version and tell me your opinion. Especially I don't feel - happy about the spacing and (not) indenting of paragraphs. - - Also, I've removed things like "fax" and "letter" from the LaTeX mapping file. - -commit 3fa5722defc340571a6518d5556b1e354f05ce18 -Author: Ondrej Filip -Date: Fri Jun 2 15:05:41 2000 +0000 - - First option into config added. :-) - -commit 62924172aef9cf5308fd21d3ad5f6572b977c268 -Author: Ondrej Filip -Date: Fri Jun 2 13:52:50 2000 +0000 - - Flush LSA when receive aged one. - -commit 3c6269b8fec71fa22d5b087cae0e9ef86ff2b351 -Author: Martin Mares -Date: Fri Jun 2 13:42:36 2000 +0000 - - Added documentation on protocols. - - Protocol hooks deserve an extra chapter (to come soon). - -commit e4ba0ec1977e9925ec67f9442067e5ff7cb36111 -Author: Ondrej Filip -Date: Fri Jun 2 13:27:34 2000 +0000 - - Bugfix in receiving of aged LSA. - -commit 9a8f20fc0fda1cf910fe8ca21e850ab1524c4355 -Author: Martin Mares -Date: Fri Jun 2 12:41:25 2000 +0000 - - Better description of the route distribution process. - -commit 2eac33f774a2075cff3d28f7fdb36e0482e48f35 -Author: Ondrej Filip -Date: Fri Jun 2 12:34:28 2000 +0000 - - Better LSA Aging. - -commit 3ce8c61000da58261750af2b6e60dbf2fca2abcf -Author: Martin Mares -Date: Fri Jun 2 12:29:55 2000 +0000 - - Documentation on routing tables and route attributes. - -commit 566a0eede7094519df07418116beeb7f3f976c7a -Author: Martin Mares -Date: Fri Jun 2 12:29:24 2000 +0000 - - Removed rta_find() since nobody uses it and it's more convenient - to use ea_find() directly. - -commit ece612e12808325b1b7eb24d060a42343549238f -Author: Ondrej Filip -Date: Fri Jun 2 11:24:38 2000 +0000 - - sh interface "iface" dumpped all. - -commit 7a5582ac0045b80274de3183eca9b71eb52f2e6b -Author: Ondrej Filip -Date: Fri Jun 2 11:00:14 2000 +0000 - - Better dumping, if I get strange lsack. - -commit 3488634cba08aeda19a733f7c76aef7a54a4e0ec -Author: Ondrej Filip -Date: Fri Jun 2 10:21:02 2000 +0000 - - Handle "show ospf *" even if protocol is down. - -commit a489f0ce8ba44df0894a2bd102660fed1bed5ac6 -Author: Ondrej Filip -Date: Fri Jun 2 09:57:22 2000 +0000 - - Silly bug in sh interface. Now I test ALL interfaces. :-) - -commit 489f800b45d6d2d1a1fc9b371a015563cea9722d -Author: Ondrej Filip -Date: Fri Jun 2 09:53:26 2000 +0000 - - Speedup loading process. - -commit 75317ab8e522b5dceb87b204e09d8ad919ac8558 -Author: Martin Mares -Date: Fri Jun 2 09:51:26 2000 +0000 - - Spelling fixes. - -commit f8e2d916b6cbe42131bfefbc5a2cd0ddfaf8131b -Author: Martin Mares -Date: Fri Jun 2 09:46:35 2000 +0000 - - Minor fixes. - -commit 92e8be8c898932bf959e722acfbb33d154b8fcc4 -Author: Ondrej Filip -Date: Fri Jun 2 09:42:24 2000 +0000 - - Bugfix in lsreq receiving. - -commit cd4fecb66affe468928abd87cadef4ff9a991d0b -Author: Martin Mares -Date: Fri Jun 2 09:35:17 2000 +0000 - - Made it *compile* !!! - -commit 64ba9f7bcc4bb3b53c0cab303c230855a1443a42 -Author: Pavel Machek -Date: Fri Jun 2 08:01:12 2000 +0000 - - Do not try to divide by zero. - -commit 326e33f521f7796cbdde4a36a67bb4c7ffd25c1b -Author: Pavel Machek -Date: Fri Jun 2 07:59:26 2000 +0000 - - Results of complete reading of documentation. - -commit c4f0f0140863c743b1d63c3bc94cb8e85417a4ad -Author: Ondrej Filip -Date: Thu Jun 1 17:52:21 2000 +0000 - - Added show ospf interface. - show ospf neighbors now knows "". - -commit 58740ed4c587a230bf1406eca52cbc84bcb1c5c3 -Author: Martin Mares -Date: Thu Jun 1 17:12:19 2000 +0000 - - Documentation. - -commit 658d272bb635b5efeeed883dec5af9dddf12397f -Author: Martin Mares -Date: Thu Jun 1 17:11:10 2000 +0000 - - Better handling of parameterless functions. - -commit 725774926676352d2a065cbeb95a81b95bfcfa3e -Author: Ondrej Filip -Date: Thu Jun 1 16:45:10 2000 +0000 - - Some other reply codes allocated. - -commit 4ab4e9778f35f8a123ee6bbc2387b9870859b707 -Author: Ondrej Filip -Date: Thu Jun 1 16:26:59 2000 +0000 - - show ospf implemented. - -commit cf318e3cd3206ad6a459a01e29e8494a100a67eb -Author: Martin Mares -Date: Thu Jun 1 16:17:29 2000 +0000 - - Removed comments about workings of the old neighbor cache which are - (1) obsolete and (2) replaced by the progdoc. - -commit 1f495723c355b66383ab391fdba84aae7e9226eb -Author: Martin Mares -Date: Thu Jun 1 16:16:49 2000 +0000 - - Documented. - -commit ce4aca093a267da3dcd07b25f4390d393fd3c259 -Author: Martin Mares -Date: Thu Jun 1 16:16:18 2000 +0000 - - FIB documentation. - - I've changed the init callback type to a typedef to work around a bug - in kernel-doc I'm too lazy to hunt now. - -commit a783e259d8d710208280126177487cc790418515 -Author: Ondrej Filip -Date: Thu Jun 1 15:53:06 2000 +0000 - - Cisco-like "show ospf neighbors" implemented. - -commit b594ad238692738352cd8827d71038a356b0d5a5 -Author: Martin Mares -Date: Thu Jun 1 15:13:23 2000 +0000 - - tm_format_reltime() works with both past and future timestamps. - -commit c23f40b1458e448ec9e7c974a2c486f2eccff871 -Author: Martin Mares -Date: Thu Jun 1 15:04:25 2000 +0000 - - Use instead of . - -commit a9aa4c1ebb5ccdb2c6c7672267ad32670261a10b -Author: Martin Mares -Date: Thu Jun 1 13:13:49 2000 +0000 - - Inactive sticky neighbors have no scope. - -commit 23df5e4cf3b0ff10e7484fc5ca40cb5ea638078b -Author: Martin Mares -Date: Thu Jun 1 13:00:39 2000 +0000 - - Print route tag in hexadecimal and omit it if it's zero. - -commit bc00185e5a2d51d965465f117722fd4189437d24 -Author: Martin Mares -Date: Thu Jun 1 13:00:19 2000 +0000 - - Updated to new neighbor cache. - -commit 491cd43b777e46a301ae2a8f5400acaeb28b8ca5 -Author: Martin Mares -Date: Thu Jun 1 12:59:50 2000 +0000 - - Updated RIP to new neighbor cache semantics. When presented with next hop - equal to a local address, just ignore the route (as it is usually just an - external route exported by us echoed by some RIP peer), when given an - invalid next hop, moan to the log. - -commit 4a91150175268d49a1c17131838e5afad925788b -Author: Martin Mares -Date: Thu Jun 1 12:58:41 2000 +0000 - - Updated for new scope handling. - - Also, provide proper address scopes in struct ifa. - -commit 0f32f2a65a086561fdfd31d4efdea839ec9ce573 -Author: Martin Mares -Date: Thu Jun 1 12:58:04 2000 +0000 - - Modified the neighbor cache to remember local addresses as well. - - neighbor->scope now contains proper address scope which is zero (SCOPE_HOST) - for local addresses, higher (SCOPE_LINK, ..., SCOPE_UNIVERSE) for remote ones. - -commit 56ca7acd3afd0df7928b3adfe4a8db8b29b89fb2 -Author: Martin Mares -Date: Thu Jun 1 12:55:26 2000 +0000 - - BGP: RFC 2842 has replaced the cap-draft. - -commit df968040f6b0f9eb83aa9c9eb4b4d6dcee6a384a -Author: Ondrej Filip -Date: Thu Jun 1 12:17:08 2000 +0000 - - Print tag unsigned rather then signed. - -commit c52c7e764576fed027defa0c06a056f89912787a -Author: Ondrej Filip -Date: Thu Jun 1 12:08:14 2000 +0000 - - Calculate checksum when reflooding (after min ls_refresh). - -commit 5f4aee76a2e26a6947f47273d510edc524716a45 -Author: Pavel Machek -Date: Thu Jun 1 08:43:29 2000 +0000 - - Added && and ||. - -commit 1877dab21715eb23addb3391afbd8dbf571f833d -Author: Pavel Machek -Date: Thu Jun 1 08:34:30 2000 +0000 - - Allow - case net { - 62.0.0.0/8+: - 10.0.0.0/8+: - else: reject; - } - -commit 1895e81e0532f732f501036402bbdd1825885cfd -Author: Pavel Machek -Date: Thu Jun 1 08:32:49 2000 +0000 - - Allow matching on enums: - - if !(scope ~ [ SCOPE_HOST, SCOPE_SITE ]) then { - print "Failed in test"; - quitbird; - } - -commit 42542c56c23174bfaefb1b949b90ed72afbea8fd -Author: Ondrej Filip -Date: Thu Jun 1 00:32:08 2000 +0000 - - Cleanup. - -commit d27d0efe17a197ae41e25bc56526d5fc4ac4a93e -Author: Ondrej Filip -Date: Thu Jun 1 00:22:48 2000 +0000 - - Very stuping bug. (I took me 4 hours to find it!) - I just wrote "=!" instead of "!=". :-((((((( - -commit 2983460bc0adabe357ba839972ea8d09c97c32a4 -Author: Martin Mares -Date: Wed May 31 22:39:06 2000 +0000 - - Both `help' command and the `unknown command' error message now tell - the user to press `?' if he wants help. - -commit 2f5e5ff9d6e91e7a3e478b316d6b2d23003ad80e -Author: Martin Mares -Date: Wed May 31 22:28:36 2000 +0000 - - Before configuration file is read, log to _both_ syslog and stderr. - -commit c184d9d0bdded559fb9d19accd17b88963e46669 -Author: Pavel Machek -Date: Wed May 31 21:51:04 2000 +0000 - - Documentation update - -commit 0b1cad81623e85f1f1b9ef3652cdc389641496e5 -Author: Pavel Machek -Date: Wed May 31 21:50:13 2000 +0000 - - Complain when filter does not end in accept nor reject. - -commit b5958826cc5fc75b5f99c51559d1ffedea5884b4 -Author: Ondrej Filip -Date: Wed May 31 18:55:57 2000 +0000 - - Ehm, some other "down" steps. - -commit 3f6953a103b9a846625a0d51e30b6dc59eedc7f0 -Author: Ondrej Filip -Date: Wed May 31 18:45:16 2000 +0000 - - Some bugs in cleanup after iface down. - -commit 489b21555e59d39d1c26dd3051f077c6f0a07c85 -Author: Ondrej Filip -Date: Wed May 31 18:36:51 2000 +0000 - - Why does not work "sk_close(sk);rfree(sk);"? - -commit 46962be628c1bd1d9c2badeea181ff6f87f0cb29 -Author: Ondrej Filip -Date: Wed May 31 18:31:53 2000 +0000 - - Better debugging. - Safe neigh_list deleting. - -commit 3728267827e83bc095956b16256feae9e28adce7 -Author: Ondrej Filip -Date: Wed May 31 18:21:42 2000 +0000 - - And finally, Premature aging works. :-) - -commit 31ee3d5f214666a4b2da328dc894a5a9089acc87 -Author: Ondrej Filip -Date: Wed May 31 15:51:39 2000 +0000 - - Another step to make premature aging better. - -commit a9eeefd63ab7886bc2a5b8f0f7a2d1ec69a9c831 -Author: Ondrej Filip -Date: Wed May 31 15:28:13 2000 +0000 - - Warning destroyed. :-) - -commit 82364f4db8fff969932989bfcc5be89c73b15174 -Author: Ondrej Filip -Date: Wed May 31 15:24:29 2000 +0000 - - Flood my LSA (if exists) after old one is flushed. - -commit 0822995cb31b596d1fe9e8bb67f7e9d1c184694e -Author: Ondrej Filip -Date: Wed May 31 15:04:45 2000 +0000 - - Set E2 metric for internal routes to LSINFINITY. - -commit 9a04d0307e85913554122a2dd0397486b5ef702c -Author: Ondrej Filip -Date: Wed May 31 14:52:22 2000 +0000 - - Delete _all_ ext routes from unreachable neighbor. - -commit 528932368ac5c5ffe6ee3412fc8e9e1cb9cbd7db -Author: Ondrej Filip -Date: Wed May 31 14:43:42 2000 +0000 - - Stuping bug in net LSA origination. Now, I should survive - loss of my only neighbor. - -commit 1c1f1b6c0a9012aaf0d3b94275895cb87b5ff695 -Author: Martin Mares -Date: Wed May 31 14:27:49 2000 +0000 - - This should be enough from the SGMLtools distribution to make the - SGMLtools happy. - - The only symlink you need now is dist/birddoc -> dist/sgmltool. I'm - convinced it could be avoided by renaming the directory instead, but I'd - rather avoid it due to CVS pecularities. - -commit 1885aa8ce33e6617d45dbc2f5ee2852bf5f72e88 -Author: Martin Mares -Date: Wed May 31 14:25:27 2000 +0000 - - Clean LaTeX .aux and .toc files as well. - -commit fcdddff5f3f5c9f2a15377a9dd08f105a3b696a0 -Author: Martin Mares -Date: Wed May 31 14:24:21 2000 +0000 - - Formatting of progdoc works in both HTML and LaTeX. The LaTeX output - still has somewhat weird spacing, but it will be hopefully easy - to fix. - -commit d1660fd3f38c29739ff36c86c6010d65fb90c608 -Author: Ondrej Filip -Date: Wed May 31 14:21:56 2000 +0000 - - Sort cleanup in aging. - -commit 70a383198ae08bed395f2a083c1bea5b37447705 -Author: Ondrej Filip -Date: Wed May 31 14:06:33 2000 +0000 - - LSArt origination and routing table calculation is now not doing so - often. Instead of calculation I just schedule it latter. - -commit aa185265f1cb310c053edb1a3bde28b4dab94964 -Author: Martin Mares -Date: Wed May 31 13:54:00 2000 +0000 - - Updated headings and copyrights. - -commit 38cf78a97a1541cf80a5b10c08ab25d564654516 -Author: Martin Mares -Date: Wed May 31 13:30:58 2000 +0000 - - Added the introduction chapter of progdoc. - -commit 3caca73fd9c05121b9748793df5f1378af3a8ce5 -Author: Martin Mares -Date: Wed May 31 13:30:29 2000 +0000 - - Spelling check and update of LocalWords. - -commit fc741dab27913b9c5f9a97642158b5011a9c4700 -Author: Ondrej Filip -Date: Wed May 31 13:20:25 2000 +0000 - - Handle better next hop in external LSA. - -commit e0bbb7b7ef1aabbf037190225ebac11f7812ae84 -Author: Ondrej Filip -Date: Wed May 31 12:52:12 2000 +0000 - - Very ancient bug in (B)DR election, I didn't fill correctly my own IP. - -commit a7a3a0a383a9dadcd93d876e7d9b43f870f20941 -Author: Ondrej Filip -Date: Wed May 31 12:07:09 2000 +0000 - - Added tagging of external LSA. - -commit fec5bec0b5f0e114a635c99a731e922ce735ff81 -Author: Martin Mares -Date: Wed May 31 11:36:21 2000 +0000 - - Make documentation targets available from the top-level makefile as well, - but not with separate object tree yet. - -commit 46527a939e97a8a0d6d023ad7853e5e9a2df1ea9 -Author: Martin Mares -Date: Wed May 31 11:35:47 2000 +0000 - - Modified the Makefile to work in the source tree. - - From now, you can just `make userdocs' in doc, no need to use ugly scripts. - - Also, `make progdocs' builds the programmer's documentation in HTML, - LaTeX version to come later. - -commit fcb5f4a725c9edecca7d4646c633e42f66ab53b6 -Author: Martin Mares -Date: Wed May 31 11:30:18 2000 +0000 - - Updated all the Doc files to new format. - -commit 6be13de762cebc9fc5f977e0e3423a9e2ae23a95 -Author: Martin Mares -Date: Wed May 31 11:29:56 2000 +0000 - - New progdoc script generating SGML output. - -commit c9c3611734cfb8265586ad8447483cbba9727617 -Author: Martin Mares -Date: Wed May 31 11:29:22 2000 +0000 - - Added new output format `bird' which creates birddoc SGML. - -commit 3fc259549595c952befbe589764ae0bc1ae82728 -Author: Martin Mares -Date: Wed May 31 11:28:52 2000 +0000 - - Added tags for markup of programmer's documentation. - -commit c92795e934758a32472ebc5766ff0f61b1c1409c -Author: Martin Mares -Date: Wed May 31 11:28:07 2000 +0000 - - Moved old TeX documents to old/ to make them not interfere with doc building. - -commit a2a3ced83eea3919639adafbdacb7ec11011f9cb -Author: Martin Mares -Date: Wed May 31 10:07:27 2000 +0000 - - Added Pipe documentation. - -commit 0884f492232bb81366c04982bf4935307d273c26 -Author: Ondrej Filip -Date: Tue May 30 23:29:23 2000 +0000 - - Ehm, in had this in code: "break; i--;" :-( - -commit 3b0b2cb61f4e9c3bfbb4770b941c5aba56d9e70e -Author: Martin Mares -Date: Tue May 30 22:48:14 2000 +0000 - - IPv6: Absolutize link-scope addresses of incoming packets. - - IPv6 socket interface is hopefully right now. - -commit cfa6ab0593a02c3d4d0d959c771f72430f1adf67 -Author: Martin Mares -Date: Tue May 30 22:47:33 2000 +0000 - - Added ipa_absolutize() which converts link-scope addresses to global scope - ones according to prefix assigned to the corresponding interface. - -commit 69a20d2effb651e475b8ab8b04ee1a04a76db07f -Author: Martin Mares -Date: Tue May 30 21:46:21 2000 +0000 - - Recognize `!'. - -commit 5919c66e8fdd87ee7e5c5a1e0ce01893e0ce103d -Author: Martin Mares -Date: Tue May 30 21:25:32 2000 +0000 - - Route attributes for OSPF. - -commit 2cec475b8fbaa6cb0865ceacd900ffb678818330 -Author: Martin Mares -Date: Tue May 30 21:24:53 2000 +0000 - - Removed several unused local variables. - -commit 2f71123158973d770eee1dea64b46a4774bcf9a5 -Author: Martin Mares -Date: Tue May 30 21:24:15 2000 +0000 - - Killed bug in merging of dynamic attributes. - -commit caab3bb374d2671982d068c0fb0aa6217691d5bd -Author: Martin Mares -Date: Tue May 30 21:23:49 2000 +0000 - - Better formatting of protocol status. - -commit 36032dedc619a39d45d6abe79d27110a98751ba9 -Author: Pavel Machek -Date: Tue May 30 19:20:02 2000 +0000 - - Added section about client. - -commit 3e8645560624ac70ccc6d5f96fabcdae0a87cf4d -Author: Ondrej Filip -Date: Tue May 30 18:21:51 2000 +0000 - - Added \n in debug. - -commit 7e1c7efae2762752ef897bfa215b299127412b66 -Author: Ondrej Filip -Date: Tue May 30 17:57:06 2000 +0000 - - Stupig bug in debugging. - -commit 3dd8f983b649c83f50d44ca2093ab1f931eaba4d -Author: Ondrej Filip -Date: Tue May 30 17:51:22 2000 +0000 - - You can decide if add LSA into lsrth during flood_lsa(). - -commit 3d410fdfa1a6fc20952cf94b39ebff197a3c065a -Author: Ondrej Filip -Date: Tue May 30 17:49:25 2000 +0000 - - Reflood your old lsa. - -commit 13b02be25a41d7a505f7a888f948220a15edcf8a -Author: Ondrej Filip -Date: Tue May 30 17:00:17 2000 +0000 - - Don't run rt calculation twice. - -commit b477a9a855f75486c2e03bb7b68faba7923bc511 -Author: Ondrej Filip -Date: Tue May 30 16:49:48 2000 +0000 - - Don't send empty LS upd. (And better debugging.) - -commit e1e31816c4e6931465936afa39f5773cf4591b35 -Author: Ondrej Filip -Date: Tue May 30 16:48:42 2000 +0000 - - Aging delta changed. (Ehm, aging is very dirty I'll have to change it.) - -commit 1b128de364e5a1931c1cc61b04c1e44960007025 -Author: Ondrej Filip -Date: Tue May 30 16:13:59 2000 +0000 - - Better shutdown. - -commit 935ceabea43714e4abae7ecaac0f072e8a4ecb15 -Author: Ondrej Filip -Date: Tue May 30 16:08:29 2000 +0000 - - Don't send empty LS update. - -commit a548a7e167d50587aac4549d32924c95dc329e99 -Author: Ondrej Filip -Date: Tue May 30 15:05:47 2000 +0000 - - Bug in direct ack (via update). - -commit 4513280611d6c4e3409bf75139a9bd844843d462 -Author: Ondrej Filip -Date: Tue May 30 15:04:52 2000 +0000 - - Bug in socket closing. - -commit ef6f26b417060f9ac6c26224469b909a0c3aa933 -Author: Ondrej Filip -Date: Tue May 30 15:01:51 2000 +0000 - - Bug in lsa comparision. - -commit 2aa476a535c878a412bb732eae16d97848f07ff3 -Author: Ondrej Filip -Date: Tue May 30 13:39:06 2000 +0000 - - Yeah, the endianity bug found. - -commit 76e2514328a71abd1ed37b9b32421d2ab924b4c0 -Author: Ondrej Filip -Date: Tue May 30 13:25:47 2000 +0000 - - Better dumping. - -commit 7b099bf9a73b4a81f74d90fa8f413c9ebd85f384 -Author: Pavel Machek -Date: Tue May 30 11:50:17 2000 +0000 - - Recovering after change linuxdoc->birddoc - -commit 068b41272e8fbb81882a187dcef6d5f3d4e43ed2 -Author: Pavel Machek -Date: Tue May 30 11:27:42 2000 +0000 - - Don't say too bad things about our concurence. - -commit e9df1bb64786b24a230686310aeb4850b93fa5bb -Author: Pavel Machek -Date: Tue May 30 11:23:47 2000 +0000 - - Small change in working to make it obvious we are free software. - -commit 1cb10462c33731817f61ffbdd2e42c538baf0e0f -Author: Pavel Machek -Date: Tue May 30 11:22:12 2000 +0000 - - Date removed. - -commit f3b33928ce43794d499dc0e1fbbeb623572042d1 -Author: Pavel Machek -Date: Tue May 30 11:15:19 2000 +0000 - - Tried to change garbagetime -> garbage time to be more consistent. - -commit 24e1e2005b0728bfc404f248efb7d17b34cb0910 -Author: Pavel Machek -Date: Tue May 30 11:09:09 2000 +0000 - - Another testbed for filters. - -commit 04c3a83c60253d5c71500194a19160538c0da034 -Author: Ondrej Filip -Date: Tue May 30 11:07:31 2000 +0000 - - Better inicialisation. - -commit 0dc4431cde1eeb06d9b4d7dbf18242919ce2811a -Author: Pavel Machek -Date: Tue May 30 11:07:22 2000 +0000 - - Access to all attributes we should be able to access seems to work. - -commit 5970fcda8c4eb2cfe69c04d50429855c7c57bb6d -Author: Ondrej Filip -Date: Tue May 30 10:53:48 2000 +0000 - - Some exchange between init() and start(). - -commit 26c09e1d25abff7fb88959dc6fbaa7ae5eb295ad -Author: Pavel Machek -Date: Tue May 30 10:42:39 2000 +0000 - - Added read-only access to all required fields in rta. - -commit 2d6627a7a5e52f8314520f9aefd82040e24849cb -Author: Pavel Machek -Date: Tue May 30 10:42:00 2000 +0000 - - Fixed bug in RIP docs. - -commit 73232f6b18222d73b38eae58e2c4c90062202709 -Author: Ondrej Filip -Date: Tue May 30 10:36:57 2000 +0000 - - Better rt dumping. - -commit 2bdb5e0083b6f24d29d74bb5e62cd13d724ba54f -Author: Pavel Machek -Date: Tue May 30 10:23:04 2000 +0000 - - Cleaning static attributes - -commit 05dbc97b13534eb886945d1f291aaba34238c99c -Author: Ondrej Filip -Date: Tue May 30 10:20:14 2000 +0000 - - Bug in rt_notify. - -commit fe613ecded2fca875a146e1c07713f131e85f7ff -Author: Pavel Machek -Date: Tue May 30 10:13:32 2000 +0000 - - Access to few more attributes is needed. - -commit f7876c36602015dbf6d7aa3d73fda5ad1c2f6c5a -Author: Pavel Machek -Date: Tue May 30 10:13:15 2000 +0000 - - More todo in documentation. - -commit 298f2530ec05ee86c52f2fbce306ac186a3f6dd8 -Author: Pavel Machek -Date: Tue May 30 10:13:02 2000 +0000 - - Moved description of filters to programmers docs. - -commit 9e85a5e6f26866a255577ff10786c12a64cba624 -Author: Martin Mares -Date: Mon May 29 22:16:04 2000 +0000 - - Delay user input whereever appropriate. - -commit 4761efdb43aa128fa0326963d88debe8fb942c84 -Author: Martin Mares -Date: Mon May 29 22:10:18 2000 +0000 - - Tracing of CLI connections/commands can be now controlled - by `debug commands ' in the configuration. Level 0 means - no tracing, 1 means connections only, 2 includes all commands. - -commit 26eee1c33ac90ccbc5753afac06d34980fade2b8 -Author: Martin Mares -Date: Mon May 29 22:09:29 2000 +0000 - - Updated TODO. - -commit 7294f68b3b3474183434ae05b43a344f1bfce6db -Author: Martin Mares -Date: Mon May 29 22:08:04 2000 +0000 - - `path metric' and `disable after error' are switches, not numeric clauses. - -commit e67af42805c16093bb720a1bd04ad8932e86e49e -Author: Martin Mares -Date: Mon May 29 21:58:35 2000 +0000 - - Support --version and --help. - -commit 5459fac61f3a645c636bdf32c140f4d7083034d2 -Author: Martin Mares -Date: Mon May 29 21:03:27 2000 +0000 - - Added BGP documentation. - -commit 56ab03c71f35c6c360b58b88f9e524c97714fdf6 -Author: Martin Mares -Date: Mon May 29 13:47:18 2000 +0000 - - Added introduction to BGP. - -commit 0e4789c2c3a8f217f01a4e472c8dd45db609c34b -Author: Martin Mares -Date: Mon May 29 13:13:58 2000 +0000 - - Added Kernel protocol documentation. - -commit d9d41c60426ab1896bc689cd2a26c51f49e27e3a -Author: Martin Mares -Date: Mon May 29 12:46:27 2000 +0000 - - Capitalize properly in Install section. - - BTW, what about configure options and similar things? - -commit 4f88ac47c671af2221061b793fa495a78994e44a -Author: Pavel Machek -Date: Mon May 29 12:23:49 2000 +0000 - - Reduce number of chapters -- having subchapter for 2 lines of code looks ugly in output. - -commit 0e694e041a99860454fe0a74eb83133d89896d62 -Author: Martin Mares -Date: Mon May 29 12:18:30 2000 +0000 - - Minor fixes as requested by Pavel. - -commit 440439e3cc2ce7a9e6b36e6801f37c42cce1a729 -Author: Pavel Machek -Date: Mon May 29 12:05:56 2000 +0000 - - Really short installation section added. - -commit 04a22949d7f63d6979642e41ded0f61d7a477980 -Author: Martin Mares -Date: Mon May 29 12:05:21 2000 +0000 - - Renamed the DTD from linuxdoc to birddoc. - - Pavel, please check whether it builds in your environment as well. - -commit 897cd7aa559033aae99281e569a5153a22a952f9 -Author: Martin Mares -Date: Mon May 29 12:03:28 2000 +0000 - - Tried to write a better introduction. - -commit 9d8934891405348ad925d8421b673ea979f256eb -Author: Pavel Machek -Date: Mon May 29 11:53:24 2000 +0000 - - Docs updates. - -commit 79a2b697e3c94a787d72db4ed85b78928d3240c2 -Author: Martin Mares -Date: Mon May 29 11:30:25 2000 +0000 - - Added description of Static, Device and Direct protocols. - -commit 98627595fb4223991d60f809bbeac98cf34aabfb -Author: Pavel Machek -Date: Mon May 29 11:22:43 2000 +0000 - - Better description of how route is selected. - -commit d247d261e55bec7fadfef89c39ca3257816af771 -Author: Pavel Machek -Date: Mon May 29 11:22:30 2000 +0000 - - Info about client. (Mj, if you tell me that's trivial, what about you - writing it?) - -commit 2f647f3f9f51effbb63aee5bb2c45d054b7922e4 -Author: Pavel Machek -Date: Mon May 29 11:13:51 2000 +0000 - - Added "what is router" to introduction. - -commit 1b55b1a3640da3ec2b032dcea3f4f7cbdff82303 -Author: Martin Mares -Date: Mon May 29 10:32:37 2000 +0000 - - Spelling fixes. - - Added skeleton for subchapters on all the protocols. Each subchapter should - contain: - - Introduction (brief intro to the protocol, where should it be used, - references to the relevant standards) - Configuration - Attributes - Example - - Added a more detailed description of RIP attributes. - -commit e9d6b1d19fc35e611aa5a6020c0b531dee96d77d -Author: Ondrej Filip -Date: Sun May 28 20:11:56 2000 +0000 - - Kosmetic change in debugging. - -commit f7c0525edcffc6c85d0e526c4c9741b06fc521d2 -Author: Ondrej Filip -Date: Sun May 28 19:16:04 2000 +0000 - - get_route_info() added. - -commit d150c6379c03a9df98ff5dd53a6442a10713b571 -Author: Pavel Machek -Date: Sun May 28 19:11:08 2000 +0000 - - Documentation update. - -commit cdc25e8db7bfb38a9aca71abc5c202c25f4b0732 -Author: Ondrej Filip -Date: Sun May 28 19:07:39 2000 +0000 - - To find out a type of route (external, inter/intra area) - -commit 4414d9a57a0dae3da0e0e0d924bf8cab89070716 -Author: Ondrej Filip -Date: Sun May 28 18:49:33 2000 +0000 - - get_status() implemented. - -commit d5f029df482e596ccdbac341f605f6f809229db1 -Author: Ondrej Filip -Date: Sun May 28 18:34:20 2000 +0000 - - Just added some debug(). - -commit 4bd28fb68e6e691aee87cec41f219224e2dd69dc -Author: Ondrej Filip -Date: Sat May 27 15:36:02 2000 +0000 - - Better shutdown. (Flush my own router LSA and send 1WAY to every neighbor.) - Ext LSA originating and flushing added. - -commit e8085abaa76c32bb325e378dfe2851bc98602c1e -Author: Ondrej Filip -Date: Sat May 27 14:17:35 2000 +0000 - - Originating of external LSA. - -commit 2d5b999236c20d293006af0b4d94af7ae04dd2a7 -Author: Ondrej Filip -Date: Fri May 26 19:04:18 2000 +0000 - - Import control implemented. - -commit 216fd83c4b213ea3774d2c536ae089ea1e81b443 -Author: Pavel Machek -Date: Thu May 25 16:28:08 2000 +0000 - - Spell checking. - -commit 9b24a6fb94049691075dfcdc00e2a0ae244c2325 -Author: Pavel Machek -Date: Thu May 25 16:17:54 2000 +0000 - - Text version generated from lynx looks as ugly as hell, sgml is much better - at generating nice output. Unfortunately, sgml output contains a^ha highlight - some printers do not like. - -commit d26524fa0c06f6716d5e226b18d7d4770924c6d4 -Author: Pavel Machek -Date: Thu May 25 15:28:24 2000 +0000 - - Add section about routing tables. - -commit ad9074e9ba2f2c1fa7e681b5f79f9049e5c640f8 -Author: Pavel Machek -Date: Thu May 25 15:20:40 2000 +0000 - - Cleaned up warnings. - -commit 69477cad708235f2ab79796dc62c06d3c879111c -Author: Pavel Machek -Date: Thu May 25 15:11:13 2000 +0000 - - Add section about utility functions in filters - -commit 4a5bb2bf1bbbb7d2bba7776af481a13a58ec39ae -Author: Pavel Machek -Date: Thu May 25 15:01:08 2000 +0000 - - Description of types needed for BGP. - -commit 9a09a64bb4160a5bb79cdf91bd95b7f77966f62e -Author: Pavel Machek -Date: Thu May 25 14:58:38 2000 +0000 - - Use ? in path matching to avoid /* trap. - -commit ba1dda495ad29cd86260533828ce38c7d327f045 -Author: Pavel Machek -Date: Thu May 25 14:50:46 2000 +0000 - - SGML correctness fix. - -commit 0e5373fd823d174d0cdd7820fc94cdbe4b0db5a3 -Author: Pavel Machek -Date: Thu May 25 12:33:42 2000 +0000 - - Some more documentation, plus minor fixes. - -commit 72282e2a1b52552eadd61a86659119db8478427d -Author: Pavel Machek -Date: Thu May 25 12:33:15 2000 +0000 - - Fixed comment not to be misleading. - -commit 416e3ee4b07d9ed30ada45eee736d877efe139db -Author: Martin Mares -Date: Sat May 20 11:00:14 2000 +0000 - - Get Linux version from , not `uname -r`. - -commit 2eca3b3a9ce8ea405f81cb1dbf55b79d3b2d3c18 -Author: Martin Mares -Date: Fri May 19 19:49:33 2000 +0000 - - Routing table garbage collector gets really called. - -commit 0ba8a6147d2a6ca4611c9e87e6b9d640d94966b4 -Author: Martin Mares -Date: Fri May 19 19:40:12 2000 +0000 - - Fixed a very nasty bug in FIB iterators. - -commit d2a7c0e9b2b51287cca6bf9f9ef513cbe29d4dbd -Author: Martin Mares -Date: Fri May 19 18:05:19 2000 +0000 - - Don't print trace messages about null updates. - -commit 3ced9b349daeb64357136311e436401c246d7777 -Author: Martin Mares -Date: Fri May 19 18:05:01 2000 +0000 - - Fixed freeing of non-embedded extended attributes. - -commit 075898dea7ee73b49462af3d3ab0269fd46afcc4 -Author: Martin Mares -Date: Fri May 19 18:03:53 2000 +0000 - - No more problems when protocols gets disabled during feeding. - -commit dc6405d27e1ecedf6289039c7b3ed94c50683b2d -Author: Martin Mares -Date: Fri May 19 17:21:42 2000 +0000 - - Latest changes by Pavel have removed the error messages printed after - unsuccessful socket open, but replaced them by segmentatio fault! - - Grrrrrrrrr. - -commit e66e6c2119e9de2f8012e587eafe752723706265 -Author: Pavel Machek -Date: Fri May 19 16:57:40 2000 +0000 - - If community list is not defined, act as it is empty. - -commit 9511a483b1b735d8bf9f671d494b363da5719ecc -Author: Pavel Machek -Date: Fri May 19 16:44:25 2000 +0000 - - Less error messages in case sk_open fails. - -commit eb4097e4e47db23403c4050b43ea5136ffbe4b41 -Author: Pavel Machek -Date: Fri May 19 16:22:53 2000 +0000 - - Added name of protocol to messages being logged. - -commit af0b25d20d1476d81696fb0241a815fb45168f53 -Author: Pavel Machek -Date: Fri May 19 15:59:21 2000 +0000 - - More updates. - -commit 242352b7a7f1b181b6e42dc77b998005d3f07c78 -Author: Pavel Machek -Date: Fri May 19 14:13:49 2000 +0000 - - Improve docs of log statment, improve markup. - -commit 8af8a87375f3a609583866a5f50487baebe38e2e -Author: Pavel Machek -Date: Fri May 19 14:05:55 2000 +0000 - - Descriptive lists rendered better in TeX. - -commit a0dd1c74334fa22588f9d1c8cb73013f1940b974 -Author: Pavel Machek -Date: Fri May 19 13:58:39 2000 +0000 - - Some spellchecking, and use right tags for right things. - -commit 5e88d7302599b7ac521624c77adf0b3c72601670 -Author: Martin Mares -Date: Fri May 19 11:01:41 2000 +0000 - - BGP now reports originating AS and origin type in get_route_info(). - -commit f49528a3dfa034415527824cbbd0762f3829f0cd -Author: Martin Mares -Date: Fri May 19 11:01:06 2000 +0000 - - Added as_path_get_first(). - -commit f7ad556f2017075abaef659bf018a0ce215b13b3 -Author: Martin Mares -Date: Fri May 19 11:00:47 2000 +0000 - - Commented out the `inserting entry which is already there' message since - it's pretty normal: during feeding of the protocol, a new route can appear - which will be announced normally and then repeated by the feeding process. - -commit 76dfda9e74580b6c07206b7afbbdafeea36ad08f -Author: Martin Mares -Date: Fri May 19 10:59:47 2000 +0000 - - Fixed a buglet in asynchronous feeding and increased maximum number - of routes allowed per feeding phase. - -commit ac5d801217b4b85a5f716ace25f7f9ac48dfee0f -Author: Martin Mares -Date: Fri May 19 10:46:26 2000 +0000 - - Asynchronous feeding of protocols. - -commit 0850ce22d76c80c4f6a10fd0139d4cc903716bfa -Author: Ondrej Filip -Date: Wed May 17 21:20:47 2000 +0000 - - Smal debug bugfix. - -commit 6d5e703dc9ac387d72005f3b5da82e80275d5fc6 -Author: Pavel Machek -Date: Wed May 17 20:23:05 2000 +0000 - - Minor cleaning - -commit 00c1f79a79281c16beec132d945db480daca958d -Author: Ondrej Filip -Date: Wed May 17 20:01:25 2000 +0000 - - rte_same implemented. - -commit bbd76b421a1975560084e50669db9cacd61d2b58 -Author: Ondrej Filip -Date: Wed May 17 19:27:51 2000 +0000 - - rte_better implemented. - -commit 9f0d45d634ac38d54ed92c5726fbaed65850e15f -Author: Pavel Machek -Date: Wed May 17 12:14:05 2000 +0000 - - Finished cleanng up mess: multiplication reinstalled. - -commit 4ee2178935b1f4cdd465e290c13f6580901cec8d -Author: Ondrej Filip -Date: Wed May 17 00:28:45 2000 +0000 - - Don't die, if you receive strange LSA. - -commit 7f6b3cf247c0df8d10e9ed29a5ff6a6af5e1cf8f -Author: Ondrej Filip -Date: Wed May 17 00:28:11 2000 +0000 - - Typo in comment. - -commit 18a0c0bb763d918f3a06bfeb2be2b1051a7f4629 -Author: Ondrej Filip -Date: Tue May 16 23:59:38 2000 +0000 - - Downing of interface should work. - -commit 8fb0c2c298fbfa133cf783a1547bc3b1c84fe466 -Author: Ondrej Filip -Date: Tue May 16 23:24:50 2000 +0000 - - Calculation of external routes finally works. - -commit 31834faaf3ab055242e3a9998a37029b56f54d8a -Author: Ondrej Filip -Date: Tue May 16 22:43:30 2000 +0000 - - Ehmm, removed 'if(1 || ...' so I can test the second part . - -commit b1c9d871614874092e397ae505799be82284713d -Author: Martin Mares -Date: Tue May 16 22:37:53 2000 +0000 - - Fixed the horrible mess Pavel has created with his last commit. - -commit 508c36ab7981a8e50d1235c2c443491e4b04aa01 -Author: Ondrej Filip -Date: Tue May 16 22:34:49 2000 +0000 - - Routing table calculation for ext LSAs having next-hop=!0.0.0.0 - -commit a96a979d5b2b3a7ef02d878e9598d3268cb4c8a7 -Author: Pavel Machek -Date: Tue May 16 18:50:51 2000 +0000 - - Line numbers for runtime errors (what's wrong with cvs? I could not - commit this from home) - -commit 7581b81bd7a77b5baebbd43833c00574d543c62e -Author: Pavel Machek -Date: Tue May 16 18:47:06 2000 +0000 - - More additions to documentation and spellchecking. - -commit e5a47266d0d6b8614c5199ea513de029b35552b0 -Author: Martin Mares -Date: Tue May 16 15:08:52 2000 +0000 - - Turned off LOCAL_DEBUG. - -commit e79671a72ccd392debcce1cdc05e46747eaf37e2 -Author: Martin Mares -Date: Tue May 16 15:08:43 2000 +0000 - - Fixed incorrect error message about router ID syntax. - -commit 5b846de6a6361b3c8aac84438e7b332c972f2a08 -Author: Pavel Machek -Date: Tue May 16 15:05:05 2000 +0000 - - Interface dummy is too strange for me... but psst, that's secret. - -commit be77b6890c5f6b956553c0432554e5912a30528f -Author: Martin Mares -Date: Tue May 16 15:02:33 2000 +0000 - - Poisoning: take there... - -commit d6796e7b546bd0a28b85666a95eda039eabc5c5f -Author: Pavel Machek -Date: Tue May 16 15:02:27 2000 +0000 - - Don't segfault when someone adds passwords. - -commit 2f2663bdb735ca155c32b0e12da814e62bbf9e9d -Author: Pavel Machek -Date: Tue May 16 15:00:15 2000 +0000 - - Password same now actually works - -commit 898fdd85dc4568816ac0436c1b012f2fb35ef3e4 -Author: Pavel Machek -Date: Tue May 16 14:58:06 2000 +0000 - - Rip should now reconfigure itself only if needed. - -commit 60de3356ab9b1996a84e3ba2865176a078b6d0ca -Author: Pavel Machek -Date: Tue May 16 14:24:33 2000 +0000 - - Resolved shift/reduce conflict - -commit e2f4f275646d21de363c32ff3c8fb4f492f07c04 -Author: Martin Mares -Date: Tue May 16 13:53:44 2000 +0000 - - Oops, the poison was too deadly... - -commit b8e60d3562277762ec372424482b22c024e657d6 -Author: Martin Mares -Date: Tue May 16 13:51:31 2000 +0000 - - Added poisoning of free'd objects when we're debugging. - -commit df9f0fb30a7046872eff21624a315d5fd56e938f -Author: Martin Mares -Date: Tue May 16 13:43:26 2000 +0000 - - Don't log state changes if nothing user-visible has changed. - -commit f990fc61e0dd13ae90c9bbff811736dfd52988b0 -Author: Martin Mares -Date: Tue May 16 13:36:38 2000 +0000 - - When in persist mode, don't delete routes from kernel tables even if - they cease to exist in our routing tables due to protocols having shut down. - -commit c5a06f65ee20328b8d0f2276287e223e4fd4a595 -Author: Pavel Machek -Date: Mon May 15 12:27:45 2000 +0000 - - Allow other operations than +. - -commit f4ab23174688920e44bb4cae6e8b4f280a066e28 -Author: Martin Mares -Date: Mon May 15 12:19:28 2000 +0000 - - bgp_get_status: If protocol is down, don't print BGP state. - -commit cbfd671f114a96095f021662ad1cf0eaa6d089c1 -Author: Pavel Machek -Date: Mon May 15 12:19:26 2000 +0000 - - Allow accessing defined symbols. - -commit cc590a11a7a285463dff89d0bd677d0762dd8e45 -Author: Martin Mares -Date: Mon May 15 12:15:18 2000 +0000 - - Changed syntax of expressions. Each `expr' can be now either a numeric literal - or a symbol or parenthesised filter expression. - -commit 6be662d917822e9a23b0abd613e170c1d42bfdbe -Author: Pavel Machek -Date: Mon May 15 12:07:09 2000 +0000 - - Use new eval mechanism for testing filters. - -commit e3f2d5fce3e339bb34f14d7b2569c1bd43b741ba -Author: Martin Mares -Date: Mon May 15 11:48:23 2000 +0000 - - Cleanup of configuration. - - o Use `expr' instead of `NUM' and `ipa' instead of `IPA', - so that defined symbols work everywhere. - o `define' now accepts both numbers and IP addresses. - o Renamed `ipa' in filters to `fipa'. - - Pavel, please update filters to accept define'd symbols as well. - -commit 3b1c523d79763b22e0fe06862ff349fd94e816b1 -Author: Martin Mares -Date: Mon May 15 10:53:56 2000 +0000 - - Got rid of startup functions and filters_postconfig(). - - By the way, how do you expect pointers to fit in an int? - -commit 1c20608e02109ef0839e0168d100c75f0cc65fd9 -Author: Martin Mares -Date: Mon May 15 10:49:38 2000 +0000 - - Added f_eval_int() and EVAL configuration command. - -commit 9449c91ab2eb962b17989125c712f805f82a092b -Author: Martin Mares -Date: Sat May 13 11:42:42 2000 +0000 - - Added `show route for ' which looks up route leading to - given network. - -commit 56d6c530eba46dde7280d6743fea7e750f2d5635 -Author: Martin Mares -Date: Sat May 13 11:42:06 2000 +0000 - - Added fib_route() which does (although very slow) lookup of longest-match - routing in a FIB. - -commit d3abfbc68d7f921b2547b39a6baa9bee6c89b78d -Author: Martin Mares -Date: Sat May 13 11:41:26 2000 +0000 - - Added prefix_or_ipa. - -commit 758458be054ebdf4cd77620faf214f2b491a49dc -Author: Martin Mares -Date: Sat May 13 11:17:49 2000 +0000 - - Unified parsing of prefixes. - - Had to rename `prefix' in filters to `fprefix'. - -commit 02bd064ab76f163313261dad5c273cb376be2a75 -Author: Martin Mares -Date: Sat May 13 11:02:02 2000 +0000 - - Adapted to new rt_notify semantics. - -commit e4bfafa1008918cf904ede023feb18fa4cb7d524 -Author: Martin Mares -Date: Sat May 13 11:01:41 2000 +0000 - - Manual enable/disable works right. - -commit 08f0290a1ebf94624c4eb4cbcb10e2b35a846432 -Author: Martin Mares -Date: Sat May 13 11:00:37 2000 +0000 - - Changed semantics of the rt_update hook. The attribute list we pass now - contains all attributes, not just the temporary ones. This avoids having - to merge the lists inside protocols or doing searches on both of them. - - Also, do filtering of routes properly. (I'd like to avoid it, but it's - needed at least in the krt protocol.) - -commit bfd7117846271a5e54271ee5248addd7e10ad021 -Author: Pavel Machek -Date: Fri May 12 10:57:36 2000 +0000 - - Documentation fixes suggested by mj - -commit 7e681ef3603862829c3bbf6b5c81c69c34faeb81 -Author: Ondrej Filip -Date: Fri May 12 00:22:43 2000 +0000 - - Calculation of external routes works. :-) - -commit be2bb403414b2d8cd608b710a29992b2c8a4c8b0 -Author: Ondrej Filip -Date: Thu May 11 22:02:53 2000 +0000 - - Minor changes. - -commit 5da1f935374b2e0435b67cc4d867369d522e62ff -Author: Ondrej Filip -Date: Thu May 11 22:00:55 2000 +0000 - - Bugfix in flooding. (bad size) - Better debugging. - More robust in receiving. - -commit c8d1f3feb2e2ca12aee76b1ce907dfff31c1012b -Author: Ondrej Filip -Date: Thu May 11 22:00:16 2000 +0000 - - Better debugging. - More robust. - -commit 7a42e6ce899ceec7329212b9ceca4f15387fc280 -Author: Ondrej Filip -Date: Thu May 11 17:14:57 2000 +0000 - - Bugfix in network LSA originating. - -commit 67edcf392f74e1c79ea521d583df7ca365caea0b -Author: Martin Mares -Date: Thu May 11 16:55:26 2000 +0000 - - Updated README, generating the first alpha release. - -commit 0e5aa966cca94152363b2d8e9c1b316c04d90adb -Author: Martin Mares -Date: Thu May 11 16:30:56 2000 +0000 - - Multicast problems should be gone, although the fix is Linux only and we'll - need to figure out something better when working on new ports. - -commit 28323d9ddbdcfa35c6dec139da4eefca584b143e -Author: Martin Mares -Date: Thu May 11 15:05:13 2000 +0000 - - Several minor RIP changes (Pavel, please check as usually): - - o Use FIB_ITERATE_INIT instead of calling the function fit_init() - which is explictly marked as private in route.h. - o When printing trace messages, don't spit out protocol name twice. - o Some messages are a bit more verbose. - o Added a bunch of FIXME's. - o When running in broadcast mode, don't forget to bind the local - end of the socket to the same broadcast address, so that we don't - get the broadcasts looped back via different interface. I'm just - going to look up the same problem for multicasts. - -commit 109c2f6cf350069c12abb7d182da6458ff56c1c7 -Author: Martin Mares -Date: Thu May 11 12:30:06 2000 +0000 - - If a broadcast address is missing, go fake one. - -commit 2138d3b4d84058338ad4010eff8da62afa6531ab -Author: Martin Mares -Date: Thu May 11 12:20:07 2000 +0000 - - Use correct flags for the LOCAL_PREF attribute. - - When an invalid attribute is found, copy the entire attribute to the data - section of the NOTIFICATION message. - -commit 6e06e6eef098859da95ff56a8ee9b4c75467901a -Author: Pavel Machek -Date: Thu May 11 12:00:35 2000 +0000 - - Critical files from linuxdoc1 distribution checked in. - -commit 0e7a720a1c8119912c00edf893702857c0d39d04 -Author: Pavel Machek -Date: Thu May 11 11:54:03 2000 +0000 - - Use instead of in bird.sgml, fix url references. - -commit 7692aad10c22a58a6f83d82fc0b11db94cc777f9 -Author: Pavel Machek -Date: Thu May 11 10:47:33 2000 +0000 - - Don't include Rules: they are not needed and break stand-alone make of documentation. - -commit ec21aecfddde3be2b061850a050108265dfbf194 -Author: Pavel Machek -Date: Thu May 11 10:33:18 2000 +0000 - - Fixed nasty segfault in rip. - -commit 10f5c47d2e3d9fdeb2dd4ade1d09a1e06b53a7f6 -Author: Pavel Machek -Date: Thu May 11 09:41:16 2000 +0000 - - Some more paranoia into rip_insert and rip_delete - -commit 94d1a6c9dc9ac578cb88428462ab41f113ca4e23 -Author: Pavel Machek -Date: Thu May 11 09:36:55 2000 +0000 - - Unused variable killed. - -commit 394920a09c6163d2b98896802526c79c82f52d20 -Author: Ondrej Filip -Date: Wed May 10 23:42:37 2000 +0000 - - Test better lsa size. - -commit 31dca4353460b7a8bfb272e63ceac46deb3a6944 -Author: Ondrej Filip -Date: Wed May 10 23:42:13 2000 +0000 - - Be more verbose. - -commit 74ac7cdb1afe1e23a130b290f4a366268073f62c -Author: Ondrej Filip -Date: Wed May 10 23:41:52 2000 +0000 - - Bugfix in (B)DR election. - -commit ff73f1d63d2d1e49737ea2471dc5cb92e9591847 -Author: Ondrej Filip -Date: Wed May 10 23:41:18 2000 +0000 - - More robust tests in packet receiving. - -commit 13741548a6a75479577ea991bad1e38a4fba6320 -Author: Ondrej Filip -Date: Wed May 10 15:04:21 2000 +0000 - - Some better lsa checking added. - -commit a9c41c854802d1a8d44e666548423589022111c8 -Author: Ondrej Filip -Date: Wed May 10 14:29:00 2000 +0000 - - Out dump deleted. - -commit 2a41c8d9fcd2907a531c7306e174f51218486d57 -Author: Pavel Machek -Date: Wed May 10 13:42:50 2000 +0000 - - use password_same utility function - -commit 45a48e2de21cbf1a48c6f478ed068e48f20f918b -Author: Pavel Machek -Date: Wed May 10 13:42:46 2000 +0000 - - password_same utility function - -commit a3f657ac764ff38a5829f27a0dccbf6220043a1a -Author: Ondrej Filip -Date: Wed May 10 13:35:49 2000 +0000 - - Ever test possibility of forming of adjacency. - -commit 3e474192745e7e92d27cad7ffa16a8395e884cf2 -Author: Pavel Machek -Date: Wed May 10 13:23:21 2000 +0000 - - Inlined metric and mode into struct rip_interface to make reconfig - work. - - reconfigure is conservative but should work. - -commit 30aa02d70df2275d2289d9b736d879b9951bcaee -Author: Pavel Machek -Date: Wed May 10 13:05:39 2000 +0000 - - rip_reconfigure done right - -commit b8524e9be4f1d15f4cd2cd365d7842eff8d5a499 -Author: Pavel Machek -Date: Wed May 10 12:48:06 2000 +0000 - - ipa_same does not exist. - -commit 0bff946c0a29469b669939813e5a2861c1f010fb -Author: Pavel Machek -Date: Wed May 10 12:46:47 2000 +0000 - - Nicer messages from rip. - -commit 6f3849774ffe35e445e33ba03f041c1a84ba35f1 -Author: Pavel Machek -Date: Wed May 10 12:38:05 2000 +0000 - - Use ea_get_int instead of ea_find. - -commit c7e46aae66861ce282e9b1a0140fa422763094ce -Author: Ondrej Filip -Date: Wed May 10 12:37:43 2000 +0000 - - Destroying of neighbor moved from 'hello' to 'neighbor' and - improved. - -commit 7f5f44bb9248f05f397617f3874feef26bbb0b0b -Author: Pavel Machek -Date: Wed May 10 12:32:45 2000 +0000 - - Reconfigure hook copied from bgp. - -commit 84a1305437ddd893771c43d1a9bff32260a56789 -Author: Pavel Machek -Date: Wed May 10 12:26:09 2000 +0000 - - Send first udpate sooner. - -commit 14758d87c48e9d829f58ace0736b0c5b3c7dc6ae -Author: Pavel Machek -Date: Wed May 10 12:23:06 2000 +0000 - - Only announce change to main routing table if it is better than current. - -commit 353f3261385267fd07b634284989a760fc37b79d -Author: Ondrej Filip -Date: Wed May 10 12:22:00 2000 +0000 - - Better dumping. - -commit 5e50f0a0289517e64e026cb27e886d49e6044aca -Author: Pavel Machek -Date: Wed May 10 11:57:56 2000 +0000 - - Don't touch used memory. - -commit e8bd039da8de22de85bd135617b4a8ce9c979585 -Author: Ondrej Filip -Date: Wed May 10 11:52:39 2000 +0000 - - Bugfix in ip_addr endianity. - -commit be3b6dc574c26ab3292fb2ceb94809242bea3d79 -Author: Pavel Machek -Date: Wed May 10 11:48:34 2000 +0000 - - Killed unused variable. - -commit 28950169e7ac82ceb9a6d72fe2789714b4073eb2 -Author: Ondrej Filip -Date: Wed May 10 11:48:21 2000 +0000 - - Bug in (B)DR election fixed. - -commit d9f89e011498ec54006a026d9e0dd963db663ab0 -Author: Pavel Machek -Date: Wed May 10 11:40:30 2000 +0000 - - You can now say "mode multicast". - -commit 65a9c57175b60048d5501b2c951d5e46b3909fcb -Author: Ondrej Filip -Date: Wed May 10 11:22:08 2000 +0000 - - Change u32 to ip_addr in ext lsa. - -commit aa1e082c6779505e9ca24ba9f9d6cdfd4c647b06 -Author: Ondrej Filip -Date: Wed May 10 10:47:17 2000 +0000 - - Calculation of external routes. - -commit 4bfe4e8551722533cc99c776b3b70818ef59bf24 -Author: Pavel Machek -Date: Wed May 10 06:56:42 2000 +0000 - - Fix segfaults by using new ea_get_int. - -commit c0100454cf37833d23fdb9d24412de659f683c12 -Author: Pavel Machek -Date: Wed May 10 06:54:40 2000 +0000 - - Added more convient interface for ea_find. - - What is special about int default;? Compiler chokes on that! - -commit fe95ab68164f0c9f18e65f7965ac4d93b24bef97 -Author: Ondrej Filip -Date: Tue May 9 21:52:58 2000 +0000 - - FIXME's removed by deleting them. :-) - -commit 32fa4a5a461eb1af4146d9985663d90fcddd9697 -Author: Ondrej Filip -Date: Tue May 9 21:06:48 2000 +0000 - - Premature aging of self-originated LSA received in flooding. - -commit 3b8b1bd03709d2fa2eab8ec81321717e3b58dcaf -Author: Ondrej Filip -Date: Tue May 9 19:38:34 2000 +0000 - - Better dumping. - -commit a3ae6246c29ecceefc1e867c7b5f73a5b3c857c9 -Author: Ondrej Filip -Date: Tue May 9 19:38:16 2000 +0000 - - Bugfix in lsrt slist adding. - -commit b224ca32cfb5268db4984b5a640ab8a73852059b -Author: Ondrej Filip -Date: Tue May 9 19:36:32 2000 +0000 - - Flushing of old LSAs added. - -commit 850fda2518d6e91ca8e126ff91adad62fd507276 -Author: Ondrej Filip -Date: Tue May 9 18:35:57 2000 +0000 - - Backup seen is not called so often. - -commit cd22a62b3ce3aa4cf8985337657ec9750176aa49 -Author: Ondrej Filip -Date: Tue May 9 18:20:39 2000 +0000 - - Don't send flushed LSAs. - -commit 9669362f0577dbda0d7b9495d0c2fec11fa866f1 -Author: Ondrej Filip -Date: Tue May 9 18:17:34 2000 +0000 - - Many bugfixes. (I added one entry twice to slist.) - Debug cleanup. - Retransmiting of unacknolegded LSAs - -commit 5f743d969739d6dca12b51561baac3131e160429 -Author: Ondrej Filip -Date: Tue May 9 13:56:47 2000 +0000 - - Many bugfixes. Actually, how could this ever work? :-) - -commit 5d608eba1636e307624300fdd47b9024be92d39a -Author: Ondrej Filip -Date: Tue May 9 12:31:38 2000 +0000 - - Bug fix in sending updates. - -commit 0e1b949be7f71d038e871dac159b424e76978bff -Author: Ondrej Filip -Date: Tue May 9 12:18:41 2000 +0000 - - Bugfix in testing of possibility of adjacency. - -commit 432996f40fceb58cd5ee5026eb4f7018ef6af1ef -Author: Ondrej Filip -Date: Tue May 9 12:03:57 2000 +0000 - - Better dumping. - -commit 54ac9d2e03c6ae44b4e183c9bcf963196218c477 -Author: Ondrej Filip -Date: Tue May 9 12:02:48 2000 +0000 - - Bugfix in hello. - -commit 4057093fa40248c5b607039481576a6c5e4e902b -Author: Ondrej Filip -Date: Tue May 9 11:52:44 2000 +0000 - - Small cleanup. - -commit 551d44438275e9ebc9e7590814f413ac7d0cccd6 -Author: Ondrej Filip -Date: Tue May 9 11:29:52 2000 +0000 - - Sorry, it didn't compile. :-( - -commit b29c620f90d429b868038984a5427470f00aebac -Author: Ondrej Filip -Date: Tue May 9 11:27:31 2000 +0000 - - Another bugfix in neighbor state machine. - -commit 279a3b76d193944431a992a1ac43543fe15ab903 -Author: Ondrej Filip -Date: Tue May 9 10:47:10 2000 +0000 - - Small bug in neighbor state machine. - -commit fafe44b651f68d0a588cac94ddada8a1270adb97 -Author: Ondrej Filip -Date: Tue May 9 00:03:08 2000 +0000 - - Just added declaration of AS Ext routes calculation. - -commit 43e75f38e7b8716efb3729ee56fd4a879e03c1dc -Author: Ondrej Filip -Date: Mon May 8 23:46:31 2000 +0000 - - Do not stop lsrr_timer in FULL state. Use it for retransmition. - -commit ed4a53c6a5685d04fe2b0cceda83860324f4892c -Author: Ondrej Filip -Date: Mon May 8 22:50:37 2000 +0000 - - Some changes in debugging. - -commit 9bacea42112216e604bd55e3027e019e131304dd -Author: Ondrej Filip -Date: Mon May 8 22:49:58 2000 +0000 - - Fixed some FIXME's by deleting them. :-) - -commit 8a3049f6f139622c6976502d931c746449a1fe48 -Author: Ondrej Filip -Date: Mon May 8 22:42:56 2000 +0000 - - Useless '\n' in log() - -commit eae4fcf2539703d0dbd47e29ab24be29e0ddc2ff -Author: Ondrej Filip -Date: Mon May 8 22:40:55 2000 +0000 - - Stopping RXMT timer when going to lower state than EXSTART. - -commit d8033f2238922f3c63c247e924f1e31659d821ef -Author: Martin Mares -Date: Mon May 8 22:37:16 2000 +0000 - - Generated first public alpha release. - - Unless you object, I'll announce it today (9.5.) at noon. - -commit 8aecbf160adb15eef3f66d750745928f66f8a310 -Author: Martin Mares -Date: Mon May 8 22:33:50 2000 +0000 - - New example config. - -commit c976342828d5de3d16b59d623f4f7fb03f52acc9 -Author: Martin Mares -Date: Mon May 8 22:33:38 2000 +0000 - - Implemented debugging function rlookup() which you can call from gdb - to see what resource does the address given as a parameter belong to. - -commit 0521e4f68490d5ef5cc6ba6b2b4e4edf7cf6aa1a -Author: Martin Mares -Date: Mon May 8 22:33:02 2000 +0000 - - rt_prune: Don't kill routes from protocols in FS_FEEDING state. If debugging, - call fib_check() on the table's fib. - -commit c09d1e8df2d5d1ebfb4ce3dfbe93347a83acd99d -Author: Martin Mares -Date: Mon May 8 22:32:17 2000 +0000 - - KEEPALIVE TIME ought to set keepalive time, not connect retry time :) - -commit 5ff0a270cb411d423a78ed13604a5f2b25d4b289 -Author: Martin Mares -Date: Mon May 8 22:31:58 2000 +0000 - - In non-debug mode, set default logging to syslog only, not stderr. - -commit 4524331a3d758106f4ffa6a54a60aeae45341789 -Author: Martin Mares -Date: Mon May 8 22:31:34 2000 +0000 - - Fixed type in daemonization code. - -commit fc0ca2d8e1ab6a71a81f5f12c04f02d670d22348 -Author: Ondrej Filip -Date: Mon May 8 22:28:42 2000 +0000 - - Typo in debug. - -commit a6fdf9c6ac58e2d95d84c58102af8d5f3a70958a -Author: Ondrej Filip -Date: Mon May 8 22:27:25 2000 +0000 - - Grrr, useless debug. - -commit 5ee479aac9e488e15245905c598e778eb787dfe1 -Author: Ondrej Filip -Date: Mon May 8 22:26:11 2000 +0000 - - Small typo. - -commit 0ebb8b64f384d57889271389abe9b8926dde7af8 -Author: Ondrej Filip -Date: Mon May 8 22:24:22 2000 +0000 - - Bugfix in new neighbor allocation. - -commit 77fbd315dfa2dd6b8252cf13386d8b8480234bcc -Author: Ondrej Filip -Date: Mon May 8 22:10:10 2000 +0000 - - Better debug output. - -commit b57a45b81a74c091bbc71966a7c6aacebaf34e57 -Author: Ondrej Filip -Date: Mon May 8 22:03:29 2000 +0000 - - Next hop calculation improved. (I ignored stub networks advertised by my - neighbors. - -commit 158b99c912ef5c5cef22fd3e343341cbb52eb105 -Author: Ondrej Filip -Date: Mon May 8 22:02:45 2000 +0000 - - Better logging. (%d->%I) - -commit 8abbde02d46830168b79a1df6c18c3ffaea49b9e -Author: Martin Mares -Date: Mon May 8 19:11:49 2000 +0000 - - Several simplifications of the fib iterators. - -commit 0bcba21e893efb9853a68b04674e4bde9da5a1b8 -Author: Martin Mares -Date: Mon May 8 19:10:36 2000 +0000 - - When not debugging, daemonize automatically. - -commit 33a368ad594822239bfbaa2eab50c76171e09b9e -Author: Martin Mares -Date: Mon May 8 14:58:00 2000 +0000 - - Implemented `show route count' which is `show route stats' with - exception that it doesn't print the routes themselves. - -commit 0c3588bf5e43936ea0f1e630dea500912b598c60 -Author: Martin Mares -Date: Mon May 8 14:53:22 2000 +0000 - - Don't crash when the socket gets closed between updates. - - Also, this time not only update `remains', but update it right :) - -commit 6b5ab87581ba496ad0a9c12ef66f1372e1459685 -Author: Martin Mares -Date: Mon May 8 14:51:57 2000 +0000 - - Added `--disable-memcheck' switch which avoids linking of efence/dmalloc, - so that we can run in debugging mode with large routing tables. - -commit e48dae3ed70daf52ad93c4fdc73270ab1510661f -Author: Martin Mares -Date: Mon May 8 14:51:26 2000 +0000 - - Stop feeding the protocol if it suddenly shuts down. - -commit 9ff8f334edec974b16497e1e74172977e0fff221 -Author: Martin Mares -Date: Mon May 8 14:32:19 2000 +0000 - - Update `remains' counter correctly. - -commit d69e5ff2ad8b552c22770e4c85bd7c5afafe2816 -Author: Martin Mares -Date: Mon May 8 14:29:30 2000 +0000 - - Use PATH_CONTROL_SOCKET instead of tacking on "bird.ctl" manually. - -commit cd44b466515578583d46dcb1a0abdae6e658a166 -Author: Martin Mares -Date: Mon May 8 14:24:19 2000 +0000 - - Forgot to add a spiky comment :) - -commit f9254d2349c7e2e3c110f7850e402d1c11624940 -Author: Martin Mares -Date: Mon May 8 14:19:47 2000 +0000 - - Autoconf is *evil*. The sysconfdir and similar variables are unusable in - C includes as they contain substitutions specific to make. - - Worked around by creating sysconf/paths.h which is created from - the Makefile instead of by the configure script. - -commit 0bf7386b33fecac40be43f8db5b0ba0356123fd2 -Author: Martin Mares -Date: Mon May 8 14:18:33 2000 +0000 - - Updated TODO. - -commit c0760ab0fc880778f23c71a7874aa38f90e28925 -Author: Martin Mares -Date: Mon May 8 13:56:11 2000 +0000 - - Debugging compilation is no longer default. This means that the configuration - file is expected in $prefix/etc etc. - - Use --enable-debug to request debugging. - -commit d8508f70b0325cd283bc1551c455cdc3aab011fe -Author: Martin Mares -Date: Mon May 8 13:54:59 2000 +0000 - - `make install' now works. - -commit 93d6bf38a6c07b8281e11280d5cdbb721d19f7c8 -Author: Martin Mares -Date: Mon May 8 13:26:30 2000 +0000 - - The bgp_list is gone. Incomming connections are now handled in a much - more straightforward manner by scanning the active configuration for - matching protocols. - -commit 5d86aefb6c4a8e298ee79dc9cbf7c07196d56b5b -Author: Martin Mares -Date: Mon May 8 13:12:14 2000 +0000 - - Really free attributes. - -commit 818ff1e2b7b8eb8e707608e76ead94e5c6bd442c -Author: Martin Mares -Date: Mon May 8 12:38:00 2000 +0000 - - When reporting a bug(), call abort() instead of exit(), so that we - can analyse the core. - -commit c304392e65a3d6554e97bce00146fe5f2bcb64b1 -Author: Martin Mares -Date: Mon May 8 12:37:39 2000 +0000 - - Some less socket error messages. - -commit 507eea4c8b4c52a5ddf232bc180a7a42cf29f074 -Author: Martin Mares -Date: Mon May 8 12:37:24 2000 +0000 - - Don't generate corrupted packets when sending only route deletes. - -commit 9cbf43eb8a7e0186144e95d7b244e0c69b0e9189 -Author: Martin Mares -Date: Mon May 8 12:09:10 2000 +0000 - - Don't report refused connections. - -commit b6c9d8eb2e255b65f29efd1acfd35a4277b3bf14 -Author: Martin Mares -Date: Mon May 8 12:05:55 2000 +0000 - - Removed the `async' switch which was used for debugging only anyway. - - Don't moan when netlink reports lost packets. - -commit d0126f0bf0098104cd99fedd61a4bdbe7f7b3f1f -Author: Martin Mares -Date: Mon May 8 11:40:30 2000 +0000 - - bugs_in_attr_cache_hashing--; - -commit 79681f4a19d0eca6e40d919a387099f5646f29bc -Author: Martin Mares -Date: Mon May 8 11:04:22 2000 +0000 - - Link the instance to the global BGP list as soon as possible. - -commit 94e935d8a2e02f18e3731624720e8f84be5e9f15 -Author: Martin Mares -Date: Mon May 8 11:02:53 2000 +0000 - - Incoming buffer must be at least 8KB long. - -commit 916c8c0abacfd5ba93353fec9dba84a81845c95e -Author: Martin Mares -Date: Mon May 8 10:40:00 2000 +0000 - - Use preferences properly. - -commit 1151401e2b8b4434bbd1419ff33a48f2848d600d -Author: Martin Mares -Date: Mon May 8 10:38:51 2000 +0000 - - Don't crash when reporting deleted routes. - - Set preferences correctly. - -commit 92ef4fa719058af80a9dbb39e3d2fbd9314e8a1a -Author: Martin Mares -Date: Mon May 8 10:38:25 2000 +0000 - - Preference is a configurable parameter. - -commit 0117d004945afdfb6cc9a62db4561cd4eddee24a -Author: Martin Mares -Date: Mon May 8 10:37:45 2000 +0000 - - Fixed `show route primary'. - -commit 18c031fae8945409b0ff1139d88092ba19ec2780 -Author: Martin Mares -Date: Mon May 8 10:13:59 2000 +0000 - - Debugged printing and pruning of neighbor cache entries. - -commit 0d3070824da904bd0f3f576b353b738bfa15a53a -Author: Martin Mares -Date: Sun May 7 11:32:34 2000 +0000 - - Don't count networks with no routes (they are not displayed at all and - will be removed during the next garbage collection pass). - -commit 23693958aa95edf5baaeaa5baa55725dc4895681 -Author: Martin Mares -Date: Sun May 7 11:28:59 2000 +0000 - - Implemented `show route <...> stats'. - -commit 6998bb9ee345a0e8b558fc87133f1c2a442b7096 -Author: Martin Mares -Date: Sun May 7 11:28:34 2000 +0000 - - Squashed one bug in fib_rehash(). No more routes disappearing as if struct - by a lightning :) - -commit 891cec854f84674317fa152b71254fc52d893826 -Author: Martin Mares -Date: Sun May 7 11:27:23 2000 +0000 - - Killed one more reference to RTS_RIP_EXT. - -commit acfce55c8637988954543c60597cd2f1525ba6ec -Author: Martin Mares -Date: Sun May 7 10:41:45 2000 +0000 - - Setup of incoming connection is now a separate function. - -commit ce1da96ee7efc9310f138e4234495557cdef59e2 -Author: Martin Mares -Date: Sat May 6 22:57:39 2000 +0000 - - Added commands `show route protocol

' and `show route import

' which - show the routing table as exported to the protocol given resp. as returned - from its import control hook. - - To get handling of filtered extended attributes right (even in the old - `show route where ' command), the get_route_info hook gets an - attribute list and all protocol specific rte attributes are contained - there as temporary ones. Updated RIP to do that. - - Added ea_append() which joins two ea_list's. - -commit 84f070020500de40e69e6d00df9d41ecc90a3b23 -Author: Martin Mares -Date: Sat May 6 21:46:09 2000 +0000 - - IPv6 support compiles on both glibc 2.0 and 2.1. - -commit 498c33395f99743206088770c441222c76493378 -Author: Martin Mares -Date: Sat May 6 21:42:19 2000 +0000 - - Cosmetic fixes. - -commit 0b7610985cd44435ab40dd2e78646f400db908c5 -Author: Martin Mares -Date: Sat May 6 21:31:41 2000 +0000 - - Fixed silly bug in previous commit. - -commit 67be5b23cd80646c2aa5a9c6a3d373ceecb275b6 -Author: Martin Mares -Date: Sat May 6 21:21:19 2000 +0000 - - When rte_update is called for an identical route, don't announce anything. - - Please implement the rte_same hook in your protocols. It should just - compare your metrics stored directly in rte, the rest is done by the core. - -commit ab1129c1bdea41ff06fd21390cde5667d07f6e65 -Author: Martin Mares -Date: Fri May 5 17:17:42 2000 +0000 - - Added skeleton Doc files for the whole developer's documentation. - -commit b177724896b75159dbc8e203ac0e5a134229ae90 -Author: Martin Mares -Date: Fri May 5 17:15:56 2000 +0000 - - Connected the `doc' subtree to global makefiles. - - All documentation is built in obj/doc (resp. doc/ if you do a stand-alone build). - - Use `make docs' to make the whole documentation or `make userdocs' resp. - `make progdocs' for user manual resp. developer's guide. - -commit c7d7794bb9a71be58d06c6c9ea67943d3e33a566 -Author: Martin Mares -Date: Fri May 5 17:14:44 2000 +0000 - - Added a tool for processing of developer documentation. - - Everything is controlled by Doc files in source directories (see the - corresponding programmer's manual entry for the format and look - at Doc and lib/Doc for an example). - - Currently it generates HTML indices and calls kernel-doc to generate - per-section HTML files. - -commit 249d238c14cafa812db02ea3090b34c58b183cf6 -Author: Pavel Machek -Date: Fri May 5 09:39:08 2000 +0000 - - First attempt at documenting configuration. - -commit beaf86e13c6b9595bc979b5ed9669e3e43f793cd -Author: Martin Mares -Date: Thu May 4 21:23:10 2000 +0000 - - Removed RTS_RIP_EXT. - -commit 9a220cabbc28a4e54f814aa5d596696a15e6544d -Author: Martin Mares -Date: Thu May 4 20:52:28 2000 +0000 - - #ifdef out lots of debugging information. - - The long resource/routing table dump printed upon startup is gone now - and if you wish to see it, just send bird SIGUSR1 or use the `debug' - commands. - -commit b3acb10632ce9fa492a92ced1e533f0bf5edee21 -Author: Martin Mares -Date: Thu May 4 20:49:45 2000 +0000 - - Updated. - -commit 2a149b18cca3b20063be398e8098dfa8e1e2705d -Author: Martin Mares -Date: Thu May 4 20:38:44 2000 +0000 - - Unused variables in IPv6 code. - -commit 93a786cb034fdd18b8131a16a6ea3d1cd9bd00de -Author: Martin Mares -Date: Thu May 4 20:30:36 2000 +0000 - - Removed a lot of unused variables. - - Please try compiling your code with --enable-warnings to see them. (The - unused parameter warnings are usually bogus, the unused variable ones - are very useful, but gcc is unable to control them separately.) - -commit c817b9916f1134f687ba53220d607e6e193cf651 -Author: Martin Mares -Date: Thu May 4 20:18:46 2000 +0000 - - Added --enable-ipv6 which tells configure to select the right configuration - for IPv6 automatically. - - Added --enable-warnings which turns off some more warnings. - - Default protocol list now depends on --enable-ipv6. - -commit 9b63e3a58afe17b98eb7722e352984574846c22c -Author: Pavel Machek -Date: Thu May 4 20:08:34 2000 +0000 - - Spelling fixes. - -commit cf3d6470d7c8d401b162516ed7446c1d3866d5d3 -Author: Martin Mares -Date: Thu May 4 20:02:56 2000 +0000 - - IPv6 BGP support finished. Also simplified the BGP stuff a bit. - -commit 6db8c5a63b341d0913afa44457a93a8e83529fb2 -Author: Martin Mares -Date: Thu May 4 20:02:19 2000 +0000 - - pxlen works even in IPv6 mode. - -commit 5dc4b0aae20ef7e6b862af29a3135e018147ce97 -Author: Pavel Machek -Date: Thu May 4 10:03:53 2000 +0000 - - Display examples more nicely - -commit 1d9622e10ddc3baf2cd4f81bc2fa95593b4d3e85 -Author: Martin Mares -Date: Thu May 4 09:08:28 2000 +0000 - - Switched off LOCAL_DEBUG. - -commit 1c1da87b271ee3db0045f31612d99894531ada54 -Author: Martin Mares -Date: Thu May 4 09:03:31 2000 +0000 - - Receive-only IPv6 BGP. - -commit d345cda5a1cea03a09e5a37c999e88c5177c8a9e -Author: Ondrej Filip -Date: Thu May 4 01:23:03 2000 +0000 - - Bugfix in Network lsa originating - Bugfix in ntohlsab() and htonlsab() - For calculating of rt I use my own fib. I delete routes! ;-) - -commit 9e48d717cf681dcc3cfaaee4358b5c6fa3aa409e -Author: Ondrej Filip -Date: Wed May 3 22:36:12 2000 +0000 - - Test for "flushing" added. - -commit a02c6c184b513fe1886c86533e696045e960515b -Author: Ondrej Filip -Date: Wed May 3 22:23:41 2000 +0000 - - Cleanup of code. Some arguments of functions were useless. - -commit ad5453b540b3c9d7430dcff9a3674d9db8ab999c -Author: Ondrej Filip -Date: Wed May 3 22:12:33 2000 +0000 - - Testing if I can flush LSA from database. - -commit 9bc1808a27b35499d2438d731ade6d2cba8aa355 -Author: Ondrej Filip -Date: Wed May 3 00:08:48 2000 +0000 - - Better rt and net originating. - -commit 0bf2f2039e1fc95fe0fa3ee231711212f1f2b128 -Author: Ondrej Filip -Date: Tue May 2 23:09:44 2000 +0000 - - Originating of network LSA. - -commit 92bbd812e332c9948d737e95526c571ff371d394 -Author: Ondrej Filip -Date: Tue May 2 22:34:35 2000 +0000 - - OSPF added to default protocols. - -commit 249fdef7a10ce507bd224ad9be48a86f09d8f21c -Author: Ondrej Filip -Date: Tue May 2 22:31:48 2000 +0000 - - Adding InfTransDelay for outgoing lsa. - -commit c45f48fba5a0904f9c3512c3b42c38183fef348b -Author: Ondrej Filip -Date: Tue May 2 22:19:41 2000 +0000 - - Aging of lsa database added. - -commit a92847e78fabd637938f324c78d5eb41538a5692 -Author: Ondrej Filip -Date: Tue May 2 19:27:57 2000 +0000 - - Route calculation for stub networks. - -commit 53943a002265d8e2b6a887eaa497a01840675693 -Author: Martin Mares -Date: Tue May 2 16:10:04 2000 +0000 - - Defined format specifier `%M' which behaves as `%m', but takes the - error code as an argument. - - Use it in socket hooks where we really shouldn't rely on errno containing - the right value or even existing. - -commit 85368cd4b7244535f6ce56a27f6d22ddfa2bf4e6 -Author: Martin Mares -Date: Tue May 2 16:07:41 2000 +0000 - - Full protocol tracing. - -commit 85a291ff3055f0b10ffc199138c67305f5b3fc98 -Author: Martin Mares -Date: Tue May 2 15:21:51 2000 +0000 - - IPv6 address classification fixes. - -commit d1a74339d4edb717fbe98d412bd5e4ad03bb20a2 -Author: Martin Mares -Date: Tue May 2 12:51:39 2000 +0000 - - Handle redistribution of unknown attributes correctly. - -commit 85195f1a53eb350cd32ecba69c208dbece6fb776 -Author: Ondrej Filip -Date: Sun Apr 30 22:14:31 2000 +0000 - - Many small changes and bug fixes. Routing table calculation works. - I'm waiting for rt lookup to add stub networks. - -commit 2337ade7546254eb48a22a1e195cc7999e684d21 -Author: Pavel Machek -Date: Sun Apr 30 18:47:48 2000 +0000 - - Moved documentation to top of file, where it belongs. - -commit c6c56264361e102691fe42134ab585f631f83898 -Author: Ondrej Filip -Date: Sun Apr 30 11:31:05 2000 +0000 - - Sync with nest's rt table and some minor improvements. - -commit e80e9d0da5d737b7f6e65358067f62a6ac85f4fe -Author: Ondrej Filip -Date: Sun Apr 30 09:32:41 2000 +0000 - - RT calculation strongly simplified. Now, I don't need any - memory allocation. :-) - -commit 8c62d6e3b631d58f46d87c36826cb29f8dadeb15 -Author: Pavel Machek -Date: Sat Apr 29 17:48:38 2000 +0000 - - Minor documentation update. - -commit 468f2347fc0ea3e0eb6513ccd0433d0b48f2c739 -Author: Ondrej Filip -Date: Sat Apr 29 15:57:14 2000 +0000 - - Calculating of nexts hop(s) added. - -commit 9c1a55deeeb5aa5cd2f18b109fabb50947c308ab -Author: Pavel Machek -Date: Sat Apr 29 15:45:30 2000 +0000 - - IpV6 now actually compiles. - - Mj, could you provide example of static config for ipv6 that is _not_ - rejected by checks? I tried this and got rejected. - - route 62:168::/32 via 62:169::; - route 1:2::/32 via 1:3::; - -commit 46cdc7e20faaf922431a157bcb0f82a45b7aa2d2 -Author: Martin Mares -Date: Fri Apr 28 15:15:36 2000 +0000 - - Updated TODO. - -commit cea636640005c9ee9b628ce07a2d467c132941fe -Author: Martin Mares -Date: Fri Apr 28 15:13:29 2000 +0000 - - The `bgp_origin' attribute is now an enum. - -commit a412f01ea84709b9af0113acc5aa2ce3dad1d292 -Author: Martin Mares -Date: Fri Apr 28 15:12:03 2000 +0000 - - Include CF_HDR section in keywords.h as well, so that protocol symbols - can be used in definition of ENUM's. - -commit 2edb31b097018be00f29cb7647432c4c2c8b99ba -Author: Martin Mares -Date: Fri Apr 28 15:11:10 2000 +0000 - - Split CF_HDR section to CF_HDR (only includes) and CF_DEFINES (defines, - C declarations etc.). - -commit decc99fbbdba3394a5c611e2914b4d74aa6742a9 -Author: Pavel Machek -Date: Fri Apr 28 10:15:57 2000 +0000 - - Killed fixme: I already fixed it. - -commit a769a180d77b88fbfc77cae3e895a320007f6e30 -Author: Pavel Machek -Date: Fri Apr 28 10:14:59 2000 +0000 - - Provide rip_get_attr, how do I test it? - -commit 6c0a7174af459d62a52e97d15da29528169a68f9 -Author: Pavel Machek -Date: Fri Apr 28 09:55:52 2000 +0000 - - Add sample documentation to rip. - -commit e83b42deb4405729d9f53448bdbcea05e7d15e8f -Author: Pavel Machek -Date: Fri Apr 28 09:55:36 2000 +0000 - - Include proto/rip/rip.c in documentation system. - -commit ff95080f9272c4a0123ab05dff608a43cf3c15b7 -Author: Pavel Machek -Date: Fri Apr 28 09:48:28 2000 +0000 - - Cleanup of dead code + example documentation for two functions. - -commit 602b1445e3bfa24b1ce9cd1d148e4aa5cb742cf4 -Author: Pavel Machek -Date: Fri Apr 28 09:48:01 2000 +0000 - - Documentation-generating tool taken from linux-2.3.99-pre6, and - makefile to actually use it. - -commit f94557dec5714f8415aa9e74615b5c821f45808f -Author: Martin Mares -Date: Thu Apr 27 22:40:19 2000 +0000 - - Some more fixes for attributeless UPDATEs. - -commit f75e3bbc01f2b711d1a2479eddd9ea35f8cfff47 -Author: Martin Mares -Date: Thu Apr 27 22:35:08 2000 +0000 - - Fixed a couple of nasty CLI bugs which were triggered on long or multi-part - outputs. It took a whole evening to hunt them down, but now the CLI seems - to work fine. - - Now I run three BGP connections with several thousand routes! - -commit 54896cbdba42a2ccd83c7f23c8ba14bed37a8b73 -Author: Martin Mares -Date: Thu Apr 27 22:31:11 2000 +0000 - - Path attribute can be missing if we process a packet with empty NLRI section. - -commit 8f6accb5bb26d534576e086894c107387f67906a -Author: Martin Mares -Date: Thu Apr 27 22:28:49 2000 +0000 - - Event handlers no longer return re-queue flag. Instead of using it, just - call ev_schedule() on the same handler which should work perfectly now. - -commit 987de54578ce4053d737c64ea924a32f46a441a7 -Author: Martin Mares -Date: Thu Apr 27 19:44:27 2000 +0000 - - Fixed stupid bug in as_path_format(). - -commit 9165888ad24bdefed6a705219c767558d5091cec -Author: Martin Mares -Date: Thu Apr 27 19:41:10 2000 +0000 - - Handle connect errors correctly. - -commit 2add26dfa9c1da1e7fd6248de593c60cf0eba9ca -Author: Ondrej Filip -Date: Wed Apr 26 20:16:36 2000 +0000 - - Stub networks done. - -commit 5904a51266d82482392bad5d6d17a3be54c65596 -Author: Ondrej Filip -Date: Wed Apr 26 14:03:56 2000 +0000 - - Nets are used before routers. - -commit 5db9bae28676d743f53636d74997c85039d09278 -Author: Martin Mares -Date: Wed Apr 26 13:26:31 2000 +0000 - - IBGP fixes. - -commit e1ddd9937759bc22b7241e48400d17840a101d9d -Author: Martin Mares -Date: Wed Apr 26 13:26:11 2000 +0000 - - Changed handling of incoming connections, so that we can send data - from the send hook without worrying about existence of socket buffers. - - Also, don't forget to copy peer addresses. - -commit dfa9a53a66e5747ddbeedfa0a47fa2ca9fc93b99 -Author: Ondrej Filip -Date: Wed Apr 26 12:54:23 2000 +0000 - - Routing table calculation. Dijkstra done. - -commit 0cadd5f531a82578ea6323f730cf8204b755895f -Author: Martin Mares -Date: Wed Apr 26 12:33:37 2000 +0000 - - Removed several FIXME's. - -commit dbf3939a53192c093f9f367edb15bf613126e347 -Author: Martin Mares -Date: Wed Apr 26 12:32:07 2000 +0000 - - Better formatting of router ID's. - -commit ebd3720f8335cecd671382c23fe61f03b7e2acaa -Author: Martin Mares -Date: Wed Apr 26 12:30:41 2000 +0000 - - Fixed several bugs in protocol state machine. Reconfigurations and - restarts of BGP seem to work now. - -commit c010f4cb3771536fc62e534549e22c725285bbd2 -Author: Pavel Machek -Date: Wed Apr 26 11:33:03 2000 +0000 - - Use right address for ripv6. - -commit 7f704c06d86c58985e964e05df57d14b92e0cd05 -Author: Pavel Machek -Date: Wed Apr 26 11:07:57 2000 +0000 - - Cleanup in preparation for ipv6. - -commit b0c9c21c2926921843bbbade72e65831280906a8 -Author: Pavel Machek -Date: Wed Apr 26 09:38:07 2000 +0000 - - Small cleanup. - -commit 98347659463cb68cbd751148e19c62cfb109a32b -Author: Pavel Machek -Date: Wed Apr 26 09:37:07 2000 +0000 - - Whitespace changes. - -commit 2e5a8735f4be2c2514ae3a67960ea4ac3f06e364 -Author: Pavel Machek -Date: Wed Apr 26 09:36:47 2000 +0000 - - filter_same should now work with path masks. - -commit f71bded6e97a3eeb4dc58458d042cbe1af631380 -Author: Pavel Machek -Date: Wed Apr 26 09:30:12 2000 +0000 - - Bugfix in i_same (comparing of paths still does not work). - -commit 7a86a8b08db03f002a672d1e8a6481ad52114d1e -Author: Pavel Machek -Date: Wed Apr 26 08:03:50 2000 +0000 - - Added code for testing filters. - -commit 471bd6c30bb0d172699ea7af8f8b9356c8fe48b3 -Author: Pavel Machek -Date: Wed Apr 26 07:47:47 2000 +0000 - - Marked place where new enums belong. - -commit 94d9dfa47a14609e7057f26614b4094dddc8439d -Author: Pavel Machek -Date: Wed Apr 26 07:31:45 2000 +0000 - - Startup renamed to __startup: it is internal function and mj already - uses word startup in other context. - -commit 6fd766c17eedf4897e2dff712f0e06bb84dd3d8a -Author: Martin Mares -Date: Tue Apr 25 23:08:31 2000 +0000 - - Implemented automatic restart after error with all the timers needed. - -commit 8573314326a36cc8c9aa1755e7ad6c51617015c8 -Author: Martin Mares -Date: Tue Apr 25 23:08:03 2000 +0000 - - Avoid printing of error messages on Cease notifications. - -commit 00c0c18aea40dd39efc275e24ad9d5e12a873a32 -Author: Martin Mares -Date: Tue Apr 25 23:07:47 2000 +0000 - - Allow sk_close(NULL). - -commit b3155b3399d84bb2dae8441171aa73236d790048 -Author: Martin Mares -Date: Tue Apr 25 22:01:19 2000 +0000 - - Randomize timers properly. - -commit 42532f084640645cfde9af7c0aa69a36b1de91ad -Author: Martin Mares -Date: Tue Apr 25 21:58:17 2000 +0000 - - Support dynamic reconfiguration. - -commit 41b26cfb552a4a441490779344326ff85819252b -Author: Martin Mares -Date: Tue Apr 25 21:56:46 2000 +0000 - - Don't forget to set filter pointers in struct proto when reconfiguring. - -commit 99f70c78e11f99f73a142ffcb8b65bd142c0a36c -Author: Martin Mares -Date: Tue Apr 25 21:31:15 2000 +0000 - - Use the same attribute names as in filters. - -commit 684c25d98fbfd7cc9275f401d8d451135615af8d -Author: Martin Mares -Date: Tue Apr 25 21:21:52 2000 +0000 - - When sending BGP attributes, re-create the flags, so that attributes - added by filters which get the flags wrong are fixed automagically. - -commit efcece2da3054d9a0e5b5d2233549b3323428023 -Author: Martin Mares -Date: Tue Apr 25 21:13:25 2000 +0000 - - Better reporting of both local and remote errors. - -commit a47a01083b6ff9196f39136d68ed32ac70b31d15 -Author: Martin Mares -Date: Tue Apr 25 13:32:17 2000 +0000 - - Real parsing of BGP OPEN options including capability - negotiation. - -commit 8b258e4e659cd8bacf0f7e3997d30b43561ac3e6 -Author: Martin Mares -Date: Fri Apr 21 13:01:28 2000 +0000 - - LOCAL_PREF is now always present and exported over all ibgp connections [draft] - - Allow setting of address of the local end of the TCP connection. - - Several bug fixes. - -commit 2a9e064d7b41ae6e944dd9fbcb18b89e8fda0dba -Author: Martin Mares -Date: Fri Apr 21 12:25:35 2000 +0000 - - If no NLRI's are present in an UPDATE message, parse the attributes, but - don't check presence of mandatory attributes. [draft-09] - -commit f380aa60faa41872b78155f899518b25933d18b9 -Author: Martin Mares -Date: Thu Apr 20 23:05:41 2000 +0000 - - IPv6 compiles with glibc 2.1. - -commit f33c6c66020da3b10b27fba5585d20702b173c6f -Author: Martin Mares -Date: Thu Apr 20 22:55:32 2000 +0000 - - Use xmalloc() instead of malloc(). - -commit 7787ace61ae41060e599ce52e8f0017750d350da -Author: Martin Mares -Date: Thu Apr 20 22:54:22 2000 +0000 - - Synced to draft-ietf-idr-bgp4-09. - -commit 9bc6ab404190db53c9c9dbc183f6fc6fa3e704fb -Author: Martin Mares -Date: Thu Apr 20 22:34:50 2000 +0000 - - Fixed reporting of unknown options. - -commit 7d6eebae3b87cac2d09fd5201b603d4fd969fe06 -Author: Pavel Machek -Date: Thu Apr 20 10:25:51 2000 +0000 - - Create syntax sugar for add/delete/prepend, so xyzzy.prepend(123) is - possible. That means that milestone 3 was reached. - -commit 77f37ae0994774f6402499e0a79287d85afa6edf -Author: Pavel Machek -Date: Thu Apr 20 10:24:41 2000 +0000 - - Test new syntax of add() and delete(). - -commit 5f532adde20300ecab63d3e521fb0dfbfb33df2b -Author: Martin Mares -Date: Wed Apr 19 13:54:35 2000 +0000 - - Temporarily ignore unknown options. - -commit f381cdce5225c0652bf9182ac40a1a54436c9692 -Author: Martin Mares -Date: Wed Apr 19 13:54:17 2000 +0000 - - The ATOMIC_AGGREGATE parameter is optional transitive. - -commit e0d6a7bda446d96dc3d56f65afed1872f20407cb -Author: Martin Mares -Date: Wed Apr 19 13:28:56 2000 +0000 - - Delay fetching of router ID. - -commit 035044b1d946c50efd4b59a8869198a0300c8151 -Author: Martin Mares -Date: Wed Apr 19 12:51:14 2000 +0000 - - Select the right source address and don't check port numbers. - -commit 85c92555efcd67d2671a8aef1bf7c3f4acc2b21d -Author: Ondrej Filip -Date: Tue Apr 18 22:11:05 2000 +0000 - - Grr, another patch to make it compile. - -commit 740d16d972d8e2accdb7a2f92048de302c9e966c -Author: Ondrej Filip -Date: Tue Apr 18 22:07:58 2000 +0000 - - Another ack bugfix. (Bad test for MIN_LS_ARRIVAL.) - -commit 84228eee273e2a689f4479d9a91f6b0a32c19b44 -Author: Ondrej Filip -Date: Tue Apr 18 21:40:11 2000 +0000 - - LS ack bugfix. (I didn't remove LSA from LSret hash.) - -commit 19fc4c763e745d56c8d80d04d6813766c1cfa04a -Author: Ondrej Filip -Date: Tue Apr 18 21:13:56 2000 +0000 - - LS ack. - -commit 26116eac93b51c503f5448d9f583847a51bef68d -Author: Ondrej Filip -Date: Tue Apr 18 20:34:19 2000 +0000 - - Better LS Ack dumping. - -commit 48f5a61f694faceb7cdc41e291f0da9411000c45 -Author: Ondrej Filip -Date: Tue Apr 18 19:56:43 2000 +0000 - - Bugfix in neighbor dumping. - -commit 9eada7ca03c6c4111e759b0910a1a654a7f3216e -Author: Ondrej Filip -Date: Tue Apr 18 19:44:16 2000 +0000 - - Fixed the serious bug in LSack. - Oh, I'm an idiot. I sent LSACK, but in header was LSUPD. :-( - -commit 9eea604769662479891020b5a0fb282faa6dc36f -Author: Ondrej Filip -Date: Tue Apr 18 19:31:42 2000 +0000 - - Multicast open socket for (B)DR bugfix. - -commit 79f036ef6e9b2204528a41079c59a3a9ae9d50f5 -Author: Ondrej Filip -Date: Tue Apr 18 19:22:49 2000 +0000 - - Dump changes. - -commit 4472402551a1cc8d760a4e980fdcd7a417e0796a -Author: Ondrej Filip -Date: Tue Apr 18 18:29:50 2000 +0000 - - Many %u changer into %I. - -commit 89929e9daad0df36a289e7ae7d70dbc648c3b6b3 -Author: Ondrej Filip -Date: Tue Apr 18 18:21:10 2000 +0000 - - Many %u changed into %I and dump cleanup. - -commit 1508ee8b537aceba98d3af619ba0cded4d2fce9d -Author: Ondrej Filip -Date: Tue Apr 18 18:01:26 2000 +0000 - - Iface chstate run only if something really change. - -commit dd100e40c60811324b450ef7c078f0e992b2ded6 -Author: Ondrej Filip -Date: Tue Apr 18 17:58:16 2000 +0000 - - Better dumping in neighbor chstate. - -commit 8914e37dc028c89488d07556a511d8b49d38856f -Author: Ondrej Filip -Date: Tue Apr 18 17:54:06 2000 +0000 - - Better chstate dumping. - -commit 284c43ff66e8b5879945d2c4e1a285354bd38ddf -Author: Ondrej Filip -Date: Tue Apr 18 17:36:46 2000 +0000 - - Sending of ACK disabled, since I'll find bug. - -commit 023f5e86eba76a79dd90d5a4546ae8b200ccf023 -Author: Ondrej Filip -Date: Tue Apr 18 17:00:56 2000 +0000 - - Another LSack update. It's still NOT correct and it surely - kills gated or Cyclades OSPF implementation. :-) - -commit 67315ef64e3655c65cfab032d637fe29d3cf91b2 -Author: Ondrej Filip -Date: Tue Apr 18 01:06:16 2000 +0000 - - Some lsack work. There is something very worng. :-( It locked my network. - -commit 2a0925948de20bd391d2c27a08ffdf2b4350e5c3 -Author: Ondrej Filip -Date: Mon Apr 17 21:10:40 2000 +0000 - - Listening on AllDRouters for DR and BACKUP added. - -commit 38130b863ffcab6b45484e4e5f1eca1dd933bb1a -Author: Ondrej Filip -Date: Mon Apr 17 20:42:42 2000 +0000 - - Small change in LSA originating. - -commit 52276996063bc4a0fbcb642f5075df1cde7ce684 -Author: Pavel Machek -Date: Mon Apr 17 16:51:28 2000 +0000 - - Few bugs removed from sgml, makefile added. - -commit f9b8bcca4eb1fdd8067a66a845b585af61335e3c -Author: Pavel Machek -Date: Mon Apr 17 16:49:05 2000 +0000 - - Bird.html will now be autogenerated. - -commit d37f899ba4e88b56a824fd44e7d81455c099bcba -Author: Pavel Machek -Date: Mon Apr 17 16:48:22 2000 +0000 - - First version of sgml documentation - -commit 0150e5211adabcbde55a76506f0f1a5901214b52 -Author: Pavel Machek -Date: Mon Apr 17 14:12:02 2000 +0000 - - Cleaned up mess with types in e,a and e,S. Dynamic attributes should - now work. - -commit 74a7da482b1a537aaa97b4b5d6f6815887150f26 -Author: Martin Mares -Date: Mon Apr 17 13:41:50 2000 +0000 - - Adding of dynamic attributes is hopefully correct now. - -commit 8f10985e1ef77c7d44c8912cf92f99e5c4502cbd -Author: Martin Mares -Date: Mon Apr 17 13:14:48 2000 +0000 - - Added BGP to the default list of protocols we build. - -commit bd2d8190dd79645174beeef1a306c8df53db3b60 -Author: Martin Mares -Date: Mon Apr 17 13:13:08 2000 +0000 - - Honor standard communities (no_export, no_advertise, no_export_subconfed) - when exporting routes. - -commit 56a2bed46bf7713cd773b0fd0c097bcfc6345cc1 -Author: Martin Mares -Date: Mon Apr 17 12:46:07 2000 +0000 - - Don't import/export MED and LOCAL_PREF on external links. - Added real comparison of BGP routes (inspired by the Cisco one). - Default local preference and default MED are now settable. - Defined filter keywords for all BGP attributes we know. - -commit 3bbc4ad6ad63d55b1d7845b53865963db79c2e16 -Author: Pavel Machek -Date: Mon Apr 17 12:40:38 2000 +0000 - - Special hack for atomic_aggr. - -commit 708711c37306d6bc3a83935a4d4065814d9c4215 -Author: Pavel Machek -Date: Mon Apr 17 12:38:24 2000 +0000 - - Community lists can be now accessed as dynamical attributes. Mj: - please create such dynamic atribute for bgp. - -commit 913ce95b083b2d61e498c63fce3e8f2d5b974cfb -Author: Pavel Machek -Date: Mon Apr 17 11:52:32 2000 +0000 - - EAF_ORIGINATED done right. - -commit 700bbe60fb941534937ad11ca71968224889fa87 -Author: Martin Mares -Date: Mon Apr 17 11:49:41 2000 +0000 - - The previous fix for spacing was (a) totally out of context, (b) wrong. - Please *read* the code when trying to change it. - - Also killed a couple of type clashes. - -commit 2bd2de0188f6a0c1c9482cfc15e35c2b1b81c81a -Author: Pavel Machek -Date: Mon Apr 17 11:49:21 2000 +0000 - - pair ~ community list matching works. - -commit 5a2455886db55ae2d1eb8934c7686b4f6586f83c -Author: Pavel Machek -Date: Mon Apr 17 11:42:34 2000 +0000 - - Put space between entries so they are separated. - - FIXME: should use format as in filters. - -commit 4444ed2b26ae07dabbcc3e511798e2d7df3a2846 -Author: Pavel Machek -Date: Mon Apr 17 11:42:08 2000 +0000 - - It is good idea to separate entries in list _somehow_. Adding/deleting - to community lists from filters now works. - -commit 991c36b509ad5bb96b4a28d0ec53813628e393a4 -Author: Pavel Machek -Date: Mon Apr 17 11:37:05 2000 +0000 - - Use EAF_ORIGINATED as mj wanted. mj: check this! - -commit 9c400ec9dd0ee74f1f350ead87dcd7366dbab7b1 -Author: Pavel Machek -Date: Mon Apr 17 11:34:38 2000 +0000 - - Int sets moved to core. It is now possible to have variable of type clist. - -commit e3558ab14ee60c8c9792bc3ed54d9f0c3eaa8ea8 -Author: Martin Mares -Date: Mon Apr 17 11:25:15 2000 +0000 - - Normalize community sets when exporting. - - Set PARTIAL bits correctly. - -commit 51a183af78a330cca46f12dcbff79bb045c4c854 -Author: Martin Mares -Date: Mon Apr 17 11:23:05 2000 +0000 - - Define EAF_ORIGINATED and propagate it properly when merging attribute lists. - -commit 4b03f64b341db7b73eedc00bc5321fedf349a236 -Author: Martin Mares -Date: Mon Apr 17 11:22:24 2000 +0000 - - Aesthetical tweaks (asterisk spells `asterisk' etc.) - -commit 159fa4cea9fb8f36db8335755248e0fac81fb050 -Author: Pavel Machek -Date: Mon Apr 17 11:20:00 2000 +0000 - - Finish moving of path matching. Use int_set_print from core for - printing community lists. - -commit 2a40efa5e6252eb5a5dbe5e82dcd9c67ad7838a9 -Author: Pavel Machek -Date: Mon Apr 17 11:11:33 2000 +0000 - - as_path_match moved to a-path.c - -commit 684c6f5a0e134426159be7dbd514271aea9f4d3d -Author: Pavel Machek -Date: Mon Apr 17 11:06:39 2000 +0000 - - Path_getlen moved to nest and length was made callable from filters. - -commit ecd25633bdc3e491a0eca44c63c158eeff388f13 -Author: Pavel Machek -Date: Mon Apr 17 10:54:01 2000 +0000 - - Use printing routine from nest/ instead of our own. - -commit 4b641bab521c4fbabf931c3eac7704e8e2cab298 -Author: Pavel Machek -Date: Mon Apr 17 10:50:03 2000 +0000 - - Path matching now actually works, including / * 1 2 3 * /. - -commit e399b6f6ad91e6f94081dfe694740451100c7a7f -Author: Pavel Machek -Date: Mon Apr 17 10:42:28 2000 +0000 - - Path and path matching seem to work, now. - -commit 1ed2fe960929081065e75a7fb4322f28a76c508b -Author: Martin Mares -Date: Mon Apr 17 10:19:15 2000 +0000 - - Send and receive communities. - -commit c6add07fa6ca8366fbdcfcd9bc2872c129378366 -Author: Martin Mares -Date: Mon Apr 17 10:18:55 2000 +0000 - - Printing of AS paths and community sets. - -commit afc54517db6946e9cfb62bbdc855954316152c62 -Author: Pavel Machek -Date: Mon Apr 17 10:16:47 2000 +0000 - - Prepend and creation of empty path should work, but it has strange - syntax for now. - -commit f421cfdd80cfce7d1ec4759c603e47071eb028f8 -Author: Martin Mares -Date: Mon Apr 17 09:37:31 2000 +0000 - - Sending of update messages works! - -commit c0668f36967ce651e452a476b786b7604038a556 -Author: Martin Mares -Date: Mon Apr 17 07:53:29 2000 +0000 - - Created nest/a-path.c and a-set.c which should contain general operations - on AS paths and community sets. - - Moved as_path_prepend() there. - - Pavel, please move the other functions as well. - -commit ebff007f08965d83dba5840ee02171d09ac2598d -Author: Ondrej Filip -Date: Wed Apr 12 15:37:52 2000 +0000 - - LSack receiving bugfix. - -commit 4bf41ac8b1d7edb4754c579b714d1c71dc421b4e -Author: Ondrej Filip -Date: Wed Apr 12 15:20:13 2000 +0000 - - LS Ack receiving done. - -commit 58313b24c8e31f02f242b7d090b54aab8295ce04 -Author: Ondrej Filip -Date: Wed Apr 12 14:49:20 2000 +0000 - - Stupid "+1"-bug fixed. - -commit c8f685cb9d88e447d6057f92bcbb1e0df441ca35 -Author: Martin Mares -Date: Wed Apr 12 14:14:47 2000 +0000 - - Made last Pavel's changes compile. - -commit 0a40e97328180576577da26a5ce8933f616d84f1 -Author: Pavel Machek -Date: Wed Apr 12 14:12:37 2000 +0000 - - as_path_prepend is usable outside bgp. - -commit c2b28c99103a643dd29ad48152999d6dac7722fe -Author: Martin Mares -Date: Wed Apr 12 14:09:26 2000 +0000 - - Real bucket lists. - -commit a2d157463accf02e2db9fd3dd174b7e46dae8938 -Author: Pavel Machek -Date: Wed Apr 12 14:05:37 2000 +0000 - - One less shift/reduce conflict. - -commit ac7a2145ccd5cfc54788b0218cc253e3b1721b76 -Author: Pavel Machek -Date: Wed Apr 12 14:02:04 2000 +0000 - - f_new_dynamic_attr gets third argument, type as filters know it. - -commit 12d5677aa3e6217edc7d5508ac3dbbf87edc8624 -Author: Martin Mares -Date: Wed Apr 12 13:56:04 2000 +0000 - - Define BGP_PATH. - -commit 2803c9ddbeca3ece264e618b3a63669e25f4dd85 -Author: Martin Mares -Date: Wed Apr 12 13:55:53 2000 +0000 - - Minor updates by Pavel. - -commit 66d573d4903801c45011de36b6b593f1cde9ea73 -Author: Martin Mares -Date: Wed Apr 12 13:55:30 2000 +0000 - - Attribute type hack. - -commit 10a53608860724c47596948f2fd426d4eca8224d -Author: Pavel Machek -Date: Wed Apr 12 13:31:39 2000 +0000 - - Filters now know type path. It is possible to declare variable of type - path, but it is not possible to write constant of type path. - - It should be possible to print paths and match them. - -commit 775063494694d247b340bb1145e509e31af27802 -Author: Martin Mares -Date: Wed Apr 12 13:21:23 2000 +0000 - - Introduced `ARRAY_SIZE' macro to replace all the sizeof(a)/sizeof(*a) constructs. - -commit dcab78904794156483878b4b8cd924e30a71bcdd -Author: Pavel Machek -Date: Wed Apr 12 13:07:53 2000 +0000 - - Renamed f_path to f_path_mask -- which is what it really is. Use - linklist instead of array of signed integers for path mask. - -commit c3edb89ec141355de58fbade353d4b2182c62c1e -Author: Pavel Machek -Date: Wed Apr 12 12:49:53 2000 +0000 - - Path masks are needed for filters. - -commit 77de68825caae7a9cb1275b0020e49fa9cb27e29 -Author: Pavel Machek -Date: Wed Apr 12 12:10:37 2000 +0000 - - BGP_PATH masks now actually work as data type. - -commit 78c6217c1e9f8a46026cecf6a6369b72d5d883b0 -Author: Pavel Machek -Date: Wed Apr 12 10:34:45 2000 +0000 - - Path printing is now much nicer: not having to put it backward - simplifies it. (Sorry for previous commit, cvs is naughty). - -commit f7d534cf2e8932869b049bd64677bb0a67e362c1 -Author: Pavel Machek -Date: Wed Apr 12 10:34:02 2000 +0000 - - Path printing is now much nicer. - -commit b475c543b420b65bac90992df99a0fe6c9da7c88 -Author: Martin Mares -Date: Mon Apr 10 22:08:32 2000 +0000 - - Fix comments. - -commit 9196e9f8f951f7cbd372b9243dd10fc761f2fbe6 -Author: Pavel Machek -Date: Mon Apr 10 16:36:40 2000 +0000 - - Commit fixes. - -commit 7f77e2500218c197ba56a473d587dedda7309029 -Author: Pavel Machek -Date: Mon Apr 10 15:07:43 2000 +0000 - - Functions for matching paths added, tested lightly. - - Functions for working with community lists added, they compile. - - This should not be definitive place for this stuff. - -commit 73e03bce66e3e8d167f00813d942ef35bfd105e2 -Author: Pavel Machek -Date: Mon Apr 10 14:45:00 2000 +0000 - - As usuall, most important info was missing. - -commit ae8f5584990ce3bfb5b0bec2f7a1c052e45860df -Author: Martin Mares -Date: Mon Apr 10 12:39:51 2000 +0000 - - Implemented outgoing attribute cache. - -commit 6f57dcc07cdf54133bd57aeaec7446f59f2c91cd -Author: Martin Mares -Date: Mon Apr 10 12:39:29 2000 +0000 - - Export ea_same() and ea_hash(). - -commit f2cb1d708dc5de4167a3dc12b50001391d01f5f0 -Author: Martin Mares -Date: Mon Apr 10 12:38:15 2000 +0000 - - Dropped CPU_NEEDS_ALIGN_* as unaligned.h no longer uses them. - -commit 48e842cc98b1436da57c8682c6c8414ba379ed7c -Author: Martin Mares -Date: Mon Apr 10 11:21:40 2000 +0000 - - Use neighbor cache to track direct route to the peer or multihop destination. - - Calculate next_hop properly based on the local address we get from the - neighbor entry. - -commit 287111fed1c8e9eb135df1108ea747e02b30e9e9 -Author: Martin Mares -Date: Mon Apr 10 10:40:00 2000 +0000 - - Fix stupid bug in neighbor cache. - -commit ef2c708dfac4c8b4b5ab0ed8b71842da5c7ab3d7 -Author: Martin Mares -Date: Sun Apr 9 22:05:02 2000 +0000 - - More BGP progress... - - For Pavel: You can use bgp_path_prepend() for prepending AS numbers to AS paths. - -commit d3feceff105fbcee7a9976812156aea7517c44e6 -Author: Martin Mares -Date: Sun Apr 9 22:04:12 2000 +0000 - - BGP doesn't need any inline attributes. - -commit 3d0ea3a7c3e3b14bd0b9602d6b14518c907d8789 -Author: Pavel Machek -Date: Fri Apr 7 09:02:17 2000 +0000 - - Fix of comment. - -commit 2c971094ebf73c2a2cfc5927095a0c6fd3c15836 -Author: Ondrej Filip -Date: Wed Apr 5 00:51:25 2000 +0000 - - LSA flooding done. - -commit 10000b96a89d1ab4425e29164c3694aa26622b1c -Author: Ondrej Filip -Date: Tue Apr 4 22:27:19 2000 +0000 - - Small clean up. (Duplicate #defines.) - -commit f1f7faceb445fdfa2b2a013b791882afd68ae421 -Author: Ondrej Filip -Date: Tue Apr 4 22:22:08 2000 +0000 - - "Bug in hashing" fixed. Ehm it was bug in lsrql node removing. - -commit d8852b362c015db38abf180888e77900f35089de -Author: Ondrej Filip -Date: Tue Apr 4 15:55:55 2000 +0000 - - LSupdate processing improved. Now there is some bug in hashing. :-( - -commit 921a93f2176723d235989efe882050c0265bea84 -Author: Ondrej Filip -Date: Tue Apr 4 00:32:17 2000 +0000 - - Flooding work continues. - -commit 8496b2e41a81f8281da0e0c3e4bbb72a57d3bf21 -Author: Ondrej Filip -Date: Mon Apr 3 22:31:07 2000 +0000 - - Minor change in area list. Now I use MJ's lists. - -commit 394acced118df7360e480920c65ca260c5b8c44f -Author: Ondrej Filip -Date: Sun Apr 2 20:41:33 2000 +0000 - - Work on lsupdates continues. Some checksum cleanup. - -commit db9fb727699a6244afcff28dcc2320a3e66ee269 -Author: Ondrej Filip -Date: Sun Apr 2 19:04:23 2000 +0000 - - lsa_cmp moved into lsalib.c - -commit 10be74da202b20a7d502724ef8e7a9787b7eba0a -Author: Martin Mares -Date: Sat Apr 1 10:21:11 2000 +0000 - - Formatting of dynamic attributes (except for paths and communities which - will be added soon). - -commit dad177d7e045ed07181da02ccd619f8f943a5c80 -Author: Martin Mares -Date: Sat Apr 1 10:20:12 2000 +0000 - - RIP: Set attribute class. - -commit 3991d84e8fa9118a43149d4d3304726eb786bd46 -Author: Martin Mares -Date: Sat Apr 1 10:19:47 2000 +0000 - - Changed initialization of protocol list -- now we call proto_build() instead - of calling the protocols manually. - - Implemented printing of dynamic attributes in `show route all'. - - Each protocol can now register its own attribute class (protocol->attr_class, - set to EAP_xxx) and also a callback for naming and formatting of attributes. - The callback can return one of the following results: - - GA_UNKNOWN Attribute not recognized. - GA_NAME Attribute name recognized and put to the buffer, - generic code should format the value. - GA_FULL Both attribute name and value put to the buffer. - - Please update protocols generating dynamic attributes to provide - the attr_class and formatting hook. - -commit f8809249906811683e7e8d2a7b8cdcccde86742a -Author: Martin Mares -Date: Sat Apr 1 09:17:33 2000 +0000 - - BGP now handles incoming routes (IPv4 only). - -commit 85810613993913831822b84ab7a9792a88fc7a8f -Author: Martin Mares -Date: Sat Apr 1 09:16:42 2000 +0000 - - When tracing, always print incoming part of the trace before the outgoing one. - - Avoid buffer overflows in `show routes' command. - -commit 798df5b1ab6b497d8d9d6d51764f5aef4eb2d567 -Author: Martin Mares -Date: Sat Apr 1 09:15:55 2000 +0000 - - When processing ACCEPT/REJECT carrying no message, don't print - trailing newline. - - I hope the fix is correct, but please check. - -commit b157361533412de2123787a412e6e463c0b2f13a -Author: Martin Mares -Date: Sat Apr 1 09:15:10 2000 +0000 - - SOURCE should really refer to rta->source, not rta->gw. - - Please check that all rta attributes are available, I guess that at - least rta->dest is missing. - -commit 499cb346f6fb29f9157e12942484c8b4362597c3 -Author: Ondrej Filip -Date: Sat Apr 1 02:45:49 2000 +0000 - - LSA checksum works. But it's very uneficient on little endian systems. - -commit ac4b4683aee8e5aa566b0b5f99bd940bc10d9b71 -Author: Martin Mares -Date: Fri Mar 31 23:40:00 2000 +0000 - - Removal of useless includes continues... - -commit 3cf4a2e2b03d00adce703cd1dc961eea77b7a57b -Author: Martin Mares -Date: Fri Mar 31 23:35:59 2000 +0000 - - Removed lots of superfluous includes. - - Use debug() instead of printf(). - -commit a37410cbddfadca651c795e9817f66c54374a943 -Author: Martin Mares -Date: Fri Mar 31 23:33:03 2000 +0000 - - Use bsprintf() instead of sprintf(). - -commit 221135d6bf256c85b4aeb08881d6262f6eaadff4 -Author: Martin Mares -Date: Fri Mar 31 23:30:21 2000 +0000 - - Include "lib/string.h" instead of . It should give us bzero() - and other non-portable functions on all systems. - -commit c00d31befab5a7e932231f7a8050547c72c94631 -Author: Martin Mares -Date: Fri Mar 31 23:21:37 2000 +0000 - - Parsing of BGP attributes. - -commit 08732b71784b640aebbea88d4452f4c5987d0a09 -Author: Martin Mares -Date: Fri Mar 31 23:21:19 2000 +0000 - - Fixed bug in processing of dynamic attributes. - -commit 65e55e9cca38828980123ea64fe203d799a20810 -Author: Ondrej Filip -Date: Fri Mar 31 01:40:12 2000 +0000 - - Checksum changes. Bug is still NOT fixed. :-( - -commit 9f940976d10e6295f78adf4afb1868a7ed6cac73 -Author: Ondrej Filip -Date: Fri Mar 31 01:14:41 2000 +0000 - - Some bug fixes. LSA checksum is still bad. I'll fix it later. - -commit f45fd3164bf2f9342e12e867f8d68c7fc77d3177 -Author: Ondrej Filip -Date: Fri Mar 31 00:21:41 2000 +0000 - - Sending of lspd as responce to lsreq done. - -commit 14a7921c83f0ecfc8793b3a38e4ac16ae9bd75d3 -Author: Ondrej Filip -Date: Thu Mar 30 20:18:51 2000 +0000 - - LSA structure changes. (Len added.) - -commit de769e24c01ff0c4aa573d9b4cec833dcae182d2 -Author: Ondrej Filip -Date: Thu Mar 30 20:00:42 2000 +0000 - - Skeleton structures and files added. - -commit 95eb1dba3ffe810bd876546ca4580af3bccdf181 -Author: Ondrej Filip -Date: Thu Mar 30 19:37:26 2000 +0000 - - Add hashing to link state request list. - -commit 76915ec9798a2c067ef05c6fb94cea58af12128e -Author: Ondrej Filip -Date: Thu Mar 30 19:21:17 2000 +0000 - - Minor changes. - -commit 973399ae2c21b41983a35fe71657fb41351d99e6 -Author: Martin Mares -Date: Thu Mar 30 18:44:23 2000 +0000 - - Basic analysis of UPDATE packets. - -commit b552ecc4d7ddb1b960aa26b96ebea95a3af72043 -Author: Martin Mares -Date: Thu Mar 30 17:39:48 2000 +0000 - - Connection state machine works. - -commit ce0603a6eda81b97d6db021c91b86cb4c920eb04 -Author: Ondrej Filip -Date: Thu Mar 30 16:22:58 2000 +0000 - - Better list manipulation. - -commit 3fdbafb6f49946f15d0c10d311dd35479bf6c0f1 -Author: Martin Mares -Date: Thu Mar 30 10:44:20 2000 +0000 - - More BGP. This time it connects, but the state machine still isn't complete. - -commit 320f41735795b51c51a9f5c976a2335a9ec96e32 -Author: Martin Mares -Date: Thu Mar 30 10:43:37 2000 +0000 - - Defined sk_close() which closes the socket safely even if called from - socket hook. Replaces the SK_DELETED hack. - - Squashed a couple of bugs in handling of TCP sockets. - -commit 3a6337ecb2f6e5c8454a8416214c60432611aaa6 -Author: Martin Mares -Date: Thu Mar 30 08:50:46 2000 +0000 - - Use FF_FORCE_TMPATTR where appropriate. - -commit 3076b5aedc1d348413276b361806053e80dca7c6 -Author: Martin Mares -Date: Thu Mar 30 08:50:30 2000 +0000 - - Renamed FF_OUTGOING to FF_FORCE_TMPATTR which much better fits the semantics. - - Call rte_cow() instead of rte_do_cow(), so that COW works properly. - - Stripped "\n" off several (de)bug messages. - -commit 6d2b32114feadb283cb988daa7ed80142aa8c4d1 -Author: Ondrej Filip -Date: Thu Mar 30 00:18:59 2000 +0000 - - LSreq initial work. - -commit 3ee2310c5dccebe2b63098ab478b5b1d61e4fcb2 -Author: Martin Mares -Date: Wed Mar 29 22:57:46 2000 +0000 - - Avoid conflicts with libraries defining their own xmalloc by defining - xmalloc to bird_xmalloc internally. - -commit 2560c8860eeed2e352c394aec920a4f696563e6c -Author: Ondrej Filip -Date: Wed Mar 29 17:51:40 2000 +0000 - - Slave bug fix. - -commit 910e557b47f52bf38aa923a69249670d71befc02 -Author: Ondrej Filip -Date: Wed Mar 29 17:18:06 2000 +0000 - - Many changes in dbdes sending & receiving. EXDONE caused. - -commit 315648af8ed75c91e0dd82748a933963b9e0c4ec -Author: Ondrej Filip -Date: Wed Mar 29 13:02:58 2000 +0000 - - RXMT timer handling bug fix. - -commit 3fba20968816a9dbd4565fd6806f29d72d73f638 -Author: Ondrej Filip -Date: Wed Mar 29 12:47:07 2000 +0000 - - Some FIXME added. - -commit 96501dfe5f6fd7a2837aee910c78f147e54e4f0b -Author: Ondrej Filip -Date: Wed Mar 29 12:45:37 2000 +0000 - - Sending of DBdes bug fixed. - -commit 04c6319a630e9e18bc45da5e5b1c1f11d726c261 -Author: Ondrej Filip -Date: Wed Mar 29 12:32:25 2000 +0000 - - IMMS reverted to bits. Outgoing packets dumping added. - Cisco does not set inteface MTU. Hmm.... - -commit 0a06a9b8b3dbd59c850303c49eea97c12e1ac0ff -Author: Pavel Machek -Date: Wed Mar 29 09:02:00 2000 +0000 - - f_run gets one more parameter to distinguish between in and out modes. - -commit 8d2e3eba92e339f0635e0cb2fbfb49482b26295a -Author: Pavel Machek -Date: Wed Mar 29 08:58:06 2000 +0000 - - Cross-protocol issues solved better - -commit 963ea03d872db30e1a0d0216e488b1960590af2d -Author: Ondrej Filip -Date: Wed Mar 29 00:34:28 2000 +0000 - - DBdes sending/receiving changes. - -commit d0031c5ee94b29b7a5419a0504c160e424d970b0 -Author: Pavel Machek -Date: Mon Mar 27 12:21:11 2000 +0000 - - Use neigh_connected_to in rip, and behave more correctly - w.r.t. whotoldme and nexthop. - -commit 200accf396b869267fd707b56afddb27d8479acc -Author: Martin Mares -Date: Mon Mar 27 12:16:37 2000 +0000 - - if_connected() is again private. - - Introduced neigh_connected_to() to serve the same purpose efficiently. - -commit 6480dd08803bc46bcd19b466ac6c499699d17448 -Author: Pavel Machek -Date: Sun Mar 26 21:31:57 2000 +0000 - - I broke compilation. Sorry. - -commit 8c86f96fa6f783326455f8a8d88a242cd8dd9f1b -Author: Pavel Machek -Date: Sun Mar 26 18:01:27 2000 +0000 - - Split horizont done right. - - Locks done better. - -commit 697711be2cf6b5da140b8c12c301affa53488021 -Author: Pavel Machek -Date: Sun Mar 26 18:00:45 2000 +0000 - - if_connected is usefull outside of neighbour cache. - -commit 9ee07ca53fd94ad72b7cb2776cc15f13a026a910 -Author: Pavel Machek -Date: Fri Mar 24 10:08:20 2000 +0000 - - FIXME was actually already resolved - -commit 772f489932cf24d7a408835ac67f7b4f4d85a1eb -Author: Pavel Machek -Date: Thu Mar 23 12:08:40 2000 +0000 - - Minor change to make code more readable. - -commit ff8ed6328595c77e8b0ed3ed4cea3fb4d9bb141d -Author: Pavel Machek -Date: Wed Mar 22 14:26:03 2000 +0000 - - Rip now tries to lock interface. - - Fixed fatal errors which caused segfault at startup. - - Fixed fatal errors in rip which caused it not to send more than first - update. - -commit ba4466701aed032f947272dead47b3abc7bb7a3f -Author: Pavel Machek -Date: Wed Mar 22 14:23:40 2000 +0000 - - Format of dates changed, so rip authentication is now commented out. - -commit 72a6ef11fe6589d0f4d5158c207ff8a0669becc3 -Author: Martin Mares -Date: Tue Mar 21 15:53:50 2000 +0000 - - Construction of BGP packets. - -commit a8f944cb6e6c75c1aac2500ccf1f3905c4c3fd7a -Author: Martin Mares -Date: Tue Mar 21 15:51:30 2000 +0000 - - Wrote real version of unaligned data access functions (needed for BGP). - -commit c01e37416d09a92bf838250a15fe99fdc48bc010 -Author: Martin Mares -Date: Mon Mar 20 21:50:17 2000 +0000 - - Started work on BGP. Wrote main part of the connection handling code. - -commit 1cf716f0751ce1d146d6d5114cb36686844d4817 -Author: Martin Mares -Date: Mon Mar 20 21:49:21 2000 +0000 - - Handle EINPROGRESS properly. - - Set IP_DONTROUTE sockopt only if sk->ttl == 1. - -commit 267a2c0ebd980c16c1cf01044b0ee44095f34b9e -Author: Martin Mares -Date: Mon Mar 20 20:52:18 2000 +0000 - - Added missing newline in debug output. - -commit ca97b489de8cca61d1affa49983b7cdc1c81cf96 -Author: Martin Mares -Date: Mon Mar 20 18:45:03 2000 +0000 - - Define new data types for BGP. - -commit 2638249d34cc7f600fba25edd29538c00a3aca31 -Author: Martin Mares -Date: Sun Mar 19 22:09:07 2000 +0000 - - Bare skeleton of the BGP. - -commit 349e21bb0bb7584fb18c19859d876893c3130947 -Author: Martin Mares -Date: Sun Mar 19 21:59:24 2000 +0000 - - Protocol tracing: Don't dump core on filtered out routes. - -commit 856b87d1e4c44608df5debd8e4246a3c4026bbcb -Author: Pavel Machek -Date: Mon Mar 13 13:31:00 2000 +0000 - - Cleanup, mostly debugging messages. - -commit abf2be7d0cabc3c8c021b6f6784cf63610571715 -Author: Martin Mares -Date: Sun Mar 12 23:04:04 2000 +0000 - - Add internal commands of the client to the command list. - -commit 971b2310ae4d367d608e34e9465ad5d2c65e505d -Author: Martin Mares -Date: Sun Mar 12 22:55:09 2000 +0000 - - Commands which failed expansions are to be stored to history, too. - -commit f098e072bec8d5858afbf713635217ea84c7e45d -Author: Martin Mares -Date: Sun Mar 12 22:53:05 2000 +0000 - - Fixed a bunch of FIXME's by removing them :) - -commit 432709027680d7791b325b2c2116c658eba21c8d -Author: Martin Mares -Date: Sun Mar 12 22:44:54 2000 +0000 - - Made `show status' show uptime and time of last reconfiguration. - -commit 7a88832e78cbc18db109c091d74f6d27284cff44 -Author: Martin Mares -Date: Sun Mar 12 22:43:13 2000 +0000 - - Added tm_format_datetime(). - -commit 81ce667b7b7c38e109984602cf4e5ecbec80f7f1 -Author: Martin Mares -Date: Sun Mar 12 22:40:07 2000 +0000 - - Don't crash when filter_same() gets called on FILTER_ACCEPT or FILTER_REJECT. - -commit a92bebe0ec3545b1f99909d20224977aa6da1827 -Author: Martin Mares -Date: Sun Mar 12 21:58:51 2000 +0000 - - Yet another LOCAL_DEBUG turned off. - -commit 832fa033b7ecacf3225d7aa8c86e30484a07d946 -Author: Martin Mares -Date: Sun Mar 12 21:54:39 2000 +0000 - - Cleaned up debugging in kernel syncer. Netlink has still LOCAL_DEBUG - turned on, but after some testing I'll gag it. - -commit e68dd11c43ebec527da69da7b093ae90ef6d6ea9 -Author: Martin Mares -Date: Sun Mar 12 21:47:25 2000 +0000 - - Use do { } while(0) instead of empty DBG if not debugging. - -commit 6b9fa320806ce8a734d865ebcb8052ba0e50c527 -Author: Martin Mares -Date: Sun Mar 12 21:01:38 2000 +0000 - - Great cleanup of debug messages. LOCAL_DEBUG turned off in most modules, - several debug() calls converted to DBG(). - -commit 6a9f28b0b9254ba21c36126d6f10388815840001 -Author: Martin Mares -Date: Sun Mar 12 20:50:35 2000 +0000 - - Added tracing of interface events. - -commit b0a47440e33e7a270205130b01d59faadb6b6726 -Author: Martin Mares -Date: Sun Mar 12 20:49:08 2000 +0000 - - Oops, got `<' and `>' markers in trace output reversed. - -commit cfd46ee4c5b0d3689f8f9d094a68bc4b732cd0af -Author: Martin Mares -Date: Sun Mar 12 20:30:53 2000 +0000 - - Added debugging of communication between protocols and routing tables. - Just ask for "debug routes" if you want to see the routes and "debug filters" - if you want even the rejected ones. - -commit c8d5ffafb7c7e644048691221ca9d56ec68925a0 -Author: Pavel Machek -Date: Fri Mar 10 20:21:12 2000 +0000 - - Fix <=, >=, != - -commit ce17d4c165cadb09d391e34cda1b796a125ef012 -Author: Ondrej Filip -Date: Thu Mar 9 22:38:05 2000 +0000 - - LSA DB is completely redesigned. Now it should be faster and it needs - less memory. - -commit af834f8630eb0078c723fb9b0af053dba6725d5e -Author: Pavel Machek -Date: Thu Mar 9 16:38:51 2000 +0000 - - Categorized TRACE() messages in rip - -commit cb822c0777657703e546bc99a7e5b646abe83d3f -Author: Pavel Machek -Date: Thu Mar 9 15:12:41 2000 +0000 - - Rip tracing: still need config hunk to set p->debug. - -commit 38466dbdacc706d7a6abcf348c448bd9f8fb01d4 -Author: Pavel Machek -Date: Thu Mar 9 14:59:10 2000 +0000 - - log() classes done right - -commit 995e5894cd9872603bc7c0ffd79fef96e4839006 -Author: Pavel Machek -Date: Thu Mar 9 14:47:43 2000 +0000 - - 1 less shift/reduce conflict - - print now takes arguments separated by , - - [ 1.2.3.0/24 .. 3.4.5.0/8 ] is now forbidden - - [ 1.2.3.0/8 ] now actually works - -commit e4a73dbfcbb24a6a01ca960b641ce29d5045b3ba -Author: Pavel Machek -Date: Thu Mar 9 13:21:40 2000 +0000 - - CONST() is now gone - -commit 30147b89ff3a389ad40096505f3d1a5ba1705736 -Author: Ondrej Filip -Date: Wed Mar 8 12:50:28 2000 +0000 - - Sending of DBDes. (Checksum and length calculation NOT done.) - -commit 839380d7ecd133531ead2403c6dbc74950dad13c -Author: Martin Mares -Date: Tue Mar 7 21:50:21 2000 +0000 - - Added debugging of protocol state transitions. - -commit f30b86f9d5004a3e159c385269e76efc71b1566a -Author: Martin Mares -Date: Tue Mar 7 21:50:03 2000 +0000 - - Added configuration of default protocol debugging flags. - -commit 3eb0b586ca93b1d0d34f935cac8524e02f708126 -Author: Martin Mares -Date: Tue Mar 7 21:04:36 2000 +0000 - - No longer echoes commands before sending them. - -commit 3cbfcafecdf4f3dd1b201e0adf849f9959284c87 -Author: Martin Mares -Date: Tue Mar 7 21:04:14 2000 +0000 - - DBG calls debug() if defined(LOCAL_DEBUG) || defined(GLOBAL_DEBUG). - -commit 96d8e3bff242d5c9d0eb75fa04a21f6c09d8dbcf -Author: Martin Mares -Date: Tue Mar 7 20:49:48 2000 +0000 - - Added protocol debugging flags (protocol.h: D_xxx), parsing of them - in configuration files and commands for manipulating them. - - Current debug message policy: - - o D_STATES, D_ROUTES and D_FILTERS are handled in generic code. - o Other debug flags should be handled in the protocols and whenever - the flag is set, the corresponding messages should be printed - using calls to log(L_TRACE, ...), each message prefixed with - the name of the protocol instance. These messages should cover - the whole normal operation of the protocol and should be useful - for an administrator trying to understand what does the protocol - behave on his network or who is attempting to diagnose network - problems. If your messages don't fit to the categories I've defined, - feel free to add your own ones (by adding them to protocol.h - and on two places in nest/config.Y), but please try to keep the - categories as general as possible (i.e., not tied to your protocol). - o Internal debug messages not interesting even to an experienced - user should be printed by calling DBG() which is either void or - a call to debug() depending on setting of the LOCAL_DEBUG symbol - at the top of your source. - o Dump functions (proto->dump etc.) should call debug() to print - their messages. - o If you are doing any internal consistency checks, use ASSERT - or bug(). - o Nobody shall ever call printf() or any other stdio functions. - - Also please try to log any protocol errors you encounter and tag them - with the appropriate message category (usually L_REMOTE or L_AUTH). Always - carefully check contents of any message field you receive and verify all - IP addresses you work with (by calling ipa_classify() or by using the - neighbour cache if you want to check direct connectedness as well). - -commit c801e1fbabee49838287a9e96814d3d0bf84ffa2 -Author: Martin Mares -Date: Tue Mar 7 20:09:35 2000 +0000 - - Renamed command `shutdown' to `down', so that `s' can be used as an - abbreviation for `show'. - -commit 3549667925d04fa6a46ea35f56a9d3c741634d6a -Author: Martin Mares -Date: Sun Mar 5 22:48:30 2000 +0000 - - Implemented real slab allocator. If you suspect it from being buggy, - just #define FAKE_SLAB at the top of lib/slab.c to bypass it. - -commit 9f4929e749d945c727f245ed7ef30c557124c352 -Author: Martin Mares -Date: Sat Mar 4 22:30:44 2000 +0000 - - Renamed EAF_INLINE to EAF_TEMP to make the name reflect the real meaning. - -commit b9626ec6eaf299b889f52d017d025f356b43371a -Author: Martin Mares -Date: Sat Mar 4 22:21:06 2000 +0000 - - Garbage collector events and counters are now per table and one day - they can be made configurable if it turns out to be useful. - -commit 16c07e3d519b87a2166a513dd4edd8dab3bc3d19 -Author: Martin Mares -Date: Sat Mar 4 21:27:57 2000 +0000 - - Removed bogus comment. - -commit 54fb7701a21693eb7a51342eb98d663dd7324e8a -Author: Martin Mares -Date: Sat Mar 4 21:26:35 2000 +0000 - - Fixed display of short continued messages in verbose mode. - -commit c7814f01fc5fb51ae4054833ea8074ab9bcc86de -Author: Martin Mares -Date: Sat Mar 4 21:26:19 2000 +0000 - - Enabled short continuations. - -commit a58dad62383855ad1a60d4ec5406c38d24874506 -Author: Martin Mares -Date: Sat Mar 4 21:19:10 2000 +0000 - - Please *think* when defining operator priorities. - - (-: num_of_parser_conflicts -= 42 :-) - -commit ee76a92a80a0241421f57fe332c251255d2af4f8 -Author: Martin Mares -Date: Sat Mar 4 21:09:14 2000 +0000 - - Implemented real attribute cache. - -commit d4d7562806b7306d6e5ed9b759906e264b743dc5 -Author: Pavel Machek -Date: Thu Mar 2 22:23:18 2000 +0000 - - Avoid being exponential, do not allow ! = - -commit c8518ae136d94dc9576531a311947ba13213aea0 -Author: Martin Mares -Date: Wed Mar 1 15:05:43 2000 +0000 - - Removed RTF_EXTERIOR and RTF_TAGGED (unused). - -commit 85053fce04a2cba09332a6eb667f09f9c4182392 -Author: Martin Mares -Date: Wed Mar 1 14:51:47 2000 +0000 - - Reimplemented neighbor cache. Now uses real hashing. - -commit 7293c5dd8175aac4650cb48c68c7dd278a74371e -Author: Martin Mares -Date: Wed Mar 1 14:49:07 2000 +0000 - - Added proto->hash_key which contains randomly generated hash key used - for calculation of hash functions depending on proto. - -commit 62ab789de5f5ace97a93fce551469f0229ba8c92 -Author: Pavel Machek -Date: Wed Mar 1 14:42:59 2000 +0000 - - Added type parameter to f_new_dynamic_attr. - -commit 31e79264a21df1acdbfbb66af40e05073b115a2c -Author: Pavel Machek -Date: Wed Mar 1 14:31:31 2000 +0000 - - tmp_attrs fixed. - - I do not know if it is right since mj ingores talk once started :-(. - -commit 4ebbbd4079cbf6295367b9c7a555c1b668fa0d8c -Author: Martin Mares -Date: Wed Mar 1 12:15:20 2000 +0000 - - Changed comments regarding hash function. - -commit 14a6c2a705fce9143e721b8da167dcbaa053c936 -Author: Martin Mares -Date: Wed Mar 1 12:03:43 2000 +0000 - - IP_PREC_INTERNET_CONTROL for IPv6 (see the comment). - -commit 4c1b4e1a582ea8d13943c46ad87588d5743439cb -Author: Martin Mares -Date: Wed Mar 1 11:48:11 2000 +0000 - - If the user has specified identical preferences for instances of different - protocols, break the tie by comparing addresses, so we keep the ordering - unambiguous. - -commit aee539f241dd233eb9e716e11ee2c449ab482a75 -Author: Martin Mares -Date: Wed Mar 1 11:42:13 2000 +0000 - - Made `datetime' more user friendly. Now it should be a quoted string - of type "dd-mm-yyyy". - -commit db1326aa5e39711d88d305ac08a0afa137ab77f0 -Author: Martin Mares -Date: Wed Mar 1 11:32:23 2000 +0000 - - Dynamic attributes are now declared in per-protocol grammar files instead - of filter/config.Y. Bird now compiles even if you disable RIP. - - Removed RTA and IMPOSSIBLE tokens (unused). - - Removed superfluous comment in filter.h. - - I've tried to do my best, but Pavel, please check these changes. - -commit 2ca3d9a8fc25be6f7d41d8a6ff50a70612c11c93 -Author: Martin Mares -Date: Wed Mar 1 11:30:16 2000 +0000 - - Defined INVALID_TOKEN which is a token guaranteed to be never generated. - -commit d07bab399735ee80205637f8e180e7595e0c0a67 -Author: Martin Mares -Date: Wed Mar 1 11:29:30 2000 +0000 - - ipa_opposite hack is not applicable in IPv6. - -commit ef0883a12fc699fbcef61f56fe8445f5e2ac1bb7 -Author: Martin Mares -Date: Tue Feb 29 23:20:55 2000 +0000 - - Adapted RIP to new interface flags. Pavel, please verify it's right. - -commit 6a636392d33627944df9d5a9573932cdc0bf6da5 -Author: Martin Mares -Date: Tue Feb 29 23:19:52 2000 +0000 - - Rewrote interface type detection logic. The `unnumbered' flag is now per - address, not per interface (hence it's ifa->flags & IA_UNNUMBERED) and - should be set reliably. IF_MULTIACCESS should be fixed now, but it isn't - wise to rely on it on interfaces configured with /30 prefix. - -commit e69e4ed9349ee28262fe74f70e7e52c181d5d098 -Author: Martin Mares -Date: Sun Feb 27 22:00:19 2000 +0000 - - Support expansion of command abbreviations. - - Client considered finished (modulo bugs). - -commit de30342f97490e3a3626c4a5fbf3352d1d0aa9c8 -Author: Ondrej Filip -Date: Fri Feb 25 19:19:41 2000 +0000 - - Router LSA & area adding. - -commit b786df7035f43bb5eb4f7bca980e3bf684e527b7 -Author: Ondrej Filip -Date: Fri Feb 25 14:26:54 2000 +0000 - - Memory allocation in ospf_area changed. - -commit 2d496d2028e1283384f1c9d243f96eb59c42297e -Author: Pavel Machek -Date: Fri Feb 25 11:15:26 2000 +0000 - - Get rid of 'ab'-s, added return to functions. - -commit df0cf75dc849f5182d75328f4d4189a2d6048b57 -Author: Martin Mares -Date: Thu Feb 24 18:46:24 2000 +0000 - - Hmmm, libreadline 2.1 seems to be the oldest version we work with. - -commit 1d4ba6583afa5e6d4118aca0d0a645342d575b68 -Author: Martin Mares -Date: Thu Feb 24 18:43:23 2000 +0000 - - Moan loudly if libreadline is an old version which doesn't support - callbacks. - -commit ab56f6b16fd9401565a066122be3231dccd24fb6 -Author: Ondrej Filip -Date: Thu Feb 24 00:26:10 2000 +0000 - - Area work and router LSA starts when interface goes up. - -commit ea28da044af9a35407724ba091d9a823c1cfe7e7 -Author: Ondrej Filip -Date: Wed Feb 23 23:23:19 2000 +0000 - - Small change for debugging. - -commit 91808fffc22e37b6d558f22db911ad0a3277d694 -Author: Ondrej Filip -Date: Wed Feb 23 23:14:18 2000 +0000 - - Structures for router LSA added. - -commit 6fa948d6c5abd0620836f66c654354ce38936f3a -Author: Ondrej Filip -Date: Wed Feb 23 23:13:27 2000 +0000 - - Better debugging. - -commit e6fcf113eca687d4dd888ef41033114ec8be82b9 -Author: Ondrej Filip -Date: Wed Feb 23 23:13:10 2000 +0000 - - Better debuging. - -commit fae0396ea4fd9d2530086eef77b8a11b6640d640 -Author: Martin Mares -Date: Thu Feb 17 23:37:16 2000 +0000 - - Completion works. Unfortunately, we have to access a couple of internal - symbols of libreadline :-( - -commit 0223d4fff11badc03470b4320fa9dfe28afd1bed -Author: Martin Mares -Date: Thu Feb 17 22:00:13 2000 +0000 - - Client: Online help works (Cisco style: just press `?' at the end of a line). - -commit c51f132d582632037b4ef064fbd32d785af245fc -Author: Martin Mares -Date: Tue Feb 15 12:18:37 2000 +0000 - - First usable version of the client. No command completion and similar nifty - features yet, but it works. - -commit 973304bc2b274ffaa6e27612256f6cea4a3a40c1 -Author: Martin Mares -Date: Mon Feb 14 17:32:50 2000 +0000 - - Don't make dependencies in client directory if the client is not - configured in. - -commit 4bf6de87379a3458b59275373b9e88611baabb88 -Author: Ondrej Filip -Date: Tue Feb 8 22:43:10 2000 +0000 - - Hash table structure redesigned. - -commit 316d7bd7d16ea7ea26831bb7100dd0ac3c63084e -Author: Ondrej Filip -Date: Tue Feb 8 22:13:12 2000 +0000 - - Other LS struct added. - -commit d3cb698053e14b3d35750d92389c34b71503bfc6 -Author: Ondrej Filip -Date: Tue Feb 8 19:24:22 2000 +0000 - - LSA type changed from u16 to u8. - -commit c7b915d68c9475ba3a23c99ec7f796ec0a53978b -Author: Ondrej Filip -Date: Tue Feb 8 19:12:42 2000 +0000 - - Malloc() changed to cfg_alloc(). - -commit 9a4037d40891321a2f091cb1f1003bb1ee725136 -Author: Pavel Machek -Date: Mon Jan 31 17:44:22 2000 +0000 - - filter_same() implemented. Don't bet on it, yet. - -commit 70844a6a46305080d7ada79936fb272beb411cf4 -Author: Pavel Machek -Date: Wed Jan 26 21:28:53 2000 +0000 - - Updated docs about filters, and added fixme. - -commit bd215f8bab7e0d94fa482b47ff8d5971cd5ab799 -Author: Pavel Machek -Date: Wed Jan 26 14:12:18 2000 +0000 - - Do not send empty packets in rip. - -commit 8660913ba83d66491caf407a7e6eb16a4eeda2d0 -Author: Pavel Machek -Date: Wed Jan 26 12:07:18 2000 +0000 - - Output made prettier. - -commit 7211be1cffdee84fd15e8b6b2a07a644948f1455 -Author: Martin Mares -Date: Thu Jan 20 13:13:30 2000 +0000 - - Configure, link and use the readline library. - -commit 9fac310d1a4e46f4bcc70177e59cbf93763ef479 -Author: Martin Mares -Date: Wed Jan 19 15:07:00 2000 +0000 - - Put client on a stony ground. The whole client is going to be system-specific - (the current version UNIX-specific) anyway, so it's useless to try splitting it - to sysdep and generic part. Instead of this, configure script decides (based on - system type and user's wish) what (if any) client should be built and what - autoconfiguration it requires. Also, the client provides its own die/bug/... - functions. - -commit f50b9e48b93e3f69423a0e6e5fef273ba2022958 -Author: Martin Mares -Date: Wed Jan 19 14:37:56 2000 +0000 - - Generate a list of all commands and their help texts for the client to use. - -commit 4b87e256eba51a8711c24fbae501ac7975b4ecd3 -Author: Martin Mares -Date: Wed Jan 19 12:30:19 2000 +0000 - - Split off general commands to cmds.c. - - Added `show symbols' command which dumps whole symbol table together - with symbol types etc. - -commit f5ad9f87a389c1167a8468d0190bcf6d3cc33cf6 -Author: Martin Mares -Date: Wed Jan 19 11:52:32 2000 +0000 - - Killed a couple of bugs in the neighbor cache. - - Manual disable/enable/restart/shutdown/reconfiguration of protocols - no longer hangs on loops in neighbor lists :) - -commit 3ea1ba632b3cdb5005a9339fd5e74d5f93631a48 -Author: Martin Mares -Date: Tue Jan 18 11:01:03 2000 +0000 - - Killed protocol->priority. Protocol startup should be clean and hack-free now. - It seems everything still works (except for disable/enable/restart which hangs - sometimes, but it's another story). - -commit 54aaa89ada2d048c64a5afd58844bc395b1a3cfe -Author: Martin Mares -Date: Tue Jan 18 10:42:45 2000 +0000 - - protocol->startup_counter no longer exists. - -commit aa8761de9471dbe28149d990bdbc851c744f4e2b -Author: Martin Mares -Date: Tue Jan 18 10:39:30 2000 +0000 - - Kernel route syncer now supports dynamic reconfiguration. Also it doesn't - depend on the startup counter hack now and uses a zero-time timer instead - to make itself scheduled after normal protocol startup. - -commit fb89b1a4ced5f3d847ecbc1d4b86a0cb47564ef7 -Author: Martin Mares -Date: Mon Jan 17 12:40:00 2000 +0000 - - Removed point-to-point tunnel hack as it breaks ordinary PtP interfaces. - I'll find a better solution soon. - -commit 295ae16d4ddf4b714e716a0a1537f40c54f1119c -Author: Martin Mares -Date: Mon Jan 17 12:38:50 2000 +0000 - - Static protocol supports full dynamic reconfiguration. - -commit 471cc0be651a8db7068a65963ecfd4cc45f97ab1 -Author: Martin Mares -Date: Mon Jan 17 12:38:07 2000 +0000 - - Moved initlialization of protocol lists to global init. Argh. - -commit d272fe22dddcb5c293d6aac18d36e3e3e66406a5 -Author: Martin Mares -Date: Mon Jan 17 11:52:50 2000 +0000 - - Separated `official protocol names' used in status dumps from name templates - used for automatic generation of instance names. - - protocol->name is the official name - protocol->template is the name template (usually "name%d"), - should be all lowercase. - - Updated all protocols to define the templates, checked that their configuration - grammar includes proto_name which generates the name and interns it in the - symbol table. - -commit f7fcb752520759ab3aed274ca608e8e6f96665c8 -Author: Martin Mares -Date: Mon Jan 17 11:17:33 2000 +0000 - - Reconfiguration for device protocol. - -commit 0ec90e9fc6f6bec2d0b64f6b9711a6d3edb4bd52 -Author: Martin Mares -Date: Mon Jan 17 00:20:45 2000 +0000 - - Pipe protocol supports reconfiguration. - -commit 88dc89f9918f524d9ca143d409c261a4a8230555 -Author: Martin Mares -Date: Mon Jan 17 00:20:17 2000 +0000 - - Device protocol supports reconfiguration. - -commit 26368f656c2398acc4d3ed55879d2f371cecf75b -Author: Martin Mares -Date: Mon Jan 17 00:19:58 2000 +0000 - - Don't forget changing proto->name to point to name in new configuration - (to avoid the name being freed with the old config). - - Also remember to add proto_pipe to protocol_list. - -commit ca0edc53956ecd493055ba1625754ee75d58a9c7 -Author: Martin Mares -Date: Sun Jan 16 23:36:53 2000 +0000 - - When a quoted string is encountered, don't forget to copy it to the - config pool before passing it to the parser. - -commit 99278e10421a2e6703e77f91e6ef436eaf660405 -Author: Martin Mares -Date: Sun Jan 16 23:36:19 2000 +0000 - - Wording changes. - -commit f14a4becbe77cfb3c2e4243d6fc383b0acd8956f -Author: Martin Mares -Date: Sun Jan 16 23:30:06 2000 +0000 - - Reworked proto lists -- each proto is now in two lists: the global one - (proto_list) and per-type one (original lists). A lot of things simplified. - - Implemented `disable', `enable' and `restart' CLI commands. - -commit 30a6108cccac93048440113211df2eed1fb541b1 -Author: Martin Mares -Date: Sun Jan 16 17:49:32 2000 +0000 - - Added filter_same() for comparision of two filters. - - Pavel, please implement this as soon as possible. - -commit bf8558bc9cab35f31bccd6a55e51f121370765c4 -Author: Martin Mares -Date: Sun Jan 16 17:40:26 2000 +0000 - - Converted shutdown to a kind of reconfiguration, it's no more handled - as a exception in protocol state machines. Introduced a `shutdown' - CLI command. Killed few reconfiguration bugs. - -commit ebc793a5f552bb676014f771d81c074b7dd4345d -Author: Martin Mares -Date: Sun Jan 16 17:39:16 2000 +0000 - - No more problems when events get scheduled during event processing. - -commit 50fe90edf3deab409ea7887c131bfe6ce89fa556 -Author: Martin Mares -Date: Sun Jan 16 16:44:50 2000 +0000 - - First attempt on dynamic reconfiguration. There are still lots of bugs - and problems to solve, but the hardest part works. - -commit 394aec8fdd112a81da1e2f6f0e09ee74256dc24e -Author: Martin Mares -Date: Sun Jan 16 16:40:57 2000 +0000 - - Don't forget to set proto->min_scope = SCOPE_HOST. - -commit 150875747813977ddf12474fa10a771090586402 -Author: Ondrej Filip -Date: Wed Jan 5 00:03:47 2000 +0000 - - Preparing for building LS databaze. Huh, why is it so complicated? :-( - - Adding definition of some constants. - -commit 7a7c1d9f34b95263d3bc100dec6cf3b94f1a9802 -Author: Pavel Machek -Date: Mon Dec 20 19:14:06 1999 +0000 - - Few more entries for bird documentation - -commit c8c0f62444a048e9d0986463ee1bfcdfc06df7c8 -Author: Pavel Machek -Date: Sat Dec 18 20:41:19 1999 +0000 - - This is first version of documentation. Be sure to take a close look - at it, and it would be very nice if you wrote at least introductions - to your chapters... - -commit 60d7d10e6f19483545760f2241312758dd72a2ad -Author: Pavel Machek -Date: Sat Dec 18 20:39:53 1999 +0000 - - Added fixme. - -commit 476e10842503b51331a7994b6e25c91b20eb8e71 -Author: Martin Mares -Date: Thu Dec 16 13:51:43 1999 +0000 - - Minor cleanups. - -commit e693ddff874890a9e5c990f6ca75d2e2358d065a -Author: Martin Mares -Date: Thu Dec 16 13:23:32 1999 +0000 - - Handle cases when SIOCGIFINDEX is defined, but doesn't work (new glibc - with 2.0 kernels). - -commit 3f996d46df3cf1bdbefe0b0b0f5245c76b12756b -Author: Martin Mares -Date: Thu Dec 16 13:14:32 1999 +0000 - - Added missing semicolon. - - rip.h compiles in IPv6 mode, rip.c still doesn't. - -commit a2867cd957c9282d47440a1f42a6b823f5c9e4b2 -Author: Martin Mares -Date: Thu Dec 16 13:14:02 1999 +0000 - - Better order of includes. - - set_inaddr() moved to sysio.h. - -commit 12a9d139eecea7e7fb5e73e82a2531c70894d4c8 -Author: Martin Mares -Date: Thu Dec 16 13:13:22 1999 +0000 - - ipv6_compare() accepts non-lvalue arguments as well. This makes filters - compile with IPv6. - -commit 67ece6df42b20ecc524cf3e5c14e8b541afec860 -Author: Martin Mares -Date: Thu Dec 16 13:06:13 1999 +0000 - - Tried to clean up multicast handling. Now we don't try to guess - multicast abilities depending on definedness of symbols and use hard-wired - system-dependent configuration defines instead. - - Please test whereever you can. - -commit ccdc33975648647270bf33511ec5bbab4d634634 -Author: Martin Mares -Date: Thu Dec 16 12:59:09 1999 +0000 - - Avoid touching F_MODIFY, it no longer exists. - -commit 6aea8905c4f0c2b0da6061b445894496e473145d -Author: Martin Mares -Date: Thu Dec 16 12:18:33 1999 +0000 - - TODO entries and FIXME's. - -commit d46ffc97ffc9ae753f999614bb69033b1f44df6d -Author: Martin Mares -Date: Thu Dec 16 12:18:19 1999 +0000 - - Kicked off F_MODIFY (not generated nor used) - -commit f545d38707bf01aa9db3915d782a547f89f92c1d -Author: Martin Mares -Date: Thu Dec 9 18:54:20 1999 +0000 - - Added universal locking mechanism which will solve problems - with protocols wanting to use the same port on the same interface - during reconfiguration time. - - How to use locks: In the if_notify hook, just order locks for the - interfaces you want to work with and do the real socket opening after the - lock hook function gets called. When you stop using the socket, close - it and rfree() the lock. - - Please update your protocols to use the new locking mechanism. - -commit 30bc402ebb324749f9468f8ff196545bb0a58442 -Author: Martin Mares -Date: Wed Dec 8 15:12:54 1999 +0000 - - Temporary work-arounds for multicast problems. Needs further investigation. - -commit 0da472d7e867e31c49fccc4ee45df3ef47c29c9b -Author: Martin Mares -Date: Wed Dec 8 14:16:13 1999 +0000 - - Except for special protocols (nowadays only the kernel syncer), don't - export host and link scope routes. - -commit dff1f5791794102e4e6880516545145c5036873f -Author: Pavel Machek -Date: Wed Dec 8 13:33:44 1999 +0000 - - Added hooks for show route. - Fixed passing metrics around routing tables. - -commit dc82daaa9b0d88dca8684a7a766b253853ee7023 -Author: Martin Mares -Date: Wed Dec 8 13:20:19 1999 +0000 - - - Path to control socket is selectable via command-line option. - - die() when control socket open failed. - -commit 4d4de35f002e3d7a780462b834f01eeb0f70239a -Author: Pavel Machek -Date: Wed Dec 8 12:51:45 1999 +0000 - - Fix timing and fix endianity in metrics. - -commit 2e18b87dcf5d4029d11bc46b37d601aae4f97174 -Author: Pavel Machek -Date: Wed Dec 8 12:51:26 1999 +0000 - - Disallow rta.net syntax. - -commit 3df563fa4c3c0acca181ce09dbb05452720e90e8 -Author: Pavel Machek -Date: Wed Dec 8 12:51:15 1999 +0000 - - Put rip options into config file. - -commit 9b47eb8530263b5ebd4a41f9ef3dab982775fc44 -Author: Pavel Machek -Date: Wed Dec 8 12:50:57 1999 +0000 - - Make bird.conf that does not crash machine when you run bird as root. - -commit 6c14255dd666c362f19f193a41a31f66310a34ea -Author: Pavel Machek -Date: Wed Dec 8 10:15:51 1999 +0000 - - Make rta. syntax optional. - -commit febe526303996d48a667cd077f5703ca91f43219 -Author: Pavel Machek -Date: Wed Dec 8 10:15:40 1999 +0000 - - Separated bird.conf and bird.conf for testing filters. - -commit f78056fb2cf4554d5dcc50b5e0e79bc09ae825cf -Author: Martin Mares -Date: Mon Dec 6 13:51:04 1999 +0000 - - Allow logging to stderr as well. - -commit 4ab5331c6370ba83dc7b228f9a94ccc1c64a973e -Author: Martin Mares -Date: Mon Dec 6 13:50:50 1999 +0000 - - Added type `g' for void (general) pointer. - -commit a0c37b45e59f024fc24b65ffbaf2c9e0f1996938 -Author: Martin Mares -Date: Mon Dec 6 13:45:56 1999 +0000 - - Logging is now configurable. You can define multiple log outputs (to both - files and syslog) and assign lists of message categories to each of them. - -commit 7c0cc76ed76100ef8492f13eeec1e061d52b9be0 -Author: Martin Mares -Date: Mon Dec 6 13:44:45 1999 +0000 - - Moved initialization of protocol list to proto.c. - - Added sysdep configuration hooks. - -commit a9c986f98116fef5c35d956e7a867be0735f3268 -Author: Martin Mares -Date: Mon Dec 6 13:43:47 1999 +0000 - - Added tracked_fopen() which is a fopen registered in resource database. - Will be used for log files. - -commit 34350a52700955d50895058d01b5407aea970e9b -Author: Martin Mares -Date: Mon Dec 6 12:34:45 1999 +0000 - - Implemented echoing of log messages to CLI connections. Just try `echo all'. - -commit f3792601dfe85c3017c984a6de5722d0e9da8a16 -Author: Martin Mares -Date: Sat Dec 4 23:28:56 1999 +0000 - - Don't forget to send an OK reply after dumping debug information. - -commit 305a01f57bd97906000c36bb154d63bc90012ef7 -Author: Martin Mares -Date: Sat Dec 4 23:17:29 1999 +0000 - - Added DEBUG commands. - - Removed CLI tests, real commands now serve as much better examples. - -commit feed82267663c6826da896309de180417bd0b39f -Author: Martin Mares -Date: Fri Dec 3 11:41:23 1999 +0000 - - Implemented `show static'. It's a relatively good example of how to write - show commands for other protocols. - -commit 02c1fbddd462fecc6887a44ef67202870bcae7be -Author: Martin Mares -Date: Fri Dec 3 11:40:45 1999 +0000 - - Added proto_get_named() to be used in CLI commands to get protocol instance - of a given protocol with optionally given name. See `show static' for an - example. - -commit 28e01f85c65c536837227829f645818dfa6a2652 -Author: Martin Mares -Date: Fri Dec 3 11:10:50 1999 +0000 - - Renamed SHOW PROTOCOLS VERBOSE to SHOW PROTOCOLS ALL to be consistent - with the other commands. - -commit 430da60fa29196cf8715e09e1d81c7ea0b672f05 -Author: Martin Mares -Date: Thu Dec 2 14:04:44 1999 +0000 - - Implemented `show route where ' command. - - Pavel, please check my addition to filter/config.Y. - -commit f2c6c80a2422b87a2947b7324ad14309198d64a4 -Author: Martin Mares -Date: Thu Dec 2 14:03:25 1999 +0000 - - I tried to turn on the YYERROR_VERBOSE switch, but bison is buggy as hell, - so it doesn't even compile. Turned it again off and added a comment on it. - -commit efe51e38632dd7875af6789536be9ccfefd758c9 -Author: Martin Mares -Date: Thu Dec 2 12:04:39 1999 +0000 - - Avoid `default rule can be matched' warning in CLI state. - -commit 9c3726afd2edabf42f11f21cf787061db6c5a33a -Author: Martin Mares -Date: Wed Dec 1 15:17:24 1999 +0000 - - Updated TODO file. - -commit 730f2e2c8c29b3461caa096fa514cbf71f84e51b -Author: Martin Mares -Date: Wed Dec 1 15:10:21 1999 +0000 - - Added dumping of routing tables (`show route'). This includes filtering. - -commit 04a60c689aeb10fafa9919bcff5f8391e0f3a158 -Author: Martin Mares -Date: Wed Dec 1 15:08:32 1999 +0000 - - Added get_route_info and show_route_data hooks to struct protocol. - Please implement them. - -commit f611f0ee824a6b363dc675e8f6ac963f20e7d007 -Author: Martin Mares -Date: Wed Dec 1 15:07:56 1999 +0000 - - Reset temporary parser data before parsing, not afterwards. This enables - deferred CLI command handlers to store their temporary data in the CLI - parsing pool. - -commit 2ad6dcdb2c949904643eabbbf6d0029045e8ea45 -Author: Martin Mares -Date: Wed Dec 1 15:07:06 1999 +0000 - - Make ACCEPT/REJECT actually return the result... - -commit e7f76bae8ccfe405ce3032aaa3a5e9228e5feb98 -Author: Pavel Machek -Date: Wed Dec 1 13:44:42 1999 +0000 - - Stupid bug (essentially while(1) loop) occuring sometimes during start - of bird fixed. - -commit 7e1f99719e01af86006bc5c9b9a472516ec85a2c -Author: Pavel Machek -Date: Wed Dec 1 12:54:23 1999 +0000 - - accept should behave as return, not running any commands after it. - -commit 639e62855495fcf461c177373d8f5eb0d5d87332 -Author: Pavel Machek -Date: Wed Dec 1 12:52:57 1999 +0000 - - Actually check sequence numbers. - -commit 3daf783f95790682025ef03ac5b2f486943e6214 -Author: Martin Mares -Date: Wed Dec 1 12:01:41 1999 +0000 - - Implemented get_status for the pipe protocol (reports name of the other - side of the pipe). - - Please do so for your protocols as well. - -commit 9685deb910c9e7400915209c1924e100b1feb5d5 -Author: Martin Mares -Date: Wed Dec 1 12:00:15 1999 +0000 - - `show protocols' now shows time of last state change and protocol-dependent - status information (obtained via newly introduced hook protocol->get_status). - -commit 5954dcfab74c8d8a2774f259c9940c1d87e76518 -Author: Martin Mares -Date: Wed Dec 1 11:59:24 1999 +0000 - - Introduced new protocol-dependent integer field `aux' to struct neighbor. - -commit afa8937ac8433a7cb430a14f7613e8d0555f1149 -Author: Martin Mares -Date: Wed Dec 1 11:59:00 1999 +0000 - - Added tm_format_reltime() for formatting of relative time quantities. - -commit 6781e5213b3c910317a68aaee7ee53e81ee93948 -Author: Pavel Machek -Date: Wed Dec 1 11:39:58 1999 +0000 - - FIXME's cleaned up: I have actually fixed things without killing - comments. - - There are no urgent FIXME's in filters. Perhaps we should start with - documentation? - -commit f2ed663aea02ac38621ecfe91cd1f37f4a56dc4d -Author: Martin Mares -Date: Wed Dec 1 10:28:39 1999 +0000 - - Use linux-22 configuration with all 2.2.x and 2.3.x kernels. This means - you need to have your kernel compiled with netlink routing messages enabled. - If it doesn't work for you, use --with-sysconfig=linux-21 and let me know - what's going wrong. - -commit 1d2664a4d4455470e0b6c7fc50d232283e39e1e0 -Author: Martin Mares -Date: Tue Nov 30 14:04:09 1999 +0000 - - Remember protocol instance in proto_config and use that for - `show protocols '. - -commit c9aae7f47fd7ad71b80cbc86c01a26c504ba08d0 -Author: Martin Mares -Date: Tue Nov 30 14:03:36 1999 +0000 - - Lexer supports fallback symbol tables and uses them to recognize - symbols from global config when parsing CLI commands. - - cf_lex_init_tables() is now called automatically inside the lexer. - -commit f0474f207061151183bb85d59f09422e7bb7e2ee -Author: Martin Mares -Date: Tue Nov 30 14:02:27 1999 +0000 - - Use TIME_INFINITY for initialization of password entries instead - of 2000000000 (BTW who wrote that???) - -commit 487d1afa523706d8b0caec63492f4a2b6cef3bce -Author: Martin Mares -Date: Tue Nov 30 14:01:39 1999 +0000 - - Moved TIME_INFINITY to timer.h, so that it's publicly available. - -commit 0d3e6bceeeec4ebf007e02374f799cd1fb21f20c -Author: Martin Mares -Date: Tue Nov 30 12:57:14 1999 +0000 - - `show interfaces' and `show protocols' works. - -commit 10b5baaef32076369b06b4318cc61e6fa11e5493 -Author: Martin Mares -Date: Tue Nov 30 12:56:52 1999 +0000 - - Don't use continuation shortcuts until real client is written. - -commit 163b2073465b1d2f90d23832456e79463fdec308 -Author: Ondrej Filip -Date: Tue Nov 30 10:35:26 1999 +0000 - - Inicialisation of Topology Graph (TG). - -commit ae97b946e99bef043613d210489a926fe4807ec1 -Author: Martin Mares -Date: Thu Nov 25 15:35:30 1999 +0000 - - Added few basic commands: show status, show interfaces [summary], - show protocols (incomplete). - -commit 35793769273f7286aafa0455547d1d7cfeef3931 -Author: Martin Mares -Date: Thu Nov 25 15:34:51 1999 +0000 - - cli_msg() moved to cli.h, so that it can be used outside the parser. - -commit ea32afb765381e642a525409a8f6cdff99aa0225 -Author: Martin Mares -Date: Thu Nov 25 15:34:20 1999 +0000 - - Added ip_scope_text() for translating of scopes to strings. - -commit 1a509a6310cb2a5211bf3ac9fd963f06d9109cb1 -Author: Pavel Machek -Date: Thu Nov 25 15:03:12 1999 +0000 - - md5 authentication seems to work. - -commit d3702d57fd5357e9a11ada6c46769a79da8e547a -Author: Pavel Machek -Date: Thu Nov 25 14:54:08 1999 +0000 - - Bugfixes: select right password for password authentication, do not - try to process authentication blocks as datablocks, make it possible - to add data at end of packet. Password authentication should actually work. - -commit 4aa885a53c479c774aab5befe55a1714b89cdc9e -Author: Pavel Machek -Date: Thu Nov 25 13:42:49 1999 +0000 - - Filters: fix rta access to use ->aux field. - -commit 7e61cac325aae2628d668673f60853608e072e66 -Author: Pavel Machek -Date: Thu Nov 25 13:38:25 1999 +0000 - - Triggered updates should now actually work. Fixed metric=16 -> time it - out logic. - -commit 774f149959030b66faca7a97dfb4d1703a84e0d7 -Author: Pavel Machek -Date: Thu Nov 25 12:01:45 1999 +0000 - - Fix timeouts. Triggered updates are not done, yet. - -commit 455ca441d99184e1514415bd7acb25f82d01366e -Author: Pavel Machek -Date: Wed Nov 24 12:16:31 1999 +0000 - - Check that prefixes are really prefixes + fix config file to - comply. (:-( 1.2.3.4/8 looks nicer than 1.0.0.0/8). - -commit 8f013d9ca443d4ff39af7560039f108efa9ef474 -Author: Pavel Machek -Date: Wed Nov 24 12:09:58 1999 +0000 - - Sorry, previous commit did not even compile. - -commit 48f9e0195488db0a515e4e5140d402fe4fe7d927 -Author: Pavel Machek -Date: Wed Nov 24 12:04:32 1999 +0000 - - Filters: write access to dynamic attributes should actually work. It - would be nice to find method of testing such beasts. - -commit 99bbd23b229419403f673c626001eb0f35cc3a4e -Author: Martin Mares -Date: Thu Nov 18 14:41:43 1999 +0000 - - More CLI plans... - -commit 8d24b6899d0aba52fef8c48921ce4d1481ee212c -Author: Martin Mares -Date: Thu Nov 18 14:41:29 1999 +0000 - - Allow EA type to be set to 'undefined' which overrides all further definitons - of that EA in the same list and causes ea_find() to fail unless you add - EA_ALLOW_UNDEF to the second argument. - - ea_sort (resp. ea_do_prune()) removes all undef'd attributes from the list. - - I hope this works :) - -commit f31156ca217226ad110cc46e6365d70e64c527e0 -Author: Pavel Machek -Date: Thu Nov 18 14:29:10 1999 +0000 - - Filters: first parts of extended attributes being read-write. It can - not actually work since I do not do rta/rte cow, yet. - -commit c7b43f33ae8d583ead531d76ed81f1b5deb507f3 -Author: Pavel Machek -Date: Thu Nov 18 14:01:36 1999 +0000 - - Split inst->code into inst->code and inst->aux. Both are only 16 bit, - so aux is suitable for storing type but not much more. - -commit da40b6f753f4dd48dbcaebbe6174decb28705ab8 -Author: Martin Mares -Date: Thu Nov 18 13:42:51 1999 +0000 - - DEF_PREF_UKR and DEF_PREF_SINK removed. - -commit 346a12c2109b99d907e7ebeb3560992e92a6c26b -Author: Pavel Machek -Date: Thu Nov 18 13:21:52 1999 +0000 - - You can now print enum. - -commit 4364b47e48ddedb841e8ec8db25c8b4fa878a911 -Author: Ondrej Filip -Date: Wed Nov 17 15:50:41 1999 +0000 - - ospf.c and ospc.h splitted into various files. - -commit bff1db76292b194bbbf0c476d960f40aa0ea47ce -Author: Martin Mares -Date: Wed Nov 17 14:58:21 1999 +0000 - - Added skeleton of command tree. Please inspect. - -commit 2af2636a691da37c73ba032ece29dee1dd20fff7 -Author: Ondrej Filip -Date: Wed Nov 17 13:28:51 1999 +0000 - - Another bugfix. (In EXCHANGE state.) - -commit e17baa31088766f7f278be6754d0acc6e8380e4e -Author: Ondrej Filip -Date: Wed Nov 17 13:15:01 1999 +0000 - - Fixed bug receiving dbdes packets in EXSTART state. - -commit 62a463954815748d0d82da0e30651e6eea7bc9cf -Author: Martin Mares -Date: Wed Nov 17 12:14:44 1999 +0000 - - Added some temporary examples of how to define CLI commands (search for CF_CLI). - - To define a new command, just add a new rule to the gramar: - CF_CLI(COMMAND NAME, arguments, help-args, help-text) { - what-should-the-command-do - } ; - where are appended to the RHS of the rule, is the - argument list as shown in the help and is description of the - command for the help. - - is a C code snippet to be executed. It should - not take too much time to execute. If you want to print out a lot of - information, you can schedule a routine to be called after the current - buffer is flushed by making cli->cont point to the routine (see the - TEST LONG command definition for an example); if the connection is closed - in the meantime, cli->cleanup gets called. - - You can access `struct cli' belonging to the connection you're currently - servicing as this_cli, but only during parse time, not from routines scheduled - for deferred execution. - - Functions to call inside command handlers: - cli_printf(cli, code, printf-args) -- print text to CLI connection, - is message code as assigned in doc/reply_codes or a negative - one if it's a continuation line. - cli_msg(code, printf-args) -- the same for this_cli. - - Use 'sock -x bird.ctl' for connecting to the CLI until a client is written. - -commit 30770df2ab33ffbfd75a9478265ac5e1a1db98d9 -Author: Martin Mares -Date: Wed Nov 17 12:04:24 1999 +0000 - - If the main event queue is not empty, call select() with zero timeout, so - that the events are ran again after the FD's are checked. This allows us - to schedule I/O checks between processing of user commands. - -commit 84a7d7f77c05578d9ebfff90672e73f021999d25 -Author: Martin Mares -Date: Wed Nov 17 12:01:11 1999 +0000 - - ev_run() now returns whether the event has been requeued or not. - ev_run_list() now returns number of events which remain in the list. - -commit ffb59d243a350ed525850e864b38af0ecb0ffea5 -Author: Martin Mares -Date: Wed Nov 17 12:00:21 1999 +0000 - - Command line interface now works. - -commit ea9bb932a31e5df14e3a1a5f580e62b6aedc0247 -Author: Martin Mares -Date: Wed Nov 17 11:16:15 1999 +0000 - - Commented out nexthop selection, see the comment. - -commit 7d509304b58d7ebf1d53e36a8e656830b409e1e8 -Author: Martin Mares -Date: Mon Nov 15 11:36:22 1999 +0000 - - An example of how to define enums. - -commit fd54b602665f71879087faeb0b733fefa9c964bb -Author: Martin Mares -Date: Mon Nov 15 11:36:09 1999 +0000 - - ENUM's are now recognized as constants. - -commit 944f008af7a46144e38f963097e8e4cce493e2a7 -Author: Martin Mares -Date: Mon Nov 15 11:35:41 1999 +0000 - - Defined CF_ENUM. - -commit cbc31830079fb5e49c14c3de446b10ed8da99ce0 -Author: Martin Mares -Date: Mon Nov 15 11:34:51 1999 +0000 - - SYM_STAT is gone. - -commit 4515bdba4f56b298e62150ffe24608ba1a42e7da -Author: Pavel Machek -Date: Thu Nov 11 13:55:39 1999 +0000 - - Fixed order of arguments for function call. - - Enumeration types should work once CF_ENUM() is ready. - - Created test.conf for testing of filters. (I'm currently thinking - about ./tests in root directory which will just fire all available - tests...) - -commit 4ed8718a19747bba95ff86fb8d3c6ea357b50101 -Author: Pavel Machek -Date: Thu Nov 11 13:27:59 1999 +0000 - - Shift/reduce conflict goes away _and_ if/then/else works. - -commit 986e34131dbd2bca668c2b0a6ebb25de6848fc0a -Author: Ondrej Filip -Date: Wed Nov 10 16:06:12 1999 +0000 - - Sending DBDES packet in EXSTART done. - -commit 1183b6b2297f03113d31dc73ef0edc8fc7ef0b7e -Author: Pavel Machek -Date: Wed Nov 10 13:59:13 1999 +0000 - - Enums do not work, this is testcase. - -commit cb8034f42cfaa2753152fa1d776cc618d07fedda -Author: Pavel Machek -Date: Wed Nov 10 13:44:29 1999 +0000 - - First try on enumerational types. - - Mj's noassoc removed: this brings back shift/reduce conflict but - it makes parser actually work. Mj please check it. IF/THEN/ELSE still - will not work. - -commit 2f702671b46fa2ea01021170f685f554e4012782 -Author: Pavel Machek -Date: Wed Nov 10 13:07:18 1999 +0000 - - No more shift/reduce conflicts. - -commit 4995564570f9779686f767ec98034ce58d836203 -Author: Martin Mares -Date: Wed Nov 10 13:05:57 1999 +0000 - - Shift/reduce conflicts in IF/THEN/ELSE rules solved. - -commit f453665704cc8d946f86057e67151ef27419e280 -Author: Pavel Machek -Date: Wed Nov 10 12:44:07 1999 +0000 - - Enumerational types, defined keyword added. - -commit 6ba36f06ae10ea7efd60c30f8ef40d6143c69ef6 -Author: Martin Mares -Date: Wed Nov 10 12:27:01 1999 +0000 - - Added LSA hashing table (parts of code stolen from rt-fib.c, but - heavily simplified since we don't need asynchronous walking). - -commit 3918b1b050701dee217fa9bc8c4c44d47cb84124 -Author: Pavel Machek -Date: Wed Nov 10 11:52:36 1999 +0000 - - Added timeout for routes (which means proper expiring of routes) added - few fixmes. - -commit 024dcaaea253e1f69f4325edebec4a9b5618caea -Author: Martin Mares -Date: Wed Nov 10 10:48:19 1999 +0000 - - Added project status report for KSVI. - -commit a5b583f20abfbf8181b46c08947df7043c213113 -Author: Pavel Machek -Date: Thu Nov 4 14:39:51 1999 +0000 - - FIXME's updated. One fixme is remaining for correct RIPv4. Wow. - -commit 7bf19253d0c33e6accd5b36a5b221f6d1d9cadcc -Author: Pavel Machek -Date: Thu Nov 4 14:26:18 1999 +0000 - - Reject packets which are not authenticated. - - Set correct nexthop on outgoing packets. - -commit 3c989eb4a784c34870e9d66d5be3c976d8f03797 -Author: Pavel Machek -Date: Thu Nov 4 14:05:40 1999 +0000 - - Fixed comments about shift/reduce conflicts. - -commit ae3e1af2a86c428f473ef0270151cead16cc0e8e -Author: Pavel Machek -Date: Thu Nov 4 14:03:45 1999 +0000 - - Add possibility of local variables. - -commit f30b25f9625d5542ace217bb6b3610d0a09f228a -Author: Pavel Machek -Date: Thu Nov 4 14:03:36 1999 +0000 - - Use local variables to test that functionality. - -commit df8b85e33f6df0567127efdd80acf98ba6f3ffea -Author: Martin Mares -Date: Thu Nov 4 13:53:47 1999 +0000 - - Silly bug. - -commit c8f61a01ea1862d0c0a3ec4cc15c5d49e1366725 -Author: Martin Mares -Date: Thu Nov 4 13:51:52 1999 +0000 - - Symbols are not scoped. - -commit 91447965fed2728a1f877e21f7f58aab4c0022c7 -Author: Pavel Machek -Date: Thu Nov 4 13:33:30 1999 +0000 - - Possibility to access first extended attributes. - -commit 2727bb7c5bbdac54661a5097f86d979799095db8 -Author: Martin Mares -Date: Thu Nov 4 13:29:43 1999 +0000 - - Renamed attr->attrs to attr->eattrs. - -commit 6dc7a0cb39d712c7670a113d5a66e9e868eb9872 -Author: Pavel Machek -Date: Wed Nov 3 22:23:01 1999 +0000 - - Filters now do not allow function (int arg; int arg2; ). - -commit e5005be2b415ebd9bdea28a3515961f4eb904501 -Author: Pavel Machek -Date: Wed Nov 3 22:21:26 1999 +0000 - - You should not follow next two times. - -commit ecc3cf6f50768284b9660b5717190107e742404f -Author: Ondrej Filip -Date: Wed Nov 3 12:59:38 1999 +0000 - - Working on db des receiving. - Preparing for building LDA database. - -commit 03b7bd14de501891ea8ae1d914e1da0b1f4147d5 -Author: Martin Mares -Date: Sun Oct 31 17:48:21 1999 +0000 - - Started a list of CLI reply codes. - -commit bc2fb68098faaf09393437a7743285d2af71d102 -Author: Martin Mares -Date: Sun Oct 31 17:47:47 1999 +0000 - - Parse CLI commands. We use the same parser as for configuration files (because - we want to allow filter and similar complex constructs to be used in commands - and we should avoid code duplication), only with CLI_MARKER token prepended - before the whole input. - - Defined macro CF_CLI(cmd, args, help) for defining CLI commands in .Y files. - The first argument specifies the command itself, the remaining two arguments - are copied to the help file (er, will be copied after the help file starts - to exist). This macro automatically creates a skeleton rule for the command, - you only need to append arguments as in: - - CF_CLI(STEAL MONEY, <$>, [[Steal <$> US dollars or equivalent in any other currency]]): NUM { - cli_msg(0, "%d$ stolen", $3); - } ; - - Also don't forget to reset lexer state between inputs. - -commit b9672a845f7ff7d2441e21746566eacc51f274b7 -Author: Martin Mares -Date: Sun Oct 31 15:43:44 1999 +0000 - - The CLI I/O functions work as desired. - -commit 7d3aab1c1643e8b2bcff7f856e0d4455fa0ba4b4 -Author: Martin Mares -Date: Fri Oct 29 12:10:10 1999 +0000 - - First steps of the Command Line Interface: I/O routines. - -commit b93abffae4ad5767625b35c9a09513e9d27a5256 -Author: Martin Mares -Date: Fri Oct 29 12:09:29 1999 +0000 - - Implemented unix-domain sockets. - -commit 0d70292d88276a9883ab8bc15b00e6a2e2fe4487 -Author: Martin Mares -Date: Fri Oct 29 12:08:49 1999 +0000 - - Events now return a value. If it's non-zero, the event is re-queued - for processing in next event cycle. This can be used to prevent background - actions (hint: user commands) from hogging the CPU for too long time. - -commit 92af6f309b9283482384bd9bbd0351cd71e3cf1d -Author: Martin Mares -Date: Fri Oct 29 10:08:27 1999 +0000 - - Simplify handling of free chunks. - -commit 54165b1315dd09b0ea97705367b73086131c1ed8 -Author: Martin Mares -Date: Fri Oct 29 10:08:09 1999 +0000 - - Configure PATH_CONTROL_SOCKET. - autoconf.h is now written to obj/sysdep, the source tree is hopefully - completely read-only now. - -commit ed6081502ad814289b9b7b5537658c3b1ad435e5 -Author: Martin Mares -Date: Fri Oct 29 09:44:44 1999 +0000 - - Added skeleton of the client. Does nothing, but at least compiles. - -commit 41be4444f2f548c5cc135593b2c820180a22ff99 -Author: Pavel Machek -Date: Thu Oct 28 21:03:36 1999 +0000 - - switch() { } done right. - -commit c2250f91c749f563229ad624bbd03053c1d671d0 -Author: Ondrej Filip -Date: Tue Oct 19 16:13:06 1999 +0000 - - Minor changes and bug fixes. Preparing for Exchange and higher states. - -commit 96f1b8ba10f7787fc7cf0e0430a85766200707a5 -Author: Ondrej Filip -Date: Mon Oct 18 21:48:51 1999 +0000 - - Huge changes. Neighbor and interface state machines rewritten. - It should be cleaner now, I'm preparing for file splitting. - Maybe I added some minor bugs. :-( - -commit f942a589ef627f5b2604955cbfdbe91fa706f29d -Author: Pavel Machek -Date: Tue Oct 12 13:04:50 1999 +0000 - - FIXME's for rip added. - - Will we ever able to generate packets saying "route 1.2.3.4 using someone else"? - -commit 89dc383a8ce26bfe49250e5063bcadec22ff42c6 -Author: Martin Mares -Date: Tue Oct 12 07:46:08 1999 +0000 - - Changed syntax of ip_class_mask, the old one was stupid. - -commit d3dd620b96c5960207b9321b416423b8130a4df7 -Author: Pavel Machek -Date: Tue Oct 12 06:27:42 1999 +0000 - - Filters: permit variables of prefix types, cleanup around - variables. TODO list added, hopefully complete. Use new features of - filters in bird.conf - -commit c79ec2ec1962394f1550afa10a8b396f0e4dfc52 -Author: Pavel Machek -Date: Mon Oct 11 14:19:29 1999 +0000 - - Untested IPv6 support added. I do not know if it compiles in IPV6 mode. - -commit 720d911d777f64872df923e102ebc509113885f0 -Author: Pavel Machek -Date: Thu Oct 7 14:10:08 1999 +0000 - - Added constants of type prefix and pair, added their printing - -commit 4872cef4dfcadab405d0393a21f9136852d7b9c4 -Author: Pavel Machek -Date: Thu Oct 7 14:09:50 1999 +0000 - - Added examples of pairs and prefixes - -commit c9f8c1a855cfdde2095cd792289dbce2b7a06371 -Author: Pavel Machek -Date: Thu Oct 7 13:38:26 1999 +0000 - - FIXME's added. Hopefully fixme list is now complete for filters. - -commit f782b72c538b5728f6c3f531a25f669f0bf99b2c -Author: Martin Mares -Date: Sat Oct 2 11:06:44 1999 +0000 - - Failure to set socket TOS is not a fatal error. - -commit 507cb9e58b947ad8c6ad1c73706a08010d90f4cc -Author: Martin Mares -Date: Sat Oct 2 10:55:19 1999 +0000 - - Don't forget to free large blocks. - -commit ac40c888c21c72ae7f6c3d329dd2ba5417eec009 -Author: Pavel Machek -Date: Sat Oct 2 10:44:48 1999 +0000 - - Obvious bugs in authentication fixed. - -commit 7db7b7db603a2d852066c313da76c72673a204fa -Author: Pavel Machek -Date: Wed Sep 29 14:24:58 1999 +0000 - - Case arg { 1: printf "one"; } works. You can not use two commands - after one label, yet. - -commit 4caa2231fc75ed351b9a9f20a97a81ce5d4421d0 -Author: Pavel Machek -Date: Wed Sep 29 14:23:11 1999 +0000 - - Make configuration use new case statement. - -commit 2c1d1cc765238aef0e8bfdbc1d8bc954fa0fc222 -Author: Ondrej Filip -Date: Wed Aug 25 18:44:50 1999 +0000 - - DD packet receiving in ExStart. - -commit 1af664158d20e9887ca11b63fc062a63f333297a -Author: Ondrej Filip -Date: Tue Aug 24 18:32:26 1999 +0000 - - A structure for receiving DD seq packets added. - -commit e3121112ab8cda4b4e413a801e5626f9ffb02ca8 -Author: Ondrej Filip -Date: Tue Aug 24 14:42:51 1999 +0000 - - Preparing to send DD packets. - -commit 2981814066543b72e292b7b36ca41bfa1cc2554c -Author: Pavel Machek -Date: Fri Aug 20 09:59:39 1999 +0000 - - Few FIXME's removed from auth, few FIXME's added to filter. - -commit bce8a34b128f1c0495f3f7a28d832d9c2b4a9543 -Author: Pavel Machek -Date: Wed Aug 18 13:19:33 1999 +0000 - - Few fixme's fixed in rip (will not crash any more on request for - sending routing table - hopefully). - - Next few steps in md5 authentication (not yet complete). - -commit f651941402079052fbdabf64092e7dd4a6a8cafe -Author: Martin Mares -Date: Tue Aug 17 20:47:40 1999 +0000 - - Added a function for generating 32-bit random numbers. - -commit b332fcdfc8f0b1ac7111a63c55f72ba4b00b8035 -Author: Ondrej Filip -Date: Mon Aug 16 10:32:05 1999 +0000 - - Better dumping. - -commit 032df28048c1c3d64716d3876ea759660d9d3cf0 -Author: Ondrej Filip -Date: Tue Aug 10 12:06:45 1999 +0000 - - Small bux fixes. A neigh_chstate added. - -commit a7d388d23e26bdc94aefc3788b6be6c278f6dc5b -Author: Ondrej Filip -Date: Mon Aug 9 18:59:37 1999 +0000 - - Multiple "hton problems" fixed. Now we're in EXSTART state. - -commit 2be22ddb4cf4c7a88a0c424f0de7c968e5c326a1 -Author: Ondrej Filip -Date: Mon Aug 9 18:49:50 1999 +0000 - - "My own IP problem" fixed. - -commit a4c2ee717cf42bb53688c18840bd7294b6bf61dd -Author: Ondrej Filip -Date: Mon Aug 9 18:34:08 1999 +0000 - - Bug fix in checksum calculation. - -commit b1693b8f749ccc683a2a78dc3129e56e500bc73f -Author: Ondrej Filip -Date: Mon Aug 9 18:11:51 1999 +0000 - - Bug in election fixed. - -commit e83dc0d7e78fd31b435b36424beb790bf55881a8 -Author: Ondrej Filip -Date: Mon Aug 9 17:58:01 1999 +0000 - - (Backup) Designated Router election added. - -commit 8c51f96acff1cfb05d1cf05f4355fce655c32599 -Author: Ondrej Filip -Date: Mon Aug 9 13:03:28 1999 +0000 - - Some interface state machine changes. I found some problem in RFC, - trying to conntact authors. - -commit 55e06729b173b24ce0c243db7e96094f10071eaf -Author: Martin Mares -Date: Tue Aug 3 19:57:43 1999 +0000 - - Forgot to do a `cvs add', grr. - -commit d7975d261f8a30efcdbd9fad6ba47419a6ac6c39 -Author: Martin Mares -Date: Tue Aug 3 19:38:48 1999 +0000 - - Ouch, how could I write this? - -commit 4532a89e31734a457d4debe56df713d66e31cdd6 -Author: Martin Mares -Date: Tue Aug 3 19:37:37 1999 +0000 - - Taught Netlink how to behave in IPv6 world. - -commit 4f22c9818554087d8f5ab51b8666a7a48d1f4329 -Author: Martin Mares -Date: Tue Aug 3 19:36:51 1999 +0000 - - Support for IPv6 sockets. How nice one doesn't have to ifdef around - ten years of API evolution :-) - -commit dce267832a0468ed5e596f0b0733b926af7ead3a -Author: Martin Mares -Date: Tue Aug 3 19:36:06 1999 +0000 - - Basic support for IPv6. The system-dependent part doesn't work yet, - but the core routines are there and seem to be working. - - o lib/ipv6.[ch] written - o Lexical analyser recognizes IPv6 addresses and when in IPv6 - mode, treats pure IPv4 addresses as router IDs. - o Router ID must be configured manually on IPv6 systems. - o Added SCOPE_ORGANIZATION for org-scoped IPv6 multicasts. - o Fixed few places where ipa_(hton|ntoh) was called as a function - returning converted address. - -commit 707ef833783ef731c56baae1c0dc7b7a9e7321ff -Author: Martin Mares -Date: Tue Aug 3 19:35:01 1999 +0000 - - Pruned the TODO list. - -commit 9c11ec9efca2fc75495cf8dcb28a959ba22b01fa -Author: Martin Mares -Date: Tue Aug 3 19:34:26 1999 +0000 - - Implemented a Table-to-Table protocol a.k.a The Pipe. - -commit 8c943173ced1fb85c627a8ba1c3d7360eab7d22b -Author: Martin Mares -Date: Tue Aug 3 19:33:45 1999 +0000 - - Allow announces of rte's to protocols in FS_FEEDING state. - Else, we would get chicken-egg problems in the table-to-table protocol. - -commit 7de45ba4a01bfdc986a4b597c04ad39d9b97a58a -Author: Martin Mares -Date: Tue Aug 3 19:33:22 1999 +0000 - - Kernel route syncer supports multiple tables. - - The changes are just too extensive for lazy me to list them - there, but see the comment at the top of sysdep/unix/krt.c. - The code got a bit more ifdeffy than I'd like, though. - - Also fixed a bunch of FIXME's and added a couple of others. :) - -commit 9d8856897f92ad74be140adafaac41f9df6edf31 -Author: Martin Mares -Date: Tue Aug 3 19:31:54 1999 +0000 - - Protocol engine bug fixes: - - o Make proto_config->table always point to the right - table even if it should be the default one. - o When shutting down, kill protocol in reverse order - of their priority. - o When stopping a protocol down, disconnect it from - routing tables immediately instead of waiting - for the delayed protocol flush event. - - Also added a protocol instance counter (used by KRT code - in very magic ways). - -commit b6628a8c98fa53c1b293221ad0f7e0611cb0b76d -Author: Martin Mares -Date: Tue Aug 3 19:31:30 1999 +0000 - - Added macros for walking lists backwards. - -commit 9a706f32afe703a44e605e92cc50cc77d4e91088 -Author: Martin Mares -Date: Tue Aug 3 19:31:11 1999 +0000 - - Added missing structure declarations. - -commit 8edf2361f9c4bd745a1249db3f66dfc079dd2ca1 -Author: Martin Mares -Date: Tue Aug 3 19:30:49 1999 +0000 - - Cleaned up handling of interface patterns: - - o Parsing of interface patterns moved to generic code, - introduced this_ipatt which works similarly to this_iface. - o Interface patterns now support selection by both interface - names and primary IP addresses. - o Proto `direct' updated. - o RIP updated as well, it also seems the memory corruption - bug there is gone. - -commit 9273035403ace754e5b405b2c5efba7d55c28e78 -Author: Martin Mares -Date: Tue Aug 3 19:30:20 1999 +0000 - - Changes to interface handling on traditional Unices: - - o Aliases are interpreted as secondary addresses. - o When the system doesn't supply interface indices, generate - our ones. - -commit 5e13ffe6f4e229974238bb2ea96ea2ce8282b7ed -Author: Martin Mares -Date: Tue Aug 3 19:29:57 1999 +0000 - - Faster checksum function. - -commit 913f7dc9f2dca8bebf8daebcce006b96f55ae6db -Author: Martin Mares -Date: Tue Aug 3 19:29:27 1999 +0000 - - Added functions for parsing and formatting of dates. - -commit 6542ece91a783e999f61cc51cbe18c8b4c96a36c -Author: Pavel Machek -Date: Thu Jul 1 09:11:21 1999 +0000 - - Function calling in filters works - somehow. Calling syntax is - currently very ugly, beware. Variables are not really local - that - needs to be fixed. - -commit 39369d6fbe4b3f73c8110b14623f367c8ffded50 -Author: Ondrej Filip -Date: Wed Jun 2 16:31:13 1999 +0000 - - Fixed stupid bug with hello vs inactim timers. - -commit bae0f7dbb111e2c8fbb8a94b59de6e241020ad66 -Author: Ondrej Filip -Date: Tue Jun 1 17:29:56 1999 +0000 - - Neigbor deleting done. (I have some problems with timers, so it does not - send hello.) - -commit cd70d93470498c0b68a084be5aeab5dd45a0df60 -Author: Ondrej Filip -Date: Tue Jun 1 16:35:18 1999 +0000 - - Detecting of new neighbor added. It starts inactivity timer. - -commit bd7f1081f24aa6ca4cdba004478742b730644a91 -Author: Martin Mares -Date: Tue Jun 1 15:31:43 1999 +0000 - - Grrr, the "obvious fix" to multicasting code from yesterday was - fundamentally wrong. Reversed. - -commit 3e1f30610e109b3eff7e3d8b420c4b7988bd3152 -Author: Martin Mares -Date: Tue Jun 1 13:57:24 1999 +0000 - - Defined IP_PREC_INTERNET_CONTROL and made all (well, both :)) protocols - use it when creating sockets. - -commit 9de840bdbd59669a129f68f1ff3595b34439ec09 -Author: Pavel Machek -Date: Mon May 31 20:34:48 1999 +0000 - - Set corectly destination address for RIP multicast. Broadcasting & - multicasting rip actually works [broadcasting is kind of hard to turn - it on, through]. - -commit b94bbe00278b0c6e84f34875367d85d34d08621b -Author: Pavel Machek -Date: Mon May 31 20:30:16 1999 +0000 - - Added FIXME: mode broadcast randombly corrupts memory. - - Small cleaning and bugfixes. - -commit c7208da0b72dc7e4ff512edbecc62a99b0392c5a -Author: Martin Mares -Date: Mon May 31 20:28:46 1999 +0000 - - Fix potential multicasting bug. - -commit 9607536dbf7c50f9c2fc7a670eab51e5c313d10f -Author: Pavel Machek -Date: Mon May 31 19:43:08 1999 +0000 - - Kill duplicity between rif and rif_patt. - -commit 72efa4b6f82222f91b63b9f61bbc88e458096ea7 -Author: Pavel Machek -Date: Mon May 31 19:37:16 1999 +0000 - - Small fixes to rip. - -commit bf97bd28276af42aa59ea29b926b4848ae14e149 -Author: Pavel Machek -Date: Mon May 31 19:22:40 1999 +0000 - - Cleanup of warnings - -commit 91c7c7416b4a18ac2b9e872c2a1a6391cf8b3dc8 -Author: Pavel Machek -Date: Mon May 31 19:16:22 1999 +0000 - - Incoming side of authentication done but untested. Right handling of - filters in rip. - -commit 2e6197d634a14533899915477032f082e675e35f -Author: Pavel Machek -Date: Mon May 31 19:15:52 1999 +0000 - - Added password_strncpy() which pads destination with zeros. - -commit 9c9e49ac392dfdbff97be579842028a4eb1d0dec -Author: Pavel Machek -Date: Mon May 31 19:15:32 1999 +0000 - - Added extended attributes for rip. - -commit c72b09c8508d71b9a0a998c2dabe475d54b4d014 -Author: Ondrej Filip -Date: Mon May 31 19:07:31 1999 +0000 - - IP socket priority (sock->tos) added. Constant taken from tcpdump of CISCO - and gated. - -commit 35ff423d54ebabffc5ab9dd757dfa2a1a70e9676 -Author: Ondrej Filip -Date: Mon May 31 18:56:20 1999 +0000 - - Some RX_Hello checks added. - -commit bb027be1e232ca2207a03a8e001441965cc07801 -Author: Martin Mares -Date: Mon May 31 18:55:35 1999 +0000 - - Added extra argument to rt_update hook which contains a pointer to the - temporary attribute list. - -commit 75b84c34e3434209517f2ebc8160f39d33e3735e -Author: Ondrej Filip -Date: Mon May 31 18:24:54 1999 +0000 - - Sending and receving of hello pkts works. No I will start building neighbor - database. - -commit 4a4911a36a865525f5de86ea8b575164ea9a855a -Author: Martin Mares -Date: Mon May 31 17:39:44 1999 +0000 - - Added missing quotes. - -commit 10915c9650d4b63b12140effc68718e2aecd01d3 -Author: Pavel Machek -Date: Mon May 31 17:12:38 1999 +0000 - - Modified rip to new password handling in nest. Now it at least compiles. - -commit 900d5470ae2cada4d37ed62f8bf2ce64c84349cd -Author: Pavel Machek -Date: Mon May 31 17:12:00 1999 +0000 - - Added PASSIVE option to paswwords. - -commit 139ca21d05df71b59a72af126d063170421cf9f7 -Author: Martin Mares -Date: Mon May 31 13:21:07 1999 +0000 - - Added sk_send_buffer_empty(). - -commit fd5f8704bb7c2e9845a7c4785ace83a2b77d2c57 -Author: Pavel Machek -Date: Wed May 26 14:37:47 1999 +0000 - - Make rip use newly defined password lists. - -commit 858a717796d7aa48fe9b22a6b035fec9edbb5a2a -Author: Pavel Machek -Date: Wed May 26 14:37:07 1999 +0000 - - Change format of passwords (less ;'s) and fix password.h to allow - multiple inclusions. - -commit 7eb01479c92cd2f615993f2112aa5986f3e2b0ad -Author: Pavel Machek -Date: Wed May 26 14:36:34 1999 +0000 - - Example of password list usage. - -commit 1a2ded450ecfbb8ccb7f459d7265fc5333d13420 -Author: Pavel Machek -Date: Wed May 26 14:24:57 1999 +0000 - - Skeleton for password handling, currently I only build structures and - do nothing more advanced for them - -commit 9d79fec8dc7c5a3b7e590c00df7eadcef9e80144 -Author: Pavel Machek -Date: Wed May 26 14:24:32 1999 +0000 - - Added notion of datetime - -commit 6bd08d017b5cb2608a81c0c7c9fe8fb5da73ba60 -Author: Pavel Machek -Date: Wed May 26 14:22:41 1999 +0000 - - Better date/time input methods need to be done - -commit 903a3f3928a5d7c223ff4c0087343cf214f8478d -Author: Ondrej Filip -Date: Mon May 24 21:49:22 1999 +0000 - - struct ospf_neigbor corrected. - -commit c76674f0e98d356ea235ea76fd55d71a3673b123 -Author: Ondrej Filip -Date: Mon May 24 21:17:16 1999 +0000 - - struct ospf_neigbor added. Neigbor state machine implementation can start. - -commit 65112dd270dbfa598c1f8a5074bf7224b9e1469c -Author: Ondrej Filip -Date: Mon May 24 18:22:00 1999 +0000 - - ifa->time split into wait_timer and hello_timer. I will send hello in WAITING state. - -commit daeb60393d011f8ee1326e212b310983276b6ba1 -Author: Ondrej Filip -Date: Mon May 24 17:37:45 1999 +0000 - - Small bug in ipv4_skip_header. - -commit b9f8590025fd5d6dd360f759c5a219d69b975123 -Author: Ondrej Filip -Date: Mon May 24 17:29:05 1999 +0000 - - IP header test added. - -commit 4b0d57e53120e404e00f7d252119e45288ceeb71 -Author: Martin Mares -Date: Fri May 21 14:29:44 1999 +0000 - - Added CONFIG_MULTIPLE_TABLES whereever appropriate. - -commit 1c3c9dceb385198199c6c0190f3011d106142b67 -Author: Martin Mares -Date: Fri May 21 14:29:23 1999 +0000 - - Removed one unused structure field. - -commit a70693ca9bc935513d1bfa9b3a49459d27927657 -Author: Martin Mares -Date: Fri May 21 14:28:44 1999 +0000 - - Don't forget to export CPPFLAGS to GCC. :) - -commit a07e9d82352d0060ff4f00aa8d0a2575cafc781a -Author: Martin Mares -Date: Fri May 21 14:09:06 1999 +0000 - - Added --with-sysinclude to allow explicitly setting where kernel includes - reside, so that you can easily switch between 2.0 and 2.2 ones. - - Check existence of for linux-22 configs to make sure - we're using the correct set of includes. - -commit 4f1a6d27b9a44f61329bc7b6779a0c645362e181 -Author: Martin Mares -Date: Mon May 17 20:16:53 1999 +0000 - - Kill remaining master_table relics in KRT code. - - Make all protocols pass routing table to rte_update and rte_discard. - -commit 0e02abfd5770062768eeb4c75061b7d2f656489d -Author: Martin Mares -Date: Mon May 17 20:14:52 1999 +0000 - - From now we support multiple tables. The master_table variable is - definitely gone. Both rte_update() and rte_discard() have an additional - argument telling which table should they modify. - - Also, rte_update() no longer walks the whole protocol list -- each table - has a list of all protocols connected to this table and having the - rt_notify hook set. Each protocol can also freely decide (by calling - proto_add_announce_hook) to connect to any other table, but it will - be probably used only by the table-to-table protocol. - - The default debugging dumps now include all routing tables and also - all their connections. - -commit 4107df1d1b7454a16e6f45ea55aae13b01c9f566 -Author: Martin Mares -Date: Mon May 17 20:06:19 1999 +0000 - - Implemented two new symbol handling functions: - - o cf_define_symbol() -- it assigns a meaning to a symbol, bailing - out if it already has one. - o cf_find_symbol() -- finds symbol by name and creates it if not found. - - Also modified filter/config.Y to make use of the first function. - -commit b23c5e0ff4e9071b2568bf2f7d437bc13273d17d -Author: Martin Mares -Date: Fri May 14 18:03:09 1999 +0000 - - Added ip_skip_header() and modified OSPF to use it. - -commit 11ce4490fac7d0446802738f5fb8fd68c36bd30b -Author: Ondrej Filip -Date: Fri May 14 08:50:25 1999 +0000 - - *** empty log message *** - -commit 67ff91302f21f6a40201bcc8a01c9c76eaaf1ed1 -Author: Ondrej Filip -Date: Fri May 14 08:46:06 1999 +0000 - - Netmask checking for hello packets added. - -commit 7426ee3d49fab13428f198c78c8b7f3da131382e -Author: Ondrej Filip -Date: Thu May 13 09:18:36 1999 +0000 - - Checksum control added. - -commit 296ecb56eb4d1951d23d74d502d2c48a42eb6eee -Author: Ondrej Filip -Date: Tue May 11 15:34:33 1999 +0000 - - OSPF RX implementation starts.... - -commit 1b16029c12a501752388523ebfe2981e7d7d7ed3 -Author: Pavel Machek -Date: Tue May 11 09:53:45 1999 +0000 - - Mensi updaty do ripu. Pridana passwd autentikace (netestovano). - -commit f7103dfcfe174d39c8aa10eb100550e3ec213981 -Author: Ondrej Filip -Date: Tue May 11 09:50:02 1999 +0000 - - Better logging output. Added 'struct proto *' info 'struct ospf iface'. - -commit 1a54d44a23de7b0bf0dfe62dd3d09d8167e5a597 -Author: Martin Mares -Date: Mon May 10 21:37:39 1999 +0000 - - Added packet checksumming code. Watch the comments for an explanation. - -commit a2697f02ac5109e749bff4d07bee6cedd0ab650b -Author: Martin Mares -Date: Fri May 7 13:46:16 1999 +0000 - - Netlink support for secondary interface addresses. - -commit 9a158361da249e0eab1e0f7bd2c7dbe9f32eddfa -Author: Martin Mares -Date: Thu May 6 21:38:11 1999 +0000 - - I rewrote the interface handling code, so that it supports multiple - addresses per interface (needed for example for IPv6 support). - - Visible changes: - - o struct iface now contains a list of all interface addresses (represented - by struct ifa), iface->addr points to the primary address (if any). - o Interface has IF_UP set iff it's up and it has a primary address. - o IF_UP is now independent on IF_IGNORED (i.e., you need to test IF_IGNORED - in the protocols; I've added this, but please check). - o The if_notify_change hook has been simplified (only one interface pointer - etc.). - o Introduced a ifa_notify_change hook. (For now, only the Direct protocol - does use it -- it's wise to just listen to device routes in all other - protocols.) - o Removed IF_CHANGE_FLAGS notifier flag (it was meaningless anyway). - o Updated all the code except netlink (I'll look at it tomorrow) to match - the new semantics (please look at your code to ensure I did it right). - - Things to fix: - - o Netlink. - o Make krt-iface interpret "eth0:1"-type aliases as secondary addresses. - -commit ec8b579e9c9703601bf745745b620103fe2e2477 -Author: Martin Mares -Date: Tue Apr 27 16:03:17 1999 +0000 - - Recognize site scope for IPv4 addresses (prefixes reserved for private - networks). - - Removed old #ifndef logic which was used to avoid IPv4/IPv6 clashes - before conditionals in Modules lists were introduced. - -commit 59e2188cb7020e43e25c9d5bdcd011f341ddfc1d -Author: Ondrej Filip -Date: Tue Apr 27 13:04:33 1999 +0000 - - Just changes of comments. - -commit 6376a961332552e2bc178d647f1e5cfa01a1ac32 -Author: Ondrej Filip -Date: Tue Apr 27 12:56:52 1999 +0000 - - Hello timer implemented. - -commit 93bde8dce23ae10476263a84cc40bbe186263fdc -Author: Ondrej Filip -Date: Thu Apr 22 13:12:28 1999 +0000 - - Work on hello continues. - -commit 36bbfc704c7d2153537751e24413db9b9c97bc58 -Author: Pavel Machek -Date: Mon Apr 19 18:41:56 1999 +0000 - - Updated filters: they now actually see IP/pxlen of net being filtered, - gateway, and who told us, so they can do usefull jobs from now on. - -commit afbc41ab3d4f07f7dc4dbc6c769fe7fa1567f357 -Author: Pavel Machek -Date: Wed Apr 14 21:11:24 1999 +0000 - - SImplify code a tiny bit. - -commit b11d8a4f59b3559779938b0a37914a7bc8c07a6b -Author: Ondrej Filip -Date: Wed Apr 14 15:13:44 1999 +0000 - - Redesigned struct ospf_iface & new struct ospf_sock. - -commit b31568a516142e905712bad498914fb6a82dc25b -Author: Ondrej Filip -Date: Wed Apr 14 12:47:18 1999 +0000 - - Small bug fix in memcpy. - -commit 4c5e5e3a1c438cb2e92535e3fabc458aa0d6deb3 -Author: Martin Mares -Date: Wed Apr 14 12:29:47 1999 +0000 - - Multicasts once again: When using SO_BINDTODEVICE, don't specify IP address - of the interface. - -commit 1b50a1e4be2b54bd4ccadfaeaf558aea15255de4 -Author: Martin Mares -Date: Wed Apr 14 11:39:07 1999 +0000 - - Next attempt to get SO_BINDTODEVICE work :) - -commit 36154beb705cdaf03f9ee050798d9e653ded6ca5 -Author: Martin Mares -Date: Wed Apr 14 11:21:02 1999 +0000 - - Use SO_BINDTODEVICE if we're using old multicast API (i.e., struct ip_mreq - and not ip_mreqn). This should get multicasts on unnumbered PtP links work. - -commit 9da4d143402efd16bec286e3723b42386b20968b -Author: Martin Mares -Date: Wed Apr 14 11:09:55 1999 +0000 - - A couple of OSPF fixes: - - o ((flags & IF_CHANGE_UP) == IF_CHANGE_UP) -> (flags & IF_CHANGE_UP) - o bcopy -> memcpy (bcopy is unportable) - o Ifdeffed out add_tail(&(ifa->sk_list),NODE mcsk) -- the node in socket - structure is for internal use by the resource manager only. (Now, the - debugging dump of open sockets looks sane :-)). - -commit 1ab4dee0288e4ad6c8fbefae3aa64ca873cf4500 -Author: Martin Mares -Date: Wed Apr 14 10:49:31 1999 +0000 - - Removed redeclaration of `idval', so that it compiles :) - -commit 4c630a6dd7e02cbbe1cca2c626feb86801ee4d03 -Author: Ondrej Filip -Date: Tue Apr 13 21:46:20 1999 +0000 - - Added wait timer for eligible BCAST & NBMA interface. - -commit 55e7732a5a5fe47752eafe6024ba473bd7959e45 -Author: Ondrej Filip -Date: Tue Apr 13 19:27:44 1999 +0000 - - Change in ospf_iface. (My bad understanding of lists manipulation.) - -commit aec76c6e8e5702144522f0061bc102d26e10b97c -Author: Ondrej Filip -Date: Tue Apr 13 18:21:53 1999 +0000 - - IPv6 changes. - -commit 43fc099b98594fb3ac6a56a90fd00f42fc98f742 -Author: Pavel Machek -Date: Tue Apr 13 11:40:04 1999 +0000 - - Sets of IP addresses should work, now. (From now on it is also - possible to write if 1.2.3.4 < 1.2.3.5, but I'm not sure if it is good - for anything.) - -commit 24eaae9e5d0b154ec47d9d4e13649fb066814ef1 -Author: Ondrej Filip -Date: Tue Apr 13 00:46:34 1999 +0000 - - Small change to stop using loopback. - -commit cb2e8c49706c14ea662df44cd3911c1f9db4b4a8 -Author: Ondrej Filip -Date: Tue Apr 13 00:24:05 1999 +0000 - - A small init change to avoid core dump. - -commit 5b1a92e6d4350bcecff4f78b9cfabfb98ca7ce2a -Author: Ondrej Filip -Date: Mon Apr 12 23:54:21 1999 +0000 - - Not all I mean serious. Almost everything will change. - Changes: struct ospf_iface draft, various constants added... - -commit 2f5d154466e8d76f4054561a361bb45f157c29a6 -Author: Martin Mares -Date: Mon Apr 12 20:26:06 1999 +0000 - - Added ipa_compare as requested. - -commit 38506f71b0bea5580987e999a7b1a69f58aec7ec -Author: Pavel Machek -Date: Mon Apr 12 19:58:18 1999 +0000 - - Sets of integers now actually work. Sets of IP will work as soon as - compare function is ready. - -commit 01bd7759b260b379089acf28cc47bd49572ebd22 -Author: Martin Mares -Date: Mon Apr 12 18:07:05 1999 +0000 - - Ignore alias interfaces (some day, we will treat them as pure secondary - interface addresses). - -commit 08e2d6259a71c5e43ac0083ea6d81357678f99eb -Author: Martin Mares -Date: Mon Apr 12 18:01:07 1999 +0000 - - Removed TOS support. This simplifies many things a lot. - -commit 170c984a9ef1bde00711f405b03d24a2e151501c -Author: Martin Mares -Date: Mon Apr 12 17:27:21 1999 +0000 - - Cosmetic message fix. - -commit 113694892e9669a1ae3dd44274f27c862c6c293a -Author: Martin Mares -Date: Mon Apr 12 17:21:11 1999 +0000 - - Use $(CC) instead of gcc even when generating dependencies. - -commit 620c4f90c9437362bf17180e6dbbf14c4e480e40 -Author: Martin Mares -Date: Mon Apr 12 17:20:50 1999 +0000 - - Oops, a typo in previous struct ip_mreqn changes... - -commit 61fb537c6273c50deb7d33f8af246993eab4bc4d -Author: Martin Mares -Date: Mon Apr 12 15:27:56 1999 +0000 - - Use `struct ip_mreqn' instead of `struct ip_mreq' for multicast - operations on 2.1/2.2 kernels. This allows passing of real interface - indexes instead of referencing interfaces by their IP addresses which - fails badly in presence of unnumbered interfaces. - - Unfortunately, this structure is not visible with glibc 2.0 as it provides - its own networking headers :-( Both libc5 and glibc 2.1 should be OK. - -commit 5a99ade413b97a780758f5c8f927604ad6c8e57b -Author: Martin Mares -Date: Mon Apr 12 14:57:46 1999 +0000 - - Fixed a couple of bugs in handling of multicast sockets. - - See comments in lib/socket.h for a detailed guide on how to use them. - -commit bad631e04806287e99e2464c0fdc884f9efa1e71 -Author: Pavel Machek -Date: Mon Apr 12 12:07:15 1999 +0000 - - Oops, typo. - -commit 8ba2cc064b823274e8af043bf0676bfc252e810a -Author: Pavel Machek -Date: Mon Apr 12 12:01:59 1999 +0000 - - In case no startup function is defined, don't try to launch it. - -commit ed9a82369ffc660ec20d9b7fa64188a450267672 -Author: Martin Mares -Date: Sun Apr 11 19:28:16 1999 +0000 - - Added new target "tags" to generate a tag table for Emacs. - - Also made "depend" work before the tree is compiled first time. - -commit 2db3b2887ea93c9946956a9a5ce5a06f0ef783c3 -Author: Pavel Machek -Date: Sat Apr 10 09:45:08 1999 +0000 - - Decrease number of warnings. - -commit 49ed70b48e3b66c4dd71315e842733d69204698e -Author: Martin Mares -Date: Wed Apr 7 14:25:56 1999 +0000 - - Portability fixes. - -commit 23b1539bf90bfb6b35d9a2be0a2b6b1e311c1460 -Author: Pavel Machek -Date: Wed Apr 7 12:11:08 1999 +0000 - - Filters upgraded - a bit. Moved code to filter.c because it is where - it belongs. (f-util.c stays there for auxiliary and non-important things.) - -commit 7976a574b692f747d833d899caf0fbbf702714c1 -Author: Martin Mares -Date: Tue Apr 6 21:31:03 1999 +0000 - - ip_pton: Avoid modification of the string we're converting. - -commit e2dc2f30efd65cf3da4db150fae695978388e247 -Author: Martin Mares -Date: Mon Apr 5 20:25:03 1999 +0000 - - Routing table core changes to support full route filtering: - - o Introduced rte_cow() which should be used for copying on write the - rte's in filters. Each rte now carries a flag saying whether it's - a real route (possessing table linkage and other insignia) or a local - copy. This function can be expected to be fast since its fast-path - is inlined. - o Introduced rte_update_pool which is a linear memory pool used for - all temporary data during rte_update. You should not reference it directly - -- instead use a pool pointer passed to all related functions. - o Split rte_update to three functions: - - rte_update The front end: handles all checking, inbound - filtering and calls rte_recalculate() for the - final version of the route. - rte_recalculate Update the table according to already filtered route. - rte_announce Announce routing table changes to all protocols, - passing them through export filters and so on. - - The interface has _not_ changed -- still call rte_update() and it will - do the rest for you automagically. - o Use new filtering semantics to be explained in a separate mail. - -commit 9e0e485e50ea74c4f1c5cb65bdfe6ce819c2cee2 -Author: Martin Mares -Date: Mon Apr 5 20:17:59 1999 +0000 - - Added some new protocol hooks (look at the comments for better explanation): - - make_tmp_attrs Convert inline attributes to ea_list - store_tmp_attrs Convert ea_list to inline attributes - import_control Pre-import decisions - -commit 5056c559c4eb253a4eee10cf35b694faec5265eb -Author: Martin Mares -Date: Mon Apr 5 20:15:31 1999 +0000 - - Changed syntax of attaching filters to protocols to hopefully the final - version: - - EXPORT for outbound routes (i.e., those announced - by BIRD to the rest of the world). - IMPORT for inbound routes (i.e., those imported - by BIRD from the rest of the world). - - where is one of: - - ALL pass all routes - NONE drop all routes - FILTER use named filter - FILTER { } use explicitly defined filter - - For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes - the kernel protocol, so that you need to add EXPORT ALL to get the previous - configuration of kernel syncer (as usually, see doc/bird.conf.example for - a bird.conf example :)). - -commit 63a381dbf5e37c2740982d07988cea983c699816 -Author: Martin Mares -Date: Mon Apr 5 20:10:31 1999 +0000 - - Several filter changes. (Pavel, please check if they are OK.) - - o Changed parameters of f_run. Changed rtein+rteout pair to rte pointer - passed by reference, added ea_list of temporary attrs again passed - by reference and finally added a pointer to memory pool for storing - temporary data (new ea_lists's, temporary rta's etc.). - o Re-ordered result codes, so that all accepts come before all rejects. - o Introduced FILTER_ACCEPT and FILTER_REJECT dummy values (will be - used in protocol configurations). - o Added filter_name() which returns name of a filter or ACCEPT/REJECT - for the dummies. - -commit d4ff748224fc18e460e74ab14d70d01fd50e4b92 -Author: Martin Mares -Date: Mon Apr 5 20:06:02 1999 +0000 - - Use a more reasonable pool chunk size: 4080 bytes seem to be a good - approximation of a integral fraction of page size even if both malloc - overhead and chunk header space is counted. - -commit c10421d3d4b5f23dc953c887332bdb6e80ae0540 -Author: Martin Mares -Date: Sat Apr 3 13:05:18 1999 +0000 - - More changes to the kernel syncer. - - o Now compatible with filtering. - o Learning of kernel routes supported only on CONFIG_SELF_CONSCIOUS - systems (on the others it's impossible to get it semantically correct). - o Learning now stores all of its routes in a separate fib and selects - the ones the kernel really uses for forwarding packets. - o Better treatment of CONFIG_AUTO_ROUTES ports. - o Lots of internal changes. - -commit 69ec9087ad3fb631f46275220909a876deadb6b5 -Author: Martin Mares -Date: Sat Apr 3 13:01:58 1999 +0000 - - Added new protocol hook for dumping of protocol-dependent route - attributes. - - Please implement in all protocols. - -commit 73c7bed168890399981f70e1d0be35d8cde01fed -Author: Martin Mares -Date: Sat Apr 3 13:00:52 1999 +0000 - - Defined CONFIG_SELF_CONSCIOUS whenever the kernel scanner is able - to distinguish between our own routes and alien ones. - -commit fe662dfd782619fd6505a1456b973b2525ab6ebf -Author: Martin Mares -Date: Fri Apr 2 13:38:54 1999 +0000 - - Fixed `too many interfaces' cases. - -commit 0498d92f955f011ceb70e1124f25ac567c359005 -Author: Pavel Machek -Date: Fri Apr 2 11:45:55 1999 +0000 - - Believe it or not, printf()'s does not work too much without this one. - -commit 8cda9cdbcf445ebe828b7bf89dcb4c7f83937756 -Author: Martin Mares -Date: Thu Apr 1 19:23:59 1999 +0000 - - Argh, the fix was wrong. - -commit e4241f24f2ebc796a9cfb03db2a9502f5ebd9c0c -Author: Martin Mares -Date: Thu Apr 1 15:35:15 1999 +0000 - - Portability fixes. - -commit abae6e9cd3f041648eaa85fad2f861515b67c1ce -Author: Martin Mares -Date: Thu Apr 1 15:33:52 1999 +0000 - - First few FreeBSD portability fixes. - -commit 6accdf4f437ef2a3251df917f2b83fe985e64961 -Author: Martin Mares -Date: Mon Mar 29 20:46:00 1999 +0000 - - Updated the TODO list. - -commit fb71b23e6004d18480dcfdfbc2e7da7bbc4eb400 -Author: Martin Mares -Date: Mon Mar 29 20:33:45 1999 +0000 - - Remember that we can run device syncer without kernel syncer - and vice versa now. - -commit 78d5ec15043ab67fdf31feabe4a83129488625fe -Author: Martin Mares -Date: Mon Mar 29 20:28:25 1999 +0000 - - Please don't commit debugging code which makes BIRD exit before anything - actually starts to happen. Grrr. - -commit e4912e3594c9211c8a147f1dcd4eeaf3b0095ed0 -Author: Martin Mares -Date: Mon Mar 29 20:26:32 1999 +0000 - - Prefer `gm4' over `m4' (due to BSD et al.). - -commit ba92164871f65bb9adcfa66b901d1a7b86697a86 -Author: Pavel Machek -Date: Mon Mar 29 20:21:28 1999 +0000 - - Update of filters towards new interface. - -commit 5bc512aa3a0d3e4ca378fff3316b75c131f17637 -Author: Martin Mares -Date: Mon Mar 29 20:14:33 1999 +0000 - - Clarify resource dumps and include them in the main debugging dump. - -commit 3f2a21fd348e49cf3ca98750b14e14dd04b3209b -Author: Martin Mares -Date: Mon Mar 29 20:14:00 1999 +0000 - - Don't try to delete interface routes on CONFIG_AUTO_ROUTES systems. - -commit 6c02d83f4d225abc03f99fb80299f1ba10ac174a -Author: Martin Mares -Date: Mon Mar 29 19:56:32 1999 +0000 - - Added FIXME: If a strange interface appears, ignore it instead of only - writing an error message... - -commit f5c687f7911501ac1efd8163fade4862dc65456c -Author: Martin Mares -Date: Mon Mar 29 19:35:47 1999 +0000 - - Added lp_flush() which flushes contents of a linear pool, leaving all the - memory available for subsequent allocations from the same pool. Both flushing - and re-using the memory costs just few instructions. - -commit f54801ffedf3d6342b37c1560502bfc24e7fe64a -Author: Martin Mares -Date: Mon Mar 29 19:14:43 1999 +0000 - - Moved all system-dependent #include's containing endianity conversion - functions to sysdep header endian.h. - -commit 6134024815adf2541293008f848dce4e8a21d061 -Author: Martin Mares -Date: Mon Mar 29 19:13:36 1999 +0000 - - #define NULL if not defined by system includes. - -commit 7f400d1c620e80461e61384c7d0b8893edb92695 -Author: Martin Mares -Date: Mon Mar 29 19:04:14 1999 +0000 - - After today's lengthy discussions about filter syntax, let's clean up - whitespace/semicolon rules for whole config file: - - o All non-zero amounts of whitespace are equivalent to single space - (aka `all the whitespace has been born equal' ;-)). - o Comments count as whitespace. - o Whitespace has no syntactic signifance (it can only separate lexical - elements). - o Consequence: line ends are no longer treated as `;'s. - o Every declaration must be terminated by an explicit `;' unless - or by a group enclosed in `{' and `}'. - -commit 1127ac6ec7eff52d4ccbc4d836a63fa6513f6d48 -Author: Martin Mares -Date: Sat Mar 27 22:51:05 1999 +0000 - - Cleaned up system configuration files -- removed few obsolete parameters, - documented the remaining ones (sysdep/cf/README). - - Available configurations: - - o linux-20: Old Linux interface via /proc/net/route (selected by default - on pre-2.1 kernels). - o linux-21: Old Linux interface, but device routes handled by the - kernel (selected by default for 2.1 and newer kernels). - o linux-22: Linux with Netlink (I play with it a lot yet, so it isn't - a default). - o linux-ipv6: Prototype config for IPv6 on Linux. Not functional yet. - -commit 7dc4827c968053e45bcb7f145e9986eeb20c993b -Author: Martin Mares -Date: Fri Mar 26 21:50:43 1999 +0000 - - Added everything protocols need to know about multiple routing tables, - i.e. struct proto now contains field 'table' pointing to routing table - the protocol is attached to. Use this instead of &master_table. - - Modified all protocols except the kernel syncer to use this field. - -commit 7e5f5ffdda7232048c4baf3fdec358afb494a29d -Author: Martin Mares -Date: Fri Mar 26 21:44:38 1999 +0000 - - Moved to a much more systematic way of configuring kernel protocols. - - o Nothing is configured automatically. You _need_ to specify - the kernel syncer in config file in order to get it started. - o Syncing has been split to route syncer (protocol "Kernel") and - interface syncer (protocol "Device"), device routes are generated - by protocol "Direct" (now can exist in multiple instances, so that - it will be possible to feed different device routes to different - routing tables once multiple tables get supported). - - See doc/bird.conf.example for a living example of these shiny features. - -commit 739ebd8e82b090ed91b3ebe77509ecd6784eca9a -Author: Martin Mares -Date: Fri Mar 26 21:38:02 1999 +0000 - - Allow different instances of the same protocol with identical preferences. - -commit 4ba84ebc8285c3a5c556fc769101cc29cb3d3708 -Author: Martin Mares -Date: Fri Mar 26 21:37:29 1999 +0000 - - Slightly better generator of default protocol instance names. - -commit 241b7311ec5a091b7f3e1a1f2a776f3ef403c500 -Author: Martin Mares -Date: Fri Mar 26 21:35:28 1999 +0000 - - Don't compile OSPF by default. - -commit b5239f223874b87dd7c9de4d624cdf1230022111 -Author: Martin Mares -Date: Fri Mar 26 21:33:36 1999 +0000 - - Don't try to manipulate neighbor lists for copied interface structures. - This avoids few nasty references to free memory. - -commit f79a749d0b9a5a7509db9ad6c547bbabc0457675 -Author: Martin Mares -Date: Wed Mar 24 09:23:34 1999 +0000 - - Removed our declaration of RTPROT_BIRD since Alexey has assigned - us a real protocol number in 2.2.4 kernel. - -commit 421838ffef49338218dd85ff5efd1d5396ab7ccf -Author: Martin Mares -Date: Wed Mar 17 15:01:07 1999 +0000 - - rte_update: Check sanity of incoming entries. Throw out (and log) all routes - to bogus prefixes and non-local routes to host scope addresses. - -commit 529c414953c24c326d9063a8f06fa652f0dfbc30 -Author: Martin Mares -Date: Wed Mar 17 14:31:26 1999 +0000 - - Allow input and output filters (only accept/reject style as we didn't define - modifying filters yet) to be attached to protocol instances. - -commit e0f2e42f4f420f7bbdda3d4656c9dda585f1297a -Author: Martin Mares -Date: Wed Mar 17 14:29:39 1999 +0000 - - A couple of filter tweaks: - - o Introduced struct filter which serves as an external reference - to filter. Using struct symbol for this is unwise since it doesn't - allow extra information attached to the filter and it also forces - all filters to be named. - o Implemented config rule 'filter' which matches either named filter - or an embedded unnamed filter (`{ }'). - o Fixed totally bogus comment at the top of filter.h. - o Added a missing prototype for f_run() to filter.h. - -commit c612a3be310069b9fbbcfef931bb546d536a716f -Author: Martin Mares -Date: Wed Mar 17 13:13:18 1999 +0000 - - Removed the `rta_same' hook since it's no longer needed (all protocols - needing some local information should use extended attrs and cached - rta's). - -commit b77ae37d11aa6e16dce31f50ca42ea30714a793e -Author: Martin Mares -Date: Wed Mar 17 13:09:09 1999 +0000 - - Implemented extended route attributes and all related functions. - -commit 9a38757c6ab87bf64ebc22b25b1410a3a09e6b10 -Author: Pavel Machek -Date: Wed Mar 17 13:05:25 1999 +0000 - - Initialize pointers to functions so that code is actually alive. - -commit 3c7ad64c57de77763357684fab919b2fc082a759 -Author: Pavel Machek -Date: Wed Mar 17 13:04:33 1999 +0000 - - Compilation fix for mj. - -commit 29df5739c455a954598c809c2e930abc41c8488e -Author: Pavel Machek -Date: Wed Mar 17 10:20:23 1999 +0000 - - Don't segfault on unknown interface. - -commit d36d838df5f726e1f6845fe0e6e5c188426ac00d -Author: Pavel Machek -Date: Wed Mar 17 10:19:07 1999 +0000 - - accept & reject should now work - -commit c1f8dc9149d3868e5a0f4e4ad97759fb3b177bec -Author: Ondrej Filip -Date: Tue Mar 9 22:27:43 1999 +0000 - - Yes, joining the crew. Sorry for being late. Added dummy functions for OSPF. - -commit 2575593e0fa9fb84a4cc481928c32519b3fea2cd -Author: Pavel Machek -Date: Tue Mar 9 14:45:27 1999 +0000 - - Resolved conflicts, you no longer need to wrap constants in const() - -commit 1aa5cf1c6171393d4be4447eada173d4e1eb983a -Author: Pavel Machek -Date: Tue Mar 9 14:44:43 1999 +0000 - - Added '=' to operator list - -commit b7005824453583d1459b49c5a424b50e2ea9a2c8 -Author: Pavel Machek -Date: Mon Mar 8 20:30:06 1999 +0000 - - Filters are now a tiny bit stronger (if is actually working ;-) - -commit 111213f0b66cff8f562f7d9117c9080a9882129e -Author: Martin Mares -Date: Thu Mar 4 19:00:31 1999 +0000 - - Fixed processing of !krt_capable() routes. Converted device route decisions - to the krt_capable mechanism as well. - -commit e16155ae4aaee5d9ba7b6940f8312b36707718e4 -Author: Martin Mares -Date: Thu Mar 4 18:36:18 1999 +0000 - - KRT: Implemented asynchronous route / interface state notifications - (via Netlink). Tweaked kernel synchronization rules a bit. Discovered - locking bug in kernel Netlink :-) - - Future plans: Hunt all the bugs and solve all the FIXME's. - -commit 2253c9e239253d2094b4b1cabd97d296af885afb -Author: Martin Mares -Date: Thu Mar 4 14:23:32 1999 +0000 - - Although there are still heaps of FIXME's, Netlink works. - - To build BIRD with Netlink support, just configure it with - - ./configure --with-sysconfig=linux-21 - - After it will be tested well enough, I'll probably make it a default - for 2.2 kernels (and rename it to linux-22 :)). - -commit f81dc8564ae6c17638d7e3970b9980d0d00fc78a -Author: Martin Mares -Date: Thu Mar 4 11:40:05 1999 +0000 - - Converted some mb_alloc/bzero pairs to mb_allocz. - -commit 8fe48f1377c8b501e9b090748b195c62f5b582d2 -Author: Martin Mares -Date: Thu Mar 4 11:39:24 1999 +0000 - - Initialize allocated struct proto :-) - -commit 7a2105becdbadf20c1b4e4d2359e339c90610825 -Author: Martin Mares -Date: Thu Mar 4 11:36:26 1999 +0000 - - Use dmalloc instead of EFence when available (dmalloc has lot of improvements - over EFence and also hopefully smaller memory overhead, but sadly it's non-free - for commercial use). - - If the DMALLOC_OPTIONS environment variable is not set, switch on `reasonable' - checks by default. - - Also introduced mb_allocz() for cleared mb_alloc(). - -commit aa64578641c15b137172acc927d9d7af5914576b -Author: Martin Mares -Date: Wed Mar 3 20:57:29 1999 +0000 - - Netlink scans routes... - -commit 51ad41f2fc0c95179cb4ba65e568d2b84de32a28 -Author: Martin Mares -Date: Wed Mar 3 20:56:33 1999 +0000 - - EFence helped to find using of already free rte's in rt_prune(). - -commit 53b7a2982adf5d09a1cfddbc12cf172e0700fc55 -Author: Martin Mares -Date: Wed Mar 3 20:55:35 1999 +0000 - - Fix several things I broke today. - -commit 0e889c52542508dd49433bed1785072cb7799009 -Author: Martin Mares -Date: Wed Mar 3 20:40:51 1999 +0000 - - Added a hack forcing protocols with priority>0 to be started up - immediately. Grrr, need to find a real solution some day. - -commit 2d14045224f2233aed386eddf155d10a81892c3f -Author: Martin Mares -Date: Wed Mar 3 19:49:56 1999 +0000 - - Rewrote the kernel syncer. The old layering was horrible. - - The new kernel syncer is cleanly split between generic UNIX module - and OS dependent submodules: - - - krt.c (the generic part) - - krt-iface (low-level functions for interface handling) - - krt-scan (low-level functions for routing table scanning) - - krt-set (low-level functions for setting of kernel routes) - - krt-set and krt-iface are common for all BSD-like Unices, krt-scan is heavily - system dependent (most Unices require /dev/kmem parsing, Linux uses /proc), - Netlink substitues all three modules. - - We expect each UNIX port supports kernel routing table scanning, kernel - interface table scanning, kernel route manipulation and possibly also - asynchronous event notifications (new route, interface state change; - not implemented yet) and build the KRT protocol on the top of these - primitive operations. - -commit b2280748ad5087b5dab54dd4e423053ffe1f2387 -Author: Martin Mares -Date: Wed Mar 3 19:33:54 1999 +0000 - - Introduced protocol priority (all 'normal' protocols should use the - default zero priority). No more "kernel syncer initialized before - device routes" problems. - -commit 84c7e1943f0dbf896b1dd8d02a21120aa00463f4 -Author: Pavel Machek -Date: Tue Mar 2 19:49:28 1999 +0000 - - Add interface for running filters (please comment!), avoid bison warnings - -commit 05a845ed8e623c51025058037d0ca25db712ae68 -Author: Pavel Machek -Date: Tue Mar 2 19:49:22 1999 +0000 - - Avoid segfault - -commit 7972248d5d7f404a65fd630b2af712703aca0746 -Author: Martin Mares -Date: Tue Mar 2 18:37:02 1999 +0000 - - Netlink module supports interface scan on startup. Working on more. - -commit e35ef181a41384446aca614522a7cbb10606dd5b -Author: Martin Mares -Date: Tue Mar 2 18:36:09 1999 +0000 - - o The if_change_too_big_p change was too high-spirited. Fixed. - o Introduced if_find_by_index() - o Recognizing two types of interface updates: full update (starting with - if_start_update(), ending with if_end_update(), guaranteed to see - all existing interfaces) and a partial update (only if_update(), - usually due to asynchronous interface notifications). - -commit bcbd8cc3be670a96e1405b896cff4be0912ba379 -Author: Martin Mares -Date: Tue Mar 2 17:28:06 1999 +0000 - - Interface logic changes: - - o Introduced IF_LINK_UP flag corresponding to real link state. - o Allowed addressless interfaces. - o IF_UP is now automatically calculated and set iff the interface - is administratively up, has link up and has an IP address assigned. - It may be IF_IGNORED, though (as in case of the loopback). - o Any changes which include up/down transition are considered small - enough to not provoke artificial upping and downing of the interface. - o When an interface disappears (i.e., it wasn't seen in the last scan), - we announce this change only once. - o IF_LOOPBACK implies IF_IGNORE. - -commit 25287d6f7e687c77704816e565529960c65e3250 -Author: Martin Mares -Date: Tue Mar 2 17:20:07 1999 +0000 - - Don't try to install static routes to disconnected neighbors. - -commit eab0d1e5e5e89d82e435d224f5faf1a16524c69c -Author: Martin Mares -Date: Tue Mar 2 16:39:41 1999 +0000 - - Latest changes broke out-of-tree compilation. - -commit 3d8ef0c9ef7878292ef314a0f5f34390d74f4e9f -Author: Pavel Machek -Date: Tue Mar 2 13:15:35 1999 +0000 - - I just don't like files enclosed in <>. - -commit e834074dd43cabd10ca9811191a212f86b8f6ed7 -Author: Martin Mares -Date: Mon Mar 1 22:42:47 1999 +0000 - - If we are compiling with debugging enabled and libefence is available, - link it to get debugging malloc. - -commit b982b6db2bc9df396d4cd329e23c5b3199a409a2 -Author: Martin Mares -Date: Mon Mar 1 22:31:27 1999 +0000 - - Implemented netlink protocol parsing functions. More to come tomorrow. - -commit b4b3b39e20a669ab3f33f71474e937b5e9ce6d26 -Author: Martin Mares -Date: Mon Mar 1 22:30:33 1999 +0000 - - Added SK_MAGIC type sockets for internal use by system dependent code, - especially for netlink communication. - -commit c748cdb9ec8b7de5daaf759825bc428cd0bcd400 -Author: Pavel Machek -Date: Mon Mar 1 21:18:01 1999 +0000 - - Hopefully ended translating to new interface - -commit bdb95a21a45bce1754bf54de3e7423cf8eebf9ee -Author: Martin Mares -Date: Mon Mar 1 20:17:46 1999 +0000 - - Added skeletal version of Linux netlink interface. It doesn't work yet, - but the framework is there and I'll try finish it soon. - -commit ea3582a6f66223dfd2c0dd6c597dc40b48033fd5 -Author: Martin Mares -Date: Mon Mar 1 20:15:14 1999 +0000 - - Include "config.h" instead of "autoconf.h" in all Modules lists to make defines - in the static portion of configuration includes available as well. - -commit 1b769b08c195f7d95525131f65e5794c3c09a335 -Author: Martin Mares -Date: Mon Mar 1 20:13:54 1999 +0000 - - Renamed struct rtattr to struct rta to make things more consistent and - avoid namespace clashes with . Other files should - not be affected since they use 'rta' directly. - -commit 025d14cd5a0909b534762e5a50bfef97c2b4c9ee -Author: Martin Mares -Date: Mon Mar 1 19:05:58 1999 +0000 - - Use traditional Unix route/iface interface only when CONFIG_NETLINK - is not defined. Also moved declarations of Unix iface logic to krt.h. - -commit 12be9b8c1870ab8813d29350a2e2743f8e144642 -Author: Martin Mares -Date: Mon Mar 1 17:51:29 1999 +0000 - - Pruned the TODO list. - -commit 293e313ec91d4d23d6333e8cd852d425079cee68 -Author: Pavel Machek -Date: Mon Feb 15 13:34:43 1999 +0000 - - More rip fixes (config data moved to struct rip_proto_config), still - not tested. - -commit b5fe3dc21c930e1d9864e342a75785efe862bd24 -Author: Martin Mares -Date: Sat Feb 13 22:13:04 1999 +0000 - - Cleaned up TODO file. - - That's all for today, midnight gets closer. - -commit 45090fecd97c97cceb677257c6e8c26044065d13 -Author: Martin Mares -Date: Sat Feb 13 22:02:21 1999 +0000 - - Synced example config with new options. - -commit d88e99a92ae688cc7f6534af4c2555fe6f6709f6 -Author: Martin Mares -Date: Sat Feb 13 21:59:48 1999 +0000 - - Implemented static device routes. - - Expect for reconfiguration issues, the static protocol is complete now. - -commit d1f7eab6b5f1bd86a47402cb8fdb5cbcedc8947f -Author: Martin Mares -Date: Sat Feb 13 21:58:53 1999 +0000 - - Parameter order for the proto->if_notify hook was different in the include - file and different in reality. Decided to use the same order as we do - for proto->rt_notify (i.e., first new value and second the old one). - -commit 726141746b7f86b02a902bd6b316792e4be0380c -Author: Martin Mares -Date: Sat Feb 13 21:34:33 1999 +0000 - - '#' comments in config files are equivalent to end of line, therefore - also to implicit ';'. - -commit 5996da6a1d2eb11ac45d9d578618b9350e58593d -Author: Martin Mares -Date: Sat Feb 13 21:29:01 1999 +0000 - - Implemented garbage collection of routing tables to delete orphaned network - nodes having no routes attached. Such cleanup must be done from event handler - since most functions manipulating the routing tables expect network entries - won't disappear from under their hands and it's also probably faster when - done asynchronously. - -commit f4a0a64e02c13b2b467f9c1a29222f817b54ce2d -Author: Martin Mares -Date: Sat Feb 13 21:00:25 1999 +0000 - - Static protocol doesn't need any shutdown function. Everything gets - disposed by the core: neighbors, rte's, etc's... - -commit 3fb4ca2ce2b5750d38a5e31023d2873c9942cc78 -Author: Martin Mares -Date: Sat Feb 13 20:57:47 1999 +0000 - - Don't send any neighbor notifications to protocols being flushed. - -commit 783f8b689a29aaffbe75e964fdd09a3c219ea81c -Author: Martin Mares -Date: Sat Feb 13 20:55:08 1999 +0000 - - When protocols go down, prune the neighbor list. - -commit 013a9b91fe495371cbf9a5690613de45b634e3af -Author: Martin Mares -Date: Sat Feb 13 20:46:03 1999 +0000 - - When shutting down, remove all routes (except for RTS_INHERIT and RTS_DEVICE - routes) from kernel routing tables unless the "persist" switch is set. - -commit 0a2e9d9f5685fb4ca63e02fd3645194bb6de79d7 -Author: Martin Mares -Date: Sat Feb 13 20:19:24 1999 +0000 - - Moved sanity check of protocol state during annoucements to rte_announce. - -commit f4aabcee62890b7c3e999e188ab72752fbb20b79 -Author: Martin Mares -Date: Sat Feb 13 20:15:36 1999 +0000 - - Perform gracious shutdown upon receipt of SIGTERM. Finally we can - test the whole protocol shutdown code... :) - -commit 7f3d1a0850ff7f240b2f240db6d44b3a5dee6d48 -Author: Martin Mares -Date: Sat Feb 13 19:57:19 1999 +0000 - - Squashed one bug in timing of route scans. - -commit 4c9dd1e4b95e273eacc900abb63db4b8bafaf34b -Author: Martin Mares -Date: Sat Feb 13 19:43:21 1999 +0000 - - Synchronize signals to the main select/event/timer loop. - - Parse command line options. - -commit 1a54b1c6ac5177a1ef21f799f6cf28f355c5bbe9 -Author: Martin Mares -Date: Sat Feb 13 19:15:28 1999 +0000 - - Implemented real cleanup and pruning of routing table on protocol shutdown. - -commit ab749558a2a4356c38ed760649ef7d62daa48223 -Author: Martin Mares -Date: Sat Feb 13 19:14:16 1999 +0000 - - Pass new argument to FIB_ITERATE_END. - -commit 2569bc40731081ac70ee328a7df37109399b53c6 -Author: Martin Mares -Date: Sat Feb 13 19:13:51 1999 +0000 - - Fixed bug in FIB_ITERATE_END: it assumed the control variable is named - "z". I've added an argument specifying name of the variable. - - Renamed "again" label in FIB_ITERATE_* to "fis_again" to avoid name - clashes. - -commit 4e9498cbb171d52e2f3015d3e9d6c7b1b7205e27 -Author: Martin Mares -Date: Sat Feb 13 18:42:00 1999 +0000 - - config->router_id works again. - -commit 67bd949a520151a5ab50090d02617adc4960868c -Author: Martin Mares -Date: Thu Feb 11 22:59:06 1999 +0000 - - Real implementation of protocol state machines. Delayed startup/shutdown - should work now. Initial feeding of protocols by interfaces/routes is - done from the event queue to prevent unwanted recursion. - -commit 14dea0ed25cd0385ce35cf66ff309a78960b18ca -Author: Martin Mares -Date: Thu Feb 11 22:51:15 1999 +0000 - - Run the event queue before writing SIGUSR dumps. - -commit 64011f898c1bc99183a57f21d6e099c8f4496a09 -Author: Martin Mares -Date: Thu Feb 11 22:45:54 1999 +0000 - - struct proto again contains instance name (a copy of proto->cf->name). - -commit 3b15402fd4055cb5bd66cd9ac1106ceecff9f760 -Author: Martin Mares -Date: Thu Feb 11 22:18:36 1999 +0000 - - Grrr, forgot to commit the event routines themselves :| - -commit e8f73195fa68b027fdcb89f239107c2d4902bd9a -Author: Martin Mares -Date: Thu Feb 11 21:18:26 1999 +0000 - - Added simple event scheduling system to avoid recursive calling - of various callbacks. - - Events are just another resource type objects (thus automatically freed - and unlinked when the protocol using them shuts down). Each event can - be linked in at most one event list. For most purposes, just use the - global event list handled by the following functions: - - ev_schedule Schedule event to be called at the next event - scheduling point. If the event was already - scheduled, it's just re-linked to the end of the list. - ev_postpone Postpone an already scheduled event, so that it - won't get called. Postponed events can be scheduled - again by ev_schedule(). - - You can also create custom event lists to build your own synchronization - primitives. Just use: - - ev_init_list to initialize an event list - ev_enqueue to schedule event on specified event list - ev_postpone works as well for custom lists - ev_run_list to run all events on your custom list - ev_run to run a specific event and dequeue it - -commit edf62ba13fa6a74447d7ad44b23acbee964731bc -Author: Pavel Machek -Date: Mon Feb 8 22:50:32 1999 +0000 - - Propagate depend into all subdirectories; make rip compile after - latest mj's changes. - -commit ed245f967f76d29d6a4ce971ba4287ba6a7031f7 -Author: Martin Mares -Date: Fri Feb 5 21:39:21 1999 +0000 - - Synced Linux sysdeps to new interface. - -commit 10d807d000155a6257f6fbad88eb72a8bf9045da -Author: Martin Mares -Date: Fri Feb 5 21:38:50 1999 +0000 - - Synced kernel interface to new interface. - -commit e9e3dc265971fbf985c5df09cb1d98494c386581 -Author: Martin Mares -Date: Fri Feb 5 21:38:22 1999 +0000 - - Modified static router to use new interface. - -commit 31b3e1bbf5bc823ec5cf6d88931132f00e6c52b9 -Author: Martin Mares -Date: Fri Feb 5 21:37:34 1999 +0000 - - Implemented new configuration/reconfiguration interface and defined protocol - state machines. Full explanation will follow soon. - -commit c4c63eecc37a744c53c23da89b1ba09b9640cb6e -Author: Martin Mares -Date: Fri Feb 5 21:29:19 1999 +0000 - - Added several parentheses to MIN/MAX macros. - -commit 292099d55f1131d75efec647d3780e7a1a665fdf -Author: Pavel Machek -Date: Wed Feb 3 12:28:16 1999 +0000 - - Few fixes in parsing of filters - -commit 294c182eb1dd02d0ae8658acb4a21db5d2977f3c -Author: Martin Mares -Date: Sat Jan 23 21:08:59 1999 +0000 - - Replaced the old ugly ipv6 compilation hack by a conditional in Modules. - -commit 2c2f67bd83c267c1dbee68c6ed7d67f9be77e566 -Author: Martin Mares -Date: Sat Jan 23 21:08:36 1999 +0000 - - Filter all `Modules' files through C preprocessor, so that they can - reference BIRD configuration. - - By the way: Do you know GCC by default does `#define unix 1'? - -commit ca3d562b24d5a3e303ab00d276496fb38b7382ee -Author: Pavel Machek -Date: Fri Jan 15 18:13:55 1999 +0000 - - filters_init() renamed to filters_postconfig(). - -commit c9b6670608577521c883db4bccd75b871568b7f7 -Author: Martin Mares -Date: Fri Jan 15 18:04:28 1999 +0000 - - Original `expr' is back, filter expressions renamed to `term'. - - In the future, we'll allow any filter term in place of `expr' and we'll - just evaluate it immediately, but not now as we have no evaluation - routines. - -commit 3169cf699175a2489712eee955a9ee9890ef00c9 -Author: Martin Mares -Date: Fri Jan 15 17:18:41 1999 +0000 - - Added bird.conf to .cvsignore and created an example configuration file. - - If you want to run bird now, just copy doc/bird.conf.example as bird.conf - and edit it to suit your needs. - -commit e3a39a9ee70bf7060f9de38268885b637bc1a65a -Author: Martin Mares -Date: Fri Jan 15 16:59:26 1999 +0000 - - Killed duplicate %type for expr. - -commit ca6dfded2c22c74298ff595e59afe4672151889b -Author: Pavel Machek -Date: Fri Jan 15 16:52:14 1999 +0000 - - Make filters actually compiled. - -commit b9d70dc84e488212328103438bdf4e369c7d27a1 -Author: Pavel Machek -Date: Fri Jan 15 16:49:17 1999 +0000 - - Filters, second try. This time they have their own directory. - -commit b79f9215b99c7a54dbb2639c972dda497d141133 -Author: Martin Mares -Date: Fri Jan 15 16:40:14 1999 +0000 - - Propagate "depend" target to real top-level Makefile. - -commit 489b6b5e003f4a8a7856688ab0372b2ca59c84d9 -Author: Pavel Machek -Date: Fri Jan 15 16:13:51 1999 +0000 - - #if 1 that creeped into cvs killed. - -commit eeb05158acd0cb8def7aa155c2c718f608e6a5ae -Author: Pavel Machek -Date: Fri Jan 15 14:42:55 1999 +0000 - - Be a tiny bit more verbose. - -commit 72380a3447d2c54730a4a32495e5dd964c34f57e -Author: Pavel Machek -Date: Fri Jan 15 14:41:51 1999 +0000 - - Filters added. They are unable to do anything interesting for now - (with exception of printing integers to screen), but they exist. - -commit 41183888ee8addbd7887936e3b41974f5824d8ae -Author: Pavel Machek -Date: Fri Jan 15 14:40:50 1999 +0000 - - Properly initialize filters. Also bumped version to 0.0.0 as it - actually does something. - -commit cceb3e7d2fafcf3acee1db1d762ed697863b6f3b -Author: Martin Mares -Date: Tue Jan 12 20:36:18 1999 +0000 - - Fixed trivial bug in naming of `depend' file. Argh. - -commit 663683a575cb170c656db06770b490037ecf3db7 -Author: Pavel Machek -Date: Tue Jan 12 16:50:38 1999 +0000 - - Make it compile again (stupid makefiles!), make quiet option work - (multicast/broadcast options are currently unimplemented). - -commit 77cedad1f6de8fcd0e59f280d08437ab3216428e -Author: Pavel Machek -Date: Tue Jan 12 16:41:34 1999 +0000 - - Keep protocol data out of iface_patt. - -commit 50e89a6ea26caba59c7d4dd512fdc12c09cee64c -Author: Pavel Machek -Date: Tue Jan 12 16:40:55 1999 +0000 - - Patterns expanded in the right way - -commit 18fff6a1979725c1ed839d9a10285e22dc0b8214 -Author: Martin Mares -Date: Sun Jan 10 00:26:11 1999 +0000 - - Initialize only protocols which are compiled in :) - -commit b296730cb6b72ff84ba04fa58a6c7198f3a831e0 -Author: Martin Mares -Date: Sun Jan 10 00:25:50 1999 +0000 - - Few last-minute bug fixes. - -commit 49e7e5ee0b2848f5bf120a962e2e7eb11b86566a -Author: Martin Mares -Date: Sun Jan 10 00:18:32 1999 +0000 - - New makefiles. Includes support for out-of-source-tree builds. - -commit 2f9bcf9713523f6fefecd143cc2aa2a8dda7f27f -Author: Martin Mares -Date: Sat Jan 9 15:02:11 1999 +0000 - - First step of "autoconfization". Created a configure script which - guesses most system-dependent parameters and determines name of system - configuration file (sysdep/cf/...) with the remaining ones. - - To compile BIRD, you now need to do: - - autoconf # Create configure from configure.in - ./configure # Run configure script - make # Compile everything - - Configuration files: - - sysdep/config.h Master config file - sysdep/autoconf.h Parameters determined by configure script - sysdep/cf/*.h Fixed system configuration we're unable - to guess. - - Makefiles are still the original ones, but this will change soon. - -commit 6996f459c6d8e6205bbacd83e3656b47635f7d6d -Author: Pavel Machek -Date: Tue Dec 22 19:41:04 1998 +0000 - - Bird now uses fib structure instead of linklist. - -commit 1d7c44b7119d30874563c9f8bbac25273ecabb57 -Author: Pavel Machek -Date: Tue Dec 22 19:20:43 1998 +0000 - - Oops, previous modification for passing NULL to fib_init() did not - compile :-(. - -commit ce45fc128783ea7b93bd7ebd5ac4eec763adbb40 -Author: Pavel Machek -Date: Tue Dec 22 18:55:49 1998 +0000 - - Allow NULL to init_fib(). - -commit 852fc0af31ed885e355bb1d14ce0e4468830c359 -Author: Martin Mares -Date: Sun Dec 20 14:29:06 1998 +0000 - - log(), die() and bug() messages shound NOT contain trailing newlines. - -commit 08c69a7720af32a82b8e2b4b9ea3742074b3b8ee -Author: Martin Mares -Date: Sun Dec 20 14:27:37 1998 +0000 - - die() -> bug() where appropriate. - -commit ee969ea7f4c4f40020e4209b167da04d04aba52c -Author: Martin Mares -Date: Sun Dec 20 14:26:57 1998 +0000 - - Added #if 0 to rip_postconfig(), so that it doesn't crash whole daemon - when RIP is unconfigured. - - die() -> bug() - -commit 98e87c8628f9b0a0a96bc46879b65a78b756a718 -Author: Martin Mares -Date: Sun Dec 20 14:24:35 1998 +0000 - - Finer grained logging levels: - - #define L_DEBUG "\001" /* Debugging messages */ - #define L_INFO "\002" /* Informational messages */ - #define L_WARN "\003" /* Warnings */ - #define L_ERR "\004" /* Errors */ - #define L_AUTH "\005" /* Authorization failed etc. */ - #define L_FATAL "\006" /* Fatal errors */ - #define L_TRACE "\002" /* Protocol tracing */ - #define L_INFO "\003" /* Informational messages */ - #define L_REMOTE "\004" /* Remote protocol errors */ - #define L_WARN "\004" /* Local warnings */ - #define L_ERR "\005" /* Local errors */ - #define L_AUTH "\006" /* Authorization failed etc. */ - #define L_FATAL "\007" /* Fatal errors */ - #define L_BUG "\010" /* BIRD bugs */ - - Introduced bug() which is like die(), but with level L_BUG. Protocols - should _never_ call die() as it should be used only during initialization - and on irrecoverable catastrophic events like out of memory. - - Also introduced ASSERT() which behaves like normal assert(), but it calls - bug() when assertion fails. When !defined(DEBUGGING), it gets ignored. - -commit e440395d7d3c503692321e2f6ec4e42bf758acb1 -Author: Martin Mares -Date: Sun Dec 20 14:01:37 1998 +0000 - - When printing a routing table, fib_check() it. - -commit 3ab001b97402bc01a4777cf1cb60ce940d50ffe3 -Author: Martin Mares -Date: Sun Dec 20 14:01:20 1998 +0000 - - Rewrote fib functions to make them insert/delete/asynchronous-walk safe. - This is implemented in a way similar to lib/slists.h, but it took some - more effort to make rehashing not disturb the readers. We do it by just - taking _highest_ k bits of ipa_hash as our hash value and sorting each - box by whole ipa_hash(). - - Consult FIB_ITERATE_* macros in nest/route.h. - - Implemented fib_check() debugging function and also rewrote the rehashing - algorithm to use better thresholds and not to waste time by rehashing - forth and back. - -commit a6f250f5c6d079badc4a1274b19a21a52de6acec -Author: Martin Mares -Date: Sun Dec 20 13:57:49 1998 +0000 - - New hash functions according to benchmarks posted yesterday. (The IPv6 - version has not been benchmarked yet due to insufficient test data.) - Now ipa_hash() returns a uniformely distributed 16-bit value. - -commit a05406e69c699c8b6f43bf58f47b8b0385113083 -Author: Martin Mares -Date: Sun Dec 20 13:56:27 1998 +0000 - - Implemented deletion/insertion/asynchronous-walk lists. - For example of their use, look at comments in lib/slists.h. - -commit 29ad2c9ee11df80c780c4e3f0fd217783af1d727 -Author: Martin Mares -Date: Sat Dec 19 21:53:28 1998 +0000 - - Variance estimation fixed. - -commit 87b60bf7e8ad12b3efd3d6f37df0d029f50d2d91 -Author: Martin Mares -Date: Sat Dec 19 11:51:47 1998 +0000 - - Added several tools for fib hashing function analysis. It turned out - we can use very simple function which is monotonic with respect - to re-hashing: - - n ^= n >> 16; - n ^= n << 10; - h = (n >> (16 - o)) & ((1 << o) - 1); - - where o is table order. Statistical analysis for both backbone routing - table and local OSPF routing tables gives values near theoretical - optimum for uniform distribution (see ips.c for formulae). - - The trick is very simple: We always calculate a 16-bit hash value n and - use o most significant bits (this gives us monotonity wrt. rehashing - if we sort the chains by the value of n). The first shift/xor pair - reduces the IP address to a 16-bit one, the second pair makes higher - bits of the 16-bit value uniformly distributed even for tables containing - lots of long prefixes (typical interior routing case with 24-bit or even - longer prefixes). - -commit 02933ddbbec94f1bb01c0b9e5198fe272c1f5025 -Author: Pavel Machek -Date: Wed Dec 9 20:08:57 1998 +0000 - - debug() -> DBG() in rip. - -commit 06fa1453cdc419acd0c037ac82f49b4d8e77cfbd -Author: Pavel Machek -Date: Wed Dec 9 15:22:40 1998 +0000 - - Initial multicast support (can not work, but skeleton is there) - -commit 8e66a0ebb927f40c9fcb48bbf5f2d811d7b7c7f3 -Author: Martin Mares -Date: Tue Dec 8 18:37:58 1998 +0000 - - Hopefully finished kernel syncer (krt) rewrite: - - o Interface syncing is now a part of krt and it can have configurable - parameters. Actually, the only one is scan rate now :) - o Kernel routing table syncing is now synchronized with interface - syncing (we need the most recent version of the interface list - to prevent lots of routes to non-existent destinations from - appearing). Instead of its own timer, we just check if it's - route scan time after each iface list scan. - o Syncing of device routes implemented. - o CONFIG_AUTO_ROUTES should control syncing of automatic device routes. - o Rewrote krt_remove_route() to really remove routes :) - o Better diagnostics. - o Fixed a couple of bugs. - -commit 980297d2899a5aec6609d1f7b44626e52e6e4417 -Author: Martin Mares -Date: Tue Dec 8 18:31:31 1998 +0000 - - Fixed a couple of bugs in static protocol. All static routes except device - ones seem to work well. - -commit 618533af91051b7b26ac19816e89cd81352b0f13 -Author: Martin Mares -Date: Tue Dec 8 18:30:35 1998 +0000 - - Added source RTS_DUMMY for temporary routes. They should never appear - in the main table. - -commit f39e4713c270752d7bbfcc8115a7ea7f589c3997 -Author: Martin Mares -Date: Tue Dec 8 16:20:13 1998 +0000 - - Rewritten kernel syncer. Now uses the rta trickery I've introduced yesterday - and does things "the right way". Few things are still missing (device - routes etc.), I'll add them later in the evening. - -commit 04925e9040330afc92f8001e6a19ae2146e36782 -Author: Martin Mares -Date: Mon Dec 7 21:59:15 1998 +0000 - - Minor rte/rta interface changes: - - o rte can now contain a pointer to both cached and uncached rta. Protocols - which don't need their own attribute caching can now just fill-in a rta, - link it to rte without any calls to attribute cache and call rte_update() - which will replace rte->attrs by a cached copy. - - o In order to support this, one of previously pad bytes in struct rta - now holds new attribute flags (RTAF_CACHED). If you call rte_update() - with uncached rta, you _must_ clear these flags. In other cases rta_lookup() - sets it appropriately. - - o Added rte_free() which is useful when you construct a rte and then the - circumstances change and you decide not to use it for an update. (Needed - for temporary rte's in kernel syncer...) - -commit cdc6bfa70f730c3741537cc21cdd0a5d13ed2af9 -Author: Martin Mares -Date: Mon Dec 7 10:16:15 1998 +0000 - - Comparison of kernel reject routes fixed. - -commit 12df4d909bdfa9e99dd0dd1b9fd690ce85b87dc5 -Author: Martin Mares -Date: Mon Dec 7 10:15:42 1998 +0000 - - KRF_* flags moved to krt.h as they are internal to kernel syncer, - fib->pad0,pad1 renamed to x0,x1 and in case of struct net x0 is reserved - for kernel syncing as well. - -commit f6bd206607d9fcad3572841813d7376bd2df4952 -Author: Martin Mares -Date: Sun Dec 6 23:13:31 1998 +0000 - - All static routes except for device ones should work and appear/disappear - when their destination comes on/off link. Deserves better testing :) - - See example in bird.conf. - -commit 78d06cf2bc8ec8b9850802fc9d34afe4d1782c6c -Author: Martin Mares -Date: Sun Dec 6 23:11:47 1998 +0000 - - Removed protocol-specific data in rte for protocol static since no - such data ever existed. - -commit 436965d25e840ef5f9614ed55181f5bf8c765d3b -Author: Martin Mares -Date: Sun Dec 6 23:11:18 1998 +0000 - - Aesthetic fix for neighbor cache debug dump. - -commit 89d2355d3d16ac51ad5861d91b17eaa65713f80b -Author: Martin Mares -Date: Sun Dec 6 23:10:45 1998 +0000 - - Added new rule for prefix length / netmask. - -commit cc12cf05c789ef85d72cf19e9b52f0c4982542f7 -Author: Martin Mares -Date: Sun Dec 6 23:10:28 1998 +0000 - - cf_error() now accepts any format strings instead of just an error - message. Also added extra kludge to get rid of collisions of REJECT - symbols. - -commit a1bf6440b5c27f7fb829eb25f6ac1c2629eb72eb -Author: Martin Mares -Date: Sun Dec 6 18:21:23 1998 +0000 - - Added skeleton of static route protocol. - -commit 980ffedbb04bf3beedf147fc7dfed40cdbf968aa -Author: Martin Mares -Date: Sun Dec 6 17:40:42 1998 +0000 - - Kernel syncer is now configurable. It will probably need some more - options, but at least basic tuning is possible now. - -commit 0846203e896d8ab009217968e391b5e13ea3c4c6 -Author: Martin Mares -Date: Sun Dec 6 17:39:08 1998 +0000 - - Fixed bug in CF_ADDTO. How it's possible it has ever worked? - -commit 166b9c4912f1a52d7910c630280cf5a076eb1990 -Author: Martin Mares -Date: Sun Dec 6 17:38:42 1998 +0000 - - Added rule "bool" for boolean switches. - -commit b35d72ac668c52ef0755cedba89bdca54bd995ac -Author: Martin Mares -Date: Sun Dec 6 11:59:18 1998 +0000 - - Name cleanups as suggested by Pavel: - - - cfg_strcpy() -> cfg_strdup() - - mempool -> linpool, mp_* -> lp_* [to avoid confusion with memblock, mb_*] - - Anyway, it might be better to stop ranting about names and do some *real* work. - -commit 2d9290e973b9cfc909057a0409152e020d1c29db -Author: Pavel Machek -Date: Fri Dec 4 11:45:51 1998 +0000 - - Rip now has configurable per-interface metric (please rewiev), and few - more configurable parameters. To do that, union was added into iface_patt. - -commit 9b999c393c6f89a73d5fe0f4e152b77ca0afb1b2 -Author: Pavel Machek -Date: Tue Dec 1 16:17:10 1998 +0000 - - Infinity is now configurable ammount. - -commit 50d8424ad1f40f9979214c1d6cbf8e290ba9a5cb -Author: Martin Mares -Date: Sun Nov 29 22:03:58 1998 +0000 - - Added configuration of the device internal protocol. This is primarily - intended to serve as an example of interface pattern list use. As a side - effect, you can disable generating of device routes by disabling - this protocol. - -commit 66efdf962a343c7cf5aef475f35f9e3864cb4fdd -Author: Martin Mares -Date: Sun Nov 29 22:01:33 1998 +0000 - - Handle disabled protocol instances. - -commit ed45f2e126680c7197be2058f9c162f1d5019eeb -Author: Martin Mares -Date: Sun Nov 29 22:01:03 1998 +0000 - - Added functions for manipulating interface name pattern lists: - - o iface_patt_match(list, iface) -- match interface against list - o iface_patts_equal(a, b, c) -- compare whether two pattern lists are - equal or not. c(x,y) is called for comparison of protocol-dependent - data. - -commit 49e4a4d1fd64da045182f6ccd38753feb364f9c5 -Author: Martin Mares -Date: Sun Nov 29 21:59:37 1998 +0000 - - Created new functions for allocating configuration data: - - o cfg_alloc(size) -- generic memory allocation - o cfg_allocu(size) -- unaligned memory allocation - o cfg_allocz(size) -- zeroed memory allocation - o cfg_strcpy(str) -- allocate a copy of a string - - Also fixed a bug in lexing of string literals. - -commit 5cd462f291b45a6a33168cdfbc4ba55ee068af65 -Author: Martin Mares -Date: Sun Nov 29 14:51:47 1998 +0000 - - `wc -l TODO` decreased. - -commit dee929d86844b1956b1c0f1d2c0289a787ab9226 -Author: Martin Mares -Date: Sun Nov 29 14:47:24 1998 +0000 - - Added function for shell-like pattern matching. Will be used for - matching interface names in protocol-to-iface bindings. - -commit bd5d0d62f10c65d56e1900014be5989a3feb8380 -Author: Martin Mares -Date: Sun Nov 29 14:40:39 1998 +0000 - - Allow setting debug value and `disabled' flag in protocol definition. - -commit 0cf86f0fc34c7daf020a9189279644af89e273a1 -Author: Martin Mares -Date: Sun Nov 29 14:38:34 1998 +0000 - - Renamed `DEBUG' symbol to `DEBUGGING' to prevent collisions with token - names and include files. - -commit 7af99789c78894fa2c7ffce3d7172d6a46c1c0e3 -Author: Martin Mares -Date: Fri Nov 27 21:34:03 1998 +0000 - - Oops, forgot to remove a debugging kludge. - -commit 0b62c3a7c7548cd447b4f18e0346cc9e74862ab3 -Author: Martin Mares -Date: Fri Nov 27 21:32:45 1998 +0000 - - Trivial 15-line bison excercise: Implemented expressions including - user-defined numeric symbols. Whenever possible, use `expr' instead - of `NUM' to get full express ion power :-) - -commit c74c0e3cdf008988a8873d3f76c0d71b29ab8673 -Author: Martin Mares -Date: Fri Nov 27 21:09:57 1998 +0000 - - First attempt at protocol configuration (now done only for RIP). - -commit 93fb60d54ca7ce3efec1cc0b39fb0840d055ccd1 -Author: Martin Mares -Date: Fri Nov 27 21:08:37 1998 +0000 - - Fixed few misspellings and exported instance init as rip_init_instance(). - -commit 8450be97d6ffb052fce95292d39c3f67afbcdc1c -Author: Martin Mares -Date: Fri Nov 27 21:07:02 1998 +0000 - - Added generator of default names. - -commit 906b0170a41cc0d8ea11c7bae0a9fea3d18fe6d1 -Author: Martin Mares -Date: Fri Nov 27 19:39:16 1998 +0000 - - Experimental config file. - -commit b4712244a0fb49b32dc58d28523f122d8ed2cae8 -Author: Martin Mares -Date: Fri Nov 27 19:38:30 1998 +0000 - - Dummy grammar for RIP configuration. Now empty, but must be here since - it's referenced in the makefiles. - -commit da87782278cdb38a90f5236fbbc4928c9ca2ee15 -Author: Martin Mares -Date: Fri Nov 27 19:37:57 1998 +0000 - - Parser fragment for the core. Now handles only router ID setting. - -commit 70591fa06481e7935dcf66ec79812c470c71f4c8 -Author: Martin Mares -Date: Fri Nov 27 19:37:07 1998 +0000 - - Compile and use the new configuration code by default. - -commit f142750d3420d482d7e9344c71777fdd37754114 -Author: Martin Mares -Date: Fri Nov 27 19:36:06 1998 +0000 - - Base of the parser. - -commit 82fc7be7bbb9af40d0abf8477f7af25e1423da1a -Author: Martin Mares -Date: Fri Nov 27 19:35:50 1998 +0000 - - Lexical analyser. - -commit fe7cec12e8589b7d6af6033cb80804fbcbe7c0b8 -Author: Martin Mares -Date: Fri Nov 27 19:35:10 1998 +0000 - - Replaced nest/confile.h by conf/conf.h, added a lot of new definitions. - -commit ce6ca80926c0ce87c9a08ea4f4236b1a95846086 -Author: Martin Mares -Date: Fri Nov 27 19:33:53 1998 +0000 - - This script takes configuration fragments and generates full Bison grammar - from them. - -commit 882c588a4060739a4820941cd1c6014bd10ab0db -Author: Martin Mares -Date: Fri Nov 27 19:33:26 1998 +0000 - - This script takes configuration fragments and extracts keyword list - from them. - -commit d2ed2579fa365fa36b7882ef847b9e640290c05e -Author: Martin Mares -Date: Fri Nov 27 19:31:41 1998 +0000 - - Now merges configuration fragments (*.Y) as well. - -commit dfeef5d8bb9fe19cb44d4121fd8324179a38b7a0 -Author: Martin Mares -Date: Fri Nov 27 19:29:27 1998 +0000 - - Implemented ip_pton() - -commit a3afae585af9a544f919a95509107aae33fbe53c -Author: Martin Mares -Date: Fri Nov 27 19:29:00 1998 +0000 - - Removed prototype of rp_free() since this function has never existed. - -commit 3cef8c706ccfbc17d8af6aed7820c9231d908214 -Author: Martin Mares -Date: Fri Nov 27 19:28:29 1998 +0000 - - Added path to config file. - -commit 4254dc45e77b4c2d45178c7a5ce1e9bff19b8bf7 -Author: Martin Mares -Date: Sat Nov 21 10:25:34 1998 +0000 - - Killed bug in processing of 'h' prefix. Patch taken from linux-2.1.129. - -commit 9158ca99f740d5b1b50d233e0f64e61504dc6fdf -Author: Martin Mares -Date: Mon Nov 16 21:41:21 1998 +0000 - - Complain loudly if the logging buffer would overflow. - -commit 53a416d376a16b2091dce898a16600b0cd27c348 -Author: Martin Mares -Date: Mon Nov 16 21:40:35 1998 +0000 - - Implemented snprintf and similar functions. It took a lot of thinking, - but the modifications were relatively simple and straightforward. - -commit c3e9b2ab2448bce4a6fe6a5be9c8de8beecc8e17 -Author: Pavel Machek -Date: Mon Oct 26 15:35:19 1998 +0000 - - RIP now includes notion of interface, and is correctly talking to - itself on second host. Split horizont is broken. - -commit dafd580ed94f38c95a84d8d00d3a57c7c194d6db -Author: Martin Mares -Date: Mon Oct 26 15:24:32 1998 +0000 - - Previous fix was wrong. - -commit db6984c43c47bfb549394f6571f024df301b19ee -Author: Martin Mares -Date: Mon Oct 26 15:01:04 1998 +0000 - - rte_update: Doesn't loop forever when multiple routes point to the same - destination. - -commit dc7c7494e372febc44ae7d1f4ed618a6fe8bf45e -Author: Pavel Machek -Date: Tue Oct 20 16:45:53 1998 +0000 - - RIP _NOW_ actually talks to itself (workaround core bug: send data - from other port than we receive at), few FIXME's added. - -commit 756b86dea31f2b94b1fbc1d95098f1a177b2817e -Author: Martin Mares -Date: Tue Oct 20 16:39:04 1998 +0000 - - Learn static device routes from the kernel (temporary until we can make - such things configurable). - -commit feb6abe009aa13b3cd0ce22e6333163fb7561c16 -Author: Pavel Machek -Date: Tue Oct 20 16:12:43 1998 +0000 - - RIP now actually talks to itself. - -commit 8ca8683c705c76dc155521204ef098e6fe547696 -Author: Martin Mares -Date: Tue Oct 20 15:47:02 1998 +0000 - - Beware the NULL route, my son... The bugs that bite, the BIRDs that crash :-) - -commit acc62f5e1d4a100ec0be5c73e928a041aa9a4f9d -Author: Martin Mares -Date: Tue Oct 20 15:17:38 1998 +0000 - - Insert/remove hooks return void, not int. - -commit a0762910a62085d875b5bf5e1494c4fdde6f603f -Author: Martin Mares -Date: Tue Oct 20 15:13:18 1998 +0000 - - Added pointer to network to RTE. The complications with passing NET separately - aren't worth 4 bytes per RTE. - - rte_discard and rte_dump don't need net * as parameter. - -commit b6903c948b2325f11cfb07f2df0590708920b987 -Author: Martin Mares -Date: Mon Oct 19 18:18:12 1998 +0000 - - Updated TODO. - -commit 7d8329078066b5682a0330b20dbdf74c7a01cbac -Author: Martin Mares -Date: Mon Oct 19 18:13:36 1998 +0000 - - Generate router_id automatically if possible (standard "smallest of local - regular interface addresses" rule). - - Protocols should NOT rely on router_id existence -- when router ID is not - available, the router_id variable is set to zero and protocols requiring - valid router ID should just refuse to start, reporting such error to the log. - -commit 08045252553478457f923a9f941675df9992f507 -Author: Martin Mares -Date: Mon Oct 19 17:52:29 1998 +0000 - - Basic kernel routing table syncing implemented. Learning of routes installed - by other programs or the kernel itself is not supported yet, but it's not - needed for development of other protocols. - -commit 567e6c62208d3bb05b58b8ed08c2be29d6542f2b -Author: Martin Mares -Date: Mon Oct 19 17:48:45 1998 +0000 - - Use (SOCK_DGRAM,IPPROTO_IP) socket instead of (SOCK_STREAM,IPPROTO_TCP). - This is exactly what Linux ifconfig does and seems to be the preferred way. - -commit 4cf45766bac4b1e3f5196f7e36d012cb7c010dc1 -Author: Martin Mares -Date: Mon Oct 19 17:47:50 1998 +0000 - - Exporting fill_in_sockaddr() for use by other unix-dependent code. - -commit 36f2caf147fb80e2b3db59d367e07f5d143f3710 -Author: Martin Mares -Date: Mon Oct 19 17:46:45 1998 +0000 - - Fixed generation of device routes for unnumbered point-to-point links. - -commit f184ea6f7e1233403d06fa4615cb9f27f9d9a839 -Author: Martin Mares -Date: Mon Oct 19 17:45:29 1998 +0000 - - Proto struct now contain (down | starting | up) state. - -commit 16a8ba30a97d82f8e43385d1a9b116fdb16746a8 -Author: Martin Mares -Date: Sun Oct 18 22:25:56 1998 +0000 - - We parse /proc/net/route and flag RT entries according to it. More to come - today in the morning... - -commit 4c45595e3bb9f0b605e3102742831dad8915b309 -Author: Martin Mares -Date: Sun Oct 18 22:24:41 1998 +0000 - - o FIB flags now available for FIB users. - o struct network: FIB flags used for kernel syncing. - o struct network: `next' field deleted (historical relic). - -commit ab3a76a382745e0195b213c6d87ddc0e3cabd690 -Author: Martin Mares -Date: Sun Oct 18 22:22:28 1998 +0000 - - Added ipa_from_u32 and ipa_from_u32 for use in the kernel sync code (IPv4 only). - Don't ever think of using it in routing protocols. - -commit 7e7790c61f14dff300d7c5464fdd47e4c15a0731 -Author: Martin Mares -Date: Sun Oct 18 12:50:43 1998 +0000 - - Since almost every UNIX system requires different techniques for reading - the kernel routing table as opposed to modifying it which is approximately - the same on non-netlink systems, I've split the kernel routing table - routines to read and write parts. To be implemented later ;-) - -commit 8b1688177b2b3c6a3740f792997f3057b9bff0da -Author: Martin Mares -Date: Sun Oct 18 12:48:15 1998 +0000 - - * Please distinguish between DGB() and debug(). - -commit 3629bcf0c7ff8ccc56baabc4769f90635d1a7864 -Author: Martin Mares -Date: Sun Oct 18 12:26:02 1998 +0000 - - Preconfig, postconfig and init hooks can be NULL. - -commit 0432c0173bb4d234e8ba8e4afea0a8e708e119d8 -Author: Martin Mares -Date: Sun Oct 18 11:53:21 1998 +0000 - - Split protocol init to building of protocol list and real protocol init. - Added kernel route table syncer skeleton. - -commit 05e56feb57b8e313a2328dbe82e2c2a70ff5115a -Author: Martin Mares -Date: Sun Oct 18 11:50:36 1998 +0000 - - Removed global pointer to proto_dev. - -commit 5b22683d2f27fcc5954cc9d4d58e55e539414d53 -Author: Martin Mares -Date: Sun Oct 18 11:13:16 1998 +0000 - - After contemplating about RIP route timeouts for a long time, I've implemented - protocol callbacks for route insertion and deletion from the central table. - RIP should maintain its own per-protocol queue of existing routes, scan it - periodically and call rte_discard() for routes that have timed out. - -commit 570ce189d77fc40841e8e9f8f86ea3c3840aa450 -Author: Martin Mares -Date: Sun Oct 18 10:49:46 1998 +0000 - - Implemented `route last modified' time. - -commit 2a900b1b1565d778f19c10b087aea558f067bba7 -Author: Martin Mares -Date: Sat Oct 17 11:26:28 1998 +0000 - - Fixed misleading comment. - -commit 7f3d198df118dc218bb2049f1cc0597ec62864bc -Author: Martin Mares -Date: Sat Oct 17 11:24:13 1998 +0000 - - Each protocol now hears even its own routes and needs to make its own - loop detection. This is needed since both RIP and OSPF handle multiple - neighbors and they need to redistribute routes learned from each neighbor - to the remaining ones. - -commit 47b793064c25c8adcab48cacc018be1675f2448a -Author: Martin Mares -Date: Sat Oct 17 11:05:18 1998 +0000 - - Solve chicken-and-egg problems with protocol startup. We now queue all inactive - protocols and don't send route/interface updates to them and when they come up, - we resend the whole route/interface tables privately. - - Removed the "scan interface list after protocol start" work-around. - -commit d92882be9b1bfcc1a8e8a7bd552bdec4831694aa -Author: Martin Mares -Date: Sat Oct 17 11:02:39 1998 +0000 - - WALK_LIST_DELSAFE now actually works (it really couldn't since it didn't - reference list head at all). - -commit c05ea56f8eb15dfe3c9d18496deaa926e0cf8aac -Author: Pavel Machek -Date: Sat Oct 17 10:25:22 1998 +0000 - - rip should now correctly listen, but entries will not time out. - -commit 8333431c4d0d7dcf065938e21440b4ce20cb8f8f -Author: Pavel Machek -Date: Thu Oct 15 15:12:24 1998 +0000 - - Rip: rip_rta_same added. - -commit 93f1c532e99cddb5575075313c0707bcd4758f07 -Author: Martin Mares -Date: Wed Oct 14 13:38:17 1998 +0000 - - Moved scanning of interfaces, so that they get initialized after all - routing protocol instances. - -commit cf3934c5691ec4a00d54b863576916f9a1dd1f1a -Author: Pavel Machek -Date: Wed Oct 14 13:27:53 1998 +0000 - - Lists: unneccessary test killed, make code friendly to non-gcc. - -commit c93214d442644c9667d69f904d57aef6b4ddd47e -Author: Martin Mares -Date: Tue Oct 13 19:57:33 1998 +0000 - - o There are cases when SIOCGIFINDEX is defined, but it doesn't work. When - this happens, don't reject the whole interface, just mark it as index 0. - o Removed Pavel's comment about EFAULT and SIGSEGV. EFAULT is a valid return - code for cases where the buffer is too small. - o Commented out the smart interface list size logic temporarily as it seems - Linux 2.0 SIOCGIFCONF doesn't react to ifc_req==NULL sanely. Replaced it - by exponential stepping. - -commit fdf33cde1cd14a2a0215d6d459489e258fe20789 -Author: Pavel Machek -Date: Tue Oct 13 14:59:46 1998 +0000 - - Strange, on atrey ioctl() does not fill structure, and bird segfaults - on it. Now we "only" die(). - -commit 21580e304f612b276a90d2a90f4fb86569609255 -Author: Pavel Machek -Date: Tue Oct 13 14:32:18 1998 +0000 - - I prefer to have broken drivers than completely stupid ones... - - Linus Torvalds - - Rip now uses main routing table properly: entries are stored directly - into main routing table and we are relying on core to call our's - compare. That unfortunately broke garbage collecting (and probably - many more things). It compiles. - -commit 1d941de47a90fb9ca39d7acf6aa396447d1fc7df -Author: Pavel Machek -Date: Wed Oct 7 19:33:50 1998 +0000 - - RIP now somehow listens to main routing table (dont expect it to work) - -commit 8c43696da0c0680820aa949da35e823e68162788 -Author: Martin Mares -Date: Mon Aug 31 21:13:42 1998 +0000 - - Route update hook now gets network prefix as well as updated - route attributes. - -commit bf65d27deaa0bacd801ec06a3257dda03a53fee2 -Author: Pavel Machek -Date: Thu Jul 30 07:43:45 1998 +0000 - - Bird's info are now understood by ripquery. - -commit 279f4c7b7b2ebe13793649f191040042a8c4c014 -Author: Pavel Machek -Date: Tue Jul 28 21:44:11 1998 +0000 - - Rip now includes code to reply, but it is currently broken. - -commit 48b41d58112737f87f1217414291e61f5430f611 -Author: Pavel Machek -Date: Tue Jul 28 21:42:08 1998 +0000 - - Do not segfault on iface == NULL. - -commit a872b0f7dae38cfef574d0d3b30609e968cdf95b -Author: Pavel Machek -Date: Mon Jul 20 20:05:40 1998 +0000 - - Reversed buggy patch. - -commit c25e90efed6bc76d05370403839640ed05017506 -Author: Martin Mares -Date: Wed Jul 15 19:42:23 1998 +0000 - - Added comment explaining `now'. - -commit 1be52eea5777f082b02e0f484620e692017b16a2 -Author: Martin Mares -Date: Fri Jul 10 08:39:34 1998 +0000 - - Removed format specification attributes for log() and debug() until - GCC is fixed to handle custom formats. - -commit 786d0bb9e7c5db5104e3fd0ff7fdfbd1e19844ea -Author: Martin Mares -Date: Fri Jul 10 08:38:29 1998 +0000 - - Added ipa_class_mask() which guesses netmask for classful addressing. - For pure A/B/C class addresses it just returns the class netmask, for - subnets it tries to guess subnet mask. Please make sure the address - you pass to this function is really a valid host address (i.e., call - ipa_validate() first). - -commit 28a9a189d71ef3b05daa21d60277149edb8e98ad -Author: Martin Mares -Date: Fri Jul 10 08:32:18 1998 +0000 - - Replaced remaining references of clock_t by bird_clock_t. - -commit a103373f6147f27e4ac71e5903563e57ce52902c -Author: Pavel Machek -Date: Thu Jul 9 19:39:04 1998 +0000 - - Commiting RIP. RIP should somehow listen, will not reply. I needed to - commit it so that whole thing compiles. - -commit 86b0023033a25cdc6ab5480e03893f516184a2a5 -Author: Pavel Machek -Date: Thu Jul 9 19:37:39 1998 +0000 - - Making SIGUSR1 dump also all protocols. - -commit 87d2be86e5f8af0e2f01e7fb711bd282e29e376b -Author: Pavel Machek -Date: Thu Jul 9 19:36:52 1998 +0000 - - Adding proto_dump_all() function - -commit cf3527e2f4f1f4009fa332e6284b8904c24d0d43 -Author: Pavel Machek -Date: Thu Jul 9 19:36:05 1998 +0000 - - Adding MIN()/MAX() macros - -commit aea2dcabdc4ed80172ac8d4f5c4d31bc8607d1e7 -Author: Pavel Machek -Date: Thu Jul 9 19:35:23 1998 +0000 - - Adding walk list which permits you to delete entries. - -commit 962ba482fd7bba97cf13a96105503efff4dcb88a -Author: Martin Mares -Date: Wed Jun 17 14:36:02 1998 +0000 - - Use '%I' instead of dirty address printing hacks. - -commit d997534f65903e8078efe2f8ceb19941692598f7 -Author: Martin Mares -Date: Wed Jun 17 14:34:13 1998 +0000 - - Oops, forgot '%m'... - -commit 9556f225853748d5fee9a21e179b8fd5da2d3c42 -Author: Martin Mares -Date: Wed Jun 17 14:33:29 1998 +0000 - - debug() and log() use the new printf. Feel free to use new formatting - sequences for all output. - -commit ecacdfa434acf8af38ed8c1c0c8e71dab400b0f4 -Author: Martin Mares -Date: Wed Jun 17 14:31:36 1998 +0000 - - Added local version of sprintf (bsprintf and bvsprintf) offering few new - format strings: - - %I IP address - %#I IP address in hexadecimal - %1I IP address padded to full length - %m strerror(errno) - -commit 97d858c590998786d4d8a16b5c1f657800d74736 -Author: Martin Mares -Date: Wed Jun 17 14:28:46 1998 +0000 - - ip_ntop() and ip_ntox() for IPv4. - -commit 6b5e06abb57528a091fd171dff379634fa7c4dad -Author: Martin Mares -Date: Wed Jun 17 14:26:30 1998 +0000 - - Added function for converting of IP addresses to printable form. - -commit 620a355a15d65a8a2980f98b2de3e7d04c3dab62 -Author: Martin Mares -Date: Thu Jun 4 20:30:11 1998 +0000 - - Now sending IF_CHANGE_CREATE when a new interface appears and IF_CHANGE_UP - only if it's really up. - -commit 236d4eb8ce5dc894e97bcf1f561186d41c361cea -Author: Martin Mares -Date: Thu Jun 4 20:29:44 1998 +0000 - - FIB_WALK and friends are now slightly more friendly. - -commit 66e53309acceb0fd7e56faf54e1cc733a5477c67 -Author: Martin Mares -Date: Thu Jun 4 20:29:05 1998 +0000 - - Dumping of _static_ attributes implemented. - -commit b1e4f81485c15bacfff6040a1295bee31479a875 -Author: Martin Mares -Date: Thu Jun 4 20:28:43 1998 +0000 - - We have full interface routes now. - -commit 0cdbd3975a1ebc5e6705d23ed90388269c24b42e -Author: Martin Mares -Date: Thu Jun 4 20:28:19 1998 +0000 - - Handle route deletion without segfaults. A bit more debug dumps. - -commit 5331da6a4d0c77e70d134fa40b5061b00ab593b0 -Author: Martin Mares -Date: Thu Jun 4 20:27:49 1998 +0000 - - Fixed processing of timers. - -commit fd50083df499dd7aa4dd3eec97171003da300250 -Author: Martin Mares -Date: Wed Jun 3 08:43:44 1998 +0000 - - Killed socket debug code. Initialize config pool and protocols. - More to come later... - -commit c5ffa447598bc24cf1b674553bc4d3cc80a831d1 -Author: Martin Mares -Date: Wed Jun 3 08:42:16 1998 +0000 - - Skeleton of device route protocol. As it's tightly coupled with our kernel, - it sits here instead of `proto/dev'. - -commit d9f330c5ffe03c05b7e6541a06adac657f24407b -Author: Martin Mares -Date: Wed Jun 3 08:40:10 1998 +0000 - - Protocol hooks. All of them may be NULL. - -commit 7f4a39886c128bfc2e39987180eb1482ee04d553 -Author: Martin Mares -Date: Wed Jun 3 08:38:53 1998 +0000 - - Basic protocol operations. - -commit a5f1a60e0254871c3285aabde372f5a6790c19c3 -Author: Martin Mares -Date: Wed Jun 3 08:38:06 1998 +0000 - - Changed protocol declarations a bit. - -commit 33beab4f6c7904204a5116b4eb4cbed5f859f24a -Author: Martin Mares -Date: Wed Jun 3 08:36:34 1998 +0000 - - Added configuration pool. - -commit c5fd704e48333fb8e690d78a3be1303f6c2638c7 -Author: Martin Mares -Date: Wed Jun 3 08:35:40 1998 +0000 - - Protocols will reside in directory `proto'. - -commit 869c695998f0bc3b80d8500d88a53fb169c21bc1 -Author: Martin Mares -Date: Mon Jun 1 21:41:32 1998 +0000 - - Synced to new interface code. - -commit 4cc78c5082344f0d237a5cdfb05e53dfd04ffd8b -Author: Martin Mares -Date: Mon Jun 1 21:41:11 1998 +0000 - - - Rewrote whole interface logic. Removed support for multiple addresses per - interface since it makes much trouble everywhere. Instead, we understand - secondary addresses as subinterfaces. - - - In case interface addresses or basic flags change, we simply convert it - to a down/up sequence. - - - Implemented the universal neighbour cache. (Just forget what did previous - includes say of neighbour caching, this one is brand new.) - -commit 0fe3b28b68f10a32f3fe43e8221559a72be5ca28 -Author: Martin Mares -Date: Mon Jun 1 21:36:58 1998 +0000 - - Added ipa_xor() and ipa_in_net(). - -commit af847acc27978cf48721aafbacab70e48f42ede7 -Author: Martin Mares -Date: Tue May 26 21:46:38 1998 +0000 - - Whee, multicast sockets work! - - Implemented recurrent timers. - -commit 140f03410500420a4b44e62a98896a29c99a2b00 -Author: Martin Mares -Date: Tue May 26 21:44:54 1998 +0000 - - Added CONFIG_AUTO_ROUTES (automatic device route creation) and - CONFIG_ALL_MULTICAST (all interfaces capable of multicasting, not depending - on IFF_MULTICAST flag). - -commit fe82105e5dc2077c16da802f721160443e0c6fc2 -Author: Martin Mares -Date: Tue May 26 21:43:45 1998 +0000 - - Debug messages. - -commit 8a48ecb8b15e827f779d4b9fb080dff280b99872 -Author: Martin Mares -Date: Tue May 26 21:42:05 1998 +0000 - - Implemented scanning of network interfaces. Mostly very ugly code due to - terrible kernel interface (SIOGIFCONF and friends). - -commit b1487ee909ebd4cfc59f30d3678cb6667d4a72c8 -Author: Martin Mares -Date: Tue May 26 21:38:06 1998 +0000 - - Added generic functions for unaligned data access. - -commit ed68a5c6a4da7050995934adb07612dea1cf6644 -Author: Martin Mares -Date: Tue May 26 21:37:37 1998 +0000 - - Resource pools are now named. - -commit d5417b379f05541418fb4f1ac87100ba8106b0c6 -Author: Martin Mares -Date: Tue May 26 21:36:48 1998 +0000 - - Added ipa_opposite(). - -commit 5222c46ceb8035f2292c3a91f6ee85fbbed82c5e -Author: Martin Mares -Date: Tue May 26 21:36:17 1998 +0000 - - DBG now calls debug() instead of sending it to log(). - -commit d804db0dabf944495071fe6b62a9d836f78997af -Author: Martin Mares -Date: Sun May 24 15:00:48 1998 +0000 - - Added few socket declarations. - -commit b5d9ee5c878b41ffbc138be171d700992e9d78c7 -Author: Martin Mares -Date: Sun May 24 14:50:18 1998 +0000 - - Added UNIX implementation of both timers and sockets. Timers should work, - sockets were tested only in TCP mode. main.c now contains some test - cases for socket code. - -commit 6d45cf21be3f979ba4e8a1a5f557663618fadfb3 -Author: Martin Mares -Date: Sun May 24 14:49:14 1998 +0000 - - Added debug dump function, but it's still empty :( - -commit ded3ee6dddae06c1cabc3a2d34e3139eb0eb338f -Author: Martin Mares -Date: Sun May 24 14:48:52 1998 +0000 - - protos_init, not proto_init. - -commit b53499cdaa21994f5d92afed23fdf85c2b7fe134 -Author: Martin Mares -Date: Sun May 24 14:48:09 1998 +0000 - - Added interface index (used only by OS-dependent code since ifindexes itself - are OS-dependent). - -commit d4bc8dc00037e868771fb259a1e7b9ae5e92ed5a -Author: Martin Mares -Date: Sun May 24 14:46:20 1998 +0000 - - Staticized some variables and functions. - -commit 315aba32b3c5744a040331d653218d15a55455a5 -Author: Martin Mares -Date: Sun May 24 14:44:25 1998 +0000 - - Fixed path to includes. - -commit a2ccbb0b97c1eac3a68f01b7786822a66aaaefa2 -Author: Martin Mares -Date: Sun May 24 14:40:29 1998 +0000 - - Implemented timers. Using bird_clock_t for absolute time from now... - -commit 235562ca5ac1db2e2ea026bff42c8c2a898b44db -Author: Martin Mares -Date: Sun May 24 09:20:59 1998 +0000 - - Point-to-point links: added address of the opposite end. - -commit 480effedac0ae45a4f01ce32bac962db08ba5a3d -Author: Martin Mares -Date: Sun May 24 09:19:26 1998 +0000 - - Added declarations of all our socket functions. - -commit 2326b001d6f28e69b88c3c19795d8c0999f07db1 -Author: Martin Mares -Date: Wed May 20 11:54:33 1998 +0000 - - Added routing table and routing attribute code. - -commit 3994080eb1a86f085498bee1f36cbdb52b30191d -Author: Martin Mares -Date: Fri May 15 13:43:59 1998 +0000 - - Fixed path to includes. - -commit 25697773b529d80278679978b7416ca9c87e15e9 -Author: Martin Mares -Date: Fri May 15 07:56:13 1998 +0000 - - The library is now glued together from generic and OS-dependent parts - by the `mergedirs' script. Few more IP address manipulation functions - and some fixes. - -commit 62aa008abd627c6862310daf65ffd337a920bdbb -Author: Martin Mares -Date: Fri May 15 07:54:32 1998 +0000 - - Parts of routing table code. Data structure declarations should be - complete now. - -commit 18c8241a91bd9208879666f1a1a13f454e66d75b -Author: Martin Mares -Date: Sun May 3 16:43:39 1998 +0000 - - BIRD library: The story continues. - - Complete resource manages and IP address handling. - -commit a8b6038225d18155883e330c96b2bc2e44153e1e -Author: Martin Mares -Date: Sun May 3 16:42:45 1998 +0000 - - Next attempt on data structures... - -commit 6032aa6ade49545d7c8b6025cf6e6373eb7c910c -Author: Martin Mares -Date: Sun May 3 16:42:08 1998 +0000 - - Added new subdir for UNIX-dependent files. - - Now contains only functions for logging, but it will change soon. - -commit 1feea03e7463d8eaeb00d5df6c2cd3e8e20f2bcd -Author: Martin Mares -Date: Tue Apr 28 14:39:34 1998 +0000 - - Changed #include to #include "x/y" for our local includes, so that - gcc -MM can be used to separate them from the system ones. - - Added automatic generation of dependencies. - -commit c40e05a0dffa33a8724e56121a2b6dcdfa9183e0 -Author: Martin Mares -Date: Thu Apr 23 14:01:15 1998 +0000 - - Added IP address manipulation macros, interface declarations and logging. - -commit 481f69854a788bd2bea5c6938e038ec6e21c491b -Author: Martin Mares -Date: Thu Apr 23 08:09:39 1998 +0000 - - Added few route attributes. - -commit 58ef912c6babf1866193ab04674a5866dd761f13 -Author: Martin Mares -Date: Wed Apr 22 12:58:34 1998 +0000 - - First look at data structures. More to come tomorrow... - -commit b60f7489148d021cb541414b8788f795ec4378fa -Author: Martin Mares -Date: Fri Mar 20 18:30:55 1998 +0000 - - Added banner presented to KSVI. diff -Nru bird3-3.1.0/INSTALL bird3-3.1.7/INSTALL --- bird3-3.1.0/INSTALL 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/INSTALL 2026-06-09 09:02:34.000000000 +0000 @@ -54,3 +54,5 @@ - Linuxdoc-Tools - LaTeX + +$ make docs diff -Nru bird3-3.1.0/Makefile.in bird3-3.1.7/Makefile.in --- bird3-3.1.0/Makefile.in 2025-04-03 18:51:55.000000000 +0000 +++ bird3-3.1.7/Makefile.in 2026-06-09 09:02:34.000000000 +0000 @@ -43,7 +43,9 @@ exedir := @exedir@ # Find out which version we are actually building -VERSION := 3.1.0 +# This is rewritten by the release tools by hardcoded version +VERSION := $(strip $(shell $(srcdir)/tools/version)) + CFLAGS += -DBIRD_VERSION='"$(VERSION)"' ifeq ($(objdir),.) @@ -76,7 +78,7 @@ $(daemon): LIBS += $(DAEMON_LIBS) # Include directories -dirs := client conf doc filter lib nest test $(addprefix proto/,$(protocols)) @sysdep_dirs@ +dirs := client conf doc filter lib nest test gitlab $(addprefix proto/,$(protocols)) @sysdep_dirs@ # conf/Makefile declarations needed for all other modules conf-lex-targets := $(addprefix $(objdir)/conf/,cf-lex.o) @@ -158,7 +160,7 @@ $(client) $(daemon): $(E)echo LD $(LDFLAGS) -o $@ $^ $(LIBS) - +$(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) $(objdir)/sysdep/paths.h: Makefile $(E)echo GEN $@ @@ -173,13 +175,13 @@ $(tests_targets): %: %.o $(tests_objs) | prepare $(E)echo LD $(LDFLAGS) -o $@ $< "..." $(LIBS) - +$(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) + $(Q)$(CC) $(LDFLAGS) -o $@ $^ $(LIBS) # Hack to avoid problems with tests linking everything $(tests_targets): LIBS += $(DAEMON_LIBS) $(tests_targets_ok): %.ok: % - $(Q)$* 2>/dev/null && touch $*.ok + $(Q)$(if $(CROSSBUILD_ARCH),qemu-$(CROSSBUILD_ARCH) )$* 2>/dev/null && touch $*.ok $(if $(TEST_RETRY_VERBOSE), || ($(if $(CROSSBUILD_ARCH),qemu-$(CROSSBUILD_ARCH) )$* -ftv && false)) test: testsclean check check: tests tests_run @@ -218,6 +220,16 @@ $(INSTALL) -d $(DESTDIR)/$(docdir) $(INSTALL_DATA) $(objdir)/doc/{bird,prog}{,-*}.html $(DESTDIR)/$(docdir)/ +# Packaging +archive: + tools/make-archive + +deb: + tools/make-deb + +rpm: + tools/make-rpm + # Cleanup clean:: rm -f $(objdir)/sysdep/paths.h $(objdir)/nest/proto-build.c @@ -236,3 +248,42 @@ rm -rf * .dir-stamp rm -f config.log config.status configure Makefile endif + +# Help dump +help: + @echo "============================= BIRD make system =============================" + @echo + @echo "To build BIRD directly from sources, run './configure'. For more information" + @echo "about that process, run './configure --help'." + @echo "To build BIRD from Git repo, run 'autoreconf' before './configure'." + @echo + @echo "Source build options:" + @echo " make all Build BIRD binaries." + @echo " make test Build and run unit tests." + @echo " make docs Build documentation." + @echo + @echo "Partial build options:" + @echo " make obj/path/to/foo.o Build an object file, don't link." + @echo " make obj/path/to/foo.E Run only the C preprocessor." + @echo " make obj/path/to/foo.S Generate an assembler dump." + @echo + @echo "Development tools:" + @echo " make static-scan Run CLang static analyzer." + @echo " make tags Generate ETags cache." + @echo " make cscope Generate CScope cache." + @echo + @echo "Auxiliary commands:" + @echo " make help Show this help." + @echo " make clean Cleanup the build directory. Useful after" + @echo " major changes or branch switch." + @echo " make distclean Cleanup everything so that you will have to" + @echo " run './configure' again." + @echo " make gitlab-local Re-generate .gitlab-ci.yml without venv" + @echo " make gitlab-venv Re-generate .gitlab-ci.yml inside a tmp venv" + @echo + @echo "Distribution commands:" + @echo " make install Install binaries into the system." + @echo " make archive Create a release archive (TGZ). + @echo " This must exist for 'make deb' and 'make rpm'." + @echo " make deb Create a DEB package for the current system." + @echo " make rpm Create an RPM package for the current system." diff -Nru bird3-3.1.0/NEWS bird3-3.1.7/NEWS --- bird3-3.1.0/NEWS 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/NEWS 2026-06-09 09:02:34.000000000 +0000 @@ -1,3 +1,83 @@ +Version 3.1.7 (2026-06-09) + o BGP: Fix parsing labelled NLRIs with no next hop + o BGP: Fix cork behavior in collision with graceful restart + o BGP: Fix crash on early socket failure + o BGP: Fix hostentry handling of MPLS routes + o BMP/Nest: No refeed after listener or protocol restart + o BGP: Fix several issues in Flowspec handling + o BMP: Fix off-by-one buffer overflow + o MPLS: Fix crash on reconfiguring CS_DOWN channel + o OSPF: Fix handling of LLS data length field + o OSPF: Fix OOB read in authentication check + o OSPF: Fix OOB read in Router-LSA validation + o OSPF: Fix infinite loop in OSPF Graceful Restart + o Proto: Fix name pointer for interface subscription + o CLI/Proto: Lock show-commands + o Channel: Fix refeeds and reloads during graceful restart + o Export: Mitigate duplicate withdrawals + o Filters: Fix crash when setting gateway on recursive nexthops + o Filters: Fix path matching when AS path is too long. + o Filters: Fix T_BOOL and T_PAIR to be stored as u32 + o Table: Fix RCU double-anchor + o Route: Fix source locking debug mode + o RCU: Catch leaks sooner + o Build: Detect need for libatomic + +Version 3.1.6 (2026-04-01) + o ASPA: Fix downstream validation + o BMP: Fix route sending + o BGP: Fix route refresh after restart + o BGP: Fix restart behavior on reconfiguration + o Filters: Fix string attributes + o Filters: Fix ROA check autoreload reconfiguration + o Logging: Fix error handling + o Kernel: Fix graceful recovery + o Pipe: Fix rare collision bug + +Version 3.1.5 (2025-12-04) + o Babel, OSPF, RIP: Fix crash on interface reconfiguration + o RAdv: Fix flags for deprecated prefixes + o MRT: Fix dumps with layered attibutes + o MRT: Fix crash when protocol mrtdump configured without a specified file + o Filters: Fix undefined memory access in nexthop handling + o BSD: Fix export of non-multipath routes + o Conf: Fix thread groups. + o Conf: Implicit symbols should not generate warnings when overriding keywords + +Version 3.1.4 (2025-09-22) + o BGP: Fixed crash on Notification with a message + o BGP: Fixed invalid memory access in pending TX flush + o BGP: Fixed a rare bug with listening socket delay + o Pipe: Disabled statisticts for stopping pipe + o Hash: Read-only assertions + o ROA Aggregator: Fixed crash on multiwithdraw + o Protocol: Fixed broken state announcements + +Version 3.1.3 (2025-09-03) + o ASPA check fix for AS_SET + +Version 3.1.2 (2025-05-26) + o BGP: Fix warnings for roa_check + o MRT: Fix typo in assert + o ASPA: Fix table subscriptions + o ASPA: Fix filter parse crash + o Table: Fix several race conditions + o Shutdown: Do not export routes + o Logs: Fix logs reopening on configure undo + +Version 3.1.1 (2025-05-13) + o Makefile: Fix accidentally added dry-run markers + o BGP: Fix route refresh behavior + o BGP: Fix reconfiguration of import behavior modifiers + o BGP: Fix crash on too long export + o Conf: Fix invalid check in text_or_ipa grammar + o Netlink: Fix FreeBSD build error + o Fix use-after-free in thread group reconfiguration + o Fix CentOS 7 and NetBSD build + o Fix several crashes in table export (already fixed in 3.0.2) + o Fix crash on graceful restart of a channel with ROA subscription + o Lots of internal tooling and CI updates + Version 3.1.0 (2025-04-01) o CLI v2 compatibility layer for show route o Thread configuration rework @@ -25,14 +105,6 @@ o Reduced route attribute normalization heap bloating o Merged 2.16.1 -Version 2.16.1 (2025-01-10) - o ASPA: fixed parser bug in static protocol - o ASPA: fixed static protocol reconfiguration - o Babel: fixed seqno comparison - o BSD: fixed onlink flag assumption with Netlink - o Fixed memory alignment issues - o Fixed possible rte src collisions in L3VPN - Version 3.0.0 (2024-12-17) - from 2.16 o Multithreaded execution @@ -89,6 +161,38 @@ o Lots of refactoring o Bugfixes and improvements as they came along +Version 2.17.1 (2025-04-29) + o BSD: Fix build on NetBSD + o BGP: Fix crash when incoming connection for disabled protocol arrives + o Documentation fixes + +Version 2.17 (2025-04-01) + o Babel: next hop control for IPv4 + o BGP: link-local next hop format configuration + o TCP-AO implementation for Linux + +Version 2.16.2 (2025-04-01) + o BFD: password reconfiguration crash fix + o L3VPN attribute fix + o Table removal rare crash fix + o Logging minor fix + +Version 2.16.1 (2025-01-10) + o ASPA: fixed parser bug in static protocol + o ASPA: fixed static protocol reconfiguration + o Babel: fixed seqno comparison + o BSD: fixed onlink flag assumption with Netlink + o Fixed memory alignment issues + o Fixed possible rte src collisions in L3VPN + +Version 2.16.1 (2025-01-10) + o ASPA: fixed parser bug in static protocol + o ASPA: fixed static protocol reconfiguration + o Babel: fixed seqno comparison + o BSD: fixed onlink flag assumption with Netlink + o Fixed memory alignment issues + o Fixed possible rte src collisions in L3VPN + Version 2.16 (2024-12-04) o BFD: Set password per session o BFD: Accept zero checksum for IPv6-UDP diff -Nru bird3-3.1.0/README bird3-3.1.7/README --- bird3-3.1.0/README 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/README 2026-06-09 09:02:34.000000000 +0000 @@ -1,20 +1,19 @@ BIRD Internet Routing Daemon - Home page http://bird.network.cz/ + Home page http://bird.nic.cz/ Mailing list bird-users@network.cz (c) 1998--2008 Martin Mares (c) 1998--2000 Pavel Machek (c) 1998--2008 Ondrej Filip - (c) 2009--2019 CZ.NIC z.s.p.o. + (c) 2009--now 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. +BIRD is a dynamic IP routing daemon with full support of most 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 ================== @@ -43,24 +42,26 @@ =================== 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 official binary repositories for Debian and Ubuntu + https://pkg.labs.nic.cz/doc/?project=bird o From source code of the latest stable release version - ftp://bird.network.cz/pub/bird/ + https://bird.nic.cz/get-bird/ o From current development code in Git repository - https://gitlab.labs.nic.cz/labs/bird/ + https://gitlab.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/ +Online documentation is available at https://bird.nic.cz/doc/latest/. + +You can also build separate HTML files and PDF from the doc directory by +`make docs' and install it by `make install-docs', but you'll need SGMLtools +and LaTeX to be installed on your machine. + +You can also download a neatly formatted PDF version (packed in TGZ) +from the online documentation page at https://bird.nic.cz/doc/latest/ User support ============ @@ -85,22 +86,21 @@ Please see the CONTRIBUTING.md file to find how to contribute to BIRD. -Licence +License ======= -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 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 +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 +along with this program; if not, see . History ======= diff -Nru bird3-3.1.0/VERSION bird3-3.1.7/VERSION --- bird3-3.1.0/VERSION 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/VERSION 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1 @@ +3.1.7 diff -Nru bird3-3.1.0/aclocal.m4 bird3-3.1.7/aclocal.m4 --- bird3-3.1.0/aclocal.m4 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/aclocal.m4 2026-06-09 09:02:34.000000000 +0000 @@ -105,6 +105,80 @@ CFLAGS="$bird_tmp_cflags" ]) +m4_define([libatomic_test_type],[ + do { + _Atomic $1 var_$1; + $1 loc_$1 = atomic_load_explicit(&var_$1, $2); + atomic_store_explicit(&var_$1, loc_$1, $3); + loc_$1 = atomic_exchange_explicit(&var_$1, loc_$1, $4); + loc_$1 = atomic_fetch_add_explicit(&var_$1, loc_$1, $4); + loc_$1 = atomic_fetch_sub_explicit(&var_$1, loc_$1, $4); + loc_$1 = atomic_fetch_and_explicit(&var_$1, loc_$1, $4); + loc_$1 = atomic_fetch_or_explicit(&var_$1, loc_$1, $4); + atomic_compare_exchange_strong_explicit(&var_$1, &loc_$1, 42, $4, $2); + } while (0); +]) + +m4_define([libatomic_test_type_orders],[ +libatomic_test_type($1, memory_order_relaxed, memory_order_relaxed, memory_order_relaxed) +libatomic_test_type($1, memory_order_acquire, memory_order_relaxed, memory_order_acquire) +libatomic_test_type($1, memory_order_relaxed, memory_order_release, memory_order_release) +libatomic_test_type($1, memory_order_acquire, memory_order_release, memory_order_acq_rel) +]) + +m4_define([libatomic_test_signs],[ +libatomic_test_type_orders(uint$1[]_t) +libatomic_test_type_orders(int$1[]_t) +]) + +m4_define([libatomic_test_program],[ +libatomic_test_signs(8) +libatomic_test_signs(16) +libatomic_test_signs(32) +libatomic_test_signs(64) +]) + +AC_DEFUN([BIRD_CHECK_LIBATOMIC], +[ + AC_CACHE_CHECK( + [how atomics are implemented], + [bird_cv_lib_atomic], + [ + AC_LINK_IFELSE( + [ + AC_LANG_PROGRAM( + [ + #include + #include + ], + libatomic_test_program + ) + ], + [bird_cv_lib_atomic=native], + [ + bird_tmp_libs="$LIBS" + LIBS="$LIBS -latomic" + + AC_LINK_IFELSE([ + AC_LANG_PROGRAM( + [ + #include + #include + ], + libatomic_test_program + ) + ], + [bird_cv_lib_atomic=-latomic], + [bird_cv_lib_atomic=no] + ) + + LIBS="$bird_tmp_libs" + ] + ) + ] + ) +]) + AC_DEFUN([BIRD_CHECK_MALLOPT], [ AC_CACHE_CHECK( diff -Nru bird3-3.1.0/bird.conf bird3-3.1.7/bird.conf --- bird3-3.1.0/bird.conf 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/bird.conf 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * This is a simple example configuration file with no aim for completeness. + * See documentation for full description. + */ + +# Router ID in IPv4 format +router id 62.168.0.1; + +# Load device information from kernel. +protocol device {} + +# Generate direct routes for interfaces. Useful on BSD. +protocol direct { + ipv4; + disabled; +} + +protocol direct { + ipv6; + disabled; +} + +# Feed routes to kernel FIB +protocol kernel { + ipv4 { export all; import all; }; + learn; # Learn all routes from the kernel +# scan time 10; # Scan kernel tables every 10 seconds +} + +protocol kernel { + ipv6 { import all; }; + learn; +} + +# Static route feed +protocol static { + ipv4 { export all; }; + route 10.0.0.0/24 via 55.55.55.44; + route 10.10.0.0/16 blackhole; + route 10.20.0.0/20 unreachable; + route 10.30.50.0/28 prohibit; +} + +protocol static { + ipv6 { export all; }; + route 2001:db8:1::/48 via 5555::6666; + route 2001:db8:2::/48 blackhole; + route 2001:db8:3::/48 prohibit; + route 2001:db8:4::/48 unreachable; +} + +protocol rip { + ipv4; +} + +protocol rip ng { + ipv6; +} diff -Nru bird3-3.1.0/client/commands.c bird3-3.1.7/client/commands.c --- bird3-3.1.0/client/commands.c 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/client/commands.c 2026-06-09 09:02:34.000000000 +0000 @@ -56,6 +56,8 @@ new = &cmd_root; while (*c) { + /* Walk through the keywords in the command from start of the command + * to its end */ char *d = c; while (*c && !isspace_(*c)) c++; @@ -65,9 +67,12 @@ break; if (!new) { + /* If new keyword is not stored yet */ int size = sizeof(struct cmd_node) + c-d; new = malloc(size); bzero(new, size); + /* Making this keyword child of the previons + * keyword in the command */ *old->plastson = new; old->plastson = &new->sibling; new->plastson = &new->son; @@ -79,6 +84,8 @@ c++; } + /* In new there is now stored the last keyword in command. + * Only this command is going to contain cmd and help */ if (cmd->is_real_cmd) new->cmd = cmd; else @@ -99,12 +106,23 @@ } static void -cmd_display_help(struct cmd_info *c1, struct cmd_info *c2) +cmd_display_help(struct cmd_node *m) { - if (c1) - cmd_do_display_help(c1); - else if (c2) - cmd_do_display_help(c2); + /* Go through children of the base keyword. Each keyword has its own node. */ + for (struct cmd_node *mm = m->son; mm; mm = mm->sibling) + { + /* Print hints for all of the children of given keyword. */ + if (mm->help) + cmd_do_display_help(mm->help); + else if (mm->cmd) + cmd_do_display_help(mm->cmd); + else + { + /* This child does not contain hint, let's try its children instead + * (this child might be first part of multi keyword command) */ + cmd_display_help(mm); + } + } } static struct cmd_node * @@ -141,7 +159,7 @@ for(m=root->son; m; m=m->sibling) if (m->len > len && !memcmp(m->token, cmd, len)) - cmd_display_help(m->help, m->cmd); + cmd_display_help(m); } void @@ -173,14 +191,15 @@ break; n = m; } - cmd_display_help(n->cmd, NULL); + + if (n && n->cmd) + cmd_do_display_help(n->cmd); /* Currently no help for options */ if (n->final) return; - for (m=n->son; m; m=m->sibling) - cmd_display_help(m->help, m->cmd); + cmd_display_help(n); } static int diff -Nru bird3-3.1.0/conf/conf.c bird3-3.1.7/conf/conf.c --- bird3-3.1.0/conf/conf.c 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/conf/conf.c 2026-06-09 09:02:34.000000000 +0000 @@ -259,7 +259,8 @@ watchdog_warning, watchdog_timeout, gr_wait, - hostname + hostname, + shutdown ); #undef COPY diff -Nru bird3-3.1.0/conf/conf.h bird3-3.1.7/conf/conf.h --- bird3-3.1.0/conf/conf.h 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/conf/conf.h 2026-06-09 09:02:34.000000000 +0000 @@ -99,8 +99,12 @@ u32 watchdog_timeout; /* Watchdog timeout (in seconds, 0 = disabled) */ struct thread_group *default_thread_group; /* Default thread group if not specified otherwise */ + + int shutdown; /* Shutdown in progress */ }; +#define SHUTTING_DOWN atomic_load_explicit(&global_runtime, memory_order_acquire)->shutdown + extern struct global_runtime * _Atomic global_runtime; /* Please don't use these variables in protocols. Use proto_config->global instead. */ @@ -293,7 +297,17 @@ * scope, it's the same @sym as passed to the function. */ #define cf_define_symbol(conf_, osym_, type_, var_, def_) ({ \ - struct symbol *sym_ = cf_localize_symbol(conf_, osym_); \ + struct symbol *sym_ = osym_; \ + if (sym_->class == SYM_KEYWORD) cf_warn("Symbol '%s' overrides existing keyword", sym_->name); \ + sym_ = cf_localize_symbol(conf_, sym_); \ + sym_->class = type_; \ + sym_->var_ = def_; \ + sym_; }) + +#define cf_implicit_symbol(conf_, name_, type_, var_, def_) ({ \ + struct symbol *sym_ = cf_get_symbol(conf_, name_); \ + if (sym_->class && sym_->class != SYM_KEYWORD) bug("Implicit symbol '%s' overrides another one", sym_->name); \ + sym_ = cf_localize_symbol(conf_, sym_); \ sym_->class = type_; \ sym_->var_ = def_; \ sym_; }) diff -Nru bird3-3.1.0/conf/confbase.Y bird3-3.1.7/conf/confbase.Y --- bird3-3.1.0/conf/confbase.Y 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/conf/confbase.Y 2026-06-09 09:02:34.000000000 +0000 @@ -461,8 +461,8 @@ } | '(' term ')' { $$ = *cf_eval($2, T_VOID); - if (($$.type != T_BYTESTRING) && ($$.type != T_STRING)) - cf_error("Bytestring or string value expected"); + if (($$.type != T_STRING) && ($$.type != T_IP)) + cf_error("String or IP value expected"); } ; diff -Nru bird3-3.1.0/configure bird3-3.1.7/configure --- bird3-3.1.0/configure 2025-04-03 18:51:55.000000000 +0000 +++ bird3-3.1.7/configure 1970-01-01 00:00:00.000000000 +0000 @@ -1,8634 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.72. -# -# -# Copyright (C) 1992-1996, 1998-2017, 2020-2023 Free Software Foundation, -# Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - -# Use a proper internal environment variable to ensure we don't fall - # into an infinite loop, continuously re-executing ourselves. - if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then - _as_can_reexec=no; export _as_can_reexec; - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 - fi - # We don't want this to propagate to other subprocesses. - { _as_can_reexec=; unset _as_can_reexec;} -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test \${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else case e in #( - e) case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ) -then : - -else case e in #( - e) exitcode=1; echo positional parameters were not saved. ;; -esac -fi -test x\$exitcode = x0 || exit 1 -blah=\$(echo \$(echo blah)) -test x\"\$blah\" = xblah || exit 1 -test -x / || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1" - if (eval "$as_required") 2>/dev/null -then : - as_have_required=yes -else case e in #( - e) as_have_required=no ;; -esac -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null -then : - -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - as_run=a "$as_shell" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$as_shell as_have_required=yes - if as_run=a "$as_shell" -c "$as_bourne_compatible""$as_suggested" 2>/dev/null -then : - break 2 -fi -fi - done;; - esac - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - as_run=a "$SHELL" -c "$as_bourne_compatible""$as_required" 2>/dev/null -then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi ;; -esac -fi - - - if test "x$CONFIG_SHELL" != x -then : - export CONFIG_SHELL - # We cannot yet assume a decent shell, so we have to provide a -# neutralization value for shells without unset; and this also -# works around shells that cannot unset nonexistent variables. -# Preserve -v and -x to the replacement shell. -BASH_ENV=/dev/null -ENV=/dev/null -(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV -case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; -esac -exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} -# Admittedly, this is quite paranoid, since all the known shells bail -# out after a failed 'exec'. -printf "%s\n" "$0: could not re-execute with $CONFIG_SHELL" >&2 -exit 255 -fi - - if test x$as_have_required = xno -then : - printf "%s\n" "$0: This script requires a shell more modern than all" - printf "%s\n" "$0: the shells that I found on your system." - if test ${ZSH_VERSION+y} ; then - printf "%s\n" "$0: In particular, zsh $ZSH_VERSION has bugs and should" - printf "%s\n" "$0: be upgraded to zsh 4.3.4 or later." - else - printf "%s\n" "$0: Please tell bug-autoconf@gnu.org about your system, -$0: including any error possibly output before this -$0: message. Then install a modern shell, or manually run -$0: the script under such a shell if you do have one." - fi - exit 1 -fi ;; -esac -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - t clear - :clear - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { printf "%s\n" "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # If we had to re-execute with $CONFIG_SHELL, we're ensured to have - # already done that, so ensure we don't try to do so again and fall - # in an infinite loop. This has already happened in practice. - _as_can_reexec=no; export _as_can_reexec - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='' -PACKAGE_TARNAME='' -PACKAGE_VERSION='' -PACKAGE_STRING='' -PACKAGE_BUGREPORT='' -PACKAGE_URL='' - -ac_unique_file="conf/confbase.Y" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_STDIO_H -# include -#endif -#ifdef HAVE_STDLIB_H -# include -#endif -#ifdef HAVE_STRING_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_header_c_list= -ac_subst_vars='LTLIBOBJS -LIBOBJS -CLIENT_LIBS -CLIENT -protocols -DAEMON_LIBS -iproutedir -sysdep_dirs -BISONFLAGS -M4FLAGS -RANLIB -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -CPP -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -CONTROL_SOCKET -CONFIG_FILE -srcdir -exedir -objdir -PANDOC -M4 -BISON -FLEX -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -runstatedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_client -enable_debug -enable_debug_generated -enable_debug_expensive -enable_memcheck -enable_compact_tries -enable_libssh -enable_mpls_kernel -with_protocols -with_sysconfig -with_runtimedir -with_iproutedir -' - ac_precious_vars='build_alias -host_alias -target_alias -FLEX -BISON -M4 -PANDOC -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -runstatedir='${localstatedir}/run' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -runstatedir | --runstatedir | --runstatedi | --runstated \ - | --runstate | --runstat | --runsta | --runst | --runs \ - | --run | --ru | --r) - ac_prev=runstatedir ;; - -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ - | --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \ - | --run=* | --ru=* | --r=*) - runstatedir=$ac_optarg ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: '$ac_useropt'" - ac_useropt_orig=$ac_useropt - ac_useropt=`printf "%s\n" "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: '$ac_option' -Try '$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: '$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - printf "%s\n" "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - printf "%s\n" "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir runstatedir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: '$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but 'cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -'configure' configures this package to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print 'checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for '--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or '..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, 'make install' will install all the files in -'$ac_default_prefix/bin', '$ac_default_prefix/lib' etc. You can specify -an installation prefix other than '$ac_default_prefix' using '--prefix', -for instance '--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-client enable building of BIRD client [yes] - --enable-debug enable internal debugging routines [no] - --enable-debug-generated - enable this to abstain from generating #line [no] - --enable-debug-expensive - enable expensive consistency checks (implies - --enable-debug) [no] - --enable-memcheck check memory allocations when debugging [yes] - --enable-compact-tries use 4-way tries instead of 16-way ones [no] - --enable-libssh enable LibSSH support in RPKI [try] - --enable-mpls-kernel enable MPLS support in kernel protocol [try] - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-protocols=LIST include specified routing protocols [all] - --with-sysconfig=FILE use specified BIRD system configuration file - - --with-runtimedir=PATH run-state data, obsolete variant of --runstatedir - --with-iproutedir=PATH path to iproute2 config files [/etc/iproute2] - -Some influential environment variables: - FLEX location of the Flex program - BISON location of the Bison program - M4 location of the M4 program - PANDOC location of the Pandoc program - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by 'configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to the package provider. -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for configure.gnu first; this name is used for a wrapper for - # Metaconfig's "Configure" on case-insensitive file systems. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - printf "%s\n" "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -configure -generated by GNU Autoconf 2.72 - -Copyright (C) 2023 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest.beam conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - test -x conftest$ac_exeext - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 ;; -esac -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -printf %s "checking for $2... " >&6; } -if eval test \${$3+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (void); below. */ - -#include -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (void); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main (void) -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - eval "$3=yes" -else case e in #( - e) eval "$3=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$3 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_c_check_member LINENO AGGR MEMBER VAR INCLUDES -# ---------------------------------------------------- -# Tries to find if the field MEMBER exists in type AGGR, after including -# INCLUDES, setting cache variable VAR accordingly. -ac_fn_c_check_member () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $2.$3" >&5 -printf %s "checking for $2.$3... " >&6; } -if eval test \${$4+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main (void) -{ -static $2 ac_aggr; -if (ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$5 -int -main (void) -{ -static $2 ac_aggr; -if (sizeof ac_aggr.$3) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - eval "$4=yes" -else case e in #( - e) eval "$4=no" ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -eval ac_res=\$$4 - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -printf "%s\n" "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_member - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to run conftest.$ac_ext, and return whether this succeeded. Assumes that -# executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; } -then : - ac_retval=0 -else case e in #( - e) printf "%s\n" "$as_me: program exited with status $ac_status" >&5 - printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status ;; -esac -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run -ac_configure_args_raw= -for ac_arg -do - case $ac_arg in - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append ac_configure_args_raw " '$ac_arg'" -done - -case $ac_configure_args_raw in - *$as_nl*) - ac_safe_unquote= ;; - *) - ac_unsafe_z='|&;<>()$`\\"*?[ '' ' # This string ends in space, tab. - ac_unsafe_a="$ac_unsafe_z#~" - ac_safe_unquote="s/ '\\([^$ac_unsafe_a][^$ac_unsafe_z]*\\)'/ \\1/g" - ac_configure_args_raw=` printf "%s\n" "$ac_configure_args_raw" | sed "$ac_safe_unquote"`;; -esac - -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by $as_me, which was -generated by GNU Autoconf 2.72. Invocation command line was - - $ $0$ac_configure_args_raw - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - printf "%s\n" "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`printf "%s\n" "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Sanitize IFS. - IFS=" "" $as_nl" - # Save into config.log some information that might help in debugging. - { - echo - - printf "%s\n" "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - printf "%s\n" "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - printf "%s\n" "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`printf "%s\n" "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - printf "%s\n" "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - printf "%s\n" "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - printf "%s\n" "$as_me: caught signal $ac_signal" - printf "%s\n" "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -printf "%s\n" "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -printf "%s\n" "#define PACKAGE_NAME \"$PACKAGE_NAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_TARNAME \"$PACKAGE_TARNAME\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_VERSION \"$PACKAGE_VERSION\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_STRING \"$PACKAGE_STRING\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_BUGREPORT \"$PACKAGE_BUGREPORT\"" >>confdefs.h - -printf "%s\n" "#define PACKAGE_URL \"$PACKAGE_URL\"" >>confdefs.h - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -if test -n "$CONFIG_SITE"; then - ac_site_files="$CONFIG_SITE" -elif test "x$prefix" != xNONE; then - ac_site_files="$prefix/share/config.site $prefix/etc/config.site" -else - ac_site_files="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" -fi - -for ac_site_file in $ac_site_files -do - case $ac_site_file in #( - */*) : - ;; #( - *) : - ac_site_file=./$ac_site_file ;; -esac - if test -f "$ac_site_file" && test -r "$ac_site_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -printf "%s\n" "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See 'config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -printf "%s\n" "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -printf "%s\n" "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Test code for whether the C compiler supports C89 (global declarations) -ac_c_conftest_c89_globals=' -/* Does the compiler advertise C89 conformance? - Do not test the value of __STDC__, because some compilers set it to 0 - while being otherwise adequately conformant. */ -#if !defined __STDC__ -# error "Compiler does not advertise C89 conformance" -#endif - -#include -#include -struct stat; -/* Most of the following tests are stolen from RCS 5.7 src/conf.sh. */ -struct buf { int x; }; -struct buf * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (char **p, int i) -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* C89 style stringification. */ -#define noexpand_stringify(a) #a -const char *stringified = noexpand_stringify(arbitrary+token=sequence); - -/* C89 style token pasting. Exercises some of the corner cases that - e.g. old MSVC gets wrong, but not very hard. */ -#define noexpand_concat(a,b) a##b -#define expand_concat(a,b) noexpand_concat(a,b) -extern int vA; -extern int vbee; -#define aye A -#define bee B -int *pvA = &expand_concat(v,aye); -int *pvbee = &noexpand_concat(v,bee); - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not \xHH hex character constants. - These do not provoke an error unfortunately, instead are silently treated - as an "x". The following induces an error, until -std is added to get - proper ANSI mode. Curiously \x00 != x always comes out true, for an - array size at least. It is necessary to write \x00 == 0 to get something - that is true only with -std. */ -int osf4_cc_array ['\''\x00'\'' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) '\''x'\'' -int xlc6_cc_array[FOO(a) == '\''x'\'' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, int *(*)(struct buf *, struct stat *, int), - int, int);' - -# Test code for whether the C compiler supports C89 (body of main). -ac_c_conftest_c89_main=' -ok |= (argc == 0 || f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]); -' - -# Test code for whether the C compiler supports C99 (global declarations) -ac_c_conftest_c99_globals=' -/* Does the compiler advertise C99 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 199901L -# error "Compiler does not advertise C99 conformance" -#endif - -// See if C++-style comments work. - -#include -extern int puts (const char *); -extern int printf (const char *, ...); -extern int dprintf (int, const char *, ...); -extern void *malloc (size_t); -extern void free (void *); - -// Check varargs macros. These examples are taken from C99 6.10.3.5. -// dprintf is used instead of fprintf to avoid needing to declare -// FILE and stderr. -#define debug(...) dprintf (2, __VA_ARGS__) -#define showlist(...) puts (#__VA_ARGS__) -#define report(test,...) ((test) ? puts (#test) : printf (__VA_ARGS__)) -static void -test_varargs_macros (void) -{ - int x = 1234; - int y = 5678; - debug ("Flag"); - debug ("X = %d\n", x); - showlist (The first, second, and third items.); - report (x>y, "x is %d but y is %d", x, y); -} - -// Check long long types. -#define BIG64 18446744073709551615ull -#define BIG32 4294967295ul -#define BIG_OK (BIG64 / BIG32 == 4294967297ull && BIG64 % BIG32 == 0) -#if !BIG_OK - #error "your preprocessor is broken" -#endif -#if BIG_OK -#else - #error "your preprocessor is broken" -#endif -static long long int bignum = -9223372036854775807LL; -static unsigned long long int ubignum = BIG64; - -struct incomplete_array -{ - int datasize; - double data[]; -}; - -struct named_init { - int number; - const wchar_t *name; - double average; -}; - -typedef const char *ccp; - -static inline int -test_restrict (ccp restrict text) -{ - // Iterate through items via the restricted pointer. - // Also check for declarations in for loops. - for (unsigned int i = 0; *(text+i) != '\''\0'\''; ++i) - continue; - return 0; -} - -// Check varargs and va_copy. -static bool -test_varargs (const char *format, ...) -{ - va_list args; - va_start (args, format); - va_list args_copy; - va_copy (args_copy, args); - - const char *str = ""; - int number = 0; - float fnumber = 0; - - while (*format) - { - switch (*format++) - { - case '\''s'\'': // string - str = va_arg (args_copy, const char *); - break; - case '\''d'\'': // int - number = va_arg (args_copy, int); - break; - case '\''f'\'': // float - fnumber = va_arg (args_copy, double); - break; - default: - break; - } - } - va_end (args_copy); - va_end (args); - - return *str && number && fnumber; -} -' - -# Test code for whether the C compiler supports C99 (body of main). -ac_c_conftest_c99_main=' - // Check bool. - _Bool success = false; - success |= (argc != 0); - - // Check restrict. - if (test_restrict ("String literal") == 0) - success = true; - char *restrict newvar = "Another string"; - - // Check varargs. - success &= test_varargs ("s, d'\'' f .", "string", 65, 34.234); - test_varargs_macros (); - - // Check flexible array members. - struct incomplete_array *ia = - malloc (sizeof (struct incomplete_array) + (sizeof (double) * 10)); - ia->datasize = 10; - for (int i = 0; i < ia->datasize; ++i) - ia->data[i] = i * 1.234; - // Work around memory leak warnings. - free (ia); - - // Check named initializers. - struct named_init ni = { - .number = 34, - .name = L"Test wide string", - .average = 543.34343, - }; - - ni.number = 58; - - int dynamic_array[ni.number]; - dynamic_array[0] = argv[0][0]; - dynamic_array[ni.number - 1] = 543; - - // work around unused variable warnings - ok |= (!success || bignum == 0LL || ubignum == 0uLL || newvar[0] == '\''x'\'' - || dynamic_array[ni.number - 1] != 543); -' - -# Test code for whether the C compiler supports C11 (global declarations) -ac_c_conftest_c11_globals=' -/* Does the compiler advertise C11 conformance? */ -#if !defined __STDC_VERSION__ || __STDC_VERSION__ < 201112L -# error "Compiler does not advertise C11 conformance" -#endif - -// Check _Alignas. -char _Alignas (double) aligned_as_double; -char _Alignas (0) no_special_alignment; -extern char aligned_as_int; -char _Alignas (0) _Alignas (int) aligned_as_int; - -// Check _Alignof. -enum -{ - int_alignment = _Alignof (int), - int_array_alignment = _Alignof (int[100]), - char_alignment = _Alignof (char) -}; -_Static_assert (0 < -_Alignof (int), "_Alignof is signed"); - -// Check _Noreturn. -int _Noreturn does_not_return (void) { for (;;) continue; } - -// Check _Static_assert. -struct test_static_assert -{ - int x; - _Static_assert (sizeof (int) <= sizeof (long int), - "_Static_assert does not work in struct"); - long int y; -}; - -// Check UTF-8 literals. -#define u8 syntax error! -char const utf8_literal[] = u8"happens to be ASCII" "another string"; - -// Check duplicate typedefs. -typedef long *long_ptr; -typedef long int *long_ptr; -typedef long_ptr long_ptr; - -// Anonymous structures and unions -- taken from C11 6.7.2.1 Example 1. -struct anonymous -{ - union { - struct { int i; int j; }; - struct { int k; long int l; } w; - }; - int m; -} v1; -' - -# Test code for whether the C compiler supports C11 (body of main). -ac_c_conftest_c11_main=' - _Static_assert ((offsetof (struct anonymous, i) - == offsetof (struct anonymous, w.k)), - "Anonymous union alignment botch"); - v1.i = 2; - v1.w.k = 5; - ok |= v1.i != 5; -' - -# Test code for whether the C compiler supports C11 (complete). -ac_c_conftest_c11_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} -${ac_c_conftest_c11_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - ${ac_c_conftest_c11_main} - return ok; -} -" - -# Test code for whether the C compiler supports C99 (complete). -ac_c_conftest_c99_program="${ac_c_conftest_c89_globals} -${ac_c_conftest_c99_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - ${ac_c_conftest_c99_main} - return ok; -} -" - -# Test code for whether the C compiler supports C89 (complete). -ac_c_conftest_c89_program="${ac_c_conftest_c89_globals} - -int -main (int argc, char **argv) -{ - int ok = 0; - ${ac_c_conftest_c89_main} - return ok; -} -" - -as_fn_append ac_header_c_list " stdio.h stdio_h HAVE_STDIO_H" -as_fn_append ac_header_c_list " stdlib.h stdlib_h HAVE_STDLIB_H" -as_fn_append ac_header_c_list " string.h string_h HAVE_STRING_H" -as_fn_append ac_header_c_list " inttypes.h inttypes_h HAVE_INTTYPES_H" -as_fn_append ac_header_c_list " stdint.h stdint_h HAVE_STDINT_H" -as_fn_append ac_header_c_list " strings.h strings_h HAVE_STRINGS_H" -as_fn_append ac_header_c_list " sys/stat.h sys_stat_h HAVE_SYS_STAT_H" -as_fn_append ac_header_c_list " sys/types.h sys_types_h HAVE_SYS_TYPES_H" -as_fn_append ac_header_c_list " unistd.h unistd_h HAVE_UNISTD_H" -as_fn_append ac_header_c_list " alloca.h alloca_h HAVE_ALLOCA_H" -as_fn_append ac_header_c_list " syslog.h syslog_h HAVE_SYSLOG_H" -as_fn_append ac_header_c_list " stdatomic.h stdatomic_h HAVE_STDATOMIC_H" - -# Auxiliary files required by this configure script. -ac_aux_files="install-sh config.guess config.sub" - -# Locations in which to look for auxiliary files. -ac_aux_dir_candidates="${srcdir}/tools" - -# Search for a directory containing all of the required auxiliary files, -# $ac_aux_files, from the $PATH-style list $ac_aux_dir_candidates. -# If we don't find one directory that contains all the files we need, -# we report the set of missing files from the *first* directory in -# $ac_aux_dir_candidates and give up. -ac_missing_aux_files="" -ac_first_candidate=: -printf "%s\n" "$as_me:${as_lineno-$LINENO}: looking for aux files: $ac_aux_files" >&5 -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in $ac_aux_dir_candidates -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - as_found=: - - printf "%s\n" "$as_me:${as_lineno-$LINENO}: trying $as_dir" >&5 - ac_aux_dir_found=yes - ac_install_sh= - for ac_aux in $ac_aux_files - do - # As a special case, if "install-sh" is required, that requirement - # can be satisfied by any of "install-sh", "install.sh", or "shtool", - # and $ac_install_sh is set appropriately for whichever one is found. - if test x"$ac_aux" = x"install-sh" - then - if test -f "${as_dir}install-sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install-sh found" >&5 - ac_install_sh="${as_dir}install-sh -c" - elif test -f "${as_dir}install.sh"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}install.sh found" >&5 - ac_install_sh="${as_dir}install.sh -c" - elif test -f "${as_dir}shtool"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}shtool found" >&5 - ac_install_sh="${as_dir}shtool install -c" - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} install-sh" - else - break - fi - fi - else - if test -f "${as_dir}${ac_aux}"; then - printf "%s\n" "$as_me:${as_lineno-$LINENO}: ${as_dir}${ac_aux} found" >&5 - else - ac_aux_dir_found=no - if $ac_first_candidate; then - ac_missing_aux_files="${ac_missing_aux_files} ${ac_aux}" - else - break - fi - fi - fi - done - if test "$ac_aux_dir_found" = yes; then - ac_aux_dir="$as_dir" - break - fi - ac_first_candidate=false - - as_found=false -done -IFS=$as_save_IFS -if $as_found -then : - -else case e in #( - e) as_fn_error $? "cannot find required auxiliary files:$ac_missing_aux_files" "$LINENO" 5 ;; -esac -fi - - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -if test -f "${ac_aux_dir}config.guess"; then - ac_config_guess="$SHELL ${ac_aux_dir}config.guess" -fi -if test -f "${ac_aux_dir}config.sub"; then - ac_config_sub="$SHELL ${ac_aux_dir}config.sub" -fi -if test -f "$ac_aux_dir/configure"; then - ac_configure="$SHELL ${ac_aux_dir}configure" -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was set to '$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' was not set in the previous run" >&5 -printf "%s\n" "$as_me: error: '$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: '$ac_var' has changed since the previous run:" >&5 -printf "%s\n" "$as_me: error: '$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&5 -printf "%s\n" "$as_me: warning: ignoring whitespace changes in '$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: former value: '$ac_old_val'" >&5 -printf "%s\n" "$as_me: former value: '$ac_old_val'" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: current value: '$ac_new_val'" >&5 -printf "%s\n" "$as_me: current value: '$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`printf "%s\n" "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -printf "%s\n" "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run '${MAKE-make} distclean' and/or 'rm $cache_file' - and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - -# Check whether --enable-client was given. -if test ${enable_client+y} -then : - enableval=$enable_client; -else case e in #( - e) enable_client=yes - ;; -esac -fi - - -# Check whether --enable-debug was given. -if test ${enable_debug+y} -then : - enableval=$enable_debug; -else case e in #( - e) enable_debug=no - ;; -esac -fi - - -# Check whether --enable-debug-generated was given. -if test ${enable_debug_generated+y} -then : - enableval=$enable_debug_generated; -else case e in #( - e) enable_debug_generated=no - ;; -esac -fi - - -# Check whether --enable-debug-expensive was given. -if test ${enable_debug_expensive+y} -then : - enableval=$enable_debug_expensive; -else case e in #( - e) enable_debug_expensive=no - ;; -esac -fi - - -# Check whether --enable-memcheck was given. -if test ${enable_memcheck+y} -then : - enableval=$enable_memcheck; -else case e in #( - e) enable_memcheck=yes - ;; -esac -fi - - -# Check whether --enable-compact-tries was given. -if test ${enable_compact_tries+y} -then : - enableval=$enable_compact_tries; -else case e in #( - e) enable_compact_tries=no - ;; -esac -fi - - -# Check whether --enable-libssh was given. -if test ${enable_libssh+y} -then : - enableval=$enable_libssh; -else case e in #( - e) enable_libssh=try - ;; -esac -fi - - -# Check whether --enable-mpls-kernel was given. -if test ${enable_mpls_kernel+y} -then : - enableval=$enable_mpls_kernel; -else case e in #( - e) enable_mpls_kernel=try - ;; -esac -fi - - - -# Check whether --with-protocols was given. -if test ${with_protocols+y} -then : - withval=$with_protocols; -else case e in #( - e) with_protocols="all" - ;; -esac -fi - - - -# Check whether --with-sysconfig was given. -if test ${with_sysconfig+y} -then : - withval=$with_sysconfig; -fi - - - -# Check whether --with-runtimedir was given. -if test ${with_runtimedir+y} -then : - withval=$with_runtimedir; runstatedir="$with_runtimedir" - -fi - - - -# Check whether --with-iproutedir was given. -if test ${with_iproutedir+y} -then : - withval=$with_iproutedir; given_iproutedir="yes" - -fi - - - - - - - -if test "$enable_debug_expensive" = yes; then - enable_debug=yes -fi - -if test "$srcdir" = . ; then - # Building in current directory => create obj directory holding all objects - objdir=obj -else - # Building in separate directory - objdir=. -fi - -exedir=. - - - - - -# Workaround for older Autoconfs that do not define runstatedir -if test -z "${runstatedir}" -then : - runstatedir='${localstatedir}/run' -fi - - -CONFIG_FILE="\$(sysconfdir)/bird.conf" - - -CONTROL_SOCKET="\$(runstatedir)/bird.ctl" - - - - - - - - - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See 'config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -printf %s "checking whether the C compiler works... " >&6; } -ac_link_default=`printf "%s\n" "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # Autoconf-2.13 could set the ac_cv_exeext variable to 'no'. -# So ignore a value of 'no', otherwise this would lead to 'EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test ${ac_cv_exeext+y} && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an '-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else case e in #( - e) ac_file='' ;; -esac -fi -if test -z "$ac_file" -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See 'config.log' for more details" "$LINENO" 5; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -printf "%s\n" "yes" >&6; } ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -printf %s "checking for C compiler default output file name... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -printf "%s\n" "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -printf %s "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - # If both 'conftest.exe' and 'conftest' are 'present' (well, observable) -# catch 'conftest.exe'. For instance with Cygwin, 'ls conftest' will -# work properly (i.e., refer to 'conftest.exe'), while it won't with -# 'rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest conftest$ac_cv_exeext -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -printf "%s\n" "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main (void) -{ -FILE *f = fopen ("conftest.out", "w"); - if (!f) - return 1; - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -printf %s "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error 77 "cannot run C compiled programs. -If you meant to cross compile, use '--host'. -See 'config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -printf "%s\n" "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext \ - conftest.o conftest.obj conftest.out -ac_clean_files=$ac_clean_files_save -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -printf %s "checking for suffix of object files... " >&6; } -if test ${ac_cv_objext+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else case e in #( - e) printf "%s\n" "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -printf "%s\n" "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac -fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing clock_gettime" >&5 -printf %s "checking for library containing clock_gettime... " >&6; } -if test ${ac_cv_search_clock_gettime+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char clock_gettime (void); -int -main (void) -{ -return clock_gettime (); - ; - return 0; -} -_ACEOF -for ac_lib in '' rt posix4 -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_clock_gettime=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_clock_gettime+y} -then : - break -fi -done -if test ${ac_cv_search_clock_gettime+y} -then : - -else case e in #( - e) ac_cv_search_clock_gettime=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_clock_gettime" >&5 -printf "%s\n" "$ac_cv_search_clock_gettime" >&6; } -ac_res=$ac_cv_search_clock_gettime -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else case e in #( - e) as_fn_error $? "Function clock_gettime not available." "$LINENO" 5 - ;; -esac -fi - - - - - - # Make sure we can run config.sub. -$SHELL "${ac_aux_dir}config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL ${ac_aux_dir}config.sub" "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -printf %s "checking build system type... " >&6; } -if test ${ac_cv_build+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "${ac_aux_dir}config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "${ac_aux_dir}config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $ac_build_alias failed" "$LINENO" 5 - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -printf "%s\n" "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -printf %s "checking host system type... " >&6; } -if test ${ac_cv_host+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "${ac_aux_dir}config.sub" $host_alias` || - as_fn_error $? "$SHELL ${ac_aux_dir}config.sub $host_alias failed" "$LINENO" 5 -fi - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -printf "%s\n" "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - - -# Store this value because ac_test_CFLAGS is overwritten by AC_PROG_CC -if ! test "$ac_test_CFLAGS" ; then - bird_cflags_default=yes -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="gcc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - if test "$as_dir$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir$ac_word${1+' '}$@" - fi -fi -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}clang", so it can be a program name with args. -set dummy ${ac_tool_prefix}clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_CC="${ac_tool_prefix}clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -printf "%s\n" "$CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "clang", so it can be a program name with args. -set dummy clang; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_CC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_CC="clang" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -printf "%s\n" "$ac_ct_CC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -fi - - -test -z "$CC" && { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See 'config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion -version; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -printf "%s\n" "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether the compiler supports GNU C" >&5 -printf %s "checking whether the compiler supports GNU C... " >&6; } -if test ${ac_cv_c_compiler_gnu+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_compiler_gnu=yes -else case e in #( - e) ac_compiler_gnu=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -printf "%s\n" "$ac_cv_c_compiler_gnu" >&6; } -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+y} -ac_save_CFLAGS=$CFLAGS -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -printf %s "checking whether $CC accepts -g... " >&6; } -if test ${ac_cv_prog_cc_g+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -else case e in #( - e) CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - -else case e in #( - e) ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -printf "%s\n" "$ac_cv_prog_cc_g" >&6; } -if test $ac_test_CFLAGS; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -ac_prog_cc_stdc=no -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C11 features" >&5 -printf %s "checking for $CC option to enable C11 features... " >&6; } -if test ${ac_cv_prog_cc_c11+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c11=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c11_program -_ACEOF -for ac_arg in '' -std=gnu11 -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c11=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c11" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c11" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c11" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c11" >&5 -printf "%s\n" "$ac_cv_prog_cc_c11" >&6; } - CC="$CC $ac_cv_prog_cc_c11" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c11 - ac_prog_cc_stdc=c11 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C99 features" >&5 -printf %s "checking for $CC option to enable C99 features... " >&6; } -if test ${ac_cv_prog_cc_c99+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c99=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c99_program -_ACEOF -for ac_arg in '' -std=gnu99 -std=c99 -c99 -qlanglvl=extc1x -qlanglvl=extc99 -AC99 -D_STDC_C99= -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c99=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c99" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c99" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c99" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c99" >&5 -printf "%s\n" "$ac_cv_prog_cc_c99" >&6; } - CC="$CC $ac_cv_prog_cc_c99" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c99 - ac_prog_cc_stdc=c99 ;; -esac -fi -fi -if test x$ac_prog_cc_stdc = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CC option to enable C89 features" >&5 -printf %s "checking for $CC option to enable C89 features... " >&6; } -if test ${ac_cv_prog_cc_c89+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_c_conftest_c89_program -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC ;; -esac -fi - -if test "x$ac_cv_prog_cc_c89" = xno -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -printf "%s\n" "unsupported" >&6; } -else case e in #( - e) if test "x$ac_cv_prog_cc_c89" = x -then : - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -printf "%s\n" "none needed" >&6; } -else case e in #( - e) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -printf "%s\n" "$ac_cv_prog_cc_c89" >&6; } - CC="$CC $ac_cv_prog_cc_c89" ;; -esac -fi - ac_cv_prog_cc_stdc=$ac_cv_prog_cc_c89 - ac_prog_cc_stdc=c89 ;; -esac -fi -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -if test -z "$GCC" ; then - as_fn_error $? "This program requires the GNU C Compiler." "$LINENO" 5 -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which compiler vendor we are dealing with" >&5 -printf %s "checking which compiler vendor we are dealing with... " >&6; } -if test ${bird_cv_compiler_vendor+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int x = __clang__; -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_compiler_vendor=llvm -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - int x = __GNUC__; -int -main (void) -{ - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_compiler_vendor=gnu -else case e in #( - e) bird_cv_compiler_vendor=unknown - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_compiler_vendor" >&5 -printf "%s\n" "$bird_cv_compiler_vendor" >&6; } - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether _Thread_local is known" >&5 -printf %s "checking whether _Thread_local is known... " >&6; } -if test ${bird_cv_thread_local+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - static _Thread_local int x = 42; - -int -main (void) -{ - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_thread_local=yes -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - static __thread int x = 42; - -int -main (void) -{ - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_thread_local=__thread -else case e in #( - e) bird_cv_thread_local=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_thread_local" >&5 -printf "%s\n" "$bird_cv_thread_local" >&6; } - -if test "$bird_cv_thread_local" = no ; then - as_fn_error $? "This program requires thread local storage." "$LINENO" 5 -elif test "$bird_cv_thread_local" != yes ; then - -printf "%s\n" "#define _Thread_local $bird_cv_thread_local" >>confdefs.h - -fi - - - bird_tmp_cflags="$CFLAGS" - CFLAGS="$CFLAGS -pthread" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether POSIX threads are available" >&5 -printf %s "checking whether POSIX threads are available... " >&6; } -if test ${bird_cv_lib_pthreads+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main (void) -{ - - pthread_t pt; - pthread_create(&pt, NULL, NULL, NULL); - pthread_spinlock_t lock; - pthread_spin_lock(&lock); - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_lib_pthreads=yes -else case e in #( - e) bird_cv_lib_pthreads=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_lib_pthreads" >&5 -printf "%s\n" "$bird_cv_lib_pthreads" >&6; } - - CFLAGS="$bird_tmp_cflags" - - -if test "$bird_cv_lib_pthreads" = yes ; then - CFLAGS="$CFLAGS -pthread" - LDFLAGS="$LDFLAGS -pthread" -else - as_fn_error $? "POSIX threads not available." "$LINENO" 5 -fi - -# This is assumed to be necessary for proper BIRD build -CFLAGS="$CFLAGS -fno-strict-aliasing -fno-strict-overflow" - -if test "$bird_cflags_default" = yes ; then - - bird_tmp_cflags="$CFLAGS" - CFLAGS="-Wall -Wno-pointer-sign" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wno-pointer-sign" >&5 -printf %s "checking whether CC supports -Wno-pointer-sign... " >&6; } -if test ${bird_cv_c_option_wno_pointer_sign+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_c_option_wno_pointer_sign=yes -else case e in #( - e) bird_cv_c_option_wno_pointer_sign=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_option_wno_pointer_sign" >&5 -printf "%s\n" "$bird_cv_c_option_wno_pointer_sign" >&6; } - - CFLAGS="$bird_tmp_cflags" - - - bird_tmp_cflags="$CFLAGS" - CFLAGS="-Wall -Wextra -Wno-missing-field-initializers" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Wno-missing-field-initializers" >&5 -printf %s "checking whether CC supports -Wno-missing-field-initializers... " >&6; } -if test ${bird_cv_c_option_wno_missing_init+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_c_option_wno_missing_init=yes -else case e in #( - e) bird_cv_c_option_wno_missing_init=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_option_wno_missing_init" >&5 -printf "%s\n" "$bird_cv_c_option_wno_missing_init" >&6; } - - CFLAGS="$bird_tmp_cflags" - - - bird_tmp_cflags="$CFLAGS" - CFLAGS="-Wall -Wextra -Watomic-implicit-seq-cst" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Watomic-implicit-seq-cst" >&5 -printf %s "checking whether CC supports -Watomic-implicit-seq-cst... " >&6; } -if test ${bird_cv_c_option_watomic_implicit_seq_cst+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_c_option_watomic_implicit_seq_cst=yes -else case e in #( - e) bird_cv_c_option_watomic_implicit_seq_cst=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_option_watomic_implicit_seq_cst" >&5 -printf "%s\n" "$bird_cv_c_option_watomic_implicit_seq_cst" >&6; } - - CFLAGS="$bird_tmp_cflags" - - - bird_tmp_cflags="$CFLAGS" - CFLAGS="-Wall -Wextra -Werror=implicit-function-declaration" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC supports -Werror=implicit-function-declaration" >&5 -printf %s "checking whether CC supports -Werror=implicit-function-declaration... " >&6; } -if test ${bird_cv_c_option_werror_implicit_function_declaration+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_c_option_werror_implicit_function_declaration=yes -else case e in #( - e) bird_cv_c_option_werror_implicit_function_declaration=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_option_werror_implicit_function_declaration" >&5 -printf "%s\n" "$bird_cv_c_option_werror_implicit_function_declaration" >&6; } - - CFLAGS="$bird_tmp_cflags" - - - if test "$enable_debug" = no; then - LTO_CFLAGS=-flto - case ${bird_cv_compiler_vendor} in #( - gnu) : - LTO_LDFLAGS="-flto=jobserver" ;; #( - llvm) : - LTO_LDFLAGS="-flto" ;; #( - unknown) : - LTO_LDFLAGS="-flto" ;; #( - *) : - as_fn_error $? "Compiler vendor check failed for LTO: got ${bird_cv_compiler_vendor}" "$LINENO" 5 ;; -esac - - bird_tmp_cflags="$CFLAGS" - bird_tmp_ldflags="$LDFLAGS" - CFLAGS="${LTO_CFLAGS}" - LDFLAGS="${LTO_LDFLAGS}" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether link time optimizer is available" >&5 -printf %s "checking whether link time optimizer is available... " >&6; } -if test ${bird_cv_c_lto+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_c_lto=yes -else case e in #( - e) bird_cv_c_lto=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_lto" >&5 -printf "%s\n" "$bird_cv_c_lto" >&6; } - - CFLAGS="$bird_tmp_cflags" - LDFLAGS="$bird_tmp_ldflags" - - fi - - if test "$bird_cv_c_lto" = yes; then - CFLAGS="$CFLAGS $LTO_CFLAGS" - LDFLAGS="$LDFLAGS $LTO_LDFLAGS -g" - else - LDFLAGS="$LDFLAGS -g" - fi - - CFLAGS="$CFLAGS -Wall -Wextra -Wstrict-prototypes -Wno-parentheses" - - if test "$bird_cv_c_option_wno_pointer_sign" = yes ; then - CFLAGS="$CFLAGS -Wno-pointer-sign" - fi - - - if test "$bird_cv_c_option_wno_missing_init" = yes ; then - CFLAGS="$CFLAGS -Wno-missing-field-initializers" - fi - - - if test "$bird_cv_c_option_watomic_implicit_seq_cst" = yes ; then - CFLAGS="$CFLAGS -Watomic-implicit-seq-cst" - fi - - - if test "$bird_cv_c_option_werror_implicit_function_declaration" = yes ; then - CFLAGS="$CFLAGS -Werror=implicit-function-declaration" - fi - -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking CFLAGS" >&5 -printf %s "checking CFLAGS... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CFLAGS" >&5 -printf "%s\n" "$CFLAGS" >&6; } - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking LDFLAGS" >&5 -printf %s "checking LDFLAGS... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $LDFLAGS" >&5 -printf "%s\n" "$LDFLAGS" >&6; } - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -printf %s "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if test ${ac_cv_prog_CPP+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) # Double quotes because $CC needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" cpp /lib/cpp - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else case e in #( - e) # Passes both tests. -ac_preproc_ok=: -break ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : - break -fi - - done - ac_cv_prog_CPP=$CPP - ;; -esac -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -printf "%s\n" "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - -else case e in #( - e) # Broken: fails on valid input. -continue ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO" -then : - # Broken: success on invalid input. -continue -else case e in #( - e) # Passes both tests. -ac_preproc_ok=: -break ;; -esac -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of 'break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok -then : - -else case e in #( - e) { { printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: in '$ac_pwd':" >&5 -printf "%s\n" "$as_me: error: in '$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See 'config.log' for more details" "$LINENO" 5; } ;; -esac -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - # Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -printf %s "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if test ${ac_cv_path_install+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - # Account for fact that we put trailing slashes in our PATH walk. -case $as_dir in #(( - ./ | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_prog$ac_exec_ext"; then - if test $ac_prog = install && - grep dspmsg "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir/" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - ;; -esac -fi - if test ${ac_cv_path_install+y}; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -printf "%s\n" "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_RANLIB+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -printf "%s\n" "$RANLIB" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_ac_ct_RANLIB+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -printf "%s\n" "$ac_ct_RANLIB" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -printf "%s\n" "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -# Extract the first word of "flex", so it can be a program name with args. -set dummy flex; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_FLEX+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$FLEX"; then - ac_cv_prog_FLEX="$FLEX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_FLEX="flex" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -FLEX=$ac_cv_prog_FLEX -if test -n "$FLEX"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $FLEX" >&5 -printf "%s\n" "$FLEX" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -# Extract the first word of "bison", so it can be a program name with args. -set dummy bison; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_BISON+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$BISON"; then - ac_cv_prog_BISON="$BISON" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_BISON="bison" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -BISON=$ac_cv_prog_BISON -if test -n "$BISON"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BISON" >&5 -printf "%s\n" "$BISON" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - -for ac_prog in gm4 m4 -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_M4+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$M4"; then - ac_cv_prog_M4="$M4" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_M4="$ac_prog" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -M4=$ac_cv_prog_M4 -if test -n "$M4"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $M4" >&5 -printf "%s\n" "$M4" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - test -n "$M4" && break -done - -# Extract the first word of "pandoc", so it can be a program name with args. -set dummy pandoc; ac_word=$2 -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -printf %s "checking for $ac_word... " >&6; } -if test ${ac_cv_prog_PANDOC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) if test -n "$PANDOC"; then - ac_cv_prog_PANDOC="$PANDOC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - for ac_exec_ext in '' $ac_executable_extensions; do - if as_fn_executable_p "$as_dir$ac_word$ac_exec_ext"; then - ac_cv_prog_PANDOC="pandoc" - printf "%s\n" "$as_me:${as_lineno-$LINENO}: found $as_dir$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi ;; -esac -fi -PANDOC=$ac_cv_prog_PANDOC -if test -n "$PANDOC"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $PANDOC" >&5 -printf "%s\n" "$PANDOC" >&6; } -else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: no" >&5 -printf "%s\n" "no" >&6; } -fi - - - -test -z "$FLEX" && as_fn_error $? "Flex is missing." "$LINENO" 5 -test -z "$BISON" && as_fn_error $? "Bison is missing." "$LINENO" 5 -test -z "$M4" && as_fn_error $? "M4 is missing." "$LINENO" 5 - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking bison version" >&5 -printf %s "checking bison version... " >&6; } - - BISON_VERSION=`bison --version | ( read line; echo ${line##* } )` - case "$BISON_VERSION" in - 1.* | 2.0* | 2.1* | 2.2* | 2.3*) - as_fn_error $? "Provided Bison version $BISON_VERSION is too old, need at least 2.4" "$LINENO" 5 - ;; - 2.*) - bird_bison_synclines=no - bird_bison_enhanced_error=no - ;; - 3.* | 4.* | 5.* | 6.* | 7.* | 8.* | 9.*) - bird_bison_synclines=yes - bird_bison_enhanced_error=yes - ;; - *) - as_fn_error $? "Couldn't parse Bison version $BISON_VERSION. Call the developers for help." "$LINENO" 5 - ;; - esac - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $BISON_VERSION" >&5 -printf "%s\n" "$BISON_VERSION" >&6; } -if test "$bird_bison_synclines" = yes && test "$enable_debug_generated" = no; then - M4FLAGS="$M4FLAGS -s" -fi - -if test "$bird_bison_enhanced_error" = yes; then - BISONFLAGS="$BISONFLAGS -Dparse.lac=full -Dparse.error=verbose" -fi - - - - - - # Check for GNU $M4 - case `"$M4" --version 2>&1` in - *GNU*) - - ;; - *) - as_fn_error $? "Provided M4 is not GNU M4." "$LINENO" 5 - - ;; - - - esac - - -if test -n "$with_sysconfig" -a "$with_sysconfig" != no ; then - if test -f $with_sysconfig ; then - sysdesc=$with_sysconfig - else - sysdesc=$srcdir/sysdep/cf/$with_sysconfig - if ! test -f $sysdesc ; then - sysdesc=$sysdesc.h - fi - fi -elif test -f sysconfig.h ; then - sysdesc=sysconfig -else - case "$host_os" in - linux*) - sysdesc=linux - default_iproutedir="/etc/iproute2" - ;; - freebsd*) - sysdesc=bsd - CPPFLAGS="$CPPFLAGS -I/usr/local/include" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - ;; - kfreebsd*) - sysdesc=bsd - ;; - netbsd*) - sysdesc=bsd - CPPFLAGS="$CPPFLAGS -I/usr/pkg/include" - LDFLAGS="$LDFLAGS -L/usr/pkg/lib -R/usr/pkg/lib" - ;; - openbsd*) - sysdesc=bsd - CPPFLAGS="$CPPFLAGS -I/usr/local/include" - LDFLAGS="$LDFLAGS -L/usr/local/lib" - ;; - dragonfly*) - sysdesc=bsd - ;; - *) - as_fn_error $? "Cannot determine correct system configuration. Please use --with-sysconfig to set it manually." "$LINENO" 5 - ;; - esac - sysdesc=$srcdir/sysdep/cf/$sysdesc.h -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking which OS configuration should we use" >&5 -printf %s "checking which OS configuration should we use... " >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sysdesc" >&5 -printf "%s\n" "$sysdesc" >&6; } -if ! test -f $sysdesc ; then - as_fn_error $? "The system configuration file is missing." "$LINENO" 5 -fi -sysname=`echo $sysdesc | sed 's/\.h$//'` - -printf "%s\n" "#define SYSCONF_INCLUDE \"$sysdesc\"" >>confdefs.h - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking system-dependent directories" >&5 -printf %s "checking system-dependent directories... " >&6; } -sysdep_dirs="`sed <$sysdesc '/^Link: /!d;s/^Link: \(.*\)$/\1/' | tr '\012' ' '`" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $sysdep_dirs" >&5 -printf "%s\n" "$sysdep_dirs" >&6; } - - -if test "$with_iproutedir" = no ; then with_iproutedir= ; fi - -if test -n "$given_iproutedir" -then iproutedir=$with_iproutedir -else iproutedir=$default_iproutedir -fi - - - -DAEMON_LIBS= - - -if test "$enable_libssh" != no ; then - ac_fn_c_check_header_compile "$LINENO" "libssh/libssh.h" "ac_cv_header_libssh_libssh_h" " -" -if test "x$ac_cv_header_libssh_libssh_h" = xyes -then : - true -else case e in #( - e) fail=yes ;; -esac -fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssh_connect in -lssh" >&5 -printf %s "checking for ssh_connect in -lssh... " >&6; } -if test ${ac_cv_lib_ssh_ssh_connect+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lssh $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ssh_connect (void); -int -main (void) -{ -return ssh_connect (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssh_ssh_connect=yes -else case e in #( - e) ac_cv_lib_ssh_ssh_connect=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_connect" >&5 -printf "%s\n" "$ac_cv_lib_ssh_ssh_connect" >&6; } -if test "x$ac_cv_lib_ssh_ssh_connect" = xyes -then : - true -else case e in #( - e) fail=yes ;; -esac -fi - - - if test "$fail" != yes ; then - -printf "%s\n" "#define HAVE_LIBSSH 1" >>confdefs.h - - DAEMON_LIBS="-lssh $DAEMON_LIBS" - enable_libssh=yes - else - if test "$enable_libssh" = yes ; then - as_fn_error $? "LibSSH not available." "$LINENO" 5 - else - enable_libssh=no - fi - fi - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for ssh_session_is_known_server in -lssh" >&5 -printf %s "checking for ssh_session_is_known_server in -lssh... " >&6; } -if test ${ac_cv_lib_ssh_ssh_session_is_known_server+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lssh $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char ssh_session_is_known_server (void); -int -main (void) -{ -return ssh_session_is_known_server (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_ssh_ssh_session_is_known_server=yes -else case e in #( - e) ac_cv_lib_ssh_ssh_session_is_known_server=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_ssh_ssh_session_is_known_server" >&5 -printf "%s\n" "$ac_cv_lib_ssh_ssh_session_is_known_server" >&6; } -if test "x$ac_cv_lib_ssh_ssh_session_is_known_server" = xyes -then : - ssh_old_server_validation_api=no -else case e in #( - e) ssh_old_server_validation_api=yes ;; -esac -fi - - - if test "$ssh_old_server_validation_api" = yes; then - -printf "%s\n" "#define HAVE_SSH_OLD_SERVER_VALIDATION_API 1" >>confdefs.h - - fi -fi - -if test "$enable_mpls_kernel" != no ; then - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Linux MPLS headers" >&5 -printf %s "checking for Linux MPLS headers... " >&6; } -if test ${bird_cv_mpls_kernel+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - #include - #include - void t(int arg); - -int -main (void) -{ - - t(AF_MPLS); - t(RTA_VIA); - t(RTA_NEWDST); - t(RTA_ENCAP_TYPE); - t(RTA_ENCAP); - struct rtvia rtvia; - t(LWTUNNEL_ENCAP_MPLS); - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_mpls_kernel=yes -else case e in #( - e) bird_cv_mpls_kernel=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_mpls_kernel" >&5 -printf "%s\n" "$bird_cv_mpls_kernel" >&6; } - - - if test "$bird_cv_mpls_kernel" = yes ; then - -printf "%s\n" "#define HAVE_MPLS_KERNEL 1" >>confdefs.h - - elif test "$enable_mpls_kernel" = yes ; then - as_fn_error $? "Kernel MPLS support not found." "$LINENO" 5 - fi - - if test "$enable_mpls_kernel" = try ; then - enable_mpls_kernel="$bird_cv_mpls_kernel" - fi -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CLOCK_MONOTONIC" >&5 -printf %s "checking for CLOCK_MONOTONIC... " >&6; } -if test ${bird_cv_clock_CLOCK_MONOTONIC+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int -main (void) -{ - - struct timespec tv; - clock_gettime(CLOCK_MONOTONIC, &tv); - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_clock_CLOCK_MONOTONIC=yes -else case e in #( - e) bird_cv_clock_CLOCK_MONOTONIC=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_clock_CLOCK_MONOTONIC" >&5 -printf "%s\n" "$bird_cv_clock_CLOCK_MONOTONIC" >&6; } - -if test "$bird_cv_clock_CLOCK_MONOTONIC" != yes ; then - as_fn_error $? "Monotonic clock not supported" "$LINENO" 5 -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for CLOCK_MONOTONIC_COARSE" >&5 -printf %s "checking for CLOCK_MONOTONIC_COARSE... " >&6; } -if test ${bird_cv_clock_CLOCK_MONOTONIC_COARSE+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int -main (void) -{ - - struct timespec tv; - clock_gettime(CLOCK_MONOTONIC_COARSE, &tv); - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_clock_CLOCK_MONOTONIC_COARSE=yes -else case e in #( - e) bird_cv_clock_CLOCK_MONOTONIC_COARSE=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_clock_CLOCK_MONOTONIC_COARSE" >&5 -printf "%s\n" "$bird_cv_clock_CLOCK_MONOTONIC_COARSE" >&6; } - -if test "$bird_cv_clock_CLOCK_MONOTONIC_COARSE" != yes ; then - -printf "%s\n" "#define HAVE_CLOCK_MONOTONIC_COARSE 0" >>confdefs.h - -else - -printf "%s\n" "#define HAVE_CLOCK_MONOTONIC_COARSE 1" >>confdefs.h - -fi - -all_protocols="aggregator bfd babel bgp l3vpn ospf pipe radv rip rpki static mrt bmp" -all_protocols=`echo $all_protocols | sed 's/ /,/g'` - -if test "$with_protocols" = all ; then - with_protocols="$all_protocols" -fi - - - - - - - - - - - - - - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking protocols" >&5 -printf %s "checking protocols... " >&6; } -protocols=`echo "$with_protocols" | sed 's/,/ /g'` -if test "$protocols" = no ; then protocols= ; fi -for a in $protocols ; do - if ! test -f $srcdir/proto/$a/Makefile ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -printf "%s\n" "failed" >&6; } - as_fn_error $? "Requested protocol $a not found" "$LINENO" 5 - fi - cat >>confdefs.h <<_ACEOF -#define CONFIG_`echo $a | tr 'a-z' 'A-Z'` 1 -_ACEOF - -done -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -printf "%s\n" "ok" >&6; } - - -case $sysdesc in - */linux*) - ac_fn_c_check_header_compile "$LINENO" "linux/rtnetlink.h" "ac_cv_header_linux_rtnetlink_h" " - #include - #include - - -" -if test "x$ac_cv_header_linux_rtnetlink_h" = xyes -then : - -else case e in #( - e) as_fn_error $? "Appropriate version of Linux kernel headers not found." "$LINENO" 5 ;; -esac -fi - - ;; -esac - -ac_header= ac_cache= -for ac_item in $ac_header_c_list -do - if test $ac_cache; then - ac_fn_c_check_header_compile "$LINENO" $ac_header ac_cv_header_$ac_cache "$ac_includes_default" - if eval test \"x\$ac_cv_header_$ac_cache\" = xyes; then - printf "%s\n" "#define $ac_item 1" >> confdefs.h - fi - ac_header= ac_cache= - elif test $ac_header; then - ac_cache=$ac_item - else - ac_header=$ac_item - fi -done - - - - - - - - -if test $ac_cv_header_stdlib_h = yes && test $ac_cv_header_string_h = yes -then : - -printf "%s\n" "#define STDC_HEADERS 1" >>confdefs.h - -fi - - - - -ac_fn_c_check_header_compile "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_mman_h" = xyes -then : - -printf "%s\n" "#define HAVE_MMAP 1" >>confdefs.h - -else case e in #( - e) have_mman=no ;; -esac -fi - -ac_fn_c_check_func "$LINENO" "aligned_alloc" "ac_cv_func_aligned_alloc" -if test "x$ac_cv_func_aligned_alloc" = xyes -then : - -printf "%s\n" "#define HAVE_ALIGNED_ALLOC 1" >>confdefs.h - -else case e in #( - e) have_aligned_alloc=no ;; -esac -fi - -if test "$have_aligned_alloc" = "no" && test "$have_mman" = "no" ; then - as_fn_error $? "No means of aligned alloc found. Need mmap() or aligned_alloc()." "$LINENO" 5 -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for mallopt" >&5 -printf %s "checking for mallopt... " >&6; } -if test ${bird_cv_mallopt+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - -int -main (void) -{ - - mallopt(M_ARENA_MAX, 1); - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_mallopt=yes -else case e in #( - e) bird_cv_mallopt=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_mallopt" >&5 -printf "%s\n" "$bird_cv_mallopt" >&6; } - -if test "$bird_cv_mallopt" = "yes" ; then - -printf "%s\n" "#define HAVE_MALLOPT 1" >>confdefs.h - -fi - -ac_fn_c_check_member "$LINENO" "struct sockaddr" "sa_len" "ac_cv_member_struct_sockaddr_sa_len" "#include -" -if test "x$ac_cv_member_struct_sockaddr_sa_len" = xyes -then : - -printf "%s\n" "#define HAVE_STRUCT_SOCKADDR_SA_LEN 1" >>confdefs.h - - -fi - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether byte ordering is bigendian" >&5 -printf %s "checking whether byte ordering is bigendian... " >&6; } -if test ${ac_cv_c_bigendian+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_cv_c_bigendian=unknown - # See if we're dealing with a universal compiler. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifndef __APPLE_CC__ - not a universal capable compiler - #endif - typedef int dummy; - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - - # Check for potential -arch flags. It is not universal unless - # there are at least two -arch flags with different values. - ac_arch= - ac_prev= - for ac_word in $CC $CFLAGS $CPPFLAGS $LDFLAGS; do - if test -n "$ac_prev"; then - case $ac_word in - i?86 | x86_64 | ppc | ppc64) - if test -z "$ac_arch" || test "$ac_arch" = "$ac_word"; then - ac_arch=$ac_word - else - ac_cv_c_bigendian=universal - break - fi - ;; - esac - ac_prev= - elif test "x$ac_word" = "x-arch"; then - ac_prev=arch - fi - done -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - if test $ac_cv_c_bigendian = unknown; then - # See if sys/param.h defines the BYTE_ORDER macro. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main (void) -{ -#if ! (defined BYTE_ORDER && defined BIG_ENDIAN \\ - && defined LITTLE_ENDIAN && BYTE_ORDER && BIG_ENDIAN \\ - && LITTLE_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - # It does; now see whether it defined to BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - #include - -int -main (void) -{ -#if BYTE_ORDER != BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # See if defines _LITTLE_ENDIAN or _BIG_ENDIAN (e.g., Solaris). - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main (void) -{ -#if ! (defined _LITTLE_ENDIAN || defined _BIG_ENDIAN) - bogus endian macros - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - # It does; now see whether it defined to _BIG_ENDIAN or not. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -int -main (void) -{ -#ifndef _BIG_ENDIAN - not big endian - #endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - ac_cv_c_bigendian=yes -else case e in #( - e) ac_cv_c_bigendian=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - fi - if test $ac_cv_c_bigendian = unknown; then - # Compile a test program. - if test "$cross_compiling" = yes -then : - # Try to guess by grepping values from an object file. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -unsigned short int ascii_mm[] = - { 0x4249, 0x4765, 0x6E44, 0x6961, 0x6E53, 0x7953, 0 }; - unsigned short int ascii_ii[] = - { 0x694C, 0x5454, 0x656C, 0x6E45, 0x6944, 0x6E61, 0 }; - int use_ascii (int i) { - return ascii_mm[i] + ascii_ii[i]; - } - unsigned short int ebcdic_ii[] = - { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 }; - unsigned short int ebcdic_mm[] = - { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 }; - int use_ebcdic (int i) { - return ebcdic_mm[i] + ebcdic_ii[i]; - } - int - main (int argc, char **argv) - { - /* Intimidate the compiler so that it does not - optimize the arrays away. */ - char *p = argv[0]; - ascii_mm[1] = *p++; ebcdic_mm[1] = *p++; - ascii_ii[1] = *p++; ebcdic_ii[1] = *p++; - return use_ascii (argc) == use_ebcdic (*p); - } -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - if grep BIGenDianSyS conftest$ac_exeext >/dev/null; then - ac_cv_c_bigendian=yes - fi - if grep LiTTleEnDian conftest$ac_exeext >/dev/null ; then - if test "$ac_cv_c_bigendian" = unknown; then - ac_cv_c_bigendian=no - else - # finding both strings is unlikely to happen, but who knows? - ac_cv_c_bigendian=unknown - fi - fi -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main (void) -{ - - /* Are we little or big endian? From Harbison&Steele. */ - union - { - long int l; - char c[sizeof (long int)]; - } u; - u.l = 1; - return u.c[sizeof (long int) - 1] == 1; - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO" -then : - ac_cv_c_bigendian=no -else case e in #( - e) ac_cv_c_bigendian=yes ;; -esac -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi - - fi ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_bigendian" >&5 -printf "%s\n" "$ac_cv_c_bigendian" >&6; } - case $ac_cv_c_bigendian in #( - yes) - -printf "%s\n" "#define CPU_BIG_ENDIAN 1" >>confdefs.h -;; #( - no) - -printf "%s\n" "#define CPU_LITTLE_ENDIAN 1" >>confdefs.h - ;; #( - universal) - -printf "%s\n" "#define AC_APPLE_UNIVERSAL_BUILD 1" >>confdefs.h - - ;; #( - *) - as_fn_error $? "Cannot determine CPU endianity." "$LINENO" 5 - ;; - esac - - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking how pointers are aligned" >&5 -printf %s "checking how pointers are aligned... " >&6; } -if test ${bird_cv_pointer_alignment+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - _Static_assert(_Alignof(void *) == 8, "bad"); - -int -main (void) -{ - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_pointer_alignment=8 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - _Static_assert(_Alignof(void *) == 4, "bad"); - -int -main (void) -{ - - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_pointer_alignment=4 -else case e in #( - e) bird_cv_pointer_alignment=unknown - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_pointer_alignment" >&5 -printf "%s\n" "$bird_cv_pointer_alignment" >&6; } - -if test "$bird_cv_pointer_alignment" = "unknown" ; then - as_fn_error $? "Couldn't determine pointer alignment" "$LINENO" 5 -else - -printf "%s\n" "#define CPU_POINTER_ALIGNMENT $bird_cv_pointer_alignment" >>confdefs.h - -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for glob.h" >&5 -printf %s "checking for glob.h... " >&6; } -if test ${bird_cv_lib_glob+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - -int -main (void) -{ - glob(NULL, 0, NULL, NULL); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_lib_glob=yes -else case e in #( - e) - bird_tmp_libs="$LIBS" - LIBS="$LIBS -landroid-glob" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - - #include - #include - -int -main (void) -{ - glob(NULL, 0, NULL, NULL); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_lib_glob=-landroid-glob -else case e in #( - e) bird_cv_lib_glob=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$bird_tmp_libs" - - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_lib_glob" >&5 -printf "%s\n" "$bird_cv_lib_glob" >&6; } - -if test "$bird_cv_lib_glob" = no ; then - as_fn_error $? "glob.h not found." "$LINENO" 5 -elif test "$bird_cv_lib_glob" != yes ; then - LIBS="$LIBS $bird_cv_lib_glob" -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for syslog lib flags" >&5 -printf %s "checking for syslog lib flags... " >&6; } -if test ${bird_cv_lib_log+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main (void) -{ - syslog(0, ""); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_lib_log=yes -else case e in #( - e) - bird_tmp_libs="$LIBS" - LIBS="$LIBS -llog" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - - #include -int -main (void) -{ - syslog(0, ""); - - ; - return 0; -} - -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - bird_cv_lib_log=-llog -else case e in #( - e) bird_cv_lib_log=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$bird_tmp_libs" - - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_lib_log" >&5 -printf "%s\n" "$bird_cv_lib_log" >&6; } - -if test "$bird_cv_lib_log" = no ; then - as_fn_error $? "don't know how to link syslog." "$LINENO" 5 -elif test "$bird_cv_lib_log" != yes ; then - LIBS="$LIBS $bird_cv_lib_log" -fi - -ac_fn_c_check_func "$LINENO" "getrandom" "ac_cv_func_getrandom" -if test "x$ac_cv_func_getrandom" = xyes -then : - printf "%s\n" "#define HAVE_GETRANDOM 1" >>confdefs.h - -fi - -ac_fn_c_check_func "$LINENO" "getentropy" "ac_cv_func_getentropy" -if test "x$ac_cv_func_getentropy" = xyes -then : - printf "%s\n" "#define HAVE_GETENTROPY 1" >>confdefs.h - -fi - - -if test "$enable_debug" = yes ; then - -printf "%s\n" "#define DEBUGGING 1" >>confdefs.h - - LDFLAGS="$LDFLAGS -rdynamic" - CFLAGS="$CFLAGS -O0 -ggdb -g3" - - - - bird_tmp_cflags="$CFLAGS" - CFLAGS=" -gdwarf-4" - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking whether CC supports -gdwarf-4" >&5 -printf %s "checking whether CC supports -gdwarf-4... " >&6; } -if test ${bird_cv_c_option_dwarf4+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main (void) -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO" -then : - bird_cv_c_option_dwarf4=yes -else case e in #( - e) bird_cv_c_option_dwarf4=no - ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam conftest.$ac_ext - - ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $bird_cv_c_option_dwarf4" >&5 -printf "%s\n" "$bird_cv_c_option_dwarf4" >&6; } - - CFLAGS="$bird_tmp_cflags" - - - if test "$bird_cv_c_option_dwarf4" = yes ; then - CFLAGS="$CFLAGS -gdwarf-4" - fi - - - - ac_fn_c_check_header_compile "$LINENO" "execinfo.h" "ac_cv_header_execinfo_h" "$ac_includes_default" -if test "x$ac_cv_header_execinfo_h" = xyes -then : - - -printf "%s\n" "#define HAVE_EXECINFO_H 1" >>confdefs.h - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing backtrace" >&5 -printf %s "checking for library containing backtrace... " >&6; } -if test ${ac_cv_search_backtrace+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char backtrace (void); -int -main (void) -{ -return backtrace (); - ; - return 0; -} -_ACEOF -for ac_lib in '' execinfo -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_backtrace=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_backtrace+y} -then : - break -fi -done -if test ${ac_cv_search_backtrace+y} -then : - -else case e in #( - e) ac_cv_search_backtrace=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_backtrace" >&5 -printf "%s\n" "$ac_cv_search_backtrace" >&6; } -ac_res=$ac_cv_search_backtrace -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else case e in #( - e) as_fn_error $? "Function backtrace not available." "$LINENO" 5 - ;; -esac -fi - - - -fi - - - if test "$enable_memcheck" = yes ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for dmalloc_debug in -ldmalloc" >&5 -printf %s "checking for dmalloc_debug in -ldmalloc... " >&6; } -if test ${ac_cv_lib_dmalloc_dmalloc_debug+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-ldmalloc $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char dmalloc_debug (void); -int -main (void) -{ -return dmalloc_debug (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_dmalloc_dmalloc_debug=yes -else case e in #( - e) ac_cv_lib_dmalloc_dmalloc_debug=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dmalloc_dmalloc_debug" >&5 -printf "%s\n" "$ac_cv_lib_dmalloc_dmalloc_debug" >&6; } -if test "x$ac_cv_lib_dmalloc_dmalloc_debug" = xyes -then : - printf "%s\n" "#define HAVE_LIBDMALLOC 1" >>confdefs.h - - LIBS="-ldmalloc $LIBS" - -fi - - if test $ac_cv_lib_dmalloc_dmalloc_debug != yes ; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for malloc in -lefence" >&5 -printf %s "checking for malloc in -lefence... " >&6; } -if test ${ac_cv_lib_efence_malloc+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lefence $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char malloc (void); -int -main (void) -{ -return malloc (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_efence_malloc=yes -else case e in #( - e) ac_cv_lib_efence_malloc=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_efence_malloc" >&5 -printf "%s\n" "$ac_cv_lib_efence_malloc" >&6; } -if test "x$ac_cv_lib_efence_malloc" = xyes -then : - printf "%s\n" "#define HAVE_LIBEFENCE 1" >>confdefs.h - - LIBS="-lefence $LIBS" - -fi - - fi - fi - - if test "$enable_debug_expensive" = yes ; then - -printf "%s\n" "#define ENABLE_EXPENSIVE_CHECKS 1" >>confdefs.h - - fi -fi - -if test "$enable_compact_tries" = yes ; then - -printf "%s\n" "#define ENABLE_COMPACT_TRIES 1" >>confdefs.h - -fi - -CLIENT=birdcl -CLIENT_LIBS= -if test "$enable_client" = yes ; then - CLIENT="$CLIENT birdc" - BASE_LIBS="$LIBS" - LIBS="" - - for ac_header in curses.h -do : - ac_fn_c_check_header_compile "$LINENO" "curses.h" "ac_cv_header_curses_h" "$ac_includes_default - -" -if test "x$ac_cv_header_curses_h" = xyes -then : - printf "%s\n" "#define HAVE_CURSES_H 1" >>confdefs.h - -else case e in #( - e) as_fn_error $? "The client requires ncurses library. Either install the library or use --disable-client to compile without the client." "$LINENO" 5 ;; -esac -fi - -done - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing tgetent" >&5 -printf %s "checking for library containing tgetent... " >&6; } -if test ${ac_cv_search_tgetent+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char tgetent (void); -int -main (void) -{ -return tgetent (); - ; - return 0; -} -_ACEOF -for ac_lib in '' tinfo tinfow ncurses curses termcap -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_tgetent=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_tgetent+y} -then : - break -fi -done -if test ${ac_cv_search_tgetent+y} -then : - -else case e in #( - e) ac_cv_search_tgetent=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_tgetent" >&5 -printf "%s\n" "$ac_cv_search_tgetent" >&6; } -ac_res=$ac_cv_search_tgetent -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - TINFO_LIBS="$LIBS"; LIBS="" -else case e in #( - e) as_fn_error $? "The client requires ncurses library. Either install the library or use --disable-client to compile without the client." "$LINENO" 5 ;; -esac -fi - - - for ac_header in readline/readline.h readline/history.h -do : - as_ac_Header=`printf "%s\n" "ac_cv_header_$ac_header" | sed "$as_sed_sh"` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default - -" -if eval test \"x\$"$as_ac_Header"\" = x"yes" -then : - cat >>confdefs.h <<_ACEOF -#define `printf "%s\n" "HAVE_$ac_header" | sed "$as_sed_cpp"` 1 -_ACEOF - -else case e in #( - e) as_fn_error $? "The client requires GNU Readline library. Either install the library or use --disable-client to compile without the client." "$LINENO" 5 ;; -esac -fi - -done - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library containing rl_callback_read_char" >&5 -printf %s "checking for library containing rl_callback_read_char... " >&6; } -if test ${ac_cv_search_rl_callback_read_char+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char rl_callback_read_char (void); -int -main (void) -{ -return rl_callback_read_char (); - ; - return 0; -} -_ACEOF -for ac_lib in '' readline -do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $TINFO_LIBS - $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO" -then : - ac_cv_search_rl_callback_read_char=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext - if test ${ac_cv_search_rl_callback_read_char+y} -then : - break -fi -done -if test ${ac_cv_search_rl_callback_read_char+y} -then : - -else case e in #( - e) ac_cv_search_rl_callback_read_char=no ;; -esac -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_rl_callback_read_char" >&5 -printf "%s\n" "$ac_cv_search_rl_callback_read_char" >&6; } -ac_res=$ac_cv_search_rl_callback_read_char -if test "$ac_res" != no -then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - READLINE_LIBS="$LIBS"; LIBS="" -else case e in #( - e) as_fn_error $? "The client requires GNU Readline library. Either install the library or use --disable-client to compile without the client." "$LINENO" 5 ;; -esac -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_crlf in -lreadline" >&5 -printf %s "checking for rl_crlf in -lreadline... " >&6; } -if test ${ac_cv_lib_readline_rl_crlf+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $TINFO_LIBS - $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char rl_crlf (void); -int -main (void) -{ -return rl_crlf (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_readline_rl_crlf=yes -else case e in #( - e) ac_cv_lib_readline_rl_crlf=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_crlf" >&5 -printf "%s\n" "$ac_cv_lib_readline_rl_crlf" >&6; } -if test "x$ac_cv_lib_readline_rl_crlf" = xyes -then : - -printf "%s\n" "#define HAVE_RL_CRLF 1" >>confdefs.h - -fi - - - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for rl_ding in -lreadline" >&5 -printf %s "checking for rl_ding in -lreadline... " >&6; } -if test ${ac_cv_lib_readline_rl_ding+y} -then : - printf %s "(cached) " >&6 -else case e in #( - e) ac_check_lib_save_LIBS=$LIBS -LIBS="-lreadline $TINFO_LIBS - $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. - The 'extern "C"' is for builds by C++ compilers; - although this is not generally supported in C code supporting it here - has little cost and some practical benefit (sr 110532). */ -#ifdef __cplusplus -extern "C" -#endif -char rl_ding (void); -int -main (void) -{ -return rl_ding (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO" -then : - ac_cv_lib_readline_rl_ding=yes -else case e in #( - e) ac_cv_lib_readline_rl_ding=no ;; -esac -fi -rm -f core conftest.err conftest.$ac_objext conftest.beam \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS ;; -esac -fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_readline_rl_ding" >&5 -printf "%s\n" "$ac_cv_lib_readline_rl_ding" >&6; } -if test "x$ac_cv_lib_readline_rl_ding" = xyes -then : - -printf "%s\n" "#define HAVE_RL_DING 1" >>confdefs.h - -fi - - - LIBS="$BASE_LIBS" - CLIENT_LIBS="$READLINE_LIBS $TINFO_LIBS" -fi - - - -mkdir -p $objdir/sysdep -ac_config_headers="$ac_config_headers $objdir/sysdep/autoconf.h:sysdep/autoconf.h.in" - -ac_config_files="$ac_config_files Makefile:Makefile.in" - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# 'ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* 'ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -printf "%s\n" "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # 'set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # 'set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test ${\1+y} || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -printf "%s\n" "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -printf "%s\n" "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`printf "%s\n" "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -printf "%s\n" "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test ${ZSH_VERSION+y} && (emulate sh) >/dev/null 2>&1 -then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else case e in #( - e) case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac ;; -esac -fi - - - -# Reset variables that may have inherited troublesome values from -# the environment. - -# IFS needs to be set, to space, tab, and newline, in precisely that order. -# (If _AS_PATH_WALK were called with IFS unset, it would have the -# side effect of setting IFS to empty, thus disabling word splitting.) -# Quoting is to prevent editors from complaining about space-tab. -as_nl=' -' -export as_nl -IFS=" "" $as_nl" - -PS1='$ ' -PS2='> ' -PS4='+ ' - -# Ensure predictable behavior from utilities with locale-dependent output. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# We cannot yet rely on "unset" to work, but we need these variables -# to be unset--not just set to an empty or harmless value--now, to -# avoid bugs in old shells (e.g. pre-3.0 UWIN ksh). This construct -# also avoids known problems related to "unset" and subshell syntax -# in other old shells (e.g. bash 2.01 and pdksh 5.2.14). -for as_var in BASH_ENV ENV MAIL MAILPATH CDPATH -do eval test \${$as_var+y} \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done - -# Ensure that fds 0, 1, and 2 are open. -if (exec 3>&0) 2>/dev/null; then :; else exec 0&1) 2>/dev/null; then :; else exec 1>/dev/null; fi -if (exec 3>&2) ; then :; else exec 2>/dev/null; fi - -# The user is always right. -if ${PATH_SEPARATOR+false} :; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - case $as_dir in #((( - '') as_dir=./ ;; - */) ;; - *) as_dir=$as_dir/ ;; - esac - test -r "$as_dir$0" && as_myself=$as_dir$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as 'sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - printf "%s\n" "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - printf "%s\n" "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - printf "%s\n" "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null -then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else case e in #( - e) as_fn_append () - { - eval $1=\$$1\$2 - } ;; -esac -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null -then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else case e in #( - e) as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } ;; -esac -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - -# Determine whether it's possible to make 'echo' print without a newline. -# These variables are no longer used directly by Autoconf, but are AC_SUBSTed -# for compatibility with existing Makefiles. -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -# For backward compatibility with old third-party macros, we provide -# the shell variables $as_echo and $as_echo_n. New code should use -# AS_ECHO(["message"]) and AS_ECHO_N(["message"]), respectively. -as_echo='printf %s\n' -as_echo_n='printf %s' - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both 'ln -s file dir' and 'ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; 'ln -s' creates a wrapper executable. - # In both cases, we have to default to 'cp -pR'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -pR' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -pR' - fi -else - as_ln_s='cp -pR' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`printf "%s\n" "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - - -# as_fn_executable_p FILE -# ----------------------- -# Test if FILE is an executable regular file. -as_fn_executable_p () -{ - test -f "$1" && test -x "$1" -} # as_fn_executable_p -as_test_x='test -x' -as_executable_p=as_fn_executable_p - -# Sed expression to map a string onto a valid CPP name. -as_sed_cpp="y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" -as_tr_cpp="eval sed '$as_sed_cpp'" # deprecated - -# Sed expression to map a string onto a valid variable name. -as_sed_sh="y%*+%pp%;s%[^_$as_cr_alnum]%_%g" -as_tr_sh="eval sed '$as_sed_sh'" # deprecated - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by $as_me, which was -generated by GNU Autoconf 2.72. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -'$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Report bugs to the package provider." - -_ACEOF -ac_cs_config=`printf "%s\n" "$ac_configure_args" | sed "$ac_safe_unquote"` -ac_cs_config_escaped=`printf "%s\n" "$ac_cs_config" | sed "s/^ //; s/'/'\\\\\\\\''/g"` -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config='$ac_cs_config_escaped' -ac_cs_version="\\ -config.status -configured by $0, generated by GNU Autoconf 2.72, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2023 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - printf "%s\n" "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - printf "%s\n" "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`printf "%s\n" "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: '$1' -Try '$0 --help' for more information.";; - --help | --hel | -h ) - printf "%s\n" "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: '$1' -Try '$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \printf "%s\n" "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - printf "%s\n" "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "$objdir/sysdep/autoconf.h") CONFIG_HEADERS="$CONFIG_HEADERS $objdir/sysdep/autoconf.h:sysdep/autoconf.h.in" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile:Makefile.in" ;; - - *) as_fn_error $? "invalid argument: '$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test ${CONFIG_FILES+y} || CONFIG_FILES=$config_files - test ${CONFIG_HEADERS+y} || CONFIG_HEADERS=$config_headers -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to '$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with './config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with './config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script 'defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS " -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag '$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain ':'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: '$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`printf "%s\n" "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is 'configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - printf "%s\n" "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -printf "%s\n" "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`printf "%s\n" "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -printf "%s\n" X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`printf "%s\n" "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`printf "%s\n" "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when '$srcdir' = '.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -printf "%s\n" "$as_me: WARNING: $ac_file contains a reference to the variable 'datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -printf "%s\n" "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - printf "%s\n" "/* $configure_input */" >&1 \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi - ;; - - - esac - -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { printf "%s\n" "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -printf "%s\n" "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - - -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: " >&5 -printf "%s\n" "" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: BIRD was configured with the following options:" >&5 -printf "%s\n" "BIRD was configured with the following options:" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Source directory: $srcdir" >&5 -printf "%s\n" " Source directory: $srcdir" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Object directory: $objdir" >&5 -printf "%s\n" " Object directory: $objdir" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Iproute2 directory: $iproutedir" >&5 -printf "%s\n" " Iproute2 directory: $iproutedir" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: System configuration: $sysdesc" >&5 -printf "%s\n" " System configuration: $sysdesc" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Debugging: $enable_debug" >&5 -printf "%s\n" " Debugging: $enable_debug" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Compact tries: $enable_compact_tries" >&5 -printf "%s\n" " Compact tries: $enable_compact_tries" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Routing protocols: $protocols" >&5 -printf "%s\n" " Routing protocols: $protocols" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: LibSSH support in RPKI: $enable_libssh" >&5 -printf "%s\n" " LibSSH support in RPKI: $enable_libssh" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Kernel MPLS support: $enable_mpls_kernel" >&5 -printf "%s\n" " Kernel MPLS support: $enable_mpls_kernel" >&6; } -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: Client: $enable_client" >&5 -printf "%s\n" " Client: $enable_client" >&6; } - -rm -f $objdir/.*-stamp - diff -Nru bird3-3.1.0/configure.ac bird3-3.1.7/configure.ac --- bird3-3.1.0/configure.ac 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/configure.ac 2026-06-09 09:02:34.000000000 +0000 @@ -18,6 +18,12 @@ [enable_debug=no] ) +AC_ARG_ENABLE([lto], + [AS_HELP_STRING([--enable-lto], [enable link-time optimization @<:@no@:>@])], + [], + [enable_lto=auto] +) + AC_ARG_ENABLE([debug-generated], [AS_HELP_STRING([--enable-debug-generated], [enable this to abstain from generating #line @<:@no@:>@])], [], @@ -74,6 +80,11 @@ [given_iproutedir="yes"] ) +AC_ARG_WITH([debugsrcdir], + [AS_HELP_STRING([--with-debugsrcdir=PATH], [path to installed source files for package build])], + [debugsrcdir="$with_debugsrcdir"] +) + AC_ARG_VAR([FLEX], [location of the Flex program]) AC_ARG_VAR([BISON], [location of the Bison program]) AC_ARG_VAR([M4], [location of the M4 program]) @@ -143,6 +154,16 @@ AC_MSG_ERROR([POSIX threads not available.]) fi +BIRD_CHECK_LIBATOMIC + +if test "$bird_cv_lib_atomic" = native ; then + true # do nothing +elif test "$bird_cv_lib_atomic" = no ; then + AC_MSG_ERROR([Atomic calls are broken.]) +else + LIBS="$LIBS $bird_cv_lib_atomic" +fi + # This is assumed to be necessary for proper BIRD build CFLAGS="$CFLAGS -fno-strict-aliasing -fno-strict-overflow" @@ -152,14 +173,22 @@ BIRD_CHECK_GCC_OPTION([bird_cv_c_option_watomic_implicit_seq_cst], [-Watomic-implicit-seq-cst], [-Wall -Wextra]) BIRD_CHECK_GCC_OPTION([bird_cv_c_option_werror_implicit_function_declaration], [-Werror=implicit-function-declaration], [-Wall -Wextra]) - if test "$enable_debug" = no; then + if test "$enable_lto" = no || (test "$enable_debug" = yes && test "$enable_lto" = auto); then + # LTO is not configured at all + true + else LTO_CFLAGS=-flto + AS_CASE(${bird_cv_compiler_vendor}, gnu,LTO_LDFLAGS="-flto=jobserver", llvm,LTO_LDFLAGS="-flto", unknown,LTO_LDFLAGS="-flto", AC_MSG_ERROR([Compiler vendor check failed for LTO: got ${bird_cv_compiler_vendor}])) BIRD_CHECK_LTO(${LTO_CFLAGS}, ${LTO_LDFLAGS}) + + if test "$enable_lto" = yes && test "$bird_cv_c_lto" = no; then + AC_MSG_ERROR([LTO not available.]) + fi fi if test "$bird_cv_c_lto" = yes; then @@ -454,6 +483,11 @@ fi fi +if test -n "$debugsrcdir" ; then + CFLAGS="$CFLAGS -ffile-prefix-map=$srcdir=$debugsrcdir -ffile-prefix-map=`readlink -f $srcdir`=$debugsrcdir" + LDFLAGS="$LDFLAGS -ffile-prefix-map=$srcdir=$debugsrcdir -ffile-prefix-map=`readlink -f $srcdir`=$debugsrcdir" +fi + if test "$enable_compact_tries" = yes ; then AC_DEFINE([ENABLE_COMPACT_TRIES], [1], [Define to 1 if you want 4-way tries instead of 16-way ones.]) fi @@ -518,6 +552,7 @@ AC_MSG_RESULT([ Iproute2 directory: $iproutedir]) AC_MSG_RESULT([ System configuration: $sysdesc]) AC_MSG_RESULT([ Debugging: $enable_debug]) +AC_MSG_RESULT([ Link-time optimization: $enable_lto]) AC_MSG_RESULT([ Compact tries: $enable_compact_tries]) AC_MSG_RESULT([ Routing protocols: $protocols]) AC_MSG_RESULT([ LibSSH support in RPKI: $enable_libssh]) diff -Nru bird3-3.1.0/debian/bird3.bird.service bird3-3.1.7/debian/bird3.bird.service --- bird3-3.1.0/debian/bird3.bird.service 2025-04-03 21:11:54.000000000 +0000 +++ bird3-3.1.7/debian/bird3.bird.service 2026-06-14 18:50:51.000000000 +0000 @@ -8,7 +8,7 @@ ExecStartPre=/usr/sbin/bird -p ExecReload=/usr/sbin/birdc configure ExecStart=/usr/sbin/bird -f -u $BIRD_RUN_USER -g $BIRD_RUN_GROUP $BIRD_ARGS -Restart=on-abort +Restart=on-abnormal [Install] WantedBy=multi-user.target diff -Nru bird3-3.1.0/debian/changelog bird3-3.1.7/debian/changelog --- bird3-3.1.0/debian/changelog 2025-04-03 21:14:39.000000000 +0000 +++ bird3-3.1.7/debian/changelog 2026-06-14 18:50:51.000000000 +0000 @@ -1,3 +1,9 @@ +bird3 (3.1.7-0+deb13u1) trixie-security; urgency=medium + + * New upstream release. + + -- Marco d'Itri Sun, 14 Jun 2026 20:50:51 +0200 + bird3 (3.1.0-1) unstable; urgency=medium * Upload to unstable (Closes: #1090749: ITP bird3) diff -Nru bird3-3.1.0/debian/control bird3-3.1.7/debian/control --- bird3-3.1.0/debian/control 2025-04-03 21:11:54.000000000 +0000 +++ bird3-3.1.7/debian/control 2026-06-14 18:50:51.000000000 +0000 @@ -17,10 +17,10 @@ linuxdoc-tools-latex, opensp, texlive-latex-extra, -Maintainer: Jakub Ružička +Maintainer: Marco d'Itri Standards-Version: 4.7.0 -Vcs-Browser: https://salsa.debian.org/debian/bird3 -Vcs-Git: https://salsa.debian.org/debian/bird3.git +Vcs-Browser: https://salsa.debian.org/md/bird +Vcs-Git: https://salsa.debian.org/md/bird.git -b debian/bird3/trixie Homepage: https://bird.network.cz/ Rules-Requires-Root: no diff -Nru bird3-3.1.0/debian/gbp.conf bird3-3.1.7/debian/gbp.conf --- bird3-3.1.0/debian/gbp.conf 2025-04-03 21:11:54.000000000 +0000 +++ bird3-3.1.7/debian/gbp.conf 2026-06-14 18:50:51.000000000 +0000 @@ -1,9 +1,6 @@ [DEFAULT] -debian-branch = debian/master +debian-branch = debian/bird3/trixie debian-tag = debian/%(version)s -upstream-branch = upstream -upstream-tag = upstream/%(version)s -pristine-tar = True - -[dch] -meta = 1 +upstream-branch = stable-v3.1 +upstream-tag = v%(version)s +compression = xz diff -Nru bird3-3.1.0/debian/patches/adapt_version_script bird3-3.1.7/debian/patches/adapt_version_script --- bird3-3.1.0/debian/patches/adapt_version_script 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/debian/patches/adapt_version_script 2026-06-14 18:50:51.000000000 +0000 @@ -0,0 +1,17 @@ +From: Marco d'Itri +Subject: adapt the version generator script for the Debian packaging + +Forwarded: not-needed + +--- a/tools/version ++++ b/tools/version +@@ -6,6 +6,9 @@ set -e + toplevel="$(readlink -f $(dirname $0)/../)" + RELEASE_VERSION=$(cat "$toplevel/VERSION") + ++# ignore everything when building the Debian package from the Debian git tree ++git() { false; } ++ + # Not in a git repo, or no git installed. + if ! git status --porcelain > /dev/null; then + echo $RELEASE_VERSION diff -Nru bird3-3.1.0/debian/patches/series bird3-3.1.7/debian/patches/series --- bird3-3.1.0/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/debian/patches/series 2026-06-14 18:50:51.000000000 +0000 @@ -0,0 +1 @@ +adapt_version_script diff -Nru bird3-3.1.0/debian/watch bird3-3.1.7/debian/watch --- bird3-3.1.0/debian/watch 2025-04-03 21:11:54.000000000 +0000 +++ bird3-3.1.7/debian/watch 2026-06-14 18:50:51.000000000 +0000 @@ -1,2 +1,2 @@ version=4 -https://bird.network.cz/download/bird-(3\.[\d.]+).tar.gz +https://bird.nic.cz/download/ bird-(3\.[\d.]+).tar.gz diff -Nru bird3-3.1.0/distro/README.md bird3-3.1.7/distro/README.md --- bird3-3.1.0/distro/README.md 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/distro/README.md 2026-06-09 09:02:34.000000000 +0000 @@ -1,69 +1,12 @@ # BIRD upstream packaging sources This distro/ directory contains packaging sources initially copied from Debian -and Fedora downstream repos. - -Files in this directory follow [apkg] conventions and apkg can be used to -create BIRD packages for various distros directly from upstream sources as -well as from upstream archives. - -[apkg]: https://apkg.rtfd.io - +and Fedora downstream repos. The team then updated these files for internal +integration testing and upstream repository builds. ## Create (source) package from current repo commit -Following command should build source package for current distro directly -from current repo state - run at top bird directory: - - apkg srcpkg - -or build native packages directly: - - apkg build - -or in case of disposable VM/container you can use faster direct host build - - apkg build -Hi - -tools/make-archive script is in charge of creating archive from source. - - -## Create (source) package from upstream release - -Following commands can be used to clone upstream repo, download current upstream -archive (tarball), and build Debian, Ubuntu, Fedora, CentOS, or OpenSUSE -source package (depending on host system) using files in bird/distro: - - git clone https://gitlab.nic.cz/labs/bird - cd bird - apkg get-archive - apkg srcpkg -a pkg/archives/upstream/bird-2.0.8.tar.gz - -To create native packages instead use `build`: - - apkg build -a pkg/archives/upstream/bird-2.0.8.tar.gz - -Or to build packages directly in case of a disposable VM/container (faster, modifies system): - - apkg build -Hi -a pkg/archives/upstream/bird-2.0.8.tar.gz - - -## Build packages in openSUSE Build Service (OBS) - -tools/make-obs script can be used on Debian-based system to create OBS -source package in pkg/obs directory ready to be uploaded: - - cd bird - apkg get-archive - ./tools/make-obs - # result in pkg/obs - -You can also supply (upstream) archive to build from: - - # or to use specified archive - ./tools/make-obs pkg/archives/upstream/bird-2.0.8.tar.gz - - -## More Info +Run `tools/make-archive` or `make archive` to create TGZ. -Please see [apkg docs][apkg]. +Run `tools/make-deb` or `tools/make-rpm` or `make deb` or `make rpm` to create +DEBs and/or RPMs for the current system. diff -Nru bird3-3.1.0/distro/config/apkg.toml bird3-3.1.7/distro/config/apkg.toml --- bird3-3.1.0/distro/config/apkg.toml 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/distro/config/apkg.toml 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -[project] -name = "bird" -# needed for make-archive -make_archive_script = "tools/make-archive" - -[upstream] -# needed for get-archive -archive_url = "https://bird.network.cz/download/bird-{{ version }}.tar.gz" - -[apkg] -# apkg compat level -compat = 3 diff -Nru bird3-3.1.0/distro/pkg/deb/bird.xml bird3-3.1.7/distro/pkg/deb/bird.xml --- bird3-3.1.0/distro/pkg/deb/bird.xml 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/bird.xml 2026-06-09 09:02:34.000000000 +0000 @@ -306,6 +306,6 @@ SEE ALSO More documentation can be found on the website: - https://bird.network.cz/. + https://bird.nic.cz/. diff -Nru bird3-3.1.0/distro/pkg/deb/changelog bird3-3.1.7/distro/pkg/deb/changelog --- bird3-3.1.0/distro/pkg/deb/changelog 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/changelog 2026-06-09 09:02:34.000000000 +0000 @@ -1,5 +1,5 @@ bird3 ({{ version }}-cznic.{{ release }}) unstable; urgency=medium - * upstream package + * {{ relinfo }} - -- Jakub Ružička {{ now }} + -- Maria Matějka {{ now }} diff -Nru bird3-3.1.0/distro/pkg/deb/control bird3-3.1.7/distro/pkg/deb/control --- bird3-3.1.0/distro/pkg/deb/control 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/control 2026-06-09 09:02:34.000000000 +0000 @@ -17,11 +17,11 @@ linuxdoc-tools-latex, opensp, texlive-latex-extra, -Maintainer: Jakub Ružička +Maintainer: Maria Matejka Standards-Version: 4.7.0 Vcs-Browser: https://salsa.debian.org/debian/bird3 Vcs-Git: https://salsa.debian.org/debian/bird3.git -Homepage: https://bird.network.cz/ +Homepage: https://bird.nic.cz/ Rules-Requires-Root: no Package: bird3 @@ -31,6 +31,7 @@ Depends: adduser, ucf, + libatomic1 [armel], ${misc:Depends}, ${shlibs:Depends}, Conflicts: diff -Nru bird3-3.1.0/distro/pkg/deb/copyright bird3-3.1.7/distro/pkg/deb/copyright --- bird3-3.1.0/distro/pkg/deb/copyright 2022-03-02 09:29:17.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/copyright 2026-06-09 09:02:34.000000000 +0000 @@ -1,7 +1,7 @@ Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: bird Upstream-Contact: bird-users@network.cz -Source: https://bird.network.cz +Source: https://bird.nic.cz Files: * Copyright: 1998-2008 Martin Mareš diff -Nru bird3-3.1.0/distro/pkg/deb/rules bird3-3.1.7/distro/pkg/deb/rules --- bird3-3.1.0/distro/pkg/deb/rules 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/rules 2026-06-09 09:02:34.000000000 +0000 @@ -17,11 +17,16 @@ CFLAGS += -g -O2 -fno-strict-aliasing -fno-strict-overflow -fPIC LDFLAGS += -g -O2 -fno-strict-aliasing -fno-strict-overflow -fPIC -Wl,-z,defs -Wl,--as-needed +# BIRD 3 needs atomic 64-bit instructions which are converted to libatomic calls at armel +ifeq (armel,$(DEB_TARGET_ARCH)) + LIBS += -latomic +endif + %: dh $@ override_dh_auto_configure: - CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" dh_auto_configure -- $(COMMON_FLAGS) --with-protocols=all + CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" LIBS="$(LIBS)" dh_auto_configure -- $(COMMON_FLAGS) --with-protocols=all override_dh_auto_build-indep: dh_auto_build -- docs diff -Nru bird3-3.1.0/distro/pkg/deb/watch bird3-3.1.7/distro/pkg/deb/watch --- bird3-3.1.0/distro/pkg/deb/watch 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/distro/pkg/deb/watch 2026-06-09 09:02:34.000000000 +0000 @@ -1,2 +1,2 @@ version=4 -https://bird.network.cz/download/bird-(2\.[\d.]+).tar.gz +https://bird.nic.cz/download/bird-(3.1\.\d+).tar.gz diff -Nru bird3-3.1.0/distro/pkg/rpm/bird.spec bird3-3.1.7/distro/pkg/rpm/bird.spec --- bird3-3.1.0/distro/pkg/rpm/bird.spec 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/distro/pkg/rpm/bird.spec 2026-06-09 09:02:34.000000000 +0000 @@ -2,6 +2,11 @@ %global _without_doc 1 %{!?_rundir:%global _rundir %%{_localstatedir}/run} +%define bird_user bird +%define bird_group bird + +%define legacy_users ( 0%{?rhel} && 0%{?rhel} <= 8 ) + Name: bird Version: {{ version }} Release: cznic.{{ release }}%{?dist} @@ -9,11 +14,11 @@ Group: System Environment/Daemons License: GPL-2.0-or-later -URL: https://bird.network.cz/ -Source0: https://bird.network.cz/download/bird-%{version}.tar.gz +URL: https://bird.nic.cz/ +Source0: https://bird.nic.cz/download/bird-%{version}.tar.gz Source1: bird.service Source2: bird.tmpfilesd -Source3: bird.sysusersd +Source3: system-user-bird.conf BuildRequires: autoconf BuildRequires: flex @@ -29,8 +34,13 @@ BuildRequires: devtoolset-8-toolchain %endif BuildRequires: systemd-rpm-macros +%if 0%{?suse_version} +BuildRequires: sysuser-tools +%endif + %{?systemd_requires} %{?sysusers_requires_compat} +%{?sysusers_requires} %description BIRD is a dynamic IP routing daemon supporting both, IPv4 and IPv6, Border @@ -71,15 +81,18 @@ %configure --runstatedir=%{_rundir}/bird %make_build all %{!?_without_doc:docs} +%if 0%{?suse_version} +%sysusers_generate_pre %{SOURCE3} bird system-user-bird.conf +%endif + %install %make_install -{% raw %} -install -d %{buildroot}{%{_localstatedir}/lib/bird,%{_rundir}/bird} +install -d %{buildroot}%{_localstatedir}/lib/bird +install -d %{buildroot}%{_rundir}/bird install -D -p -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/bird.service install -D -p -m 0644 %{SOURCE2} %{buildroot}%{_tmpfilesdir}/bird.conf -install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/bird.conf -{% endraw %} +install -D -p -m 0644 %{SOURCE3} %{buildroot}%{_sysusersdir}/system-user-bird.conf %check %if 0%{?rhel} && 0%{?rhel} < 8 @@ -88,8 +101,21 @@ make test +%if ! %{legacy_users} && ! 0%{?suse_version} %pre %sysusers_create_compat %{SOURCE3} +%endif + +%if 0%{?suse_version} +%pre -f bird.pre +%endif + +%if %{legacy_users} +%pre +# Create bird user/group manually +getent group %{bird_group} >/dev/null || groupadd -r %{bird_group} +getent passwd %{bird_user} >/dev/null || useradd -r -g %{bird_group} -d /var/lib/bird -s /sbin/nologin -c "BIRD daemon user" %{bird_user} +%endif %post %systemd_post bird.service @@ -104,7 +130,7 @@ %doc NEWS README %attr(0640,root,bird) %config(noreplace) %{_sysconfdir}/bird.conf %{_unitdir}/bird.service -%{_sysusersdir}/bird.conf +%{_sysusersdir}/system-user-bird.conf %{_tmpfilesdir}/bird.conf %{_sbindir}/bird %{_sbindir}/birdc @@ -123,5 +149,5 @@ %endif %changelog -* Wed Apr 07 2021 Jakub Ružička - {{ version }}-cznic.1 -- upstream package +* {{ now }} Maria Matejka - {{ version }}-cznic.{{ release }} +- {{ relinfo }} diff -Nru bird3-3.1.0/distro/pkg/rpm/bird.sysusersd bird3-3.1.7/distro/pkg/rpm/bird.sysusersd --- bird3-3.1.0/distro/pkg/rpm/bird.sysusersd 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/distro/pkg/rpm/bird.sysusersd 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -#Type Name ID GECOS Home directory Shell -u bird - "BIRD daemon user" /var/lib/bird - diff -Nru bird3-3.1.0/distro/pkg/rpm/system-user-bird.conf bird3-3.1.7/distro/pkg/rpm/system-user-bird.conf --- bird3-3.1.0/distro/pkg/rpm/system-user-bird.conf 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/distro/pkg/rpm/system-user-bird.conf 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,2 @@ +#Type Name ID GECOS Home directory Shell +u bird - "BIRD daemon user" /var/lib/bird - diff -Nru bird3-3.1.0/doc/Makefile bird3-3.1.7/doc/Makefile --- bird3-3.1.0/doc/Makefile 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/doc/Makefile 2026-06-09 09:02:34.000000000 +0000 @@ -20,22 +20,23 @@ $(srcdir)/tools/progdoc $(srcdir) $@ $(o)%.sgml: $(s)%.sgml $(objdir)/.dir-stamp - cp $< $@ + sed 's#{{ VERSION }}#$(VERSION)#' <$< >$@ $(o)%.html: $(o)%.sgml cd $(dir $@) && $(toolsdir)/linuxdoc -B html $(notdir $<) ifeq ($(PANDOC),) -$(o)%.md: $(s)%.sgml +$(o)%.md: $(o)%.sgml @echo "ERROR: No pandoc available, install pandoc to build documentation" @false else LINUXDOC_PANDOC_PARSER := $(srcdir)/tools/linuxdoc.lua -$(o)%.md: $(s)%.sgml $(LINUXDOC_PANDOC_PARSER) $(objdir)/.dir-stamp +SINGLEPAGE_HTML_TEMPLATE := $(srcdir)/tools/doc-template.html +$(o)%.md: $(o)%.sgml $(LINUXDOC_PANDOC_PARSER) $(objdir)/.dir-stamp $(PANDOC) -f $(LINUXDOC_PANDOC_PARSER) -s -t markdown -o $@ $< -$(o)%-singlepage.html: $(o)%.md - $(PANDOC) -f markdown -t html5 -s -o $@ $< +$(o)%-singlepage.html: $(o)%.sgml $(SINGLEPAGE_HTML_TEMPLATE) $(LINUXDOC_PANDOC_PARSER) $(objdir)/.dir-stamp + $(PANDOC) -f $(LINUXDOC_PANDOC_PARSER) -t html5 --shift-heading-level-by=1 --section-divs --table-of-contents --toc-depth=3 -M bird_version="$(VERSION)" --template=$(SINGLEPAGE_HTML_TEMPLATE) -o $@ $< endif diff -Nru bird3-3.1.0/doc/bird.conf.example bird3-3.1.7/doc/bird.conf.example --- bird3-3.1.0/doc/bird.conf.example 2022-03-02 09:29:17.000000000 +0000 +++ bird3-3.1.7/doc/bird.conf.example 2026-06-09 09:02:34.000000000 +0000 @@ -3,7 +3,7 @@ # anything else to happen. # # Please refer to the BIRD User's Guide documentation, which is also available -# online at http://bird.network.cz/ in HTML format, for more information on +# online at http://bird.nic.cz/ in HTML format, for more information on # configuring BIRD and adding routing protocols. # Configure logging diff -Nru bird3-3.1.0/doc/bird.sgml bird3-3.1.7/doc/bird.sgml --- bird3-3.1.0/doc/bird.sgml 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/doc/bird.sgml 2026-06-09 09:02:34.000000000 +0000 @@ -1,7 +1,7 @@ - + @@ -547,6 +547,7 @@ + diff -Nru bird3-3.1.0/doc/slides/Makefile bird3-3.1.7/doc/slides/Makefile --- bird3-3.1.0/doc/slides/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/Makefile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,19 @@ +all: slides.dvi + +slides.dvi: slides.tex + csplain slides.tex + +slides.ps: slides.dvi + dvips -o slides.ps -D600 -ta4 slides.dvi + +view: slides.dvi + xdvi -expert -geometry 1100x700 -l -s 4 -paper a4 -margins 1in slides.dvi + +viewlarge: slides.dvi + xdvi -expert -geometry 1024x700 -l -s 1 -paper a4 -margins 1in slides.dvi + +viewreal: slides.dvi + xdvi -expert -geometry 1024x700 -l -s 6 -paper a4 -margins 1in slides.dvi + +clean: + rm -f *~ *.log *.tfm *.*pk *.*gf *.ps *.dvi diff -Nru bird3-3.1.0/doc/slides/logo.eps bird3-3.1.7/doc/slides/logo.eps --- bird3-3.1.0/doc/slides/logo.eps 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/logo.eps 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,454 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 16 477 580 811 +%%Creator: CorelDRAW 8 +%%Title: C:\Dokumenty\bird\333333.eps +%%CreationDate: Sun Jun 25 11:14:25 2000 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: (atend) +%%EndComments +%%BeginProlog +/AutoFlatness false def +/AutoSteps 0 def +/CMYKMarks true def +/UseLevel 1 def +%Color profile: PROFILES.CCM - Obecn profil tiskrny CMYK +%%BeginResource: procset wCorel8Dict 8.0 0 +/wCorel8Dict 300 dict def wCorel8Dict begin +% Copyright (c)1992-97 Corel Corporation +% All rights reserved. v8.0 r0.7 +/bd{bind def}bind def/ld{load def}bd/xd{exch def}bd/_ null def/rp{{pop}repeat} +bd/@cp/closepath ld/@gs/gsave ld/@gr/grestore ld/@np/newpath ld/Tl/translate ld +/$sv 0 def/@sv{/$sv save def}bd/@rs{$sv restore}bd/spg/showpage ld/showpage{} +bd currentscreen/@dsp xd/$dsp/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF +false def/$Scra 0 def/SetScr/setscreen ld/setscreen{pop pop pop}bd/@ss{2 index +0 eq{$dsf 3 1 roll 4 -1 roll pop}if exch $Scra add exch load SetScr}bd +/SepMode_5 where{pop}{/SepMode_5 0 def}ifelse/CurrentInkName_5 where{pop} +{/CurrentInkName_5(Composite)def}ifelse/$ink_5 where{pop}{/$ink_5 -1 def} +ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def/$t 1 def/$n _ def/$o 0 def/$fil 0 +def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 def/$N _ def/$O 0 def/$PF false +def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def/s1t 0 def/s1n _ def/$bkg false def +/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op false def matrix currentmatrix/$ctm xd +/$ptm matrix def/$ttm matrix def/$stm matrix def/$ffpnt true def +/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring +16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle +16#60/grave 16#7C/bar +16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl +16#88/circumflex/perthousand/Scaron/guilsinglleft/OE +16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash +16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis +16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section +16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron +16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def +/@BeginSysCorelDict{systemdict/Corel30Dict known{systemdict/Corel30Dict get +exec}if systemdict/CorelLexDict known{1 systemdict/CorelLexDict get exec}if}bd +/@EndSysCorelDict{systemdict/Corel30Dict known{end}if/EndCorelLexDict where +{pop EndCorelLexDict}if}bd AutoFlatness{/@ifl{dup currentflat exch sub 10 gt{ +([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush +@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{ +{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill +{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip +/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat} +bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse} +bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped +{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{ +/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit +ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l +/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp} +bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1 +exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1 +sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type +/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd +/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def} +ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{ +/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{ +dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2 +copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix +/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd +{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd} +if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch +load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA} +{$dsa}ifelse $SCP @ss}if}bd/p{/$pm xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def} +bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge{pop}{exch pop}ifelse}bd +/InRange{3 -1 roll @MN @MX}bd/@sqr{dup 0 rl dup 0 exch rl neg 0 rl @cp}bd +/currentscale{1 0 dtransform matrix defaultmatrix idtransform dup mul exch dup +mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform dup mul exch dup +mul add sqrt}bd/@unscale{}bd/wDstChck{2 1 roll dup 3 -1 roll eq{1 add}if}bd +/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1 exch sub}bd +/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}repeat pop}bd +/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1 roll sub neg +exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index .114 mul add +4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb/setrgbcolor ld/GetRgb +/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray ld/SetRgb2 systemdict +/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor get def/SetHsb +systemdict/sethsbcolor get def/GetHsb systemdict/currenthsbcolor get def +/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor sub 3 1 roll SetHsb +GetRgb2}bd/setcmykcolor where{pop/SetCmyk_5/setcmykcolor ld}{/SetCmyk_5{ +cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{pop/GetCmyk/currentcmykcolor +ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse/setoverprint where{pop}{/setoverprint{ +/$op xd}bd}ifelse/currentoverprint where{pop}{/currentoverprint{$op}bd}ifelse +/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1 roll mul exch}repeat pop}ifelse}bd +/@trp{exch pop 5 1 roll @tc_5}bd/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 +4 $ink_5 sub index exch pop 5 1 roll pop pop pop pop SepsColor true eq{$ink_5 3 +gt{1 sub neg SetGry}{0 0 0 4 $ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry} +ifelse}ifelse}bd/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array +astore}bd}ifelse/setcustomcolor where{pop}{/setcustomcolor{exch aload pop +SepMode_5 0 eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0} +ifelse 6 1 roll 5 rp 1 sub neg SetGry}ifelse}bd}ifelse/@scc_5{dup type +/booleantype eq{setoverprint}{1 eq setoverprint}ifelse dup _ eq{pop +setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse SepMode_5 +0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage where{pop +/ColorImage{colorimage}def}{/ColorImage{/ncolors xd pop/dataaq xd{dataaq +ncolors dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index +get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g +255 mul cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv +getinterval pop}{4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 +index get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div +$dat 4 index 3 add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 +roll put}for $dat 0 $dat length ncolors idiv getinterval}if}ifelse}image}bd +}ifelse/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd +/currentcmykcolor{0 0 0 0}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd +/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor} +bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd +/currentgray{currentrgbcolor rgb2g}bd/InsideDCS false def/IMAGE systemdict +/image get def/image{InsideDCS{IMAGE}{/EPSDict where{pop SepMode_5 0 eq{IMAGE} +{dup type/dicttype eq{dup/ImageType get 1 ne{IMAGE}{dup dup/BitsPerComponent +get 8 eq exch/BitsPerComponent get 1 eq or currentcolorspace 0 get/DeviceGray +eq and{CurrentInkName_5(Black)eq{IMAGE}{dup/DataSource get/TCC xd/Height get +abs{TCC pop}repeat}ifelse}{IMAGE}ifelse}ifelse}{2 index 1 ne{CurrentInkName_5 +(Black)eq{IMAGE}{/TCC xd pop pop exch pop abs{TCC pop}repeat}ifelse}{IMAGE} +ifelse}ifelse}ifelse}{IMAGE}ifelse}ifelse}bd}ifelse/WaldoColor_5 true def/@sft +{$tllx $pxf add dup $tllx gt{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt +{$phei add}if/$ty xd}bd/@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd/@ep{{ +cvx exec}forall}bd/@tp{@sv/$in true def 2 copy dup $lly le{/$in false def}if +$phei sub $ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add +$llx le{/$in false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg +0 rl 0 $phei rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 +roll 3 index sub Tl matrix currentmatrix/$ctm xd @ep pop pop pop pop}{pop pop +}ifelse @rs}bd/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{dup $llx gt{$pwid +sub}{exit}ifelse}loop exch $phei mul $ty exch sub 0 1 $tlx 1 sub{$pwid mul 3 +copy 3 -1 roll add exch @tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup +$pwid mul $tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit} +ifelse}loop 0 1 $tly 1 sub{$phei mul 3 copy sub @tp pop}for pop pop}for}bd/$fm +0 def/wfill{1 $fm eq{fill}{eofill}ifelse}bd/wclip{1 $fm eq{clip}{eoclip}ifelse +}bd/@pf{@gs $ctm setmatrix $pm concat @stb wclip @sv Bburx Bbury $pm itransform +/$tury xd/$turx xd Bbllx Bblly $pm itransform/$tlly xd/$tllx xd newpath $tllx +$tlly m $tllx $tury l $turx $tury l $turx $tlly l $tllx $tlly m @cp pathbbox +@rs/$tury xd/$turx xd/$tlly xd/$tllx xd/$wid $turx $tllx sub def/$hei $tury +$tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{wfill}if}{$t $c $m $y $k $n $o +@scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei scale <00> 8 1 false[8 +0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse @gr $wid 0 gt $hei 0 gt +and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd exch sub/$pwid xd +$wid $pwid div ceiling 1 add/$tlx xd $hei $phei div ceiling 1 add/$tly xd $psx +0 eq{@tv}{@th}ifelse}if @gr @np/$bkg false def}bd/@Pf{@sv SepMode_5 0 eq $Psc 0 +ne or $ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y $k $n $o @scc_5 pop $ctm +setmatrix 72 1000 div dup matrix scale dup concat dup Bburx exch Bbury exch +itransform ceiling cvi/Bbury xd ceiling cvi/Bburx xd Bbllx exch Bblly exch +itransform floor cvi/Bblly xd floor cvi/Bbllx xd $Prm aload pop $Psn load exec +}{1 SetGry wfill}ifelse @rs @np}bd/F{matrix currentmatrix $sdf{$scf $sca $scp +@ss}if $fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 eq{@Pf}{$t $c $m $y $k $n $o @scc_5 +{wfill}{@np}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp @ss}if setmatrix} +bd/f{@cp F}bd/S{matrix currentmatrix $ctm setmatrix $SDF{$SCF $SCA $SCP @ss}if +$T $C $M $Y $K $N $O @scc_5{matrix currentmatrix $ptm concat stroke setmatrix} +{@np}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S} +bd/b{@cp B}bd/_E{5 array astore exch cvlit xd}bd/@cc{currentfile $dat +readhexstring pop}bd/@sm{/$ctm $ctm currentmatrix def}bd/@E{/Bbury xd/Bburx xd +/Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true +def}{@gs $t $c $m $y $k $n $o @scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd +/$pyf xd/$pxf xd/$pn xd}bd/@P{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd +}bd/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index 3 index l 3 +index 3 index l clip pop pop pop pop}bd/tcc{@cc}def/@i{@sm @gs @ii 6 index 1 ne +{/$frg true def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5/$frg xd}{/$frg +false def}ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np/$ury xd/$urx xd +/$lly xd/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 div ceiling cvi +string def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl $urx $llx sub +$ury $lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid $hei abs $bts +1 eq{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/tcc load +$bts 1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa $dsp @ss}if}{$hei abs{tcc pop} +repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd +/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div +ceiling cvi string def $ngx $llx $lly Tl $urx $llx sub $ury $lly sub scale $wid +$hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]/@cc load false $ncl +ColorImage $SDF{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd/COMP 0 def +/MaskedImage false def L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx +xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling +cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK} +ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8 +dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent +$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]} +ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def +/DataSource currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP +2 eq{/RunLengthDecode filter}if}ifelse def currentdict end image $SDF{$dsf $dsa +$dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/@I_3{@sm @gs @ii @np/$ury +xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul +$ncl mul 8 div ceiling cvi string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq +{/DeviceRGB}{/DeviceCMYK}ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub +$ury $lly sub scale/ImageDataDict 8 dict def ImageDataDict begin/ImageType 1 +def/Width $wid def/Height $hei abs def/BitsPerComponent $bts def/Decode $ncl 1 +eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]}ifelse}ifelse def +/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def/DataSource +currentfile/ASCII85Decode filter COMP 1 eq{/DCTDecode filter}{COMP 2 eq{ +/RunLengthDecode filter}if}ifelse def end/MaskedImageDict 7 dict def +MaskedImageDict begin/ImageType 3 def/InterleaveType 3 def/MaskDict +ImageMaskDict def/DataDict ImageDataDict def end MaskedImageDict image $SDF +{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd/@SetMask{/$mbts xd/$mhei xd/$mwid +xd/ImageMaskDict 8 dict def ImageMaskDict begin/ImageType 1 def/Width $mwid def +/Height $mhei abs def/BitsPerComponent $mbts def/DataSource maskstream def +/ImageMatrix[$mwid 0 0 $mhei neg 0 $mhei 0 gt{$mhei}{0}ifelse]def/Decode[1 0] +def end}bd/@B{@gs S @gr F}bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq +{/$ink_5 -1 def}{CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5 +(Magenta)eq{/$ink_5 1 def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{ +CurrentInkName_5(Black)eq{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse} +ifelse}ifelse}bd/@whi{@gs -72000 dup m -72000 72000 l 72000 dup l 72000 -72000 +l @cp 1 SetGry fill @gr}bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec +cvx]cvx settransfer @whi}bd/deflevel 0 def/@sax{/deflevel deflevel 1 add def} +bd/@eax{/deflevel deflevel dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax} +ifelse}bd/eax{{exec}forall}bd/@rax{deflevel 0 eq{@rs @sv}if}bd/@daq{dup type +/arraytype eq{{}forall}if}bd/@BMP{/@cc xd UseLevel 3 eq MaskedImage true eq and +{7 -2 roll pop pop @I_3}{12 index 1 gt UseLevel 2 eq UseLevel 3 eq or and{7 -2 +roll pop pop @I_2}{11 index 1 eq{12 -1 roll pop @i}{7 -2 roll pop pop @I} +ifelse}ifelse}ifelse}bd systemdict/pdfmark known not{/pdfmark/cleartomark ld} +if +/z{exch findfont exch scalefont setfont}bd/ZB{9 dict dup begin 4 1 roll +/FontType 3 def/FontMatrix xd/FontBBox xd/Encoding 256 array def 0 1 255{ +Encoding exch/.notdef put}for/CharStrings 256 dict def CharStrings/.notdef{} +put/Metrics 256 dict def Metrics/.notdef 3 -1 roll put/BuildChar{exch dup +/$char exch/Encoding get 3 index get def dup/Metrics get $char get aload pop +setcachedevice begin Encoding exch get CharStrings exch get end exec}def end +definefont pop}bd/ZBAddChar{findfont begin dup 4 1 roll dup 6 1 roll Encoding 3 +1 roll put CharStrings 3 1 roll put Metrics 3 1 roll put end}bd/Z{findfont dup +maxlength 2 add dict exch dup{1 index/FID ne{3 index 3 1 roll put}{pop pop} +ifelse}forall pop dup dup/Encoding get 256 array copy dup/$fe xd/Encoding exch +put dup/Fontname 3 index put 3 -1 roll dup length 0 ne{0 exch{dup type 0 type +eq{exch pop}{$fe exch 2 index exch put 1 add}ifelse}forall pop}if dup 256 dict +dup/$met xd/Metrics exch put dup/FontMatrix get 0 get 1000 mul 1 exch div 3 +index length 256 eq{0 1 255{dup $fe exch get dup/.notdef eq{pop pop}{5 index 3 +-1 roll get 2 index mul $met 3 1 roll put}ifelse}for}if pop definefont pop pop +}bd/@ftx{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup @gs true +charpath $ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch m} +forall}bd/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if $fil 1 eq +{/@@txt/@pf ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq{/@@txt/@Pf ld +@ftx}{$t $c $m $y $k $n $o @scc_5{show}{pop}ifelse}ifelse}ifelse}ifelse $sdf +{$dsf $dsa $dsp @ss}if setmatrix}bd/@st{matrix currentmatrix exch $SDF{$SCF +$SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc_5{{currentpoint 3 -1 roll(0)dup 3 -1 +roll 0 exch put dup @gs true charpath $ctm setmatrix $ptm concat stroke @gr @np +stringwidth pop 3 -1 roll add exch m}forall}{pop}ifelse $SDF{$dsf $dsa $dsp +@ss}if setmatrix}bd/@te{@ft}bd/@tr{@st}bd/@ta{dup @gs @ft @gr @st}bd/@t@a{dup +@gs @st @gr @ft}bd/@tm{@sm concat}bd/e{/t{@te}def}bd/r{/t{@tr}def}bd/o{/t{pop} +def}bd/a{/t{@ta}def}bd/@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix/$ttm +matrix def}bd/ddt{t}def/@t{/$stm $stm currentmatrix def 3 1 roll m $ttm concat +ddt $stm setmatrix}bd/@n{/$ttm exch matrix rotate def}bd/@s{}bd/@l{}bd +end +%%EndResource +%%EndProlog +%%BeginSetup +wCorel8Dict begin +@BeginSysCorelDict +2.6131 setmiterlimit +1.00 setflat +/$fst 256 def +%%EndSetup + +%%Page: 1 1 +%LogicalPage: 1 +%%BeginPageSetup +@sv +@sm +@sv +%%EndPageSetup +@rax %Note: Object +29.85335 518.65002 561.80353 728.45660 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 5.66929 5.66929 0.00000 @w +/$fm 0 def +295.82872 728.45660 m +442.32265 728.45660 561.80353 681.33146 561.80353 623.55345 c +561.80353 565.77458 442.32265 518.65002 295.82872 518.65002 c +149.33424 518.65002 29.85335 565.77458 29.85335 623.55345 c +29.85335 681.33146 149.33424 728.45660 295.82872 728.45660 c +@c +B + +@rax 82.51002 578.66967 509.14658 668.43666 @E +[0.00028346 0.00000000 0.00000000 0.00028346 82.51001273 578.66964812] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Swis721BlkExBT 437905.00000 z +%CHAR: 0 0 (B) @t +157208 78896 m +243986 78896 l +263911 78896 276829 80720 282741 84443 c +288652 88165 291645 94879 291645 104586 c +291645 114512 288579 121446 282449 125168 c +276318 128963 263473 130861 243986 130861 c +157208 130861 L +157208 78896 L +@c +157208 242234 m +157208 197568 L +239461 197568 l +257269 197568 268801 199174 274129 202385 c +279383 205596 282011 211362 282011 219828 c +282011 228367 279602 234206 274712 237417 c +269895 240629 258145 242234 239461 242234 c +157208 242234 L +@c +289090 316240 m +333246 316240 364556 310183 382875 297994 c +401194 285806 410317 265589 410317 237345 c +410317 221799 406741 208224 399661 196473 c +392509 184796 381999 175308 368205 168083 C +386451 162244 400172 152683 409441 139546 c +418710 126336 423381 109914 423381 90208 c +423381 60139 413528 37587 393896 22552 c +374190 7517 344631 0 305147 0 c +34667 0 L +34667 316240 L +289090 316240 l +@c +F +%CHAR: 440970 0 (I) @t +475637 0 m +475637 316240 L +598178 316240 L +598178 0 L +475637 0 L +@c +F +%CHAR: 632334 0 (R) @t +907703 316240 m +935218 316240 957260 314927 973827 312299 c +990321 309672 1003240 305585 1012509 299965 c +1024332 293031 1033382 283616 1039586 271866 c +1045789 260116 1048855 246541 1048855 231141 c +1048855 212457 1044257 196035 1034988 181877 c +1025719 167645 1012946 157427 996671 151150 C +1010611 145311 1020464 138086 1026084 129474 c +1031703 120862 1034988 105608 1036009 83786 c +1036155 81377 1036301 78020 1036447 73787 c +1038418 32405 1043965 9488 1053161 4890 C +1053161 0 L +916972 0 L +912812 6715 910550 19633 910112 38901 c +909820 50140 909309 58825 908579 64956 c +907265 76560 903397 84662 896902 89333 c +890479 94077 879604 96412 864351 96412 c +791221 96412 L +791221 0 L +667001 0 L +667001 316240 L +907703 316240 l +@c +791221 179614 m +862599 179614 l +881283 179614 894493 181804 902083 186256 c +909747 190635 913542 198079 913542 208443 c +913542 218734 909966 225886 902740 229973 c +895515 233987 881137 236031 859607 236031 c +791221 236031 L +791221 179614 L +@c +F +%CHAR: 1066298 0 (D) @t +1223506 238220 m +1223506 84005 L +1284448 84005 l +1316196 84005 1338967 90062 1352688 102105 c +1366482 114147 1373342 133853 1373342 161222 c +1373342 188445 1366409 208078 1352469 220120 c +1338602 232163 1315904 238220 1284448 238220 c +1223506 238220 L +@c +1100965 316678 m +1303643 316678 l +1369255 316678 1419176 303176 1453552 276172 c +1487928 249168 1505079 209756 1505079 158011 c +1505079 106411 1488001 67145 1453771 40287 c +1419541 13429 1369547 0 1303643 0 c +1100965 0 L +1100965 316678 L +@c +F +T +@rax %Note: Object +202.57002 663.60898 462.94894 788.24381 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21543 0.21543 0.00000 @w +/$fm 0 def +260.91354 727.66403 m +284.90258 722.60872 308.89162 717.55398 332.88066 712.49783 C +372.47783 785.04321 371.74762 810.24123 462.94894 768.46677 C +412.01121 767.74422 394.34910 800.57197 337.90961 694.42894 c +336.72728 692.20375 216.16299 742.15219 202.57002 663.60898 C +200.58690 726.36633 231.68494 734.82888 260.91354 727.66403 C +@c +B + +@rax %Note: Object +17.18787 478.84422 579.89707 569.31194 @E + 0 O 0 @g +0.00 0.00 0.00 0.00 k +/$fm 0 def +17.18787 569.31194 m +579.89707 569.31194 L +579.89707 478.84422 L +17.18787 478.84422 L +17.18787 569.31194 L +@c +F + +@rax %Note: Object +86.84816 567.50202 504.80901 567.50315 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 5.66929 5.66929 0.00000 @w +/$fm 0 def +86.84816 567.50258 m +504.80901 567.50258 L +S + +@rax %Note: Object +86.84816 554.44139 504.80901 554.44252 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 5.66929 5.66929 0.00000 @w +/$fm 0 def +86.84816 554.44195 m +504.80901 554.44195 L +S + +@rax %Note: Object +86.84816 541.70674 504.80901 541.70787 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 5.66929 5.66929 0.00000 @w +/$fm 0 def +86.84816 541.70731 m +504.80901 541.70731 L +S + +%%PageTrailer +@rs +@rs +%%Trailer +@EndSysCorelDict +end +%%DocumentSuppliedResources: procset wCorel8Dict +%%EOF diff -Nru bird3-3.1.0/doc/slides/obr1.eps bird3-3.1.7/doc/slides/obr1.eps --- bird3-3.1.0/doc/slides/obr1.eps 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/obr1.eps 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,2539 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 16 42 558 453 +%%Creator: CorelDRAW +%%Title: +%%CreationDate: Mon Jun 26 13:55:02 2000 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: (atend) +%%EndComments +%%BeginProlog +/AutoFlatness true def +/AutoSteps 0 def +/CMYKMarks true def +/UseLevel2 false def +%Color profile: Disabled +%%BeginResource: procset wCorel6Dict 6.0 0 +% Copyright (c)1992-96 Corel Corporation +% All rights reserved. v6.0 r1.1 +/wCorel6Dict 300 dict def wCorel6Dict begin/bd{bind def}bind def/ld{load def} +bd/xd{exch def}bd/_ null def/rp{{pop}repeat}bd/@cp/closepath ld/@gs/gsave ld +/@gr/grestore ld/@np/newpath ld/Tl/translate ld/$sv 0 def/@sv{/$sv save def}bd +/@rs{$sv restore}bd/spg/showpage ld/showpage{}bd currentscreen/@dsp xd/$dsp +/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF false def/$Scra 0 def/SetScr +/setscreen ld/setscreen{pop pop pop}bd/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1 roll +pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5 0 +def}ifelse/CurrentInkName_5 where{pop}{/CurrentInkName_5(Composite)def}ifelse +/$ink_5 where{pop}{/$ink_5 -1 def}ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def +/$t 1 def/$n _ def/$o 0 def/$fil 0 def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 +def/$N _ def/$O 0 def/$PF false def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def +/s1t 0 def/s1n _ def/$bkg false def/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op +false def matrix currentmatrix/$ctm xd/$ptm matrix def/$ttm matrix def/$stm +matrix def/$fst 128 def/$pad 0 def/$rox 0 def/$roy 0 def/$fmp 50 def/$ffpnt +true def/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring +16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle +16#60/grave 16#7C/bar +16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl +16#88/circumflex/perthousand/Scaron/guilsinglleft/OE +16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash +16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis +16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section +16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron +16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def +/@BeginSysCorelDict{systemdict/Corel30Dict known{systemdict/Corel30Dict get +exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known{end}if}bd AutoFlatness +{/@ifl{dup currentflat exch sub 10 gt{ +([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush +@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{ +{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill +{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip +/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat} +bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse} +bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped +{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{ +/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit +ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l +/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp} +bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1 +exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1 +sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type +/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd +/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def} +ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{ +/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{ +dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2 +copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix +/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd +{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd} +if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch +load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA} +{$dsa}ifelse $SCP @ss}if}bd/p{/$pm xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def} +bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge{pop}{exch pop}ifelse}bd +/InRange{3 -1 roll @MN @MX}bd/wDstChck{2 1 roll dup 3 -1 roll eq{1 add}if}bd +/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1 exch sub}bd +/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}repeat pop}bd +/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1 roll sub neg +exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index .114 mul add +4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb/setrgbcolor ld/GetRgb +/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray ld/SetRgb2 systemdict +/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor get def/SetHsb +systemdict/sethsbcolor get def/GetHsb systemdict/currenthsbcolor get def +/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor sub 3 1 roll SetHsb +GetRgb2}bd/setcmykcolor where{pop/SetCmyk_5/setcmykcolor ld}{/SetCmyk_5{ +cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{pop/GetCmyk/currentcmykcolor +ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse/setoverprint where{pop}{/setoverprint{ +/$op xd}bd}ifelse/currentoverprint where{pop}{/currentoverprint{$op}bd}ifelse +/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1 roll mul exch}repeat pop}ifelse}bd +/@trp{exch pop 5 1 roll @tc_5}bd/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 +4 $ink_5 sub index exch pop 5 1 roll pop pop pop pop SepsColor true eq{$ink_5 3 +gt{1 sub neg SetGry}{0 0 0 4 $ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry} +ifelse}ifelse}bd/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array +astore}bd}ifelse/setcustomcolor where{pop}{/setcustomcolor{exch aload pop +SepMode_5 0 eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0} +ifelse 6 1 roll 5 rp 1 sub neg SetGry}ifelse}bd}ifelse/@scc_5{dup type +/booleantype eq{setoverprint}{1 eq setoverprint}ifelse dup _ eq{pop +setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse SepMode_5 +0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage where{pop +/ColorImage{colorimage}def}{/ColorImage{/ncolors xd pop/dataaq xd{dataaq +ncolors dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index +get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g +255 mul cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv +getinterval pop}{4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 +index get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div +$dat 4 index 3 add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 +roll put}for $dat 0 $dat length ncolors idiv getinterval}if}ifelse}image}bd +}ifelse/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd +/currentcmykcolor{0 0 0 0}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd +/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor} +bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd +/currentgray{currentrgbcolor rgb2g}bd}ifelse/WaldoColor_5 true def/@sft{$tllx +$pxf add dup $tllx gt{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei +add}if/$ty xd}bd/@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd/@ep{{cvx exec +}forall}bd/@tp{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei sub +$ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{/$in +false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 $phei +rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 index +sub Tl matrix currentmatrix/$ctm xd @ep pop pop pop pop}{pop pop}ifelse @rs}bd +/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{dup $llx gt{$pwid sub}{exit} +ifelse}loop exch $phei mul $ty exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 +roll add exch @tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup $pwid mul +$tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit}ifelse}loop 0 1 +$tly 1 sub{$phei mul 3 copy sub @tp pop}for pop pop}for}bd/@pf{@gs $ctm +setmatrix $pm concat @stb eoclip Bburx Bbury $pm itransform/$tury xd/$turx xd +Bbllx Bblly $pm itransform/$tlly xd/$tllx xd/$wid $turx $tllx sub def/$hei +$tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{eofill}if}{$t $c $m $y +$k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei scale <00> 8 1 +false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse @gr $wid 0 gt +$hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd exch sub +/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div ceiling 1 add +/$tly xd $psx 0 eq{@tv}{@th}ifelse}if @gr @np/$bkg false def}bd/@dlt_hsb{$fco +nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/kdb xd nff $fco sub +div/kdb2 xd sub neg 2 div dup $fco div/kds xd nff $fco sub div/kds2 xd sub neg +dup 0 eq{pop $frb 2 eq{.99}{-.99}ifelse}if dup $frb 2 eq exch 0 lt and{1 add} +if dup $frb 1 eq exch 0 gt and{1 sub}if 2 div dup $fco div/kdh xd nff $fco sub +div/kdh2 xd}bd/@dlt_cmyk{$fmp 50 eq{sub neg nff dup 1 gt{1 sub}if div/$dk xd +sub neg nff dup 1 gt{1 sub}if div/$dy xd sub neg nff dup 1 gt{1 sub}if div/$dm +xd sub neg nff dup 1 gt{1 sub}if div/$dc xd sub neg nff dup 1 gt{1 sub}if div +/$dt xd}{$fco nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/$dk xd +nff $fco sub div/$dk2 xd sub neg 2 div dup $fco div/$dy xd nff $fco sub div +/$dy2 xd sub neg 2 div dup $fco div/$dm xd nff $fco sub div/$dm2 xd sub neg 2 +div dup $fco div/$dc xd nff $fco sub div/$dc2 xd sub neg 2 div dup $fco div +/$dt xd nff $fco sub div/$dt2 xd}ifelse}bd/@dlt{$fse $fss sub dup/nff xd $fmp +mul $fmp add 100 div round cvi dup 0 le{pop 1}if/$fco xd/$fi 0 def $frb dup 1 +eq exch 2 eq or{$frt dup $frc $frm $fry $frk @tc_5 4 copy cmyk2rgb rgb2hsb 3 +copy/myb xd/mys xd/myh xd $tot $toc $tom $toy $tok @tc_5 cmyk2rgb rgb2hsb 3 1 +roll 4 1 roll 5 1 roll @dlt_hsb}{$frt dup $frc $frm $fry $frk @tc_5 5 copy $tot +dup $toc $tom $toy $tok @tc_5 5 1 roll 6 1 roll 7 1 roll 8 1 roll 9 1 roll +@dlt_cmyk}ifelse}bd/@ffnxt{/$fi $fi 1 add def $frb dup 1 eq exch 2 eq or{pop +pop pop pop myh mys myb $fi $fco lt{kdb add 3 1 roll kds add 3 1 roll kdh add 3 +1 roll}{kdb2 add 3 1 roll kds2 add 3 1 roll kdh2 add 3 1 roll}ifelse 3 copy +/myb xd/mys xd/myh xd hsb2rgb rgb2cmyk}{$fi $fco lt $fmp 50 eq or{$dk add 5 1 +roll $dy add 5 1 roll $dm add 5 1 roll $dc add 5 1 roll $dt add 5 1 roll}{$dk2 +add 5 1 roll $dy2 add 5 1 roll $dm2 add 5 1 roll $dc2 add 5 1 roll $dt2 add 5 1 +roll}ifelse}ifelse}bd/ffcol{5 copy $fsit 0 eq{setcmykcolor pop}{SepMode_5 0 ne +{$frn findcmykcustomcolor exch setcustomcolor}{pop pop pop pop $frc $frm $fry +$frk $frn findcmykcustomcolor exch setcustomcolor}ifelse}ifelse}bd/@ftl{1 index +4 index sub dup $pad mul dup/$pdw xd 2 mul sub $fst div/$wid xd 2 index sub +/$hei xd pop Tl @dlt $fss 0 eq{ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l @cp +$ffpnt{fill}{@np}ifelse}if $fss $wid mul $pdw add 0 Tl nff{ffcol n 0 0 m 0 $hei +l $wid $hei l $wid 0 l @cp $ffpnt{fill}{@np}ifelse $wid 0 Tl @ffnxt}repeat 5 rp +$tot dup $toc $tom $toy $tok @tc_5 ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l +@cp $ffpnt{fill}{@np}ifelse 5 rp}bd/@ftrs{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl $fan rotate +pop pop pop pop @dlt $fss 0 eq{ffcol $fty 3 eq{$hei dup neg dup m 2 mul @sqr}{ +0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse}if 1.0 $pad 2 mul sub +dup scale $hei $fss $wid mul sub/$hei xd nff{ffcol $fty 3 eq{n $hei dup neg dup +m 2 mul @sqr}{n 0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse/$hei +$hei $wid sub def @ffnxt}repeat 5 rp}bd/@ftc{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl pop pop pop +pop @dlt $fss 0 eq{ffcol $ffpnt{fill}{@np}ifelse}{n}ifelse/$dang 180 $fst 1 sub +div def/$sang $dang -2 div 180 add def/$eang $dang 2 div 180 add def/$sang +$sang $dang $fss mul add def/$eang $eang $dang $fss mul add def/$sang $eang +$dang sub def nff{ffcol n 0 0 m 0 0 $hei $sang $fan add $eang $fan add arc +$ffpnt{fill}{@np}ifelse 0 0 m 0 0 $hei $eang neg $fan add $sang neg $fan add +arc $ffpnt{fill}{@np}ifelse/$sang $eang def/$eang $eang $dang add def @ffnxt} +repeat 5 rp}bd/@fstAdjust{72 0 matrix defaultmatrix dtransform exch dup mul +exch dup mul add sqrt currentscreen pop pop div dup mul 1 add cvi 2 256 InRange +$fsc 1 sub dup 0 le{pop 1}if mul/opt$fst xd AutoSteps dup 1 eq exch 3 eq or{ +opt$fst dup dup $fst dup 3 1 roll div exch 3 -1 roll gt{/$adj xd/$fst xd}{pop +pop}ifelse}if AutoSteps dup 2 eq exch 3 eq or{opt$fst dup dup $fst dup 3 1 roll +div exch 3 -1 roll lt{/$adj xd/$fst xd}{pop pop}ifelse}if}bd/@ff{/old$fst $fst +def/$adj 1 def/$fss 0 def $o 1 eq setoverprint AutoSteps 0 gt{@fstAdjust}if 1 1 +$fsc 1 sub{dup 1 sub $fsit 0 eq{$fsa exch 5 mul 5 getinterval aload pop pop +/$frk xd/$fry xd/$frm xd/$frc xd/$frn _ def/$frt 1 def $fsa exch 5 mul 5 +getinterval aload pop $adj mul cvi $fss add/$fse xd/$tok xd/$toy xd/$tom xd +/$toc xd/$ton _ def/$tot 1 def}{$fsa exch 7 mul 7 getinterval aload pop pop +/$frt xd/$frn xd/$frk xd/$fry xd/$frm xd/$frc xd $fsa exch 7 mul 7 getinterval +aload pop $adj mul cvi $fss add/$fse xd/$tot xd/$ton xd/$tok xd/$toy xd/$tom xd +/$toc xd}ifelse $fsit 0 eq SepMode_5 0 eq or dup not CurrentInkName_5 $frn eq +and or{@sv $ctm setmatrix eoclip Bbllx Bblly Bburx Bbury $fty 2 eq{@ftc}{1 +index 3 index m 2 copy l 3 index 1 index l 3 index 3 index l @cp $fty dup 1 eq +exch 3 eq or{@ftrs}{pop pop pop pop $fan rotate pathbbox @ftl}ifelse}ifelse @rs +/$fss $fse def}{1 0 0 0 0 _ $o @scc_5{fill}if}ifelse}for @np/$fst old$fst def} +bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or $ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y +$k $n $o @scc_5 pop $ctm setmatrix 72 1000 div dup matrix scale dup concat dup +Bburx exch Bbury exch itransform ceiling cvi/Bbury xd ceiling cvi/Bburx xd +Bbllx exch Bblly exch itransform floor cvi/Bblly xd floor cvi/Bbllx xd $Prm +aload pop $Psn load exec}{1 SetGry eofill}ifelse @rs @np}bd/F{matrix +currentmatrix $sdf{$scf $sca $scp @ss}if $fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 +eq{@Pf}{$t $c $m $y $k $n $o @scc_5{eofill}{@np}ifelse}ifelse}ifelse}ifelse +$sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{matrix currentmatrix $ctm +setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc_5{matrix +currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF{$dsf $dsa $dsp +@ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{5 array astore +exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{/$ctm $ctm +currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{ +/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o +@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd/@P +{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/@k{/$fil 2 def/$fmp xd +/$roy xd/$rox xd/$pad xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst +xd/$fsc xd/$fsa xd/$fsit 0 def}bd/@x{/$fil 2 def/$fmp xd/$roy xd/$rox xd/$pad +xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst xd/$fsc xd/$fsa xd +/$fsit 1 def}bd/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index +3 index l 3 index 3 index l clip pop pop pop pop}bd/tcc{@cc}def/@i{@sm @gs @ii +6 index 1 ne{/$frg true def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5 +/$frg xd}{/$frg false def}ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np +/$ury xd/$urx xd/$lly xd/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 +div ceiling cvi string def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl +$urx $llx sub $ury $lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid +$hei abs $bts 1 eq{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/tcc load $bts 1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa +$dsp @ss}if}{$hei abs{tcc pop}repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs +@ii @np/$ury xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat +$wid $bts mul $ncl mul 8 div ceiling cvi string def $ngx $llx $lly Tl $urx $llx +sub $ury $lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/@cc load false $ncl ColorImage $SDF{$dsf $dsa $dsp @ss}if +@gr $ctm setmatrix}bd L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx xd +/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling cvi +string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK} +ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8 +dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent +$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]} +ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def +/DataSource currentfile/ASCII85Decode filter def currentdict end image $SDF +{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/z{exch findfont +exch scalefont setfont}bd/ZB{9 dict dup begin 4 1 roll/FontType 3 def +/FontMatrix xd/FontBBox xd/Encoding 256 array def 0 1 255{Encoding exch +/.notdef put}for/CharStrings 256 dict def CharStrings/.notdef{}put/Metrics 256 +dict def Metrics/.notdef 3 -1 roll put/BuildChar{exch dup/$char exch/Encoding +get 3 index get def dup/Metrics get $char get aload pop setcachedevice begin +Encoding exch get CharStrings exch get end exec}def end definefont pop}bd +/ZBAddChar{findfont begin dup 4 1 roll dup 6 1 roll Encoding 3 1 roll put +CharStrings 3 1 roll put Metrics 3 1 roll put end}bd/Z{findfont dup maxlength 2 +add dict exch dup{1 index/FID ne{3 index 3 1 roll put}{pop pop}ifelse}forall +pop dup dup/Encoding get 256 array copy dup/$fe xd/Encoding exch put dup +/Fontname 3 index put 3 -1 roll dup length 0 ne{0 exch{dup type 0 type eq{exch +pop}{$fe exch 2 index exch put 1 add}ifelse}forall pop}if dup 256 dict dup +/$met xd/Metrics exch put dup/FontMatrix get 0 get 1000 mul 1 exch div 3 index +length 256 eq{0 1 255{dup $fe exch get dup/.notdef eq{pop pop}{5 index 3 -1 +roll get 2 index mul $met 3 1 roll put}ifelse}for}if pop definefont pop pop}bd +/@ftx{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup @gs true charpath +$ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch m}forall}bd +/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if $fil 1 eq{/@@txt/@pf +ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq{/@@txt/@Pf ld @ftx}{$t $c $m +$y $k $n $o @scc_5{show}{pop}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp +@ss}if setmatrix}bd/@st{matrix currentmatrix exch $SDF{$SCF $SCA $SCP @ss}if $T +$C $M $Y $K $N $O @scc_5{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup +@gs true charpath $ctm setmatrix $ptm concat stroke @gr @np stringwidth pop 3 +-1 roll add exch m}forall}{pop}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd +/@te{@ft}bd/@tr{@st}bd/@ta{dup @gs @ft @gr @st}bd/@t@a{dup @gs @st @gr @ft}bd +/@tm{@sm concat}bd/e{/t{@te}def}bd/r{/t{@tr}def}bd/o{/t{pop}def}bd/a{/t{@ta} +def}bd/@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix/$ttm matrix def}bd/ddt +{t}def/@t{/$stm $stm currentmatrix def 3 1 roll m $ttm concat ddt $stm +setmatrix}bd/@n{/$ttm exch matrix rotate def}bd/@s{}bd/@l{}bd/@B{@gs S @gr F} +bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def}{ +CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1 +def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq +{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs +-72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr} +bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi} +bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt}bd/@unscale{}bd/@smc{CMYKMarks{0 exch eq{1 1 1 1 1 _ 0 @scc_5 +pop}{1 0 0 0 0 _ 0 @scc_5 pop}ifelse}{SetGry}ifelse}bd/@gmc{CMYKMarks{GetCmyk +pop pop pop 1 eq{0}{1}ifelse}{GetGry}ifelse}bd/@sqr{dup 0 rl dup 0 exch rl neg +0 rl @cp}bd/corelsym{@gs @np Tl -90 rotate 7{45 rotate -.75 2 m 1.5 @sqr fill} +repeat @gr}bd/@reg_cor{@gs @np Tl -6 -6 m 12 @sqr @gs 1 @gmc sub @smc fill @gr +4{90 rotate 0 4 m 0 4 rl}repeat stroke 0 0 corelsym @gr}bd/@reg_std{@gs @np Tl +.3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl +}repeat stroke @gr}bd/@reg_inv{@gs @np Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc +sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl}repeat stroke 0 0 m 0 0 5 90 180 arc +@cp 0 0 5 270 360 arc @cp fill @gr}bd/@reg_sqr{@gs @np Tl .3 w -7 -7 m 14 @sqr +fill @gs 1 @gmc sub @smc 0 0 5 0 360 arc @cp save fill restore 4{90 rotate 0 0 +m 0 8 rl}repeat stroke @gr 4{90 rotate 0 0 m 0 5 rl}repeat stroke @gr}bd +/@reg_lng{@gs @np 0 eq{/$Xlen 16 def/$Ylen 8 def}{/$Xlen 8 def/$Ylen 16 def} +ifelse Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 90 rotate 0 0 m +0 $Xlen rl 90 rotate 0 0 m 0 $Ylen rl 90 rotate 0 0 m 0 $Xlen rl 90 rotate 0 0 +m 0 $Ylen rl stroke @gr}bd/@setdcol{0 $dcol eq{0 exch 1 exch sub 0 0 0 _ 0 +@scc_5 pop}{1 $dcol eq{0 exch 0 exch 1 exch sub 0 0 _ 0 @scc_5 pop}{2 $dcol eq +{0 exch 0 exch 0 exch 1 exch sub 0 _ 0 @scc_5 pop}{SetGry}ifelse}ifelse}ifelse +}bd/$corelmeter[1 .95 .75 .50 .25 .05 0]def/@colormeter{@gs @np 0 @setdcol 0.3 +w/Courier findfont 5 scalefont setfont/yy xd/xx xd 0 1 6{dup xx 20 sub yy m 20 +@sqr @gs $corelmeter exch get dup @setdcol fill @gr stroke xx 18 sub yy 2 add m +exch dup 3 ge{1 SetGry}{0 @setdcol}ifelse 3 eq{pop}{100 mul 100 exch sub cvi 20 +string cvs show}ifelse/yy yy 20 add def}for @gr}bd/@calbar{@gs Tl @gs @np 0 0 m +@gs 20 @sqr 1 1 0 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 0 1 +0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 0 1 0 _ 0 @scc_5 pop +fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 1 1 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 +0 m @gs 20 @sqr 1 0 1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 +1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 1 1 0 _ 0 @scc_5 +pop fill @gr @gr @np -84 0 Tl @gs 0 0 m 20 @sqr clip 1 1 0 0 0 _ 0 @scc_5 pop +@gain @gr 20 0 Tl @gs 0 0 m 20 @sqr clip 1 0 1 0 0 _ 0 @scc_5 pop @gain @gr 20 +0 Tl @gs 0 0 m 20 @sqr clip 1 0 0 1 0 _ 0 @scc_5 pop @gain @gr 20 0 Tl @gs 0 0 +m 20 @sqr clip 1 0 0 0 1 _ 0 @scc_5 pop @gain @gr @gr}bd/@gain{10 10 Tl @np 0 0 +m 0 10 360{0 0 15 4 -1 roll dup 5 add arc @cp}for fill}bd/@crop{@gs 10 div +/$croplen xd .3 w 0 @smc Tl rotate 0 0 m 0 $croplen neg rl stroke @gr}bd +/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel +dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall} +bd/@rax{deflevel 0 eq{@rs @sv}if}bd/@daq{dup type/arraytype eq{{}forall}if}bd +/@BMP{/@cc xd 12 index 1 gt UseLevel2 true eq and{7 -2 roll pop pop @I_2}{11 +index 1 eq{12 -1 roll pop @i}{7 -2 roll pop pop @I}ifelse}ifelse}bd systemdict +/pdfmark known not{/pdfmark/cleartomark ld}if/@BeginEPS{$ngx 0 SetGry 0 J 0 j 1 +w[]0 d 10 M false setoverprint @np/EPSDict 200 dict def EPSDict begin @sv +SepMode_5 0 ne{/colorimage{@gs/sepdict 50 dict def sepdict begin[{1 exch sub} +/exec cvx currenttransfer/exec cvx]cvx settransfer 3 eq/$rgb xd{$rgb{/daq0 xd +/daq1 xd/daq2 xd/daq_rgb load}{/daq0 xd/daq1 xd/daq2 xd/daq3 xd/daq_cmyk load} +ifelse}{/daq0 xd/daq_one load}ifelse 2 index 8 eq/8bit xd $ink_5 dup 0 lt exch +3 gt or{}{image}ifelse end @gr}bd/2cmyk{3{255 exch sub 3 1 roll}repeat 3 copy +@MN @MN 3{dup 5 -1 roll sub neg exch}repeat}bd/daq_rgb{/i 0 def/daq2 load exec +/daq1 load exec/daq0 load exec dup dup length 0 exch getinterval/$data xd{8bit +{1 index i get 3 index i get 2cmyk 4 $ink_5 neg roll pop pop pop}{pop 0}ifelse +$data i 3 -1 roll put/i i 1 add def}forall pop pop $data}bd/daq_cmyk{/daq3 load +exec/daq2 load exec/daq1 load exec/daq0 load exec 4 $ink_5 neg roll pop pop pop +}bd/daq_one{/$in 0 def/$out 0 def/daq0 load exec dup dup length $rgb{3}{4} +ifelse idiv 0 exch getinterval/$data xd $data{pop 8bit{$rgb{0 index $in 2 add +get 1 index $in 1 add get 2 index $in get 2cmyk}{0 index $in get 1 index $in 1 +add get 2 index $in 2 add get 3 index $in 3 add get}ifelse 4 $ink_5 neg roll +pop pop pop}{0}ifelse $data $out 3 -1 roll put/$in $in $rgb{3}{4}ifelse add def +/$out $out 1 add def}forall pop $data}bd}if}bd/@EndEPS{@rs end}bd end +%%EndResource +%%EndProlog +%%BeginSetup +wCorel6Dict begin +@BeginSysCorelDict +2.6131 setmiterlimit +1.00 setflat +/$fst 128 def +%%EndSetup + +%%Page: 1 1 +%LogicalPage: 1 +%%BeginPageSetup +@sv +@sm +@sv +%%EndPageSetup +@rax %Note: Object +83.97014 259.95969 114.68438 290.67392 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +99.32712 290.67392 m +107.78542 290.67392 114.68438 283.77496 114.68438 275.31666 c +114.68438 266.85836 107.78542 259.95969 99.32712 259.95969 c +90.86882 259.95969 83.97014 266.85836 83.97014 275.31666 c +83.97014 283.77496 90.86882 290.67392 99.32712 290.67392 c +@c +S + +@rax %Note: Object +279.32825 232.53874 310.04277 263.25326 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +294.68551 263.25326 m +303.14381 263.25326 310.04277 256.35430 310.04277 247.89600 c +310.04277 239.43770 303.14381 232.53874 294.68551 232.53874 c +286.22721 232.53874 279.32825 239.43770 279.32825 247.89600 c +279.32825 256.35430 286.22721 263.25326 294.68551 263.25326 c +@c +S + +@rax %Note: Object +230.18513 281.09282 260.89937 311.80706 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +245.54239 311.80706 m +254.00069 311.80706 260.89937 304.90838 260.89937 296.45008 c +260.89937 287.99178 254.00069 281.09282 245.54239 281.09282 c +237.08409 281.09282 230.18513 287.99178 230.18513 296.45008 c +230.18513 304.90838 237.08409 311.80706 245.54239 311.80706 c +@c +S + +@rax %Note: Object +65.86441 334.92841 196.39956 420.47603 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +131.13213 420.47603 m +167.07997 420.47603 196.39956 401.26110 196.39956 377.70208 c +196.39956 354.14334 167.07997 334.92841 131.13213 334.92841 c +95.18372 334.92841 65.86441 354.14334 65.86441 377.70208 c +65.86441 401.26110 95.18372 420.47603 131.13213 420.47603 c +@c +S + +@rax %Note: Object +18.25739 132.23424 148.79254 217.78186 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +83.52510 217.78186 m +119.47323 217.78186 148.79254 198.56693 148.79254 175.00791 c +148.79254 151.44917 119.47323 132.23424 83.52510 132.23424 c +47.57698 132.23424 18.25739 151.44917 18.25739 175.00791 c +18.25739 198.56693 47.57698 217.78186 83.52510 217.78186 c +@c +S + +@rax %Note: Object +358.41742 313.34910 488.95257 398.89672 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +423.68513 398.89672 m +459.63298 398.89672 488.95257 379.68180 488.95257 356.12277 c +488.95257 332.56375 459.63298 313.34910 423.68513 313.34910 c +387.73672 313.34910 358.41742 332.56375 358.41742 356.12277 c +358.41742 379.68180 387.73672 398.89672 423.68513 398.89672 c +@c +S + +@rax %Note: Object +42.92561 103.02831 63.38098 123.48369 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +46.98283 123.48369 m +63.38098 119.42646 L +59.32375 103.02831 L +42.92561 107.08554 L +46.98283 123.48369 L +@c +S + +@rax %Note: Object +54.59528 121.55641 58.20066 136.12791 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +54.59528 121.55641 m +58.20066 136.12791 L +S + +@rax %Note: Object +62.18079 416.13307 85.60488 439.55717 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +85.60488 425.49761 m +71.54532 416.13307 L +62.18079 430.19263 L +76.24035 439.55717 L +85.60488 425.49761 L +@c +S + +@rax %Note: Object +79.04551 408.68646 87.36690 421.17987 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +79.04551 421.17987 m +87.36690 408.68646 L +S + +@rax %Note: Object +111.04526 103.96715 132.91540 125.83729 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +111.04526 119.70907 m +126.78718 125.83729 L +132.91540 110.09537 L +117.17348 103.96715 L +111.04526 119.70907 L +@c +S + +@rax %Note: Object +112.93285 122.51820 118.37849 136.50661 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +118.37849 122.51820 m +112.93285 136.50661 L +S + +@rax %Note: Object +77.10151 100.53014 93.99402 117.42293 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +77.10151 117.42293 m +93.99402 117.42293 L +93.99402 100.53014 L +77.10151 100.53014 L +77.10151 117.42293 L +@c +S + +@rax %Note: Object +84.95348 117.38041 84.95461 132.39128 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +84.95405 117.38041 m +84.95405 132.39128 L +S + +@rax %Note: Object +100.99531 431.86224 121.27776 452.14441 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +121.27776 435.69156 m +104.82463 431.86224 L +100.99531 448.31509 L +117.44844 452.14441 L +121.27776 435.69156 L +@c +S + +@rax %Note: Object +113.61997 419.33254 117.02268 433.95307 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +113.61997 433.95307 m +117.02268 419.33254 L +S + +@rax %Note: Object +144.97342 431.85288 165.03959 451.91906 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +161.48863 431.85288 m +144.97342 435.40384 L +148.52438 451.91906 L +165.03959 448.36809 L +161.48863 431.85288 L +@c +S + +@rax %Note: Object +150.66510 418.86964 153.82063 433.54517 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +153.82063 433.54517 m +150.66510 418.86964 L +S + +@rax %Note: Object +180.05528 414.07427 203.45272 437.47172 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +194.16699 414.07427 m +180.05528 423.36028 L +189.34101 437.47172 L +203.45272 428.18598 L +194.16699 414.07427 L +@c +S + +@rax %Note: Object +179.37921 405.88668 187.63058 418.42658 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +187.63058 418.42658 m +179.37921 405.88668 L +S + +@rax %Note: Object +459.08447 400.93455 481.57483 423.42491 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +474.35811 400.93455 m +459.08447 408.15156 L +466.30148 423.42491 L +481.57483 416.20791 L +474.35811 400.93455 L +@c +S + +@rax %Note: Object +460.86321 390.75562 467.27631 404.32791 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +467.27631 404.32791 m +460.86321 390.75562 L +S + +@rax %Note: Object +407.76208 412.44350 426.30180 430.98293 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +426.30180 414.17972 m +409.49830 412.44350 L +407.76208 429.24671 L +424.56557 430.98293 L +426.30180 414.17972 L +@c +S + +@rax %Note: Object +418.48639 398.48343 420.02901 413.41493 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +418.48639 413.41493 m +420.02901 398.48343 L +S + +@rax %Note: Object +499.01301 362.19969 520.42876 383.61543 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +504.42718 362.19969 m +499.01301 378.20098 L +515.01430 383.61543 L +520.42876 367.61386 L +504.42718 362.19969 L +@c +S + +@rax %Note: Object +487.73169 364.84044 501.95083 369.65169 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +501.95083 369.65169 m +487.73169 364.84044 L +S + +@rax %Note: Object +184.11392 307.48762 233.84268 353.20224 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +184.11392 353.20224 m +233.84268 307.48762 L +S + +@rax %Note: Object +255.22157 256.54649 281.77880 284.62989 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +255.22157 284.62989 m +281.77880 256.54649 L +S + +@rax %Note: Object +259.40409 303.75553 363.04441 339.20787 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +259.40409 303.75553 m +363.04441 339.20787 L +S + +@rax %Note: Object +304.48517 259.90696 373.26898 328.01244 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +304.48517 259.90696 m +373.26898 328.01244 L +S + +@rax %Note: Object +97.20510 216.99099 97.66998 260.37326 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +97.66998 260.37326 m +97.20510 216.99099 L +S + +@rax %Note: Object +99.52894 291.16063 111.61247 336.87553 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +99.52894 291.16063 m +111.61247 336.87553 L +S + +@rax 298.00573 52.50643 381.29613 176.63839 @E +[0.00028346 0.00000000 0.00000000 0.00028346 304.50528020 174.93193061] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 63499.00000 z +%CHAR: 0 -57480 (1) @t +23657 -57480 m +18073 -57480 L +18073 -21918 L +16729 -23198 14961 -24486 12785 -25767 c +10609 -27047 8640 -28007 6912 -28647 C +6912 -23254 L +10032 -21790 12761 -20006 15097 -17926 c +17433 -15838 19089 -13806 20057 -11846 C +23657 -11846 L +23657 -57480 L +@c +F +%CHAR: 133264 -57480 (c) @t +158937 -45415 m +164417 -46135 L +163825 -49912 162281 -52880 159817 -55016 c +157353 -57160 154313 -58232 150713 -58232 c +146217 -58232 142592 -56760 139856 -53816 c +137120 -50872 135744 -46639 135744 -41143 c +135744 -37591 136336 -34479 137504 -31815 c +138680 -29151 140480 -27143 142880 -25815 c +145289 -24486 147913 -23814 150745 -23814 c +154321 -23814 157249 -24718 159521 -26527 c +161793 -28335 163249 -30903 163889 -34231 C +158465 -35071 L +157953 -32863 157033 -31191 155721 -30079 c +154409 -28959 152817 -28399 150961 -28399 c +148153 -28399 145865 -29407 144113 -31423 c +142360 -33439 141480 -36631 141480 -40991 c +141480 -45407 142328 -48632 144017 -50632 c +145713 -52632 147929 -53640 150657 -53640 c +152841 -53640 154673 -52968 156137 -51624 c +157609 -50280 158545 -48208 158929 -45423 C +158937 -45415 L +@c +F +%CHAR: 0 -128552 (2) @t +31970 -123192 m +31962 -128552 L +1920 -128552 L +1880 -127216 2096 -125920 2568 -124680 c +3336 -122632 4560 -120616 6240 -118632 c +7920 -116647 10360 -114351 13545 -111751 c +18481 -107703 21825 -104487 23553 -102127 c +25289 -99759 26161 -97519 26161 -95414 c +26161 -93206 25369 -91334 23793 -89814 c +22209 -88294 20145 -87534 17609 -87534 c +14921 -87534 12769 -88342 11161 -89950 c +9544 -91566 8728 -93806 8712 -96654 C +2976 -96062 L +3360 -91790 4840 -88526 7400 -86286 c +9960 -84046 13409 -82918 17729 -82918 c +22089 -82918 25545 -84126 28081 -86542 c +30625 -88958 31898 -91966 31898 -95534 c +31898 -97351 31521 -99143 30785 -100895 c +30041 -102655 28801 -104511 27081 -106447 c +25353 -108391 22481 -111063 18473 -114447 c +15129 -117255 12969 -119168 12025 -120168 c +11081 -121168 10288 -122184 9672 -123192 C +31970 -123192 L +@c +F +%CHAR: 133264 -128552 (l) @t +137328 -128552 m +137320 -83102 L +142904 -83102 L +142904 -128552 L +137328 -128552 L +@c +F +%CHAR: 147368 -128552 (o) @t +149480 -112087 m +149480 -105991 151168 -101471 154560 -98543 c +157392 -96110 160849 -94886 164913 -94886 c +169441 -94886 173145 -96374 176009 -99335 c +178881 -102295 180322 -106399 180322 -111623 c +180322 -115863 179682 -119200 178417 -121624 c +177145 -124056 175289 -125944 172865 -127288 c +170441 -128632 167785 -129304 164913 -129304 c +160305 -129304 156576 -127824 153736 -124872 c +150896 -121912 149472 -117647 149472 -112095 C +149480 -112087 L +@c +155208 -112087 m +155208 -116303 156128 -119464 157969 -121560 c +159809 -123656 162129 -124712 164913 -124712 c +167681 -124712 169985 -123656 171825 -121552 c +173665 -119440 174585 -116223 174585 -111903 c +174585 -107839 173657 -104751 171809 -102655 c +169961 -100559 167657 -99503 164913 -99503 c +162129 -99503 159809 -100551 157969 -102631 c +156128 -104719 155208 -107879 155208 -112095 C +155208 -112087 L +@c +F +%CHAR: 182680 -128552 (c) @t +208353 -116487 m +213833 -117207 L +213241 -120984 211697 -123952 209233 -126088 c +206769 -128232 203729 -129304 200129 -129304 c +195633 -129304 192008 -127832 189272 -124888 c +186536 -121944 185160 -117711 185160 -112215 c +185160 -108663 185752 -105551 186920 -102887 c +188096 -100223 189896 -98215 192296 -96887 c +194705 -95558 197329 -94886 200161 -94886 c +203737 -94886 206665 -95790 208937 -97599 c +211209 -99407 212665 -101975 213305 -105303 C +207881 -106143 L +207369 -103935 206449 -102263 205137 -101151 c +203825 -100031 202233 -99471 200377 -99471 c +197569 -99471 195281 -100479 193529 -102495 c +191776 -104511 190896 -107703 190896 -112063 c +190896 -116479 191744 -119704 193433 -121704 c +195129 -123704 197345 -124712 200073 -124712 c +202257 -124712 204089 -124040 205553 -122696 c +207025 -121352 207961 -119280 208345 -116495 C +208353 -116487 L +@c +F +%CHAR: 214432 -128552 (a) @t +240105 -124488 m +238041 -126248 236041 -127496 234137 -128216 c +232225 -128936 230169 -129304 227977 -129304 c +224360 -129304 221576 -128416 219640 -126656 c +217696 -124888 216720 -122624 216720 -119872 c +216720 -118264 217088 -116783 217816 -115455 c +218552 -114127 219520 -113047 220704 -112247 c +221888 -111447 223232 -110831 224720 -110415 c +225817 -110127 227473 -109847 229681 -109583 c +234185 -109047 237505 -108399 239633 -107655 C +239649 -106895 239665 -106407 239665 -106199 c +239665 -103927 239137 -102327 238089 -101399 c +236665 -100135 234537 -99503 231729 -99503 c +229105 -99503 227169 -99967 225921 -100879 c +224672 -101799 223736 -103431 223144 -105767 C +217680 -105023 L +218176 -102687 218992 -100799 220128 -99367 c +221264 -97927 222920 -96815 225065 -96046 c +227209 -95278 229705 -94886 232537 -94886 c +235345 -94886 237633 -95222 239385 -95878 c +241145 -96534 242441 -97375 243265 -98375 c +244089 -99375 244673 -100647 245001 -102167 c +245185 -103119 245281 -104839 245281 -107319 c +245281 -114759 l +245281 -119944 245401 -123232 245633 -124600 c +245873 -125976 246346 -127296 247050 -128552 C +241217 -128552 L +240641 -127400 240257 -126040 240097 -124496 C +240105 -124488 L +@c +239641 -112023 m +237609 -112855 234569 -113559 230521 -114135 c +228233 -114463 226601 -114839 225657 -115247 c +224704 -115663 223960 -116271 223448 -117063 c +222936 -117863 222672 -118752 222672 -119720 c +222672 -121208 223240 -122448 224360 -123440 c +225489 -124432 227145 -124928 229313 -124928 c +231457 -124928 233377 -124456 235049 -123520 c +236721 -122576 237953 -121288 238737 -119656 c +239329 -118400 239633 -116535 239633 -114079 c +239641 -112023 L +@c +F +%CHAR: 249744 -128552 (l) @t +253808 -128552 m +253800 -83102 L +259384 -83102 L +259384 -128552 L +253808 -128552 L +@c +F +%CHAR: 0 -199624 (3) @t +2664 -187623 m +8240 -186887 L +8880 -190048 9976 -192328 11513 -193720 c +13049 -195112 14937 -195816 17145 -195816 c +19769 -195816 21985 -194904 23793 -193088 c +25601 -191272 26505 -189015 26505 -186327 c +26505 -183767 25665 -181647 23993 -179983 c +22321 -178319 20185 -177487 17609 -177487 c +16553 -177487 15241 -177695 13673 -178111 C +14289 -173215 L +14657 -173247 14961 -173271 15185 -173271 c +17561 -173271 19705 -172647 21601 -171415 c +23505 -170175 24457 -168255 24457 -165678 c +24457 -163630 23761 -161934 22385 -160590 c +21001 -159246 19209 -158574 17017 -158574 c +14849 -158574 13033 -159262 11593 -160622 c +10152 -161982 9216 -164038 8800 -166758 C +3224 -165766 L +3896 -162030 5448 -159126 7864 -157078 c +10280 -155022 13297 -153990 16897 -153990 c +19377 -153990 21665 -154526 23745 -155582 c +25833 -156646 27433 -158102 28537 -159942 c +29641 -161782 30193 -163734 30193 -165798 c +30193 -167766 29665 -169559 28617 -171167 c +27561 -172775 25993 -174063 23929 -175007 C +26617 -175631 28705 -176919 30193 -178871 c +31681 -180823 32426 -183271 32426 -186199 c +32426 -190168 30977 -193536 28089 -196288 c +25193 -199048 21529 -200432 17113 -200432 c +13129 -200432 9808 -199240 7176 -196872 c +4544 -194496 3032 -191408 2664 -187631 c +2664 -187623 L +@c +F +%CHAR: 133264 -199624 (b) @t +142600 -199624 m +137416 -199624 L +137416 -154174 L +142992 -154174 L +142992 -170391 L +145345 -167438 148361 -165958 152017 -165958 c +154041 -165958 155961 -166366 157769 -167182 c +159577 -167999 161065 -169151 162233 -170623 c +163401 -172095 164321 -173887 164977 -175967 c +165634 -178055 165970 -180295 165970 -182671 c +165970 -188311 164569 -192680 161785 -195752 c +159001 -198832 155641 -200376 151737 -200376 c +147857 -200376 144801 -198752 142592 -195504 C +142600 -199624 L +@c +142536 -182911 m +142536 -186863 143072 -189720 144145 -191472 c +145897 -194344 148281 -195784 151273 -195784 c +153705 -195784 155817 -194720 157593 -192608 c +159369 -190488 160265 -187327 160265 -183135 c +160265 -178839 159409 -175663 157713 -173615 c +156009 -171567 153937 -170543 151521 -170543 c +149089 -170543 146977 -171607 145201 -173719 c +143424 -175839 142528 -178911 142528 -182919 C +142536 -182911 L +@c +F +%CHAR: 0 -270696 (A) @t +-104 -270696 m +17361 -225246 L +23841 -225246 L +42442 -270696 L +35594 -270696 L +30289 -256935 L +11281 -256935 L +6288 -270696 L +-104 -270696 L +@c +13025 -252031 m +28425 -252031 L +23681 -239447 l +22241 -235622 21161 -232478 20457 -230022 C +19881 -232934 19065 -235830 18009 -238702 c +13025 -252031 L +@c +F +%CHAR: 136800 -270696 (3) @t +139464 -258695 m +145040 -257959 L +145680 -261120 146776 -263400 148313 -264792 c +149849 -266184 151737 -266888 153945 -266888 c +156569 -266888 158785 -265976 160593 -264160 c +162401 -262344 163305 -260087 163305 -257399 c +163305 -254839 162465 -252719 160793 -251055 c +159121 -249391 156985 -248559 154409 -248559 c +153353 -248559 152041 -248767 150473 -249183 C +151089 -244287 L +151457 -244319 151761 -244343 151985 -244343 c +154361 -244343 156505 -243719 158401 -242487 c +160305 -241247 161257 -239327 161257 -236750 c +161257 -234702 160561 -233006 159185 -231662 c +157801 -230318 156009 -229646 153817 -229646 c +151649 -229646 149833 -230334 148393 -231694 c +146952 -233054 146016 -235110 145600 -237830 C +140024 -236838 L +140696 -233102 142248 -230198 144664 -228150 c +147080 -226094 150097 -225062 153697 -225062 c +156177 -225062 158465 -225598 160545 -226654 c +162633 -227718 164233 -229174 165337 -231014 c +166441 -232854 166993 -234806 166993 -236870 c +166993 -238838 166465 -240631 165417 -242239 c +164361 -243847 162793 -245135 160729 -246079 C +163417 -246703 165505 -247991 166993 -249943 c +168481 -251895 169226 -254343 169226 -257271 c +169226 -261240 167777 -264608 164889 -267360 c +161993 -270120 158329 -271504 153913 -271504 c +149929 -271504 146608 -270312 143976 -267944 c +141344 -265568 139832 -262480 139464 -258703 c +139464 -258695 L +@c +F +%CHAR: 0 -341768 (B) @t +4648 -341768 m +4648 -296318 L +21697 -296318 l +25169 -296318 27953 -296782 30049 -297694 c +32146 -298614 33802 -300038 34986 -301942 c +36170 -303854 36770 -305862 36770 -307942 c +36770 -309886 36242 -311719 35194 -313431 c +34138 -315143 32538 -316535 30409 -317591 C +33162 -318391 35282 -319775 36754 -321711 c +38226 -323647 38970 -325951 38970 -328591 c +38970 -330719 38522 -332712 37626 -334536 c +36730 -336360 35610 -337776 34290 -338768 c +32970 -339760 31305 -340512 29313 -341008 c +27321 -341512 24873 -341768 21977 -341768 c +4648 -341768 L +@c +10665 -315415 m +20489 -315415 l +23153 -315415 25073 -315239 26225 -314887 c +27753 -314439 28913 -313679 29681 -312631 c +30457 -311575 30849 -310247 30849 -308654 c +30849 -307150 30481 -305822 29761 -304678 c +29041 -303526 28001 -302734 26665 -302318 c +25321 -301894 23009 -301678 19745 -301678 c +10665 -301678 L +10665 -315415 L +@c +10665 -336408 m +21977 -336408 l +23921 -336408 25289 -336336 26073 -336192 c +27449 -335944 28609 -335528 29537 -334952 c +30465 -334376 31241 -333528 31834 -332424 c +32434 -331320 32738 -330039 32738 -328591 c +32738 -326903 32298 -325431 31433 -324183 c +30569 -322935 29361 -322047 27825 -321543 c +26289 -321039 24065 -320783 21169 -320783 c +10665 -320783 L +10665 -336408 L +@c +F +%CHAR: 140304 -341768 (a) @t +165977 -337704 m +163913 -339464 161913 -340712 160009 -341432 c +158097 -342152 156041 -342520 153849 -342520 c +150232 -342520 147448 -341632 145512 -339872 c +143568 -338104 142592 -335840 142592 -333088 c +142592 -331480 142960 -329999 143688 -328671 c +144424 -327343 145392 -326263 146576 -325463 c +147760 -324663 149104 -324047 150592 -323631 c +151689 -323343 153345 -323063 155553 -322799 c +160057 -322263 163377 -321615 165505 -320871 C +165521 -320111 165537 -319623 165537 -319415 c +165537 -317143 165009 -315543 163961 -314615 c +162537 -313351 160409 -312719 157601 -312719 c +154977 -312719 153041 -313183 151793 -314095 c +150544 -315015 149608 -316647 149016 -318983 C +143552 -318239 L +144048 -315903 144864 -314015 146000 -312583 c +147136 -311143 148792 -310031 150937 -309262 c +153081 -308494 155577 -308102 158409 -308102 c +161217 -308102 163505 -308438 165257 -309094 c +167017 -309750 168313 -310591 169137 -311591 c +169961 -312591 170545 -313863 170873 -315383 c +171057 -316335 171153 -318055 171153 -320535 c +171153 -327975 l +171153 -333160 171273 -336448 171505 -337816 c +171745 -339192 172218 -340512 172922 -341768 C +167089 -341768 L +166513 -340616 166129 -339256 165969 -337712 C +165977 -337704 L +@c +165513 -325239 m +163481 -326071 160441 -326775 156393 -327351 c +154105 -327679 152473 -328055 151529 -328463 c +150576 -328879 149832 -329487 149320 -330279 c +148808 -331079 148544 -331968 148544 -332936 c +148544 -334424 149112 -335664 150232 -336656 c +151361 -337648 153017 -338144 155185 -338144 c +157329 -338144 159249 -337672 160921 -336736 c +162593 -335792 163825 -334504 164609 -332872 c +165201 -331616 165505 -329751 165505 -327295 c +165513 -325239 L +@c +F +%CHAR: 0 -412840 (C) @t +37330 -396903 m +43338 -398423 L +42082 -403368 39810 -407136 36538 -409728 c +33266 -412320 29257 -413616 24521 -413616 c +19625 -413616 15641 -412616 12577 -410624 c +9504 -408632 7168 -405736 5568 -401959 c +3968 -398183 3160 -394111 3160 -389775 c +3160 -385047 4064 -380910 5872 -377390 c +7680 -373870 10256 -371182 13593 -369358 c +16929 -367534 20609 -366614 24617 -366614 c +29161 -366614 32986 -367774 36082 -370086 c +39186 -372398 41354 -375662 42570 -379854 C +36642 -381247 L +35594 -377942 34058 -375526 32058 -374022 c +30057 -372518 27529 -371758 24489 -371758 c +21001 -371758 18073 -372598 15729 -374270 c +13385 -375942 11729 -378198 10785 -381014 c +9840 -383831 9360 -386751 9360 -389743 c +9360 -393607 9928 -396983 11049 -399863 c +12169 -402744 13929 -404904 16305 -406328 c +18681 -407752 21257 -408472 24025 -408472 c +27393 -408472 30249 -407496 32586 -405560 c +34922 -403616 36506 -400727 37330 -396903 C +@c +F +%CHAR: 143808 -412840 (1) @t +167465 -412840 m +161881 -412840 L +161881 -377278 L +160537 -378558 158769 -379846 156593 -381127 c +154417 -382407 152448 -383367 150720 -384007 C +150720 -378614 L +153840 -377150 156569 -375366 158905 -373286 c +161241 -371198 162897 -369166 163865 -367206 C +167465 -367206 L +167465 -412840 L +@c +F +T +@rax 298.00573 52.50643 381.29613 176.63839 @E +[0.00028346 0.00000000 0.00000000 0.00028346 304.50528020 174.93193061] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/MTExtra 63499.00000 z +%CHAR: 52952 -57480 (a) @t +57712 -43511 m +57712 -57736 L +54536 -57736 L +54536 -25726 L +57712 -25726 L +57712 -39951 L +106539 -39951 L +105314 -38727 103586 -36783 101362 -34143 c +99138 -31503 97242 -29199 95682 -27255 C +97906 -25030 L +102130 -30071 107451 -35639 113843 -41735 C +107451 -47832 102130 -53400 97906 -58432 C +95682 -56216 L +100802 -49824 104426 -45583 106539 -43511 C +57712 -43511 L +@c +F +%CHAR: 52952 -128552 (a) @t +57712 -114583 m +57712 -128808 L +54536 -128808 L +54536 -96798 L +57712 -96798 L +57712 -111023 L +106539 -111023 L +105314 -109799 103586 -107855 101362 -105215 c +99138 -102575 97242 -100271 95682 -98327 C +97906 -96102 L +102130 -101143 107451 -106711 113843 -112807 C +107451 -118904 102130 -124472 97906 -129504 C +95682 -127288 L +100802 -120896 104426 -116655 106539 -114583 C +57712 -114583 L +@c +F +%CHAR: 52952 -199624 (a) @t +57712 -185655 m +57712 -199880 L +54536 -199880 L +54536 -167870 L +57712 -167870 L +57712 -182095 L +106539 -182095 L +105314 -180871 103586 -178927 101362 -176287 c +99138 -173647 97242 -171343 95682 -169399 C +97906 -167174 L +102130 -172215 107451 -177783 113843 -183879 C +107451 -189976 102130 -195544 97906 -200576 C +95682 -198360 L +100802 -191968 104426 -187727 106539 -185655 C +57712 -185655 L +@c +F +%CHAR: 56488 -270696 (a) @t +61248 -256727 m +61248 -270952 L +58072 -270952 L +58072 -238942 L +61248 -238942 L +61248 -253167 L +110075 -253167 L +108850 -251943 107122 -249999 104898 -247359 c +102674 -244719 100778 -242415 99218 -240471 C +101442 -238246 L +105666 -243287 110987 -248855 117379 -254951 C +110987 -261048 105666 -266616 101442 -271648 C +99218 -269432 L +104338 -263040 107962 -258799 110075 -256727 C +61248 -256727 L +@c +F +%CHAR: 59992 -341768 (a) @t +64752 -327799 m +64752 -342024 L +61576 -342024 L +61576 -310014 L +64752 -310014 L +64752 -324239 L +113579 -324239 L +112354 -323015 110626 -321071 108402 -318431 c +106178 -315791 104282 -313487 102722 -311543 C +104946 -309318 L +109170 -314359 114491 -319927 120883 -326023 C +114491 -332120 109170 -337688 104946 -342720 C +102722 -340504 L +107842 -334112 111466 -329871 113579 -327799 C +64752 -327799 L +@c +F +%CHAR: 63496 -412840 (a) @t +68256 -398871 m +68256 -413096 L +65080 -413096 L +65080 -381086 L +68256 -381086 L +68256 -395311 L +117083 -395311 L +115858 -394087 114130 -392143 111906 -389503 c +109682 -386863 107786 -384559 106226 -382615 C +108450 -380390 L +112674 -385431 117995 -390999 124387 -397095 C +117995 -403192 112674 -408760 108450 -413792 C +106226 -411576 L +111346 -405184 114970 -400943 117083 -398871 C +68256 -398871 L +@c +F +T +@rax 413.35115 55.92019 553.73272 208.51654 @E +[0.00028346 0.00000000 0.00000000 0.00028346 419.85069330 205.98632317] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_LucidaConsole 42333.00000 z +%CHAR: 0 -33408 (P) @t +4716 -33408 m +4716 -6890 L +13331 -6890 l +16403 -6890 18599 -7166 19907 -7718 c +22582 -8876 23920 -11114 23920 -14413 c +23920 -17197 22840 -19381 20687 -20965 c +18527 -22549 15551 -23341 11765 -23341 c +8789 -23341 L +8789 -33408 L +4716 -33408 L +@c +8789 -20281 m +11327 -20281 l +16841 -20281 19601 -18349 19601 -14497 c +19601 -12877 19079 -11708 18041 -11006 c +16997 -10304 15263 -9950 12839 -9950 c +8789 -9950 L +8789 -20281 L +@c +F +%CHAR: 25530 -33408 (o) @t +38285 -33930 m +34991 -33930 32400 -32880 30522 -30798 c +28644 -28710 27702 -25837 27702 -22189 c +27702 -18553 28650 -15685 30534 -13597 c +32418 -11510 35009 -10466 38285 -10466 c +41573 -10466 44165 -11510 46043 -13597 c +47926 -15685 48868 -18553 48868 -22189 c +48868 -25837 47926 -28710 46049 -30792 c +44165 -32880 41573 -33924 38285 -33924 C +38285 -33930 L +@c +38285 -30864 m +40241 -30864 41771 -30096 42869 -28572 c +43973 -27048 44525 -24913 44525 -22189 c +44525 -19477 43973 -17347 42875 -15823 c +41771 -14293 40241 -13525 38285 -13525 c +36329 -13525 34799 -14293 33701 -15817 c +32597 -17347 32046 -19477 32046 -22189 c +32046 -24913 32597 -27048 33695 -28572 c +34799 -30096 36329 -30864 38285 -30864 c +@c +F +%CHAR: 51060 -33408 (k) @t +55464 -33408 m +55464 -770 L +59537 -770 L +59537 -21667 L +68957 -10958 L +73366 -10958 L +64481 -21055 L +75616 -33408 L +70115 -33408 L +59537 -21667 L +59537 -33408 L +55464 -33408 L +@c +F +%CHAR: 76590 -33408 (u) @t +98332 -10958 m +98332 -33408 L +94259 -33408 L +94259 -29196 L +92387 -32346 89825 -33924 86585 -33924 c +82350 -33924 80226 -31386 80226 -26323 c +80226 -10958 L +84299 -10958 L +84299 -25207 l +84299 -26970 84569 -28224 85103 -28956 c +85637 -29688 86555 -30060 87851 -30060 c +89891 -30060 92027 -28584 94259 -25639 C +94259 -10958 L +98332 -10958 L +@c +F +%CHAR: 102120 -33408 (d) @t +120311 -33408 m +120311 -29196 L +118325 -32346 115865 -33924 112949 -33924 c +110417 -33924 108414 -32940 106950 -30972 c +105486 -29004 104748 -26317 104748 -22933 c +104748 -19213 105618 -16201 107352 -13909 c +109086 -11618 111359 -10466 114167 -10466 c +116579 -10466 118631 -11486 120311 -13525 C +120311 -770 L +124384 -770 L +124384 -33408 L +120311 -33408 L +@c +120311 -16585 m +118409 -14545 116543 -13525 114731 -13525 c +112943 -13525 111551 -14311 110567 -15883 c +109583 -17455 109092 -19669 109092 -22519 c +109092 -27792 110669 -30432 113819 -30432 c +116117 -30432 118283 -28998 120311 -26137 C +120311 -16585 L +@c +F +%CHAR: 153180 -33408 (c) @t +175984 -32682 m +173573 -33510 171167 -33924 168767 -33924 c +164855 -33924 161837 -32904 159726 -30870 c +157614 -28830 156552 -25933 156552 -22189 c +156552 -18511 157596 -15631 159684 -13567 c +161771 -11504 164675 -10466 168395 -10466 c +170765 -10466 173159 -10826 175570 -11546 C +175570 -14953 L +172913 -14005 170639 -13525 168767 -13525 c +166319 -13525 164387 -14299 162995 -15841 c +161597 -17383 160895 -19501 160895 -22189 c +160895 -24901 161645 -27024 163133 -28560 c +164627 -30096 166697 -30864 169325 -30864 c +171293 -30864 173519 -30402 175984 -29484 C +175984 -32682 L +@c +F +%CHAR: 204240 -33408 (n) @t +208002 -33408 m +208002 -10958 L +212075 -10958 L +212075 -15181 L +213947 -12038 216497 -10466 219725 -10466 c +223985 -10466 226114 -12997 226114 -18055 c +226114 -33408 L +222041 -33408 L +222041 -19171 l +222041 -17419 221765 -16171 221225 -15439 c +220679 -14701 219761 -14329 218483 -14329 c +216443 -14329 214307 -15799 212075 -18739 C +212075 -33408 L +208002 -33408 L +@c +F +%CHAR: 229770 -33408 (e) @t +252472 -32520 m +249647 -33456 247049 -33924 244697 -33924 c +240839 -33924 237869 -32928 235800 -30948 c +233724 -28968 232686 -26125 232686 -22435 c +232686 -18955 233682 -16081 235668 -13837 c +237659 -11594 240197 -10466 243269 -10466 c +246365 -10466 248657 -11396 250121 -13255 c +251590 -15115 252328 -18013 252328 -21937 c +252328 -23239 L +237029 -23239 L +237329 -28320 240071 -30864 245255 -30864 c +247445 -30864 249857 -30342 252472 -29298 C +252472 -32520 L +@c +237155 -20179 m +247985 -20179 L +247985 -19603 l +247985 -15553 246293 -13525 242915 -13525 c +241295 -13525 239969 -14113 238961 -15283 c +237947 -16453 237341 -18091 237149 -20179 C +237155 -20179 L +@c +F +%CHAR: 255300 -33408 (f) @t +264479 -33408 m +264479 -14539 L +258360 -14539 L +258360 -11480 L +264479 -11480 L +264479 -9104 l +264479 -5966 265211 -3704 266669 -2324 c +268127 -944 270527 -254 273863 -254 c +276065 -254 278158 -554 280126 -1148 C +280126 -4370 L +278116 -3668 276125 -3314 274169 -3314 c +272093 -3314 270629 -3710 269801 -4502 c +268973 -5294 268553 -6692 268553 -8672 c +268553 -11480 L +279280 -11480 L +279280 -14539 L +268553 -14539 L +268553 -33408 L +264479 -33408 L +@c +F +%CHAR: 280830 -33408 (u) @t +302572 -10958 m +302572 -33408 L +298499 -33408 L +298499 -29196 L +296627 -32346 294065 -33924 290825 -33924 c +286590 -33924 284466 -31386 284466 -26323 c +284466 -10958 L +288539 -10958 L +288539 -25207 l +288539 -26970 288809 -28224 289343 -28956 c +289877 -29688 290795 -30060 292091 -30060 c +294131 -30060 296267 -28584 298499 -25639 C +298499 -10958 L +302572 -10958 L +@c +F +%CHAR: 306360 -33408 (n) @t +310122 -33408 m +310122 -10958 L +314195 -10958 L +314195 -15181 L +316067 -12038 318617 -10466 321845 -10466 c +326105 -10466 328234 -12997 328234 -18055 c +328234 -33408 L +324161 -33408 L +324161 -19171 l +324161 -17419 323885 -16171 323345 -15439 c +322799 -14701 321881 -14329 320603 -14329 c +318563 -14329 316427 -15799 314195 -18739 C +314195 -33408 L +310122 -33408 L +@c +F +%CHAR: 331890 -33408 (g) @t +336276 -40919 m +336708 -37482 L +339143 -38514 341417 -39030 343505 -39030 c +347861 -39030 350039 -36954 350039 -32814 c +350231 -28758 L +348521 -31854 346043 -33408 342803 -33408 c +340241 -33408 338202 -32430 336696 -30486 c +335190 -28536 334434 -25903 334434 -22597 c +334434 -19003 335310 -16075 337056 -13825 c +338808 -11570 341081 -10442 343877 -10442 c +346067 -10442 348227 -11474 350351 -13525 C +350351 -10958 L +354178 -10958 L +354178 -28926 l +354178 -31830 353986 -34026 353602 -35490 c +353218 -36954 352487 -38256 351425 -39384 c +349733 -41183 347075 -42089 343469 -42089 c +341345 -42089 338946 -41693 336276 -40913 C +336276 -40919 L +@c +350105 -25447 m +350105 -16621 L +348269 -14557 346373 -13519 344417 -13519 c +342641 -13519 341255 -14293 340265 -15835 c +339275 -17377 338778 -19543 338778 -22327 c +338778 -24679 339215 -26526 340079 -27852 c +340943 -29184 342161 -29850 343715 -29850 c +346127 -29850 348257 -28380 350105 -25453 C +350105 -25447 L +@c +F +%CHAR: 357420 -33408 (u) @t +379162 -10958 m +379162 -33408 L +375089 -33408 L +375089 -29196 L +373217 -32346 370655 -33924 367415 -33924 c +363180 -33924 361056 -31386 361056 -26323 c +361056 -10958 L +365129 -10958 L +365129 -25207 l +365129 -26970 365399 -28224 365933 -28956 c +366467 -29688 367385 -30060 368681 -30060 c +370721 -30060 372857 -28584 375089 -25639 C +375089 -10958 L +379162 -10958 L +@c +F +%CHAR: 382950 -33408 (j) @t +386010 -41003 m +386010 -37590 L +388128 -38550 390233 -39036 392309 -39036 c +394043 -39036 395237 -38598 395873 -37728 c +396515 -36852 396839 -35226 396839 -32856 c +396839 -14017 L +387660 -14017 L +387660 -10958 L +400913 -10958 L +400913 -32028 l +400913 -35514 400223 -38064 398855 -39666 c +397487 -41267 395297 -42071 392309 -42071 c +390353 -42071 388254 -41711 386010 -40997 C +386010 -41003 L +@c +396323 -5876 m +396323 -770 L +401429 -770 L +401429 -5876 L +396323 -5876 L +@c +F +%CHAR: 408480 -33408 (e) @t +431182 -32520 m +428357 -33456 425759 -33924 423407 -33924 c +419549 -33924 416579 -32928 414510 -30948 c +412434 -28968 411396 -26125 411396 -22435 c +411396 -18955 412392 -16081 414378 -13837 c +416369 -11594 418907 -10466 421979 -10466 c +425075 -10466 427367 -11396 428831 -13255 c +430300 -15115 431038 -18013 431038 -21937 c +431038 -23239 L +415739 -23239 L +416039 -28320 418781 -30864 423965 -30864 c +426155 -30864 428567 -30342 431182 -29298 C +431182 -32520 L +@c +415865 -20179 m +426695 -20179 L +426695 -19603 l +426695 -15553 425003 -13525 421625 -13525 c +420005 -13525 418679 -14113 417671 -15283 c +416657 -16453 416051 -18091 415859 -20179 C +415865 -20179 L +@c +F +%CHAR: 434010 -33408 (:) @t +443705 -17077 m +443705 -10958 L +449825 -10958 L +449825 -17077 L +443705 -17077 L +@c +443705 -33408 m +443705 -27288 L +449825 -27288 L +449825 -33408 L +443705 -33408 L +@c +F +T +@rax 413.35115 55.92019 553.73272 208.51654 @E +[0.00028346 0.00000000 0.00000000 0.00028346 419.85069330 205.98632317] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 63499.00000 z +%CHAR: 0 -154990 (1) @t +23657 -154990 m +18073 -154990 L +18073 -119428 L +16729 -120708 14961 -121996 12785 -123277 c +10609 -124557 8640 -125517 6912 -126157 C +6912 -120764 L +10032 -119300 12761 -117516 15097 -115436 c +17433 -113348 19089 -111316 20057 -109356 C +23657 -109356 L +23657 -154990 L +@c +F +%CHAR: 133264 -154990 (3) @t +135928 -142989 m +141504 -142253 L +142144 -145414 143240 -147694 144777 -149086 c +146313 -150478 148201 -151182 150409 -151182 c +153033 -151182 155249 -150270 157057 -148454 c +158865 -146638 159769 -144381 159769 -141693 c +159769 -139133 158929 -137013 157257 -135349 c +155585 -133685 153449 -132853 150873 -132853 c +149817 -132853 148505 -133061 146937 -133477 C +147553 -128581 L +147921 -128613 148225 -128637 148449 -128637 c +150825 -128637 152969 -128013 154865 -126781 c +156769 -125541 157721 -123621 157721 -121044 c +157721 -118996 157025 -117300 155649 -115956 c +154265 -114612 152473 -113940 150281 -113940 c +148113 -113940 146297 -114628 144857 -115988 c +143416 -117348 142480 -119404 142064 -122124 C +136488 -121132 L +137160 -117396 138712 -114492 141128 -112444 c +143544 -110388 146561 -109356 150161 -109356 c +152641 -109356 154929 -109892 157009 -110948 c +159097 -112012 160697 -113468 161801 -115308 c +162905 -117148 163457 -119100 163457 -121164 c +163457 -123132 162929 -124925 161881 -126533 c +160825 -128141 159257 -129429 157193 -130373 C +159881 -130997 161969 -132285 163457 -134237 c +164945 -136189 165690 -138637 165690 -141565 c +165690 -145534 164241 -148902 161353 -151654 c +158457 -154414 154793 -155798 150377 -155798 c +146393 -155798 143072 -154606 140440 -152238 c +137808 -149862 136296 -146774 135928 -142997 c +135928 -142989 L +@c +F +%CHAR: 0 -226062 (2) @t +31970 -220702 m +31962 -226062 L +1920 -226062 L +1880 -224726 2096 -223430 2568 -222190 c +3336 -220142 4560 -218126 6240 -216142 c +7920 -214157 10360 -211861 13545 -209261 c +18481 -205213 21825 -201997 23553 -199637 c +25289 -197269 26161 -195029 26161 -192924 c +26161 -190716 25369 -188844 23793 -187324 c +22209 -185804 20145 -185044 17609 -185044 c +14921 -185044 12769 -185852 11161 -187460 c +9544 -189076 8728 -191316 8712 -194164 C +2976 -193572 L +3360 -189300 4840 -186036 7400 -183796 c +9960 -181556 13409 -180428 17729 -180428 c +22089 -180428 25545 -181636 28081 -184052 c +30625 -186468 31898 -189476 31898 -193044 c +31898 -194861 31521 -196653 30785 -198405 c +30041 -200165 28801 -202021 27081 -203957 c +25353 -205901 22481 -208573 18473 -211957 c +15129 -214765 12969 -216678 12025 -217678 c +11081 -218678 10288 -219694 9672 -220702 C +31970 -220702 L +@c +F +%CHAR: 133264 -226062 (l) @t +137328 -226062 m +137320 -180612 L +142904 -180612 L +142904 -226062 L +137328 -226062 L +@c +F +%CHAR: 147368 -226062 (o) @t +149480 -209597 m +149480 -203501 151168 -198981 154560 -196053 c +157392 -193620 160849 -192396 164913 -192396 c +169441 -192396 173145 -193884 176009 -196845 c +178881 -199805 180322 -203909 180322 -209133 c +180322 -213373 179682 -216710 178417 -219134 c +177145 -221566 175289 -223454 172865 -224798 c +170441 -226142 167785 -226814 164913 -226814 c +160305 -226814 156576 -225334 153736 -222382 c +150896 -219422 149472 -215157 149472 -209605 C +149480 -209597 L +@c +155208 -209597 m +155208 -213813 156128 -216974 157969 -219070 c +159809 -221166 162129 -222222 164913 -222222 c +167681 -222222 169985 -221166 171825 -219062 c +173665 -216950 174585 -213733 174585 -209413 c +174585 -205349 173657 -202261 171809 -200165 c +169961 -198069 167657 -197013 164913 -197013 c +162129 -197013 159809 -198061 157969 -200141 c +156128 -202229 155208 -205389 155208 -209605 C +155208 -209597 L +@c +F +%CHAR: 182680 -226062 (c) @t +208353 -213997 m +213833 -214717 L +213241 -218494 211697 -221462 209233 -223598 c +206769 -225742 203729 -226814 200129 -226814 c +195633 -226814 192008 -225342 189272 -222398 c +186536 -219454 185160 -215221 185160 -209725 c +185160 -206173 185752 -203061 186920 -200397 c +188096 -197733 189896 -195725 192296 -194397 c +194705 -193068 197329 -192396 200161 -192396 c +203737 -192396 206665 -193300 208937 -195109 c +211209 -196917 212665 -199485 213305 -202813 C +207881 -203653 L +207369 -201445 206449 -199773 205137 -198661 c +203825 -197541 202233 -196981 200377 -196981 c +197569 -196981 195281 -197989 193529 -200005 c +191776 -202021 190896 -205213 190896 -209573 c +190896 -213989 191744 -217214 193433 -219214 c +195129 -221214 197345 -222222 200073 -222222 c +202257 -222222 204089 -221550 205553 -220206 c +207025 -218862 207961 -216790 208345 -214005 C +208353 -213997 L +@c +F +%CHAR: 214432 -226062 (a) @t +240105 -221998 m +238041 -223758 236041 -225006 234137 -225726 c +232225 -226446 230169 -226814 227977 -226814 c +224360 -226814 221576 -225926 219640 -224166 c +217696 -222398 216720 -220134 216720 -217382 c +216720 -215774 217088 -214293 217816 -212965 c +218552 -211637 219520 -210557 220704 -209757 c +221888 -208957 223232 -208341 224720 -207925 c +225817 -207637 227473 -207357 229681 -207093 c +234185 -206557 237505 -205909 239633 -205165 C +239649 -204405 239665 -203917 239665 -203709 c +239665 -201437 239137 -199837 238089 -198909 c +236665 -197645 234537 -197013 231729 -197013 c +229105 -197013 227169 -197477 225921 -198389 c +224672 -199309 223736 -200941 223144 -203277 C +217680 -202533 L +218176 -200197 218992 -198309 220128 -196877 c +221264 -195437 222920 -194325 225065 -193556 c +227209 -192788 229705 -192396 232537 -192396 c +235345 -192396 237633 -192732 239385 -193388 c +241145 -194044 242441 -194885 243265 -195885 c +244089 -196885 244673 -198157 245001 -199677 c +245185 -200629 245281 -202349 245281 -204829 c +245281 -212269 l +245281 -217454 245401 -220742 245633 -222110 c +245873 -223486 246346 -224806 247050 -226062 C +241217 -226062 L +240641 -224910 240257 -223550 240097 -222006 C +240105 -221998 L +@c +239641 -209533 m +237609 -210365 234569 -211069 230521 -211645 c +228233 -211973 226601 -212349 225657 -212757 c +224704 -213173 223960 -213781 223448 -214573 c +222936 -215373 222672 -216262 222672 -217230 c +222672 -218718 223240 -219958 224360 -220950 c +225489 -221942 227145 -222438 229313 -222438 c +231457 -222438 233377 -221966 235049 -221030 c +236721 -220086 237953 -218798 238737 -217166 c +239329 -215910 239633 -214045 239633 -211589 c +239641 -209533 L +@c +F +%CHAR: 249744 -226062 (l) @t +253808 -226062 m +253800 -180612 L +259384 -180612 L +259384 -226062 L +253808 -226062 L +@c +F +%CHAR: 0 -297134 (3) @t +2664 -285133 m +8240 -284397 L +8880 -287558 9976 -289838 11513 -291230 c +13049 -292622 14937 -293326 17145 -293326 c +19769 -293326 21985 -292414 23793 -290598 c +25601 -288782 26505 -286525 26505 -283837 c +26505 -281277 25665 -279157 23993 -277493 c +22321 -275829 20185 -274997 17609 -274997 c +16553 -274997 15241 -275205 13673 -275621 C +14289 -270725 L +14657 -270757 14961 -270781 15185 -270781 c +17561 -270781 19705 -270157 21601 -268925 c +23505 -267685 24457 -265765 24457 -263188 c +24457 -261140 23761 -259444 22385 -258100 c +21001 -256756 19209 -256084 17017 -256084 c +14849 -256084 13033 -256772 11593 -258132 c +10152 -259492 9216 -261548 8800 -264268 C +3224 -263276 L +3896 -259540 5448 -256636 7864 -254588 c +10280 -252532 13297 -251500 16897 -251500 c +19377 -251500 21665 -252036 23745 -253092 c +25833 -254156 27433 -255612 28537 -257452 c +29641 -259292 30193 -261244 30193 -263308 c +30193 -265276 29665 -267069 28617 -268677 c +27561 -270285 25993 -271573 23929 -272517 C +26617 -273141 28705 -274429 30193 -276381 c +31681 -278333 32426 -280781 32426 -283709 c +32426 -287678 30977 -291046 28089 -293798 c +25193 -296558 21529 -297942 17113 -297942 c +13129 -297942 9808 -296750 7176 -294382 c +4544 -292006 3032 -288918 2664 -285141 c +2664 -285133 L +@c +F +%CHAR: 133264 -297134 (b) @t +142600 -297134 m +137416 -297134 L +137416 -251684 L +142992 -251684 L +142992 -267901 L +145345 -264948 148361 -263468 152017 -263468 c +154041 -263468 155961 -263876 157769 -264692 c +159577 -265509 161065 -266661 162233 -268133 c +163401 -269605 164321 -271397 164977 -273477 c +165634 -275565 165970 -277805 165970 -280181 c +165970 -285821 164569 -290190 161785 -293262 c +159001 -296342 155641 -297886 151737 -297886 c +147857 -297886 144801 -296262 142592 -293014 C +142600 -297134 L +@c +142536 -280421 m +142536 -284373 143072 -287230 144145 -288982 c +145897 -291854 148281 -293294 151273 -293294 c +153705 -293294 155817 -292230 157593 -290118 c +159369 -287998 160265 -284837 160265 -280645 c +160265 -276349 159409 -273173 157713 -271125 c +156009 -269077 153937 -268053 151521 -268053 c +149089 -268053 146977 -269117 145201 -271229 c +143424 -273349 142528 -276421 142528 -280429 C +142536 -280421 L +@c +F +%CHAR: 0 -368206 (A) @t +-104 -368206 m +17361 -322756 L +23841 -322756 L +42442 -368206 L +35594 -368206 L +30289 -354445 L +11281 -354445 L +6288 -368206 L +-104 -368206 L +@c +13025 -349541 m +28425 -349541 L +23681 -336957 l +22241 -333132 21161 -329988 20457 -327532 C +19881 -330444 19065 -333340 18009 -336212 c +13025 -349541 L +@c +F +%CHAR: 136800 -368206 (3) @t +139464 -356205 m +145040 -355469 L +145680 -358630 146776 -360910 148313 -362302 c +149849 -363694 151737 -364398 153945 -364398 c +156569 -364398 158785 -363486 160593 -361670 c +162401 -359854 163305 -357597 163305 -354909 c +163305 -352349 162465 -350229 160793 -348565 c +159121 -346901 156985 -346069 154409 -346069 c +153353 -346069 152041 -346277 150473 -346693 C +151089 -341797 L +151457 -341829 151761 -341853 151985 -341853 c +154361 -341853 156505 -341229 158401 -339997 c +160305 -338757 161257 -336837 161257 -334260 c +161257 -332212 160561 -330516 159185 -329172 c +157801 -327828 156009 -327156 153817 -327156 c +151649 -327156 149833 -327844 148393 -329204 c +146952 -330564 146016 -332620 145600 -335340 C +140024 -334348 L +140696 -330612 142248 -327708 144664 -325660 c +147080 -323604 150097 -322572 153697 -322572 c +156177 -322572 158465 -323108 160545 -324164 c +162633 -325228 164233 -326684 165337 -328524 c +166441 -330364 166993 -332316 166993 -334380 c +166993 -336348 166465 -338141 165417 -339749 c +164361 -341357 162793 -342645 160729 -343589 C +163417 -344213 165505 -345501 166993 -347453 c +168481 -349405 169226 -351853 169226 -354781 c +169226 -358750 167777 -362118 164889 -364870 c +161993 -367630 158329 -369014 153913 -369014 c +149929 -369014 146608 -367822 143976 -365454 c +141344 -363078 139832 -359990 139464 -356213 c +139464 -356205 L +@c +F +%CHAR: 0 -439278 (B) @t +4648 -439278 m +4648 -393828 L +21697 -393828 l +25169 -393828 27953 -394292 30049 -395204 c +32146 -396124 33802 -397548 34986 -399452 c +36170 -401364 36770 -403372 36770 -405452 c +36770 -407396 36242 -409229 35194 -410941 c +34138 -412653 32538 -414045 30409 -415101 C +33162 -415901 35282 -417285 36754 -419221 c +38226 -421157 38970 -423461 38970 -426101 c +38970 -428229 38522 -430222 37626 -432046 c +36730 -433870 35610 -435286 34290 -436278 c +32970 -437270 31305 -438022 29313 -438518 c +27321 -439022 24873 -439278 21977 -439278 c +4648 -439278 L +@c +10665 -412925 m +20489 -412925 l +23153 -412925 25073 -412749 26225 -412397 c +27753 -411949 28913 -411189 29681 -410141 c +30457 -409085 30849 -407757 30849 -406164 c +30849 -404660 30481 -403332 29761 -402188 c +29041 -401036 28001 -400244 26665 -399828 c +25321 -399404 23009 -399188 19745 -399188 c +10665 -399188 L +10665 -412925 L +@c +10665 -433918 m +21977 -433918 l +23921 -433918 25289 -433846 26073 -433702 c +27449 -433454 28609 -433038 29537 -432462 c +30465 -431886 31241 -431038 31834 -429934 c +32434 -428830 32738 -427549 32738 -426101 c +32738 -424413 32298 -422941 31433 -421693 c +30569 -420445 29361 -419557 27825 -419053 c +26289 -418549 24065 -418293 21169 -418293 c +10665 -418293 L +10665 -433918 L +@c +F +%CHAR: 140304 -439278 (a) @t +165977 -435214 m +163913 -436974 161913 -438222 160009 -438942 c +158097 -439662 156041 -440030 153849 -440030 c +150232 -440030 147448 -439142 145512 -437382 c +143568 -435614 142592 -433350 142592 -430598 c +142592 -428990 142960 -427509 143688 -426181 c +144424 -424853 145392 -423773 146576 -422973 c +147760 -422173 149104 -421557 150592 -421141 c +151689 -420853 153345 -420573 155553 -420309 c +160057 -419773 163377 -419125 165505 -418381 C +165521 -417621 165537 -417133 165537 -416925 c +165537 -414653 165009 -413053 163961 -412125 c +162537 -410861 160409 -410229 157601 -410229 c +154977 -410229 153041 -410693 151793 -411605 c +150544 -412525 149608 -414157 149016 -416493 C +143552 -415749 L +144048 -413413 144864 -411525 146000 -410093 c +147136 -408653 148792 -407541 150937 -406772 c +153081 -406004 155577 -405612 158409 -405612 c +161217 -405612 163505 -405948 165257 -406604 c +167017 -407260 168313 -408101 169137 -409101 c +169961 -410101 170545 -411373 170873 -412893 c +171057 -413845 171153 -415565 171153 -418045 c +171153 -425485 l +171153 -430670 171273 -433958 171505 -435326 c +171745 -436702 172218 -438022 172922 -439278 C +167089 -439278 L +166513 -438126 166129 -436766 165969 -435222 C +165977 -435214 L +@c +165513 -422749 m +163481 -423581 160441 -424285 156393 -424861 c +154105 -425189 152473 -425565 151529 -425973 c +150576 -426389 149832 -426997 149320 -427789 c +148808 -428589 148544 -429478 148544 -430446 c +148544 -431934 149112 -433174 150232 -434166 c +151361 -435158 153017 -435654 155185 -435654 c +157329 -435654 159249 -435182 160921 -434246 c +162593 -433302 163825 -432014 164609 -430382 c +165201 -429126 165505 -427261 165505 -424805 c +165513 -422749 L +@c +F +%CHAR: 0 -510350 (C) @t +37330 -494413 m +43338 -495933 L +42082 -500878 39810 -504646 36538 -507238 c +33266 -509830 29257 -511126 24521 -511126 c +19625 -511126 15641 -510126 12577 -508134 c +9504 -506142 7168 -503246 5568 -499469 c +3968 -495693 3160 -491621 3160 -487285 c +3160 -482557 4064 -478420 5872 -474900 c +7680 -471380 10256 -468692 13593 -466868 c +16929 -465044 20609 -464124 24617 -464124 c +29161 -464124 32986 -465284 36082 -467596 c +39186 -469908 41354 -473172 42570 -477364 C +36642 -478757 L +35594 -475452 34058 -473036 32058 -471532 c +30057 -470028 27529 -469268 24489 -469268 c +21001 -469268 18073 -470108 15729 -471780 c +13385 -473452 11729 -475708 10785 -478524 c +9840 -481341 9360 -484261 9360 -487253 c +9360 -491117 9928 -494493 11049 -497373 c +12169 -500254 13929 -502414 16305 -503838 c +18681 -505262 21257 -505982 24025 -505982 c +27393 -505982 30249 -505006 32586 -503070 c +34922 -501126 36506 -498237 37330 -494413 C +@c +F +%CHAR: 143808 -510350 (3) @t +146472 -498349 m +152048 -497613 L +152688 -500774 153784 -503054 155321 -504446 c +156857 -505838 158745 -506542 160953 -506542 c +163577 -506542 165793 -505630 167601 -503814 c +169409 -501998 170313 -499741 170313 -497053 c +170313 -494493 169473 -492373 167801 -490709 c +166129 -489045 163993 -488213 161417 -488213 c +160361 -488213 159049 -488421 157481 -488837 C +158097 -483941 L +158465 -483973 158769 -483997 158993 -483997 c +161369 -483997 163513 -483373 165409 -482141 c +167313 -480901 168265 -478981 168265 -476404 c +168265 -474356 167569 -472660 166193 -471316 c +164809 -469972 163017 -469300 160825 -469300 c +158657 -469300 156841 -469988 155401 -471348 c +153960 -472708 153024 -474764 152608 -477484 C +147032 -476492 L +147704 -472756 149256 -469852 151672 -467804 c +154088 -465748 157105 -464716 160705 -464716 c +163185 -464716 165473 -465252 167553 -466308 c +169641 -467372 171241 -468828 172345 -470668 c +173449 -472508 174001 -474460 174001 -476524 c +174001 -478492 173473 -480285 172425 -481893 c +171369 -483501 169801 -484789 167737 -485733 C +170425 -486357 172513 -487645 174001 -489597 c +175489 -491549 176234 -493997 176234 -496925 c +176234 -500894 174785 -504262 171897 -507014 c +169001 -509774 165337 -511158 160921 -511158 c +156937 -511158 153616 -509966 150984 -507598 c +148352 -505222 146840 -502134 146472 -498357 c +146472 -498349 L +@c +F +T +@rax 413.35115 55.92019 553.73272 208.51654 @E +[0.00028346 0.00000000 0.00000000 0.00028346 419.85069330 205.98632317] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/MTExtra 63499.00000 z +%CHAR: 52952 -154990 (a) @t +57712 -141021 m +57712 -155246 L +54536 -155246 L +54536 -123236 L +57712 -123236 L +57712 -137461 L +106539 -137461 L +105314 -136237 103586 -134293 101362 -131653 c +99138 -129013 97242 -126709 95682 -124765 C +97906 -122540 L +102130 -127581 107451 -133149 113843 -139245 C +107451 -145342 102130 -150910 97906 -155942 C +95682 -153726 L +100802 -147334 104426 -143093 106539 -141021 C +57712 -141021 L +@c +F +%CHAR: 52952 -226062 (a) @t +57712 -212093 m +57712 -226318 L +54536 -226318 L +54536 -194308 L +57712 -194308 L +57712 -208533 L +106539 -208533 L +105314 -207309 103586 -205365 101362 -202725 c +99138 -200085 97242 -197781 95682 -195837 C +97906 -193612 L +102130 -198653 107451 -204221 113843 -210317 C +107451 -216414 102130 -221982 97906 -227014 C +95682 -224798 L +100802 -218406 104426 -214165 106539 -212093 C +57712 -212093 L +@c +F +%CHAR: 52952 -297134 (a) @t +57712 -283165 m +57712 -297390 L +54536 -297390 L +54536 -265380 L +57712 -265380 L +57712 -279605 L +106539 -279605 L +105314 -278381 103586 -276437 101362 -273797 c +99138 -271157 97242 -268853 95682 -266909 C +97906 -264684 L +102130 -269725 107451 -275293 113843 -281389 C +107451 -287486 102130 -293054 97906 -298086 C +95682 -295870 L +100802 -289478 104426 -285237 106539 -283165 C +57712 -283165 L +@c +F +%CHAR: 56488 -368206 (a) @t +61248 -354237 m +61248 -368462 L +58072 -368462 L +58072 -336452 L +61248 -336452 L +61248 -350677 L +110075 -350677 L +108850 -349453 107122 -347509 104898 -344869 c +102674 -342229 100778 -339925 99218 -337981 C +101442 -335756 L +105666 -340797 110987 -346365 117379 -352461 C +110987 -358558 105666 -364126 101442 -369158 C +99218 -366942 L +104338 -360550 107962 -356309 110075 -354237 C +61248 -354237 L +@c +F +%CHAR: 59992 -439278 (a) @t +64752 -425309 m +64752 -439534 L +61576 -439534 L +61576 -407524 L +64752 -407524 L +64752 -421749 L +113579 -421749 L +112354 -420525 110626 -418581 108402 -415941 c +106178 -413301 104282 -410997 102722 -409053 C +104946 -406828 L +109170 -411869 114491 -417437 120883 -423533 C +114491 -429630 109170 -435198 104946 -440230 C +102722 -438014 L +107842 -431622 111466 -427381 113579 -425309 C +64752 -425309 L +@c +F +%CHAR: 63496 -510350 (a) @t +68256 -496381 m +68256 -510606 L +65080 -510606 L +65080 -478596 L +68256 -478596 L +68256 -492821 L +117083 -492821 L +115858 -491597 114130 -489653 111906 -487013 c +109682 -484373 107786 -482069 106226 -480125 C +108450 -477900 L +112674 -482941 117995 -488509 124387 -494605 C +117995 -500702 112674 -506270 108450 -511302 C +106226 -509086 L +111346 -502694 114970 -498453 117083 -496381 C +68256 -496381 L +@c +F +T +@rax %Note: Object +289.47175 44.08809 557.67969 214.78422 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +289.47175 214.78422 m +557.67969 214.78422 L +557.67969 44.08809 L +289.47175 44.08809 L +289.47175 214.78422 L +@c +S + +@rax %Note: Object +394.90328 44.73156 394.90441 215.42258 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +394.90384 215.42258 m +394.90384 44.73156 L +S + +@rax 289.96469 241.90838 299.24220 255.15298 @E +[0.00021766 0.00000000 0.00000000 0.00021766 289.96477394 241.90829453] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (2) @t +42621 7150 m +42621 0 L +2555 0 L +2508 1782 2790 3516 3423 5157 c +4442 7888 6083 10584 8322 13221 c +10573 15872 13819 18931 18064 22400 c +24651 27792 29105 32082 31414 35235 c +33723 38388 34884 41377 34884 44191 c +34884 47133 33829 49630 31731 51646 c +29621 53674 26866 54694 23479 54694 c +19892 54694 17020 53615 14875 51470 c +12729 49314 11639 46336 11616 42539 C +3962 43324 L +4477 49021 6458 53381 9869 56358 c +13292 59347 17888 60847 23643 60847 c +29457 60847 34063 59230 37450 56018 c +40838 52795 42539 48786 42539 44027 c +42539 41600 42033 39209 41049 36876 c +40064 34532 38412 32059 36114 29480 c +33817 26890 29984 23326 24639 18802 c +20173 15063 17302 12518 16036 11182 c +14770 9846 13714 8486 12893 7150 C +42621 7150 L +@c +F +T +@rax 240.85474 290.96646 250.26605 304.44576 @E +[0.00021766 0.00000000 0.00000000 0.00021766 240.85469059 291.20120864] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (3) @t +3552 16001 m +10994 16985 L +11838 12764 13304 9717 15344 7865 c +17396 6013 19904 5075 22858 5075 c +26351 5075 29316 6294 31719 8709 c +34133 11135 35341 14149 35341 17735 c +35341 21146 34227 23971 32000 26186 c +29773 28402 26925 29515 23479 29515 c +22072 29515 20314 29234 18228 28683 C +19048 35212 L +19541 35165 19951 35130 20255 35130 c +23420 35130 26268 35962 28800 37615 c +31332 39267 32610 41822 32610 45258 c +32610 47989 31684 50263 29843 52045 c +28003 53826 25612 54729 22694 54729 c +19798 54729 17384 53815 15462 52009 c +13538 50193 12284 47450 11733 43816 C +4290 45141 L +5204 50122 7279 53990 10490 56733 c +13714 59476 17735 60847 22529 60847 c +25835 60847 28882 60132 31660 58726 c +34438 57307 36571 55362 38048 52912 c +39525 50462 40264 47848 40264 45094 c +40264 42480 39560 40088 38154 37943 c +36747 35798 34661 34086 31906 32821 C +35493 32000 38283 30277 40264 27675 c +42244 25073 43242 21803 43242 17900 c +43242 12600 41307 8111 37450 4442 c +33594 762 28706 -1078 22811 -1078 c +17501 -1078 13081 504 9564 3669 c +6048 6833 4044 10948 3552 15989 c +3552 16001 L +@c +F +T +@rax 94.27493 268.81852 101.14157 282.06283 @E +[0.00021766 0.00000000 0.00000000 0.00021766 94.27491729 268.81837052] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (1) @t +31543 0 m +24100 0 L +24100 47415 L +22307 45703 19951 43992 17044 42291 c +14137 40580 11522 39291 9213 38435 C +9213 45633 L +13374 47591 17020 49970 20127 52748 c +23244 55526 25448 58233 26737 60847 C +31531 60847 L +31543 0 L +@c +F +T +@rax 324.79313 264.82791 334.25717 274.81635 @E +[0.00021766 0.00000000 0.00000000 0.00021766 324.79316307 265.04574485] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (a) @t +34227 5415 m +31473 3071 28812 1418 26268 457 c +23725 -504 20982 -996 18064 -996 c +13245 -996 9529 188 6939 2532 c +4349 4888 3048 7912 3048 11569 c +3048 13714 3540 15684 4513 17454 c +5497 19236 6787 20666 8357 21732 c +9940 22811 11733 23631 13714 24182 c +15169 24557 17384 24944 20338 25296 c +26339 26011 30769 26878 33606 27863 C +33629 28871 33641 29527 33641 29797 c +33641 32821 32938 34966 31531 36208 c +29632 37884 26808 38728 23057 38728 c +19564 38728 16985 38107 15321 36888 c +13655 35669 12413 33489 11616 30383 C +4337 31367 L +4993 34485 6083 37005 7595 38916 c +9107 40826 11311 42303 14172 43336 c +17032 44367 20361 44895 24135 44895 c +27886 44895 30933 44449 33266 43570 c +35610 42691 37333 41576 38435 40240 c +39537 38904 40322 37216 40756 35177 c +41002 33911 41131 31613 41131 28308 c +41131 18392 l +41131 11475 41295 7103 41600 5275 c +41916 3446 42550 1676 43488 0 C +35716 0 L +34942 1535 34438 3352 34227 5415 C +@c +33606 22037 m +30910 20935 26843 19986 21451 19212 c +18392 18779 16223 18275 14958 17735 c +13690 17185 12706 16364 12026 15309 c +11346 14254 10994 13069 10994 11780 c +10994 9799 11745 8134 13245 6822 c +14747 5497 16950 4829 19834 4829 c +22694 4829 25260 5462 27487 6705 c +29714 7959 31367 9682 32410 11862 c +33207 13538 33606 16024 33606 19306 c +33606 22037 L +@c +F +T +@rax 270.42094 268.60054 279.91361 282.00784 @E +[0.00021766 0.00000000 0.00000000 0.00021766 270.42081867 268.81837052] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (b) @t +12448 0 m +5532 0 L +5532 60601 L +12975 60601 L +12975 38974 L +16118 42914 20127 44895 25003 44895 c +27698 44895 30265 44344 32668 43265 c +35083 42174 37075 40639 38623 38669 c +40182 36700 41412 34321 42280 31543 c +43160 28753 43605 25776 43605 22611 c +43605 15086 41740 9271 38025 5169 c +34309 1067 29843 -996 24639 -996 c +19458 -996 15379 1172 12436 5497 C +12448 0 L +@c +12366 22283 m +12366 17020 13069 13210 14500 10866 c +16845 7044 20021 5122 24018 5122 c +27265 5122 30078 6540 32446 9354 c +34813 12178 35997 16399 35997 21990 c +35997 27710 34860 31953 32586 34673 c +30312 37404 27558 38775 24346 38775 c +21099 38775 18286 37357 15919 34544 c +13550 31719 12354 27616 12354 22272 C +12366 22283 L +@c +F +T +@rax 243.29140 233.52123 252.33420 243.50967 @E +[0.00021766 0.00000000 0.00000000 0.00021766 243.29134578 233.73902440] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (c) @t +34227 16083 m +41541 15122 L +40744 10080 38693 6130 35411 3282 c +32117 434 28062 -996 23268 -996 c +17267 -996 12424 973 8779 4888 c +5134 8814 3305 14454 3305 21779 c +3305 26515 4091 30676 5661 34227 c +7232 37779 9623 40451 12823 42221 c +16036 44004 19541 44895 23315 44895 c +28074 44895 31988 43687 35012 41272 c +38037 38857 39994 35434 40838 31004 C +33606 29879 L +32926 32832 31695 35059 29949 36536 c +28202 38025 26081 38775 23596 38775 c +19857 38775 16809 37427 14465 34743 c +12120 32059 10948 27804 10948 21990 c +10948 16094 12085 11803 14336 9131 c +16598 6458 19552 5122 23186 5122 c +26104 5122 28554 6025 30500 7806 c +32457 9588 33711 12354 34227 16071 c +34227 16083 L +@c +F +T +@rax 77.74583 165.48973 90.32485 179.12920 @E +[0.00021766 0.00000000 0.00000000 0.00021766 77.74592832 165.71466363] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (C) @t +49771 21252 m +57788 19212 L +56112 12635 53076 7607 48716 4149 c +44356 692 38998 -1043 32692 -1043 c +26163 -1043 20842 293 16763 2942 c +12671 5603 9553 9459 7420 14500 c +5286 19541 4208 24967 4208 30746 c +4208 37052 5415 42574 7818 47262 c +10233 51963 13667 55538 18122 57976 c +22576 60414 27476 61633 32821 61633 c +38880 61633 43992 60085 48118 57003 c +52244 53920 55139 49571 56757 43980 C +48856 42115 L +47450 46524 45410 49747 42738 51752 c +40064 53768 36700 54776 32657 54776 c +28003 54776 24100 53650 20982 51423 c +17853 49196 15649 46184 14383 42433 c +13116 38669 12483 34778 12483 30793 c +12483 25636 13233 21135 14735 17302 c +16235 13456 18568 10584 21732 8685 c +24897 6787 28343 5825 32035 5825 c +36524 5825 40334 7126 43441 9705 c +46559 12296 48669 16153 49771 21240 c +49771 21252 L +@c +F +T +@rax 121.59014 368.92828 133.93672 382.11761 @E +[0.00021766 0.00000000 0.00000000 0.00021766 121.61878102 368.92822371] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (A) @t +-141 0 m +23151 60601 L +31789 60601 L +56592 0 L +47450 0 L +40381 18345 L +15040 18345 L +8381 0 L +-141 0 L +@c +17360 24885 m +37908 24885 L +31578 41670 l +29656 46758 28214 50955 27276 54236 C +26503 50345 25413 46477 24018 42656 c +17360 24885 L +@c +F +T +@rax 419.27187 344.77682 430.58183 357.96643 @E +[0.00021766 0.00000000 0.00000000 0.00021766 419.27182886 344.77693330] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 84666.00000 z +%CHAR: 0 0 (B) @t +6201 0 m +6201 60601 L +28929 60601 l +33559 60601 37286 59980 40076 58761 c +42867 57542 45071 55643 46641 53100 c +48224 50556 49021 47884 49021 45094 c +49021 42515 48317 40064 46922 37779 c +45516 35493 43383 33641 40545 32235 C +44203 31168 47028 29328 48997 26749 c +50966 24159 51963 21088 51963 17560 c +51963 14723 51365 12085 50169 9647 c +48974 7209 47473 5321 45715 4009 c +43957 2684 41729 1676 39080 1008 c +36431 340 33161 0 29304 0 c +6201 0 L +@c +14219 35141 m +27323 35130 l +30875 35130 33430 35364 34966 35833 c +37005 36442 38541 37450 39572 38857 c +40603 40264 41131 42033 41131 44145 c +41131 46161 40650 47931 39689 49454 c +38728 50978 37333 52033 35552 52596 c +33758 53158 30676 53451 26327 53451 c +14219 53451 L +14219 35141 L +@c +14219 7150 m +29304 7150 l +31895 7150 33723 7244 34766 7431 c +36607 7759 38154 8322 39384 9084 c +40627 9858 41647 10983 42445 12460 c +43242 13936 43652 15637 43652 17560 c +43652 19822 43066 21791 41916 23455 c +40768 25120 39150 26292 37099 26960 c +35048 27640 32082 27980 28226 27980 c +14219 27980 L +14219 7150 L +@c +F +T +@rax %Note: Object +261.56608 194.14970 300.50872 234.18142 @E +0 J 0 j [2 5 ] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +300.50872 234.18142 m +276.19228 224.62866 261.56608 197.55694 287.02261 194.14970 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +290.53729 193.67943 m +283.94476 197.61279 L +284.67638 195.48085 284.40907 193.48271 283.14255 191.61836 C +290.53729 193.67943 L +f +@J + +@rax %Note: Object +114.16252 248.54570 280.20444 271.78214 @E +0 J 0 j [2 5 ] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +114.16252 271.78214 m +280.20444 248.54570 L +S + +%%PageTrailer +@rs +@rs +%%Trailer +@EndSysCorelDict +end +%%DocumentSuppliedResources: procset wCorel6Dict +%%EOF diff -Nru bird3-3.1.0/doc/slides/obr2.eps bird3-3.1.7/doc/slides/obr2.eps --- bird3-3.1.0/doc/slides/obr2.eps 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/obr2.eps 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,1134 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 38 83 565 445 +%%Creator: CorelDRAW +%%Title: +%%CreationDate: Mon Jun 26 02:36:57 2000 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: (atend) +%%EndComments +%%BeginProlog +/AutoFlatness true def +/AutoSteps 0 def +/CMYKMarks true def +/UseLevel2 false def +%Color profile: _DEFAULT.CCM - Generic CMYK +%%BeginResource: procset wCorel6Dict 6.0 0 +% Copyright (c)1992-96 Corel Corporation +% All rights reserved. v6.0 r1.1 +/wCorel6Dict 300 dict def wCorel6Dict begin/bd{bind def}bind def/ld{load def} +bd/xd{exch def}bd/_ null def/rp{{pop}repeat}bd/@cp/closepath ld/@gs/gsave ld +/@gr/grestore ld/@np/newpath ld/Tl/translate ld/$sv 0 def/@sv{/$sv save def}bd +/@rs{$sv restore}bd/spg/showpage ld/showpage{}bd currentscreen/@dsp xd/$dsp +/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF false def/$Scra 0 def/SetScr +/setscreen ld/setscreen{pop pop pop}bd/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1 roll +pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5 0 +def}ifelse/CurrentInkName_5 where{pop}{/CurrentInkName_5(Composite)def}ifelse +/$ink_5 where{pop}{/$ink_5 -1 def}ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def +/$t 1 def/$n _ def/$o 0 def/$fil 0 def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 +def/$N _ def/$O 0 def/$PF false def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def +/s1t 0 def/s1n _ def/$bkg false def/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op +false def matrix currentmatrix/$ctm xd/$ptm matrix def/$ttm matrix def/$stm +matrix def/$fst 128 def/$pad 0 def/$rox 0 def/$roy 0 def/$fmp 50 def/$ffpnt +true def/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring +16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle +16#60/grave 16#7C/bar +16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl +16#88/circumflex/perthousand/Scaron/guilsinglleft/OE +16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash +16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis +16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section +16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron +16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def +/@BeginSysCorelDict{systemdict/Corel30Dict known{systemdict/Corel30Dict get +exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known{end}if}bd AutoFlatness +{/@ifl{dup currentflat exch sub 10 gt{ +([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush +@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{ +{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill +{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip +/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat} +bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse} +bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped +{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{ +/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit +ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l +/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp} +bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1 +exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1 +sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type +/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd +/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def} +ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{ +/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{ +dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2 +copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix +/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd +{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd} +if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch +load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA} +{$dsa}ifelse $SCP @ss}if}bd/p{/$pm xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def} +bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge{pop}{exch pop}ifelse}bd +/InRange{3 -1 roll @MN @MX}bd/wDstChck{2 1 roll dup 3 -1 roll eq{1 add}if}bd +/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1 exch sub}bd +/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}repeat pop}bd +/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1 roll sub neg +exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index .114 mul add +4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb/setrgbcolor ld/GetRgb +/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray ld/SetRgb2 systemdict +/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor get def/SetHsb +systemdict/sethsbcolor get def/GetHsb systemdict/currenthsbcolor get def +/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor sub 3 1 roll SetHsb +GetRgb2}bd/setcmykcolor where{pop/SetCmyk_5/setcmykcolor ld}{/SetCmyk_5{ +cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{pop/GetCmyk/currentcmykcolor +ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse/setoverprint where{pop}{/setoverprint{ +/$op xd}bd}ifelse/currentoverprint where{pop}{/currentoverprint{$op}bd}ifelse +/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1 roll mul exch}repeat pop}ifelse}bd +/@trp{exch pop 5 1 roll @tc_5}bd/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 +4 $ink_5 sub index exch pop 5 1 roll pop pop pop pop SepsColor true eq{$ink_5 3 +gt{1 sub neg SetGry}{0 0 0 4 $ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry} +ifelse}ifelse}bd/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array +astore}bd}ifelse/setcustomcolor where{pop}{/setcustomcolor{exch aload pop +SepMode_5 0 eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0} +ifelse 6 1 roll 5 rp 1 sub neg SetGry}ifelse}bd}ifelse/@scc_5{dup type +/booleantype eq{setoverprint}{1 eq setoverprint}ifelse dup _ eq{pop +setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse SepMode_5 +0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage where{pop +/ColorImage{colorimage}def}{/ColorImage{/ncolors xd pop/dataaq xd{dataaq +ncolors dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index +get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g +255 mul cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv +getinterval pop}{4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 +index get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div +$dat 4 index 3 add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 +roll put}for $dat 0 $dat length ncolors idiv getinterval}if}ifelse}image}bd +}ifelse/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd +/currentcmykcolor{0 0 0 0}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd +/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor} +bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd +/currentgray{currentrgbcolor rgb2g}bd}ifelse/WaldoColor_5 true def/@sft{$tllx +$pxf add dup $tllx gt{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei +add}if/$ty xd}bd/@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd/@ep{{cvx exec +}forall}bd/@tp{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei sub +$ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{/$in +false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 $phei +rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 index +sub Tl matrix currentmatrix/$ctm xd @ep pop pop pop pop}{pop pop}ifelse @rs}bd +/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{dup $llx gt{$pwid sub}{exit} +ifelse}loop exch $phei mul $ty exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 +roll add exch @tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup $pwid mul +$tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit}ifelse}loop 0 1 +$tly 1 sub{$phei mul 3 copy sub @tp pop}for pop pop}for}bd/@pf{@gs $ctm +setmatrix $pm concat @stb eoclip Bburx Bbury $pm itransform/$tury xd/$turx xd +Bbllx Bblly $pm itransform/$tlly xd/$tllx xd/$wid $turx $tllx sub def/$hei +$tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{eofill}if}{$t $c $m $y +$k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei scale <00> 8 1 +false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse @gr $wid 0 gt +$hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd exch sub +/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div ceiling 1 add +/$tly xd $psx 0 eq{@tv}{@th}ifelse}if @gr @np/$bkg false def}bd/@dlt_hsb{$fco +nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/kdb xd nff $fco sub +div/kdb2 xd sub neg 2 div dup $fco div/kds xd nff $fco sub div/kds2 xd sub neg +dup 0 eq{pop $frb 2 eq{.99}{-.99}ifelse}if dup $frb 2 eq exch 0 lt and{1 add} +if dup $frb 1 eq exch 0 gt and{1 sub}if 2 div dup $fco div/kdh xd nff $fco sub +div/kdh2 xd}bd/@dlt_cmyk{$fmp 50 eq{sub neg nff dup 1 gt{1 sub}if div/$dk xd +sub neg nff dup 1 gt{1 sub}if div/$dy xd sub neg nff dup 1 gt{1 sub}if div/$dm +xd sub neg nff dup 1 gt{1 sub}if div/$dc xd sub neg nff dup 1 gt{1 sub}if div +/$dt xd}{$fco nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/$dk xd +nff $fco sub div/$dk2 xd sub neg 2 div dup $fco div/$dy xd nff $fco sub div +/$dy2 xd sub neg 2 div dup $fco div/$dm xd nff $fco sub div/$dm2 xd sub neg 2 +div dup $fco div/$dc xd nff $fco sub div/$dc2 xd sub neg 2 div dup $fco div +/$dt xd nff $fco sub div/$dt2 xd}ifelse}bd/@dlt{$fse $fss sub dup/nff xd $fmp +mul $fmp add 100 div round cvi dup 0 le{pop 1}if/$fco xd/$fi 0 def $frb dup 1 +eq exch 2 eq or{$frt dup $frc $frm $fry $frk @tc_5 4 copy cmyk2rgb rgb2hsb 3 +copy/myb xd/mys xd/myh xd $tot $toc $tom $toy $tok @tc_5 cmyk2rgb rgb2hsb 3 1 +roll 4 1 roll 5 1 roll @dlt_hsb}{$frt dup $frc $frm $fry $frk @tc_5 5 copy $tot +dup $toc $tom $toy $tok @tc_5 5 1 roll 6 1 roll 7 1 roll 8 1 roll 9 1 roll +@dlt_cmyk}ifelse}bd/@ffnxt{/$fi $fi 1 add def $frb dup 1 eq exch 2 eq or{pop +pop pop pop myh mys myb $fi $fco lt{kdb add 3 1 roll kds add 3 1 roll kdh add 3 +1 roll}{kdb2 add 3 1 roll kds2 add 3 1 roll kdh2 add 3 1 roll}ifelse 3 copy +/myb xd/mys xd/myh xd hsb2rgb rgb2cmyk}{$fi $fco lt $fmp 50 eq or{$dk add 5 1 +roll $dy add 5 1 roll $dm add 5 1 roll $dc add 5 1 roll $dt add 5 1 roll}{$dk2 +add 5 1 roll $dy2 add 5 1 roll $dm2 add 5 1 roll $dc2 add 5 1 roll $dt2 add 5 1 +roll}ifelse}ifelse}bd/ffcol{5 copy $fsit 0 eq{setcmykcolor pop}{SepMode_5 0 ne +{$frn findcmykcustomcolor exch setcustomcolor}{pop pop pop pop $frc $frm $fry +$frk $frn findcmykcustomcolor exch setcustomcolor}ifelse}ifelse}bd/@ftl{1 index +4 index sub dup $pad mul dup/$pdw xd 2 mul sub $fst div/$wid xd 2 index sub +/$hei xd pop Tl @dlt $fss 0 eq{ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l @cp +$ffpnt{fill}{@np}ifelse}if $fss $wid mul $pdw add 0 Tl nff{ffcol n 0 0 m 0 $hei +l $wid $hei l $wid 0 l @cp $ffpnt{fill}{@np}ifelse $wid 0 Tl @ffnxt}repeat 5 rp +$tot dup $toc $tom $toy $tok @tc_5 ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l +@cp $ffpnt{fill}{@np}ifelse 5 rp}bd/@ftrs{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl $fan rotate +pop pop pop pop @dlt $fss 0 eq{ffcol $fty 3 eq{$hei dup neg dup m 2 mul @sqr}{ +0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse}if 1.0 $pad 2 mul sub +dup scale $hei $fss $wid mul sub/$hei xd nff{ffcol $fty 3 eq{n $hei dup neg dup +m 2 mul @sqr}{n 0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse/$hei +$hei $wid sub def @ffnxt}repeat 5 rp}bd/@ftc{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl pop pop pop +pop @dlt $fss 0 eq{ffcol $ffpnt{fill}{@np}ifelse}{n}ifelse/$dang 180 $fst 1 sub +div def/$sang $dang -2 div 180 add def/$eang $dang 2 div 180 add def/$sang +$sang $dang $fss mul add def/$eang $eang $dang $fss mul add def/$sang $eang +$dang sub def nff{ffcol n 0 0 m 0 0 $hei $sang $fan add $eang $fan add arc +$ffpnt{fill}{@np}ifelse 0 0 m 0 0 $hei $eang neg $fan add $sang neg $fan add +arc $ffpnt{fill}{@np}ifelse/$sang $eang def/$eang $eang $dang add def @ffnxt} +repeat 5 rp}bd/@fstAdjust{72 0 matrix defaultmatrix dtransform exch dup mul +exch dup mul add sqrt currentscreen pop pop div dup mul 1 add cvi 2 256 InRange +$fsc 1 sub dup 0 le{pop 1}if mul/opt$fst xd AutoSteps dup 1 eq exch 3 eq or{ +opt$fst dup dup $fst dup 3 1 roll div exch 3 -1 roll gt{/$adj xd/$fst xd}{pop +pop}ifelse}if AutoSteps dup 2 eq exch 3 eq or{opt$fst dup dup $fst dup 3 1 roll +div exch 3 -1 roll lt{/$adj xd/$fst xd}{pop pop}ifelse}if}bd/@ff{/old$fst $fst +def/$adj 1 def/$fss 0 def $o 1 eq setoverprint AutoSteps 0 gt{@fstAdjust}if 1 1 +$fsc 1 sub{dup 1 sub $fsit 0 eq{$fsa exch 5 mul 5 getinterval aload pop pop +/$frk xd/$fry xd/$frm xd/$frc xd/$frn _ def/$frt 1 def $fsa exch 5 mul 5 +getinterval aload pop $adj mul cvi $fss add/$fse xd/$tok xd/$toy xd/$tom xd +/$toc xd/$ton _ def/$tot 1 def}{$fsa exch 7 mul 7 getinterval aload pop pop +/$frt xd/$frn xd/$frk xd/$fry xd/$frm xd/$frc xd $fsa exch 7 mul 7 getinterval +aload pop $adj mul cvi $fss add/$fse xd/$tot xd/$ton xd/$tok xd/$toy xd/$tom xd +/$toc xd}ifelse $fsit 0 eq SepMode_5 0 eq or dup not CurrentInkName_5 $frn eq +and or{@sv $ctm setmatrix eoclip Bbllx Bblly Bburx Bbury $fty 2 eq{@ftc}{1 +index 3 index m 2 copy l 3 index 1 index l 3 index 3 index l @cp $fty dup 1 eq +exch 3 eq or{@ftrs}{pop pop pop pop $fan rotate pathbbox @ftl}ifelse}ifelse @rs +/$fss $fse def}{1 0 0 0 0 _ $o @scc_5{fill}if}ifelse}for @np/$fst old$fst def} +bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or $ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y +$k $n $o @scc_5 pop $ctm setmatrix 72 1000 div dup matrix scale dup concat dup +Bburx exch Bbury exch itransform ceiling cvi/Bbury xd ceiling cvi/Bburx xd +Bbllx exch Bblly exch itransform floor cvi/Bblly xd floor cvi/Bbllx xd $Prm +aload pop $Psn load exec}{1 SetGry eofill}ifelse @rs @np}bd/F{matrix +currentmatrix $sdf{$scf $sca $scp @ss}if $fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 +eq{@Pf}{$t $c $m $y $k $n $o @scc_5{eofill}{@np}ifelse}ifelse}ifelse}ifelse +$sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{matrix currentmatrix $ctm +setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc_5{matrix +currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF{$dsf $dsa $dsp +@ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{5 array astore +exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{/$ctm $ctm +currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{ +/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o +@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd/@P +{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/@k{/$fil 2 def/$fmp xd +/$roy xd/$rox xd/$pad xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst +xd/$fsc xd/$fsa xd/$fsit 0 def}bd/@x{/$fil 2 def/$fmp xd/$roy xd/$rox xd/$pad +xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst xd/$fsc xd/$fsa xd +/$fsit 1 def}bd/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index +3 index l 3 index 3 index l clip pop pop pop pop}bd/tcc{@cc}def/@i{@sm @gs @ii +6 index 1 ne{/$frg true def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5 +/$frg xd}{/$frg false def}ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np +/$ury xd/$urx xd/$lly xd/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 +div ceiling cvi string def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl +$urx $llx sub $ury $lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid +$hei abs $bts 1 eq{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/tcc load $bts 1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa +$dsp @ss}if}{$hei abs{tcc pop}repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs +@ii @np/$ury xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat +$wid $bts mul $ncl mul 8 div ceiling cvi string def $ngx $llx $lly Tl $urx $llx +sub $ury $lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/@cc load false $ncl ColorImage $SDF{$dsf $dsa $dsp @ss}if +@gr $ctm setmatrix}bd L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx xd +/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling cvi +string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK} +ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8 +dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent +$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]} +ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def +/DataSource currentfile/ASCII85Decode filter def currentdict end image $SDF +{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/z{exch findfont +exch scalefont setfont}bd/ZB{9 dict dup begin 4 1 roll/FontType 3 def +/FontMatrix xd/FontBBox xd/Encoding 256 array def 0 1 255{Encoding exch +/.notdef put}for/CharStrings 256 dict def CharStrings/.notdef{}put/Metrics 256 +dict def Metrics/.notdef 3 -1 roll put/BuildChar{exch dup/$char exch/Encoding +get 3 index get def dup/Metrics get $char get aload pop setcachedevice begin +Encoding exch get CharStrings exch get end exec}def end definefont pop}bd +/ZBAddChar{findfont begin dup 4 1 roll dup 6 1 roll Encoding 3 1 roll put +CharStrings 3 1 roll put Metrics 3 1 roll put end}bd/Z{findfont dup maxlength 2 +add dict exch dup{1 index/FID ne{3 index 3 1 roll put}{pop pop}ifelse}forall +pop dup dup/Encoding get 256 array copy dup/$fe xd/Encoding exch put dup +/Fontname 3 index put 3 -1 roll dup length 0 ne{0 exch{dup type 0 type eq{exch +pop}{$fe exch 2 index exch put 1 add}ifelse}forall pop}if dup 256 dict dup +/$met xd/Metrics exch put dup/FontMatrix get 0 get 1000 mul 1 exch div 3 index +length 256 eq{0 1 255{dup $fe exch get dup/.notdef eq{pop pop}{5 index 3 -1 +roll get 2 index mul $met 3 1 roll put}ifelse}for}if pop definefont pop pop}bd +/@ftx{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup @gs true charpath +$ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch m}forall}bd +/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if $fil 1 eq{/@@txt/@pf +ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq{/@@txt/@Pf ld @ftx}{$t $c $m +$y $k $n $o @scc_5{show}{pop}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp +@ss}if setmatrix}bd/@st{matrix currentmatrix exch $SDF{$SCF $SCA $SCP @ss}if $T +$C $M $Y $K $N $O @scc_5{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup +@gs true charpath $ctm setmatrix $ptm concat stroke @gr @np stringwidth pop 3 +-1 roll add exch m}forall}{pop}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd +/@te{@ft}bd/@tr{@st}bd/@ta{dup @gs @ft @gr @st}bd/@t@a{dup @gs @st @gr @ft}bd +/@tm{@sm concat}bd/e{/t{@te}def}bd/r{/t{@tr}def}bd/o{/t{pop}def}bd/a{/t{@ta} +def}bd/@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix/$ttm matrix def}bd/ddt +{t}def/@t{/$stm $stm currentmatrix def 3 1 roll m $ttm concat ddt $stm +setmatrix}bd/@n{/$ttm exch matrix rotate def}bd/@s{}bd/@l{}bd/@B{@gs S @gr F} +bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def}{ +CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1 +def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq +{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs +-72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr} +bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi} +bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt}bd/@unscale{}bd/@smc{CMYKMarks{0 exch eq{1 1 1 1 1 _ 0 @scc_5 +pop}{1 0 0 0 0 _ 0 @scc_5 pop}ifelse}{SetGry}ifelse}bd/@gmc{CMYKMarks{GetCmyk +pop pop pop 1 eq{0}{1}ifelse}{GetGry}ifelse}bd/@sqr{dup 0 rl dup 0 exch rl neg +0 rl @cp}bd/corelsym{@gs @np Tl -90 rotate 7{45 rotate -.75 2 m 1.5 @sqr fill} +repeat @gr}bd/@reg_cor{@gs @np Tl -6 -6 m 12 @sqr @gs 1 @gmc sub @smc fill @gr +4{90 rotate 0 4 m 0 4 rl}repeat stroke 0 0 corelsym @gr}bd/@reg_std{@gs @np Tl +.3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl +}repeat stroke @gr}bd/@reg_inv{@gs @np Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc +sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl}repeat stroke 0 0 m 0 0 5 90 180 arc +@cp 0 0 5 270 360 arc @cp fill @gr}bd/@reg_sqr{@gs @np Tl .3 w -7 -7 m 14 @sqr +fill @gs 1 @gmc sub @smc 0 0 5 0 360 arc @cp save fill restore 4{90 rotate 0 0 +m 0 8 rl}repeat stroke @gr 4{90 rotate 0 0 m 0 5 rl}repeat stroke @gr}bd +/@reg_lng{@gs @np 0 eq{/$Xlen 16 def/$Ylen 8 def}{/$Xlen 8 def/$Ylen 16 def} +ifelse Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 90 rotate 0 0 m +0 $Xlen rl 90 rotate 0 0 m 0 $Ylen rl 90 rotate 0 0 m 0 $Xlen rl 90 rotate 0 0 +m 0 $Ylen rl stroke @gr}bd/@setdcol{0 $dcol eq{0 exch 1 exch sub 0 0 0 _ 0 +@scc_5 pop}{1 $dcol eq{0 exch 0 exch 1 exch sub 0 0 _ 0 @scc_5 pop}{2 $dcol eq +{0 exch 0 exch 0 exch 1 exch sub 0 _ 0 @scc_5 pop}{SetGry}ifelse}ifelse}ifelse +}bd/$corelmeter[1 .95 .75 .50 .25 .05 0]def/@colormeter{@gs @np 0 @setdcol 0.3 +w/Courier findfont 5 scalefont setfont/yy xd/xx xd 0 1 6{dup xx 20 sub yy m 20 +@sqr @gs $corelmeter exch get dup @setdcol fill @gr stroke xx 18 sub yy 2 add m +exch dup 3 ge{1 SetGry}{0 @setdcol}ifelse 3 eq{pop}{100 mul 100 exch sub cvi 20 +string cvs show}ifelse/yy yy 20 add def}for @gr}bd/@calbar{@gs Tl @gs @np 0 0 m +@gs 20 @sqr 1 1 0 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 0 1 +0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 0 1 0 _ 0 @scc_5 pop +fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 1 1 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 +0 m @gs 20 @sqr 1 0 1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 +1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 1 1 0 _ 0 @scc_5 +pop fill @gr @gr @np -84 0 Tl @gs 0 0 m 20 @sqr clip 1 1 0 0 0 _ 0 @scc_5 pop +@gain @gr 20 0 Tl @gs 0 0 m 20 @sqr clip 1 0 1 0 0 _ 0 @scc_5 pop @gain @gr 20 +0 Tl @gs 0 0 m 20 @sqr clip 1 0 0 1 0 _ 0 @scc_5 pop @gain @gr 20 0 Tl @gs 0 0 +m 20 @sqr clip 1 0 0 0 1 _ 0 @scc_5 pop @gain @gr @gr}bd/@gain{10 10 Tl @np 0 0 +m 0 10 360{0 0 15 4 -1 roll dup 5 add arc @cp}for fill}bd/@crop{@gs 10 div +/$croplen xd .3 w 0 @smc Tl rotate 0 0 m 0 $croplen neg rl stroke @gr}bd +/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel +dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall} +bd/@rax{deflevel 0 eq{@rs @sv}if}bd/@daq{dup type/arraytype eq{{}forall}if}bd +/@BMP{/@cc xd 12 index 1 gt UseLevel2 true eq and{7 -2 roll pop pop @I_2}{11 +index 1 eq{12 -1 roll pop @i}{7 -2 roll pop pop @I}ifelse}ifelse}bd systemdict +/pdfmark known not{/pdfmark/cleartomark ld}if/@BeginEPS{$ngx 0 SetGry 0 J 0 j 1 +w[]0 d 10 M false setoverprint @np/EPSDict 200 dict def EPSDict begin @sv +SepMode_5 0 ne{/colorimage{@gs/sepdict 50 dict def sepdict begin[{1 exch sub} +/exec cvx currenttransfer/exec cvx]cvx settransfer 3 eq/$rgb xd{$rgb{/daq0 xd +/daq1 xd/daq2 xd/daq_rgb load}{/daq0 xd/daq1 xd/daq2 xd/daq3 xd/daq_cmyk load} +ifelse}{/daq0 xd/daq_one load}ifelse 2 index 8 eq/8bit xd $ink_5 dup 0 lt exch +3 gt or{}{image}ifelse end @gr}bd/2cmyk{3{255 exch sub 3 1 roll}repeat 3 copy +@MN @MN 3{dup 5 -1 roll sub neg exch}repeat}bd/daq_rgb{/i 0 def/daq2 load exec +/daq1 load exec/daq0 load exec dup dup length 0 exch getinterval/$data xd{8bit +{1 index i get 3 index i get 2cmyk 4 $ink_5 neg roll pop pop pop}{pop 0}ifelse +$data i 3 -1 roll put/i i 1 add def}forall pop pop $data}bd/daq_cmyk{/daq3 load +exec/daq2 load exec/daq1 load exec/daq0 load exec 4 $ink_5 neg roll pop pop pop +}bd/daq_one{/$in 0 def/$out 0 def/daq0 load exec dup dup length $rgb{3}{4} +ifelse idiv 0 exch getinterval/$data xd $data{pop 8bit{$rgb{0 index $in 2 add +get 1 index $in 1 add get 2 index $in get 2cmyk}{0 index $in get 1 index $in 1 +add get 2 index $in 2 add get 3 index $in 3 add get}ifelse 4 $ink_5 neg roll +pop pop pop}{0}ifelse $data $out 3 -1 roll put/$in $in $rgb{3}{4}ifelse add def +/$out $out 1 add def}forall pop $data}bd}if}bd/@EndEPS{@rs end}bd end +%%EndResource +%%EndProlog +%%BeginSetup +wCorel6Dict begin +@BeginSysCorelDict +2.6131 setmiterlimit +1.00 setflat +/$fst 128 def +%%EndSetup + +%%Page: 1 1 +%LogicalPage: 1 +%%BeginPageSetup +@sv +@sm +@sv +%%EndPageSetup +@rax %Note: Object +376.90583 229.84243 512.32734 329.07657 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +394.94948 251.19383 m +398.84967 256.36677 406.62539 257.12220 412.25896 252.87477 c +417.89225 248.62706 419.30589 240.94403 415.40570 235.77080 c +411.50580 230.59757 403.72951 229.84243 398.09594 234.08986 c +392.46293 238.33701 391.04929 246.02060 394.94948 251.19383 c +@c +471.13569 236.30598 m +466.84403 241.15918 467.65474 248.92951 472.93994 253.60271 c +478.22542 258.27619 486.03657 258.12907 490.32765 253.27559 c +494.61959 248.42211 493.80888 240.65206 488.52340 235.97858 c +483.23792 231.30539 475.42706 231.45222 471.13569 236.30598 c +@c +501.95225 286.09342 m +495.60406 284.79798 489.27657 289.37962 487.86605 296.29247 c +486.45581 303.20532 490.48299 309.89934 496.83090 311.19506 c +503.17852 312.49020 509.50630 307.90828 510.91682 300.99572 c +512.32734 294.08258 508.30016 287.38857 501.95225 286.09342 c +@c +446.57121 300.99203 m +452.66457 298.79121 455.67978 291.58384 453.28309 284.94822 c +450.88583 278.31288 443.96135 274.69559 437.86800 276.89698 c +431.77465 279.09751 428.75915 286.30488 431.15641 292.94050 c +433.55310 299.57584 440.47786 303.19313 446.57121 300.99203 c +@c +396.46006 326.10983 m +402.21978 323.14252 404.28142 315.60718 401.05020 309.33581 c +397.81899 303.06387 390.48633 300.36841 384.72718 303.33572 c +378.96746 306.30302 376.90583 313.83836 380.13704 320.11030 c +383.36825 326.38167 390.70120 329.07657 396.46006 326.10983 c +@c +S + +@rax %Note: Object +485.05805 257.45272 495.08362 286.43839 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +485.05805 257.45272 m +495.08362 286.43839 L +S + +@rax %Note: Object +450.41386 253.97235 473.10066 279.63014 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +473.10066 253.97235 m +450.41386 279.63014 L +S + +@rax %Note: Object +401.03461 293.24721 431.48098 308.93329 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +401.03461 308.93329 m +431.48098 293.24721 L +S + +@rax %Note: Object +444.29074 301.80926 447.88762 335.86894 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +447.88762 335.86894 m +444.29074 301.80926 L +S + +@rax %Note: Object +454.06828 289.76910 487.62624 296.61591 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +487.62624 296.61591 m +454.06828 289.76910 L +S + +@rax %Note: Object +412.65269 252.79115 433.27106 280.13868 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +412.65269 252.79115 m +433.27106 280.13868 L +S + +@rax %Note: Object +390.01663 255.03732 398.83918 302.13950 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +390.01663 302.13950 m +398.83918 255.03732 L +S + +@rax %Note: Object +416.88510 240.94687 468.21515 242.55723 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +416.88510 240.94687 m +468.21515 242.55723 L +S + +@rax %Note: Object +459.79398 310.19102 491.87537 340.78734 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +491.87537 310.19102 m +459.79398 340.78734 L +S + +@rax %Note: Object +399.24028 323.47616 437.73789 341.99518 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +399.24028 323.47616 m +437.73789 341.99518 L +S + +@rax %Note: Object +356.97061 91.75266 400.17175 193.59439 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +392.60494 168.00406 m +386.91865 164.89928 379.52306 167.41757 376.14217 173.60986 c +372.76129 179.80243 374.64180 187.38482 380.32809 190.48989 c +386.01468 193.59439 393.40998 191.07581 396.79087 184.88409 c +400.17175 178.69153 398.29124 171.10857 392.60494 168.00406 c +@c +361.14746 97.03644 m +356.97061 101.98942 357.96387 109.73820 363.35764 114.28639 c +368.75140 118.83430 376.55660 118.50378 380.73288 113.55052 c +384.90945 108.59754 383.91619 100.84847 378.52243 96.30085 c +373.12866 91.75266 365.32318 92.08318 361.14746 97.03644 c +@c +S + +@rax %Note: Object +345.75704 157.43594 375.81789 173.84854 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +375.81789 173.84854 m +345.75704 157.43594 L +S + +@rax %Note: Object +341.44894 114.65178 363.52658 140.83540 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +363.52658 114.65178 m +341.44894 140.83540 L +S + +@rax %Note: Object +120.82932 137.80828 462.92258 372.19436 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +146.89304 284.49354 m +149.49524 278.56035 146.34822 271.40995 139.88693 268.57616 c +133.42592 265.74265 126.03373 268.27058 123.43153 274.20378 c +120.82932 280.13669 123.97663 287.28709 130.43764 290.12088 c +136.89893 292.95468 144.29083 290.42674 146.89304 284.49354 c +@c +184.86085 321.68268 m +187.46306 315.74948 184.31575 308.59909 177.85474 305.76529 c +171.39373 302.93178 164.00154 305.45972 161.39934 311.39291 c +158.79713 317.32583 161.94444 324.47622 168.40545 327.31002 c +174.86674 330.14381 182.25865 327.61587 184.86085 321.68268 c +@c +347.25600 363.73323 m +349.85820 357.80003 346.71090 350.64964 340.24961 347.81584 c +333.78860 344.98205 326.39669 347.50998 323.79449 353.44318 c +321.19200 359.37638 324.33959 366.52677 330.80060 369.36057 c +337.26161 372.19436 344.65351 369.66643 347.25600 363.73323 c +@c +324.07569 158.43997 m +327.57676 163.89128 335.27367 165.22838 341.21027 161.41578 c +347.14658 157.60318 349.13310 150.04772 345.63203 144.59641 c +342.13096 139.14482 334.43376 137.80828 328.49745 141.62060 c +322.56113 145.43291 320.57461 152.98866 324.07569 158.43997 c +@c +462.24227 346.35260 m +461.56195 339.90973 455.28463 335.25921 448.26831 336.00019 c +441.25228 336.74088 436.08472 342.60038 436.76532 349.04324 c +437.44564 355.48611 443.72296 360.13663 450.73899 359.39565 c +457.75531 358.65468 462.92258 352.79546 462.24227 346.35260 c +@c +B + +@rax %Note: Object +74.70142 309.85909 142.37150 375.25380 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +100.76542 328.61027 m +103.36734 322.67679 100.22031 315.52639 93.75931 312.69288 c +87.29830 309.85909 79.90583 312.38674 77.30391 318.31994 c +74.70142 324.25313 77.84901 331.40353 84.31002 334.23732 c +90.77102 337.07112 98.16321 334.54318 100.76542 328.61027 c +@c +139.76957 366.79238 m +142.37150 360.85946 139.22447 353.70907 132.76318 350.87556 c +126.30217 348.04148 118.90998 350.56942 116.30778 356.50261 c +113.70557 362.43609 116.85288 369.58620 123.31389 372.42000 c +129.77490 375.25380 137.16709 372.72614 139.76957 366.79238 c +@c +S + +@rax %Note: Object +97.27398 333.21855 117.72567 353.34794 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +97.27398 333.21855 m +117.72567 353.34794 L +S + +@rax %Note: Object +135.69902 322.64532 164.71729 353.44658 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +135.69902 353.44658 m +164.71729 322.64532 L +S + +@rax %Note: Object +143.76217 287.34208 164.27339 307.12224 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +164.27339 307.12224 m +143.76217 287.34208 L +S + +@rax %Note: Object +94.68567 282.22469 124.32416 313.83156 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 2.01600 2.01600 0.00000 @w +124.32416 282.22469 m +94.68567 313.83156 L +S + +@rax %Note: Object +225.42888 175.73641 254.09480 202.94844 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +251.49260 194.48731 m +254.09480 188.55411 250.94750 181.40372 244.48649 178.57020 c +238.02548 175.73641 230.63329 178.26435 228.03109 184.19726 c +225.42888 190.13046 228.57619 197.28085 235.03720 200.11465 c +241.49849 202.94844 248.89039 200.42050 251.49260 194.48731 c +@c +B + +@rax %Note: Object +145.13641 280.15824 168.97578 307.33483 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +168.18094 307.33483 m +168.97578 288.41811 161.29417 280.15824 145.13641 282.55635 C +S + +@rax %Note: Object +184.13433 320.73874 327.42255 355.52183 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +184.13433 320.73874 m +327.42255 355.52183 L +S + +@rax %Note: Object +142.54923 193.37839 229.16920 273.16261 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +229.16920 193.37839 m +142.54923 273.16261 L +S + +@rax %Note: Object +245.88935 193.72450 332.21083 349.59231 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +332.21083 349.59231 m +245.88935 193.72450 L +S + +@rax %Note: Object +248.37732 155.51858 327.31002 183.05546 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +248.37732 183.05546 m +327.31002 155.51858 L +S + +@rax %Note: Object +345.32419 348.85219 441.55786 358.37291 @E + 0 O 0 @g +0.00 0.00 0.00 1.00 k +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 7.20000 7.20000 0.00000 @w +345.32419 358.37291 m +441.55786 348.85219 L +S + +@rax %Note: Object +41.17096 247.83364 217.89666 389.56791 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 3.67200 3.67200 0.00000 @w +129.53395 389.56791 m +178.20227 389.56791 217.89666 357.73285 217.89666 318.70091 c +217.89666 279.66869 178.20227 247.83364 129.53395 247.83364 c +80.86535 247.83364 41.17096 279.66869 41.17096 318.70091 c +41.17096 357.73285 80.86535 389.56791 129.53395 389.56791 c +@c +S + +@rax %Note: Object +274.17231 204.22346 562.46202 416.32866 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 3.67200 3.67200 0.00000 @w +418.31717 416.32866 m +497.70964 416.32866 562.46202 368.68791 562.46202 310.27606 c +562.46202 251.86422 497.70964 204.22346 418.31717 204.22346 c +338.92498 204.22346 274.17231 251.86422 274.17231 310.27606 c +274.17231 368.68791 338.92498 416.32866 418.31717 416.32866 c +@c +S + +@rax %Note: Object +199.13783 144.75458 275.15962 232.96649 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 3.67200 3.67200 0.00000 @w +237.14901 232.96649 m +258.08457 232.96649 275.15962 213.15345 275.15962 188.86054 c +275.15962 164.56791 258.08457 144.75458 237.14901 144.75458 c +216.21317 144.75458 199.13783 164.56791 199.13783 188.86054 c +199.13783 213.15345 216.21317 232.96649 237.14901 232.96649 c +@c +S + +@rax %Note: Object +299.84202 86.27698 442.01225 203.23219 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 3.67200 3.67200 0.00000 @w +370.92728 203.23219 m +410.07940 203.23219 442.01225 176.96296 442.01225 144.75458 c +442.01225 112.54620 410.07940 86.27698 370.92728 86.27698 c +331.77487 86.27698 299.84202 112.54620 299.84202 144.75458 c +299.84202 176.96296 331.77487 203.23219 370.92728 203.23219 c +@c +S + +@rax 163.36998 398.81480 204.38646 416.58746 @E +[0.00010238 0.00000000 0.00000000 0.00010238 163.40693983 399.10958467] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 234532.00000 z +%CHAR: 0 0 (A) @t +-365 0 m +64116 167857 L +88056 167857 L +156771 0 L +131460 0 L +111873 50836 L +41669 50836 L +23239 0 L +-365 0 L +@c +48095 68928 m +104990 68928 L +87477 115407 l +82147 129542 78157 141146 75568 150222 C +73436 139471 70421 128780 66522 118181 c +48095 68928 L +@c +F +%CHAR: 156450 0 (S) @t +166988 53943 m +187913 55771 L +188887 47364 191233 40450 194827 35087 c +198454 29727 204119 25341 211733 22051 c +219348 18731 227967 17056 237500 17056 c +245968 17056 253491 18335 259948 20833 c +266435 23330 271278 26803 274448 31189 c +277616 35574 279200 40390 279200 45567 c +279200 50806 277677 55436 274631 59365 c +271582 63294 266496 66613 259491 69263 c +254983 71030 245023 73771 229612 77456 c +214200 81142 203388 84644 197205 87934 c +189192 92137 183192 97345 179293 103559 c +175364 109772 173384 116777 173384 124455 c +173384 132922 175791 140872 180603 148212 c +185415 155583 192451 161187 201682 164994 c +210911 168801 221206 170720 232475 170720 c +244902 170720 255897 168710 265399 164720 c +274905 160730 282215 154821 287332 147055 c +292449 139258 295220 130425 295586 120587 C +274265 118973 L +273136 129572 269237 137613 262658 143004 c +256049 148425 246272 151136 233389 151136 c +219957 151136 210149 148669 204027 143765 c +197875 138831 194796 132892 194796 125948 c +194796 119917 196992 114950 201317 111051 c +205581 107183 216789 103193 234820 99112 c +252851 95030 265278 91436 271978 88391 c +281728 83883 288976 78157 293606 71273 c +298266 64390 300611 56410 300611 47395 c +300611 38468 298053 30031 292936 22143 c +287819 14254 280479 8102 270912 3716 c +261349 -670 250536 -2863 238536 -2863 c +223368 -2863 210606 -640 200373 3777 c +190106 8193 182034 14863 176187 23757 c +170339 32651 167262 42704 166958 53913 C +166988 53943 L +@c +F +%CHAR: 312900 0 (1) @t +400286 0 m +379635 0 L +379635 131339 L +374701 126618 368183 121866 360142 117143 c +352102 112422 344820 108858 338423 106482 C +338423 126404 L +349936 131826 360051 138405 368640 146111 c +377260 153816 383382 161309 386976 168558 C +400255 168558 L +400286 0 L +@c +F +T +@rax 473.57546 426.65244 517.60828 444.37720 @E +[0.00010238 0.00000000 0.00000000 0.00010238 473.61228790 426.94733572] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 233884.00000 z +%CHAR: 0 0 (A) @t +-365 0 m +63930 167395 L +87809 167395 L +156339 0 L +131089 0 L +111566 50681 L +41544 50681 L +23178 0 L +-365 0 L +@c +47971 68743 m +104713 68743 L +87230 115099 l +81931 129171 77941 140775 75352 149821 C +73220 139100 70205 128409 66337 117840 c +47971 68743 L +@c +F +%CHAR: 156000 0 (S) @t +166508 53788 m +187402 55616 L +188376 47240 190691 40356 194285 34996 c +197910 29635 203544 25249 211128 21960 c +218743 18670 227332 16995 236834 16995 c +245271 16995 252764 18275 259221 20772 c +265678 23270 270520 26742 273658 31097 c +276825 35483 278409 40265 278409 45443 c +278409 50681 276886 55311 273840 59210 c +270795 63108 265769 66428 258764 69078 c +254287 70814 244327 73555 228976 77240 c +213595 80926 202783 84428 196630 87687 c +188651 91860 182681 97068 178782 103282 c +174853 109495 172873 116439 172873 124115 c +172873 132551 175280 140470 180061 147811 c +184874 155151 191879 160755 201077 164532 c +210275 168339 220540 170258 231809 170258 c +244205 170258 255170 168248 264642 164258 c +274114 160268 281424 154359 286511 146623 c +291597 138856 294369 130054 294734 120246 C +273505 118632 L +272378 129201 268510 137211 261931 142602 c +255353 148024 245576 150735 232723 150735 c +219321 150735 209544 148267 203453 143364 c +197331 138460 194255 132521 194255 125607 c +194255 119607 196417 114642 200742 110774 c +205006 106876 216154 102886 234154 98835 c +252155 94754 264520 91190 271221 88144 c +280967 83667 288155 77971 292785 71088 c +297414 64205 299760 56225 299760 47270 c +299760 38377 297201 29940 292115 22082 c +287028 14224 279688 8071 270155 3716 c +260591 -670 249809 -2863 237870 -2863 c +222733 -2863 210032 -640 199798 3746 c +189564 8163 181493 14833 175676 23666 c +169858 32529 166782 42580 166477 53788 C +166508 53788 L +@c +F +%CHAR: 312000 0 (2) @t +429749 19767 m +429719 0 L +319066 0 L +318914 4934 319706 9686 321472 14254 c +324274 21777 328782 29209 334995 36519 c +341209 43828 350194 52296 361889 61890 c +380073 76814 392378 88632 398774 97342 c +405170 106053 408368 114307 408368 122074 c +408368 130206 405444 137090 399626 142663 c +393809 148267 386195 151070 376844 151070 c +366976 151070 359026 148085 353118 142176 c +347178 136237 344133 127983 344072 117505 C +322934 119668 L +324396 135414 329848 147445 339290 155699 c +348732 163953 361402 168095 377301 168095 c +393352 168095 406083 163618 415434 154724 c +424815 145831 429505 134775 429505 121617 c +429505 114916 428135 108307 425394 101850 c +422652 95393 418084 88540 411749 81413 c +405413 74256 394814 64418 380042 51961 c +367737 41605 359788 34569 356316 30884 c +352813 27199 349889 23452 347605 19737 C +429749 19767 L +@c +F +T +@rax 152.16265 141.66057 196.49282 159.44570 @E +[0.00010238 0.00000000 0.00000000 0.00010238 152.19946733 141.96769757] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 234532.00000 z +%CHAR: 0 0 (A) @t +-365 0 m +64116 167857 L +88056 167857 L +156771 0 L +131460 0 L +111873 50836 L +41669 50836 L +23239 0 L +-365 0 L +@c +48095 68928 m +104990 68928 L +87477 115407 l +82147 129542 78157 141146 75568 150222 C +73436 139471 70421 128780 66522 118181 c +48095 68928 L +@c +F +%CHAR: 156450 0 (S) @t +166988 53943 m +187913 55771 L +188887 47364 191233 40450 194827 35087 c +198454 29727 204119 25341 211733 22051 c +219348 18731 227967 17056 237500 17056 c +245968 17056 253491 18335 259948 20833 c +266435 23330 271278 26803 274448 31189 c +277616 35574 279200 40390 279200 45567 c +279200 50806 277677 55436 274631 59365 c +271582 63294 266496 66613 259491 69263 c +254983 71030 245023 73771 229612 77456 c +214200 81142 203388 84644 197205 87934 c +189192 92137 183192 97345 179293 103559 c +175364 109772 173384 116777 173384 124455 c +173384 132922 175791 140872 180603 148212 c +185415 155583 192451 161187 201682 164994 c +210911 168801 221206 170720 232475 170720 c +244902 170720 255897 168710 265399 164720 c +274905 160730 282215 154821 287332 147055 c +292449 139258 295220 130425 295586 120587 C +274265 118973 L +273136 129572 269237 137613 262658 143004 c +256049 148425 246272 151136 233389 151136 c +219957 151136 210149 148669 204027 143765 c +197875 138831 194796 132892 194796 125948 c +194796 119917 196992 114950 201317 111051 c +205581 107183 216789 103193 234820 99112 c +252851 95030 265278 91436 271978 88391 c +281728 83883 288976 78157 293606 71273 c +298266 64390 300611 56410 300611 47395 c +300611 38468 298053 30031 292936 22143 c +287819 14254 280479 8102 270912 3716 c +261349 -670 250536 -2863 238536 -2863 c +223368 -2863 210606 -640 200373 3777 c +190106 8193 182034 14863 176187 23757 c +170339 32651 167262 42704 166958 53913 C +166988 53943 L +@c +F +%CHAR: 312900 0 (3) @t +322738 44319 m +343358 47060 L +345703 35392 349754 26955 355422 21808 c +361087 16660 368061 14071 376224 14071 c +385910 14071 394103 17452 400773 24153 c +407443 30854 410793 39202 410793 49100 c +410793 58573 407687 66400 401534 72522 c +395351 78675 387463 81751 377930 81751 c +374031 81751 369188 80989 363401 79467 C +365686 97558 L +367026 97406 368153 97315 369006 97315 c +377777 97315 385696 99599 392702 104168 c +399707 108736 403240 115833 403240 125369 c +403240 132922 400681 139227 395565 144161 c +390448 149095 383838 151593 375767 151593 c +367757 151593 361056 149065 355726 144039 c +350363 139014 346921 131430 345398 121379 C +324809 125034 L +327306 138862 333063 149583 341957 157167 c +350881 164751 362031 168558 375310 168558 c +384448 168558 392915 166578 400590 162679 c +408296 158750 414205 153359 418286 146567 c +422367 139775 424438 132526 424438 124912 c +424438 117663 422489 111051 418591 105112 c +414692 99173 408905 94421 401291 90919 C +411220 88634 418926 83852 424408 76664 c +429890 69446 432665 60400 432665 49557 c +432665 34935 427301 22478 416641 12305 c +405951 2132 392427 -2985 376102 -2985 c +361361 -2985 349114 1401 339398 10173 c +329682 18945 324108 30366 322738 44319 C +@c +F +T +@rax 452.24504 153.16923 496.50775 170.94217 @E +[0.00010238 0.00000000 0.00000000 0.00010238 452.28183306 153.46419486] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 234532.00000 z +%CHAR: 0 0 (A) @t +-365 0 m +64116 167857 L +88056 167857 L +156771 0 L +131460 0 L +111873 50836 L +41669 50836 L +23239 0 L +-365 0 L +@c +48095 68928 m +104990 68928 L +87477 115407 l +82147 129542 78157 141146 75568 150222 C +73436 139471 70421 128780 66522 118181 c +48095 68928 L +@c +F +%CHAR: 156450 0 (S) @t +166988 53943 m +187913 55771 L +188887 47364 191233 40450 194827 35087 c +198454 29727 204119 25341 211733 22051 c +219348 18731 227967 17056 237500 17056 c +245968 17056 253491 18335 259948 20833 c +266435 23330 271278 26803 274448 31189 c +277616 35574 279200 40390 279200 45567 c +279200 50806 277677 55436 274631 59365 c +271582 63294 266496 66613 259491 69263 c +254983 71030 245023 73771 229612 77456 c +214200 81142 203388 84644 197205 87934 c +189192 92137 183192 97345 179293 103559 c +175364 109772 173384 116777 173384 124455 c +173384 132922 175791 140872 180603 148212 c +185415 155583 192451 161187 201682 164994 c +210911 168801 221206 170720 232475 170720 c +244902 170720 255897 168710 265399 164720 c +274905 160730 282215 154821 287332 147055 c +292449 139258 295220 130425 295586 120587 C +274265 118973 L +273136 129572 269237 137613 262658 143004 c +256049 148425 246272 151136 233389 151136 c +219957 151136 210149 148669 204027 143765 c +197875 138831 194796 132892 194796 125948 c +194796 119917 196992 114950 201317 111051 c +205581 107183 216789 103193 234820 99112 c +252851 95030 265278 91436 271978 88391 c +281728 83883 288976 78157 293606 71273 c +298266 64390 300611 56410 300611 47395 c +300611 38468 298053 30031 292936 22143 c +287819 14254 280479 8102 270912 3716 c +261349 -670 250536 -2863 238536 -2863 c +223368 -2863 210606 -640 200373 3777 c +190106 8193 182034 14863 176187 23757 c +170339 32651 167262 42704 166958 53913 C +166988 53943 L +@c +F +%CHAR: 312900 0 (4) @t +388712 0 m +388681 40176 L +315854 40176 L +315854 59090 L +392488 167857 L +409301 167857 L +409301 59090 L +431995 59090 L +431995 40176 L +409301 40176 L +409301 0 L +388712 0 L +@c +388712 59090 m +388681 134780 L +336139 59090 L +388712 59090 L +@c +F +T +%%PageTrailer +@rs +@rs +%%Trailer +@EndSysCorelDict +end +%%DocumentSuppliedResources: procset wCorel6Dict +%%EOF diff -Nru bird3-3.1.0/doc/slides/obr5.eps bird3-3.1.7/doc/slides/obr5.eps --- bird3-3.1.0/doc/slides/obr5.eps 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/obr5.eps 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,3072 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%BoundingBox: 12 86 583 414 +%%Creator: CorelDRAW +%%Title: +%%CreationDate: Mon Jun 26 15:00:02 2000 +%%DocumentProcessColors: Black +%%DocumentSuppliedResources: (atend) +%%EndComments +%%BeginProlog +/AutoFlatness true def +/AutoSteps 0 def +/CMYKMarks true def +/UseLevel2 false def +%Color profile: Disabled +%%BeginResource: procset wCorel6Dict 6.0 0 +% Copyright (c)1992-96 Corel Corporation +% All rights reserved. v6.0 r1.1 +/wCorel6Dict 300 dict def wCorel6Dict begin/bd{bind def}bind def/ld{load def} +bd/xd{exch def}bd/_ null def/rp{{pop}repeat}bd/@cp/closepath ld/@gs/gsave ld +/@gr/grestore ld/@np/newpath ld/Tl/translate ld/$sv 0 def/@sv{/$sv save def}bd +/@rs{$sv restore}bd/spg/showpage ld/showpage{}bd currentscreen/@dsp xd/$dsp +/@dsp def/$dsa xd/$dsf xd/$sdf false def/$SDF false def/$Scra 0 def/SetScr +/setscreen ld/setscreen{pop pop pop}bd/@ss{2 index 0 eq{$dsf 3 1 roll 4 -1 roll +pop}if exch $Scra add exch load SetScr}bd/SepMode_5 where{pop}{/SepMode_5 0 +def}ifelse/CurrentInkName_5 where{pop}{/CurrentInkName_5(Composite)def}ifelse +/$ink_5 where{pop}{/$ink_5 -1 def}ifelse/$c 0 def/$m 0 def/$y 0 def/$k 0 def +/$t 1 def/$n _ def/$o 0 def/$fil 0 def/$C 0 def/$M 0 def/$Y 0 def/$K 0 def/$T 1 +def/$N _ def/$O 0 def/$PF false def/s1c 0 def/s1m 0 def/s1y 0 def/s1k 0 def +/s1t 0 def/s1n _ def/$bkg false def/SK 0 def/SM 0 def/SY 0 def/SC 0 def/$op +false def matrix currentmatrix/$ctm xd/$ptm matrix def/$ttm matrix def/$stm +matrix def/$fst 128 def/$pad 0 def/$rox 0 def/$roy 0 def/$fmp 50 def/$ffpnt +true def/CorelDrawReencodeVect[16#0/grave 16#5/breve 16#6/dotaccent 16#8/ring +16#A/hungarumlaut 16#B/ogonek 16#C/caron 16#D/dotlessi 16#27/quotesingle +16#60/grave 16#7C/bar +16#82/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl +16#88/circumflex/perthousand/Scaron/guilsinglleft/OE +16#91/quoteleft/quoteright/quotedblleft/quotedblright/bullet/endash/emdash +16#98/tilde/trademark/scaron/guilsinglright/oe 16#9F/Ydieresis +16#A1/exclamdown/cent/sterling/currency/yen/brokenbar/section +16#a8/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/minus/registered/macron +16#b0/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +16#b8/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +16#c0/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +16#c8/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +16#d0/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +16#d8/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +16#e0/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +16#e8/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +16#f0/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +16#f8/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis]def +/L2?/languagelevel where{pop languagelevel 2 ge}{false}ifelse def +/@BeginSysCorelDict{systemdict/Corel30Dict known{systemdict/Corel30Dict get +exec}if}bd/@EndSysCorelDict{systemdict/Corel30Dict known{end}if}bd AutoFlatness +{/@ifl{dup currentflat exch sub 10 gt{ +([Error: PathTooComplex; OffendingCommand: AnyPaintingOperator]\n)print flush +@np exit}{currentflat 2 add setflat}ifelse}bd/@fill/fill ld/fill{currentflat{ +{@fill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@eofill/eofill ld/eofill +{currentflat{{@eofill}stopped{@ifl}{exit}ifelse}bind loop setflat}bd/@clip +/clip ld/clip{currentflat{{@clip}stopped{@ifl}{exit}ifelse}bind loop setflat} +bd/@eoclip/eoclip ld/eoclip{currentflat{{@eoclip}stopped{@ifl}{exit}ifelse} +bind loop setflat}bd/@stroke/stroke ld/stroke{currentflat{{@stroke}stopped +{@ifl}{exit}ifelse}bind loop setflat}bd}if L2?{/@ssa{true setstrokeadjust}bd}{ +/@ssa{}bd}ifelse/d/setdash ld/j/setlinejoin ld/J/setlinecap ld/M/setmiterlimit +ld/w/setlinewidth ld/O{/$o xd}bd/R{/$O xd}bd/W/eoclip ld/c/curveto ld/C/c ld/l +/lineto ld/L/l ld/rl/rlineto ld/m/moveto ld/n/newpath ld/N/newpath ld/P{11 rp} +bd/u{}bd/U{}bd/A{pop}bd/q/@gs ld/Q/@gr ld/&{}bd/@j{@sv @np}bd/@J{@rs}bd/g{1 +exch sub/$k xd/$c 0 def/$m 0 def/$y 0 def/$t 1 def/$n _ def/$fil 0 def}bd/G{1 +sub neg/$K xd _ 1 0 0 0/$C xd/$M xd/$Y xd/$T xd/$N xd}bd/k{1 index type +/stringtype eq{/$t xd/$n xd}{/$t 0 def/$n _ def}ifelse/$k xd/$y xd/$m xd/$c xd +/$fil 0 def}bd/K{1 index type/stringtype eq{/$T xd/$N xd}{/$T 0 def/$N _ def} +ifelse/$K xd/$Y xd/$M xd/$C xd}bd/x/k ld/X/K ld/sf{1 index type/stringtype eq{ +/s1t xd/s1n xd}{/s1t 0 def/s1n _ def}ifelse/s1k xd/s1y xd/s1m xd/s1c xd}bd/i{ +dup 0 ne{setflat}{pop}ifelse}bd/v{4 -2 roll 2 copy 6 -2 roll c}bd/V/v ld/y{2 +copy c}bd/Y/y ld/@w{matrix rotate/$ptm xd matrix scale $ptm dup concatmatrix +/$ptm xd 1 eq{$ptm exch dup concatmatrix/$ptm xd}if 1 w}bd/@g{1 eq dup/$sdf xd +{/$scp xd/$sca xd/$scf xd}if}bd/@G{1 eq dup/$SDF xd{/$SCP xd/$SCA xd/$SCF xd} +if}bd/@D{2 index 0 eq{$dsf 3 1 roll 4 -1 roll pop}if 3 copy exch $Scra add exch +load SetScr/$dsp xd/$dsa xd/$dsf xd}bd/$ngx{$SDF{$SCF SepMode_5 0 eq{$SCA} +{$dsa}ifelse $SCP @ss}if}bd/p{/$pm xd 7 rp/$pyf xd/$pxf xd/$pn xd/$fil 1 def} +bd/@MN{2 copy le{pop}{exch pop}ifelse}bd/@MX{2 copy ge{pop}{exch pop}ifelse}bd +/InRange{3 -1 roll @MN @MX}bd/wDstChck{2 1 roll dup 3 -1 roll eq{1 add}if}bd +/@dot{dup mul exch dup mul add 1 exch sub}bd/@lin{exch pop abs 1 exch sub}bd +/cmyk2rgb{3{dup 5 -1 roll add 1 exch sub dup 0 lt{pop 0}if exch}repeat pop}bd +/rgb2cmyk{3{1 exch sub 3 1 roll}repeat 3 copy @MN @MN 3{dup 5 -1 roll sub neg +exch}repeat}bd/rgb2g{2 index .299 mul 2 index .587 mul add 1 index .114 mul add +4 1 roll pop pop pop}bd/WaldoColor_5 where{pop}{/SetRgb/setrgbcolor ld/GetRgb +/currentrgbcolor ld/SetGry/setgray ld/GetGry/currentgray ld/SetRgb2 systemdict +/setrgbcolor get def/GetRgb2 systemdict/currentrgbcolor get def/SetHsb +systemdict/sethsbcolor get def/GetHsb systemdict/currenthsbcolor get def +/rgb2hsb{SetRgb2 GetHsb}bd/hsb2rgb{3 -1 roll dup floor sub 3 1 roll SetHsb +GetRgb2}bd/setcmykcolor where{pop/SetCmyk_5/setcmykcolor ld}{/SetCmyk_5{ +cmyk2rgb SetRgb}bd}ifelse/currentcmykcolor where{pop/GetCmyk/currentcmykcolor +ld}{/GetCmyk{GetRgb rgb2cmyk}bd}ifelse/setoverprint where{pop}{/setoverprint{ +/$op xd}bd}ifelse/currentoverprint where{pop}{/currentoverprint{$op}bd}ifelse +/@tc_5{5 -1 roll dup 1 ge{pop}{4{dup 6 -1 roll mul exch}repeat pop}ifelse}bd +/@trp{exch pop 5 1 roll @tc_5}bd/setprocesscolor_5{SepMode_5 0 eq{SetCmyk_5}{0 +4 $ink_5 sub index exch pop 5 1 roll pop pop pop pop SepsColor true eq{$ink_5 3 +gt{1 sub neg SetGry}{0 0 0 4 $ink_5 roll SetCmyk_5}ifelse}{1 sub neg SetGry} +ifelse}ifelse}bd/findcmykcustomcolor where{pop}{/findcmykcustomcolor{5 array +astore}bd}ifelse/setcustomcolor where{pop}{/setcustomcolor{exch aload pop +SepMode_5 0 eq{pop @tc_5 setprocesscolor_5}{CurrentInkName_5 eq{4 index}{0} +ifelse 6 1 roll 5 rp 1 sub neg SetGry}ifelse}bd}ifelse/@scc_5{dup type +/booleantype eq{setoverprint}{1 eq setoverprint}ifelse dup _ eq{pop +setprocesscolor_5 pop}{findcmykcustomcolor exch setcustomcolor}ifelse SepMode_5 +0 eq{true}{GetGry 1 eq currentoverprint and not}ifelse}bd/colorimage where{pop +/ColorImage{colorimage}def}{/ColorImage{/ncolors xd pop/dataaq xd{dataaq +ncolors dup 3 eq{/$dat xd 0 1 $dat length 3 div 1 sub{dup 3 mul $dat 1 index +get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div rgb2g +255 mul cvi exch pop $dat 3 1 roll put}for $dat 0 $dat length 3 idiv +getinterval pop}{4 eq{/$dat xd 0 1 $dat length 4 div 1 sub{dup 4 mul $dat 1 +index get 255 div $dat 2 index 1 add get 255 div $dat 3 index 2 add get 255 div +$dat 4 index 3 add get 255 div cmyk2rgb rgb2g 255 mul cvi exch pop $dat 3 1 +roll put}for $dat 0 $dat length ncolors idiv getinterval}if}ifelse}image}bd +}ifelse/setcmykcolor{1 5 1 roll _ currentoverprint @scc_5/$ffpnt xd}bd +/currentcmykcolor{0 0 0 0}bd/setrgbcolor{rgb2cmyk setcmykcolor}bd +/currentrgbcolor{currentcmykcolor cmyk2rgb}bd/sethsbcolor{hsb2rgb setrgbcolor} +bd/currenthsbcolor{currentrgbcolor rgb2hsb}bd/setgray{dup dup setrgbcolor}bd +/currentgray{currentrgbcolor rgb2g}bd}ifelse/WaldoColor_5 true def/@sft{$tllx +$pxf add dup $tllx gt{$pwid sub}if/$tx xd $tury $pyf sub dup $tury lt{$phei +add}if/$ty xd}bd/@stb{pathbbox/$ury xd/$urx xd/$lly xd/$llx xd}bd/@ep{{cvx exec +}forall}bd/@tp{@sv/$in true def 2 copy dup $lly le{/$in false def}if $phei sub +$ury ge{/$in false def}if dup $urx ge{/$in false def}if $pwid add $llx le{/$in +false def}if $in{@np 2 copy m $pwid 0 rl 0 $phei neg rl $pwid neg 0 rl 0 $phei +rl clip @np $pn cvlit load aload pop 7 -1 roll 5 index sub 7 -1 roll 3 index +sub Tl matrix currentmatrix/$ctm xd @ep pop pop pop pop}{pop pop}ifelse @rs}bd +/@th{@sft 0 1 $tly 1 sub{dup $psx mul $tx add{dup $llx gt{$pwid sub}{exit} +ifelse}loop exch $phei mul $ty exch sub 0 1 $tlx 1 sub{$pwid mul 3 copy 3 -1 +roll add exch @tp pop}for pop pop}for}bd/@tv{@sft 0 1 $tlx 1 sub{dup $pwid mul +$tx add exch $psy mul $ty exch sub{dup $ury lt{$phei add}{exit}ifelse}loop 0 1 +$tly 1 sub{$phei mul 3 copy sub @tp pop}for pop pop}for}bd/@pf{@gs $ctm +setmatrix $pm concat @stb eoclip Bburx Bbury $pm itransform/$tury xd/$turx xd +Bbllx Bblly $pm itransform/$tlly xd/$tllx xd/$wid $turx $tllx sub def/$hei +$tury $tlly sub def @gs $vectpat{1 0 0 0 0 _ $o @scc_5{eofill}if}{$t $c $m $y +$k $n $o @scc_5{SepMode_5 0 eq $pfrg or{$tllx $tlly Tl $wid $hei scale <00> 8 1 +false[8 0 0 1 0 0]{}imagemask}{/$bkg true def}ifelse}if}ifelse @gr $wid 0 gt +$hei 0 gt and{$pn cvlit load aload pop/$pd xd 3 -1 roll sub/$phei xd exch sub +/$pwid xd $wid $pwid div ceiling 1 add/$tlx xd $hei $phei div ceiling 1 add +/$tly xd $psx 0 eq{@tv}{@th}ifelse}if @gr @np/$bkg false def}bd/@dlt_hsb{$fco +nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/kdb xd nff $fco sub +div/kdb2 xd sub neg 2 div dup $fco div/kds xd nff $fco sub div/kds2 xd sub neg +dup 0 eq{pop $frb 2 eq{.99}{-.99}ifelse}if dup $frb 2 eq exch 0 lt and{1 add} +if dup $frb 1 eq exch 0 gt and{1 sub}if 2 div dup $fco div/kdh xd nff $fco sub +div/kdh2 xd}bd/@dlt_cmyk{$fmp 50 eq{sub neg nff dup 1 gt{1 sub}if div/$dk xd +sub neg nff dup 1 gt{1 sub}if div/$dy xd sub neg nff dup 1 gt{1 sub}if div/$dm +xd sub neg nff dup 1 gt{1 sub}if div/$dc xd sub neg nff dup 1 gt{1 sub}if div +/$dt xd}{$fco nff ge{/$fco nff 1 sub def}if sub neg 2 div dup $fco div/$dk xd +nff $fco sub div/$dk2 xd sub neg 2 div dup $fco div/$dy xd nff $fco sub div +/$dy2 xd sub neg 2 div dup $fco div/$dm xd nff $fco sub div/$dm2 xd sub neg 2 +div dup $fco div/$dc xd nff $fco sub div/$dc2 xd sub neg 2 div dup $fco div +/$dt xd nff $fco sub div/$dt2 xd}ifelse}bd/@dlt{$fse $fss sub dup/nff xd $fmp +mul $fmp add 100 div round cvi dup 0 le{pop 1}if/$fco xd/$fi 0 def $frb dup 1 +eq exch 2 eq or{$frt dup $frc $frm $fry $frk @tc_5 4 copy cmyk2rgb rgb2hsb 3 +copy/myb xd/mys xd/myh xd $tot $toc $tom $toy $tok @tc_5 cmyk2rgb rgb2hsb 3 1 +roll 4 1 roll 5 1 roll @dlt_hsb}{$frt dup $frc $frm $fry $frk @tc_5 5 copy $tot +dup $toc $tom $toy $tok @tc_5 5 1 roll 6 1 roll 7 1 roll 8 1 roll 9 1 roll +@dlt_cmyk}ifelse}bd/@ffnxt{/$fi $fi 1 add def $frb dup 1 eq exch 2 eq or{pop +pop pop pop myh mys myb $fi $fco lt{kdb add 3 1 roll kds add 3 1 roll kdh add 3 +1 roll}{kdb2 add 3 1 roll kds2 add 3 1 roll kdh2 add 3 1 roll}ifelse 3 copy +/myb xd/mys xd/myh xd hsb2rgb rgb2cmyk}{$fi $fco lt $fmp 50 eq or{$dk add 5 1 +roll $dy add 5 1 roll $dm add 5 1 roll $dc add 5 1 roll $dt add 5 1 roll}{$dk2 +add 5 1 roll $dy2 add 5 1 roll $dm2 add 5 1 roll $dc2 add 5 1 roll $dt2 add 5 1 +roll}ifelse}ifelse}bd/ffcol{5 copy $fsit 0 eq{setcmykcolor pop}{SepMode_5 0 ne +{$frn findcmykcustomcolor exch setcustomcolor}{pop pop pop pop $frc $frm $fry +$frk $frn findcmykcustomcolor exch setcustomcolor}ifelse}ifelse}bd/@ftl{1 index +4 index sub dup $pad mul dup/$pdw xd 2 mul sub $fst div/$wid xd 2 index sub +/$hei xd pop Tl @dlt $fss 0 eq{ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l @cp +$ffpnt{fill}{@np}ifelse}if $fss $wid mul $pdw add 0 Tl nff{ffcol n 0 0 m 0 $hei +l $wid $hei l $wid 0 l @cp $ffpnt{fill}{@np}ifelse $wid 0 Tl @ffnxt}repeat 5 rp +$tot dup $toc $tom $toy $tok @tc_5 ffcol n 0 0 m 0 $hei l $pdw $hei l $pdw 0 l +@cp $ffpnt{fill}{@np}ifelse 5 rp}bd/@ftrs{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl $fan rotate +pop pop pop pop @dlt $fss 0 eq{ffcol $fty 3 eq{$hei dup neg dup m 2 mul @sqr}{ +0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse}if 1.0 $pad 2 mul sub +dup scale $hei $fss $wid mul sub/$hei xd nff{ffcol $fty 3 eq{n $hei dup neg dup +m 2 mul @sqr}{n 0 0 m 0 0 $hei 0 360 arc}ifelse $ffpnt{fill}{@np}ifelse/$hei +$hei $wid sub def @ffnxt}repeat 5 rp}bd/@ftc{1 index 4 index sub dup $rox mul +/$row xd 2 div 1 index 4 index sub dup $roy mul/$roh xd 2 div 2 copy dup mul +exch dup mul add sqrt $row dup mul $roh dup mul add sqrt add dup/$hei xd $fst +div/$wid xd 4 index add $roh add exch 5 index add $row add exch Tl pop pop pop +pop @dlt $fss 0 eq{ffcol $ffpnt{fill}{@np}ifelse}{n}ifelse/$dang 180 $fst 1 sub +div def/$sang $dang -2 div 180 add def/$eang $dang 2 div 180 add def/$sang +$sang $dang $fss mul add def/$eang $eang $dang $fss mul add def/$sang $eang +$dang sub def nff{ffcol n 0 0 m 0 0 $hei $sang $fan add $eang $fan add arc +$ffpnt{fill}{@np}ifelse 0 0 m 0 0 $hei $eang neg $fan add $sang neg $fan add +arc $ffpnt{fill}{@np}ifelse/$sang $eang def/$eang $eang $dang add def @ffnxt} +repeat 5 rp}bd/@fstAdjust{72 0 matrix defaultmatrix dtransform exch dup mul +exch dup mul add sqrt currentscreen pop pop div dup mul 1 add cvi 2 256 InRange +$fsc 1 sub dup 0 le{pop 1}if mul/opt$fst xd AutoSteps dup 1 eq exch 3 eq or{ +opt$fst dup dup $fst dup 3 1 roll div exch 3 -1 roll gt{/$adj xd/$fst xd}{pop +pop}ifelse}if AutoSteps dup 2 eq exch 3 eq or{opt$fst dup dup $fst dup 3 1 roll +div exch 3 -1 roll lt{/$adj xd/$fst xd}{pop pop}ifelse}if}bd/@ff{/old$fst $fst +def/$adj 1 def/$fss 0 def $o 1 eq setoverprint AutoSteps 0 gt{@fstAdjust}if 1 1 +$fsc 1 sub{dup 1 sub $fsit 0 eq{$fsa exch 5 mul 5 getinterval aload pop pop +/$frk xd/$fry xd/$frm xd/$frc xd/$frn _ def/$frt 1 def $fsa exch 5 mul 5 +getinterval aload pop $adj mul cvi $fss add/$fse xd/$tok xd/$toy xd/$tom xd +/$toc xd/$ton _ def/$tot 1 def}{$fsa exch 7 mul 7 getinterval aload pop pop +/$frt xd/$frn xd/$frk xd/$fry xd/$frm xd/$frc xd $fsa exch 7 mul 7 getinterval +aload pop $adj mul cvi $fss add/$fse xd/$tot xd/$ton xd/$tok xd/$toy xd/$tom xd +/$toc xd}ifelse $fsit 0 eq SepMode_5 0 eq or dup not CurrentInkName_5 $frn eq +and or{@sv $ctm setmatrix eoclip Bbllx Bblly Bburx Bbury $fty 2 eq{@ftc}{1 +index 3 index m 2 copy l 3 index 1 index l 3 index 3 index l @cp $fty dup 1 eq +exch 3 eq or{@ftrs}{pop pop pop pop $fan rotate pathbbox @ftl}ifelse}ifelse @rs +/$fss $fse def}{1 0 0 0 0 _ $o @scc_5{fill}if}ifelse}for @np/$fst old$fst def} +bd/@Pf{@sv SepMode_5 0 eq $Psc 0 ne or $ink_5 3 eq or{0 J 0 j[]0 d $t $c $m $y +$k $n $o @scc_5 pop $ctm setmatrix 72 1000 div dup matrix scale dup concat dup +Bburx exch Bbury exch itransform ceiling cvi/Bbury xd ceiling cvi/Bburx xd +Bbllx exch Bblly exch itransform floor cvi/Bblly xd floor cvi/Bbllx xd $Prm +aload pop $Psn load exec}{1 SetGry eofill}ifelse @rs @np}bd/F{matrix +currentmatrix $sdf{$scf $sca $scp @ss}if $fil 1 eq{@pf}{$fil 2 eq{@ff}{$fil 3 +eq{@Pf}{$t $c $m $y $k $n $o @scc_5{eofill}{@np}ifelse}ifelse}ifelse}ifelse +$sdf{$dsf $dsa $dsp @ss}if setmatrix}bd/f{@cp F}bd/S{matrix currentmatrix $ctm +setmatrix $SDF{$SCF $SCA $SCP @ss}if $T $C $M $Y $K $N $O @scc_5{matrix +currentmatrix $ptm concat stroke setmatrix}{@np}ifelse $SDF{$dsf $dsa $dsp +@ss}if setmatrix}bd/s{@cp S}bd/B{@gs F @gr S}bd/b{@cp B}bd/_E{5 array astore +exch cvlit xd}bd/@cc{currentfile $dat readhexstring pop}bd/@sm{/$ctm $ctm +currentmatrix def}bd/@E{/Bbury xd/Bburx xd/Bblly xd/Bbllx xd}bd/@c{@cp}bd/@p{ +/$fil 1 def 1 eq dup/$vectpat xd{/$pfrg true def}{@gs $t $c $m $y $k $n $o +@scc_5/$pfrg xd @gr}ifelse/$pm xd/$psy xd/$psx xd/$pyf xd/$pxf xd/$pn xd}bd/@P +{/$fil 3 def/$Psn xd/$Psc xd array astore/$Prm xd}bd/@k{/$fil 2 def/$fmp xd +/$roy xd/$rox xd/$pad xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst +xd/$fsc xd/$fsa xd/$fsit 0 def}bd/@x{/$fil 2 def/$fmp xd/$roy xd/$rox xd/$pad +xd/$fty xd/$fan xd $fty 1 eq{/$fan 0 def}if/$frb xd/$fst xd/$fsc xd/$fsa xd +/$fsit 1 def}bd/@ii{concat 3 index 3 index m 3 index 1 index l 2 copy l 1 index +3 index l 3 index 3 index l clip pop pop pop pop}bd/tcc{@cc}def/@i{@sm @gs @ii +6 index 1 ne{/$frg true def pop pop}{1 eq{s1t s1c s1m s1y s1k s1n $O @scc_5 +/$frg xd}{/$frg false def}ifelse 1 eq{@gs $ctm setmatrix F @gr}if}ifelse @np +/$ury xd/$urx xd/$lly xd/$llx xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul 8 +div ceiling cvi string def $bkg $frg or{$SDF{$SCF $SCA $SCP @ss}if $llx $lly Tl +$urx $llx sub $ury $lly sub scale $bkg{$t $c $m $y $k $n $o @scc_5 pop}if $wid +$hei abs $bts 1 eq{$bkg}{$bts}ifelse[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/tcc load $bts 1 eq{imagemask}{image}ifelse $SDF{$dsf $dsa +$dsp @ss}if}{$hei abs{tcc pop}repeat}ifelse @gr $ctm setmatrix}bd/@I{@sm @gs +@ii @np/$ury xd/$urx xd/$lly xd/$llx xd/$ncl xd/$bts xd/$hei xd/$wid xd/$dat +$wid $bts mul $ncl mul 8 div ceiling cvi string def $ngx $llx $lly Tl $urx $llx +sub $ury $lly sub scale $wid $hei abs $bts[$wid 0 0 $hei neg 0 $hei 0 +gt{$hei}{0}ifelse]/@cc load false $ncl ColorImage $SDF{$dsf $dsa $dsp @ss}if +@gr $ctm setmatrix}bd L2?{/@I_2{@sm @gs @ii @np/$ury xd/$urx xd/$lly xd/$llx xd +/$ncl xd/$bts xd/$hei xd/$wid xd/$dat $wid $bts mul $ncl mul 8 div ceiling cvi +string def $ngx $ncl 1 eq{/DeviceGray}{$ncl 3 eq{/DeviceRGB}{/DeviceCMYK} +ifelse}ifelse setcolorspace $llx $lly Tl $urx $llx sub $ury $lly sub scale 8 +dict begin/ImageType 1 def/Width $wid def/Height $hei abs def/BitsPerComponent +$bts def/Decode $ncl 1 eq{[0 1]}{$ncl 3 eq{[0 1 0 1 0 1]}{[0 1 0 1 0 1 0 1]} +ifelse}ifelse def/ImageMatrix[$wid 0 0 $hei neg 0 $hei 0 gt{$hei}{0}ifelse]def +/DataSource currentfile/ASCII85Decode filter def currentdict end image $SDF +{$dsf $dsa $dsp @ss}if @gr $ctm setmatrix}bd}{/@I_2{}bd}ifelse/z{exch findfont +exch scalefont setfont}bd/ZB{9 dict dup begin 4 1 roll/FontType 3 def +/FontMatrix xd/FontBBox xd/Encoding 256 array def 0 1 255{Encoding exch +/.notdef put}for/CharStrings 256 dict def CharStrings/.notdef{}put/Metrics 256 +dict def Metrics/.notdef 3 -1 roll put/BuildChar{exch dup/$char exch/Encoding +get 3 index get def dup/Metrics get $char get aload pop setcachedevice begin +Encoding exch get CharStrings exch get end exec}def end definefont pop}bd +/ZBAddChar{findfont begin dup 4 1 roll dup 6 1 roll Encoding 3 1 roll put +CharStrings 3 1 roll put Metrics 3 1 roll put end}bd/Z{findfont dup maxlength 2 +add dict exch dup{1 index/FID ne{3 index 3 1 roll put}{pop pop}ifelse}forall +pop dup dup/Encoding get 256 array copy dup/$fe xd/Encoding exch put dup +/Fontname 3 index put 3 -1 roll dup length 0 ne{0 exch{dup type 0 type eq{exch +pop}{$fe exch 2 index exch put 1 add}ifelse}forall pop}if dup 256 dict dup +/$met xd/Metrics exch put dup/FontMatrix get 0 get 1000 mul 1 exch div 3 index +length 256 eq{0 1 255{dup $fe exch get dup/.notdef eq{pop pop}{5 index 3 -1 +roll get 2 index mul $met 3 1 roll put}ifelse}for}if pop definefont pop pop}bd +/@ftx{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup @gs true charpath +$ctm setmatrix @@txt @gr @np stringwidth pop 3 -1 roll add exch m}forall}bd +/@ft{matrix currentmatrix exch $sdf{$scf $sca $scp @ss}if $fil 1 eq{/@@txt/@pf +ld @ftx}{$fil 2 eq{/@@txt/@ff ld @ftx}{$fil 3 eq{/@@txt/@Pf ld @ftx}{$t $c $m +$y $k $n $o @scc_5{show}{pop}ifelse}ifelse}ifelse}ifelse $sdf{$dsf $dsa $dsp +@ss}if setmatrix}bd/@st{matrix currentmatrix exch $SDF{$SCF $SCA $SCP @ss}if $T +$C $M $Y $K $N $O @scc_5{{currentpoint 3 -1 roll(0)dup 3 -1 roll 0 exch put dup +@gs true charpath $ctm setmatrix $ptm concat stroke @gr @np stringwidth pop 3 +-1 roll add exch m}forall}{pop}ifelse $SDF{$dsf $dsa $dsp @ss}if setmatrix}bd +/@te{@ft}bd/@tr{@st}bd/@ta{dup @gs @ft @gr @st}bd/@t@a{dup @gs @st @gr @ft}bd +/@tm{@sm concat}bd/e{/t{@te}def}bd/r{/t{@tr}def}bd/o{/t{pop}def}bd/a{/t{@ta} +def}bd/@a{/t{@t@a}def}bd/t{@te}def/T{@np $ctm setmatrix/$ttm matrix def}bd/ddt +{t}def/@t{/$stm $stm currentmatrix def 3 1 roll m $ttm concat ddt $stm +setmatrix}bd/@n{/$ttm exch matrix rotate def}bd/@s{}bd/@l{}bd/@B{@gs S @gr F} +bd/@b{@cp @B}bd/@sep{CurrentInkName_5(Composite)eq{/$ink_5 -1 def}{ +CurrentInkName_5(Cyan)eq{/$ink_5 0 def}{CurrentInkName_5(Magenta)eq{/$ink_5 1 +def}{CurrentInkName_5(Yellow)eq{/$ink_5 2 def}{CurrentInkName_5(Black)eq +{/$ink_5 3 def}{/$ink_5 4 def}ifelse}ifelse}ifelse}ifelse}ifelse}bd/@whi{@gs +-72000 dup m -72000 72000 l 72000 dup l 72000 -72000 l @cp 1 SetGry fill @gr} +bd/@neg{[{1 exch sub}/exec cvx currenttransfer/exec cvx]cvx settransfer @whi} +bd/currentscale{1 0 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt 0 1 dtransform matrix defaultmatrix idtransform dup mul exch +dup mul add sqrt}bd/@unscale{}bd/@smc{CMYKMarks{0 exch eq{1 1 1 1 1 _ 0 @scc_5 +pop}{1 0 0 0 0 _ 0 @scc_5 pop}ifelse}{SetGry}ifelse}bd/@gmc{CMYKMarks{GetCmyk +pop pop pop 1 eq{0}{1}ifelse}{GetGry}ifelse}bd/@sqr{dup 0 rl dup 0 exch rl neg +0 rl @cp}bd/corelsym{@gs @np Tl -90 rotate 7{45 rotate -.75 2 m 1.5 @sqr fill} +repeat @gr}bd/@reg_cor{@gs @np Tl -6 -6 m 12 @sqr @gs 1 @gmc sub @smc fill @gr +4{90 rotate 0 4 m 0 4 rl}repeat stroke 0 0 corelsym @gr}bd/@reg_std{@gs @np Tl +.3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl +}repeat stroke @gr}bd/@reg_inv{@gs @np Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc +sub @smc fill @gr 4{90 rotate 0 0 m 0 8 rl}repeat stroke 0 0 m 0 0 5 90 180 arc +@cp 0 0 5 270 360 arc @cp fill @gr}bd/@reg_sqr{@gs @np Tl .3 w -7 -7 m 14 @sqr +fill @gs 1 @gmc sub @smc 0 0 5 0 360 arc @cp save fill restore 4{90 rotate 0 0 +m 0 8 rl}repeat stroke @gr 4{90 rotate 0 0 m 0 5 rl}repeat stroke @gr}bd +/@reg_lng{@gs @np 0 eq{/$Xlen 16 def/$Ylen 8 def}{/$Xlen 8 def/$Ylen 16 def} +ifelse Tl .3 w 0 0 5 0 360 arc @cp @gs 1 @gmc sub @smc fill @gr 90 rotate 0 0 m +0 $Xlen rl 90 rotate 0 0 m 0 $Ylen rl 90 rotate 0 0 m 0 $Xlen rl 90 rotate 0 0 +m 0 $Ylen rl stroke @gr}bd/@setdcol{0 $dcol eq{0 exch 1 exch sub 0 0 0 _ 0 +@scc_5 pop}{1 $dcol eq{0 exch 0 exch 1 exch sub 0 0 _ 0 @scc_5 pop}{2 $dcol eq +{0 exch 0 exch 0 exch 1 exch sub 0 _ 0 @scc_5 pop}{SetGry}ifelse}ifelse}ifelse +}bd/$corelmeter[1 .95 .75 .50 .25 .05 0]def/@colormeter{@gs @np 0 @setdcol 0.3 +w/Courier findfont 5 scalefont setfont/yy xd/xx xd 0 1 6{dup xx 20 sub yy m 20 +@sqr @gs $corelmeter exch get dup @setdcol fill @gr stroke xx 18 sub yy 2 add m +exch dup 3 ge{1 SetGry}{0 @setdcol}ifelse 3 eq{pop}{100 mul 100 exch sub cvi 20 +string cvs show}ifelse/yy yy 20 add def}for @gr}bd/@calbar{@gs Tl @gs @np 0 0 m +@gs 20 @sqr 1 1 0 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 0 1 +0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 0 1 0 _ 0 @scc_5 pop +fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 0 1 1 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 +0 m @gs 20 @sqr 1 0 1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 +1 0 0 _ 0 @scc_5 pop fill @gr 20 0 Tl 0 0 m @gs 20 @sqr 1 1 1 1 0 _ 0 @scc_5 +pop fill @gr @gr @np -84 0 Tl @gs 0 0 m 20 @sqr clip 1 1 0 0 0 _ 0 @scc_5 pop +@gain @gr 20 0 Tl @gs 0 0 m 20 @sqr clip 1 0 1 0 0 _ 0 @scc_5 pop @gain @gr 20 +0 Tl @gs 0 0 m 20 @sqr clip 1 0 0 1 0 _ 0 @scc_5 pop @gain @gr 20 0 Tl @gs 0 0 +m 20 @sqr clip 1 0 0 0 1 _ 0 @scc_5 pop @gain @gr @gr}bd/@gain{10 10 Tl @np 0 0 +m 0 10 360{0 0 15 4 -1 roll dup 5 add arc @cp}for fill}bd/@crop{@gs 10 div +/$croplen xd .3 w 0 @smc Tl rotate 0 0 m 0 $croplen neg rl stroke @gr}bd +/deflevel 0 def/@sax{/deflevel deflevel 1 add def}bd/@eax{/deflevel deflevel +dup 0 gt{1 sub}if def deflevel 0 gt{/eax load}{eax}ifelse}bd/eax{{exec}forall} +bd/@rax{deflevel 0 eq{@rs @sv}if}bd/@daq{dup type/arraytype eq{{}forall}if}bd +/@BMP{/@cc xd 12 index 1 gt UseLevel2 true eq and{7 -2 roll pop pop @I_2}{11 +index 1 eq{12 -1 roll pop @i}{7 -2 roll pop pop @I}ifelse}ifelse}bd systemdict +/pdfmark known not{/pdfmark/cleartomark ld}if/@BeginEPS{$ngx 0 SetGry 0 J 0 j 1 +w[]0 d 10 M false setoverprint @np/EPSDict 200 dict def EPSDict begin @sv +SepMode_5 0 ne{/colorimage{@gs/sepdict 50 dict def sepdict begin[{1 exch sub} +/exec cvx currenttransfer/exec cvx]cvx settransfer 3 eq/$rgb xd{$rgb{/daq0 xd +/daq1 xd/daq2 xd/daq_rgb load}{/daq0 xd/daq1 xd/daq2 xd/daq3 xd/daq_cmyk load} +ifelse}{/daq0 xd/daq_one load}ifelse 2 index 8 eq/8bit xd $ink_5 dup 0 lt exch +3 gt or{}{image}ifelse end @gr}bd/2cmyk{3{255 exch sub 3 1 roll}repeat 3 copy +@MN @MN 3{dup 5 -1 roll sub neg exch}repeat}bd/daq_rgb{/i 0 def/daq2 load exec +/daq1 load exec/daq0 load exec dup dup length 0 exch getinterval/$data xd{8bit +{1 index i get 3 index i get 2cmyk 4 $ink_5 neg roll pop pop pop}{pop 0}ifelse +$data i 3 -1 roll put/i i 1 add def}forall pop pop $data}bd/daq_cmyk{/daq3 load +exec/daq2 load exec/daq1 load exec/daq0 load exec 4 $ink_5 neg roll pop pop pop +}bd/daq_one{/$in 0 def/$out 0 def/daq0 load exec dup dup length $rgb{3}{4} +ifelse idiv 0 exch getinterval/$data xd $data{pop 8bit{$rgb{0 index $in 2 add +get 1 index $in 1 add get 2 index $in get 2cmyk}{0 index $in get 1 index $in 1 +add get 2 index $in 2 add get 3 index $in 3 add get}ifelse 4 $ink_5 neg roll +pop pop pop}{0}ifelse $data $out 3 -1 roll put/$in $in $rgb{3}{4}ifelse add def +/$out $out 1 add def}forall pop $data}bd}if}bd/@EndEPS{@rs end}bd end +%%EndResource +%%EndProlog +%%BeginSetup +wCorel6Dict begin +@BeginSysCorelDict +2.6131 setmiterlimit +1.00 setflat +/$fst 128 def +%%EndSetup + +%%Page: 1 1 +%LogicalPage: 1 +%%BeginPageSetup +@sv +@sm +@sv +%%EndPageSetup +@rax %Note: Object +148.15559 236.18041 202.52778 314.02828 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +148.15559 314.02828 m +202.52778 314.02828 L +202.52778 236.18041 L +148.15559 236.18041 L +148.15559 314.02828 L +@c +S + +@rax %Note: Object +127.74643 87.86835 225.97002 110.77342 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +127.74643 110.77342 m +225.97002 110.77342 L +225.97002 87.86835 L +127.74643 87.86835 L +127.74643 110.77342 L +@c +S + +@rax %Note: Object +404.84353 218.57187 449.83956 283.44501 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +404.84353 283.44501 m +449.83956 283.44501 L +449.83956 218.57187 L +404.84353 218.57187 L +404.84353 283.44501 L +@c +S + +@rax %Note: Object +254.33943 339.97748 318.04980 378.90142 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +286.19461 378.90142 m +303.73965 378.90142 318.04980 370.15852 318.04980 359.43931 c +318.04980 348.72009 303.73965 339.97748 286.19461 339.97748 c +268.64929 339.97748 254.33943 348.72009 254.33943 359.43931 c +254.33943 370.15852 268.64929 378.90142 286.19461 378.90142 c +@c +S + +@rax %Note: Object +283.88636 227.83946 347.59672 266.76340 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +315.74154 266.76340 m +333.28658 266.76340 347.59672 258.02079 347.59672 247.30129 c +347.59672 236.58208 333.28658 227.83946 315.74154 227.83946 c +298.19622 227.83946 283.88636 236.58208 283.88636 247.30129 c +283.88636 258.02079 298.19622 266.76340 315.74154 266.76340 c +@c +S + +@rax %Note: Object +363.46677 264.98721 378.50910 280.74189 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +363.46677 280.74189 m +378.50910 280.74189 L +378.50910 264.98721 L +363.46677 264.98721 L +363.46677 280.74189 L +@c +S + +@rax 369.60293 270.39317 372.73408 277.68898 @E +[0.00009574 0.00000000 0.00000000 0.00009574 369.60280442 270.39307508] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax %Note: Object +233.27575 220.22504 248.31808 235.97943 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +233.27575 235.97943 m +248.31808 235.97943 L +248.31808 220.22504 L +233.27575 220.22504 L +233.27575 235.97943 L +@c +S + +@rax 239.41162 225.63071 242.53342 232.90526 @E +[0.00009574 0.00000000 0.00000000 0.00009574 239.41169297 225.63077961] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax %Note: Object +245.27934 310.39852 260.32195 326.15291 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +245.27934 326.15291 m +260.32195 326.15291 L +260.32195 310.39852 L +245.27934 310.39852 L +245.27934 326.15291 L +@c +S + +@rax 251.41550 315.80419 254.53729 323.07874 @E +[0.00009574 0.00000000 0.00000000 0.00009574 251.41547591 315.80427630] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax %Note: Object +219.42595 326.15320 234.46828 341.90787 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +219.42595 341.90787 m +234.46828 341.90787 L +234.46828 326.15320 L +219.42595 326.15320 L +219.42595 341.90787 L +@c +S + +@rax 225.56211 331.55915 228.68391 338.83370 @E +[0.00009574 0.00000000 0.00000000 0.00009574 225.56196189 331.55921021] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax 265.98557 353.55515 307.54658 366.64101 @E +[0.00009574 0.00000000 0.00000000 0.00009574 265.98552164 353.76659884] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (s) @t +5779 29085 m +22098 31643 L +22998 25106 25580 20061 29749 16603 c +33941 13122 39815 11369 47323 11369 c +54902 11369 60539 12908 64187 15988 c +67858 19067 69706 22714 69706 26859 c +69706 30601 68071 33538 64850 35670 c +62576 37138 56939 39010 47963 41260 c +35859 44315 27451 46968 22785 49194 c +18119 51421 14566 54523 12151 58455 c +9735 62387 8527 66769 8527 71529 c +8527 75864 9521 79890 11487 83585 c +13477 87280 16201 90383 19611 92822 c +22169 94714 25698 96325 30128 97628 c +34557 98954 39318 99617 44386 99617 c +52013 99617 58739 98504 64519 96325 c +70298 94122 74561 91117 77309 87375 c +80056 83609 81975 78564 83017 72264 C +66863 70085 L +66129 75082 63998 79014 60492 81809 c +56987 84604 51989 86025 45570 86025 c +37991 86025 32567 84770 29346 82283 c +26125 79772 24491 76835 24491 73472 c +24491 71340 25177 69398 26504 67692 c +27830 65916 29962 64424 32828 63287 c +34486 62671 39365 61250 47418 59071 c +59095 55945 67266 53387 71861 51397 c +76456 49407 80104 46518 82733 42728 c +85362 38939 86688 34225 86688 28612 c +86688 23117 85077 17906 81880 13074 c +78659 8219 74016 4453 67977 1800 c +61913 -853 55045 -2203 47418 -2203 c +34770 -2203 25106 426 18474 5684 c +11843 10943 7603 18735 5779 29062 c +5779 29085 L +@c +F +%CHAR: 93936 0 (t) @t +142372 14780 m +144741 166 L +140099 -805 135930 -1303 132259 -1303 c +126290 -1303 121624 -355 118332 1540 c +115040 3434 112695 5945 111368 9024 c +110018 12103 109331 18617 109331 28517 c +109331 84556 L +97228 84556 L +97228 97414 L +109331 97414 L +109331 121526 L +125745 131450 L +125745 97414 L +142349 97414 L +142349 84556 L +125745 84556 L +125745 27593 l +125745 22904 126053 19848 126622 18522 c +127190 17195 128161 16106 129464 15324 c +130790 14519 132685 14116 135125 14116 c +136948 14116 139364 14330 142349 14756 C +142372 14780 L +@c +F +%CHAR: 143472 0 (a) @t +219431 12008 m +213320 6821 207398 3150 201761 1018 c +196124 -1113 190037 -2203 183547 -2203 c +172842 -2203 164599 426 158867 5637 c +153136 10848 150246 17551 150246 25675 c +150246 30436 151336 34817 153491 38749 c +155670 42681 158536 45878 162041 48247 c +165547 50615 169526 52439 173908 53647 c +177152 54500 182055 55329 188592 56134 c +201904 57721 211733 59639 218033 61819 C +218081 64069 218128 65513 218128 66129 c +218128 72856 216565 77593 213462 80340 c +209246 84083 202946 85954 194656 85954 c +186887 85954 181155 84580 177460 81880 c +173765 79156 170994 74324 169242 67408 C +153088 69611 L +154557 76527 156973 82117 160336 86356 c +163699 90596 168578 93888 174926 96159 c +181274 98457 188663 99617 197024 99617 c +205338 99617 212112 98622 217299 96680 c +222510 94738 226347 92254 228763 89293 c +231202 86333 232931 82567 233902 78043 c +234447 75248 234731 70156 234731 62837 c +234731 40810 l +234731 25462 235087 15751 235773 11701 c +236484 7627 237878 3719 239963 0 C +222723 0 L +221018 3411 219881 7413 219407 12008 C +219431 12008 L +@c +218057 48886 m +212064 46447 203064 44339 191079 42633 c +184305 41686 179474 40573 176679 39365 c +173860 38133 171681 36333 170165 33988 c +168649 31620 167868 28991 167868 26125 c +167868 21719 169549 18048 172865 15135 c +176181 12198 181084 10729 187503 10729 c +193851 10729 199511 12127 204462 14898 c +209412 17669 213059 21483 215380 26314 c +217133 30033 218033 35552 218033 42823 c +218057 48886 L +@c +F +%CHAR: 247968 0 (t) @t +296404 14780 m +298773 166 L +294131 -805 289962 -1303 286291 -1303 c +280322 -1303 275656 -355 272364 1540 c +269072 3434 266727 5945 265400 9024 c +264050 12103 263363 18617 263363 28517 c +263363 84556 L +251260 84556 L +251260 97414 L +263363 97414 L +263363 121526 L +279777 131450 L +279777 97414 L +296381 97414 L +296381 84556 L +279777 84556 L +279777 27593 l +279777 22904 280085 19848 280654 18522 c +281222 17195 282193 16106 283496 15324 c +284822 14519 286717 14116 289157 14116 c +290980 14116 293396 14330 296381 14756 C +296404 14780 L +@c +F +%CHAR: 300168 0 (i) @t +312650 115486 m +312626 134458 L +329135 134458 L +329135 115486 L +312650 115486 L +@c +312650 0 m +312626 97414 L +329135 97414 L +329135 0 L +312650 0 L +@c +F +%CHAR: 341904 0 (c) @t +417863 35694 m +434087 33562 L +432334 22383 427763 13595 420468 7295 c +413173 971 404173 -2203 393538 -2203 c +380227 -2203 369497 2155 361397 10848 c +353297 19564 349223 32070 349223 48342 c +349223 58858 350975 68071 354457 75935 c +357939 83822 363268 89767 370374 93699 c +377479 97628 385248 99617 393633 99617 c +404196 99617 412865 96941 419592 91591 c +426318 86238 430629 78635 432524 68782 C +416465 66319 L +414949 72856 412226 77782 408365 81075 c +404480 84367 399767 86025 394272 86025 c +385959 86025 379185 83040 373998 77095 c +368810 71127 366205 61676 366205 48792 c +366205 35717 368716 26196 373713 20275 c +378735 14353 385295 11369 393348 11369 c +399838 11369 405262 13358 409596 17314 c +413931 21293 416702 27428 417839 35670 C +417863 35694 L +@c +F +T +@rax 533.81083 244.73735 571.01499 258.05310 @E +[0.00009574 0.00000000 0.00000000 0.00009574 533.81074996 244.95794069] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (B) @t +13761 0 m +13737 134458 L +64211 134458 l +74466 134458 82709 133084 88914 130384 c +95117 127684 99996 123468 103502 117831 c +107007 112170 108783 106225 108783 100067 c +108783 94335 107220 88914 104117 83846 c +100991 78777 96278 74656 89980 71529 C +98101 69161 104378 65063 108736 59332 c +113094 53600 115297 46802 115297 38986 c +115297 32686 113970 26812 111318 21411 c +108665 16011 105349 11819 101441 8882 c +97533 5945 92609 3719 86735 2250 c +80838 758 73590 0 65016 0 c +13761 0 L +@c +31549 77972 m +60634 77972 l +68498 77972 74182 78493 77593 79511 c +82117 80861 85551 83112 87825 86214 c +90099 89341 91259 93273 91259 97959 c +91259 102412 90193 106367 88062 109754 c +85930 113141 82851 115486 78896 116718 c +74916 117950 68095 118589 58432 118589 c +31549 118589 L +31549 77972 L +@c +31549 15869 m +65016 15869 l +70772 15869 74822 16082 77143 16509 c +81217 17219 84651 18451 87399 20156 c +90146 21861 92444 24372 94193 27641 c +95946 30909 96846 34699 96846 38986 c +96846 43984 95567 48342 93012 52036 c +90454 55731 86877 58360 82330 59853 c +77782 61345 71198 62103 62647 62103 c +31549 62103 L +31549 15869 L +@c +F +%CHAR: 125304 0 (G) @t +202731 52747 m +202707 68521 L +259691 68616 L +259691 18711 L +250951 11748 241904 6490 232619 2984 c +223334 -521 213768 -2297 204010 -2297 c +190794 -2297 178785 545 168009 6182 c +157208 11819 149060 20014 143565 30720 c +138070 41426 135299 53387 135299 66579 c +135299 79653 138047 91899 143494 103217 c +148966 114563 156853 122995 167108 128490 c +177388 133984 189230 136756 202613 136756 c +212324 136756 221132 135169 228995 132042 c +236859 128892 243017 124487 247470 118873 c +251922 113260 255333 105894 257654 96846 C +241619 92467 L +239606 99286 237072 104686 234087 108594 c +231103 112502 226792 115652 221250 117997 c +215687 120342 209481 121526 202707 121526 c +194583 121526 187549 120294 181628 117831 c +175706 115368 170898 112076 167274 108049 c +163627 104023 160785 99570 158771 94738 c +155361 86451 153632 77403 153632 67692 c +153632 55708 155692 45665 159813 37612 c +163935 29536 169974 23519 177838 19611 c +185725 15703 194133 13737 202992 13737 c +210689 13737 218221 15230 225561 18190 c +232903 21151 238469 24325 242259 27688 C +242259 52747 L +202731 52747 L +@c +F +%CHAR: 271440 0 (P) @t +285935 0 m +285912 134458 L +336645 134458 l +345575 134458 352420 134032 357110 133179 c +363694 132090 369257 129982 373710 126903 c +378163 123824 381787 119465 384487 113923 c +387187 108357 388561 102223 388561 95567 c +388561 84154 384913 74466 377665 66556 c +370394 58645 357228 54666 338209 54666 c +303723 54666 L +303723 0 L +285935 0 L +@c +303723 70535 m +338493 70535 l +349980 70535 358152 72690 362983 76953 c +367812 81217 370228 87256 370228 95022 c +370228 100636 368807 105467 365965 109470 c +363126 113473 359360 116126 354717 117405 c +351733 118186 346167 118589 338114 118589 c +303723 118589 L +303723 70535 L +@c +F +T +@rax 408.45628 264.29074 446.56838 277.41373 @E +[0.00009574 0.00000000 0.00000000 0.00009574 408.45620689 264.50210637] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 188424.00000 z +%CHAR: 0 0 (t) @t +48581 14803 m +50950 166 L +46308 -805 42115 -1303 38444 -1303 c +32428 -1303 27759 -355 24467 1540 c +21151 3434 18806 5969 17480 9048 c +16130 12127 15443 18664 15443 28612 c +15443 84820 L +3292 84820 L +3292 97708 L +15443 97708 L +15443 121890 L +31907 131838 L +31907 97708 L +48558 97708 L +48558 84820 L +31907 84820 L +31907 27688 l +31907 22975 32215 19919 32783 18593 c +33352 17243 34323 16153 35626 15372 c +36952 14566 38847 14164 41310 14164 c +43134 14164 45573 14377 48558 14803 c +48581 14803 L +@c +F +%CHAR: 49680 0 (a) @t +125855 12056 m +119720 6845 113799 3126 108138 995 c +102477 -1137 96367 -2226 89877 -2226 c +79144 -2226 70878 403 65123 5637 c +59367 10872 56478 17598 56478 25746 c +56478 30530 57567 34915 59746 38847 c +61925 42802 64791 46000 68297 48368 c +71802 50760 75805 52584 80210 53816 c +83458 54669 88385 55498 94945 56303 c +108304 57890 118157 59808 124457 62011 C +124505 64261 124552 65706 124552 66322 c +124552 73048 122989 77833 119862 80580 c +115646 84322 109346 86194 101009 86194 c +93240 86194 87461 84820 83766 82096 c +80068 79372 77297 74517 75521 67601 C +59320 69827 L +60788 76743 63228 82357 66591 86620 c +69955 90883 74857 94176 81232 96452 c +87603 98750 95017 99910 103401 99910 c +111738 99910 118512 98916 123723 96973 c +128934 95007 132795 92518 135234 89557 c +137674 86573 139403 82807 140374 78283 c +140919 75464 141203 70348 141203 63006 c +141203 40931 l +141203 25533 141558 15798 142269 11724 c +142979 7650 144380 3719 146464 0 C +129171 0 L +127465 3411 126328 7437 125855 12032 c +125855 12056 L +@c +124481 49031 m +118465 46568 109441 44484 97409 42779 c +90611 41807 85779 40694 82984 39463 c +80163 38231 77960 36431 76444 34086 c +74928 31718 74147 29085 74147 26220 c +74147 21814 75829 18119 79144 15182 c +82487 12245 87390 10753 93832 10753 c +100204 10753 105888 12151 110838 14922 c +115812 17717 119483 21554 121805 26385 c +123557 30128 124457 35649 124457 42944 c +124481 49031 L +@c +F +%CHAR: 154464 0 (b) @t +182152 0 m +166780 0 L +166780 134870 L +183336 134870 L +183336 86738 L +190326 95505 199256 99910 210104 99910 c +216120 99910 221828 98702 227181 96286 c +232534 93868 236963 90433 240421 86075 c +243879 81693 246626 76388 248568 70206 c +250514 64001 251508 57369 251508 50310 c +251508 33589 247361 20630 239094 11487 c +230828 2345 220880 -2226 209298 -2226 c +197764 -2226 188692 2605 182152 12222 C +182152 0 L +@c +181963 49600 m +181963 37876 183573 29393 186750 24183 c +191961 15656 199019 11393 207901 11393 c +215149 11393 221425 14543 226683 20819 c +231941 27096 234594 36478 234594 48937 c +234594 61679 232060 71106 227015 77170 c +221946 83233 215812 86288 208635 86288 c +201411 86288 195135 83138 189876 76862 c +184615 70585 181963 61466 181963 49576 C +181963 49600 L +@c +F +%CHAR: 259248 0 (l) @t +271304 0 m +271280 134870 L +287860 134870 L +287860 0 L +271304 0 L +@c +F +%CHAR: 301104 0 (e) @t +380405 31457 m +397509 29346 L +394806 19351 389808 11558 382513 6063 c +375218 545 365886 -2226 354541 -2226 c +340259 -2226 328910 2179 320550 10966 c +312189 19777 307996 32144 307996 48013 c +307996 64451 312236 77217 320692 86288 c +329147 95363 340140 99910 353617 99910 c +366691 99910 377373 95457 385640 86573 c +393929 77667 398077 65137 398077 49031 c +398077 48060 398030 46568 397983 44602 C +325097 44602 L +325713 33897 328768 25651 334219 19967 c +339667 14259 346488 11393 354636 11393 c +360699 11393 365910 13003 370173 16177 c +374460 19351 377895 24467 380405 31457 C +@c +326045 58245 m +380595 58221 L +379860 66440 377752 72622 374318 76719 c +369060 83091 362191 86288 353807 86288 c +346227 86288 339809 83730 334645 78662 c +329455 73569 326566 66748 326021 58221 C +326045 58245 L +@c +F +T +@rax 423.75231 241.71732 432.80759 254.64472 @E +[0.00009574 0.00000000 0.00000000 0.00009574 423.75216172 241.71732029] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (2) @t +94572 15869 m +94572 0 L +5684 0 L +5566 3955 6206 7792 7603 11464 c +9853 17503 13501 23472 18474 29346 c +23448 35220 30672 42018 40075 49715 c +54689 61700 64590 71198 69706 78185 c +74822 85196 77403 91828 77403 98054 c +77403 104591 75059 110110 70393 114610 c +65727 119110 59616 121360 52084 121360 c +44149 121360 37778 118968 33017 114207 c +28257 109423 25817 102815 25770 94383 C +8787 96112 L +9948 108760 14330 118423 21909 125055 c +29488 131687 39673 135027 52463 135027 c +65348 135027 75580 131450 83088 124297 c +90620 117144 94383 108239 94383 97675 c +94383 92301 93273 86996 91093 81809 c +88891 76622 85220 71127 80127 65395 c +75011 59663 66508 51752 54666 41733 c +44765 33420 38370 27759 35575 24798 c +32780 21838 30436 18853 28612 15869 C +94572 15869 L +@c +F +T +@rax 298.38246 239.60665 331.64362 256.05865 @E +[0.00009574 0.00000000 0.00000000 0.00009574 298.38255753 243.18428450] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (p) @t +12387 -37352 m +12364 97414 L +27428 97414 L +27428 84746 L +30957 89696 34983 93438 39436 95899 c +43889 98362 49313 99617 55660 99617 c +63974 99617 71340 97462 77688 93201 c +84035 88914 88867 82851 92088 75082 c +95306 67290 96941 58716 96941 49431 c +96941 39483 95141 30483 91591 22525 c +88014 14543 82804 8408 75982 4169 c +69161 -71 61984 -2203 54476 -2203 c +48981 -2203 44031 -1042 39673 1279 c +35315 3600 31691 6537 28896 10090 C +28896 -37352 L +12387 -37352 L +@c +27333 48152 m +27333 35623 29867 26338 34936 20369 c +40004 14377 46186 11369 53387 11369 c +60705 11369 67006 14472 72216 20677 c +77451 26883 80080 36499 80080 49526 c +80080 61937 77522 71245 72429 77403 c +67313 83585 61203 86688 54121 86688 c +47086 86688 40857 83396 35457 76835 c +30057 70250 27333 60682 27333 48152 c +@c +F +%CHAR: 104496 0 (i) @t +116978 115486 m +116954 134458 L +133463 134458 L +133463 115486 L +116978 115486 L +@c +116978 0 m +116954 97414 L +133463 97414 L +133463 0 L +116978 0 L +@c +F +%CHAR: 146232 0 (p) @t +158619 -37352 m +158596 97414 L +173660 97414 L +173660 84746 L +177189 89696 181215 93438 185668 95899 c +190121 98362 195545 99617 201892 99617 c +210206 99617 217572 97462 223920 93201 c +230267 88914 235099 82851 238320 75082 c +241538 67290 243173 58716 243173 49431 c +243173 39483 241373 30483 237823 22525 c +234246 14543 229036 8408 222214 4169 c +215393 -71 208216 -2203 200708 -2203 c +195213 -2203 190263 -1042 185905 1279 c +181547 3600 177923 6537 175128 10090 C +175128 -37352 L +158619 -37352 L +@c +173565 48152 m +173565 35623 176099 26338 181168 20369 c +186236 14377 192418 11369 199619 11369 c +206937 11369 213238 14472 218448 20677 c +223683 26883 226312 36499 226312 49526 c +226312 61937 223754 71245 218661 77403 c +213545 83585 207435 86688 200353 86688 c +193318 86688 187089 83396 181689 76835 c +176289 70250 173565 60682 173565 48152 c +@c +F +%CHAR: 250728 0 (e) @t +329813 31383 m +346840 29251 L +344166 19303 339169 11558 331897 6063 c +324626 568 315318 -2203 304020 -2203 c +289761 -2203 278463 2179 270126 10943 c +261789 19706 257597 32046 257597 47868 c +257597 64258 261813 76977 270245 86025 c +278677 95070 289643 99617 303096 99617 c +316123 99617 326781 95164 335024 86309 c +343266 77451 347408 64945 347408 48886 c +347408 47915 347361 46423 347313 44481 C +274650 44481 L +275266 33775 278298 25580 283745 19896 c +289193 14211 295991 11369 304115 11369 c +310154 11369 315341 12956 319605 16130 c +323868 19303 327279 24396 329789 31359 C +329813 31383 L +@c +275598 58076 m +329979 58053 L +329245 66248 327137 72406 323726 76503 c +318468 82851 311646 86025 303286 86025 c +295706 86025 289335 83491 284172 78422 c +279008 73353 276119 66556 275574 58053 C +275598 58076 L +@c +F +T +@rax 130.51502 92.83266 222.77140 105.95565 @E +[0.00009574 0.00000000 0.00000000 0.00009574 130.51500994 93.04400499] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 188424.00000 z +%CHAR: 0 0 (k) @t +12506 0 m +12506 134870 L +29062 134870 L +29062 57961 L +68264 97708 L +89699 97708 L +52347 61442 L +93465 0 L +73048 0 L +40742 49955 L +29062 38728 L +29062 0 L +12506 0 L +@c +F +%CHAR: 94224 0 (e) @t +173525 31457 m +190629 29346 L +187926 19351 182928 11558 175633 6063 c +168338 545 159006 -2226 147661 -2226 c +133379 -2226 122030 2179 113670 10966 c +105309 19777 101116 32144 101116 48013 c +101116 64451 105356 77217 113812 86288 c +122267 95363 133260 99910 146737 99910 c +159811 99910 170493 95457 178760 86573 c +187049 77667 191197 65137 191197 49031 c +191197 48060 191150 46568 191103 44602 C +118217 44602 L +118833 33897 121888 25651 127339 19967 c +132787 14259 139608 11393 147756 11393 c +153819 11393 159030 13003 163293 16177 c +167580 19351 171015 24467 173525 31457 C +@c +119165 58245 m +173715 58221 L +172980 66440 170872 72622 167438 76719 c +162180 83091 155311 86288 146927 86288 c +139347 86288 132929 83730 127765 78662 c +122575 73569 119686 66748 119141 58221 C +119165 58245 L +@c +F +%CHAR: 199008 0 (r) @t +211253 0 m +211230 97708 L +226128 97708 L +226128 82878 L +229917 89794 233449 94392 236671 96594 c +239892 98797 243444 99910 247305 99910 c +252871 99910 258556 98134 264311 94581 C +258627 79206 L +254577 81575 250503 82783 246476 82783 c +242876 82783 239607 81693 236742 79538 c +233852 77359 231791 74327 230560 70467 c +228709 64593 227786 58127 227786 51139 c +227786 0 L +211253 0 L +@c +F +%CHAR: 261744 0 (n) @t +274155 0 m +274155 97708 L +289053 97708 L +289053 83801 L +296233 94534 306607 99910 320155 99910 c +326029 99910 331453 98844 336379 96736 c +341306 94628 345024 91831 347464 88420 c +349927 84986 351656 80888 352627 76175 c +353243 73096 353551 67719 353551 60069 c +353551 0 L +336995 0 L +336995 59429 l +336995 66156 336355 71225 335076 74540 c +333797 77880 331476 80556 328208 82546 c +324939 84536 321055 85554 316649 85554 c +309615 85554 303528 83304 298412 78851 c +293296 74375 290711 65848 290711 53342 c +290711 0 L +274155 0 L +@c +F +%CHAR: 366528 0 (e) @t +445829 31457 m +462933 29346 L +460230 19351 455232 11558 447937 6063 c +440642 545 431310 -2226 419965 -2226 c +405683 -2226 394334 2179 385974 10966 c +377613 19777 373420 32144 373420 48013 c +373420 64451 377660 77217 386116 86288 c +394571 95363 405564 99910 419041 99910 c +432115 99910 442797 95457 451064 86573 c +459353 77667 463501 65137 463501 49031 c +463501 48060 463454 46568 463407 44602 C +390521 44602 L +391137 33897 394192 25651 399643 19967 c +405091 14259 411912 11393 420060 11393 c +426123 11393 431334 13003 435597 16177 c +439884 19351 443319 24467 445829 31457 C +@c +391469 58245 m +446019 58221 L +445284 66440 443176 72622 439742 76719 c +434484 83091 427615 86288 419231 86288 c +411651 86288 405233 83730 400069 78662 c +394879 73569 391990 66748 391445 58221 C +391469 58245 L +@c +F +%CHAR: 471312 0 (l) @t +483368 0 m +483344 134870 L +499924 134870 L +499924 0 L +483368 0 L +@c +F +%CHAR: 565512 0 (t) @t +614093 14803 m +616462 166 L +611820 -805 607627 -1303 603956 -1303 c +597940 -1303 593271 -355 589979 1540 c +586663 3434 584318 5969 582992 9048 c +581642 12127 580955 18664 580955 28612 c +580955 84820 L +568804 84820 L +568804 97708 L +580955 97708 L +580955 121890 L +597419 131838 L +597419 97708 L +614070 97708 L +614070 84820 L +597419 84820 L +597419 27688 l +597419 22975 597727 19919 598295 18593 c +598864 17243 599835 16153 601138 15372 c +602464 14566 604359 14164 606822 14164 c +608646 14164 611085 14377 614070 14803 c +614093 14803 L +@c +F +%CHAR: 615192 0 (a) @t +691367 12056 m +685232 6845 679311 3126 673650 995 c +667989 -1137 661879 -2226 655389 -2226 c +644656 -2226 636390 403 630635 5637 c +624879 10872 621990 17598 621990 25746 c +621990 30530 623079 34915 625258 38847 c +627437 42802 630303 46000 633809 48368 c +637314 50760 641317 52584 645722 53816 c +648970 54669 653897 55498 660457 56303 c +673816 57890 683669 59808 689969 62011 C +690017 64261 690064 65706 690064 66322 c +690064 73048 688501 77833 685374 80580 c +681158 84322 674858 86194 666521 86194 c +658752 86194 652973 84820 649278 82096 c +645580 79372 642809 74517 641033 67601 C +624832 69827 L +626300 76743 628740 82357 632103 86620 c +635467 90883 640369 94176 646744 96452 c +653115 98750 660529 99910 668913 99910 c +677250 99910 684024 98916 689235 96973 c +694446 95007 698307 92518 700746 89557 c +703186 86573 704915 82807 705886 78283 c +706431 75464 706715 70348 706715 63006 c +706715 40931 l +706715 25533 707070 15798 707781 11724 c +708491 7650 709892 3719 711976 0 C +694683 0 L +692977 3411 691840 7437 691367 12032 c +691367 12056 L +@c +689993 49031 m +683977 46568 674953 44484 662921 42779 c +656123 41807 651291 40694 648496 39463 c +645675 38231 643472 36431 641956 34086 c +640440 31718 639659 29085 639659 26220 c +639659 21814 641341 18119 644656 15182 c +647999 12245 652902 10753 659344 10753 c +665716 10753 671400 12151 676350 14922 c +681324 17717 684995 21554 687317 26385 c +689069 30128 689969 35649 689969 42944 c +689993 49031 L +@c +F +%CHAR: 719976 0 (b) @t +747664 0 m +732292 0 L +732292 134870 L +748848 134870 L +748848 86738 L +755838 95505 764768 99910 775616 99910 c +781632 99910 787340 98702 792693 96286 c +798046 93868 802475 90433 805933 86075 c +809391 81693 812138 76388 814080 70206 c +816026 64001 817020 57369 817020 50310 c +817020 33589 812873 20630 804606 11487 c +796340 2345 786392 -2226 774810 -2226 c +763276 -2226 754204 2605 747664 12222 C +747664 0 L +@c +747475 49600 m +747475 37876 749085 29393 752262 24183 c +757473 15656 764531 11393 773413 11393 c +780661 11393 786937 14543 792195 20819 c +797453 27096 800106 36478 800106 48937 c +800106 61679 797572 71106 792527 77170 c +787458 83233 781324 86288 774147 86288 c +766923 86288 760647 83138 755388 76862 c +750127 70585 747475 61466 747475 49576 C +747475 49600 L +@c +F +%CHAR: 824760 0 (l) @t +836816 0 m +836792 134870 L +853372 134870 L +853372 0 L +836816 0 L +@c +F +%CHAR: 866616 0 (e) @t +945917 31457 m +963021 29346 L +960318 19351 955320 11558 948025 6063 c +940730 545 931398 -2226 920053 -2226 c +905771 -2226 894422 2179 886062 10966 c +877701 19777 873508 32144 873508 48013 c +873508 64451 877748 77217 886204 86288 c +894659 95363 905652 99910 919129 99910 c +932203 99910 942885 95457 951152 86573 c +959441 77667 963589 65137 963589 49031 c +963589 48060 963542 46568 963495 44602 C +890609 44602 L +891225 33897 894280 25651 899731 19967 c +905179 14259 912000 11393 920148 11393 c +926211 11393 931422 13003 935685 16177 c +939972 19351 943407 24467 945917 31457 C +@c +891557 58245 m +946107 58221 L +945372 66440 943264 72622 939830 76719 c +934572 83091 927703 86288 919319 86288 c +911739 86288 905321 83730 900157 78662 c +894967 73569 892078 66748 891533 58221 C +891557 58245 L +@c +F +T +@rax 157.43339 289.66932 195.43748 302.75518 @E +[0.00009574 0.00000000 0.00000000 0.00009574 157.43351915 289.88077355] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (t) @t +48436 14780 m +50805 166 L +46163 -805 41994 -1303 38323 -1303 c +32354 -1303 27688 -355 24396 1540 c +21104 3434 18759 5945 17432 9024 c +16082 12103 15395 18617 15395 28517 c +15395 84556 L +3292 84556 L +3292 97414 L +15395 97414 L +15395 121526 L +31809 131450 L +31809 97414 L +48413 97414 L +48413 84556 L +31809 84556 L +31809 27593 l +31809 22904 32117 19848 32686 18522 c +33254 17195 34225 16106 35528 15324 c +36854 14519 38749 14116 41189 14116 c +43012 14116 45428 14330 48413 14756 C +48436 14780 L +@c +F +%CHAR: 49536 0 (a) @t +125495 12008 m +119384 6821 113462 3150 107825 1018 c +102188 -1113 96101 -2203 89611 -2203 c +78906 -2203 70663 426 64931 5637 c +59200 10848 56310 17551 56310 25675 c +56310 30436 57400 34817 59555 38749 c +61734 42681 64600 45878 68105 48247 c +71611 50615 75590 52439 79972 53647 c +83216 54500 88119 55329 94656 56134 c +107968 57721 117797 59639 124097 61819 C +124145 64069 124192 65513 124192 66129 c +124192 72856 122629 77593 119526 80340 c +115310 84083 109010 85954 100720 85954 c +92951 85954 87219 84580 83524 81880 c +79829 79156 77058 74324 75306 67408 C +59152 69611 L +60621 76527 63037 82117 66400 86356 c +69763 90596 74642 93888 80990 96159 c +87338 98457 94727 99617 103088 99617 c +111402 99617 118176 98622 123363 96680 c +128574 94738 132411 92254 134827 89293 c +137266 86333 138995 82567 139966 78043 c +140511 75248 140795 70156 140795 62837 c +140795 40810 l +140795 25462 141151 15751 141837 11701 c +142548 7627 143942 3719 146027 0 C +128787 0 L +127082 3411 125945 7413 125471 12008 C +125495 12008 L +@c +124121 48886 m +118128 46447 109128 44339 97143 42633 c +90369 41686 85538 40573 82743 39365 c +79924 38133 77745 36333 76229 33988 c +74713 31620 73932 28991 73932 26125 c +73932 21719 75613 18048 78929 15135 c +82245 12198 87148 10729 93567 10729 c +99915 10729 105575 12127 110526 14898 c +115476 17669 119123 21483 121444 26314 c +123197 30033 124097 35552 124097 42823 c +124121 48886 L +@c +F +%CHAR: 154032 0 (b) @t +181649 0 m +166301 0 L +166301 134458 L +182833 134458 L +182833 86499 L +189797 95235 198702 99617 209527 99617 c +215495 99617 221180 98409 226533 95993 c +231885 93580 236291 90170 239749 85812 c +243207 81454 245931 76148 247873 69990 c +249812 63808 250807 57176 250807 50165 c +250807 33491 246665 20559 238423 11464 c +230180 2369 220256 -2203 208698 -2203 c +197210 -2203 188162 2605 181625 12198 C +181649 0 L +@c +181460 49455 m +181460 37754 183046 29299 186220 24112 c +191407 15632 198466 11369 207324 11369 c +214524 11369 220777 14519 226035 20772 c +231293 27025 233922 36381 233922 48792 c +233922 61511 231388 70914 226367 76953 c +221322 82993 215211 86025 208058 86025 c +200858 86025 194605 82875 189347 76622 c +184089 70369 181460 61274 181460 49431 C +181460 49455 L +@c +F +%CHAR: 258528 0 (l) @t +270536 0 m +270536 134458 L +287045 134458 L +287045 0 L +270536 0 L +@c +F +%CHAR: 300264 0 (e) @t +379349 31383 m +396376 29251 L +393702 19303 388705 11558 381433 6063 c +374162 568 364854 -2203 353556 -2203 c +339297 -2203 327999 2179 319662 10943 c +311325 19706 307133 32046 307133 47868 c +307133 64258 311349 76977 319781 86025 c +328213 95070 339179 99617 352632 99617 c +365659 99617 376317 95164 384560 86309 c +392802 77451 396944 64945 396944 48886 c +396944 47915 396897 46423 396849 44481 C +324186 44481 L +324802 33775 327834 25580 333281 19896 c +338729 14211 345527 11369 353651 11369 c +359690 11369 364877 12956 369141 16130 c +373404 19303 376815 24396 379325 31359 C +379349 31383 L +@c +325134 58076 m +379515 58053 L +378781 66248 376673 72406 373262 76503 c +368004 82851 361182 86025 352822 86025 c +345242 86025 338871 83491 333708 78422 c +328544 73353 325655 66556 325110 58053 C +325134 58076 L +@c +F +T +@rax 171.73219 261.55389 178.43244 274.48129 @E +[0.00009574 0.00000000 0.00000000 0.00009574 171.73210693 261.55399179] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (1) @t +69990 0 m +53458 0 L +53458 105207 L +49502 101417 44291 97628 37849 93841 c +31407 90051 25580 87185 20440 85291 C +20440 101251 L +29678 105586 37754 110868 44647 117026 c +51563 123208 56466 129224 59332 135027 C +69990 135027 L +69990 0 L +@c +F +T +@rax %Note: Object +176.16189 109.68406 176.16302 135.58394 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +176.16246 135.58394 m +176.16246 126.95074 176.16246 118.31754 176.16246 109.68406 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +176.16246 139.13008 m +179.18646 132.07408 L +177.17046 133.08208 175.15446 133.08208 173.13846 132.07408 C +176.16246 139.13008 L +f +@J +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +176.16246 106.13792 m +179.18646 113.19392 L +177.17046 112.18592 175.15446 112.18592 173.13846 113.19392 C +176.16246 106.13792 L +f +@J + +@rax %Note: Object +14.27131 255.64224 77.98167 294.56617 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +46.12649 294.56617 m +63.67181 294.56617 77.98167 285.82356 77.98167 275.10406 c +77.98167 264.38485 63.67181 255.64224 46.12649 255.64224 c +28.58117 255.64224 14.27131 264.38485 14.27131 275.10406 c +14.27131 285.82356 28.58117 294.56617 46.12649 294.56617 c +@c +S + +@rax %Note: Object +101.23852 287.22954 116.28085 302.98422 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +101.23852 302.98422 m +116.28085 302.98422 L +116.28085 287.22954 L +101.23852 287.22954 L +101.23852 302.98422 L +@c +S + +@rax 107.37468 292.63521 110.49647 299.90976 @E +[0.00009574 0.00000000 0.00000000 0.00009574 107.37463338 292.63532344] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax 107.37468 292.63521 110.49647 299.90976 @E +[0.00009574 0.00000000 0.00000000 0.00009574 107.37463338 292.63532344] @tm +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +r + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +S +T +@rax %Note: Object +101.23852 248.30561 116.28085 264.06028 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +101.23852 264.06028 m +116.28085 264.06028 L +116.28085 248.30561 L +101.23852 248.30561 L +101.23852 264.06028 L +@c +S + +@rax 107.66806 252.82857 110.79921 260.12438 @E +[0.00009574 0.00000000 0.00000000 0.00009574 107.66801920 252.82844459] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax 23.04680 269.16321 71.19326 282.48576 @E +[0.00009574 0.00000000 0.00000000 0.00009574 23.04673119 269.38384725] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 187867.00000 z +%CHAR: 0 0 (O) @t +9071 65490 m +9071 87801 15064 105302 27049 117902 c +39033 130526 54523 136850 73472 136850 c +85883 136850 97083 133890 107031 127968 c +117002 122047 124629 113757 129840 103146 c +135050 92538 137679 80506 137679 67053 c +137679 53410 134932 41212 129437 30459 c +123942 19706 116126 11535 106036 6016 c +95946 474 85054 -2297 73377 -2297 c +60729 -2297 49384 758 39436 6869 c +29488 12980 21909 21340 16793 31904 c +11653 42468 9071 53694 9071 65490 c +@c +27428 65229 m +27428 49028 31786 36238 40478 26930 c +49194 17598 60137 12932 73282 12932 c +86664 12932 97699 17646 106344 27049 c +114989 36475 119323 49857 119323 67148 c +119323 78090 117476 87659 113781 95804 c +110086 103952 104662 110299 97557 114776 c +90430 119276 82425 121526 73566 121526 c +60966 121526 50118 117192 41047 108547 c +31975 99901 27428 85433 27428 65205 C +27428 65229 L +@c +F +%CHAR: 146136 0 (S) @t +154568 43202 m +171361 44670 L +172142 37944 174014 32425 176903 28114 c +179793 23804 184317 20322 190427 17669 c +196538 15016 203431 13666 211081 13666 c +217855 13666 223871 14685 229058 16674 c +234245 18688 238130 21483 240637 24988 c +243172 28493 244451 32354 244451 36499 c +244451 40715 243219 44410 240803 47536 c +238366 50686 234316 53363 228679 55495 c +225079 56892 217097 59095 204757 62032 c +192393 64992 183724 67811 178774 70440 c +172379 73803 167571 77972 164445 82946 c +161295 87920 159708 93533 159708 99712 c +159708 106486 161650 112834 165487 118731 c +169324 124629 174961 129129 182351 132161 c +189741 135216 197983 136756 207031 136756 c +217002 136756 225813 135145 233416 131948 c +241016 128750 246890 124013 250964 117784 c +255062 111531 257288 104449 257572 96585 C +240519 95306 L +239622 103786 236495 110228 231213 114563 c +225932 118897 218092 121076 207765 121076 c +197012 121076 189172 119086 184246 115155 c +179319 111223 176856 106439 176856 100896 c +176856 96064 178608 92088 182090 88962 c +185501 85859 194478 82662 208926 79393 c +223374 76124 233321 73235 238674 70819 c +246487 67219 252290 62624 256009 57105 c +259751 51563 261622 45168 261622 37967 c +261622 30815 259562 24064 255488 17740 c +251390 11416 245493 6490 237822 2984 c +230148 -521 221502 -2297 211886 -2297 c +199736 -2297 189527 -521 181309 3008 c +173090 6561 166624 11914 161958 19019 c +157268 26125 154805 34202 154568 43202 C +@c +F +%CHAR: 271440 0 (P) @t +285935 0 m +285912 134458 L +336645 134458 l +345575 134458 352420 134032 357110 133179 c +363694 132090 369257 129982 373710 126903 c +378163 123824 381787 119465 384487 113923 c +387187 108357 388561 102223 388561 95567 c +388561 84154 384913 74466 377665 66556 c +370394 58645 357228 54666 338209 54666 c +303723 54666 L +303723 0 L +285935 0 L +@c +303723 70535 m +338493 70535 l +349980 70535 358152 72690 362983 76953 c +367812 81217 370228 87256 370228 95022 c +370228 100636 368807 105467 365965 109470 c +363126 113473 359360 116126 354717 117405 c +351733 118186 346167 118589 338114 118589 c +303723 118589 L +303723 70535 L +@c +F +%CHAR: 396744 0 (F) @t +412163 0 m +412139 134458 L +502875 134458 L +502875 118589 L +429951 118589 L +429951 76953 L +493045 76953 L +493045 61084 L +429951 61084 L +429951 0 L +412163 0 L +@c +F +T +@rax %Note: Object +143.10198 137.01685 206.81235 175.94079 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +174.95717 175.94079 m +192.50249 175.94079 206.81235 167.19817 206.81235 156.47896 c +206.81235 145.75975 192.50249 137.01685 174.95717 137.01685 c +157.41184 137.01685 143.10198 145.75975 143.10198 156.47896 c +143.10198 167.19817 157.41184 175.94079 174.95717 175.94079 c +@c +S + +@rax %Note: Object +149.25203 193.62671 164.29436 209.38139 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +149.25203 209.38139 m +164.29436 209.38139 L +164.29436 193.62671 L +149.25203 193.62671 L +149.25203 209.38139 L +@c +S + +@rax 155.38819 199.03266 158.50998 206.30693 @E +[0.00009574 0.00000000 0.00000000 0.00009574 155.38815181 199.03261601] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax %Note: Object +184.33899 192.70006 199.38132 208.45474 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +184.33899 208.45474 m +199.38132 208.45474 L +199.38132 192.70006 L +184.33899 192.70006 L +184.33899 208.45474 L +@c +S + +@rax 190.47515 198.10602 193.60630 205.40183 @E +[0.00009574 0.00000000 0.00000000 0.00009574 190.47510473 198.10591152] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax 151.10872 150.36265 198.97285 163.48564 @E +[0.00009574 0.00000000 0.00000000 0.00009574 151.10863718 150.57399333] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 188424.00000 z +%CHAR: 0 0 (k) @t +12506 0 m +12506 134870 L +29062 134870 L +29062 57961 L +68264 97708 L +89699 97708 L +52347 61442 L +93465 0 L +73048 0 L +40742 49955 L +29062 38728 L +29062 0 L +12506 0 L +@c +F +%CHAR: 94224 0 (e) @t +173525 31457 m +190629 29346 L +187926 19351 182928 11558 175633 6063 c +168338 545 159006 -2226 147661 -2226 c +133379 -2226 122030 2179 113670 10966 c +105309 19777 101116 32144 101116 48013 c +101116 64451 105356 77217 113812 86288 c +122267 95363 133260 99910 146737 99910 c +159811 99910 170493 95457 178760 86573 c +187049 77667 191197 65137 191197 49031 c +191197 48060 191150 46568 191103 44602 C +118217 44602 L +118833 33897 121888 25651 127339 19967 c +132787 14259 139608 11393 147756 11393 c +153819 11393 159030 13003 163293 16177 c +167580 19351 171015 24467 173525 31457 C +@c +119165 58245 m +173715 58221 L +172980 66440 170872 72622 167438 76719 c +162180 83091 155311 86288 146927 86288 c +139347 86288 132929 83730 127765 78662 c +122575 73569 119686 66748 119141 58221 C +119165 58245 L +@c +F +%CHAR: 199008 0 (r) @t +211253 0 m +211230 97708 L +226128 97708 L +226128 82878 L +229917 89794 233449 94392 236671 96594 c +239892 98797 243444 99910 247305 99910 c +252871 99910 258556 98134 264311 94581 C +258627 79206 L +254577 81575 250503 82783 246476 82783 c +242876 82783 239607 81693 236742 79538 c +233852 77359 231791 74327 230560 70467 c +228709 64593 227786 58127 227786 51139 c +227786 0 L +211253 0 L +@c +F +%CHAR: 261744 0 (n) @t +274155 0 m +274155 97708 L +289053 97708 L +289053 83801 L +296233 94534 306607 99910 320155 99910 c +326029 99910 331453 98844 336379 96736 c +341306 94628 345024 91831 347464 88420 c +349927 84986 351656 80888 352627 76175 c +353243 73096 353551 67719 353551 60069 c +353551 0 L +336995 0 L +336995 59429 l +336995 66156 336355 71225 335076 74540 c +333797 77880 331476 80556 328208 82546 c +324939 84536 321055 85554 316649 85554 c +309615 85554 303528 83304 298412 78851 c +293296 74375 290711 65848 290711 53342 c +290711 0 L +274155 0 L +@c +F +%CHAR: 366528 0 (e) @t +445829 31457 m +462933 29346 L +460230 19351 455232 11558 447937 6063 c +440642 545 431310 -2226 419965 -2226 c +405683 -2226 394334 2179 385974 10966 c +377613 19777 373420 32144 373420 48013 c +373420 64451 377660 77217 386116 86288 c +394571 95363 405564 99910 419041 99910 c +432115 99910 442797 95457 451064 86573 c +459353 77667 463501 65137 463501 49031 c +463501 48060 463454 46568 463407 44602 C +390521 44602 L +391137 33897 394192 25651 399643 19967 c +405091 14259 411912 11393 420060 11393 c +426123 11393 431334 13003 435597 16177 c +439884 19351 443319 24467 445829 31457 C +@c +391469 58245 m +446019 58221 L +445284 66440 443176 72622 439742 76719 c +434484 83091 427615 86288 419231 86288 c +411651 86288 405233 83730 400069 78662 c +394879 73569 391990 66748 391445 58221 C +391469 58245 L +@c +F +%CHAR: 471312 0 (l) @t +483368 0 m +483344 134870 L +499924 134870 L +499924 0 L +483368 0 L +@c +F +T +@rax %Note: Object +156.33184 175.77836 160.21587 193.70778 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +160.21587 175.77836 m +157.05383 181.43631 156.33184 187.48346 156.83357 193.70778 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +161.94586 172.68293 m +155.86384 177.36718 L +158.11540 177.47065 159.87515 178.45427 161.14337 180.31748 C +161.94586 172.68293 L +f +@J + +@rax %Note: Object +186.77820 174.80296 192.64479 192.07956 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +192.64479 192.07956 m +192.61757 185.59814 190.27446 179.97676 186.77820 174.80296 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +192.65953 195.62570 m +195.65376 188.55694 L +193.64202 189.57345 191.62602 189.58195 189.60605 188.58246 C +192.65953 195.62570 L +f +@J + +@rax %Note: Object +186.16592 209.22151 192.40214 235.74387 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +192.40214 209.22151 m +191.88510 218.80375 190.64098 227.74337 186.16592 235.74387 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +192.59320 205.68076 m +189.19332 212.56356 L +191.26091 211.66554 193.27380 211.77439 195.23254 212.88954 C +192.59320 205.68076 L +f +@J + +@rax %Note: Object +155.67080 209.51518 161.90702 236.03754 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +155.67080 209.51518 m +156.18784 219.09742 157.43197 228.03704 161.90702 236.03754 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +155.47975 205.97443 m +152.84041 213.18321 L +154.79915 212.06806 156.81203 211.95921 158.87962 212.85723 C +155.47975 205.97443 L +f +@J + +@rax %Note: Object +144.15562 373.91301 207.86598 412.83694 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +176.01080 373.91301 m +193.55613 373.91301 207.86598 382.65562 207.86598 393.37483 c +207.86598 404.09405 193.55613 412.83694 176.01080 412.83694 c +158.46548 412.83694 144.15562 404.09405 144.15562 393.37483 c +144.15562 382.65562 158.46548 373.91301 176.01080 373.91301 c +@c +S + +@rax %Note: Object +150.30567 340.47241 165.34800 356.22709 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +150.30567 340.47241 m +165.34800 340.47241 L +165.34800 356.22709 L +150.30567 356.22709 L +150.30567 340.47241 L +@c +S + +@rax 156.44183 343.54687 159.56362 350.82113 @E +[0.00009574 0.00000000 0.00000000 0.00009574 156.44178957 343.54681545] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax %Note: Object +185.39263 341.39906 200.43496 357.15373 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +185.39263 341.39906 m +200.43496 341.39906 L +200.43496 357.15373 L +185.39263 357.15373 L +185.39263 341.39906 L +@c +S + +@rax 191.52879 344.45197 194.65994 351.74778 @E +[0.00009574 0.00000000 0.00000000 0.00009574 191.52874248 344.45185892] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax 158.32602 387.61228 195.64072 400.96517 @E +[0.00009574 0.00000000 0.00000000 0.00009574 158.32592826 387.83297677] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 188424.00000 z +%CHAR: 0 0 (B) @t +13809 0 m +13785 134870 L +64403 134870 l +74683 134870 82972 133496 89178 130772 c +95410 128048 100313 123832 103818 118172 c +107324 112511 109100 106566 109100 100360 c +109100 94605 107537 89154 104411 84086 c +101284 78993 96547 74872 90244 71746 C +98394 69377 104695 65280 109053 59524 c +113435 53768 115637 46947 115637 39084 c +115637 32783 114287 26883 111635 21483 c +108982 16059 105666 11866 101758 8929 c +97826 5992 92897 3742 86975 2250 c +81054 758 73783 0 65208 0 c +13809 0 L +@c +31646 78212 m +60803 78188 l +68714 78188 74398 78709 77833 79751 c +82357 81101 85791 83351 88065 86478 c +90362 89604 91523 93536 91523 98252 c +91523 102705 90433 106661 88302 110071 c +86170 113482 83091 115827 79112 117058 c +75133 118314 68288 118953 58600 118953 c +31646 118953 L +31646 78212 L +@c +31646 15916 m +65208 15893 l +70988 15893 75038 16130 77359 16556 c +81457 17267 84915 18522 87662 20227 c +90410 21933 92707 24443 94463 27712 c +96239 30980 97139 34797 97139 39084 c +97139 44105 95836 48510 93275 52205 c +90717 55900 87117 58529 82570 60021 c +77998 61514 71390 62271 62816 62271 c +31646 62271 L +31646 15916 L +@c +F +%CHAR: 125688 0 (G) @t +203331 52892 m +203331 68714 L +260463 68809 L +260463 18759 L +251699 11772 242652 6490 233343 2984 c +224011 -545 214416 -2321 204610 -2321 c +191370 -2321 179314 521 168514 6182 c +157690 11866 149492 20085 143997 30791 c +138478 41523 135707 53532 135707 66772 c +135707 79893 138454 92162 143926 103534 c +149421 114903 157334 123382 167614 128877 c +177917 134396 189807 137167 203236 137167 c +212995 137167 221832 135580 229696 132430 c +237559 129280 243765 124875 248218 119237 c +252694 113600 256129 106211 258450 97139 C +242344 92731 L +240331 99602 237796 105003 234812 108911 c +231804 112842 227493 115993 221927 118337 c +216334 120706 210129 121890 203331 121890 c +195183 121890 188102 120635 182180 118172 c +176235 115708 171427 112416 167780 108390 c +164132 104339 161266 99863 159253 95031 c +155839 86691 154110 77643 154110 67885 c +154110 55876 156195 45810 160319 37710 c +164440 29607 170480 23591 178391 19682 c +186302 15751 194710 13785 203592 13785 c +211313 13785 218892 15277 226238 18238 c +233580 21222 239194 24419 242983 27783 C +242983 52892 L +203331 52892 L +@c +F +%CHAR: 272256 0 (P) @t +286799 0 m +286775 134870 L +337654 134870 l +346607 134870 353452 134420 358165 133567 c +364797 132478 370366 130370 374819 127290 c +379296 124188 382919 119830 385643 114264 c +388367 108674 389741 102539 389741 95860 c +389741 84394 386093 74683 378798 66748 c +371503 58813 358284 54834 339217 54834 c +304637 54834 L +304637 0 L +286799 0 L +@c +304637 70751 m +339501 70751 l +351012 70751 359231 72906 364063 77170 c +368898 81457 371337 87520 371337 95315 c +371337 100952 369916 105784 367074 109787 c +364229 113814 360439 116466 355773 117745 c +352789 118551 347223 118953 339122 118953 c +304637 118953 L +304637 70751 L +@c +F +T +@rax %Note: Object +157.38548 356.14602 161.26951 374.07543 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +161.26951 374.07543 m +158.10746 368.41748 157.38548 362.37033 157.88721 356.14602 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +162.99950 377.17087 m +162.19701 369.53631 L +160.92879 371.39953 159.16904 372.38315 156.91748 372.48661 C +162.99950 377.17087 L +f +@J + +@rax %Note: Object +187.83184 357.77424 193.69843 375.05083 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +193.69843 357.77424 m +193.67121 364.25565 191.32809 369.87704 187.83184 375.05083 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +193.71317 354.22809 m +190.65969 361.27134 L +192.67965 360.27184 194.69565 360.28035 196.70740 361.29685 C +193.71317 354.22809 L +f +@J + +@rax %Note: Object +187.21956 314.10992 193.45578 340.63228 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +193.45578 340.63228 m +192.93874 331.05005 191.69461 322.11043 187.21956 314.10992 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +193.64683 344.17304 m +196.28617 336.96425 L +194.32743 338.07940 192.31455 338.18825 190.24696 337.29024 C +193.64683 344.17304 L +f +@J + +@rax %Note: Object +156.72444 313.81625 162.96066 340.33861 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +156.72444 340.33861 m +157.24148 330.75638 158.48561 321.81676 162.96066 313.81625 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +156.53339 343.87937 m +159.93326 336.99657 L +157.86567 337.89458 155.85279 337.78573 153.89405 336.67058 C +156.53339 343.87937 L +f +@J + +@rax %Note: Object +116.11531 294.66454 147.83074 294.66567 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +116.11531 294.66510 m +126.68712 294.66510 137.25893 294.66510 147.83074 294.66510 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +112.56917 294.66510 m +119.62517 297.68910 L +118.61717 295.67310 118.61717 293.65710 119.62517 291.64110 C +112.56917 294.66510 L +f +@J + +@rax %Note: Object +116.11531 255.80353 147.97049 255.80466 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +116.11531 255.80409 m +126.73389 255.80409 137.35219 255.80409 147.97049 255.80409 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +151.51663 255.80409 m +144.46063 258.82809 L +145.46863 256.81209 145.46863 254.79609 144.46063 252.78009 C +151.51663 255.80409 L +f +@J + +@rax %Note: Object +72.73020 255.29386 101.01288 264.48576 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +101.01288 255.66633 m +90.53603 255.29386 81.64772 256.94901 72.73020 264.48576 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +104.55676 255.79219 m +97.61272 252.51931 L +98.54844 254.56989 98.47672 256.58476 97.39786 258.56362 C +104.55676 255.79219 L +f +@J + +@rax %Note: Object +72.83934 286.43357 101.03329 296.55014 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +72.83934 286.43357 m +81.18510 292.77808 89.40161 296.55014 101.03329 295.53307 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +70.01631 284.28746 m +73.80340 290.96504 L +74.22094 288.75005 75.44098 287.14507 77.46350 286.15039 C +70.01631 284.28746 L +f +@J + +@rax %Note: Object +518.84844 231.84850 582.55880 270.77244 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +550.70362 270.77244 m +533.15830 270.77244 518.84844 262.02983 518.84844 251.31033 c +518.84844 240.59112 533.15830 231.84850 550.70362 231.84850 c +568.24894 231.84850 582.55880 240.59112 582.55880 251.31033 c +582.55880 262.02983 568.24894 270.77244 550.70362 270.77244 c +@c +S + +@rax %Note: Object +480.54926 263.43581 495.59159 279.19049 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +495.59159 279.19049 m +480.54926 279.19049 L +480.54926 263.43581 L +495.59159 263.43581 L +495.59159 279.19049 L +@c +S + +@rax 486.33335 268.84148 489.45515 276.11603 @E +[0.00009574 0.00000000 0.00000000 0.00009574 486.33329669 268.84159203] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +F +T +@rax 486.33335 268.84148 489.45515 276.11603 @E +[0.00009574 0.00000000 0.00000000 0.00009574 486.33329669 268.84159203] @tm +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.21600 0.21600 0.00000 @w +r + +% FontChange:/_Arial 104370.00000 z +%CHAR: 0 0 (f) @t +9074 0 m +9060 46974 L +962 46974 L +962 54109 L +9060 54109 L +9060 59867 l +9060 63509 9385 66218 10037 67980 c +10910 70348 12464 72287 14685 73753 c +16905 75233 20044 75973 24041 75973 c +26619 75973 29491 75663 32615 75056 C +31238 67062 L +29343 67387 27522 67565 25832 67565 c +23049 67565 21080 66973 19925 65789 c +18771 64604 18178 62369 18178 59112 c +18178 54109 L +28736 54109 L +28736 46974 L +18178 46974 L +18178 0 L +9074 0 L +@c +S +T +@rax %Note: Object +480.54926 224.51187 495.59159 240.26655 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +495.59159 240.26655 m +480.54926 240.26655 L +480.54926 224.51187 L +495.59159 224.51187 L +495.59159 240.26655 L +@c +S + +@rax 486.03090 229.03483 489.16205 236.33065 @E +[-0.00009574 0.00000000 0.00000000 0.00009574 489.16206920 229.03471317] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax 486.03090 229.03483 489.16205 236.33065 @E +[0.00009574 0.00000000 0.00000000 0.00009574 486.03084000 229.03471317] @tm + 0 O 0 @g +0.00 0.00 0.00 1.00 k +e + +% FontChange:/_Arial 104680.00000 z +%CHAR: 0 0 (f) @t +9104 0 m +9089 47122 L +962 47122 L +962 54272 L +9089 54272 L +9089 60045 l +9089 63687 9415 66410 10066 68172 c +10940 70555 12509 72495 14729 73975 c +16965 75455 20103 76195 24115 76195 c +26708 76195 29580 75885 32703 75278 C +31327 67254 L +29432 67595 27611 67772 25906 67772 c +23123 67772 21139 67165 19984 65981 c +18830 64797 18238 62547 18238 59290 c +18238 54272 L +28825 54272 L +28825 47122 L +18238 47122 L +18238 0 L +9104 0 L +@c +F +T +@rax %Note: Object +450.37474 270.87080 480.71480 270.87194 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +480.71480 270.87137 m +470.60135 270.87137 460.48819 270.87137 450.37474 270.87137 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +446.82860 270.87137 m +453.88460 267.84737 L +452.87660 269.86337 452.87660 271.87937 453.88460 273.89537 C +446.82860 270.87137 L +f +@J + +@rax %Note: Object +378.82743 272.41370 404.45915 272.41398 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +404.45915 272.41398 m +395.91524 272.41370 387.37134 272.41370 378.82743 272.41370 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +375.28129 272.41370 m +382.33729 269.38970 L +381.32929 271.40570 381.32929 273.42170 382.33729 275.43770 C +375.28129 272.41370 L +f +@J + +@rax %Note: Object +202.21795 251.00362 284.23559 269.60060 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +284.23559 251.00362 m +270.50513 269.60060 234.56976 264.83471 202.21795 265.88239 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +198.67380 265.99691 m +205.62831 262.74614 L +204.68608 264.79361 204.75128 266.80876 205.82391 268.79102 C +198.67380 265.99691 L +f +@J + +@rax %Note: Object +449.83956 232.00980 480.71480 232.01093 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +480.71480 232.01036 m +470.42277 232.01036 460.13131 232.01036 449.83956 232.01036 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +484.26094 232.01036 m +477.20494 228.98636 L +478.21294 231.00236 478.21294 233.01836 477.20494 235.03436 C +484.26094 232.01036 L +f +@J + +@rax %Note: Object +495.81723 231.50013 524.09991 240.69203 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +495.81723 231.87260 m +506.29408 231.50013 515.18239 233.15528 524.09991 240.69203 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +526.80813 242.98101 m +519.46696 240.73597 L +521.53824 239.84702 522.83962 238.30724 523.37112 236.11663 C +526.80813 242.98101 L +f +@J + +@rax %Note: Object +495.79682 262.63984 523.99077 272.75641 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +523.99077 262.63984 m +515.64501 268.98435 507.42850 272.75641 495.79682 271.73934 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +492.26428 271.43065 m +499.55698 269.03282 L +498.37720 270.95329 498.20145 272.96164 499.03002 275.05786 C +492.26428 271.43065 L +f +@J + +@rax %Note: Object +202.30639 308.22151 221.73250 326.40208 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +202.30639 308.22151 m +206.36674 313.24309 208.30932 321.67701 221.73250 326.40208 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +200.07694 305.46397 m +202.16183 312.85219 L +203.09584 310.80076 204.66340 309.53310 206.86479 309.04951 C +200.07694 305.46397 L +f +@J + +@rax %Note: Object +202.30639 283.71713 251.65899 310.32935 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +202.30639 283.71713 m +223.93077 288.26050 239.49468 297.87307 251.65899 310.32935 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +254.13647 312.86636 m +247.04306 309.93109 L +249.18973 309.24369 250.63200 307.83515 251.37014 305.70548 C +254.13647 312.86636 L +f +@J + +@rax %Note: Object +234.59556 337.20520 256.90932 351.69704 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +234.59556 337.20520 m +239.96381 345.49795 246.81005 351.31776 256.90932 351.69704 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +232.66857 334.22854 m +233.96428 341.79506 L +235.10891 339.85332 236.80148 338.75773 239.04142 338.50857 C +232.66857 334.22854 L +f +@J + +@rax %Note: Object +260.05946 317.97071 282.37323 340.63058 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +260.05946 317.97071 m +269.71455 323.29843 277.44775 330.55512 282.37323 340.63058 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +283.93058 343.81644 m +278.11502 338.80535 L +280.36885 338.82576 282.17991 337.94022 283.54847 336.14929 C +283.93058 343.81644 L +f +@J + +@rax %Note: Object +248.68148 226.69200 287.32762 239.99924 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +287.32762 239.99924 m +279.29424 232.91178 269.32167 228.01946 248.68148 226.69200 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +289.98680 242.34520 m +286.69635 235.40939 L +286.11836 237.58809 284.78466 239.09981 282.69496 239.94482 C +289.98680 242.34520 L +f +@J + +@rax %Note: Object +202.30639 226.69200 233.44753 244.72120 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +233.44753 226.69200 m +221.54258 228.51865 210.95915 233.97080 202.30639 244.72120 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +236.95257 226.15427 m +229.51956 224.23550 L +230.82151 226.07518 231.12737 228.06794 230.43685 230.21348 C +236.95257 226.15427 L +f +@J + +@rax %Note: Object +340.91376 259.21304 363.22753 272.12372 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +340.91376 259.21304 m +346.87361 266.48391 354.11471 271.18290 363.22753 272.12372 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +338.66589 256.47052 m +340.80009 263.84457 L +341.72022 261.78690 343.27956 260.50904 345.47754 260.01043 C +338.66589 256.47052 L +f +@J + +@rax %Note: Object +346.74633 225.84472 403.75928 242.78428 @E +0 J 0 j [] 0 d 0 R 0 @G +0.00 0.00 0.00 1.00 K +0 0.72000 0.72000 0.00000 @w +346.74633 242.78428 m +360.65537 232.21843 381.47924 225.84472 403.75928 228.17792 C +S +@j +0.00 0.00 0.00 1.00 K +0.00 0.00 0.00 1.00 k +0 @g +0 @G +[] 0 d 0 J 0 j +0 R 0 O +0 1.00800 1.00800 0 @w +407.28614 228.54699 m +399.95348 230.81953 L +401.16614 228.91946 401.37591 226.91452 400.58334 224.80441 C +407.28614 228.54699 L +f +@J + +%%PageTrailer +@rs +@rs +%%Trailer +@EndSysCorelDict +end +%%DocumentSuppliedResources: procset wCorel6Dict +%%EOF diff -Nru bird3-3.1.0/doc/slides/slides.tex bird3-3.1.7/doc/slides/slides.tex --- bird3-3.1.0/doc/slides/slides.tex 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slides/slides.tex 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,190 @@ +\input epsf.tex + +\language=\czech +\chyph + +\hsize=170mm +\vsize=250mm +\nopagenumbers + +\font\srm=csss12 scaled \magstep3 +\font\stit=csb12 scaled \magstep3 +\font\sem=csssbx12 scaled \magstep3 +\font\sit=csssi12 scaled \magstep3 +\font\stt=cstt12 scaled \magstep3 +\font\stitle=cscsc12 scaled \magstep4 + +\baselineskip=25pt +\lineskip=2.1pt +\parindent=0pt +\parskip=4pt +\def\em#1{{\emfont #1}} +\srm + +\font\rmfont=cmr10 scaled \magstep4 +\font\ttfont=cmtt10 scaled \magstep4 +\font\ifont=cmmi10 scaled \magstep4 +\font\symfont=cmsy10 scaled \magstep4 +\font\exfont=cmex10 scaled \magstep4 +\font\rmfonts=cmr7 scaled \magstep4 +\font\ifonts=cmmi7 scaled \magstep4 +\font\symfonts=cmsy7 scaled \magstep4 +\font\exfonts=cmex7 scaled \magstep4 +\textfont0=\rmfont +\textfont1=\ifont +\textfont2=\symfont +\textfont3=\exfont +\scriptfont0=\rmfonts +\scriptfont1=\ifonts +\scriptfont2=\symfonts +\scriptfont3=\exfonts + +\newbox\birdbox +{\epsfxsize=2em\global\setbox\birdbox=\hbox{\epsfbox{logo.eps}}} + +\def\slide#1{\begingroup +\ifx:#1:\else +\line{\vrule width 0pt height 25pt depth 4pt \stit #1\hfill\smash{\lower1ex\copy\birdbox}} +\medskip +\hrule height 2pt +\bigskip +\fi +} +\def\endslide{\vfill\eject\endgroup} + +\def\\{\hfil\break} +\def\itemize#1{\par{\advance\leftskip by 35pt{\parskip=5pt #1}\par}} +\def\:{\par\leavevmode\llap{$\bullet$\hskip 7pt}} +\def\>{\par\leavevmode\llap{$\circ$\hskip 7pt}} + +\slide{} +\vglue 1in +\centerline{\epsfxsize=0.6\hsize\epsfbox{logo.eps}} +\centerline{\vbox{\offinterlineskip\halign{#\cr +\stitle Bird Internet Routing Daemon\cr +\noalign{\medskip}% +\leaders\hrule height 2pt\hfil\cr}}} +\vskip 0.5in +\centerline{\vbox{\sit\halign{\hfil # & # \hfil \cr +Vedouc: & RNDr. Libor Forst \cr +Tm: & Ondej Filip, Pavel Machek, Martin Mare \cr +Home: & http:/\kern-0.2em/bird.network.cz/ \cr +E-mail: & bird@bird.network.cz \cr}}} +\endslide + +\slide{Propojovn st a routing} +\medskip +\centerline{\epsfxsize=0.9\hsize\epsfbox{obr1.eps}} +\endslide + +\slide{St jsou pli velk $\Rightarrow$ Autonomn systmy} +\medskip +\centerline{\epsfxsize=0.9\hsize\epsfbox{obr2.eps}} +\endslide + +\slide{Cle projektu} +\itemize{ +\:podpora vech bnch routovacch protokol\\a snadn pidvn novch +\:IPv4 i IPv6 +\:vmna dat mezi rznmi protokoly +\:policy routing +\:snadn konfigurace a drba +\:kvalitn dokumentace +\:minimln zvislost na pouitm OS +} +\endslide + +\slide{Implementovan protokoly} +\itemize{ +\:RIP v2 (Routing Information Protocol) +\itemize{ +\>intern protokol +\>distance vector (Bellman-Ford) +\>pomal konvergence, omezen prmru st +\>IPv4 i IPv6 +} +\:OSPF v2 (Open Shortest Path First) +\itemize{ +\>intern protokol +\>link state algorithm (Dijkstra) +\>rychl konvergence, ale velmi sloit +\>zatm pouze IPv4 +} +\:BGP v4 (Border Gateway Protocol) +\itemize{ +\>extern protokol (jedin dnes pouvan) +\>path vector +\>rychl konvergence, neomezen filtrace +\>IPv4 i IPv6 +} +} +\endslide + +\slide{Propojen protokol} +\medskip +\centerline{\epsfxsize=0.9\hsize\epsfbox{obr5.eps}} +\endslide + +\slide{Sprva routeru} +\itemize{ +\:konfiguran soubory a on-line rekonfigurace: +\medskip +{\stt\advance\leftskip by 1cm +protocol ospf \char123 \\ +\hbox{}~~~area 0 \char123\ interface "eth*"; \char125; \\ +\hbox{}~~~export where source=RTS\char95STATIC; \\ +\hbox{}~~~import all; \\ +\char125 +\medskip +} +\:filtry: jednoduch procedurln jazyk +\:logovn udlost a tracing protokol +\:dlkov ovldn +\:jednoduch client +} +\endslide + +\slide{Architektura} +\itemize{ +\:modulrn architektura se striktnm rozdlenm\\kompetenc: +\itemize{ +\>jdro +\>protokoly +\>filtry +\>knihovny +} +\:oddlen platformn zvislho kdu +\:vlastn datov typy: pesn integery, IP adresy, \dots +\:zen udlostmi +\:``chytr'' datov struktury +} +\bigskip +Platformy: +\itemize{ +\:Zatm pouze Linux 2.0, Linux 2.1--2.4 +\:sten port na FreeBSD +} +\endslide + +\slide{Testovn} +``Laboratorn'' testy: +\itemize{ +\:testovac s na~MFF: 3 potae a router Cisco 7000 +\:test zte (BGP, pten tabulka s~$72\,000$ polokami) +\:test spoluprce (Cisco, GateD, Cyclades) +\:test portability: Linux 2.0--2.4; i386, Sparc, M680x0 +} +\bigskip +``Real world'' testy -- praktick pouit: +\itemize{ +\:nasazen ve~firm Ipex (s s~cca 1000 potai) +\:distribuovno veejn pod GPL: +\itemize{ +\>236 download, 2244 shldnut strnek (k~26. 6.) +\>kladn ohlasy (zejmna na konfiguraci) +\>5 bug report, vyeeny +} +} +\endslide + +\end diff -Nru bird3-3.1.0/doc/slt2001/Makefile bird3-3.1.7/doc/slt2001/Makefile --- bird3-3.1.0/doc/slt2001/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slt2001/Makefile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,10 @@ +all: slt.dvi + +slt.dvi: slt.tex + csplain slt.tex + +slt.ps: slt.dvi + dvips -o slt.ps -D600 -ta4 slt.dvi + +clean: + rm -f *~ *.log *.tfm *.*pk *.*gf *.ps *.dvi diff -Nru bird3-3.1.0/doc/slt2001/slt.tex bird3-3.1.7/doc/slt2001/slt.tex --- bird3-3.1.0/doc/slt2001/slt.tex 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/doc/slt2001/slt.tex 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,275 @@ +\magnification=\magstep1 +\input epsf.tex +\input mjmac.tex + +\language=\czech +\chyph + +\hsize=160truemm % A4 with 25mm margins +\vsize=247truemm +\parindent=2em +\nopagenumbers + +\def\hdr#1{\medskip\leftline{\bf #1}\smallskip} +\def\\{\hfil\break} +\def\BIRD{{\sc Bird}} + +\def\inititemize{\vskip 1pt\begingroup +\parskip=1pt plus 0.3pt minus 0.1pt +\advance\leftskip by 3em +\advance\rightskip by 3em +\parindent=0pt +} + +%%% vod a historie projektu +\hdr{Na potku bylo vejce aneb vodem} + +\noindent Internet i UNIX jsou na svt ji pknch pr ptk. Potae pracujc +pod nepebernm mnostvm unixovskch systm od nepamti funguj jako +internetov potovn servery, name-servery a men routery. Skoro by se zdlo, e +si tyto dva svty u nemaj co novho ci. V~poslednch letech ovem +vrazn vzrostl vkon bnch PC-ek a objevily se pro n karty podporujc +nejrznj sov technologie, a~tak se tyto potae staly vhodnmi +kandidty i~pro funkci router. Na~mnoha mstech tak star PC-ko +s~voln iitelnm softwarem pedstihlo svho starho a draho +komernho sourozence. Akoliv podpora routingu, firewallingu a inteligentn +queue management v~jdrech tchto~OS (a~zejmna Linuxu) je ji velice +vyspl, jet nedvno byly notn zanedbvny protokoly pro dynamick +routing, tradin unixovskou koncepc umstn do~uivatelskho prostoru +v~podob routovacch daemon. + +Tento nedostatek se pokouela mezi jinmi napravit tak skupina nadenc +na~prask Matematicko-fyzikln fakult UK, kter se rozhodla jako svj +studijn projekt vytvoit novho routovacho daemona, kter by se stal +nm vc ne jen dstojnm konkurentem komernch router -- nejen +koproval u znm een, ale tak pispl nm novm; na~jedn stran +bt stabilnm a efektivnm programem pro praxi, na~stran druh ovem +i~laborato pro snadn experimentovn s~novmi mylenkami. A~tak se +narodil projekt {\it BIRD Internet Routing Daemon} (zkrcen \BIRD\footnote{$^0$}{Projekt +si samozejm vyslouil nejrznj pezdvky -- od Ptete a po~Ptkovinu.}). + +Pvodn plny byly sml a rozhodn: Vytvoit nejlepho routovacho +daemona na svt, kter by fungoval na~vech platformch, vyadoval +minimum strojovho asu a pamti, podporoval vechny routovac protokoly +atd., zkrtka sen, jak m bt. Peskome nyn dva roky vvoje\footnote{$^1$}{bhem nich +z~nkterch poadavk samozejm selo -- napklad logem projektu +se nakonec nestal ptek nesouc v~zobku sntku byliny een routa \dots} +a podvejme se, co z~toho vzelo. + +%%% Svt routingu +%% v~titn verzi peskome + +%%% Co BIRD doke +\hdr{Kdy ptka lapaj, pkn mu zpvaj aneb Feature list} + +\noindent \BIRD\ dostal od svch sudiek do~vnku mnoh dary: + +\def\icirc{\raise0.2ex\hbox{$\circ$}} % Signs frequently used for \itemize + +\itemize\ibull +\:Schopnost komunikovat protokoly IPv4 i IPv6. +\:Podporu vech zkladnch routovacch protokol: + \itemize\icirc + \:RIPv2 (Routing Information Protocol, viz RFC 1723 a 2080)\\ + Uren pro intern routing, dnes vznamu spe historickho.\\ + Algoritmus: distance vector (Bellman-Ford).\\ + Velmi pomal konvergence, pouitel pouze pro malik st. + \:OSPFv2 (Open Shortest Path First, viz RFC 2328)\\ + Uren pro intern routing, v~souasn dob asi nejbnj.\\ + Algoritmus: link state (Dijkstra).\\ + Rychl konvergence, ale velice komplikovan.\\ + Zatm podporujeme pouze pro IPv4. + \:BGP4 (Border Gateway Protocol, viz RFC 1771 a 2283)\\ + Standardn protokol pro extern routing mezi AS.\\ + Rychl konvergence, monost administrativn filtrace.\\ + Algoritmus: path vector (upraven Bellman-Ford). + \endlist +\:Propojovn protokol a vmnu dat mezi nimi. +\:Schopnost uplatovat routing policy -- urovat, kter routovac informace + budou od~kterch protokol pijmny a do~kterch protokol vyslny. +\:Snadnou konfiguraci a drbu, ale o~tom a pozdji. +\:Modulrn architekturu umoujc snadn doplovn novch protokol, + filtr i jednoduch portovn na~dal systmy. (Interface k~routovacm + slubm jdra je bohuel i mezi jednotlivmi unixovskmi systmy natolik + rznorod, e dokonce i~Linux 2.0 a Linux 2.2 jsou naprogramovny jako dva + odlin porty.) +\:A v~neposledn ad kvalitn dokumentaci jak uivatelskou, tak + programtorskou (to je vtan dsledek byt kolnm projektem). +\endlist + +%%% A jak to vechno propojit +\hdr{Svt z~pta perspektivy aneb Jak to vechno dt dohromady?} + +\noindent Hlavnm problmem ovem nen ani tak vechny tyto vymoenosti naprogramovat +a popropojovat, nbr udlat to tak, aby z~toho nevznikl neudrovateln +a neefektivn zmatek\footnote{$^2$}{Ndhernm pkladem je Mendelv pes, +jak ho kdysi nakreslil pan Kantorek.}. Z~toho se zrodil modulrn pohled +na~svt routingu a nsledn i cel modulrn architektura programu: + +\bigskip + +\centerline{\epsfxsize=0.9\hsize\epsfbox{../slides/obr5.eps}} + +\medskip + +Zkladem pohledu na~Internet z~na \uv{pta perspektivy} je routovac +tabulka. Na~n jsou pipojeny jednotliv routovac protokoly -- jak +protokoly reln, tak i nkolik virtulnch, jako je napklad protokol +Kernel zajiujc synchronizaci tabulky s~tabulkou jdra nebo protokol +Static generujc podle sv konfigurace statick smrovn. Kad z~protokol +posl do~tabulky poloky pro vechny routy, kter se na~zklad svch informac +o~topologii st dozvd. Tabulka pro kadou s vybr na zklad preferenc +jednotlivch protokol a jejich metrik optimln smr a ten oznamuje +zpt protokolm. V~cest ovem v~obou smrech stoj filtry, kter mohou +tok dat regulovat -- nkter poloky odmtat, jin upravovat (napklad +jim penastavovat metriky i tagy; to se dokonce vztahuje i~na +atributy doplovan clovm protokolem, protoe nejprve clov protokol +nastav implicitn hodnoty svch atribut, pokud je ji poloka neobsahovala, +a teprve pak dojde k~filtrovn). + +Routovacch tabulek me dokonce existovat vcero a pomoc protokolu Pipe +si mohou peposlat vybran poloky. Tm meme zajistit napklad +routing zvisl na~zdrojov adrese i vstupnm interfacu: u~Linuxu 2.2 +i novjho nakonfigurujeme jdru vce routovacch tabulek a kadou +z~nich pipojme na~jednu tabulku nai. + +\hdr{Pta zpv aneb User interface} +%%% User interface: konfigurace, logging a filtry. Remote control. + +\noindent S se mn a s~n se mus mnit i konfigurace sovch +komponent. Ta se pozvolna stala tradinm kamenem razu vtiny router. +U~tohoto kamene se toti schzej dva odvc neptel: +snaha o~snadnost a flexibilitu konfigurace a snaha o~nepetrit +provoz st. A~jednou slev ten, podruh onen -- autoi nkterch +router vsadili na~slu textovch konfiguranch soubor za~cenu +toho, e se po~kad zmn konfigurace mus router restartovat +a po~njakou dobu neroutuje, jin zase poddili non-stop provozu +ve ostatn a stvoili konfigurovn nepebernm mnostvm online +pkaz, pomoc nich se nkter vci provdj snadno, jin, +na~kter autoi speciln pkaz nevymysleli, u obtnji a jet jin +vyaduj do~vslednho stavu dospt postupnm provedenm mnoha zmn, +co m obvykle za~dsledek daleko del vpadek ne jak by byl vznikl +reloadem celho routeru. + +\BIRD\ se sna doshnout obojho: pouv textov konfiguran soubory, +uivateli tak dv monost vytvet konfiguraci vcemn libovolnm +zpsobem -- a ji runm editovnm, interaktivnmi programy i +automatickm generovnm pomoc script. Po~zmn konfigurace je +ovem schopen si novou verzi souboru pest, porovnat s~prv +pouvanou konfigurac a zmnm se za bhu pzpsobit (pokud +jsou zmny pli velk, me to zpsobit restart +nkterho z~protokol, ale provoz tch, kterch se zmna +netkala, to nijak neohroz). + +Konfigurace kadho protokolu (lpe eeno kad jeho instance -- +protokoly mohou bt sputny nkolikrt na~rznch rozhranch +i nad rznmi tabulkami) vypad piblin takto: + +\verbatim{ protocol bgp TestBGP { # instanci si meme nazvat + local as 65000; # n AS + neighbor 195.39.3.64 as 5588; # sousedn AS + export all; # poslat budeme vechno + import filter { # na vstupu nkter odmtneme + if !(bgp_path ~ / ? 5588 ? /) then reject; + if net ~ [ 10.0.0.0/8+, 192.168.0.0/16+ ] then reject; + preference = 101; # zbylm nastavme preferenci + accept; # a pijmeme je + }; + }} +\noindent Vdy popisuje protokol, jeho parametry, pipojen k~tabulkm +(v~naem ppad pouvme tabulku implicitn) a nastaven vstupnch +i~vstupnch filtr. + +Filtry jsou popisovny jednoduchm procedurlnm programovacm jazykem, +kter m k~dispozici vechny informace o~prv zpracovvan poloce, me +se podle nich rozhodovat a libovoln je mnit. Dky tomu je mon jednodue +zadvat i velice sloit pravidla, definovat si podprogramy sdlen +filtry patcmi k~vce protokolm, i~potat metriky pro jeden protokol +na zklad metrik protokol ostatnch. + +Vtanm pomocnkem pi odhalovn problm v~stch je rovn voliteln +logovn dleitch udlost a trasovn innosti protokol: zde si je +mono pro kad protokol vydat prakticky cokoliv ponaje zkladnmi informacemi o~bhu +protokolu (pipojovn a odpojovn soused apod.), pes vmnu poloek +mezi protokolem, filtry a jeho tabulkou, a kone detailnm vpisem vech +pijatch i odeslanch paket. + +Mimo to \BIRD\ disponuje \uv{dlkovm ovldnm} -- jednoduchm pkazovm +rozhranm, pes kter se mohou pipojovat rzn klienti a vydvat jak +nkter dc pkazy (restarty protokol, reload konfigurace, pepnn +trasovn, \dots), tak poadavky na~vypisovn stavu routovacch tabulek +a protokol. U~tchto pkaz je mono vyuvat pln sly filtrovacho +jazyka, take chceme-li napklad znt vechny routy smrovan pomoc +BGP na jednoho konkrtnho souseda, sta poloit dotaz typu + +\verbatim{ bird> show route where source=RTS_BGP && gw=62.168.0.1} + +\noindent a dozvme se ihned ve, co jsme potebovali. Ladn filtr +navc usnadn i~to, e se meme zeptat na~obsah routovac tabulky +z~pohledu nkterho z~bcch protokol. + +%%% BIRD uvnit +%\hdr{Pta anatomie} +%% existuje progdoc + +%%% Netradicni pouziti +\hdr{Cesty tanch ptk aneb Za hranicemi vednch dn} + +\noindent Hotov modulrn implementace routovacho daemona samozejm +svd i k~mn tradinmu vyuit. Zde se fantazii meze nekladou, autory +sam bhem vvoje napadly napklad tyto triky: + +\itemize\ibull +\:{\I multirouter} -- \uv{schizofrenn} zazen pracujc na rznch + skupinch interfac jako rzn routery dc se rznmi pravidly, + lec teba i v~rznch autonomnch systmech. To je mono zadit + patinm nastavenm jdra a buto vce bcmi \BIRD{}y nebo dokonce + jednm pracujcm s~nkolika rznmi routovacmi tabulkami. Tak by + mohl napklad cel prask NIX bet na jedinm routeru (pravda, + bn PC by na to nestalo), a pesto by si kad provider mohl sm + urovat a konfigurovat svou vlastn routovac politiku. +\:{\I ed eminence} -- \BIRD\ by ani nemusel bet pmo na~stroji, kter + pakety routuje, mohl by tak hotov routovac tabulky diktovat + njakmu dedikovanmu routeru disponujcm vkonnjm hardwarem, + a tak skloubit pikovou propustnost \uv{velkho eleza} + s~flexibilitou routeru becho pod unixovskm systmem. +\:{\I inteligentn mirror} -- aplikace se nemus zastavovat u~routingu + jako takovho, mnohdy je mono informace zskan z~provozu routeru + vyuvat k~dalm elm, napklad k~inteligentnmu pesmrovvn + klient na~nejbli mirror vaeho archivu. +\endlist + +%%% A co dal? +\hdr{as ptat aneb Co dl?} + +Pestoe po~spnm obhjen projektu a prvnch nkolika destkch +spokojench uivatel (a samozejm i~pr opravench chybch) nyn vvoj +spe stagnuje, autoi ji spdaj plny do~budoucnosti, kter +by mly \BIRD{}ovi pinst mimo jin tak routovn multicast, agregaci +sovch prefix, OSPFv3 pro IPv6, on-demand linky a porty na~dal systmy. + +%%% Reference na ns a ostatn routery +\hdr{Snka odkaz na zvr} + +\noindent {\sc Bird Team} pod vedenm RNDr. Libora Forsta ({\I forst@cuni.cz}) tvoili: +$$\vbox{\halign{#\hfil & \quad \it # \hfil & \quad \it # \hfil\cr +Ondej Filip&feela@ipex.cz&http:/$\!$/feela.ipex.cz/\cr +Martin Mare&mj@ucw.cz&http:/$\!$/atrey.karlin.mff.cuni.cz/\char126mj/\cr +Pavel Machek&pavel@ucw.cz&http:/$\!$/atrey.karlin.mff.cuni.cz/\char126pavel/\cr}}$$ +Domc strnku projektu najdete na {\it http:/$\!$/bird.network.cz/,} odtamtud ji +vedou odkazy na~aktuln verzi, online dokumentaci i mailing list +uivatel. +Vechna zmiovan RFC i mnoho dalch naleznete na {\it http:/$\!$/www.rfc-editor.org/}, +prvn mylenky o~vyuvn ptactva v~Internetu sahaj a k~RFC~1149. +\BIRD\ nen na~svt sm, m i~pbuzn; mezi nimi za zmnku stoj +daemoni {\sc GateD} ({\I http:/$\!$/www.gated.org/}), \hbox{\sc Zebra} ({\I http:/$\!$/www.zebra.org/}) +a {\sc Mrtd} ({\I http:/$\!$/www.mrtd.net/}). +O~IPv6 se bohuel zatm jen pe, na~jeho celointernetov nasazen se stle +ek a mezitm pibv address-translator a dalch zvrstev. Snad jedin +vt s pouvajc tento protokol je experimentln virtuln s 6-bone +(viz {\it http:/$\!$/www.6bone.net/} a odkazy odtamtud). + +Dotazy a pipomnky poslejte buto autorovi nebo celmu {\sc Bird Team}u na~adresu +{\I bird@bird.network.cz}. + +\bye diff -Nru bird3-3.1.0/filter/data.c bird3-3.1.7/filter/data.c --- bird3-3.1.0/filter/data.c 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/filter/data.c 2026-06-09 09:02:34.000000000 +0000 @@ -205,8 +205,9 @@ return ipa_compare(v1->val.ip, v2->val.ip); case T_NET: return net_compare(v1->val.net, v2->val.net); - case T_STRING: - return strcmp(v1->val.s, v2->val.s); + case T_STRING:; + int i = strcmp(v1->val.s, v2->val.s); + return (i > 0) - (i < 0); case T_PATH: return as_path_compare(v1->val.ad, v2->val.ad); case T_ROUTE: diff -Nru bird3-3.1.0/filter/f-inst.c bird3-3.1.7/filter/f-inst.c --- bird3-3.1.0/filter/f-inst.c 2025-04-03 18:51:25.000000000 +0000 +++ bird3-3.1.7/filter/f-inst.c 2026-06-09 09:02:34.000000000 +0000 @@ -699,9 +699,10 @@ case SA_PROTO: RESULT(sa.type, s, rte->src->owner->name); break; default: { + /* Next hop examination */ struct eattr *nhea = ea_find(rte->attrs, &ea_gen_nexthop); struct nexthop_adata *nhad = nhea ? (struct nexthop_adata *) nhea->u.ptr : NULL; - struct nexthop *nh = nhad ? &nhad->nh : NULL; + struct nexthop *nh = (nhad && NEXTHOP_IS_REACHABLE(nhad)) ? &nhad->nh : NULL; switch (sa.sa_code) { @@ -769,10 +770,11 @@ case SA_GW: { struct eattr *nh_ea = ea_find(fs->rte->attrs, &ea_gen_nexthop); + SKIP_BACK_DECLARE(struct nexthop_adata, nhad, ad, nh_ea ? nh_ea->u.ptr : NULL); + struct nexthop *first = (nh_ea && NEXTHOP_IS_REACHABLE(nhad)) ? &(nhad->nh) : NULL; ip_addr ip = v1.val.ip; - struct iface *ifa = (ipa_is_link_local(ip) && nh_ea) ? - ((struct nexthop_adata *) nh_ea->u.ptr)->nh.iface : NULL; + struct iface *ifa = (ipa_is_link_local(ip) && first) ? first->iface : NULL; /* XXX this code supposes that every owner is a protocol XXX */ neighbor *n = neigh_find(SKIP_BACK(struct proto, sources, fs->rte->src->owner), ip, ifa, 0); diff -Nru bird3-3.1.0/filter/test.conf bird3-3.1.7/filter/test.conf --- bird3-3.1.0/filter/test.conf 2025-04-03 18:51:42.000000000 +0000 +++ bird3-3.1.7/filter/test.conf 2026-06-09 09:02:34.000000000 +0000 @@ -1058,6 +1058,23 @@ y = y + x; } bt_assert(x = 18 && y = 50); + + # gigantic path + bgppath mega = +empty+.prepend(1).prepend(2).prepend(3).prepend(4).prepend(5).prepend(6).prepend(7).prepend(8).prepend(9); + bgppath game; + for int m in mega do { + for int g in mega do { + game.prepend((m-1) * 9 + g); + } + } + + for int m in game do { + for int g in game do { + mega.prepend((m-1) * 81 + g); + } + } + + bt_assert(mega ~ [= * 1000 * 67 * 42 * =]); } bt_test_suite(t_path_old, "Testing paths (old syntax)"); @@ -1142,6 +1159,23 @@ y = y + x; } bt_assert(x = 18 && y = 50); + + # gigantic path + bgppath mega = +empty+.prepend(1).prepend(2).prepend(3).prepend(4).prepend(5).prepend(6).prepend(7).prepend(8).prepend(9); + bgppath game; + for int m in mega do { + for int g in mega do { + game.prepend((m-1) * 9 + g); + } + } + + for int m in game do { + for int g in game do { + mega.prepend((m-1) * 81 + g); + } + } + + bt_assert(mega ~ [= * 1000 * 67 * 42 * =]); } bt_test_suite(t_path_new, "Testing paths (new syntax)"); @@ -2702,10 +2736,19 @@ aspa table at; +# ASPA structure: +# +# +# 65544 65545 +# | \ / \ / | +# 65540 65542 65543 65541 +# | | +# 65550 65551 + protocol static { aspa { table at; }; - route aspa 65540 providers 65544; + route aspa 65540 providers 65544, 65549; route aspa 65541 providers 65545; route aspa 65542 providers 65544, 65545; route aspa 65543 providers 65544, 65545; @@ -2745,8 +2788,29 @@ bgppath p3 = +empty+; p3.prepend(65541); p3.prepend(65544); - bt_assert(aspa_check(at, p3, false) = ASPA_INVALID); + bt_assert(aspa_check(at, p3, false) = ASPA_VALID); bt_assert(aspa_check(at, p3, true) = ASPA_INVALID); + + bgppath p4 = +empty+; + p4.prepend(65540); + p4.prepend(65544); + + bt_assert(aspa_check(at, p4, false) = ASPA_VALID); + bt_assert(aspa_check(at, p4, true) = ASPA_VALID); + + p4.prepend(65545); + + bt_assert(aspa_check(at, p4, false) = ASPA_VALID); + bt_assert(aspa_check(at, p4, true) = ASPA_INVALID); + + p4.prepend(65555); + + bt_assert(aspa_check(at, p4, false) = ASPA_UNKNOWN); + bt_assert(aspa_check(at, p4, true) = ASPA_INVALID); + + bgppath p5 = +empty+.prepend(65550).prepend(65540).prepend(65549); + bt_assert(aspa_check(at, p5, false) = ASPA_VALID); + bt_assert(aspa_check(at, p5, true) = ASPA_VALID); } bt_test_suite(t_aspa_check, "Testing ASPA (our tests)"); @@ -2761,6 +2825,13 @@ route aspa 65543 providers 65546; route aspa 65544 providers 65546, 65547; route aspa 65547 transit; + route aspa 65548 transit; + route aspa 65550 transit; + route aspa 65551 providers 65550; + route aspa 65552 transit; + route aspa 65553 transit; + route aspa 65554 providers 65553; + route aspa 65555 providers 65554; } function t_aspa_check_official() @@ -2770,6 +2841,7 @@ bool UP = true; bool DOWN = false; bgppath p; + # Examples of Upstream Path Verification # F-G is a lateral peer, we do not prepend p = +empty+.prepend(A).prepend(C).prepend(F); bt_assert(aspa_check(at_official, p, UP) = ASPA_VALID); @@ -2805,6 +2877,50 @@ # E-D is a lateral peer, we do not prepend p = +empty+.prepend(B).prepend(E); bt_assert(aspa_check(at_official, p, UP) = ASPA_VALID); + + # Examples of Downstream Path Verification + p = +empty+.prepend(A).prepend(C).prepend(F).prepend(G).prepend(E); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_UNKNOWN); + + p = +empty+.prepend(A).prepend(D).prepend(G).prepend(E); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_VALID); + + p = +empty+.prepend(A).prepend(C).prepend(D).prepend(E); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_UNKNOWN); + + p = +empty+.prepend(A).prepend(C).prepend(D).prepend(G).prepend(E); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_INVALID); + + p = +empty+.prepend(G).prepend(D).prepend(F).prepend(C); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_UNKNOWN); + + p = +empty+.prepend(B).prepend(E).prepend(G).prepend(D); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_VALID); + + p = +empty+.prepend(B).prepend(E).prepend(G).prepend(D).prepend(C); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_INVALID); + + p = +empty+.prepend(A).prepend(C).prepend(F); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_VALID); + + # Topology Contains Complex BGP Relationships + int H = 65548; int J = 65549; int K = 65550; int L = 65551; + int P = 65552; int Q = 65553; int R = 65554; int S = 65555; + + p = +empty+.prepend(H).prepend(J); + bt_assert(aspa_check(at_official, p, UP) = ASPA_INVALID); + + p = +empty+.prepend(H).prepend(J).prepend(K); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_INVALID); + + p = +empty+.prepend(P).prepend(Q); + bt_assert(aspa_check(at_official, p, UP) = ASPA_INVALID); + + p = +empty+.prepend(P).prepend(Q); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_VALID); + + p = +empty+.prepend(P).prepend(Q).prepend(R); + bt_assert(aspa_check(at_official, p, DOWN) = ASPA_VALID); } bt_test_suite(t_aspa_check_official, "Testing ASPA (official tests)"); @@ -2858,3 +2974,26 @@ ipv6 { import where false; }; route fd01::/48 unreachable; } + +# Regression test for crash on setting link-local gw without interface (#257) +# and reading undefined nexthop parameters (#313) +protocol static { + route 3fff:0:1::/48 unreachable; + route 3fff:0:2::/49 blackhole; + route 3fff:0:3::/50 prohibit; + route 3fff:0:4::/51 prohibit; + route 3fff:0:5::/48 recursive 3fff:f:f:f:f:f:f::f; + route 3fff:0:6::/48 recursive 3fff:f:f:f:f:f:f::f mpls 666; + route 3fff:0:7::/48 recursive 3fff:f:f:f:f:f:f::f mpls 666 / 777; + + ipv6 { + import filter { + print net, "|", dest, "|", gw, "|", ifname, "|", ifindex, "|", weight, "|", gw_mpls; + if net.len = 48 then + gw = fe80::f00:ba1; + else if net.len = 50 then + ifname = "lo"; + reject; + }; + }; +} diff -Nru bird3-3.1.0/filter/test.conf.overlay bird3-3.1.7/filter/test.conf.overlay --- bird3-3.1.0/filter/test.conf.overlay 2024-12-17 13:44:48.000000000 +0000 +++ bird3-3.1.7/filter/test.conf.overlay 2026-06-09 09:02:34.000000000 +0000 @@ -1,3 +1,5 @@ attribute int peek_a_boo; +threads 4; + include "test.conf"; diff -Nru bird3-3.1.0/gitlab/Dockerfile.j2 bird3-3.1.7/gitlab/Dockerfile.j2 --- bird3-3.1.0/gitlab/Dockerfile.j2 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/Dockerfile.j2 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,107 @@ +{% for distro in distros %}{% if distro.name == target -%} +{% set d = distro.docker -%} +{% if d == "static" %}{{ fail("Docker for " ~ target ~ " is static, edit that file directly and don't forget to commit the changes into Git.") }}{% endif -%} +# Autogenerated Dockerfile for {{ target }}. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM {{ d.parent }} +{%- if distro.type == "deb" %} +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +{%- for ca in distro.crossarch %} +RUN dpkg --add-architecture {{ ca }} +{%- endfor %} +{%- if distro.shortname == "ubuntu" and distro.crossarch %} +RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\ +Architectures: amd64' '{}' + +RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: {{ distro.crossarch | join(",") }}#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources +{%- endif %} +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + {%- if distro.shortname == "ubuntu" %} + tzdata \ + {%- endif %} + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + {{ d.libssh_kind }}-dev \ + {%- for ca in distro.crossarch %} + crossbuild-essential-{{ ca }} \ + libreadline-dev:{{ ca }} \ + ncurses-dev:{{ ca }} \ + {%- if ca in ("armel", ) %} + libatomic1:{{ ca }} \ + {%- endif %} + {%- endfor %} + {%- if distro.crossarch %} + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + {%- endif %} + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc{% if d.needs_adduser %} \ + adduser{% endif %} +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean +{%- elif distro.type == "rpm" %} +{%- if d.preinstall %} +{{ d.preinstall }} +{%- endif %} +RUN {{ d.installer }} up{% if d.installer[:6] != "zypper" %}grade{% endif %} +RUN {{ d.installer }} install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + {%- if d.pkgconfig %} + pkgconfig \ + {%- endif %} + libssh-devel \ + ncurses-devel \ + readline-devel +RUN {{ d.installer }} install \ + git \ + {%- if d.alternative_lsb %} + {{ d.alternative_lsb }} \ + {%- else %} + lsb-release \ + {%- endif %} + rpm-build \ + {%- if d.faketime == "lib" %} + libfaketime \ + {%- elif d.faketime %} + faketime \ + {%- endif %} + {%- if d.systemd %} + systemd \ + {%- endif %} + systemd-rpm-macros \ + {%- if d.sysuser %} + sysuser-tools \ + {%- endif %} + python3 \ + python3-pip \ + python3-setuptools +{%- endif %} +{%- endif %}{% endfor %} diff -Nru bird3-3.1.0/gitlab/Makefile bird3-3.1.7/gitlab/Makefile --- bird3-3.1.0/gitlab/Makefile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/Makefile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,47 @@ +# Gitlab CI tests +#GITLAB_SECTIONS := template + +#$(s)%.yml: $(s)pipeline.py $(s)%.yml.j2 $(s)data.yml.j2 +.gitlab-ci.yml: $(s)pipeline.py $(s)template.yml.j2 $(s)data.yml.j2 + python3 $^ > $@ + @if grep -n ' ' $@; then echo "Found a tab in yaml output!"; false; fi + +#gitlab-local: $(patsubst %,$(s)%.yml,$(GITLAB_SECTIONS)) +gitlab-local: .gitlab-ci.yml + +# Conditionally include Dockerfile build but only if required +ifneq ($(filter gitlab-docker $(s)docker,$(MAKECMDGOALS)),) +$(s)docker/%/Dockerfile: $(s)pipeline.py $(s)Dockerfile.j2 $(s)data.yml.j2 + $(if $(VENV),$(MAKE) $(GITLAB_VENV)) + mkdir -p $(dir $@) + $(if $(VENV),$(call VPYTHON,$(GITLAB_VENV)),python3) $^ target=$* > $@ + +$(s)docker.mk: $(s)pipeline.py $(s)docker.mk.j2 $(s)data.yml.j2 + $(if $(VENV),$(MAKE) $(GITLAB_VENV)) + $(if $(VENV),$(call VPYTHON,$(GITLAB_VENV)),python3) $^ > $@ + +include $(s)docker.mk +endif + +VPYTHON = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(1)/bin/python3 +VPIP = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(1)/bin/pip3 +VRUN = VIRTUAL_ENV=$(1) PATH="$(1)/bin:$$PATH" $(2) + +GITLAB_VENV := $(o)venv +$(GITLAB_VENV): INSTALL_PACKAGES := jinja2 pyaml + +%/venv: + python3 -m venv $@ + $(call VPIP,$@) install $(INSTALL_PACKAGES) + +gitlab-venv: $(GITLAB_VENV) + $(call VRUN,$<,$(MAKE)) gitlab-local + +gitlab-clean: s := $(s) +gitlab-clean: + rm $(s)*.yml + +clean:: + rm -rf $(GITLAB_VENV) + +.PHONY: gitlab-local gitlab-venv gitlab-clean diff -Nru bird3-3.1.0/gitlab/README.md bird3-3.1.7/gitlab/README.md --- bird3-3.1.0/gitlab/README.md 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/README.md 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,149 @@ +# BIRD CI Pipelines + +There is quite a lot to do during our CI to ensure that BIRD stays stable and +no regression is introduced by regular development. We do as much as possible +in an automated way so that routine tasks aren't botched by somebody missing +a step. + +## Pipeline structure + +The main [main `.gitlab-ci.yml` file](../../.gitlab-ci.yml) is double-templated. + +Primary data is in [data.yml.j2](data.yml.j2) which is itself processed by +Jinja to expand various data structures. The expanded data is then passed to +the templater, converting [template.yml.j2](template.yml.j2) to the final +target file. + +The main file is committed into the repository, and therefore every change to +the source files must be accompanied with `make gitlab-local` (if you have +`jinja2` and `pyaml` installed locally) or `make gitlab-venv` which creates a +venv for that job on the fly. If that file was generated on the fly, it would +add some unnecessary half a minute to the CI run time, and make the CI output +more confusing. + +We would love to split the main CI file to some nice smaller parts but it would +probably impose quite a lot of repetitive work because of Gitlab. At least +we can document these parts as separate chapters. + +## Consistency + +Release-worthy commits are put into specific branches. These are: + +- `master` for BIRD 2 +- `thread-next` for BIRD 3 +- `stable-v*` for patch release branches + +These branches require some commit hygiene, which is checked by the script +in `tools/git-check-commits`, and if anybody pushes a commit which fails the +consistency check, they should immediately force-push a fixed history. + +Notably, this check requires all the commits to not be marked as `fixup!` or +as `WIP`, which both marks unfinished work. + +TODO: + +- add also check that the gitlab CI file is up-to-date with the sources + +## Build tests + +We have been historically hit by multiple integration problems arising from +distributions either keeping old tooling versions (e.g. old compilers), +breaking things by updates, or simply using different libraries and tools +than the core team which runs mostly Debian, Ubuntu and Fedora (as of 2026). + +Therefore, we check builds for multiple distribution versions from last about +5-10 years, depending on customer requirements and actual possibility to get a +docker image for that distro. + +We also run build tests for FreeBSD, OpenBSD and NetBSD inside QEMU. The images +are half-defined inside our +[temporary virtualization platform](https://gitlab.nic.cz/labs/bird-tools/-/tree/master/birdlab-tmp) +but please note that there are quite some updates local to the deployment, which +have not been applied back to that repository. + +Last but not least, we check partial builds where some of the protocols are switched off. + +TODO: + +- commit changes for the virtualization platform and test deployment from scratch +- add partial builds checking other `configure` checks, e.g. presence of `libssh` +- add cross platform builds at least nightly + +## Runtime tests + +These tests use the [Netlab infrastructure](https://gitlab.nic.cz/labs/bird-tools/-/tree/master/netlab) (yes, another Netlab), and we gradually add more tests covering more +BIRD functionality. There are also regression tests included. + +## Packaging and install tests + +These tasks build BIRD packages for various Linux distributions, and check whether these +actually install cleanly. + +TODO: + +- add automated cross platform packaging +- add package signing and repo upload +- add alpine +- add production docker image build + +## Tag build collection + +Release helper to collect all built packages when tag is made. + +## Internal docker rebuild + +All the distro build and packaging is done in docker build environments, +prepared with all the build dependencies, to shorten build times. + +TODO: + +- add on-demand triggers from the gitlab web ui + +# Docker files for our test machinery + +**These files are not distribution files for running BIRD. We currently +do not supply official BIRD images and do not prepare any Docker files ourselves.** + +We build for the major Linux distributions, FreeBSD and OpenBSD. If you feel +that your favourite Linux distribution is missing, please send a patch. + +Where to add your favourite Linux distribution: + +- add an appropriate dockerfile here +- possibly add `pkg-*` and `install-*` template job in `gitlab/template.yml.j2` +- add your distribution into the `distros` list in `gitlab/data.yml.j2` +- run `make gitlab-local` or `make gitlab-venv` to rebuild `.gitlab-ci.yml` + +Rebuilding the docker images is done by triggering the appropriate pipeline manually in Gitlab. + +When images are disused, check [the registry](https://gitlab.nic.cz/labs/bird/container_registry/) +and untag them so that they can be garbage-collected. + +## Debian-based distributions + +We support Debian between oldoldstable and testing. If not, poke us. + +We support Ubuntu LTS at least 5 years old and non-LTS before EOL. After EOL, +the non-LTS package repositories tend to disappear quite quickly so we don't +have resources to build against. + +## RedHat-based distributions + +We support OpenSUSE, Fedora, CentOS 7+8, Rocky Linux and Oracle Linux. If you are +missing your favourite new release, poke us. We are discontinuing the old +releases as they stop working. + +The current support for CentOS 7 and 8 has been paid for and we may drop it without +further notice at the exact moment the customer stops using it. + +We failed to find a reliable Docker image for Rocky Linux 10. + +## Any other based distributions + +We currently don't package for e.g. Alpine, Arch, Gentoo, Mint or Slackware. +Contributions are open, please refer to `CONTRIBUTING.md` for further information. + +## FreeBSD and OpenBSD + +These are not built in Docker but in proper virtuals in QEMU, refer to + diff -Nru bird3-3.1.0/gitlab/data.yml.j2 bird3-3.1.7/gitlab/data.yml.j2 --- bird3-3.1.0/gitlab/data.yml.j2 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/data.yml.j2 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,241 @@ +# Regex denoting stable branches for which we want to build packages +stable_branch_regex: '^(stable-.*|thread-next|master)$' + +# Note: Dockerfiles must be rebuilt by manually triggering the pipeline +# with an appropriate input via https://gitlab.nic.cz/labs/bird/-/pipelines/new + +distros: + # CentOS 7 with quite some hacks + - name: centos-7-amd64 + variables: + LC_ALL: en_US.UTF-8 + CC: /opt/rh/devtoolset-8/root/usr/bin/gcc + type: rpm + docker: static + + - name: centos-8-amd64 + type: rpm + docker: + parent: 'centos:8' + installer: yum -y + alternative_lsb: redhat-lsb-core + systemd: false + preinstall: | + # Has to be done for yum to work properly. CentOS 8 is EOL. + RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo + RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo + RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo + + # Rocky and Oracle Linux, forks of CentOS/RHEL + # check latest supported version at https://wiki.rockylinux.org/rocky/version/#__tabbed_1_2 + {% for inum,snum in ((8,10),(9,5)) -%} + {% if inum >= 10 %}{% set num = inum ~ "" %}{% else %}{% set num = "0" ~ inum %}{% endif -%} + - name: rocky-{{ num }}-amd64 + type: rpm + docker: + parent: 'rockylinux/rockylinux:{{ inum }}.{{snum}}' + installer: yum -y + {%- if num == "08" %} + alternative_lsb: redhat-lsb-core + systemd: false + {%- else %} + systemd: true + faketime: true + preinstall: 'RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ inum }}.noarch.rpm' + {%- endif %} + {% endfor %} + {% for inum in (8,9,10) -%} + {% if inum >= 10 %}{% set num = inum ~ "" %}{% else %}{% set num = "0" ~ inum %}{% endif -%} + - name: oracle-{{ num }}-amd64 + type: rpm + docker: + parent: 'oraclelinux:{{ inum }}' + installer: yum -y + {%- if num == "08" %} + alternative_lsb: redhat-lsb-core + systemd: false + {%- else %} + systemd: true + faketime: true + preinstall: 'RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-{{ inum }}.noarch.rpm' + {%- endif %} + {% endfor %} + + # Last 7 years of OpenSUSE + {% for num in (0,1,2,3,4,5) -%} + - name: opensuse-15.{{ num }}-amd64 + type: rpm + docker: + parent: 'opensuse/leap:15.{{num}}' + installer: zypper -n + pkgconfig: true + systemd: true + faketime: lib + sysuser: true + {% endfor %} + {% for num in (0,) -%} + - name: opensuse-16.{{ num }}-amd64 + type: rpm + docker: + parent: 'opensuse/leap:16.{{num}}' + installer: zypper -n + pkgconfig: true + systemd: true + faketime: lib + sysuser: true + {% endfor %} + + # Last 12 versions of Fedora + {% for num in (33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44) -%} + - name: fedora-{{ num }}-amd64 + type: rpm + docker: + parent: fedora:{{ num }} + installer: dnf -y + pkgconfig: true + faketime: true + {%- if num <= 36 %} + alternative_lsb: redhat-lsb-core + {%- endif %} + systemd: true + + {% endfor %} + + # Debian from oldoldstable up to testing + {% for num, codename, crossarch in ( + (11, "bullseye", []), + (12, "bookworm", ["mips64el", "s390x"]), + (13, "trixie", ["arm64", "armel", "armhf", "riscv64", "s390x"]), + ("testing", "testing", ["arm64", "armhf", "riscv64", "s390x"]) + ) -%} + {% for arch in ('amd64', 'i386') -%} + - name: debian-{{num}}-{{arch}} + type: deb + shortname: debian + {%- if arch == "amd64" %} + crossarch: {{ crossarch }} + {%- endif %} + docker: + parent: {{ arch }}/debian:{{ codename }}-slim + libssh_kind: {% if (num != "testing") and (num < 13) %}libssh-gcrypt{% else %}libssh{% endif %} + needs_adduser: {% if (num != "testing") and (num < 13) %}false{% else %}true{% endif %} + {% endfor %} + {% endfor %} + +# These debian don't crossbuild. TODO fix that. +# 12 -> ["arm64", "armel", "armhf"] -> Error 127 from `make check` probably because qemu-user is somehow botched + + # Last 7 years of Ubuntu LTS + {% for num, crossarch in ( + ('18.04', []), + ('20.04', []), + ('22.04', []), + ('24.04', ["arm64", "armhf", "ppc64el", "riscv64", "s390x"]), + ('25.04', ["armhf", "ppc64el", "riscv64", "s390x"]), + ('25.10', ["arm64", "armhf", "ppc64el", "riscv64", "s390x"]), + ('26.04', ["arm64", "armhf", "ppc64el", "riscv64", "s390x"]), + ) -%} + - name: ubuntu-{{ num }}-amd64 + type: deb + shortname: ubuntu + crossarch: {{ crossarch }} + docker: + parent: "ubuntu:{{ num }}" + libssh_kind: {% if (num[:2] | int) < 25 %}libssh-gcrypt{% else %}libssh{% endif %} + needs_adduser: {% if (num[:2] | int) > 22 %}true{% else %}false{% endif %} + {% endfor %} + +# These ubuntu don't crossbuild. TODO fix that. +# '22.04' -> ["arm64", "armhf", "ppc64el"] -> Error 127 from `make check` probably because qemu-user is somehow botched +# -> ["s390x"] doesn't pack -> debugedit --build-id --build-id-seed=bird2/2.18\+branch.mq.nightly.d0b6b85ebc17-cznic.1\~jammy debian/bird2/usr/sbin/birdc died with signal 11 +# -> ["riscv64"] fails on dynamic linking libatomic.so.1 when running tests +# '25.04' -> ["arm64"] fails in `make check` with Timeout expired on `rt-fib_test` + +birdlab: + - name: openbsd-76 + variables: + AUTOCONF_VERSION: "2.72" + + {% for num in ("09", "10") -%} + - name: netbsd-{{ num }} + variables: + CONFIGURE_OPTIONS: --disable-lto + {% endfor %} + + {% for num in (13, 14) -%} + - name: freebsd-{{ num }} + - name: freebsd-{{ num }}-netlink + dist: freebsd-{{ num }} + variables: + CONFIGURE_OPTIONS: --with-sysconfig=bsd-netlink --disable-client + {% endfor %} + +partial_build_image: + name: debian-12-amd64 + +partial_build: + - protocols: aggregator + - protocols: babel + - protocols: bfd + - protocols: bgp + - protocols: bgp,bmp + - protocols: l3vpn + - protocols: mrt + - protocols: ospf + - protocols: pipe + - protocols: radv + - protocols: rip + - protocols: rpki + - protocols: static + +netlab: + - name: babel-base + - name: babel-auth + - name: ospf-base + - name: ospf-default + - name: ospf-priority + - name: ospf-nbma + - name: ospf-ptmp + - name: ospf-authentication + - name: ospf-bfd + - name: ospf-custom + - name: ospf-area + - name: ospf-vrf + - name: bgp-base + - name: bgp-auth + - name: bgp-int + - name: bgp-merged + - name: bgp-flowspec + - name: bgp-rs-multitab + - name: bgp-rs-singletab + - name: ebgp-graceful + - name: ebgp-loop + - name: ebgp-star + - name: ebgp-role + - name: ebgp-import-limit + - name: ebgp-hostname + - name: ebgp-bfd-auth + - name: ibgp-loop + - name: ibgp-loop-big + - name: ibgp-flat + - name: ibgp-bfd-auth + - name: rip-base +# - name: rip-vrf + - name: kernel-learn + - name: mpls-bgp + - name: mpls-bgp-l3vpn + - name: pipe-collision + - name: log-corner-cases + - name: roa-reconf-regression + - name: ebgp-refresh/gen/imno-basic-imex-basic + - name: ebgp-refresh/gen/noex-basic-imno-enhanced + - name: ebgp-refresh/gen/imex-basic-noex-none + - name: ebgp-refresh/gen/nono-enhanced-nono-basic + - name: ebgp-refresh/gen/imno-none-imex-basic + - name: ebgp-refresh/gen/noex-none-imno-enhanced + - name: ebgp-refresh/gen/imex-none-noex-none + - name: ebgp-refresh/gen/nono-none-nono-basic + - name: ebgp-refresh/gen/imno-enhanced-imex-enhanced + - name: ebgp-refresh/gen/noex-enhanced-imno-enhanced + - name: ebgp-refresh/gen/imex-enhanced-noex-enhanced + - name: ebgp-refresh/gen/nono-enhanced-nono-enhanced diff -Nru bird3-3.1.0/gitlab/docker/centos-7-amd64/Dockerfile bird3-3.1.7/gitlab/docker/centos-7-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/centos-7-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/centos-7-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,49 @@ +# bump number for image rebuild: 0 +FROM centos:7 + +# Has to be done for yum to work properly. CentOS 7 is EOL. +RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo +RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo +RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo + +# Add new repos for devtoolset-8-gcc. +# We need to use devtoolset, because BIRD cannot be correctly compiled with CentOS 7 version of gcc. +RUN echo -e \ + "\n[centos-sclo-rh]\nname=CentOS-7.8.2003 - SCLo rh\nbaseurl=https://vault.centos.org/7.8.2003/sclo/\$basearch/rh/\ngpgcheck=0\nenabled=1" \ + >> /etc/yum.repos.d/CentOS-Base.repo +RUN echo -e \ + "\n[centos-sclo-sclo]\nname=CentOS-7.8.2003 - SCLo sclo\nbaseurl=https://vault.centos.org/7.8.2003/sclo/\$basearch/sclo/\ngpgcheck=0\nenabled=1" \ + >> /etc/yum.repos.d/CentOS-Base.repo + +RUN yum -y upgrade + +# Change kernel-headers +RUN yum -y remove \ + kernel-headers +RUN yum -y install \ + https://dl.lamp.sh/kernel/el7/kernel-ml-headers-6.6.41-1.el7.x86_64.rpm + +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel \ + centos-release-scl + +RUN yum -y install \ + git \ + rpm-build \ + faketime \ + redhat-lsb-core \ + python3 \ + python3-pip \ + python3-setuptools \ + devtoolset-8-toolchain + +# Backported newer RPM macros, hoping that it stays there for some while until we drop CentOS 7 support +RUN yum -y install \ + ftp://ftp.icm.edu.pl/packages/linux-pbone/ftp5.gwdg.de/pub/opensuse/repositories/systemsmanagement:/Ardana:/8:/CentOS/CentOS_7.3/noarch/systemd-rpm-macros-3-5.2.noarch.rpm diff -Nru bird3-3.1.0/gitlab/docker/centos-8-amd64/Dockerfile bird3-3.1.7/gitlab/docker/centos-8-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/centos-8-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/centos-8-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,29 @@ +# Autogenerated Dockerfile for centos-8-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM centos:8 +# Has to be done for yum to work properly. CentOS 8 is EOL. +RUN sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/CentOS-*.repo +RUN sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/CentOS-*.repo +RUN sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/CentOS-*.repo + +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/debian-11-amd64/Dockerfile bird3-3.1.7/gitlab/docker/debian-11-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-11-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-11-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,36 @@ +# Autogenerated Dockerfile for debian-11-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM amd64/debian:bullseye-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-11-i386/Dockerfile bird3-3.1.7/gitlab/docker/debian-11-i386/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-11-i386/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-11-i386/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,36 @@ +# Autogenerated Dockerfile for debian-11-i386. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM i386/debian:bullseye-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-12-amd64/Dockerfile bird3-3.1.7/gitlab/docker/debian-12-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-12-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-12-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,47 @@ +# Autogenerated Dockerfile for debian-12-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM amd64/debian:bookworm-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture mips64el +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + crossbuild-essential-mips64el \ + libreadline-dev:mips64el \ + ncurses-dev:mips64el \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-12-i386/Dockerfile bird3-3.1.7/gitlab/docker/debian-12-i386/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-12-i386/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-12-i386/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,36 @@ +# Autogenerated Dockerfile for debian-12-i386. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM i386/debian:bookworm-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-13-amd64/Dockerfile bird3-3.1.7/gitlab/docker/debian-13-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-13-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-13-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,61 @@ +# Autogenerated Dockerfile for debian-13-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM amd64/debian:trixie-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture arm64 +RUN dpkg --add-architecture armel +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + crossbuild-essential-arm64 \ + libreadline-dev:arm64 \ + ncurses-dev:arm64 \ + crossbuild-essential-armel \ + libreadline-dev:armel \ + ncurses-dev:armel \ + libatomic1:armel \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-13-i386/Dockerfile bird3-3.1.7/gitlab/docker/debian-13-i386/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-13-i386/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-13-i386/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Autogenerated Dockerfile for debian-13-i386. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM i386/debian:trixie-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-testing-amd64/Dockerfile bird3-3.1.7/gitlab/docker/debian-testing-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-testing-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-testing-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,56 @@ +# Autogenerated Dockerfile for debian-testing-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM amd64/debian:testing-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture arm64 +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + crossbuild-essential-arm64 \ + libreadline-dev:arm64 \ + ncurses-dev:arm64 \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/debian-testing-i386/Dockerfile bird3-3.1.7/gitlab/docker/debian-testing-i386/Dockerfile --- bird3-3.1.0/gitlab/docker/debian-testing-i386/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/debian-testing-i386/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Autogenerated Dockerfile for debian-testing-i386. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM i386/debian:testing-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/docbuilder/Dockerfile bird3-3.1.7/gitlab/docker/docbuilder/Dockerfile --- bird3-3.1.0/gitlab/docker/docbuilder/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/docbuilder/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,31 @@ +# bump this to recreate the image: 2 +FROM debian:trixie-slim +ENV DEBIAN_FRONTEND=noninteractive +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + build-essential \ + flex \ + bison \ + autoconf \ + git \ + pandoc \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + groff \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + dpkg-dev \ + debhelper \ + distro-info-data \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv diff -Nru bird3-3.1.0/gitlab/docker/fedora-33-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-33-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-33-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-33-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-33-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:33 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-34-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-34-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-34-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-34-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-34-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:34 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-35-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-35-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-35-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-35-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-35-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:35 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-36-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-36-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-36-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-36-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-36-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:36 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-37-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-37-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-37-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-37-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-37-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:37 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-38-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-38-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-38-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-38-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-38-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:38 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-39-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-39-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-39-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-39-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-39-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:39 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-40-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-40-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-40-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-40-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-40-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:40 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-41-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-41-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-41-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-41-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-41-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:41 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-42-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-42-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-42-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-42-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-42-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:42 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-43-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-43-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-43-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-43-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-43-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:43 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/fedora-44-amd64/Dockerfile bird3-3.1.7/gitlab/docker/fedora-44-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/fedora-44-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/fedora-44-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for fedora-44-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM fedora:44 +RUN dnf -y upgrade +RUN dnf -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN dnf -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.0-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.0-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.0-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.0-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.0-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.0 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.1-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.1-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.1-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.1-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.1-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.1 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.2-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.2-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.2-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.2-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.2-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.2 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.3-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.3-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.3-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.3-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.3-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.3 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.4-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.4-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.4-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.4-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.4-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.4 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-15.5-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-15.5-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-15.5-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-15.5-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-15.5-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:15.5 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/opensuse-16.0-amd64/Dockerfile bird3-3.1.7/gitlab/docker/opensuse-16.0-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/opensuse-16.0-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/opensuse-16.0-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,28 @@ +# Autogenerated Dockerfile for opensuse-16.0-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM opensuse/leap:16.0 +RUN zypper -n up +RUN zypper -n install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + pkgconfig \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN zypper -n install \ + git \ + lsb-release \ + rpm-build \ + libfaketime \ + systemd \ + systemd-rpm-macros \ + sysuser-tools \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/oracle-08-amd64/Dockerfile bird3-3.1.7/gitlab/docker/oracle-08-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/oracle-08-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/oracle-08-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,24 @@ +# Autogenerated Dockerfile for oracle-08-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM oraclelinux:8 +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/oracle-09-amd64/Dockerfile bird3-3.1.7/gitlab/docker/oracle-09-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/oracle-09-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/oracle-09-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for oracle-09-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM oraclelinux:9 +RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/oracle-10-amd64/Dockerfile bird3-3.1.7/gitlab/docker/oracle-10-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/oracle-10-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/oracle-10-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for oracle-10-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM oraclelinux:10 +RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-10.noarch.rpm +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/rocky-08-amd64/Dockerfile bird3-3.1.7/gitlab/docker/rocky-08-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/rocky-08-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/rocky-08-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,24 @@ +# Autogenerated Dockerfile for rocky-08-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM rockylinux/rockylinux:8.10 +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + redhat-lsb-core \ + rpm-build \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/rocky-09-amd64/Dockerfile bird3-3.1.7/gitlab/docker/rocky-09-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/rocky-09-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/rocky-09-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,27 @@ +# Autogenerated Dockerfile for rocky-09-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM rockylinux/rockylinux:9.5 +RUN dnf -y install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm +RUN yum -y upgrade +RUN yum -y install \ + gcc \ + make \ + flex \ + bison \ + autoconf \ + libssh-devel \ + ncurses-devel \ + readline-devel +RUN yum -y install \ + git \ + lsb-release \ + rpm-build \ + faketime \ + systemd \ + systemd-rpm-macros \ + python3 \ + python3-pip \ + python3-setuptools diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-18.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-18.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-18.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-18.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Autogenerated Dockerfile for ubuntu-18.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:18.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-20.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-20.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-20.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-20.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Autogenerated Dockerfile for ubuntu-20.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:20.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-22.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-22.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-22.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-22.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,37 @@ +# Autogenerated Dockerfile for ubuntu-22.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:22.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-24.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-24.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-24.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-24.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,64 @@ +# Autogenerated Dockerfile for ubuntu-24.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:24.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture arm64 +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture ppc64el +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\ +Architectures: amd64' '{}' + +RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: arm64,armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-gcrypt-dev \ + crossbuild-essential-arm64 \ + libreadline-dev:arm64 \ + ncurses-dev:arm64 \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-ppc64el \ + libreadline-dev:ppc64el \ + ncurses-dev:ppc64el \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-25.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-25.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-25.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-25.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,60 @@ +# Autogenerated Dockerfile for ubuntu-25.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:25.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture ppc64el +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\ +Architectures: amd64' '{}' + +RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-ppc64el \ + libreadline-dev:ppc64el \ + ncurses-dev:ppc64el \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-25.10-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-25.10-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-25.10-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-25.10-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,64 @@ +# Autogenerated Dockerfile for ubuntu-25.10-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:25.10 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture arm64 +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture ppc64el +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\ +Architectures: amd64' '{}' + +RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: arm64,armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + crossbuild-essential-arm64 \ + libreadline-dev:arm64 \ + ncurses-dev:arm64 \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-ppc64el \ + libreadline-dev:ppc64el \ + ncurses-dev:ppc64el \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker/ubuntu-26.04-amd64/Dockerfile bird3-3.1.7/gitlab/docker/ubuntu-26.04-amd64/Dockerfile --- bird3-3.1.0/gitlab/docker/ubuntu-26.04-amd64/Dockerfile 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker/ubuntu-26.04-amd64/Dockerfile 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,64 @@ +# Autogenerated Dockerfile for ubuntu-26.04-amd64. +# Update data in gitlab/data.yml.j2 and gitlab/Dockerfile.j2 +# to change this file. +# Request a manual pipeline to rebuild the image here: +# https://gitlab.nic.cz/labs/bird/-/pipelines/new +FROM ubuntu:26.04 +ENV DEBIAN_FRONTEND=noninteractive +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN dpkg --add-architecture arm64 +RUN dpkg --add-architecture armhf +RUN dpkg --add-architecture ppc64el +RUN dpkg --add-architecture riscv64 +RUN dpkg --add-architecture s390x +RUN find /etc/apt/sourc* -type f -exec sed -i '/Components: /a\ +Architectures: amd64' '{}' + +RUN find /etc/apt/sourc* -type f -exec sed 's#URIs: .*#URIs: http://ports.ubuntu.com/ubuntu-ports/#;s#Architectures: amd64#Architectures: arm64,armhf,ppc64el,riscv64,s390x#' '{}' + > /etc/apt/sources.list.d/crossbuild.sources +RUN find /etc/apt/sourc* -type f -exec grep -nH '.*' '{}' + +RUN apt-get -y update +RUN apt-get -y upgrade +RUN apt-get -y --no-install-recommends install \ + tzdata \ + build-essential \ + flex \ + bison \ + autoconf \ + ncurses-dev \ + libreadline-dev \ + libssh-dev \ + crossbuild-essential-arm64 \ + libreadline-dev:arm64 \ + ncurses-dev:arm64 \ + crossbuild-essential-armhf \ + libreadline-dev:armhf \ + ncurses-dev:armhf \ + crossbuild-essential-ppc64el \ + libreadline-dev:ppc64el \ + ncurses-dev:ppc64el \ + crossbuild-essential-riscv64 \ + libreadline-dev:riscv64 \ + ncurses-dev:riscv64 \ + crossbuild-essential-s390x \ + libreadline-dev:s390x \ + ncurses-dev:s390x \ + qemu-user \ + qemu-user-binfmt \ + binfmt-support \ + linuxdoc-tools-latex \ + texlive-latex-extra \ + opensp \ + docbook-xsl \ + xsltproc \ + adduser +RUN apt-get -y --no-install-recommends install \ + git \ + dpkg-dev \ + debhelper \ + lsb-release \ + apt-utils \ + quilt \ + python3 \ + python3-pip \ + python3-setuptools \ + python3-venv +RUN apt-get -y clean diff -Nru bird3-3.1.0/gitlab/docker.mk.j2 bird3-3.1.7/gitlab/docker.mk.j2 --- bird3-3.1.0/gitlab/docker.mk.j2 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/docker.mk.j2 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,15 @@ +GITLAB_DOCKER_IMAGES := \ +{% for distro in distros -%} + $(s)docker/{{ distro.name }}/Dockerfile \ +{% endfor %} + +gitlab-docker: $(GITLAB_DOCKER_IMAGES) + +{% for distro in distros -%} +{% if distro.docker == "static" %} +$(s)docker/{{ distro.name }}/Dockerfile: $(s)docker.mk.j2 $(s)data.yml.j2 + @echo "KEEP $@ (marked as static)" + touch $@ + +{% endif %} +{% endfor %} diff -Nru bird3-3.1.0/gitlab/pipeline.py bird3-3.1.7/gitlab/pipeline.py --- bird3-3.1.0/gitlab/pipeline.py 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/pipeline.py 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,38 @@ +#!/usr/bin/env python3 + +import importlib +import jinja2 +import pathlib +import subprocess +import sys +import yaml + +# Find where we are +_, template_file, data_file, *more = sys.argv +hm = { k: v for k,v in [ x.split("=", 1) for x in more ] } + +# Crash helper +def fail(msg): + raise Exception(msg) + +# Prepare Jinja2 environment +env = jinja2.Environment(loader=jinja2.FileSystemLoader(".")) +env.globals['fail'] = fail +env.filters.update({ "to_yaml": lambda x: "" if type(x) is jinja2.runtime.Undefined else yaml.dump(x).rstrip() }) + +# Load and process input data +try: + data = yaml.safe_load(rendered := env.get_template(data_file).render({})) +except yaml.parser.ParserError as e: + print("Failed to render input data, generated output here:") + print(rendered) + raise e + +# Load the actual template +template = env.get_template(template_file) + +# Render the template +final = template.render({ **data, **hm }) + +# Produce output +print(final) diff -Nru bird3-3.1.0/gitlab/template.yml.j2 bird3-3.1.7/gitlab/template.yml.j2 --- bird3-3.1.0/gitlab/template.yml.j2 1970-01-01 00:00:00.000000000 +0000 +++ bird3-3.1.7/gitlab/template.yml.j2 2026-06-09 09:02:34.000000000 +0000 @@ -0,0 +1,687 @@ +########################################################### +##### ##### +##### DO NOT EDIT THIS FILE BY HAND ##### +##### ##### +########################################################### +##### ##### +##### This file is autogenerated from gitlab/. ##### +##### Edit those files and run `make gitlab` instead. ##### +##### ##### +########################################################### + +spec: + inputs: + netlab: + description: "Manually run netlab tests" + type: boolean + default: false + build: + description: "Manually run build tests" + type: boolean + default: false + packages: + description: "Manually run packaging (will run also build tests anyway)" + type: boolean + default: false + release-fixup: + description: "Suffix for package build (if other than 1, this is a rebuild of a release)" + type: number + default: 1 + release-desc: + description: "Package build description (change this for release rebuild)" + type: string + default: "upstream package" + docker-all: + description: "Rebuild all dockers" + type: boolean + default: false + docker-regex: + description: "Rebuild dockers matching this regex" + type: string + default: 'NOTHING' # this is another hack because of gitlab syntax quirks + docker-one: + description: "Rebuild this one docker (keep empty for none)" + type: string + default: '' + options: + - '' +{%- for docker in [ { "name": "docbuilder" } ] + distros %} + - {{ docker["name"] }} +{%- endfor %} + +--- + +variables: + DEBIAN_FRONTEND: noninteractive + LC_ALL: C.UTF-8 + GIT_STRATEGY: fetch + DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/" + IMG_BASE: registry.nic.cz/labs/bird + TOOLS_DIR: /home/gitlab-runner/bird-tools + STAYRTR_BINARY: /usr/local/bin/stayrtr + GITLAB_API_URL: ${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/ + +stages: + - consistency + - image + - build + - pkg + - install + - test + +## Common rule snippets +{%- set is_push = '($CI_PIPELINE_SOURCE == "push")' %} +{%- set is_mreq = '($CI_PIPELINE_SOURCE == "merge_request_event")' %} +{%- set is_manual = '($CI_PIPELINE_SOURCE == "web")' %} +{%- set is_api = '($CI_PIPELINE_SOURCE == "api")' %} +{%- set is_sched = '($CI_PIPELINE_SOURCE == "schedule")' %} +{%- set is_stable = '($CI_COMMIT_BRANCH =~ /' ~ stable_branch_regex ~ '/)' %} +{%- set not_stable = '($CI_COMMIT_BRANCH !~ /' ~ stable_branch_regex ~ '/)' %} + +{%- set is_release_commit = '($CI_COMMIT_MESSAGE =~ /^NEWS and version update/)' %} +{%- set is_wip = '($CI_COMMIT_MESSAGE =~ /^(fixup! )*WIP/)' %} +{%- set is_tag = '$CI_COMMIT_TAG' %} + +{%- set inputs_packages = '"$[[ inputs.packages ]]" == "true"' %} +{%- set inputs_build = '"$[[ inputs.build ]]" == "true"' %} +{%- set inputs_netlab = '"$[[ inputs.netlab ]]" == "true"' %} +{%- set inputs_docker_all = '"$[[ inputs.docker-all ]]" == "true"' %} + +workflow: + rules: + - if: '{{ is_manual }}' + variables: + wf_kind: manual + wf_prefix: '[MAN] ' + wf_desc: '$CI_COMMIT_TITLE' + PKG_RELINFO: '$[[ inputs.release-desc ]]' + PKG_FIXUP: '$[[ inputs.release-fixup ]]' + - if: '{{ is_sched }}' + variables: + wf_kind: scheduled + wf_prefix: '[SCD] ' + wf_desc: '$CI_COMMIT_TITLE' + - if: '{{ is_tag }}' + variables: + wf_kind: tag + wf_prefix: '[TAG] ' + wf_desc: '$CI_COMMIT_TAG' + - if: '{{ is_push }}' + variables: + wf_kind: regular + wf_prefix: '' + wf_desc: '$CI_COMMIT_TITLE' + - if: '{{ is_stable }} && {{ is_release_commit }}' + variables: + wf_kind: release + wf_prefix: '[RELEASE] ' + wf_desc: '$CI_COMMIT_BRANCH' + - if: '{{ is_release_commit }}' + variables: + wf_kind: release-candidate + wf_prefix: '[RC] ' + wf_desc: '$CI_COMMIT_BRANCH' + - when: always + variables: + wf_kind: unknown + wf_prefix: '[$CI_PIPELINE_SOURCE] ' + wf_desc: '$CI_COMMIT_TITLE' + + name: '$wf_prefix$wf_desc' + +# Note: We would love to just write "if: $[[ inputs.packages ]]" +# but that's impossible because the value is expected to be a string. +# +# Should be fixable by several lines in +# lib/gitlab/ci/pipeline/expression/statement.rb +# but I don't have time to do that contribution to gitlab now. + +{%- macro rule(when, yesno) -%} + - if: '{{ when }}' + when: {% if yesno %}on_success{% else %}never{% endif %} +{%- endmacro -%} + +{%- macro rdef(yesno) -%} + - when: {% if yesno %}on_success{% else %}never{% endif %} +{%- endmacro -%} + +## Default rules for regular jobs +.default-rules: +# Manual, API and Scheduled jobs have an explicit input setting. +# Do not run anything unless explicitly requested for these. + {{ rule(is_manual, False) }} + {{ rule(is_api, False) }} + {{ rule(is_sched, False) }} +# Do not run anything for WIP commits + {{ rule(is_wip, False) }} +# Tags only happen on releases, don't run full automation + {{ rule(is_tag, False) }} + {{ rdef(True) }} + +## Pipeline information dump +pipeline-infodump: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - | + echo "### Variables ###" +{%- for VAR in [ + "CI_JOB_ID", + "CI_COMMIT_SHA", + "CI_COMMIT_BRANCH", + "CI_COMMIT_TAG", + "CI_COMMIT_TITLE", + "CI_COMMIT_MESSAGE", + "CI_PIPELINE_SOURCE", + "CI_MERGE_REQUEST_IID", + "GITLAB_API_URL", + "wf_kind", +] %} + echo "\${{ VAR }} = ${{ VAR }}" +{%- endfor %} + echo + echo "### Inputs ###" + echo "Netlab: $[[ inputs.netlab ]]" + echo "Build: $[[ inputs.build ]]" + echo "Packages: $[[ inputs.packages ]]" + echo "Docker all: $[[ inputs.docker-all ]]" + echo "Docker regex: $[[ inputs.docker-regex ]]" + echo "Docker one: $[[ inputs.docker-one ]]" + +## Pipeline consistency check +pipeline-uptodate: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - autoreconf -i + - ./configure + - touch gitlab/template.yml.j2 + - make gitlab-venv + - git status --porcelain + - git diff --exit-code + rules: + - !reference [ .default-rules ] + +## Build Docker consistency check +docker-uptodate: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - autoreconf -i + - ./configure + - touch gitlab/data.yml.j2 + - make gitlab-docker VENV=1 + - touch gitlab/docker/docbuilder/Dockerfile # Docbuilder is a static image, not rebuilt by the templates + - find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 + - '[ "`find gitlab/docker/ -type f -not -newer gitlab/data.yml.j2 | wc -l`" == "0" ]' + - git status --porcelain + - git diff --exit-code + rules: + - !reference [ .default-rules ] + +## Consistency checks for stable branches +commit-messages: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - tools/git-check-commits + rules: + {{ rule(is_stable, True) }} + {{ rule(is_release_commit, True) }} + {{ rdef(False) }} + +## Tag check +tag-collect: + stage: consistency + image: registry.nic.cz/labs/bird:docbuilder + script: + - python3 -m venv venv + - . venv/bin/activate + - pip3 install requests + - tools/git-check-tag-local $CI_COMMIT_TAG + - tools/git-check-tag-ci $CI_COMMIT_SHA + artifacts: + paths: + - obj/doc/bird-singlepage.html + - obj/doc/prog-singlepage.html + - bird-*.tar.gz + - pkg/pkgs/* + - pkg/srcpkgs/* + rules: + {{ rule(is_tag, True) }} + {{ rdef(False) }} + +############################ +## Docker builder rebuild ## +############################ +# We are running all the build / packaging tests in Dockers (unless otherwise) +# and these are rules to build these docker images. These are expensive to run +# and should run only if needed. +# +# Modify the appropriate dockerfile to rebuild these images + +.docker: &docker-build + stage: image + needs: [] # docker-uptodate maybe? + script: + - $DOCKER_CMD login -u gitlab-ci-token -p $CI_JOB_TOKEN registry.nic.cz + # Make sure we refresh the base image if it updates (eg. security updates, etc) + # If we do just the build, cache is always reused and the freshness of the + # base image is never checked. However, pull always asks and updates the + # image only if it changed ‒ therefore, the cache is used unless there's a + # change. + - $DOCKER_CMD pull `sed -ne 's/^FROM //p' "gitlab/docker/$IMG_NAME/Dockerfile"` + - $DOCKER_CMD build -t "bird:$IMG_NAME" "gitlab/docker/$IMG_NAME" + - $DOCKER_CMD tag "bird:$IMG_NAME" "$IMG_BASE:$IMG_NAME" + - $DOCKER_CMD push "$IMG_BASE:$IMG_NAME" + after_script: + - rm -rf "$HOME/.docker/$CI_JOB_ID/" # cleanup the credentials + tags: + # That's Docker in Docker + - dind + +{% for docker in [ { "name": "docbuilder" } ] + distros %} +docker-{{ docker["name"] }}: + variables: + IMG_NAME: "{{ docker["name"] }}" + + rules: + # Only rebuild if explicitly requested + - if: '{{ inputs_docker_all }}' + - if: '"{{ docker["name"] }}" =~ /$[[ inputs.docker-regex ]]/' + - if: '"{{ docker["name"] }}" == "$[[ inputs.docker-one ]]"' + {{ rdef(False) }} + + <<: *docker-build +{% endfor %} + +##################################################### +## Linux distro build tests inside Docker builders ## +##################################################### + +## Build stage +# +# Now we compile and run unit tests ... in every single distribution. +# Every task needs its docker, see above. + +.build-base-rules: + - if: '{{ inputs_build }}' + - if: '{{ inputs_packages }}' + - !reference [ .default-rules ] + + +.build: &build-base + stage: build + rules: + - !reference [ .build-base-rules ] + script: + - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi + - tools/version && ( echo -n "BIRD version "; tools/version ) > version-expected + - | + STABLE_VERSION="`cat VERSION`" + if [ "$CI_COMMIT_MESSAGE" == "NEWS and version update + " ] || [ "$[[ inputs.release-fixup ]]" -gt "1" ]; then + if [ "${STABLE_VERSION}" == "`tools/version`" ]; then + echo "Stable version precheck OK" + else + echo "Stable version discrepancy: $STABLE_VERSION vs. $(tools/version)" + exit 1 + fi + else + if grep -qF "BIRD version ${STABLE_VERSION}+branch" version-expected; then + true + else + echo -n "Commit $CI_COMMIT_SHA message $CI_COMMIT_MESSAGE expects version " + cat version-expected + exit 1 + fi + fi + - | + if [ -n "$CROSSBUILD_ARCH" ]; then + dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh + . crossbuild.sh + export CONFIGURE_OPTIONS="--host=${DEB_TARGET_GNU_TYPE} ${CONFIGURE_OPTIONS}" + export CROSS_RUN=qemu-${CROSSBUILD_ARCH} + fi + - | + case $CROSSBUILD_ARCH in + armel) LIBS="$LIBS -latomic" ;; + esac + - autoreconf + - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" LIBS="$LIBS" ${CONFIGURE_OPTIONS} + # Detect which make is available + - MAKE=make + - which gmake 2>/dev/null >/dev/null && MAKE=gmake + - $MAKE -j1 VERBOSE=1 + - $MAKE -j1 VERBOSE=1 TEST_RETRY_VERBOSE=1 check + # Build docs when tools are available + - if which linuxdoc pdflatex sgmlsasp >/dev/null ; then $MAKE docs ; fi + # Check that the reported version is the right one + - ${CROSS_RUN} ./bird --version |& grep -v 'Cannot disable transparent huge pages' | tee obj/version-built + - diff obj/version-built version-expected + +.build-docker-linux-amd64: &build-docker-linux-amd64 + <<: *build-base + tags: + - docker + - linux + - amd64 + +{% for dist in distros %} +build-{{dist["name"]}}: + <<: *build-docker-linux-amd64 + needs: + - job: docker-{{ dist["name"] }} + optional: true + image: registry.nic.cz/labs/bird:{{ dist["name"] }} +{%- if 'variables' in dist %} + variables: +{{ dist["variables"] | to_yaml | indent(4, true) }} +{%- endif %} +{%- if "crossarch" in dist %} +{% for ca in dist.crossarch %} +crossbuild-{{ ca }}-{{ dist["name"] }}: + <<: *build-docker-linux-amd64 + needs: + - job: docker-{{ dist["name"] }} + optional: true + image: registry.nic.cz/labs/bird:{{ dist["name"] }} + variables: + CROSSBUILD_ARCH: {{ ca }} +{%- if 'variables' in dist %} +{{ dist["variables"] | to_yaml | indent(4, true) }} +{%- endif %} +{% endfor %} +{%- endif %} +{% endfor %} + +####################################################### +## A special task for preparing the release archives ## +####################################################### +build-release: + image: registry.nic.cz/labs/bird:docbuilder + needs: + - job: docker-docbuilder + optional: true + stage: build + tags: + - docker + - linux + script: + - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi + - autoreconf + - ./configure --with-protocols= --disable-client + - make obj/doc/bird-singlepage.html obj/doc/prog-singlepage.html + - if grep '

PARSER FAILED ' obj/doc/bird-singlepage.html obj/doc/prog-singlepage.html; then echo "Documentation build is broken!"; false; fi
+    - tools/make-archive
+  artifacts:
+    paths:
+      - obj/doc/bird-singlepage.html
+      - obj/doc/prog-singlepage.html
+      - bird-*.tar.gz
+    expire_in: 1 day
+  rules: !reference [ .build-base-rules ]
+
+# Packaging rules
+# As we support some ancient versions of different distributions,
+# we need to keep several different machineries. It's not so bad
+# but it's bad nevertheless.
+#
+# We do NOT build separate documentation packages in these rules.
+
+.pkg-base: &pkg-base
+  rules:
+  - if: '{{ inputs_packages }}'
+  {{ rule(is_tag, False) }}
+  {{ rule(is_release_commit, True) }}
+  {{ rule(not_stable, False) }}
+  - !reference [ .default-rules ]
+
+.pkg-deb: &pkg-deb
+  <<: *pkg-base
+  stage: pkg
+  script:
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+    - tools/make-deb
+  artifacts:
+    paths:
+      - pkg/pkgs/*
+      - pkg/srcpkgs/*
+
+.pkg-rpm: &pkg-rpm
+  <<: *pkg-base
+  stage: pkg
+  script:
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+    - STABLE_BUILDDIR=true tools/make-rpm
+  artifacts:
+    paths:
+      - pkg/pkgs/*
+      - pkg/srcpkgs/*
+
+
+{% for dist in distros %}
+pkg-{{ dist["name"] }}:
+  <<: *pkg-{{ dist["type"] }}
+  needs:
+    - job: build-{{ dist["name"] }}
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+{%- if 'variables' in dist %}
+  variables:
+{{ dist["variables"] | to_yaml | indent(4, true) }}
+{%- endif %}
+{%- if "crossarch" in dist %}
+{% for ca in dist.crossarch %}
+crosspkg-{{ ca }}-{{ dist["name"] }}:
+  <<: *pkg-{{ dist["type"] }}
+  needs:
+    - job: crossbuild-{{ ca }}-{{ dist["name"] }}
+      artifacts: false
+    - job: build-release
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+    CROSSBUILD_ARCH: {{ ca }}
+{%- if 'variables' in dist %}
+{{ dist["variables"] | to_yaml | indent(4, true) }}
+{%- endif %}
+{% endfor %}
+{%- endif %}
+{% endfor %}
+
+## Package installability checks
+
+.install-deb: &install-deb
+  <<: *pkg-base
+  stage: install
+  script:
+    # setup crossbuild architecture
+    - |
+      if [ -n "$CROSSBUILD_ARCH" ]; then
+        dpkg-architecture -A $CROSSBUILD_ARCH > crossbuild.sh
+        . crossbuild.sh
+        export CROSS_RUN=qemu-${CROSSBUILD_ARCH}
+      fi
+    # check that bird is _not_ installed now and no user or group bird exists
+    - |
+      if bird --version >/dev/null 2>&1; then
+        echo "Error: BIRD unexpectedly installed"
+        exit 1
+      fi
+      if id -g bird >/dev/null 2>&1; then
+        echo "Error: User group 'bird' unexpectedly exist before installation"
+        exit 1
+      fi
+      if id -u bird >/dev/null 2>&1; then
+        echo "Error: User 'bird' unexpectedly exist before installation"
+        exit 1
+      fi
+    # install packages
+    - find pkg/pkgs/ -type f -name '*.deb' '(' -ls -exec dpkg -i '{}' ';' ')'
+    # test that installation is successful
+    - ./tools/test-install "$CI_COMMIT_MESSAGE"
+
+.install-rpm: &install-rpm
+  <<: *pkg-base
+  stage: install
+  script:
+    # check that bird is _not_ installed now and no user or group bird exists
+    - |
+      if bird --version >/dev/null 2>&1; then
+        echo "Error: BIRD unexpectedly installed"
+        exit 1
+      fi
+      if id -g bird >/dev/null 2>&1; then
+        echo "Error: User group 'bird' exist before installation"
+        exit 1
+      fi
+      if id -u bird >/dev/null 2>&1; then
+        echo "Error: User 'bird' exist before installation"
+        exit 1
+      fi
+    # install packages
+    - find pkg/pkgs/ -type f -name '*.rpm' '(' -ls -exec $RPM_INSTALL_CMD '{}' ';' ')'
+    # test that installation is successful
+    - ./tools/test-install "$CI_COMMIT_MESSAGE"
+
+{% for dist in distros %}
+install-{{ dist["name"] }}:
+  <<: *install-{{ dist["type"] }}
+  needs:
+    - job: pkg-{{ dist["name"] }}
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+{%- if dist["name"][:12] == "opensuse-16." %}
+    RPM_INSTALL_CMD: zypper --non-interactive --no-gpg-checks in
+{%- elif dist["type"] == "rpm" %}
+    RPM_INSTALL_CMD: rpm -i
+{%- endif %}
+
+{%- for ca in dist.crossarch %}
+crossinstall-{{ ca }}-{{ dist["name"] }}:
+  <<: *install-{{ dist["type"] }}
+  needs:
+    - job: crosspkg-{{ ca }}-{{ dist["name"] }}
+  image: registry.nic.cz/labs/bird:{{ dist["name"] }}
+  variables:
+{%- if dist["name"][:12] == "opensuse-16." %}
+    RPM_INSTALL_CMD: zypper --non-interactive --no-gpg-checks in
+{%- elif dist["type"] == "rpm" %}
+    RPM_INSTALL_CMD: rpm -i
+{%- endif %}
+    CROSSBUILD_ARCH: {{ ca }}
+{%- endfor %}
+{% endfor %}
+
+###################################
+## Non-linux build tests in QEMU ##
+###################################
+.build-birdlab-base: &build-birdlab-base
+  <<: *build-base
+  stage: build
+  needs: []
+#  script:
+#    - export BRANCH=$CI_COMMIT_BRANCH
+#    - autoreconf
+#    - ./configure $CONFIGURE_OPTIONS
+#    - gmake
+#    - gmake check
+
+{% for test in birdlab %}
+build-birdlab-{{ test['name'] }}:
+  <<: *build-birdlab-base
+{%- if 'variables' in test %}
+  variables:
+{{ test['variables'] | to_yaml | indent(4, true) }}{%- endif %}
+  tags:
+    - birdlab-{{ test['dist'] if 'dist' in test else test['name'] }}
+    - amd64
+{% endfor %}
+
+#########################
+## Partial build tests ##
+#########################
+
+.build-only: &build-only
+  <<: *build-docker-linux-amd64
+  image: registry.nic.cz/labs/bird:{{ partial_build_image["name"] }}
+  needs:
+    - job: docker-{{ partial_build_image["name"] }}
+      optional: true
+
+{% for test in partial_build %}
+partial-build-linux-{{ test["protocols"] }}:
+  <<: *build-only
+  variables:
+    CONFIGURE_OPTIONS: --with-protocols={{ test["protocols"] }}
+{% endfor %}
+
+################################
+## Netlab functionality tests ##
+################################
+
+.netlab-rules: &netlab-rules
+  rules:
+    - if: '{{ inputs_netlab }}'
+    - !reference [ .default-rules ]
+
+build-netlab:
+  <<: *netlab-rules
+  stage: build
+  needs: []
+  variables:
+    BDIR: build-netlab
+  tags:
+    - netlab
+    - amd64
+  script:
+    - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
+    - autoreconf
+    - mkdir $BDIR
+    - cd $BDIR
+    - ../configure
+    - make
+  artifacts:
+    paths:
+      - $BDIR/bird
+      - $BDIR/birdc
+    expire_in: 2 hours
+
+.netlab-test: &test-base
+  <<: *netlab-rules
+  stage: test
+  needs: [build-netlab]
+  tags:
+    - netlab
+    - amd64
+  script:
+    - sudo rm -rf netlab-failure
+    - DIR=$(pwd)
+    - cd $TOOLS_DIR
+    - sudo git clean -fx
+    - sudo git checkout -f master
+    - git pull --ff-only
+    - "mv $DIR/build-netlab/* netlab/common/"
+    - ln -s $STAYRTR_BINARY netlab/common/stayrtr
+    - cd netlab
+    - sudo ./stop
+    - ulimit -f 1048576 # Protect the filesystem from overflowing by log bloat
+    - sudo ./runtest -s v3 -m check $TEST_NAME
+  after_script:
+    - DIR=$(pwd)
+    - cd $TOOLS_DIR/netlab
+    - sudo ./stop || echo "Stop failed"
+    - "mkdir -p $DIR/netlab-failure"
+    - git status --porcelain > $DIR/netlab-failure.log
+    - for f in $(git status --porcelain | sed -rn 's#^.[^DRT] netlab/##p'); do mkdir -p $DIR/netlab-failure/$(dirname $f); sudo chmod a+rw $f; sudo mv $f $DIR/netlab-failure/$(dirname $f); done
+  artifacts:
+    when: on_failure
+    untracked: true
+
+{% for test in netlab %}
+test-{{ test["name"] }}:
+  <<: *test-base
+  variables:
+    TEST_NAME: cf-{{ test["name"] }}
+{% endfor %}
diff -Nru bird3-3.1.0/lib/a-path.c bird3-3.1.7/lib/a-path.c
--- bird3-3.1.0/lib/a-path.c	2025-04-03 18:51:25.000000000 +0000
+++ bird3-3.1.7/lib/a-path.c	2026-06-09 09:02:34.000000000 +0000
@@ -177,6 +177,27 @@
   return 0;
 }
 
+int
+as_path_contains_set(const struct adata *path)
+{
+  const byte *pos = path->data;
+  const byte *end = pos + path->length;
+
+  while (pos < end)
+  {
+    uint type = pos[0];
+    uint slen = 2 + BS * pos[1];
+
+    if ((type == AS_PATH_SET) ||
+	(type == AS_PATH_CONFED_SET))
+      return 1;
+
+    pos += slen;
+  }
+
+  return 0;
+}
+
 struct adata *
 as_path_strip_confed(struct linpool *pool, const struct adata *path)
 {
@@ -882,7 +903,8 @@
 int
 as_path_match(const struct adata *path, const struct f_path_mask *mask)
 {
-  struct pm_pos pos[2048 + 1];
+  struct pm_pos *pos = tmp_alloc((sizeof *pos) * (path->length / BS + 1));
+
   int plen = parse_path(path, pos);
   int l, h, i, nh, nl, last, loop;
   u32 val = 0;
diff -Nru bird3-3.1.0/lib/attrs.h bird3-3.1.7/lib/attrs.h
--- bird3-3.1.0/lib/attrs.h	2025-04-03 18:51:42.000000000 +0000
+++ bird3-3.1.7/lib/attrs.h	2026-06-09 09:02:34.000000000 +0000
@@ -69,6 +69,7 @@
 int as_path_32to16(byte *dst, const byte *src, uint len);
 int as_path_contains_as4(const struct adata *path);
 int as_path_contains_confed(const struct adata *path);
+int as_path_contains_set(const struct adata *path);
 struct adata *as_path_strip_confed(struct linpool *pool, const struct adata *op);
 struct adata *as_path_prepend2(struct linpool *pool, const struct adata *op, int seq, u32 as);
 struct adata *as_path_to_old(struct linpool *pool, const struct adata *path);
diff -Nru bird3-3.1.0/lib/blake2-impl.h bird3-3.1.7/lib/blake2-impl.h
--- bird3-3.1.0/lib/blake2-impl.h	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/blake2-impl.h	2026-06-09 09:02:34.000000000 +0000
@@ -5,7 +5,7 @@
  *
  *	Copyright 2012, Samuel Neves 
  *
- *	You may use this under the terms of the CC0, the OpenSSL Licence, or the
+ *	You may use this under the terms of the CC0, the OpenSSL License, or the
  *	Apache Public License 2.0, at your option.  The terms of these licenses
  *	can be found at:
  *
diff -Nru bird3-3.1.0/lib/blake2-kat.h bird3-3.1.7/lib/blake2-kat.h
--- bird3-3.1.0/lib/blake2-kat.h	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/blake2-kat.h	2026-06-09 09:02:34.000000000 +0000
@@ -5,7 +5,7 @@
  *
  *	Copyright 2012, Samuel Neves 
  *
- *	You may use this under the terms of the CC0, the OpenSSL Licence, or the
+ *	You may use this under the terms of the CC0, the OpenSSL License, or the
  *	Apache Public License 2.0, at your option.  The terms of these licenses
  *	can be found at:
  *
diff -Nru bird3-3.1.0/lib/blake2.h bird3-3.1.7/lib/blake2.h
--- bird3-3.1.0/lib/blake2.h	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/blake2.h	2026-06-09 09:02:34.000000000 +0000
@@ -5,7 +5,7 @@
  *
  *	Copyright 2012, Samuel Neves 
  *
- *	You may use this under the terms of the CC0, the OpenSSL Licence, or the
+ *	You may use this under the terms of the CC0, the OpenSSL License, or the
  *	Apache Public License 2.0, at your option.  The terms of these licenses
  *	can be found at:
  *
diff -Nru bird3-3.1.0/lib/blake2b.c bird3-3.1.7/lib/blake2b.c
--- bird3-3.1.0/lib/blake2b.c	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/blake2b.c	2026-06-09 09:02:34.000000000 +0000
@@ -5,7 +5,7 @@
  *
  *	Copyright 2012, Samuel Neves 
  *
- *	You may use this under the terms of the CC0, the OpenSSL Licence, or the
+ *	You may use this under the terms of the CC0, the OpenSSL License, or the
  *	Apache Public License 2.0, at your option.  The terms of these licenses
  *	can be found at:
  *
diff -Nru bird3-3.1.0/lib/blake2s.c bird3-3.1.7/lib/blake2s.c
--- bird3-3.1.0/lib/blake2s.c	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/blake2s.c	2026-06-09 09:02:34.000000000 +0000
@@ -5,7 +5,7 @@
  *
  *	Copyright 2012, Samuel Neves 
  *
- *	You may use this under the terms of the CC0, the OpenSSL Licence, or the
+ *	You may use this under the terms of the CC0, the OpenSSL License, or the
  *	Apache Public License 2.0, at your option.  The terms of these licenses
  *	can be found at:
  *
diff -Nru bird3-3.1.0/lib/event.c bird3-3.1.7/lib/event.c
--- bird3-3.1.0/lib/event.c	2025-04-03 18:51:25.000000000 +0000
+++ bird3-3.1.7/lib/event.c	2026-06-09 09:02:34.000000000 +0000
@@ -236,7 +236,9 @@
 inline void
 ev_send(event_list *l, event *e)
 {
+  ASSERT_DIE(e->hook);
   edlog(l, e, NULL, 1, EDL_SEND);
+
   /* Set the target list */
   event_list *ol = NULL;
   if (!atomic_compare_exchange_strong_explicit(
@@ -334,6 +336,8 @@
 
       /* Run the event */
       e->hook(e->data);
+
+      ASSERT_DIE(!rcu_read_active());
       tmp_flush();
 
       edlog(l, e, next, 8, EDL_RUN_LIST);
diff -Nru bird3-3.1.0/lib/hash.h bird3-3.1.7/lib/hash.h
--- bird3-3.1.0/lib/hash.h	2025-04-03 18:51:25.000000000 +0000
+++ bird3-3.1.7/lib/hash.h	2026-06-09 09:02:34.000000000 +0000
@@ -177,10 +177,12 @@
 #define HASH_WALK(v,next,n)						\
   do {									\
     HASH_TYPE(v) *n;							\
+    const uint _count = (v).count;					\
     uint _i;								\
     uint _s = HASH_SIZE(v);						\
     for (_i = 0; _i < _s; _i++)						\
-      for (n = (v).data[_i]; n; n = n->next)
+      for (n = (v).data[_i]; n;						\
+	  ({ASSERT_DIE(v.count == _count);}), n = n->next)
 
 #define HASH_WALK_END } while (0)
 
@@ -188,10 +190,12 @@
 #define HASH_WALK_DELSAFE(v,next,n)					\
   do {									\
     HASH_TYPE(v) *n, *_next;						\
+    const uint _order = (v).order;					\
     uint _i;								\
     uint _s = HASH_SIZE(v);						\
     for (_i = 0; _i < _s; _i++)						\
-      for (n = (v).data[_i]; n && (_next = n->next, 1); n = _next)
+      for (n = (v).data[_i]; n && (_next = n->next, 1);			\
+	 ({ASSERT_DIE((v).order == _order);}), n = _next)
 
 #define HASH_WALK_DELSAFE_END } while (0)
 
@@ -199,10 +203,13 @@
 #define HASH_WALK_FILTER(v,next,n,nn)					\
   do {									\
     HASH_TYPE(v) *n, **nn;						\
+    const uint _order = (v).order;					\
     uint _i;								\
     uint _s = HASH_SIZE(v);						\
     for (_i = 0; _i < _s; _i++)						\
-      for (nn = (v).data + _i; n = *nn; (*nn == n) ? (nn = &n->next) : NULL)
+      for (nn = (v).data + _i; n = *nn;					\
+	  ({ASSERT_DIE((v).order == _order);}),				\
+	  (*nn == n) ? (nn = &n->next) : NULL)
 
 #define HASH_WALK_FILTER_END } while (0)
 
@@ -507,7 +514,7 @@
 mem_hash_mix_str(u64 *h, const char *s)
 {
   const u64 multiplier = 0xb38bc09a61202731ULL;
-  while (s)
+  while (*s)
     *h = *h * multiplier + *s++;
 }
 
diff -Nru bird3-3.1.0/lib/hash_test.c bird3-3.1.7/lib/hash_test.c
--- bird3-3.1.0/lib/hash_test.c	2025-04-03 18:51:25.000000000 +0000
+++ bird3-3.1.7/lib/hash_test.c	2026-06-09 09:02:34.000000000 +0000
@@ -40,10 +40,9 @@
 static void
 print_rate_of_fulfilment(void)
 {
-  int i;
   int num_stacked_items = 0;
 
-  for (i = 0; i < MAX_NUM; i++)
+  for (size_t i = 0; i < HASH_SIZE(hash); i++)
     if (!hash.data[i])
       num_stacked_items++;
 
diff -Nru bird3-3.1.0/lib/ip_test.c bird3-3.1.7/lib/ip_test.c
--- bird3-3.1.0/lib/ip_test.c	2024-12-17 13:44:48.000000000 +0000
+++ bird3-3.1.7/lib/ip_test.c	2026-06-09 09:02:34.000000000 +0000
@@ -237,22 +237,22 @@
   ip6_addr a = ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449);
 
   struct { int n; ip6_addr val; } test_vectors[] = {
-      0, ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449),
-      9, ip6_build(0x1B17B83E, 0x09B725CA, 0x22ECE6E1, 0xCA889200),
-     18, ip6_build(0x2F707C13, 0x6E4B9445, 0xD9CDC395, 0x11240000),
-     27, ip6_build(0xE0F826DC, 0x97288BB3, 0x9B872A22, 0x48000000),
-     36, ip6_build(0xF04DB92E, 0x51176737, 0x0E544490, 0x00000000),
-     45, ip6_build(0x9B725CA2, 0x2ECE6E1C, 0xA8892000, 0x00000000),
-     54, ip6_build(0xE4B9445D, 0x9CDC3951, 0x12400000, 0x00000000),
-     63, ip6_build(0x7288BB39, 0xB872A224, 0x80000000, 0x00000000),
-     72, ip6_build(0x11767370, 0xE5444900, 0x00000000, 0x00000000),
-     81, ip6_build(0xECE6E1CA, 0x88920000, 0x00000000, 0x00000000),
-     90, ip6_build(0xCDC39511, 0x24000000, 0x00000000, 0x00000000),
-     99, ip6_build(0x872A2248, 0x00000000, 0x00000000, 0x00000000),
-    108, ip6_build(0x54449000, 0x00000000, 0x00000000, 0x00000000),
-    117, ip6_build(0x89200000, 0x00000000, 0x00000000, 0x00000000),
-    126, ip6_build(0x40000000, 0x00000000, 0x00000000, 0x00000000),
-    128, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000000),
+    {   0, ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449) },
+    {   9, ip6_build(0x1B17B83E, 0x09B725CA, 0x22ECE6E1, 0xCA889200) },
+    {  18, ip6_build(0x2F707C13, 0x6E4B9445, 0xD9CDC395, 0x11240000) },
+    {  27, ip6_build(0xE0F826DC, 0x97288BB3, 0x9B872A22, 0x48000000) },
+    {  36, ip6_build(0xF04DB92E, 0x51176737, 0x0E544490, 0x00000000) },
+    {  45, ip6_build(0x9B725CA2, 0x2ECE6E1C, 0xA8892000, 0x00000000) },
+    {  54, ip6_build(0xE4B9445D, 0x9CDC3951, 0x12400000, 0x00000000) },
+    {  63, ip6_build(0x7288BB39, 0xB872A224, 0x80000000, 0x00000000) },
+    {  72, ip6_build(0x11767370, 0xE5444900, 0x00000000, 0x00000000) },
+    {  81, ip6_build(0xECE6E1CA, 0x88920000, 0x00000000, 0x00000000) },
+    {  90, ip6_build(0xCDC39511, 0x24000000, 0x00000000, 0x00000000) },
+    {  99, ip6_build(0x872A2248, 0x00000000, 0x00000000, 0x00000000) },
+    { 108, ip6_build(0x54449000, 0x00000000, 0x00000000, 0x00000000) },
+    { 117, ip6_build(0x89200000, 0x00000000, 0x00000000, 0x00000000) },
+    { 126, ip6_build(0x40000000, 0x00000000, 0x00000000, 0x00000000) },
+    { 128, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000000) },
   };
 
   for (uint i = 0; i < ARRAY_SIZE(test_vectors); i++)
@@ -267,22 +267,22 @@
   ip6_addr a = ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449);
 
   struct { int n; ip6_addr val; } test_vectors[] = {
-      0, ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449),
-      9, ip6_build(0x004686C5, 0xEE0F826D, 0xC97288BB, 0x39B872A2),
-     18, ip6_build(0x00002343, 0x62F707C1, 0x36E4B944, 0x5D9CDC39),
-     27, ip6_build(0x00000011, 0xA1B17B83, 0xE09B725C, 0xA22ECE6E),
-     36, ip6_build(0x00000000, 0x08D0D8BD, 0xC1F04DB9, 0x2E511767),
-     45, ip6_build(0x00000000, 0x0004686C, 0x5EE0F826, 0xDC97288B),
-     54, ip6_build(0x00000000, 0x00000234, 0x362F707C, 0x136E4B94),
-     63, ip6_build(0x00000000, 0x00000001, 0x1A1B17B8, 0x3E09B725),
-     72, ip6_build(0x00000000, 0x00000000, 0x008D0D8B, 0xDC1F04DB),
-     81, ip6_build(0x00000000, 0x00000000, 0x00004686, 0xC5EE0F82),
-     90, ip6_build(0x00000000, 0x00000000, 0x00000023, 0x4362F707),
-     99, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x11A1B17B),
-    108, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x0008D0D8),
-    117, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000468),
-    126, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000002),
-    128, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000000),
+    {   0, ip6_build(0x8D0D8BDC, 0x1F04DB92, 0xE5117673, 0x70E54449) },
+    {   9, ip6_build(0x004686C5, 0xEE0F826D, 0xC97288BB, 0x39B872A2) },
+    {  18, ip6_build(0x00002343, 0x62F707C1, 0x36E4B944, 0x5D9CDC39) },
+    {  27, ip6_build(0x00000011, 0xA1B17B83, 0xE09B725C, 0xA22ECE6E) },
+    {  36, ip6_build(0x00000000, 0x08D0D8BD, 0xC1F04DB9, 0x2E511767) },
+    {  45, ip6_build(0x00000000, 0x0004686C, 0x5EE0F826, 0xDC97288B) },
+    {  54, ip6_build(0x00000000, 0x00000234, 0x362F707C, 0x136E4B94) },
+    {  63, ip6_build(0x00000000, 0x00000001, 0x1A1B17B8, 0x3E09B725) },
+    {  72, ip6_build(0x00000000, 0x00000000, 0x008D0D8B, 0xDC1F04DB) },
+    {  81, ip6_build(0x00000000, 0x00000000, 0x00004686, 0xC5EE0F82) },
+    {  90, ip6_build(0x00000000, 0x00000000, 0x00000023, 0x4362F707) },
+    {  99, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x11A1B17B) },
+    { 108, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x0008D0D8) },
+    { 117, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000468) },
+    { 126, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000002) },
+    { 128, ip6_build(0x00000000, 0x00000000, 0x00000000, 0x00000000) },
   };
 
   for (uint i = 0; i < ARRAY_SIZE(test_vectors); i++)
diff -Nru bird3-3.1.0/lib/locking.h bird3-3.1.7/lib/locking.h
--- bird3-3.1.0/lib/locking.h	2025-04-03 18:51:42.000000000 +0000
+++ bird3-3.1.7/lib/locking.h	2026-06-09 09:02:34.000000000 +0000
@@ -22,6 +22,7 @@
   control, \
   proto, \
   service, \
+  bgp_listen, \
   rtable, \
   attrs, \
   logging, \
@@ -521,6 +522,7 @@
     }									\
   }									\
   _i->locking_stack = locking_stack;					\
+  ASSERT_DIE(!rcu_read_active());					\
   rcu_read_lock();							\
 
 #define RCU_RETRY(_i) do { if (_i) { _i->file = __FILE__; _i->line = __LINE__; longjmp(_i->buf, 1); } else bug("No rcu retry allowed here"); } while (0)
diff -Nru bird3-3.1.0/lib/netindex.c bird3-3.1.7/lib/netindex.c
--- bird3-3.1.0/lib/netindex.c	2025-04-03 18:51:25.000000000 +0000
+++ bird3-3.1.7/lib/netindex.c	2026-06-09 09:02:34.000000000 +0000
@@ -298,9 +298,13 @@
 struct netindex *
 net_find_index(netindex_hash *h, const net_addr *n)
 {
-  RCU_ANCHOR(u);
+  rcu_read_lock();
+
   struct netindex *ni = net_find_index_fragile(h, n);
-  return (ni && net_validate_index(h, ni)) ? net_lock_revive_unlock(h, ni) : NULL;
+  struct netindex *nv = (ni && net_validate_index(h, ni)) ? net_lock_revive_unlock(h, ni) : NULL;
+
+  rcu_read_unlock();
+  return nv;
 }
 
 struct netindex *
@@ -322,17 +326,20 @@
 struct netindex *
 net_resolve_index(netindex_hash *h, u32 i)
 {
-  RCU_ANCHOR(u);
+  rcu_read_lock();
 
   struct netindex * _Atomic *block = atomic_load_explicit(&h->block, memory_order_relaxed);
   u32 bs = atomic_load_explicit(&h->block_size, memory_order_relaxed);
 
   if (i >= bs)
+  {
+    rcu_read_unlock();
     return &net_index_out_of_range;
+  }
 
   struct netindex *ni = atomic_load_explicit(&block[i], memory_order_acquire);
-  if (ni == NULL)
-    return NULL;
+  struct netindex *nv = ni ? net_lock_revive_unlock(h, ni) : NULL;
 
-  return net_lock_revive_unlock(h, ni);
+  rcu_read_unlock();
+  return nv;
 }
diff -Nru bird3-3.1.0/lib/resource.sgml bird3-3.1.7/lib/resource.sgml
--- bird3-3.1.0/lib/resource.sgml	2022-03-02 09:29:17.000000000 +0000
+++ bird3-3.1.7/lib/resource.sgml	2026-06-09 09:02:34.000000000 +0000
@@ -5,8 +5,10 @@
 -->
 
 Resources
+