diff --git a/dockers/docker-fpm-frr/Dockerfile.j2 b/dockers/docker-fpm-frr/Dockerfile.j2 index 302f38c8b57..360d64a12b8 100644 --- a/dockers/docker-fpm-frr/Dockerfile.j2 +++ b/dockers/docker-fpm-frr/Dockerfile.j2 @@ -54,9 +54,10 @@ COPY ["TSA", "/usr/bin/TSA"] COPY ["TSB", "/usr/bin/TSB"] COPY ["TSC", "/usr/bin/TSC"] COPY ["files/supervisor-proc-exit-listener", "/usr/bin"] -COPY ["bgpd.sh", "/usr/bin/"] +COPY ["zsocket.sh", "/usr/bin/"] RUN chmod a+x /usr/bin/TSA && \ chmod a+x /usr/bin/TSB && \ - chmod a+x /usr/bin/TSC + chmod a+x /usr/bin/TSC && \ + chmod a+x /usr/bin/zsocket.sh ENTRYPOINT ["/usr/bin/docker_init.sh"] diff --git a/dockers/docker-fpm-frr/frr/supervisord/supervisord.conf.j2 b/dockers/docker-fpm-frr/frr/supervisord/supervisord.conf.j2 index d8ff188aac2..dd43e0cc4ec 100644 --- a/dockers/docker-fpm-frr/frr/supervisord/supervisord.conf.j2 +++ b/dockers/docker-fpm-frr/frr/supervisord/supervisord.conf.j2 @@ -39,6 +39,17 @@ stderr_logfile=syslog dependent_startup=true dependent_startup_wait_for=rsyslogd:running +[program:zsocket] +command=/usr/bin/zsocket.sh +priority=4 +autostart=false +autorestart=false +startsecs=0 +stdout_logfile=syslog +stderr_logfile=syslog +dependent_startup=true +dependent_startup_wait_for=zebra:running + [program:staticd] command=/usr/lib/frr/staticd -A 127.0.0.1 priority=4 @@ -48,7 +59,7 @@ startsecs=0 stdout_logfile=syslog stderr_logfile=syslog dependent_startup=true -dependent_startup_wait_for=zebra:running +dependent_startup_wait_for=zsocket:exited {% if DEVICE_METADATA.localhost.frr_mgmt_framework_config is defined and DEVICE_METADATA.localhost.frr_mgmt_framework_config == "true" %} [program:bfdd] @@ -65,7 +76,7 @@ dependent_startup_wait_for=zebra:running {% endif %} [program:bgpd] -command=/usr/bin/bgpd.sh -A 127.0.0.1 -M snmp +command=/usr/lib/frr/bgpd -A 127.0.0.1 -M snmp priority=5 stopsignal=KILL autostart=false @@ -74,7 +85,7 @@ startsecs=0 stdout_logfile=syslog stderr_logfile=syslog dependent_startup=true -dependent_startup_wait_for=zebra:running +dependent_startup_wait_for=zsocket:exited {% if DEVICE_METADATA.localhost.frr_mgmt_framework_config is defined and DEVICE_METADATA.localhost.frr_mgmt_framework_config == "true" %} [program:ospfd] diff --git a/dockers/docker-fpm-frr/bgpd.sh b/dockers/docker-fpm-frr/zsocket.sh similarity index 70% rename from dockers/docker-fpm-frr/bgpd.sh rename to dockers/docker-fpm-frr/zsocket.sh index c61a594a1ef..111492f960e 100755 --- a/dockers/docker-fpm-frr/bgpd.sh +++ b/dockers/docker-fpm-frr/zsocket.sh @@ -5,8 +5,8 @@ port=2601 function help() { - echo "This script aims to ensure zebra is ready to accept connections before starting bgpd" - echo "Usage: $0 [options] [bgpd options]" + echo "This script aims to ensure zebra is ready to accept connections" + echo "Usage: $0 [options]" echo "Options:" echo " -a Zebra address" echo " -o Zebra port" @@ -23,11 +23,14 @@ while getopts ":a:o:h" opt; do ;; esac done -shift $((OPTIND-1)) +start=$(date +%s.%N) timeout 5s bash -c -- "until