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