Commit 92e48894 authored by Maria Matejka's avatar Maria Matejka
Browse files

Merge commit '75aceada' into sark-bgp-rebased

parents 28a43d53 75aceada
Loading
Loading
Loading
Loading
+52 −52
Original line number Diff line number Diff line
@@ -3,7 +3,7 @@ variables:
  LC_ALL: C.UTF-8
  GIT_STRATEGY: fetch
  DOCKER_CMD: docker --config="$HOME/.docker/$CI_JOB_ID/"
  IMG_BASE: registry.labs.nic.cz/labs/bird
  IMG_BASE: registry.nic.cz/labs/bird
  TOOLS_DIR: /var/lib/gitlab-runner/bird-tools

stages:
@@ -16,7 +16,7 @@ stages:
  stage: image
  allow_failure: true
  script:
  - $DOCKER_CMD login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.labs.nic.cz
  - $DOCKER_CMD login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.nic.cz
  # Make sure we refresh the base image if it updates (eg. security updates, etc)
  # If we do just the build, cache is always reused and the freshness of the
  # base image is never checked. However, pull always asks and updates the
@@ -224,123 +224,123 @@ docker_opensuse-15.3-amd64:

build-debian-8-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-8-amd64
  image: registry.nic.cz/labs/bird:debian-8-amd64

build-debian-8-i386:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-8-i386
  image: registry.nic.cz/labs/bird:debian-8-i386

build-debian-9-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-9-amd64
  image: registry.nic.cz/labs/bird:debian-9-amd64

build-debian-9-i386:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-9-i386
  image: registry.nic.cz/labs/bird:debian-9-i386

build-debian-10-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-10-amd64
  image: registry.nic.cz/labs/bird:debian-10-amd64

build-debian-10-i386:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-10-i386
  image: registry.nic.cz/labs/bird:debian-10-i386

build-debian-11-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-11-amd64
  image: registry.nic.cz/labs/bird:debian-11-amd64

#build-debian-11-i386:
#  <<: *build-linux
#  image: registry.labs.nic.cz/labs/bird:debian-11-i386
#  image: registry.nic.cz/labs/bird:debian-11-i386

build-debian-testing-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:debian-testing-amd64
  image: registry.nic.cz/labs/bird:debian-testing-amd64

#build-debian-testing-i386:
#  <<: *build-linux
#  image: registry.labs.nic.cz/labs/bird:debian-testing-i386
#  image: registry.nic.cz/labs/bird:debian-testing-i386

build-fedora-25-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-25-amd64
  image: registry.nic.cz/labs/bird:fedora-25-amd64

build-fedora-26-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-26-amd64
  image: registry.nic.cz/labs/bird:fedora-26-amd64

build-fedora-27-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-27-amd64
  image: registry.nic.cz/labs/bird:fedora-27-amd64

build-fedora-28-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-28-amd64
  image: registry.nic.cz/labs/bird:fedora-28-amd64

build-fedora-29-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-29-amd64
  image: registry.nic.cz/labs/bird:fedora-29-amd64

build-fedora-30-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-30-amd64
  image: registry.nic.cz/labs/bird:fedora-30-amd64

build-fedora-31-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-31-amd64
  image: registry.nic.cz/labs/bird:fedora-31-amd64

build-fedora-32-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-32-amd64
  image: registry.nic.cz/labs/bird:fedora-32-amd64

build-fedora-33-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-33-amd64
  image: registry.nic.cz/labs/bird:fedora-33-amd64

build-fedora-34-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:fedora-33-amd64
  image: registry.nic.cz/labs/bird:fedora-33-amd64

build-centos-8-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:centos-8-amd64
  image: registry.nic.cz/labs/bird:centos-8-amd64

build-ubuntu-16_04-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:ubuntu-16.04-amd64
  image: registry.nic.cz/labs/bird:ubuntu-16.04-amd64

build-ubuntu-18_04-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:ubuntu-18.04-amd64
  image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64

build-ubuntu-20_04-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:ubuntu-20.04-amd64
  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64

