Version in base suite: 2.17.1-1+deb13u2 Base version: bird2_2.17.1-1+deb13u2 Target version: bird2_2.17.5-0+deb13u1 Base file: /srv/ftp-master.debian.org/ftp/pool/main/b/bird2/bird2_2.17.1-1+deb13u2.dsc Target file: /srv/ftp-master.debian.org/policy/pool/main/b/bird2/bird2_2.17.5-0+deb13u1.dsc .gitignore | 1 .gitlab-ci.yml | 2311 + CONTRIBUTING.md | 2 ChangeLog |33830 -------------------------- Makefile.in | 69 NEWS | 23 README | 33 VERSION | 2 bird.conf | 58 conf/confbase.Y | 4 conf/flowspec.Y | 16 configure | 8182 ------ configure.ac | 10 debian/changelog | 6 debian/gbp.conf | 11 debian/patches/backport-01-8f5b2196 | 28 debian/patches/backport-02-067f361d | 88 debian/patches/backport-03-f8770e81 | 25 debian/patches/backport-04-c4d54c21 | 68 debian/patches/backport-05-1867ffa | 26 debian/patches/backport-06-9c7d028 | 19 debian/patches/backport-07-cad5353 | 22 debian/patches/backport-08-b143f6e | 19 debian/patches/backport-09-f7eb6f1 | 24 debian/patches/backport-10-87a77ae | 35 debian/patches/backport-11-3c83997 | 35 debian/patches/backport-12-de64c80 | 32 debian/patches/backport-13-b4e228d | 52 debian/patches/backport-14-4be9672 | 63 debian/patches/backport-15-650e2fa | 100 debian/patches/backport-16-3beb709 | 97 debian/patches/backport-17-954b305 | 31 debian/patches/series | 17 distro/README.md | 67 distro/config/apkg.toml | 12 distro/pkg/deb/bird.xml | 2 distro/pkg/deb/changelog | 4 distro/pkg/deb/control | 6 distro/pkg/deb/copyright | 2 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 | 5 doc/bird.conf.example | 2 doc/bird.sgml | 39 doc/kernel-doc | 8 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/test.conf | 120 gitlab/Dockerfile.j2 | 107 gitlab/Makefile | 47 gitlab/README.md | 149 gitlab/data.yml.j2 | 237 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 | 60 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 | 39 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 | 683 lib/flowspec.c | 423 lib/flowspec.h | 15 lib/flowspec_test.c | 465 lib/hash.h | 2 lib/mac.c | 4 lib/resource.sgml | 2 lib/sha1.h | 4 misc/Makefile | 7 misc/bird.init | 97 misc/cisco2list | 20 misc/ips.c | 96 misc/stats | 9 nest/a-path.c | 24 nest/attrs.h | 1 nest/proto.sgml | 4 nest/rt-attr.c | 1 nest/rt-table.c | 194 proto/bgp/bgp.c | 23 proto/bgp/packets.c | 9 proto/bmp/bmp.h | 4 proto/bmp/config.Y | 4 proto/ospf/config.Y | 2 proto/ospf/dbdes.c | 2 proto/ospf/hello.c | 2 proto/ospf/lsalib.c | 9 proto/ospf/ospf.h | 3 proto/ospf/packet.c | 17 proto/ospf/rt.c | 2 proto/radv/packets.c | 4 proto/radv/radv.c | 4 proto/radv/radv.h | 3 proto/rpki/rpki.c | 20 sysdep/autoconf.h.in | 177 sysdep/bsd-netlink/netlink.c | 2 sysdep/linux/netlink.c | 2 sysdep/sysdep.sgml | 4 sysdep/unix/config.Y | 8 sysdep/unix/io.c | 2 tools/doc-template.html | 58 tools/git-check-tag-ci | 27 tools/linuxdoc.lua | 114 tools/make-archive | 23 tools/make-deb | 86 tools/make-obs | 46 tools/make-rpm | 99 tools/progdoc | 4 tools/release-commit | 6 tools/release-issue.md.j2 | 76 tools/release-tag | 25 tools/release.py | 368 tools/test-install | 83 tools/version | 8 166 files changed, 15355 insertions(+), 43600 deletions(-) dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpuo177c31/bird2_2.17.1-1+deb13u2.dsc: no acceptable signature found dpkg-source: warning: cannot verify inline signature for /srv/release.debian.org/tmp/tmpuo177c31/bird2_2.17.5-0+deb13u1.dsc: no acceptable signature found diff -Nru bird2-2.17.1/.gitignore bird2-2.17.5/.gitignore --- bird2-2.17.1/.gitignore 2022-03-02 09:29:17.000000000 +0000 +++ bird2-2.17.5/.gitignore 2026-06-09 09:02:29.000000000 +0000 @@ -14,3 +14,4 @@ /sysdep/autoconf.h.in~ /cscope.* *.tar.gz +/gitlab/docker.mk diff -Nru bird2-2.17.1/.gitlab-ci.yml bird2-2.17.5/.gitlab-ci.yml --- bird2-2.17.1/.gitlab-ci.yml 2025-05-05 17:27:12.000000000 +0000 +++ bird2-2.17.5/.gitlab-ci.yml 2026-06-09 09:02:29.000000000 +0000 @@ -4,11 +4,92 @@ ##### ##### ########################################################### ##### ##### -##### This file is autogenerated from misc/gitlab/. ##### +##### 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 LC_ALL: C.UTF-8 @@ -16,32 +97,140 @@ 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 -## Common rules -# Ignore WIP commits -.never-wip: &never-wip - if: $CI_COMMIT_MESSAGE =~ /^(fixup! )*WIP/ - when: never -# Run for stable branches -.if-stable: &if-stable - if: $CI_COMMIT_BRANCH =~ /^(stable-.*|thread-next|master)$/ - when: always -# Do run for tags -.if-tag: &if-tag - if: $CI_COMMIT_TAG - when: always -# Never run for tags -.never-tag: &never-tag - if: $CI_COMMIT_TAG - when: never +## 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: @@ -50,7 +239,10 @@ script: - tools/git-check-commits rules: - - *if-stable + - 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 @@ -66,20 +258,15 @@ artifacts: paths: - obj/doc/bird-singlepage.html + - obj/doc/prog-singlepage.html - bird-*.tar.gz - pkg/pkgs/* - pkg/srcpkgs/* rules: - - *if-tag + - if: '$CI_COMMIT_TAG' + when: on_success - when: never -## Default test job rules -.test-job: &test-job - rules: - - *never-wip - - *never-tag - - when: always - ############################ ## Docker builder rebuild ## ############################ @@ -91,6 +278,7 @@ .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) @@ -98,200 +286,561 @@ # 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: - # Never rebuild for WIP commits - - *never-wip - - # Never rebuild for tags - - if: '$CI_COMMIT_TAG' - when: never - - # Never rebuild for new branches - - if: $CI_COMMIT_BEFORE_SHA == "0000000000000000000000000000000000000000" - when: never - - # Do any change in Dockerfile (e.g. change a comment) to rebuild the image - # FIXME: This probably belongs to bird-tools instead, we may end up with - # screwed up docker repository in case of colliding image updates - - changes: - - misc/docker/$IMG_NAME/Dockerfile - when: always - - - when: never docker-docbuilder: variables: IMG_NAME: "docbuilder" + + 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" + + 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" + + 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-fedora-32-amd64: +docker-rocky-08-amd64: variables: - IMG_NAME: "fedora-32-amd64" + IMG_NAME: "rocky-08-amd64" + + 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-fedora-33-amd64: +docker-rocky-09-amd64: variables: - IMG_NAME: "fedora-33-amd64" + IMG_NAME: "rocky-09-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: "oracle-08-amd64" + + 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: "oracle-09-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: "oracle-10-amd64" + + 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: "opensuse-15.0-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: "opensuse-15.1-amd64" + + 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: "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-build docker-opensuse-15.4-amd64: variables: 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" + + 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" + + 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" + + 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" + + 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" + + 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" + + 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" + + 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" + + 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" + + 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-fedora-42-amd64: variables: IMG_NAME: "fedora-42-amd64" - <<: *docker-build -docker-ubuntu-18.04-amd64: - variables: - IMG_NAME: "ubuntu-18.04-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-debian-10-amd64: +docker-fedora-43-amd64: variables: - IMG_NAME: "debian-10-amd64" + IMG_NAME: "fedora-43-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-debian-10-i386: +docker-fedora-44-amd64: variables: - IMG_NAME: "debian-10-i386" + IMG_NAME: "fedora-44-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: "debian-11-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: "debian-11-i386" + + 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: "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" + + 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" + + 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" + + 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" + + 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" + + 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-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-24.10-amd64: +docker-ubuntu-26.04-amd64: variables: - IMG_NAME: "ubuntu-24.10-amd64" + 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 @@ -304,16 +853,23 @@ # Now we compile and run unit tests ... in every single distribution. # Every task needs its docker, see above. +.build-base-rules: + - if: '"$[[ inputs.build ]]" == "true"' + - if: '"$[[ inputs.packages ]]" == "true"' + - !reference [ .default-rules ] + + .build: &build-base - <<: *test-job stage: build + rules: + - !reference [ .build-base-rules ] script: - - export BRANCH=$CI_COMMIT_BRANCH + - 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 - " ]; then + " ] || [ "$[[ inputs.release-fixup ]]" -gt "1" ]; then if [ "${STABLE_VERSION}" == "`tools/version`" ]; then echo "Stable version precheck OK" else @@ -329,17 +885,24 @@ 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 - autoreconf - - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" $CONFIGURE_OPTIONS + - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS" ${CONFIGURE_OPTIONS} # Detect which make is available - MAKE=make - which gmake 2>/dev/null >/dev/null && MAKE=gmake - - $MAKE - - $MAKE check + - $MAKE VERBOSE=1 + - $MAKE 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 - - ./bird --version |& tee obj/version-built + - ${CROSS_RUN} ./bird --version |& grep -v 'Cannot disable transparent huge pages' | tee obj/version-built - diff obj/version-built version-expected .build-docker-linux-amd64: &build-docker-linux-amd64 @@ -367,19 +930,40 @@ optional: true image: registry.nic.cz/labs/bird:centos-8-amd64 -build-fedora-32-amd64: +build-rocky-08-amd64: <<: *build-docker-linux-amd64 needs: - - job: docker-fedora-32-amd64 + - job: docker-rocky-08-amd64 optional: true - image: registry.nic.cz/labs/bird:fedora-32-amd64 + image: registry.nic.cz/labs/bird:rocky-08-amd64 -build-fedora-33-amd64: +build-rocky-09-amd64: <<: *build-docker-linux-amd64 needs: - - job: docker-fedora-33-amd64 + - job: docker-rocky-09-amd64 optional: true - image: registry.nic.cz/labs/bird:fedora-33-amd64 + 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-opensuse-15.0-amd64: <<: *build-docker-linux-amd64 @@ -423,6 +1007,20 @@ optional: true image: registry.nic.cz/labs/bird:opensuse-15.5-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-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-docker-linux-amd64 needs: @@ -486,26 +1084,19 @@ optional: true image: registry.nic.cz/labs/bird:fedora-42-amd64 -build-ubuntu-18.04-amd64: +build-fedora-43-amd64: <<: *build-docker-linux-amd64 needs: - - job: docker-ubuntu-18.04-amd64 + - job: docker-fedora-43-amd64 optional: true - image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64 + image: registry.nic.cz/labs/bird:fedora-43-amd64 -build-debian-10-amd64: +build-fedora-44-amd64: <<: *build-docker-linux-amd64 needs: - - job: docker-debian-10-amd64 + - job: docker-fedora-44-amd64 optional: true - image: registry.nic.cz/labs/bird:debian-10-amd64 - -build-debian-10-i386: - <<: *build-docker-linux-amd64 - needs: - - job: docker-debian-10-i386 - optional: true - image: registry.nic.cz/labs/bird:debian-10-i386 + image: registry.nic.cz/labs/bird:fedora-44-amd64 build-debian-11-amd64: <<: *build-docker-linux-amd64 @@ -514,6 +1105,7 @@ optional: true image: registry.nic.cz/labs/bird:debian-11-amd64 + build-debian-11-i386: <<: *build-docker-linux-amd64 needs: @@ -528,6 +1120,25 @@ optional: true image: registry.nic.cz/labs/bird:debian-12-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 + +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-debian-12-i386: <<: *build-docker-linux-amd64 needs: @@ -535,6 +1146,66 @@ optional: true image: registry.nic.cz/labs/bird:debian-12-i386 +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-debian-testing-amd64: <<: *build-docker-linux-amd64 needs: @@ -542,6 +1213,43 @@ optional: true image: registry.nic.cz/labs/bird:debian-testing-amd64 +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: + CROSSBUILD_ARCH: arm64 + +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: + CROSSBUILD_ARCH: armhf + +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: + CROSSBUILD_ARCH: riscv64 + +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: + CROSSBUILD_ARCH: s390x + + build-debian-testing-i386: <<: *build-docker-linux-amd64 needs: @@ -549,6 +1257,14 @@ optional: true image: registry.nic.cz/labs/bird:debian-testing-i386 +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-ubuntu-20.04-amd64: <<: *build-docker-linux-amd64 needs: @@ -556,6 +1272,7 @@ optional: true image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64 + build-ubuntu-22.04-amd64: <<: *build-docker-linux-amd64 needs: @@ -563,6 +1280,7 @@ optional: true image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64 + build-ubuntu-24.04-amd64: <<: *build-docker-linux-amd64 needs: @@ -570,19 +1288,207 @@ optional: true image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64 -build-ubuntu-24.10-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: + CROSSBUILD_ARCH: arm64 + +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: + CROSSBUILD_ARCH: armhf + +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: + CROSSBUILD_ARCH: ppc64el + +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: + CROSSBUILD_ARCH: riscv64 + +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: + 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-24.10-amd64 + - job: docker-ubuntu-26.04-amd64 optional: true - image: registry.nic.cz/labs/bird:ubuntu-24.10-amd64 + 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: - <<: *test-job image: registry.nic.cz/labs/bird:docbuilder needs: - job: docker-docbuilder @@ -592,16 +1498,19 @@ - docker - linux script: - - export BRANCH=$CI_COMMIT_BRANCH + - 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 + - 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,
@@ -610,60 +1519,34 @@
#
# We do NOT build separate documentation packages in these rules.
-.pkg-deb: &pkg-deb
- <<: *test-job
- stage: pkg
- script:
- # create venv only if it's installed
- - if python3 -m venv venv; then . venv/bin/activate; fi
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
- #- apkg install -y pkg/pkgs/*/*/*.deb
- artifacts:
- paths:
- - pkg/pkgs/*
- - pkg/srcpkgs/*
+.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
- <<: *test-job
+.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
- - apkg build -a bird-$(cat VERSION)*.tar.gz
- #- 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
- <<: *test-job
+ <<: *pkg-base
stage: pkg
script:
- - pip3 install apkg
- - apkg build -a bird-$(cat VERSION)*.tar.gz
- #- apkg install -y pkg/pkgs/*/*/*.rpm
- artifacts:
- paths:
- - pkg/pkgs/*
- - pkg/srcpkgs/*
-
-.pkg-rpm-wa: &pkg-rpm-wa
- <<: *test-job
- 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
- - apkg build -a bird-$(cat VERSION)*.tar.gz
- #- 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/*
@@ -672,7 +1555,7 @@
pkg-centos-7-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-centos-7-amd64
artifacts: false
@@ -683,31 +1566,55 @@
LC_ALL: en_US.UTF-8
pkg-centos-8-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-centos-8-amd64
artifacts: false
- job: build-release
image: registry.nic.cz/labs/bird:centos-8-amd64
-pkg-fedora-32-amd64:
- <<: *pkg-rpm-wa
+pkg-rocky-08-amd64:
+ <<: *pkg-rpm
needs:
- - job: build-fedora-32-amd64
+ - job: build-rocky-08-amd64
artifacts: false
- job: build-release
- image: registry.nic.cz/labs/bird:fedora-32-amd64
+ image: registry.nic.cz/labs/bird:rocky-08-amd64
-pkg-fedora-33-amd64:
- <<: *pkg-rpm-wa
+pkg-rocky-09-amd64:
+ <<: *pkg-rpm
needs:
- - job: build-fedora-33-amd64
+ - job: build-rocky-09-amd64
artifacts: false
- job: build-release
- image: registry.nic.cz/labs/bird:fedora-33-amd64
+ image: registry.nic.cz/labs/bird:rocky-09-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-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-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-opensuse-15.0-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-opensuse-15.0-amd64
artifacts: false
@@ -715,7 +1622,7 @@
image: registry.nic.cz/labs/bird:opensuse-15.0-amd64
pkg-opensuse-15.1-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-opensuse-15.1-amd64
artifacts: false
@@ -723,7 +1630,7 @@
image: registry.nic.cz/labs/bird:opensuse-15.1-amd64
pkg-opensuse-15.2-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-opensuse-15.2-amd64
artifacts: false
@@ -731,7 +1638,7 @@
image: registry.nic.cz/labs/bird:opensuse-15.2-amd64
pkg-opensuse-15.3-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-opensuse-15.3-amd64
artifacts: false
@@ -739,7 +1646,7 @@
image: registry.nic.cz/labs/bird:opensuse-15.3-amd64
pkg-opensuse-15.4-amd64:
- <<: *pkg-rpm-wa
+ <<: *pkg-rpm
needs:
- job: build-opensuse-15.4-amd64
artifacts: false
@@ -747,13 +1654,29 @@
image: registry.nic.cz/labs/bird:opensuse-15.4-amd64
pkg-opensuse-15.5-amd64:
- <<: *pkg-rpm-wa
+ <<: *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
+ 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:
@@ -826,29 +1749,21 @@
- job: build-release
image: registry.nic.cz/labs/bird:fedora-42-amd64
-pkg-ubuntu-18.04-amd64:
- <<: *pkg-deb-legacy
- needs:
- - job: build-ubuntu-18.04-amd64
- artifacts: false
- - job: build-release
- image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64
-
-pkg-debian-10-amd64:
- <<: *pkg-deb
+pkg-fedora-43-amd64:
+ <<: *pkg-rpm
needs:
- - job: build-debian-10-amd64
+ - job: build-fedora-43-amd64
artifacts: false
- job: build-release
- image: registry.nic.cz/labs/bird:debian-10-amd64
+ image: registry.nic.cz/labs/bird:fedora-43-amd64
-pkg-debian-10-i386:
- <<: *pkg-deb
+pkg-fedora-44-amd64:
+ <<: *pkg-rpm
needs:
- - job: build-debian-10-i386
+ - job: build-fedora-44-amd64
artifacts: false
- job: build-release
- image: registry.nic.cz/labs/bird:debian-10-i386
+ image: registry.nic.cz/labs/bird:fedora-44-amd64
pkg-debian-11-amd64:
<<: *pkg-deb
@@ -858,6 +1773,7 @@
- job: build-release
image: registry.nic.cz/labs/bird:debian-11-amd64
+
pkg-debian-11-i386:
<<: *pkg-deb
needs:
@@ -874,6 +1790,27 @@
- 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:
@@ -882,6 +1819,73 @@
- 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:
@@ -890,6 +1894,47 @@
- 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:
@@ -898,6 +1943,15 @@
- job: build-release
image: registry.nic.cz/labs/bird:debian-testing-i386
+pkg-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:
@@ -906,6 +1960,7 @@
- job: build-release
image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64
+
pkg-ubuntu-22.04-amd64:
<<: *pkg-deb
needs:
@@ -914,6 +1969,7 @@
- job: build-release
image: registry.nic.cz/labs/bird:ubuntu-22.04-amd64
+
pkg-ubuntu-24.04-amd64:
<<: *pkg-deb
needs:
@@ -922,13 +1978,803 @@
- job: build-release
image: registry.nic.cz/labs/bird:ubuntu-24.04-amd64
-pkg-ubuntu-24.10-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
+
+crosspkg-s390x-ubuntu-24.04-amd64:
+ <<: *pkg-deb
+ 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: build-ubuntu-24.10-amd64
+ - job: crossbuild-riscv64-ubuntu-26.04-amd64
artifacts: false
- job: build-release
- image: registry.nic.cz/labs/bird:ubuntu-24.10-amd64
+ 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
###################################
@@ -937,6 +2783,7 @@
.build-birdlab-base: &build-birdlab-base
<<: *build-base
stage: build
+ needs: []
# script:
# - export BRANCH=$CI_COMMIT_BRANCH
# - autoreconf
@@ -945,14 +2792,6 @@
# - gmake check
-build-birdlab-openbsd-75:
- <<: *build-birdlab-base
- variables:
- AUTOCONF_VERSION: '2.71'
- tags:
- - birdlab-openbsd-75
- - amd64
-
build-birdlab-openbsd-76:
<<: *build-birdlab-base
variables:
@@ -1084,20 +2923,27 @@
## Netlab functionality tests ##
################################
+.netlab-rules: &netlab-rules
+ rules:
+ - if: '"$[[ inputs.netlab ]]" == "true"'
+ - !reference [ .default-rules ]
+
build-netlab:
- <<: *test-job
+ <<: *netlab-rules
stage: build
+ needs: []
variables:
BDIR: build-netlab
tags:
- netlab
- amd64
script:
+ - if [ "$CI_PIPELINE_SOURCE" == "merge_request_event" ]; then export BRANCH=mergerequest-$CI_MERGE_REQUEST_IID; else export BRANCH=$CI_COMMIT_BRANCH; fi
- autoreconf
- mkdir $BDIR
- cd $BDIR
- ../configure
- - BRANCH=$CI_COMMIT_BRANCH make
+ - make
artifacts:
paths:
- $BDIR/bird
@@ -1105,22 +2951,35 @@
expire_in: 2 hours
.netlab-test: &test-base
- <<: *test-job
+ <<: *netlab-rules
stage: test
needs: [build-netlab]
tags:
- netlab
- amd64
script:
+ - sudo rm -rf netlab-failure
- DIR=$(pwd)
- cd $TOOLS_DIR
- sudo git clean -fx
+ - sudo git checkout -f master
- git pull --ff-only
- "mv $DIR/build-netlab/* netlab/common/"
- ln -s $STAYRTR_BINARY netlab/common/stayrtr
- cd netlab
- sudo ./stop
+ - ulimit -f 1048576 # Protect the filesystem from overflowing by log bloat
- sudo ./runtest -s v2 -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:
@@ -1248,6 +3107,11 @@
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:
@@ -1263,11 +3127,21 @@
variables:
TEST_NAME: cf-ibgp-flat
+test-ibgp-bfd-auth:
+ <<: *test-base
+ variables:
+ TEST_NAME: cf-ibgp-bfd-auth
+
test-rip-base:
<<: *test-base
variables:
TEST_NAME: cf-rip-base
+test-rip-vrf:
+ <<: *test-base
+ variables:
+ TEST_NAME: cf-rip-vrf
+
test-kernel-learn:
<<: *test-base
variables:
@@ -1283,3 +3157,68 @@
variables:
TEST_NAME: cf-mpls-bgp-l3vpn
+test-pipe-collision:
+ <<: *test-base
+ variables:
+ TEST_NAME: cf-pipe-collision
+
+test-ebgp-refresh/gen/imno-basic-imex-basic:
+ <<: *test-base
+ variables:
+ TEST_NAME: cf-ebgp-refresh/gen/imno-basic-imex-basic
+
+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
+
diff -Nru bird2-2.17.1/CONTRIBUTING.md bird2-2.17.5/CONTRIBUTING.md
--- bird2-2.17.1/CONTRIBUTING.md 2024-12-17 13:44:48.000000000 +0000
+++ bird2-2.17.5/CONTRIBUTING.md 2026-06-09 09:02:29.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 bird2-2.17.1/ChangeLog bird2-2.17.5/ChangeLog
--- bird2-2.17.1/ChangeLog 2025-05-05 17:29:50.000000000 +0000
+++ bird2-2.17.5/ChangeLog 1970-01-01 00:00:00.000000000 +0000
@@ -1,33830 +0,0 @@
-commit 7ef70b27ef907bba7479989a5376842c893b12bb
-Author: Maria Matejka
-Date: Tue Apr 29 20:30:45 2025 +0200
-
- NEWS and version update
-
-commit 82328106641c955fb8a08a5f85d553caa163b89d
-Author: Maria Matejka
-Date: Tue Apr 29 10:03:14 2025 +0200
-
- Tag checking
-
- Adding a script to gather all information about the current release and
- confirm that it is indeed ready for departure.
-
-commit cb47e6a4e7e82540c1628e2076d82ffe30e11185
-Author: Maria Matejka
-Date: Thu Apr 24 21:06:27 2025 +0200
-
- CI: Checking that the reported version is actually the built one
-
-commit 90ac7debb0c373a3dde72ada0ff6743cc420706d
-Author: Maria Matejka
-Date: Thu Apr 24 20:46:34 2025 +0200
-
- CI: Packages are built from the single release tgz package
-
-commit 8e0a46a0033f50ec16f0c4d8d46787575ead7c7c
-Author: Maria Matejka
-Date: Sat Apr 19 20:11:02 2025 +0200
-
- CI: Tasks generated from a data file and template
-
- Instead of directly editing .gitlab-ci.yml, the pipeline definition is
- generated by a script from a much shorter file defining the required
- tests, and templated.
-
-commit d3cd87d1aa0c39838738d5924be1668e0a2400ca
-Author: Maria Matejka
-Date: Mon Apr 14 15:14:05 2025 +0200
-
- Version and release scripting
-
- Version number moved to a separate file as a primary source of truth.
-
- Added tools/release-commit to make the release process a little bit faster.
-
- Fixes #218
-
-commit d5724bfdefc5c4bf6a234d96f0ed02198c82c800
-Author: Maria Matejka
-Date: Sat Apr 12 21:13:19 2025 +0200
-
- CI: Immediately fail if WIP commits pushed to a stable branch
-
-commit d5d395930efee57fe843895955b8ead1f1fe0d0a
-Author: Maria Matejka
-Date: Fri Apr 11 21:47:45 2025 +0200
-
- CI: no pipeline for WIP commits
-
- We'd like to encourage team members to push WIP work to Gitlab. Such
- work often fails to build and therefore we run no tests for these
- branches.
-
-commit 0d553f675ee7a6aa0a04b2564772952479ae58dd
-Author: Ondrej Zajicek
-Date: Sun Apr 27 00:48:29 2025 +0200
-
- BGP: Update obsolete RFC 8203 to newer RFC 9003
-
-commit 1acc79b75d141b0e2f6b3326a45d8ce4f6e07c2e
-Author: Ondrej Zajicek
-Date: Fri Apr 25 19:02:11 2025 +0200
-
- BSD: Silence some warnings
-
-commit 768dfe97dbeac3c157c3e8796e03e9c8a2af973b
-Author: Ondrej Zajicek
-Date: Fri Apr 25 18:29:28 2025 +0200
-
- BSD: Fix build on NetBSD
-
- Newer NetBSD versions removed RTF_LLINFO and added RTF_LLDATA.
- In FreeBSD, RTF_LLINFO is obsolete, but still defined.
-
-commit 413b33213f9d76a72865721d9d21a88f479b409a
-Author: Ondrej Zajicek
-Date: Thu Apr 24 17:04:15 2025 +0200
-
- CI: Add builds on new NetBSD workers
-
-commit 9784c76c9abc00630a88c42cb340ce8c81b54bba
-Author: Ondrej Zajicek
-Date: Thu Apr 24 03:01:19 2025 +0200
-
- BGP: Fix crash when incoming connection for disabled protocol arrives
-
- The function bgp_find_proto() may return a protocol in DOWN state, but
- ao.keys (as most protocol data) are only valid in non-DOWN state.
-
-commit cff6a0c0155191ef4db216c49c58a74f36da9ed7
-Author: Ondrej Zajicek
-Date: Wed Apr 23 03:53:56 2025 +0200
-
- Silence some warnings
-
-commit ea036f9fe8510534f9f0273870af895d67e5239f
-Author: Ondrej Zajicek
-Date: Tue Apr 22 15:46:34 2025 +0200
-
- CI: Add builds on new OpenBSD workers
-
-commit df6bedd12fdf21d499b8a9b8caa40c8717ad0d9e
-Author: Jana Babovakova
-Date: Mon Apr 14 15:29:58 2025 +0200
-
- CI: Add FreeBSD 14 and netlink builds for FreeBSD 13 and 14.
-
-commit ae25b5fd18803c0005498eea218a7188c2d005bc
-Author: Maria Matejka
-Date: Wed Apr 16 20:36:17 2025 +0200
-
- CI: Do not rebuild Docker images for test builds for new branches
-
- New branch considers all files changed. We don't want to rebuild all
- docker images for new branches; that's just a waste of time and energy.
-
- There is a better way for future -- a much better fine-grained control
- may be obtained by running secondary pipelines.
-
- fixes #212
-
-commit 457c10267054b999b188164dbf6bc5975838dd31
-Author: Katerina Kubecova
-Date: Tue Apr 15 17:22:33 2025 +0200
-
- cli/commands: Help for multiple word command did not show properly.
-
- Possible commands are stored as keywords, each keyword has its own structure.
- The last acceptable keyword structure contains string with hint. But when the hint was printed only direct child
- of the base keyword was considered. If it was multi keyword command, the first child did not carry any hint to print,
- so it was ignored.
-
- Now, if we don't find a hint in a child, we recursively search in grandchildren.
-
-commit 64690b7f91f4b9cf51337aa47483d09e34f78c57
-Author: Jana Babovakova
-Date: Wed Apr 16 10:41:34 2025 +0200
-
- CI: enable Fedora 42: image, build, package.
-
-commit b28d2dd09d0eb770668fe59c7e0b3ba493ed9c10
-Author: Jana Babovakova
-Date: Wed Apr 16 10:39:50 2025 +0200
-
- Docker: added lost docker file for Fedora 42.
-
-commit 07d3e02a7eb3d9e0f5bfe0ff6df910e8b0801e86
-Author: Jana Babovakova
-Date: Mon Apr 14 15:41:46 2025 +0200
-
- Docker: lost files for OpenSuse 15.4, 15.5
-
-commit 381a21293ab8cbc4f42de9078355f1cb5ac4d73f
-Author: Jana Babovakova
-Date: Wed Apr 2 13:44:02 2025 +0200
-
- Doc: Minor corrections in README and INSTALL
-
- - Licence to License - also in code comments.
- - copyright date until now.
- - updated license text from gnu.org
- - added command to build bird documentation.
-
-commit cdc70fd1dd02857e5dc9b4a2f82f25cfc1dc98ca
-Author: Ondrej Zajicek
-Date: Tue Apr 8 17:52:12 2025 +0200
-
- CI: Fix missing srcdir in path to tools/version
-
-commit 8babdc34d234dec37aa08cdbceaea540852a06bc
-Author: Maria Matejka
-Date: Tue Dec 17 12:38:12 2024 +0100
-
- CI: fix test collisions between branches (again)
-
- 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.
-
- (Re-committed, was accidentally removed by one of previous commits)
-
-commit b602a91237d3696fbff79e0c6b9760d4ea6a141a
-Author: Maria Matejka
-Date: Tue Apr 1 21:49:58 2025 +0200
-
- NEWS and version update
-
-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 5b2c79804f847b2b071809305d6de073bd940f29
-Author: Maria Matejka
-Date: Tue Apr 1 20:05:09 2025 +0200
-
- Doc singlepage: add bold handler
-
-commit 5018785dbe0f6706fc29ded03e6b79bf2f41aacb
-Author: Maria Matejka
-Date: Tue Apr 1 14:19:23 2025 +0200
-
- Docker build machinery: a little bit of documentation
-
-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 de2370ec0d3e1bf16a533968b7ca66727dd075af
-Author: David Petera
-Date: Fri Feb 28 15:40:04 2025 +0100
-
- Fix dependecy issue with bs4 on legacy distros
-
-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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 3ca6e03db774f0a2d462faf20646e4a341664c8d
-Author: Maria Matejka
-Date: Thu Nov 28 14:10:40 2024 +0100
-
- RPKI: refactored pdu to host byte order conversion
-
- We shouldn't convert bytes 2 and 3 of the PDU blindly, there are several
- cases where these are used by bytes. Instead, the conversion is done
- only where needed.
-
- This fixes misinterpretation bug of ASPA PDU flags on little endian
- architectures.
-
-commit 54499f8850fd5b3a25639dc06d5618ae98ac1537
-Author: Maria Matejka
-Date: Wed Nov 27 12:01:58 2024 +0100
-
- String tests: fixed too strict strcmp checks
-
- The strcmp function is not guaranteed to return -1 or +1
- but any negative or positive value if the input strings
- are different. Fixed the false assumption which triggered
- a build bug on emulated arm64.
-
-commit fc2b4b26a62215d12f4565c21b77e949cd861b9a
-Author: Ondrej Zajicek
-Date: Wed Nov 27 04:15:16 2024 +0100
-
- Fixed crash if logging happened in unit tests
-
- The patch initializes logging in unit tests. Previously, unit tests did
- not initialize logging and other subsystems, just resources. But
- resource_init() could under certain circumstances trigger logging and
- cause crash.
-
- The bug was Found by Jakub Ruzicka, dissected by David Petera and Maria
- Matejka, disguised as failing build for Debian arm64 in pbuilder
- emulation which did not like disabling THP.
-
- Fixes #42.
-
-commit 997d2f578ee61d64f57e2ab6932b15c0a6a3a8d8
-Author: Maria Matejka
-Date: Tue Nov 26 20:32:53 2024 +0100
-
- ASPA: Unified the ASPA_INVALID into one result
-
- The _EMPTY and _CONFED variants are easy to spot bare-eyed from the AS path.
-
-commit 01377599da2f14567da46d8c0387a660189a8065
-Author: Maria Matejka
-Date: Tue Nov 26 16:36:13 2024 +0100
-
- RPKI: Polishing of ASPA syntax and documentation
-
-commit fb919ac2a266aed53638ebc4f006c7ef48bb9e31
-Author: Ondrej Zajicek
-Date: Tue Nov 26 17:46:27 2024 +0100
-
- RPKI: Fix PDU length check
-
- The END_OF_DATA PDU was extended in version 1, so it has different length
- in different versions. We should do the PDU length check according to its
- version.
-
-commit e330fb1614d83e3529f4405d0875160d425f8bb3
-Author: Maria Matejka
-Date: Mon Nov 25 09:35:33 2024 +0100
-
- RPKI: added documentation and RTR version config options
-
-commit fa65e063721d963a29749ad63e47c97b52ce98d8
-Author: Katerina Kubecova
-Date: Fri Nov 8 15:26:37 2024 +0100
-
- RPKI: protocol version 2, loading ASPA
-
- Implemented draft-ietf-sidrops-8210bis-16, interoperable with StayRTR
- development branches.
-
-commit 224fbe59802ea45820ce49fd1f59b91314b17e7e
-Author: Katerina Kubecova
-Date: Wed Nov 8 13:46:42 2023 +0100
-
- ASPA: Automatic channel reload
-
-commit 49be4a0329b218a7c35c9275680de3ca177cd2e7
-Author: Ondrej Zajicek
-Date: Fri Nov 8 18:54:13 2024 +0100
-
- Lib: Optimized printing of numbers
-
- One simple trick makes printing of numbers ~4x faster.
-
-commit 5c6572c422a2dc3a8349c4f0f9f6ab31de9c5528
-Author: Ondrej Zajicek
-Date: Fri Nov 8 18:51:54 2024 +0100
-
- Lib: Optimized printing of IP addresses
-
- Makes printing network prefixes ~15x faster.
-
-commit 82d57fb7adf02b297840ab710737df6043832ce2
-Author: Piotr Wydrych
-Date: Tue Nov 5 18:53:22 2024 +0100
-
- CLI: Add timeformat command
-
- Adds ability to override time format of show commands for current CLI session
- so that it does not depend on configuration and may ease parsing when CLI is
- called from tools.
-
- Minor changes by committer.
-
-commit 9eca3e1a2e5a71c38ebd95ee01489d1eb62a063f
-Author: Ondrej Zajicek
-Date: Tue Nov 5 17:35:20 2024 +0100
-
- Nest: Cleanup timeformat grammar
-
-commit 38195ac628797cad5453e91cd6b38bb0b6f34f84
-Author: Maria Matejka
-Date: Wed Nov 6 12:12:37 2024 +0100
-
- ASPA: fixed the check algorithm to actually do what is in the RFC
-
- The original algorithm assumed principles not consistent with the RFC
- and could have lead to false invalids.
-
- Also added filter tests showing also how the ASPA literals are used in
- the static protocol.
-
-commit c7e843c1a7f376890d641730ebece1c94d8fab58
-Author: Ondrej Zajicek
-Date: Thu Nov 7 15:03:01 2024 +0100
-
- BGP: Add RFC 9687 to list of supported RFCs
-
-commit b4196b70c4463d78f8f202ef4ad65c24f240e1a2
-Author: Maria Matejka
-Date: Wed Nov 6 13:05:32 2024 +0100
-
- BGP: SendHoldTimer became an RFC, updating docs
-
-commit 294d363da06418f2e6f518c0b7aac78a6f4d0811
-Author: Ondrej Zajicek
-Date: Fri Oct 18 16:53:12 2024 +0200
-
- Filter: Remove T_ENUM_RTC
-
- It is not used for a long time.
-
-commit 1002c35bf99544cbb3567defe3a7dca38f5f2375
-Author: Ondrej Zajicek
-Date: Fri Oct 18 16:49:19 2024 +0200
-
- Filter: Replace T_ENUM_NETTYPE with T_ENUM_NET_TYPE
-
- To be consistent with other enum type names.
-
-commit 80ca0ed279f2c8f396976d90f2e98ba6b923081c
-Author: Ondrej Zajicek
-Date: Fri Oct 18 16:39:42 2024 +0200
-
- Filter: Add enum types to filter grammar
-
- Enum types existed on semantic level, but not on syntactic level,
- so they could not be used in filter code.
-
- Generate filter grammar for enum types based on CF_ENUM() declarations.
-
- Thanks to lbz for the bugreport.
-
-commit 072821e55e2a3bd0fb3ffee3099375927dc902e8
-Author: Eric Long
-Date: Wed Oct 16 21:32:36 2024 +0200
-
- Flowspec: Fix IPv6 prefix when offset is not multiple of 8
-
- Current implementation handles flowspec prefix length and offset only
- in bytes, but RFC 8956 (Dissemination of Flow Specification Rules for
- IPv6) Section 3.1 [1] and example in Section 3.8.2 [2] states the
- pattern should begin right after offset *bits*.
-
- For example, pattern "::1:1234:5678:9800:0/60-104" is currently
- serialized as "02 68 3c 01 12 34 56 78 98", but it should shift its
- pattern 4 more bits to the left: "02 68 3c 11 23 45 67 89 80".
-
- This patch implements shifting left/right for IPv6 type and use it to
- correct the behaviour. Test data are replaced with the correct ones.
-
- Minor changes and test vectors done by committer.
-
- [1]: https://www.rfc-editor.org/rfc/rfc8956.html#section-3.1
- [2]: https://www.rfc-editor.org/rfc/rfc8956.html#section-3.8.2
-
-commit 6f9ccfae9edba40975f9709a516ecf3784616e68
-Author: Ondrej Zajicek
-Date: Wed Oct 16 04:04:46 2024 +0200
-
- Flowspec: Test improvements
-
- Simplify Flowspec initialization macros.
-
- Add examples from RFC 8955 4.3 and RFC 8956 3.8 to format tests.
-
-commit a70ecadefe93d6b7ed11e42c85d87fe2f02f328a
-Author: Ondrej Zajicek
-Date: Tue Oct 15 17:19:42 2024 +0200
-
- Doc: Minor fixes
-
-commit cb40a666b9e093399c72af0cb3913be6be3a6088
-Author: Ondrej Zajicek
-Date: Tue Oct 15 17:14:57 2024 +0200
-
- Doc: Fix code blocks
-
- Code blocks should not be indented, as the indendation is passed
- to the output,
-
-commit 72c2df562dd184837c61fe4b68d8e2816b7643bc
-Author: Johannes Erwerle
-Date: Tue Oct 15 16:56:48 2024 +0200
-
- Doc: Improve readability of the operator documentation
-
- Minor changes by committer.
-
-commit 48a620a916b08a1ed882f536fdc508a60c2ade94
-Author: Ondrej Zajicek
-Date: Wed Oct 9 18:00:16 2024 +0200
-
- Fix typo in documentation
-
-commit 39e75b879b1464f35725bb218d9e14399fc4c291
-Author: Ondrej Zajicek
-Date: Tue Oct 8 19:34:51 2024 +0200
-
- Filter: Fixes and improvements related to case/sets
-
- Unify grammar for set_atom and switch_atom to avoid inconsistencies
- between them. Fix errors in documentation related to case statement
- and set type. Change 'vpnrd' to 'rd' to be consistent with the filter
- language.
-
- Thanks to Mikhail Mayorov for bugreport.
-
-commit 163ab3130f6a890411402643818af388df5f5719
-Merge: 8dc2a36ae d4929d911
-Author: Ondřej Zajíček
-Date: Mon Oct 7 16:35:55 2024 +0200
-
- Merge branch 'dpetera-master-patch-71179' into 'master'
-
- Fix typo in user docs
-
- See merge request labs/bird!27
-
-commit d4929d911378c25802b4b04963bc593d0a9928ab
-Author: David Petera
-Date: Mon Oct 7 16:15:09 2024 +0200
-
- Fix typo in user docs
-
-commit 8dc2a36ae545d13fdf201b0891185f98852584ee
-Author: Job Snijders
-Date: Thu Oct 3 15:43:12 2024 +0200
-
- RPKI: Add TCP-MD5 authentication option
-
- RPKI-To-Router (RTR) sessions seem to be similar security-sensitivity as
- IBGP sessions. BIRD already offered a choice of either "plain TCP" (meh)
- or "SSH" (secure, albeit a bit more hassle to set up than TCP-MD5).
- The patch adds TCP-MD5 as another option. TCP-MD5 for RTR is specified
- through RFC 6810 section 7.3 and RFC 8210 section 9.3.
-
- Minor changes by committer.
-
-commit 5daec239c4c62dd508a3cd8f7ca82d3666becbe6
-Author: Maria Matejka
-Date: Mon Jul 8 17:12:21 2024 +0200
-
- Renamed my past self in commit authorship and mentioned that in the contributing policy
-
-commit 2ba6e797ccd365f5c930a18953a08d3c5e315ff9
-Author: Maria Matejka
-Date: Thu Aug 29 14:37:19 2024 +0200
-
- Fixed a stupid bug in parse-and-exit mode
-
- Introduced in 08ff0af8986099e6fb1d8a94c7ce62c83e4df7f1, the additional CLI
- configuration wasn't properly initialized in the parse-and-exit mode
- due to an oversight that cli_init_unix() is not called in this mode.
-
- Thanks to Felix Friedlander for the bugreport.
-
-commit 404e82616d950cbf45b16adb11ce3a52e285e16b
-Author: Fabrice Fontaine
-Date: Tue Aug 27 14:54:07 2024 +0200
-
- configure.ac: properly evaluate ac_test_CFLAGS
-
- Since autoconf 2.69 and
- https://git.savannah.gnu.org/cgit/autoconf.git/commit/?id=76754e04fce5f6a7701bec57b057020585df2ae3
- ac_test_CFLAGS is set to ${CFLAGS+y} instead of ${CFLAGS+set}.
-
- Just test that ac_test_CFLAGS is not empty, to support both cases.
-
- Signed-off-by: Fabrice Fontaine
- Signed-off-by: Arnout Vandecappelle (Essensium/Mind)
-
-commit acbdc29d57373a42a512b505c7d4169fd9ca2bee
-Author: Ondrej Zajicek
-Date: Tue Aug 27 14:28:41 2024 +0200
-
- Lib: Expand timer recurrence to 64b
-
- The period of recurent timers was stored in 32b field, despite it was
- btime-compatible value in us. Therefore, it was limited to ~72 min,
- which mas okay for most purposes, except configurable MRT dump periods.
-
- Thanks to Felix Friedlander for the bugreport.
-
-commit 5214d7e59fe4d5d89e14e8e7b654ded25f918afb
-Author: Ondrej Zajicek
-Date: Thu Aug 1 14:55:05 2024 +0200
-
- IO: Ensure that socket rcvbuf is large enough
-
- The socket structure has the field rbsize (receive buffer size), which
- controls the size of the userspace receive buffer. There is also kernel
- receive buffer, which in some cases may be smaller (e.g. on FreeBSD it
- is by default ~8k). The patch ensures that the kernel receive buffer is
- as large as the userspace receive buffer.
-
-commit c9836207f53be16860546f00fa27483f1e659551
-Author: Ondrej Zajicek
-Date: Tue Jul 30 16:42:32 2024 +0200
-
- IO: Fix missing return introduced in one of earlier patches
-
-commit df22b3140cad6bd8742dce16e6a1b342d4a83f6d
-Author: Ondrej Zajicek
-Date: Tue Jul 30 16:33:51 2024 +0200
-
- IO: Avoid re-binding accepted sockets to VRF
-
- When VRFs are used, BIRD correctly binds listening (and connecting)
- sockets to their VRFs but also re-binds accepted sockets to the same VRF.
- This is not needed as the interface bind is inherited in this case, and
- indeed this redundant bind causes an -EPERM if BIRD is running as
- non-root making BIRD close the connection and reject the peer.
-
- Thanks to Christian Svensson for the original patch and Alexander Zubkov
- for suggestions.
-
-commit 08ff0af8986099e6fb1d8a94c7ce62c83e4df7f1
-Author: Maria Matejka
-Date: Mon Jun 24 13:46:12 2024 +0200
-
- Additional CLI sockets may now be restricted
-
- This allows to have one main socket for the heavy operations
- very restricted just for the appropriate users, whereas the
- looking glass socket may be more open.
-
- Implemented an idea originally submitted and requested by Akamai.
-
-commit f3b6661ddda9a9c2591444799ff88cd82621d06b
-Author: Maria Matejka
-Date: Mon Jun 24 11:10:07 2024 +0200
-
- Additional CLI sockets can be now configured in the config file
-
- If the user has such a need, they may configure additional sockets
- in the config file. This may work for e.g. some advanced access control.
-
-commit a95fff37937171302167e670bd8b6e80d447cf65
-Author: Maria Matejka
-Date: Mon Jun 24 11:09:46 2024 +0200
-
- CLI now has a configuration structure
-
-commit 09f50f3766e54b04e006b45e04e96316942526fd
-Author: Maria Matejka
-Date: Mon Jun 24 11:27:45 2024 +0200
-
- Typed lists: added forgotten #undef
-
-commit f27004fb4d556148a22f7750feaefd3b329778f0
-Author: Maria Matejka
-Date: Mon Jun 24 09:45:57 2024 +0200
-
- Backported typed list updates from v3
-
- Source: dda37842dcf82dae8e441a6c2bcef4b0ffae3429
-
-commit 333c7e8536cf4a3b99c4c1359ac7679c7d9c7e27
-Author: Ondrej Zajicek
-Date: Wed Jun 26 16:38:03 2024 +0200
-
- Doc: Minor cleanups in BFD documentation
-
-commit 8a40bccffe9e28e211fe996845658f87f5cc60e9
-Author: Alexander Zubkov
-Date: Wed Jun 26 16:29:57 2024 +0200
-
- BFD: Add option to accept zero checksum for IPv6 UDP packets
-
- Some vendors do not fill the checksum for IPv6 UDP packets.
- For interoperability with such implementations one can set
- UDP_NO_CHECK6_RX socket option on Linux.
-
- Thanks to Ville O for the suggestion.
-
- Minor changes by committer.
-
-commit 00b139bd25c77b401d2065283cb970d9d8c1aa02
-Author: Ondrej Zajicek
-Date: Thu May 30 16:12:15 2024 +0200
-
- Kernel: Do not use route replace when krt_metric differs
-
- The krt_metric is a part of the primary key, so it cannot differ for
- route replace operation.
-
- Thanks to Leif Jakob for the bugreport.
-
-commit a5b4c21d8138bb533b02a60973b1ff4feedae456
-Author: Ondrej Zajicek
-Date: Thu May 30 02:40:55 2024 +0200
-
- Filter: Silence some warnings in clang
-
-commit 3327d6129896069fcaea00867d5adeaf85865c18
-Author: Ondrej Zajicek
-Date: Thu May 30 02:11:06 2024 +0200
-
- Lib: Fix BSD build
-
-commit c130b4e1aedfda8119b513ecaa82c7f7deda3228
-Author: Ondrej Zajicek
-Date: Wed May 29 13:03:10 2024 +0200
-
- Lib: Use access() function attribute
-
-commit 2d6fb31cd1142befb60cad15ce9da2a7eabb76e2
-Author: Ondrej Zajicek
-Date: Tue May 28 16:41:24 2024 +0200
-
- Lib: Use alloc_size() function attribute
-
-commit e29f134ad9346343277b7cb4581d2a704592dc79
-Author: Ondrej Zajicek
-Date: Tue May 28 15:31:52 2024 +0200
-
- BFD: Fix build when BFD is disabled
-
- Move bfd_opts grammar inside BFD parser code to avoid dependences between
- nest and BFD grammars, which breaks when BFD build is disabled.
-
- Add dummy bfd_opts grammar rule, so protocols can use this nonterminal
- even with BFD disabled.
-
- Thanks to Yuri Honegger for the bugreport.
-
-commit 765debf5236375595d52aaa188183df8b5edd4f4
-Author: Maria Matejka
-Date: Wed May 1 20:23:04 2024 +0200
-
- Formalized our contribution policy which we're currently applying
-
-commit d0512ba74bd45c772d3fdd5682fa88e5d30b86f7
-Author: Ondrej Zajicek
-Date: Wed Apr 17 17:07:47 2024 +0200
-
- Doc: BFD update
-
-commit e6dbde68836ab632126614fa5588268120997548
-Author: Katerina Kubecova
-Date: Thu Apr 11 14:53:39 2024 +0200
-
- BFD: Set password per session
-
-commit 13c10ee06241d4538603d21954be0c2db08911ba
-Author: Ondrej Zajicek
-Date: Thu Apr 11 18:54:23 2024 +0200
-
- Doc: Fix datetime format for password entries
-
- In BIRD 1, we used DD-MM-YYYY, while in BIRD 2 we switched to the usual
- format YYYY-MM-DD.
-
- Thanks to Janne Pisilä for the bugreport.
-
-commit 280daed57d061eb1ebc89013637c683fe23465e8
-Author: Ondrej Zajicek
-Date: Thu Apr 4 18:37:26 2024 +0200
-
- OSPF: Allow loopback nexthop in OSPFv3-IPv4
-
- In OSPFv3-IPv4 there is no requirement that link-local next hop announced
- in Link-LSA must be in interface address range. Therefore, for interfaces
- that do not have IPv4 address we can use some loopback IP address and
- announce it as a next hop. Also we should accept such address.
-
-commit bc10975adbb0aef772496f334dd0bbd23251c1d8
-Author: Maria Matejka
-Date: Sun Oct 15 23:52:46 2023 +0200
-
- ASPA: checks done in filters; no autoreload yet
-
-commit 08571b20598c58877e1565403d970efc2b90dba6
-Author: Maria Matejka
-Date: Sun Oct 15 16:04:36 2023 +0200
-
- ASPA: basic data structures and Static protocol support
-
-commit b95dc8f29f18eb177f91fdc4bf0716fac9b15366
-Author: Maria Matejka
-Date: Sun Oct 15 12:06:11 2023 +0200
-
- Expanded usage of stdbool.h to the whole BIRD
-
-commit 0b684a43bd7ce4a32c9cd7754b88286bcd1815bb
-Author: Ondrej Zajicek
-Date: Fri Mar 22 01:40:43 2024 +0100
-
- NEWS and version update
-
-commit a698f8d917af8e9b421a667766a42f45e9359616
-Author: Ondrej Zajicek
-Date: Fri Mar 22 00:40:06 2024 +0100
-
- Static: Fix invalid combination of nexthop options
-
- BFD requires defined local IP, but for nexthop with onlink there might
- not be such address. So we reject this combination of nexthop options.
- This prevent crash where such combination of options is used.
-
-commit d21a508e8d9210f5b3b60d8fc8b79a344d4a7440
-Author: Ondrej Zajicek
-Date: Thu Mar 21 15:59:26 2024 +0100
-
- Revert "OSPF: On physical PtP links, skip next-hop resolving"
-
- This reverts commit 31aa62ae6d2e111e87c08b4b27a16ead968f0689.
-
-commit 46a4932574106315e2585d990199da7825863a85
-Merge: 66d6ac708 44e351d15
-Author: Ondrej Zajicek
-Date: Thu Mar 21 15:58:52 2024 +0100
-
- Merge commit '44e351d1522f0099687aac9fd65dcea73a04af43'
-
-commit 66d6ac70856bdb29840983454373bb10a532e4f7
-Author: Ondrej Zajicek
-Date: Tue Mar 19 15:39:46 2024 +0100
-
- Babel: Fix build with limited set of protocols
-
-commit 06209c1917338a6d5f3844a31a1b9e29c1c85573
-Author: Ondrej Zajicek
-Date: Tue Mar 19 15:39:19 2024 +0100
-
- Aggregator: Fix build with limited set of protocols
-
-commit 099898ffdd7dd0133d520c96ff19319e500448b3
-Author: Michal Zagorski
-Date: Mon Mar 11 12:57:13 2024 +0100
-
- Static: Fix build with limited set of protocols
-
-commit adfff448789c9e75c525f5162c046fb44f9768cd
-Author: Ondrej Zajicek
-Date: Sun Mar 10 18:57:04 2024 +0100
-
- NEWS and version update
-
-commit 1b064355f752b9bfe4644f775697bbd9b711f762
-Author: Ondrej Zajicek
-Date: Tue Mar 5 19:04:10 2024 +0100
-
- Client: Add support for completion of command options
-
- We can easily extend command completion to handle also keywords for
- command options. Help for command options is not yet supported.
-
-commit 114be2af28e5c124bd479a487f89244ba99c272d
-Author: Ondrej Zajicek
-Date: Tue Mar 5 16:38:24 2024 +0100
-
- Filter: Add route attribute gw_mpls_stack
-
- Add route attribute gw_mpls_stack to make MPLS stack of route nexthop
- accessible from filters. Its type is T_CLIST, which is really not correct
- (as it is a list, while T_CLIST is a set). Therefore, we keep this
- attribute *undocumented* and it will be *changed* without further notice.
-
- Based on a patch from Trisha Biswas , thanks!
-
-commit 26dd61ee7f91c15157601b2404de5b6500a6061c
-Author: Ondrej Zajicek
-Date: Mon Mar 4 23:20:53 2024 +0100
-
- BFD: Add arguments to 'show bfd sessions' command
-
- Add several arguments to 'show bfd sessions' command to filter
- the list of sessions.
-
-commit 4737937375c657794d608ea02cefa289531d763a
-Author: Ondrej Zajicek
-Date: Fri Mar 1 18:39:09 2024 +0100
-
- BFD: Improve 'show bfd sessions all' command
-
-commit a48dc5efe05f4e985b648f19679865153d0398bd
-Author: Katerina Kubecova
-Date: Thu Jan 18 12:36:48 2024 +0100
-
- BFD: Show session for ip / ip prefix
-
-commit 37bf2078434b5de5662d28345bce788624d50ac7
-Author: Katerina Kubecova
-Date: Tue Jan 16 11:02:22 2024 +0100
-
- BFD: show bfd sessions all
-
-commit e2728c8078161d9811d6c24a11e4c95efd1c9313
-Author: Job Snijders
-Date: Thu Feb 22 14:58:29 2024 +0100
-
- RPKI: Add 'local address' configuration option
-
- Allow to explicitly configure the source IP address for RPKI-To-Router
- sessions. Predictable source addresses are useful for minimizing the
- holes to be poked in ACLs.
-
- Changed from 'source address' to 'local address' by committer.
-
-commit 2d0652dd1088395c50df8fe1a99f1111b44688c6
-Author: Ondrej Zajicek
-Date: Tue Feb 20 17:39:05 2024 +0100
-
- BGP: Maintain valid route attribute flags even in local tables
-
- BGP route attributes have flags (Optional, Transitive) that are validated
- on decode and set to valid value on export. But if such attribute is
- modified by filter or set internally by BGP during import, then its flags
- would be zero in local tables. That usually does not matter, as they are
- not used locally and they were fixed on export, but invalid flags leaked
- in BMP and MRT dumps.
-
- Keep route attribute flags set to valid values even when set by filters
- or modified by BGP.
-
-commit 44a16bff6cbf3f5ae8db21ffcec602bc51295d0a
-Author: Job Snijders
-Date: Sun Feb 18 09:00:10 2024 +0100
-
- BGP: Update SendHoldTimer BGP Error code
-
- IANA registered an "Early Allocation" BGP Error code for 'Send Hold
- Timer Expired' event. Update BIRD to use that error code.
-
-commit c3335b504403136ef8deb81cb034480a65ca2815
-Author: Ondrej Zajicek
-Date: Fri Feb 16 18:44:40 2024 +0100
-
- Static: Allow to define both nexthop and interface
-
- Allow to define both nexthop and interface using iproute2-like syntax,
- e.g.: route 10.0.0.0/16 via 10.1.0.1 dev "eth0";
-
- Now we can avoid to use link-local scope hack (e.g. 10.1.0.1%eth0)
- for cases where both nexthop and interface have to be defined.
-
- Thanks to Marcin Saklak for the suggestion.
-
-commit 5c04f0e2354ff0cca9b1479e68882b72755f3aab
-Author: Ondrej Zajicek
-Date: Fri Feb 16 14:54:17 2024 +0100
-
- Netlink: Fix spelling of krt_ssthresh / krt_lock_ssthresh
-
- BIRD route attribute for RTAX_SSTHRESH metric was krt_sstresh instead of
- krt_ssthresh. Fix that and keep old name as an depreacted alias.
-
-commit e68363909cb9733c1bf55fff80a8b034e4111849
-Author: Ondrej Zajicek
-Date: Fri Feb 16 14:29:54 2024 +0100
-
- Netlink: Cleanups in route metrics
-
- - Add krt_fastopen_no_cookie atttibute
- - Add missing krt_lock_* bits
- - Fix krt_feature_allfrag
- - Fix type of EA_KRT_LOCK and EA_KRT_FEATURES
-
-commit 225943eaea3cdd634dce8fd84547baf1bc363640
-Author: Ondrej Zajicek
-Date: Wed Feb 14 14:01:04 2024 +0100
-
- Filter: Add support for setting TCP congestion control algorithm
-
- Allow to set TCP congestion control algorithm using krt_congctl
- route attribute.
-
- Based on patch from Trisha Biswas , thanks!
-
-commit 224a152c53f304881f8616a1c9255b467062a069
-Author: Ondrej Zajicek
-Date: Wed Feb 14 13:58:56 2024 +0100
-
- Filter: Add support for string route attribute
-
-commit 574d7eb241a60622b0573ab1460cb23d968ba1cc
-Author: Alexander Zubkov
-Date: Wed Feb 7 19:11:10 2024 +0100
-
- BGP: Allow multiple EBGP neighbors with the same peer.
-
- We can distinguish BGP sessions if at least one side uses a different IP
- address. Extend olock mechanism to handle local IP as a part of key, with
- optional wildcard, so BGP sessions could local IP in the olock and not
- block themselves.
-
-commit 0b52f7c01f55707b25eebd0a66c48eafe06fe455
-Author: Inrin
-Date: Tue Feb 6 19:03:14 2024 +0100
-
- birdc: Do not execute cmd on noninteractive help request
-
- The help command triggered by '?' keeps the message in readline buffer,
- so it could be edited. For noninteractive shell it leads to an unexpected
- side effect that `echo ? | birdc` executes the command after
- showing its help. Avoid this by clearing the readline buffer in such case.
-
-commit ff2ebdc7e1c586762b04004608fb7aaf55e245c7
-Author: Ondrej Zajicek
-Date: Tue Feb 6 18:34:55 2024 +0100
-
- BGP: Increase max length of notification data in error logs
-
- Increase max length of notification data in error logs from 16 to 128.
- There is already enough space in the buffer.
-
- Thanks to Marco d'Itri for the suggestion.
-
-commit f40e2bc270d3635be518ae80251ce0b5c519c6f4
-Author: Ondrej Zajicek
-Date: Sat Jan 27 17:38:06 2024 +0100
-
- Nest: Fix bug in recursive routes with MPLS-labeled nexthops
-
- When a recursive route with MPLS-labeled nexthop was exported to kernel
- and read back, the nexthop_same() failed due to different labels_orig
- field and kernel protocol reinstalled it unnecessarily.
-
- For comparing hext hops, route cache has to distinguish ones with
- different labels_orig, but KRT has to ignore that, so we need two
- nexthop compare functions.
-
- Thanks to Marcel Menzel for the bugreport.
-
-commit 472be46f7ab211f38e7662543f1436df30dca753
-Author: Katerina Kubecova
-Date: Fri Jan 19 11:54:25 2024 +0100
-
- Filter: Tests for net_addr
-
- Minor changes by committer.
-
-commit 13c6cf8a7430a6b133e46525256eb5554b3f0a2b
-Author: Ondrej Zajicek
-Date: Mon Jan 22 06:29:14 2024 +0100
-
- Trivial code cleanups
-
-commit 44e351d1522f0099687aac9fd65dcea73a04af43
-Author: Maria Matejka
-Date: Fri Dec 8 20:53:20 2023 +0100
-
- RPKI: retry timer doesn't reset connections when more data is pending
-
- With very busy deployments, RPKI may kill cache connection too early.
- Instead of that, we want it to keep loading if any data is waiting to
- be read and the reason for delay is just our congestion.
-
- Also, when we kill the session because of actually slow cache, we want
- to reload from scratch as the data we have is unreliable and nobody
- knows whether the state is still valid.
-
-commit 2b6bd8ca3a3955a407b0553009b05572693cfdf7
-Author: Ondrej Zajicek
-Date: Wed Dec 13 18:07:38 2023 +0100
-
- OSPF: Cleanup some warnings
-
-commit 7d2c7d59a363e690995eb958959f0bc12445355c
-Author: Ondrej Zajicek
-Date: Wed Dec 13 17:46:16 2023 +0100
-
- Nest: Fix memory alignment in attribute cache
-
- In attribute cache, adata structures were stored densely in one memory
- block, without regard to alignment. Let's force at least u32 alignment.
-
-commit 2c7555cf2ac8439713dd9148b348128c57222a38
-Author: Ondrej Zajicek
-Date: Wed Dec 13 03:48:12 2023 +0100
-
- Log: Add support for UDP logging
-
- Add support for UDP logging, using RFC 3164 syslog protocol.
-
- Based on the patch from Alexander Zubkov , thanks!
-
-commit 8cf1be6f67eaeb9bfd2fffe4a4bc9ae419adffd5
-Merge: 4aac1b259 bb094fb6c
-Author: Maria Matejka
-Date: Fri Dec 8 12:09:30 2023 +0100
-
- Merge commit 'bb094fb6'
-
-commit bb094fb6c758897fabfeefa0c0d97dbc7a956246
-Author: Maria Matejka
-Date: Fri Dec 8 12:07:46 2023 +0100
-
- Refactoring also net_roa_check
-
- Having 4 functions doing almost the same is more mess than three macros.
-
-commit 4aac1b259fa94b99427f837564876baa2183ccb1
-Merge: bcf232742 54ddf90f6
-Author: Maria Matejka
-Date: Fri Dec 8 08:30:30 2023 +0100
-
- Merge commit '54ddf90f'
-
-commit 54ddf90f6370f06efc71c3ffd6e02d031a86866f
-Author: Maria Matejka
-Date: Thu Dec 7 14:38:05 2023 +0100
-
- Conf: debug tables
-
- For now just a dummy config but it is needed for forward
- compatibility with v3.
-
-commit 9a91ea52db32ec2fda830afd1c88f0f83e6c0df4
-Author: Maria Matejka
-Date: Thu Dec 7 14:10:11 2023 +0100
-
- Refactoring of net_route
-
-commit 3b48dc9bce12b00aa2a212495b19c925e0fda249
-Author: Maria Matejka
-Date: Thu Dec 7 13:54:41 2023 +0100
-
- Table: Adding route refresh begin and end debug messages
-
-commit bcf2327425d4dd96f381b87501cccf943bed606e
-Author: Katerina Kubecova
-Date: Fri Oct 27 17:11:06 2023 +0200
-
- BGP: Send hold timer
-
- Implement BGP Send hold timer according to draft-ietf-idr-bgp-sendholdtimer.
- The Send hold timer drops the session if the neighbor is sending keepalives,
- but does not receive our messages, causing the TCP connection to stall.
-
-commit 3fb06fea1d14ef147a567052391a5b359704e971
-Author: Ondrej Zajicek
-Date: Thu Nov 23 20:54:22 2023 +0100
-
- BGP: Add options to require BGP capabilities
-
- Some BGP capabilities change the BGP behavior in a significant way, so if
- the configuration depends on it, it is better to not establish BGP
- session when the capability is not available.
-
- Add several BGP option to require individual BGP capabilities during
- session negotiation.
-
-commit b6923f6386b04340d6b2b6a75fbe83c392f207ca
-Author: Ondrej Zajicek
-Date: Thu Nov 23 17:18:04 2023 +0100
-
- BGP: Simplify capability handling
-
-commit 31aa62ae6d2e111e87c08b4b27a16ead968f0689
-Author: Soha Jin
-Date: Thu Nov 9 14:33:25 2023 +0100
-
- OSPF: On physical PtP links, skip next-hop resolving
-
- Signed-off-by: Soha Jin
- Co-developed-by: Wende Tan
-
-commit a740054db50b8532680bd1673a5d4519af889c0f
-Author: Ondrej Zajicek
-Date: Wed Oct 25 18:25:46 2023 +0200
-
- Nest: Minor fixes in MPLS
-
-commit 06301a991d80597a2a0a9e449d0cdf4bc1eda6d1
-Author: Michal Rada
-Date: Tue Oct 17 14:58:14 2023 +0200
-
- Doc: prefix match prefix pattern definition typo (in sets of prefixes definition)
-
-commit 63f1c4d918209ba4210024638011f7b9ccdd894b
-Author: Ondrej Zajicek
-Date: Tue Mar 14 16:02:32 2023 +0100
-
- Use RTA_MAX_SIZE in rta_do_cow()
-
- This allows to modify MPLS label stack in filters. Fixes a bug in
- handling of 'gw_mpls' attribute.
-
-commit 108c4cfaf3b0fda5daf4bccf2f1ea45d7f3a271d
-Author: Maria Matejka
-Date: Tue Oct 24 12:40:52 2023 +0200
-
- Autoconf: minor reduction of redundancy
-
- Joined BIRD_CHECK_GCC_OPTION and BIRD_ADD_GCC_OPTION.
-
-commit c9b7b032110fbd49a5f084bfe3bc886e0e1edfe4
-Author: Ondrej Zajicek
-Date: Wed Oct 18 01:48:11 2023 +0200
-
- CI: Update for new netlab worker
-
- - Change tag from 'birdlab' to 'netlab'
- - Change path of gitlab-runner home dir
- - Use stayrtr from Debian
-
-commit 5973031460372a4d695c44a9f398d516b0e5bac1
-Author: Ondrej Zajicek
-Date: Mon Oct 16 15:24:32 2023 +0200
-
- CI: Add MPLS tests
-
-commit b5e9e5197bb75c4d7c8f19b1e76b31f9defcb915
-Author: Ondrej Zajicek
-Date: Mon Oct 16 15:21:36 2023 +0200
-
- MPLS: Fix issue with recursive MPLS routes
-
- Recursive MPLS routes used hostentry from the original route, which
- triggered different table than MPLS table, and therefore were not
- updated.
-
-commit 0e1fbaa5b21db8e5c64a732dbaf0b8afe707a147
-Author: Ondrej Zajicek
-Date: Fri Oct 6 18:53:25 2023 +0200
-
- NEWS and version update
-
-commit 23f94b1368b71faa0a03e50b9e9d0cf8535cff3a
-Author: Ondrej Zajicek
-Date: Fri Oct 6 18:52:02 2023 +0200
-
- Doc: Minor fixes
-
-commit c5c3a22bccda5454775b48ad318a7fd4bf197f86
-Author: Ondrej Zajicek
-Date: Fri Oct 6 02:36:59 2023 +0200
-
- Conf: Bytestrings with hex: should use the same general format as ones without.
-
- Either hex:01234567, or hex:01:23:45:67. No confusing formats like
- hex:0123:4567:ab:cdef, which looks like there is an implicit zero byte.
-
-commit e83beb70bd14923cece5b35411606ade6fb8fbee
-Author: Pavel Šorejs
-Date: Fri Oct 6 04:31:19 2023 +0200
-
- KRT: Allow to learn routes with RTPROT_KERNEL
-
- The Kernel protocol, even with the option 'learn' enabled, ignores
- direct routes created by the OS kernel (on Linux these are routes
- with rtm_protocol == RTPROT_KERNEL).
-
- Implement optional behavior where both OS kernel and third-party routes
- are learned, it can be enabled by 'learn all' option.
-
- Minor changes by committer.
-
-commit 57aa077227d1f2440dc1b2bb6cbbebd418a6b898
-Author: Ondrej Zajicek
-Date: Thu Oct 5 21:29:04 2023 +0200
-
- BGP: Improve custom BGP attributes
-
- - Implement EA_GET for custom BGP attributes
- - Forbid EA_SET on existing opaque attributes
- - Forbid redefining existing attributes
- - Document possible compatibility problems
-
-commit ba01a6f2e66d03eb5d9426fdf4973f30e09c5710
-Author: Ondrej Zajicek
-Date: Thu Oct 5 17:54:43 2023 +0200
-
- MPLS: Handle compatibility with old configs
-
- Old configs do not define MPLS domains and may use a static protocol
- to define static MPLS routes.
-
- When MPLS channel is the only channel of static protocol, handle it
- as a main channel. Also, define implicit MPLS domain if needed and
- none is defined.
-
-commit de09fda5dcef16bf50663f7ffb56074e6ad20b5a
-Author: Ondrej Zajicek
-Date: Thu Oct 5 14:26:22 2023 +0200
-
- Filter: Fix scope handling in for loops
-
- Changes in scope implementation broke scope handling in for loops.
- The term in for loops is supposed to be parsed in the parent scope.
-
-commit abae806efdf6ac5f919c93057dd8df1faff1058c
-Author: Ondrej Zajicek
-Date: Wed Oct 4 20:14:12 2023 +0200
-
- Conf: Fix 'show symbols'
-
- Seems like the root scope was not marked as active.
-
-commit ab47c2ae466f785212f0519388417ebb31b2cf24
-Author: Ondrej Zajicek
-Date: Wed Oct 4 19:45:00 2023 +0200
-
- BGP: Custom attribute definitions should use cfg_alloc(), not malloc()
-
- Otherwise we would get memory leaks.
-
-commit d41b06238dc2167f8e470aa2fb31cb937ff8fb3e
-Author: Maria Matejka
-Date: Wed Oct 4 19:57:55 2023 +0200
-
- Filter: explicitly forbidden for-loop with pre-defined variable
-
-commit 6a242b3ec66f2ab89f9277e67125eab3e3676644
-Author: Ondrej Zajicek
-Date: Wed Oct 4 17:36:03 2023 +0200
-
- IO: Fix race condition in event processing
-
- When regular event was added from work event, we did remember that
- regular event list was empty and therefore we did not use zero time
- in poll(). This leads to ~3 s latency in route reload during
- reconfiguration.
-
-commit 0bfa216f496279905b843abcfb1242477b86783c
-Author: Ondrej Zajicek
-Date: Wed Oct 4 15:25:05 2023 +0200
-
- Doc: Fix syntax errors in SGML
-
-commit be09b030ed40c76ee0727dd3980df77094fdc907
-Author: Ondrej Zajicek
-Date: Wed Oct 4 15:00:24 2023 +0200
-
- MPLS: Update to support and use 64bit source id
-
-commit 8f5511dafb54b5788546065c9b572f9b4f9d47ee
-Author: Ondrej Zajicek
-Date: Sun Oct 1 05:02:46 2023 +0200
-
- L3VPN: Import/export target reconfiguration
-
-commit cab5fce2b6822b7f3a892103077f26e197fecfbc
-Author: Ondrej Zajicek
-Date: Wed Oct 4 13:00:06 2023 +0200
-
- Doc: L3VPN documentation
-
-commit d8130da86bda6244e1f5c06eb9b9033625b781e6
-Author: Ondrej Zajicek
-Date: Sat Sep 30 23:18:04 2023 +0200
-
- BGP, L3VPN: Fix MPLS channel reload
-
- When a MPLS channel is reloaded, it should reload all regular MPLS-aware
- channels. This causes re-evaluation of routes in FEC map and possibly
- reannouncement of MPLS routes.
-
-commit 8a70885694c5a3b384deba0f8cd25b7f63b99fcd
-Author: Ondrej Zajicek
-Date: Tue Oct 3 16:11:18 2023 +0200
-
- Doc: MPLS documentation
-
-commit a7a9df8639c701dd020cf61d19b205230742a17e
-Author: Ondrej Zajicek