20 Commits
1.13 ... main

Author SHA1 Message Date
Denis Fondras
20673db180 Remove extraneous space in Arista prefixlist (#124)
Some checks failed
Build and test (latest Ubuntu/macOS) / build (ubuntu-latest) (push) Successful in 30s
Build and test (latest Ubuntu/macOS) / build (macos-latest) (push) Has been cancelled
basic unit tests / output unit tests (push) Has been cancelled
CodeQL analysis / Analyze (cpp) (push) Failing after 2m11s
* Remove extraneous space in Arista prefixlist

When diffing config generated with bgpq4 with config exported from an Arista device, many lines are returned as changed. This is because prefixlist on Arista device use 3 spaces and bgpq4 uses 4 spaces.

* Update eos--4.txt

* Update eos--6.txt
2025-02-21 20:55:15 +01:00
Job Snijders
4cae7d1df5 test if symlink
Some checks failed
Build and test (latest Ubuntu/macOS) / build (ubuntu-latest) (push) Successful in 28s
Build and test (latest Ubuntu/macOS) / build (macos-latest) (push) Has been cancelled
basic unit tests / output unit tests (push) Has been cancelled
CodeQL analysis / Analyze (cpp) (push) Failing after 1m12s
2025-02-08 13:25:31 +00:00
Job Snijders
851d1c6cf1 force cp when not symlink 2025-02-08 13:23:01 +00:00
Job Snijders
f53fbba8b3 only add awk in fedora42
Some checks failed
Build and test (latest Ubuntu/macOS) / build (macos-latest) (push) Waiting to run
basic unit tests / output unit tests (push) Waiting to run
Build and test (latest Ubuntu/macOS) / build (ubuntu-latest) (push) Successful in 27s
CodeQL analysis / Analyze (cpp) (push) Failing after 28s
Build and test (linux matrix) / build (alpine:3.21) (push) Failing after 5s
Build and test (linux matrix) / build (alpine:edge) (push) Failing after 5s
Build and test (linux matrix) / build (centos/centos:stream10) (push) Failing after 5s
Build and test (linux matrix) / build (centos/centos:stream9) (push) Failing after 5s
Build and test (linux matrix) / build (debian:bookworm) (push) Failing after 5s
Build and test (linux matrix) / build (debian:bullseye) (push) Failing after 5s
Build and test (linux matrix) / build (debian:trixie) (push) Failing after 4s
Build and test (linux matrix) / build (fedora/fedora:40) (push) Failing after 4s
Build and test (linux matrix) / build (fedora/fedora:41) (push) Failing after 4s
Build and test (linux matrix) / build (fedora/fedora:42) (push) Failing after 4s
Build and test (linux matrix) / build (rockylinux/rockylinux:8) (push) Failing after 4s
Build and test (linux matrix) / build (rockylinux/rockylinux:9) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:focal) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:jammy) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:noble) (push) Failing after 5s
2025-02-07 15:41:31 +00:00
Job Snijders
282378e673 add awk to fedora42 image
Some checks failed
Build and test (latest Ubuntu/macOS) / build (macos-latest) (push) Waiting to run
basic unit tests / output unit tests (push) Waiting to run
Build and test (latest Ubuntu/macOS) / build (ubuntu-latest) (push) Successful in 28s
CodeQL analysis / Analyze (cpp) (push) Failing after 1m9s
Build and test (linux matrix) / build (alpine:3.21) (push) Failing after 5s
Build and test (linux matrix) / build (alpine:edge) (push) Failing after 5s
Build and test (linux matrix) / build (centos/centos:stream10) (push) Failing after 4s
Build and test (linux matrix) / build (centos/centos:stream9) (push) Failing after 4s
Build and test (linux matrix) / build (debian:bookworm) (push) Failing after 5s
Build and test (linux matrix) / build (debian:bullseye) (push) Failing after 5s
Build and test (linux matrix) / build (debian:trixie) (push) Failing after 5s
Build and test (linux matrix) / build (fedora/fedora:40) (push) Failing after 5s
Build and test (linux matrix) / build (fedora/fedora:41) (push) Failing after 5s
Build and test (linux matrix) / build (fedora/fedora:42) (push) Failing after 4s
Build and test (linux matrix) / build (rockylinux/rockylinux:8) (push) Failing after 4s
Build and test (linux matrix) / build (rockylinux/rockylinux:9) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:focal) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:jammy) (push) Failing after 5s
Build and test (linux matrix) / build (ubuntu:noble) (push) Failing after 5s
2025-02-07 15:28:14 +00:00
Denis Fondras
60a3b3dabf Forbid -e -E -6 (#123)
The resulting list is a bit weird 😉 

```
 permit ip host 2a05:6340:: host 255.255.255.248
 permit ip host 2a06:19c0:: host 255.255.255.248
 permit ip host 2a07:4b00:: host 255.255.255.248
 permit ip host 2a07:7b40:: host 255.255.255.248
```
2025-02-07 10:08:06 -05:00
Robert Scheck
b769ad9ce6 Update workflow actions and containers (#121) 2024-12-26 02:21:19 +01:00
Robert Scheck
0678439386 Update matrixbuild to current Linux distributions (#120) 2024-12-25 12:21:17 +01:00
Yureka
c51fddefe5 filter out ASN 0 in juniper as-lists (#117)
Fixes error "RPD Policy: Invalid AS 0"
2024-10-16 16:01:36 +00:00
Job Snijders
ad20b71f70 add symlinks, thanks rsc 2024-08-25 13:02:15 +00:00
Job Snijders
983c4f74c2 maybe this one? 2024-08-25 11:19:29 +00:00
Job Snijders
8ed8ae112f Update build targets 2024-08-25 11:07:59 +00:00
Tim de Boer
44e97736ac Remove extra space for MikroTik's RouterOS V7 rules (#115) 2024-08-25 11:01:51 +00:00
Job Snijders
7bd337eac3 Respin release 2024-05-15 11:25:17 +00:00
Job Snijders
4dd3b92b3c Release 1.14 2024-05-15 11:24:02 +00:00
Job Snijders
a97f7eb4ff Update changelog 2024-05-13 12:19:19 +00:00
Robert Scheck
4ab84255a4 Work around broken Docker image by Rocky Linux (until CentOS 7 is EOL) (#114) 2024-05-10 12:16:04 +02:00
Job Snijders
424770be0b Set TCP_NODELAY on the socket
Nagle's algorithm probably serves no purpose with whois queries
often being tiny.
2024-05-10 09:41:28 +00:00
Robert Scheck
4bac9e7e53 Skip online test if no or empty /etc/resolv.conf (#113)
Downstream build systems, e.g. at Linux distributions like Fedora,
might be (sealed) offline (chroot) environments.
2024-05-05 22:33:12 +00:00
Robert Scheck
2ec0ea3fbd Don't try to login and push to GHCR on forks (#112) 2024-05-03 23:55:16 +02:00
20 changed files with 74 additions and 30 deletions

View File

@@ -2,8 +2,8 @@ ARG image=centos/centos:latest
FROM quay.io/$image
# Install dependencies
RUN yum update -y
RUN yum install -y autoconf automake gcc libtool make diffutils file gzip
RUN dnf -y update
RUN dnf -y install autoconf automake gcc libtool make diffutils file gzip
# Add source code
ADD . /src

View File

@@ -1 +0,0 @@
../centos.Dockerfile

View File

@@ -1 +0,0 @@
../centos.Dockerfile

View File

@@ -0,0 +1,17 @@
ARG image=centos/centos:latest
FROM quay.io/$image
# Install dependencies
RUN dnf -y update
RUN dnf -y install autoconf automake gcc libtool make diffutils file gzip awk
# Add source code
ADD . /src
WORKDIR /src
# Run steps
RUN ./bootstrap
RUN ./configure
RUN make
RUN make check
RUN make distcheck

View File

@@ -1 +0,0 @@
debian.Dockerfile

View File

@@ -19,7 +19,7 @@ jobs:
build:
name: Build container
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
needs: test
steps:
@@ -48,6 +48,7 @@ jobs:
type=sha
- name: Login to GitHub Container Registry
if: github.repository_owner == 'bgp'
uses: docker/login-action@v3
with:
registry: ghcr.io
@@ -55,10 +56,10 @@ jobs:
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
file: .github/images/alpine:3.Dockerfile
context: .
platforms: linux/amd64,linux/arm64
push: true
push: ${{ github.repository_owner == 'bgp' }}
tags: ${{ steps.meta.outputs.tags }}

View File

@@ -12,24 +12,22 @@ jobs:
- debian:trixie
- debian:bookworm
- debian:bullseye
- debian:buster
- ubuntu:noble
- ubuntu:jammy
- ubuntu:focal
- ubuntu:bionic
- fedora/fedora:42
- fedora/fedora:41
- fedora/fedora:40
- fedora/fedora:39
- fedora/fedora:38
- centos/centos:stream10
- centos/centos:stream9
- centos/centos:stream8
- centos/centos:7
- rockylinux/rockylinux:9
- rockylinux/rockylinux:8
- alpine:edge
- alpine:3.19
- alpine:3.21
steps:
- uses: actions/checkout@v4
- name: Work around Docker BuildKit regression
# https://github.com/moby/buildkit/issues/2119: `DOCKER_BUILDKIT=1 docker build` fails if Dockerfile is a symlink
run: cp --remove-destination $(readlink -f .github/images/${{matrix.dockerenv}}.Dockerfile) .github/images/${{matrix.dockerenv}}.Dockerfile
run: [ -L .github/images/${{matrix.dockerenv}}.Dockerfile ] && cp --remove-destination $(readlink -f .github/images/${{matrix.dockerenv}}.Dockerfile) .github/images/${{matrix.dockerenv}}.Dockerfile
- name: Run build on ${{matrix.dockerenv}}
run: docker build . --file .github/images/${{matrix.dockerenv}}.Dockerfile --build-arg image=${{matrix.dockerenv}}

View File

@@ -8,12 +8,15 @@ on:
- reopened
- ready_for_review
- synchronize
push:
branches:
- main
workflow_call:
jobs:
output-unit-tests:
name: output unit tests
runs-on: ubuntu-22.04
runs-on: ubuntu-24.04
steps:
- name: clone repo
uses: actions/checkout@v4

View File

@@ -1,5 +1,12 @@
1.15 (2024-05-15)
- Apologies, debug code slipped into the last release
1.14 (2024-05-14)
- Small performance gain: set TCP_NODELAY on the socket
1.13 (2024-05-01)
- Fixed a bug for Mac users by removing sx_maxsockbuf()
- Fixed a comma printing bug in IOS XR as-path-set output
1.12 (2024-02-12)
- Fix a bug in the mikrotik printer

View File

@@ -36,4 +36,8 @@ maintainer-clean-local:
check:
./bgpq4 -v
@echo
./bgpq4 -6 AS15562:AS-SNIJDERS | grep 2001:67c:208c::
-if [ -s /etc/resolv.conf ]; then \
./bgpq4 -ddd -6 AS15562:AS-SNIJDERS ; \
else \
echo "No or empty /etc/resolv.conf, skipping online test"; \
fi

View File

@@ -1 +1 @@
1.13
1.15

View File

@@ -29,6 +29,7 @@
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/select.h>
#include <netinet/tcp.h>
#include <assert.h>
#include <ctype.h>
@@ -1034,7 +1035,7 @@ bgpq_expand(struct bgpq_expander *b)
struct addrinfo hints, *res = NULL, *rp;
struct linger sl;
struct asn_entry *asne;
int fd = -1, err, ret, aquery = 0;
int fd = -1, err, ret, aquery = 0, nodelay = 1;
int slen;
sl.l_onoff = 1;
@@ -1075,6 +1076,11 @@ bgpq_expand(struct bgpq_expander *b)
continue;
}
if (setsockopt(fd, IPPROTO_TCP, TCP_NODELAY, &nodelay,
sizeof(nodelay)) == -1)
SX_DEBUG(debug_expander, "Unable to set TCP_NODELAY on"
" socket: %s\n", strerror(errno));
break;
}

8
main.c
View File

@@ -604,6 +604,14 @@ main(int argc, char* argv[])
exit(1);
}
if (expander.vendor == V_ARISTA
&& expander.generation == T_EACL
&& expander.family == AF_INET6) {
sx_report(SX_FATAL, "Sorry, extended access-lists is not compatible "
"with Arista EOS and IPv6\n");
exit(1);
}
if (expander.sequence
&& (expander.vendor != V_CISCO && expander.vendor != V_ARISTA)) {
sx_report(SX_FATAL, "Sorry, prefix-lists sequencing (-s) supported"

View File

@@ -300,12 +300,15 @@ bgpq4_print_juniper_aslist(FILE *f, struct bgpq_expander *b)
RB_FOREACH(asne, asn_tree, &b->asnlist) {
if (!nc) {
fprintf(f, " as-list a%u members [ %u",
lineNo, asne->asn);
} else {
fprintf(f," %u", asne->asn);
fprintf(f, " as-list a%u members [",
lineNo);
}
// Filter out AS 0
// "error: RPD Policy: Invalid AS 0"
if (asne->asn != 0)
fprintf(f," %u", asne->asn);
nc++;
if (nc == b->aswidth) {
@@ -1162,7 +1165,7 @@ bgpq4_print_eprefix(struct sx_radix_node *n, void *ff)
sx_prefix_snprintf(n->prefix, prefix, sizeof(prefix));
snprintf(seqno, sizeof(seqno), " seq %i", seq++);
snprintf(seqno, sizeof(seqno), "seq %i", seq++);
if (n->isAggregate) {
if (n->aggregateLow > n->prefix->masklen) {
@@ -1865,7 +1868,7 @@ bgpq4_print_k7prefix(struct sx_radix_node *n, void *ff)
if (n->isAggregate)
fprintf(f,"/routing filter rule add chain=\""
"%s-%s\" rule=\"if (dst in %s && dst-len in %d-%d) {accept}\"\n",
"%s-%s\" rule=\"if (dst in %s && dst-len in %d-%d) {accept}\"\n",
bname ? bname : "NN",
n->prefix->family == AF_INET ? "V4" : "V6",
prefix, n->aggregateLow, n->aggregateHi);

View File

@@ -1,4 +1,4 @@
no ip prefix-list NN
ip prefix-list NN
seq 1 permit 192.31.196.0/24
seq 2 permit 192.175.48.0/24
seq 1 permit 192.31.196.0/24
seq 2 permit 192.175.48.0/24

View File

@@ -1,4 +1,4 @@
no ipv6 prefix-list NN
ipv6 prefix-list NN
seq 1 permit 2001:4:112::/48
seq 2 permit 2620:4f:8000::/48
seq 1 permit 2001:4:112::/48
seq 2 permit 2620:4f:8000::/48