build-ubuntu-20_10-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:ubuntu-20.10-amd64
  image: registry.nic.cz/labs/bird:ubuntu-20.10-amd64

#build-ubuntu-21_04-amd64:
#  <<: *build-linux
#  image: registry.labs.nic.cz/labs/bird:ubuntu-21.04-amd64
#  image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64

build-opensuse-15.0-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:opensuse-15.0-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.0-amd64

build-opensuse-15.1-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:opensuse-15.1-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.1-amd64

build-opensuse-15.2-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:opensuse-15.2-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.2-amd64

build-opensuse-15.3-amd64:
  <<: *build-linux
  image: registry.labs.nic.cz/labs/bird:opensuse-15.3-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.3-amd64

build-freebsd-11-amd64:
  <<: *build-base
@@ -390,105 +390,105 @@ build-freebsd-11-i386:
#pkg-debian-8-amd64:
#  <<: *pkg-deb
#  needs: [build-debian-8-amd64]
#  image: registry.labs.nic.cz/labs/bird:debian-8-amd64
#  image: registry.nic.cz/labs/bird:debian-8-amd64

# Dpkg error: PATH is not set
#pkg-debian-8-i386:
#  <<: *pkg-deb
#  needs: [build-debian-8-i386]
#  image: registry.labs.nic.cz/labs/bird:debian-8-i386
#  image: registry.nic.cz/labs/bird:debian-8-i386

# Dpkg error: PATH is not set
pkg-debian-9-amd64:
  <<: *pkg-deb
  needs: [build-debian-9-amd64]
  image: registry.labs.nic.cz/labs/bird:debian-9-amd64
  image: registry.nic.cz/labs/bird:debian-9-amd64

# Dpkg error: PATH is not set
pkg-debian-9-i386:
  <<: *pkg-deb
  needs: [build-debian-9-i386]
  image: registry.labs.nic.cz/labs/bird:debian-9-i386
  image: registry.nic.cz/labs/bird:debian-9-i386

pkg-debian-10-amd64:
  <<: *pkg-deb
  needs: [build-debian-10-amd64]
  image: registry.labs.nic.cz/labs/bird:debian-10-amd64
  image: registry.nic.cz/labs/bird:debian-10-amd64

pkg-debian-10-i386:
  <<: *pkg-deb
  needs: [build-debian-10-i386]
  image: registry.labs.nic.cz/labs/bird:debian-10-i386
  image: registry.nic.cz/labs/bird:debian-10-i386

pkg-debian-11-amd64:
  <<: *pkg-deb
  needs: [build-debian-11-amd64]
  image: registry.labs.nic.cz/labs/bird:debian-11-amd64
  image: registry.nic.cz/labs/bird:debian-11-amd64

pkg-fedora-30-amd64:
  <<: *pkg-rpm-wa
  needs: [build-fedora-30-amd64]
  image: registry.labs.nic.cz/labs/bird:fedora-30-amd64
  image: registry.nic.cz/labs/bird:fedora-30-amd64

pkg-fedora-31-amd64:
  <<: *pkg-rpm-wa
  needs: [build-fedora-31-amd64]
  image: registry.labs.nic.cz/labs/bird:fedora-31-amd64
  image: registry.nic.cz/labs/bird:fedora-31-amd64

pkg-fedora-32-amd64:
  <<: *pkg-rpm-wa
  needs: [build-fedora-32-amd64]
  image: registry.labs.nic.cz/labs/bird:fedora-32-amd64
  image: registry.nic.cz/labs/bird:fedora-32-amd64

pkg-fedora-33-amd64:
  <<: *pkg-rpm-wa
  needs: [build-fedora-33-amd64]
  image: registry.labs.nic.cz/labs/bird:fedora-33-amd64
  image: registry.nic.cz/labs/bird:fedora-33-amd64

pkg-fedora-34-amd64:
  <<: *pkg-rpm
  needs: [build-fedora-34-amd64]
  image: registry.labs.nic.cz/labs/bird:fedora-34-amd64
  image: registry.nic.cz/labs/bird:fedora-34-amd64

