Commit b7e2e8bc authored by Jan Maria Matejka's avatar Jan Maria Matejka
Browse files

Merge branch 'int-new' into bash-completion

parents 87237fa3 cb21c5ff
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
+315 −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
  - $MAKE check

build-debian-7-amd64:
  <<: *debian-7-amd64_env
  <<: *build_job

build-debian-8-amd64:
  <<: *debian-8-amd64_env
  <<: *build_job

build-debian-9-amd64:
  <<: *debian-9-amd64_env
  <<: *build_job

build-debian-testing-amd64:
  <<: *debian-testing-amd64_env
  <<: *build_job

build-fedora-25-amd64:
  <<: *fedora-25-amd64_env
  <<: *build_job

build-fedora-26-amd64:
  <<: *fedora-26-amd64_env
  <<: *build_job

build-centos-6-amd64:
  <<: *centos-6-amd64_env
  <<: *build_job

build-centos-7-amd64:
  <<: *centos-7-amd64_env
  <<: *build_job

build-opensuse-42_3-amd64:
  <<: *opensuse-42_3-amd64_env
  <<: *build_job

build-ubuntu-14_04-amd64:
  <<: *ubuntu-14_04-amd64_env
  <<: *build_job

build-ubuntu-16_04-amd64:
  <<: *ubuntu-16_04-amd64_env
  <<: *build_job

build-debian-7-i386:
  <<: *debian-7-i386_env
  <<: *build_job

build-debian-8-i386:
  <<: *debian-8-i386_env
  <<: *build_job

build-debian-9-i386:
  <<: *debian-9-i386_env
  <<: *build_job

build-debian-testing-i386:
  <<: *debian-testing-i386_env
  <<: *build_job

build-freebsd-11-amd64:
  <<: *freebsd-11-amd64_env
  <<: *build_job

build-freebsd-11-i386:
  <<: *freebsd-11-i386_env
  <<: *build_job
+28 −27
Original line number Diff line number Diff line
Version 2.0.0-pre1 (2017-04-29)
Version 2.0.0 (2017-12-11)
  o Integrated IPv4 + IPv6 design
  o Support for MPLS next hops
  o VPNv4 and VPNv6 network types
  o Support for VPNv4 and VPNv6 networks
  o Microsecond timers infrastructure
  o Basic VRF support
  o Babel: Support for dual-stack IPv4/IPv6
  o Babel: Many improvements and bugfixes
  o Major BGP protocol redesign
  o Full support for Multiprotocol BGP
  o BGP multicast support (SAFI 2)
  o BGP flowspec support (RFC 5575)
  o BGP with MPLS labels (RFC 3107)
  o BGP MPLS/VPN support (RFC 4364)
  o BGP 6PE - IPv6 NLRI over IPv4 MPLS (RFC 4798)
  o BGP IPv4 NLRI with an IPv6 Next Hop (RFC 5549)
  o BGP Confederations (RFC 5065)
  o BGP: Simplify igp table options
  o BGP Shutdown communication (RFC 8203)
  o BGP: Allow exchanging LOCAL_PREF with eBGP peers
  o BGP: Allow to specify interface for regular sessions
  o Babel support restored
  o OSPF: Support of address families in OSPFv3
  o OSPF: Enable ECMP and Link detection by default
  o RAdv: Support for more specific routes (RFC 4191)
  o RAdv: Proper handling of prefix retraction
  o RIP: Enable ECMP and Link detection by default
  o Redesign of RPKI handling
  o New RPKI-Router protocol
  o Static: Minor overhaul
  o Netlink: Default kernel metric changed to 32
  o Flowspec: Limit tcp mask length to 12 bits
  o Static: Support for all new route types
  o Kenrel: Default Linux kernel metric changed to 32
  o Kernel: Fix IPv6 ECMP handling with Linux 4.11+
  o Update of show route command

  Notes:

  Definitions of OSPFv2, OSPFv3 and RIP NG protocols now use keywords
  'ospf v2', 'ospf v3' and 'rip ng' instead of 'ospf2', 'ospf3' and 'ripng'.

  Flows and ROAs no longer use phony next hops, so there is no need to use
  'drop' or 'unreachable' in their static route definitions.

  See doc/bird.conf.example2 for configuration examples.


Version 2.0.0-pre0 (2016-12-07)
  o Integrated IPv4 + IPv6 design
  o Major BGP protocol redesign
  o BGP multicast support (SAFI 2)
  o BGP flowspec support (RFC 5575)
  o New RPKI-Router protocol
  o BIRD client persistent history
  o New build system
  o Unit tests
  o ...

  Notes:

  Protocols and tables are now connected using explicit channels, most related
  protocol options (table, import, export, ...) are now channel options. See
  doc/bird.conf.example2 for configuration examples.
  Tables are now defined with appropriate net type keyword. Protocols and tables
  are now connected by explicit channels, most related protocol options (table,
  import, export, ...) are now channel options. See doc/bird.conf.example2 for
  configuration examples. Some options were removed/replaced.


Version 1.6.3 (2016-12-21)
+2 −2
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
                (c) 1998--2008  Martin Mares <mj@ucw.cz>
                (c) 1998--2000  Pavel Machek <pavel@ucw.cz>
                (c) 1998--2008  Ondrej Filip <feela@network.cz>
                (c) 2009--2016  CZ.NIC z.s.p.o.
                (c) 2009--2017  CZ.NIC z.s.p.o.

================================================================================

@@ -19,7 +19,7 @@ Public License.
What do we support
==================

	o  Both IPv4 and IPv6 (use --enable-ipv6 when configuring)
	o  Both IPv4 and IPv6
	o  Multiple routing tables
	o  Border Gateway Protocol (BGPv4)
	o  Routing Information Protocol (RIPv2, RIPng)

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
Loading