Commit 4ff15a75 authored by Ondrej Zajicek (work)'s avatar Ondrej Zajicek (work)
Browse files

Merge commit '98bb80a2' into int-new

parents cd80c9b0 98bb80a2
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -11,3 +11,4 @@
/config.status
/configure
/sysdep/autoconf.h.in
/sysdep/autoconf.h.in~

.gitlab-ci.yml

0 → 100644
+349 −0
Original line number Diff line number Diff line
variables:
  DEBIAN_FRONTEND: noninteractive
  LC_ALL: C
  GIT_STRATEGY: fetch
  DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
  IMG_BASE: registry.labs.nic.cz/labs/bird

stages:
  - image
  - build

.docker: &docker_build
  stage: image
  allow_failure: true
  script:
  - $DOCKER_CMD login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.labs.nic.cz
  # Make sure we refresh the base image if it updates (eg. security updates, etc)
  # If we do just the build, cache is always reused and the freshness of the
  # base image is never checked. However, pull always asks and updates the
  # image only if it changed ‒ therefore, the cache is used unless there's a
  # change.
  - $DOCKER_CMD pull `sed -ne 's/^FROM //p' "misc/docker/$IMG_NAME/Dockerfile"`
  - $DOCKER_CMD build -t "bird:$IMG_NAME" "misc/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
  tags:
  # That's Docker in Docker
  - dind

docker_debian-7-amd64:
  variables:
    IMG_NAME: "debian-7-amd64"
  <<: *docker_build

docker_debian-8-amd64:
  variables:
    IMG_NAME: "debian-8-amd64"
  <<: *docker_build

docker_debian-9-amd64:
  variables:
    IMG_NAME: "debian-9-amd64"
  <<: *docker_build

docker_debian-testing-amd64:
  variables:
    IMG_NAME: "debian-testing-amd64"
  <<: *docker_build

docker_debian-7-i386:
  variables:
    IMG_NAME: "debian-7-i386"
  <<: *docker_build

docker_debian-8-i386:
  variables:
    IMG_NAME: "debian-8-i386"
  <<: *docker_build

docker_debian-9-i386:
  variables:
    IMG_NAME: "debian-9-i386"
  <<: *docker_build

docker_debian-testing-i386:
  variables:
    IMG_NAME: "debian-testing-i386"
  <<: *docker_build

docker_fedora-25-amd64:
  variables:
    IMG_NAME: "fedora-25-amd64"
  <<: *docker_build

docker_fedora-26-amd64:
  variables:
    IMG_NAME: "fedora-26-amd64"
  <<: *docker_build

docker_centos-6-amd64:
  variables:
    IMG_NAME: "centos-6-amd64"
  <<: *docker_build

docker_centos-7-amd64:
  variables:
    IMG_NAME: "centos-7-amd64"
  <<: *docker_build

docker_opensuse-42_3-amd64:
  variables:
    IMG_NAME: "opensuse-42.3-amd64"
  <<: *docker_build

docker_ubuntu-14_04-amd64:
  variables:
    IMG_NAME: "ubuntu-14.04-amd64"
  <<: *docker_build

docker_ubuntu-16_04-amd64:
  variables:
    IMG_NAME: "ubuntu-16.04-amd64"
  <<: *docker_build

.debian-7-i386: &debian-7-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-7-i386
  tags:
  - docker
  - linux
  - amd64

.debian-8-i386: &debian-8-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-8-i386
  tags:
  - docker
  - linux
  - amd64

.debian-9-i386: &debian-9-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-9-i386
  tags:
  - docker
  - linux
  - amd64

.debian-testing-i386: &debian-testing-i386_env
  image: registry.labs.nic.cz/labs/bird:debian-testing-i386
  tags:
  - docker
  - linux
  - amd64

.debian-7-amd64: &debian-7-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-7-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-8-amd64: &debian-8-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-8-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-9-amd64: &debian-9-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-9-amd64
  tags:
  - docker
  - linux
  - amd64

