2023-06-08 19:47:01 +02:00
|
|
|
ARG UBUNTU_VERSION=22.04
|
|
|
|
FROM ubuntu:$UBUNTU_VERSION
|
|
|
|
|
|
|
|
ARG DEBIAN_FRONTEND=noninteractive
|
|
|
|
ENV APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=DontWarn
|
|
|
|
|
|
|
|
# Update and install build requirements.
|
|
|
|
RUN apt update && apt upgrade -y && \
|
|
|
|
# Basic build requirements from documentation
|
|
|
|
apt-get install -y \
|
|
|
|
autoconf \
|
|
|
|
automake \
|
|
|
|
bison \
|
|
|
|
build-essential \
|
|
|
|
flex \
|
|
|
|
git \
|
|
|
|
install-info \
|
|
|
|
libc-ares-dev \
|
|
|
|
libcap-dev \
|
|
|
|
libelf-dev \
|
|
|
|
libjson-c-dev \
|
|
|
|
libpam0g-dev \
|
|
|
|
libreadline-dev \
|
|
|
|
libsnmp-dev \
|
2023-07-06 23:57:48 +02:00
|
|
|
libsqlite3-dev \
|
2023-06-08 19:47:01 +02:00
|
|
|
libtool \
|
|
|
|
make \
|
|
|
|
perl \
|
|
|
|
pkg-config \
|
|
|
|
python3-dev \
|
|
|
|
python3-sphinx \
|
|
|
|
texinfo \
|
|
|
|
&& \
|
|
|
|
# Protobuf build requirements
|
|
|
|
apt-get install -y \
|
|
|
|
libprotobuf-c-dev \
|
|
|
|
protobuf-c-compiler \
|
|
|
|
&& \
|
|
|
|
# Libyang2 extra build requirements
|
|
|
|
apt-get install -y \
|
|
|
|
cmake \
|
|
|
|
libpcre2-dev \
|
|
|
|
&& \
|
2023-12-30 23:40:07 +01:00
|
|
|
# GRPC extra build requirements
|
|
|
|
apt-get install -y \
|
|
|
|
libgrpc-dev \
|
|
|
|
libgrpc++-dev \
|
|
|
|
protobuf-compiler-grpc \
|
|
|
|
&& \
|
2023-06-08 19:47:01 +02:00
|
|
|
# Runtime/triage/testing requirements
|
|
|
|
apt-get install -y \
|
|
|
|
curl \
|
|
|
|
gdb \
|
2023-12-10 00:45:22 +01:00
|
|
|
kmod \
|
2023-06-08 19:47:01 +02:00
|
|
|
iproute2 \
|
|
|
|
iputils-ping \
|
|
|
|
liblua5.3-dev \
|
|
|
|
libssl-dev \
|
|
|
|
lua5.3 \
|
|
|
|
net-tools \
|
2023-11-28 12:35:41 +01:00
|
|
|
python3 \
|
2023-06-08 19:47:01 +02:00
|
|
|
python3-pip \
|
|
|
|
snmp \
|
|
|
|
snmp-mibs-downloader \
|
|
|
|
snmpd \
|
|
|
|
sudo \
|
|
|
|
time \
|
|
|
|
tshark \
|
|
|
|
valgrind \
|
|
|
|
yodl \
|
|
|
|
&& \
|
|
|
|
download-mibs && \
|
|
|
|
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/iana/IANA-IPPM-METRICS-REGISTRY-MIB -O /usr/share/snmp/mibs/iana/IANA-IPPM-METRICS-REGISTRY-MIB && \
|
|
|
|
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/SNMPv2-PDU -O /usr/share/snmp/mibs/ietf/SNMPv2-PDU && \
|
|
|
|
wget https://raw.githubusercontent.com/FRRouting/frr-mibs/main/ietf/IPATM-IPMC-MIB -O /usr/share/snmp/mibs/ietf/IPATM-IPMC-MIB && \
|
|
|
|
python3 -m pip install wheel && \
|
|
|
|
python3 -m pip install pytest && \
|
|
|
|
python3 -m pip install pytest-sugar && \
|
|
|
|
python3 -m pip install pytest-xdist && \
|
|
|
|
python3 -m pip install "scapy>=2.4.2" && \
|
|
|
|
python3 -m pip install xmltodict && \
|
|
|
|
python3 -m pip install grpcio grpcio-tools && \
|
2023-11-28 12:35:41 +01:00
|
|
|
python3 -m pip install git+https://github.com/Exa-Networks/exabgp@0659057837cd6c6351579e9f0fa47e9fb7de7311
|
2023-06-08 19:47:01 +02:00
|
|
|
|
|
|
|
RUN groupadd -r -g 92 frr && \
|
|
|
|
groupadd -r -g 85 frrvty && \
|
|
|
|
adduser --system --ingroup frr --home /home/frr \
|
|
|
|
--gecos "FRR suite" --shell /bin/bash frr && \
|
|
|
|
usermod -a -G frrvty frr && \
|
|
|
|
useradd -d /var/run/exabgp/ -s /bin/false exabgp && \
|
|
|
|
echo 'frr ALL = NOPASSWD: ALL' | tee /etc/sudoers.d/frr && \
|
|
|
|
mkdir -p /home/frr && chown frr.frr /home/frr
|
|
|
|
|
|
|
|
USER frr:frr
|
|
|
|
|
|
|
|
# build and install libyang2
|
|
|
|
RUN cd && pwd && ls -al && \
|
|
|
|
git clone https://github.com/CESNET/libyang.git && \
|
|
|
|
cd libyang && \
|
2023-12-30 23:40:07 +01:00
|
|
|
git checkout v2.1.128 && \
|
2023-06-08 19:47:01 +02:00
|
|
|
mkdir build; cd build && \
|
|
|
|
cmake -DCMAKE_INSTALL_PREFIX:PATH=/usr \
|
|
|
|
-DCMAKE_BUILD_TYPE:String="Release" .. && \
|
|
|
|
make -j $(nproc) && \
|
|
|
|
sudo make install
|
|
|
|
|
|
|
|
COPY --chown=frr:frr . /home/frr/frr/
|
|
|
|
|
|
|
|
RUN cd ~/frr && \
|
|
|
|
./bootstrap.sh && \
|
|
|
|
./configure \
|
|
|
|
--prefix=/usr \
|
2024-01-25 16:35:29 +01:00
|
|
|
--sysconfdir=/etc \
|
|
|
|
--localstatedir=/var \
|
2023-06-08 19:47:01 +02:00
|
|
|
--sbindir=/usr/lib/frr \
|
|
|
|
--enable-sharpd \
|
|
|
|
--enable-multipath=64 \
|
|
|
|
--enable-user=frr \
|
|
|
|
--enable-group=frr \
|
2023-07-06 23:57:48 +02:00
|
|
|
--enable-config-rollbacks \
|
2023-12-30 23:40:07 +01:00
|
|
|
--enable-grpc \
|
2023-06-08 19:47:01 +02:00
|
|
|
--enable-vty-group=frrvty \
|
|
|
|
--enable-snmp=agentx \
|
|
|
|
--enable-scripting \
|
|
|
|
--with-pkg-extra-version=-my-manual-build && \
|
|
|
|
make -j $(nproc) && \
|
|
|
|
sudo make install
|
|
|
|
|
|
|
|
RUN cd ~/frr && make check || true
|
|
|
|
|
|
|
|
COPY docker/ubuntu-ci/docker-start /usr/sbin/docker-start
|
|
|
|
CMD ["/usr/sbin/docker-start"]
|