pkg-centos-8-amd64:
  <<: *pkg-rpm-wa
  needs: [build-centos-8-amd64]
  image: registry.labs.nic.cz/labs/bird:centos-8-amd64
  image: registry.nic.cz/labs/bird:centos-8-amd64

pkg-ubuntu-18.04-amd64:
  <<: *pkg-deb
  needs: [build-ubuntu-18_04-amd64]
  image: registry.labs.nic.cz/labs/bird:ubuntu-18.04-amd64
  image: registry.nic.cz/labs/bird:ubuntu-18.04-amd64

pkg-ubuntu-20.04-amd64:
  <<: *pkg-deb
  needs: [build-ubuntu-20_04-amd64]
  image: registry.labs.nic.cz/labs/bird:ubuntu-20.04-amd64
  image: registry.nic.cz/labs/bird:ubuntu-20.04-amd64

pkg-ubuntu-20.10-amd64:
  <<: *pkg-deb
  needs: [build-ubuntu-20_10-amd64]
  image: registry.labs.nic.cz/labs/bird:ubuntu-20.10-amd64
  image: registry.nic.cz/labs/bird:ubuntu-20.10-amd64

#pkg-ubuntu-21.04-amd64:
#  <<: *pkg-deb
#  needs: [build-ubuntu-21_04-amd64]
#  image: registry.labs.nic.cz/labs/bird:ubuntu-21.04-amd64
#  image: registry.nic.cz/labs/bird:ubuntu-21.04-amd64

pkg-opensuse-15.1-amd64:
  <<: *pkg-rpm-wa
  needs: [build-opensuse-15.1-amd64]
  image: registry.labs.nic.cz/labs/bird:opensuse-15.1-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.1-amd64

pkg-opensuse-15.2-amd64:
  <<: *pkg-rpm-wa
  needs: [build-opensuse-15.2-amd64]
  image: registry.labs.nic.cz/labs/bird:opensuse-15.2-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.2-amd64

pkg-opensuse-15.3-amd64:
  <<: *pkg-rpm-wa
  needs: [build-opensuse-15.3-amd64]
  image: registry.labs.nic.cz/labs/bird:opensuse-15.3-amd64
  image: registry.nic.cz/labs/bird:opensuse-15.3-amd64


build-birdlab:
+17 −1
Original line number Diff line number Diff line
@@ -1299,6 +1299,9 @@ in the foot).
	The same syntax can also be used to construct a pair from two arbitrary
	integer expressions (for example <cf/(1+2,a)/).

	Operators <cf/.asn/ and <cf/.data/ can be used to extract corresponding
	components of a pair: <cf>(<m/asn/, <m/data/)</cf>.

	<tag><label id="type-quad">quad</tag>
	This is a dotted quad of numbers used to represent router IDs (and
	others). Each component can have a value from 0 to 255. Literals of
@@ -1389,6 +1392,10 @@ in the foot).
	pairs, LCs can be constructed using expressions for its parts, (e.g.
	<cf/(myas, 10+20, 3*10)/, where <cf/myas/ is an integer variable).

	Operators <cf/.asn/, <cf/.data1/, and <cf/.data2/ can be used
	to extract corresponding components of LCs:
	<cf>(<m/asn/, <m/data1/, <m/data2/)</cf>.

	<tag><label id="type-set">int|pair|quad|ip|prefix|ec|lc|enum set</tag>
	Filters recognize four types of sets. Sets are similar to strings: you
	can pass them around but you can't modify them. Literals of type <cf>int
@@ -1532,7 +1539,7 @@ in the foot).
	Clist is similar to a set, except that unlike other sets, it can be
	modified. The type is used for community list (a set of pairs) and for
	cluster list (a set of quads). There exist no literals of this type.
	There are three special operators on clists:
	There are special operators on clists:

	<cf><m/C/.len</cf> returns the length of clist <m/C/.