.debian-testing-amd64: &debian-testing-amd64_env
  image: registry.labs.nic.cz/labs/bird:debian-testing-amd64
  tags:
  - docker
  - linux
  - amd64

.fedora-25-amd64: &fedora-25-amd64_env
  image: registry.labs.nic.cz/labs/bird:fedora-25-amd64
  tags:
  - docker
  - linux
  - amd64

.fedora-26-amd64: &fedora-26-amd64_env
  image: registry.labs.nic.cz/labs/bird:fedora-26-amd64
  tags:
  - docker
  - linux
  - amd64

.centos-6-amd64: &centos-6-amd64_env
  image: registry.labs.nic.cz/labs/bird:centos-6-amd64
  tags:
  - docker
  - linux
  - amd64

.centos-7-amd64: &centos-7-amd64_env
  image: registry.labs.nic.cz/labs/bird:centos-7-amd64
  tags:
  - docker
  - linux
  - amd64

.opensuse-42_3-amd64: &opensuse-42_3-amd64_env
  image: registry.labs.nic.cz/labs/bird:opensuse-42.3-amd64
  tags:
  - docker
  - linux
  - amd64

.ubuntu-14_04-amd64: &ubuntu-14_04-amd64_env
  image: registry.labs.nic.cz/labs/bird:ubuntu-14.04-amd64
  tags:
  - docker
  - linux
  - amd64

.ubuntu-16_04-amd64: &ubuntu-16_04-amd64_env
  image: registry.labs.nic.cz/labs/bird:ubuntu-16.04-amd64
  tags:
  - docker
  - linux
  - amd64

# TODO We want to copy these BSDs to our own virtual machines, to make sure someone doesn't update them by accident.
.freebsd-11-i386: &freebsd-11-i386_env
  variables:
    CPPFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
  tags:
  - freebsd
  - i386
  #only:
  #- master
  #- triggers
  #- tags

.freebsd-11-amd64: &freebsd-11-amd64_env
  variables:
    CPPFLAGS: "-I/usr/local/include"
    LDFLAGS: "-L/usr/local/lib"
  tags:
  - freebsd
  - amd64
  #only:
  #- master
  #- triggers
  #- tags

.build: &build_job
  stage: build
  script:
  - autoreconf
  - ./configure CPPFLAGS="$CPPFLAGS" LDFLAGS="$LDFLAGS"
  # Detect which make is available
  - MAKE=make
  - which gmake 2>/dev/null >/dev/null && MAKE=gmake
  - $MAKE
  # Run tests if they are available (eg. don't fail if "check" isn't a valid make target)
  - $MAKE check || [ "$?" = 2 ]

build-debian-7-amd64:
  variables:
    IPV6: "no"
  <<: *debian-7-amd64_env
  <<: *build_job

build-debian-8-amd64:
  variables:
    IPV6: "no"
  <<: *debian-8-amd64_env
  <<: *build_job

build-debian-9-amd64:
  variables:
    IPV6: "no"
  <<: *debian-9-amd64_env
  <<: *build_job

build-debian-testing-amd64:
  variables:
    IPV6: "no"
  <<: *debian-testing-amd64_env
  <<: *build_job

build-fedora-25-amd64:
  variables:
    IPV6: "no"
  <<: *fedora-25-amd64_env
  <<: *build_job

build-fedora-26-amd64:
  variables:
    IPV6: "no"
  <<: *fedora-26-amd64_env
  <<: *build_job

build-centos-6-amd64:
  variables:
    IPV6: "no"
  <<: *centos-6-amd64_env
  <<: *build_job

build-centos-7-amd64:
  variables:
    IPV6: "no"
  <<: *centos-7-amd64_env
  <<: *build_job

build-opensuse-42_3-amd64:
  variables:
    IPV6: "no"
  <<: *opensuse-42_3-amd64_env
  <<: *build_job

