From 66f6365c7910c76d57349ae6ec930a967df8ec9a Mon Sep 17 00:00:00 2001
From: Taoyu Li <taoyl@microsoft.com>
Date: Fri, 9 Jun 2017 22:08:58 +0000
Subject: [PATCH] Add build option SHUTDOWN_BGP_ON_START

---
 Makefile                                        | 1 +
 files/build_templates/sonic_debian_extension.j2 | 5 ++++-
 rules/config                                    | 4 ++++
 slave.mk                                        | 1 +
 4 files changed, 10 insertions(+), 1 deletion(-)

diff --git a/Makefile b/Makefile
index 97f054c035b6..b2938221b240 100644
--- a/Makefile
+++ b/Makefile
@@ -53,6 +53,7 @@ DOCKER_MGMT_BUILD = docker build --no-cache \
 	    PLATFORM=$(PLATFORM) \
 	    BUILD_NUMBER=$(BUILD_NUMBER) \
 	    ENABLE_DHCP_GRAPH_SERVICE=$(ENABLE_DHCP_GRAPH_SERVICE) \
+	    SHUTDOWN_BGP_ON_START=$(SHUTDOWN_BGP_ON_START) \
 	    SONIC_ENABLE_SYNCD_RPC=$(ENABLE_SYNCD_RPC) \
 	    PASSWORD=$(PASSWORD) \
 	    USERNAME=$(USERNAME) \
diff --git a/files/build_templates/sonic_debian_extension.j2 b/files/build_templates/sonic_debian_extension.j2
index 94f8292fb955..00398654b12c 100644
--- a/files/build_templates/sonic_debian_extension.j2
+++ b/files/build_templates/sonic_debian_extension.j2
@@ -131,7 +131,10 @@ sudo bash -c "echo dhcp_as_static=true >> $FILESYSTEM_ROOT/etc/sonic/updategraph
 {% else %}
 sudo bash -c "echo enabled=false > $FILESYSTEM_ROOT/etc/sonic/updategraph.conf"
 {% endif %}
-
+{% if shutdown_bgp_on_start == "y" %}
+sudo bash -c "echo bgp_admin_state: > $FILESYSTEM_ROOT/etc/sonic/bgp_admin.yml"
+sudo bash -c "echo '  all: off' >> $FILESYSTEM_ROOT/etc/sonic/bgp_admin.yml"
+{% endif %}
 # Copy SNMP configuration files
 sudo cp $IMAGE_CONFIGS/snmp/snmp.yml $FILESYSTEM_ROOT/etc/sonic/
 
diff --git a/rules/config b/rules/config
index 4d0fc7801c9a..e813cd7ef1cb 100644
--- a/rules/config
+++ b/rules/config
@@ -38,6 +38,10 @@ DEFAULT_PASSWORD = YourPaSsWoRd
 # If not set (default behavior) the default minigraph built into the image will be used.
 # ENABLE_DHCP_GRAPH_SERVICE = y
 
+# SHUTDOWN_BGP_ON_START - if set to y all bgp sessions will be in admin down state when 
+# bgp service starts.
+# SHUTDOWN_BGP_ON_START = y
+
 # SONIC_CONFIG_DEBUG - install debug packages
 # Uncomment next line to enable:
 # SONIC_CONFIG_DEBUG = y
diff --git a/slave.mk b/slave.mk
index d17aea5722cc..c8a1a27f32ae 100644
--- a/slave.mk
+++ b/slave.mk
@@ -340,6 +340,7 @@ $(addprefix $(TARGET_PATH)/, $(SONIC_INSTALLERS)) : $(TARGET_PATH)/% : .platform
 	export sonicadmin_user="$(USERNAME)"
 	export sonic_asic_platform="$(CONFIGURED_PLATFORM)"
 	export enable_dhcp_graph_service="$(ENABLE_DHCP_GRAPH_SERVICE)"
+	export shutdown_bgp_on_start="$(SHUTDOWN_BGP_ON_START)"
 	export installer_debs="$(addprefix $(DEBS_PATH)/,$($*_DEPENDS))"
 	export lazy_installer_debs="$(foreach deb, $($*_INSTALLS),$(foreach device, $($(deb)_PLATFORM),$(addprefix $(device)@, $(DEBS_PATH)/$(deb))))"
 	export installer_images="$(addprefix $(TARGET_PATH)/,$($*_DOCKERS))"