Add docker-router-advertiser to support IPv6 router advertisements (#1103)
This commit is contained in:
parent
803c263331
commit
cea87e985c
1
.gitignore
vendored
1
.gitignore
vendored
@ -46,6 +46,7 @@ dockers/docker-fpm-quagga/Dockerfile
|
|||||||
dockers/docker-lldp-sv2/Dockerfile
|
dockers/docker-lldp-sv2/Dockerfile
|
||||||
dockers/docker-orchagent/Dockerfile
|
dockers/docker-orchagent/Dockerfile
|
||||||
dockers/docker-platform-monitor/Dockerfile
|
dockers/docker-platform-monitor/Dockerfile
|
||||||
|
dockers/docker-router-advertiser/Dockerfile
|
||||||
dockers/docker-snmp-sv2/Dockerfile
|
dockers/docker-snmp-sv2/Dockerfile
|
||||||
dockers/docker-teamd/Dockerfile
|
dockers/docker-teamd/Dockerfile
|
||||||
dockers/docker-sonic-mgmt/Dockerfile
|
dockers/docker-sonic-mgmt/Dockerfile
|
||||||
|
32
dockers/docker-router-advertiser/Dockerfile.j2
Normal file
32
dockers/docker-router-advertiser/Dockerfile.j2
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
FROM docker-config-engine
|
||||||
|
|
||||||
|
# Make apt-get non-interactive
|
||||||
|
ENV DEBIAN_FRONTEND=noninteractive
|
||||||
|
|
||||||
|
# Update apt's cache of available packages
|
||||||
|
RUN apt-get update
|
||||||
|
|
||||||
|
# Install radvd Debian package
|
||||||
|
RUN apt-get -y install radvd
|
||||||
|
|
||||||
|
{% if docker_router_advertiser_debs.strip() -%}
|
||||||
|
# Copy built Debian packages
|
||||||
|
{%- for deb in docker_router_advertiser_debs.split(' ') %}
|
||||||
|
COPY debs/{{ deb }} debs/
|
||||||
|
{%- endfor %}
|
||||||
|
|
||||||
|
# Install built Debian packages and implicitly install their dependencies
|
||||||
|
{%- for deb in docker_router_advertiser_debs.split(' ') %}
|
||||||
|
RUN dpkg_apt() { [ -f $1 ] && { dpkg -i $1 || apt-get -y install -f; } || return 1; }; dpkg_apt debs/{{ deb }}
|
||||||
|
{%- endfor %}
|
||||||
|
{%- endif %}
|
||||||
|
|
||||||
|
# Clean up
|
||||||
|
RUN apt-get clean -y; apt-get autoclean -y; apt-get autoremove -y
|
||||||
|
RUN rm -rf /debs
|
||||||
|
|
||||||
|
COPY ["start.sh", "/usr/bin/"]
|
||||||
|
COPY ["docker-router-advertiser.supervisord.conf", "/etc/supervisor/conf.d/"]
|
||||||
|
COPY ["radvd.conf.j2", "/usr/share/sonic/templates/"]
|
||||||
|
|
||||||
|
ENTRYPOINT ["/usr/bin/supervisord"]
|
@ -0,0 +1,28 @@
|
|||||||
|
[supervisord]
|
||||||
|
logfile_maxbytes=1MB
|
||||||
|
logfile_backups=2
|
||||||
|
nodaemon=true
|
||||||
|
|
||||||
|
[program:start.sh]
|
||||||
|
command=/usr/bin/start.sh
|
||||||
|
priority=1
|
||||||
|
autostart=true
|
||||||
|
autorestart=false
|
||||||
|
stdout_logfile=syslog
|
||||||
|
stderr_logfile=syslog
|
||||||
|
|
||||||
|
[program:rsyslogd]
|
||||||
|
command=/usr/sbin/rsyslogd -n
|
||||||
|
priority=2
|
||||||
|
autostart=false
|
||||||
|
autorestart=false
|
||||||
|
stdout_logfile=syslog
|
||||||
|
stderr_logfile=syslog
|
||||||
|
|
||||||
|
[program:radvd]
|
||||||
|
command=/usr/sbin/radvd -n
|
||||||
|
priority=3
|
||||||
|
autostart=false
|
||||||
|
autorestart=false
|
||||||
|
stdout_logfile=syslog
|
||||||
|
stderr_logfile=syslog
|
37
dockers/docker-router-advertiser/radvd.conf.j2
Normal file
37
dockers/docker-router-advertiser/radvd.conf.j2
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
{% block banner %}
|
||||||
|
# =========== Managed by sonic-cfggen -- DO NOT edit manually! ====================
|
||||||
|
# Generated by /usr/share/sonic/templates/radvd.conf.j2 using config DB data
|
||||||
|
# File: /etc/radvd.conf
|
||||||
|
#
|
||||||
|
{% endblock banner %}
|
||||||
|
# Config file for radvd, the router advertisement daemon
|
||||||
|
# See man page for radvd.conf for descriptions of all available options
|
||||||
|
#
|
||||||
|
|
||||||
|
{# If our configuration has VLAN interfaces... #}
|
||||||
|
{% if VLAN_INTERFACE %}
|
||||||
|
{% for (name, prefix) in VLAN_INTERFACE %}
|
||||||
|
{# If this VLAN has an IPv6 address... #}
|
||||||
|
{% if prefix | ipv6 %}
|
||||||
|
interface {{ name }}
|
||||||
|
{
|
||||||
|
IgnoreIfMissing on;
|
||||||
|
AdvSendAdvert on;
|
||||||
|
MinRtrAdvInterval 200;
|
||||||
|
MaxRtrAdvInterval 600;
|
||||||
|
AdvManagedFlag on;
|
||||||
|
AdvOtherConfigFlag off;
|
||||||
|
AdvLinkMTU 9100;
|
||||||
|
AdvHomeAgentFlag off;
|
||||||
|
prefix {{ prefix | network }}/{{ prefix | prefixlen }} {
|
||||||
|
AdvOnLink on;
|
||||||
|
AdvAutonomous off;
|
||||||
|
AdvRouterAddr off;
|
||||||
|
AdvValidLifetime infinity;
|
||||||
|
AdvPreferredLifetime infinity;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
{% endif %}
|
||||||
|
{% endfor %}
|
||||||
|
{% endif %}
|
11
dockers/docker-router-advertiser/start.sh
Executable file
11
dockers/docker-router-advertiser/start.sh
Executable file
@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
|
# Generate /etc/radvd.conf config file
|
||||||
|
sonic-cfggen -d -t /usr/share/sonic/templates/radvd.conf.j2 > /etc/radvd.conf
|
||||||
|
|
||||||
|
rm -f /var/run/rsyslogd.pid
|
||||||
|
|
||||||
|
supervisorctl start rsyslogd
|
||||||
|
|
||||||
|
# Start the router advertiser
|
||||||
|
supervisorctl start radvd
|
13
files/build_templates/router_advertiser.service.j2
Normal file
13
files/build_templates/router_advertiser.service.j2
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Router advertiser container
|
||||||
|
Requires=docker.service
|
||||||
|
After=swss.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User={{ sonicadmin_user }}
|
||||||
|
ExecStartPre=/usr/bin/{{ docker_container_name }}.sh start
|
||||||
|
ExecStart=/usr/bin/{{ docker_container_name }}.sh attach
|
||||||
|
ExecStop=/usr/bin/{{ docker_container_name }}.sh stop
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
12
rules/docker-router-advertiser.mk
Normal file
12
rules/docker-router-advertiser.mk
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
# Docker image for router advertiser
|
||||||
|
|
||||||
|
DOCKER_ROUTER_ADVERTISER = docker-router-advertiser.gz
|
||||||
|
$(DOCKER_ROUTER_ADVERTISER)_PATH = $(DOCKERS_PATH)/docker-router-advertiser
|
||||||
|
$(DOCKER_ROUTER_ADVERTISER)_LOAD_DOCKERS = $(DOCKER_CONFIG_ENGINE)
|
||||||
|
SONIC_DOCKER_IMAGES += $(DOCKER_ROUTER_ADVERTISER)
|
||||||
|
SONIC_INSTALL_DOCKER_IMAGES += $(DOCKER_ROUTER_ADVERTISER)
|
||||||
|
|
||||||
|
|
||||||
|
$(DOCKER_ROUTER_ADVERTISER)_CONTAINER_NAME = radv
|
||||||
|
$(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += --net=host --privileged -t
|
||||||
|
$(DOCKER_ROUTER_ADVERTISER)_RUN_OPT += -v /etc/sonic:/etc/sonic:ro
|
Loading…
Reference in New Issue
Block a user