build-ubuntu-14_04-amd64:
  variables:
    IPV6: "no"
  <<: *ubuntu-14_04-amd64_env
  <<: *build_job

build-ubuntu-16_04-amd64:
  variables:
    IPV6: "no"
  <<: *ubuntu-16_04-amd64_env
  <<: *build_job

build-debian-7-i386:
  variables:
    IPV6: "no"
  <<: *debian-7-i386_env
  <<: *build_job

build-debian-8-i386:
  variables:
    IPV6: "no"
  <<: *debian-8-i386_env
  <<: *build_job

build-debian-9-i386:
  variables:
    IPV6: "no"
  <<: *debian-9-i386_env
  <<: *build_job

build-debian-testing-i386:
  variables:
    IPV6: "no"
  <<: *debian-testing-i386_env
  <<: *build_job

build-freebsd-11-amd64:
  variables:
    IPV6: "no"
  <<: *freebsd-11-amd64_env
  <<: *build_job

build-freebsd-11-i386:
  variables:
    IPV6: "no"
  <<: *freebsd-11-i386_env
  <<: *build_job

TODO

deleted100644 → 0
+0 −45
Original line number Diff line number Diff line
Core
~~~~
- socket open failure should not be fatal
- &&,||: priorities
- static: allow specifying a per-route filter program for setting route attributes?

Globals
~~~~~~~
- right usage of DBG vs. debug
- logging and tracing; use appropriate log levels
- check incoming packets and log errors!!
- check log calls for trailing newlines and log levels followed by comma
- check if all protocols set proper packet priorities and TTL's.
- try compiling with -Wunused
- does everybody test return value of sk_open?
- protocols: implement CLI hooks and per-procotol CLI commands
- protocols: implement reconfigure hook
- protocols: use locking
- check use of system includes and sprintf()

Various ideas
~~~~~~~~~~~~~
- client: Ctrl-R eats one more enter
- bgp: timing of updates?
- netlink: import Linux route attributes to our rta's, so that they can be filtered?
- config: executable config files
- filters: user defined attributes?
- io: use poll if available
- route recalculation timing and flap dampening [see RFC2439 for algorithms]
- aggregate engine: standard route aggregation and summarization [RFC2519]
- aggregate engine: injection of manually configured pseudo-static routes
- generate default route if any working BGP connection exists (aggregate engine again?)
- generate default route to IGP's (aggregate engine yet another time?)
- look at RFC 2386 (QoS-based routing)
- cli: show tables?

OSPF
~~~~
	- check incoming packets using neighbor cache
	- RFC2328 appendix E: Use a better algorithm
	- automatic generation of external route tags (RFC1403)
	- RFC2370 opaque LSA's
	- Limit export rate of external LSAs (like Gated does)
	- Bugfix in link state retransmission list (aging)
	- Graceful OSPF restart - RFC3623
+2 −1
Original line number Diff line number Diff line
@@ -25,9 +25,10 @@
#include <fcntl.h>
#include <unistd.h>
#include <errno.h>
#include <sys/select.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/types.h>
#include <sys/un.h>

#include "nest/bird.h"
#include "lib/resource.h"
+6 −0
Original line number Diff line number Diff line
@@ -3660,6 +3660,12 @@ dsc-iface
	as a default router. For <cf/sensitive/ option, see <ref id="radv-trigger" name="trigger">.
	Default: 3 * <cf/max ra	interval/, <cf/sensitive/ yes.

	<tag><label id="radv-iface-linger-time">linger time <m/expr/</tag>
	When a prefix disappears, it is advertised for some time with 0
	lifetime, to inform clients the prefix is no longer usable. This option
	sets the time for how long it is advertised (in seconds). Maximum is
	3600, 0 means disabled. Default: 300.

	<tag><label id="radv-iface-default-preference-low">default preference low|medium|high</tag>
	This option specifies the Default Router Preference value to advertise
	to hosts. Default: medium.
Loading