@@ -1559,6 +1566,15 @@ in the foot).
	<cf><m/C/.add(<m/P/);</cf> if <m/C/ is appropriate route attribute (for
	example <cf/bgp_community/). Similarly for <cf/delete/ and <cf/filter/.

	<cf><m/C/.min</cf> returns the minimum element of clist <m/C/.

	<cf><m/C/.max</cf> returns the maximum element of clist <m/C/.

	Operators <cf/.min/, <cf/.max/ can be used together with <cf/filter/
	to extract the community from the specific subset of communities
	(e.g. localpref or prepend) without the need to check every possible
	value (e.g. <cf/filter(bgp_community, [(23456, 1000..1099)]).min/).

	<tag><label id="type-eclist">eclist</tag>
	Eclist is a data type used for BGP extended community lists. Eclists
	are very similar to clists, but they are sets of ECs instead of pairs.
+8 −1
Original line number Diff line number Diff line
@@ -279,9 +279,11 @@ CF_KEYWORDS(FUNCTION, PRINT, PRINTN, UNSET, RETURN,
	ROA_CHECK, ASN, SRC, DST,
	IS_V4, IS_V6,
	LEN, MAXLEN,
	DATA, DATA1, DATA2,
	DEFINED,
	ADD, DELETE, CONTAINS, RESET,
	PREPEND, FIRST, LAST, LAST_NONAGGREGATED, MATCH,
	MIN, MAX,
	EMPTY,
	FILTER, WHERE, EVAL, ATTRIBUTE,
	BT_ASSERT, BT_TEST_SUITE, BT_CHECK_ASSIGN, BT_TEST_SAME, FORMAT, STACKS)
@@ -790,13 +792,18 @@ term:
 | term '.' RD { $$ = f_new_inst(FI_ROUTE_DISTINGUISHER, $1); }
 | term '.' LEN { $$ = f_new_inst(FI_LENGTH, $1); }
 | term '.' MAXLEN { $$ = f_new_inst(FI_ROA_MAXLEN, $1); }
 | term '.' ASN { $$ = f_new_inst(FI_ROA_ASN, $1); }
 | term '.' ASN { $$ = f_new_inst(FI_ASN, $1); }
 | term '.' SRC { $$ = f_new_inst(FI_NET_SRC, $1); }
 | term '.' DST { $$ = f_new_inst(FI_NET_DST, $1); }
 | term '.' MASK '(' term ')' { $$ = f_new_inst(FI_IP_MASK, $1, $5); }
 | term '.' FIRST { $$ = f_new_inst(FI_AS_PATH_FIRST, $1); }
 | term '.' LAST  { $$ = f_new_inst(FI_AS_PATH_LAST, $1); }
 | term '.' LAST_NONAGGREGATED  { $$ = f_new_inst(FI_AS_PATH_LAST_NAG, $1); }
 | term '.' DATA { $$ = f_new_inst(FI_PAIR_DATA, $1); }
 | term '.' DATA1 { $$ = f_new_inst(FI_LC_DATA1, $1); }
 | term '.' DATA2 { $$ = f_new_inst(FI_LC_DATA2, $1); }
 | term '.' MIN  { $$ = f_new_inst(FI_MIN, $1); }
 | term '.' MAX  { $$ = f_new_inst(FI_MAX, $1); }

/* Communities */
/* This causes one shift/reduce conflict
+11 −0
Original line number Diff line number Diff line
@@ -68,6 +68,17 @@ f_type_name(enum f_type t)
  return "?";
}

enum f_type
f_type_element_type(enum f_type t)
{
  switch(t) {
    case T_CLIST:  return T_PAIR;
    case T_ECLIST: return T_EC;
    case T_LCLIST: return T_LC;
    default: return T_VOID;
  };
}

const struct f_val f_const_empty_path = {
  .type = T_PATH,
  .val.ad = &null_adata,
+2 −0
Original line number Diff line number Diff line
@@ -189,6 +189,8 @@ void trie_format(const struct f_trie *t, buffer *buf);

const char *f_type_name(enum f_type t);

enum f_type f_type_element_type(enum f_type t);

int val_same(const struct f_val *v1, const struct f_val *v2);
int val_compare(const struct f_val *v1, const struct f_val *v2);
void val_format(const struct f_val *v, buffer *buf);
Loading