Skip to content

Commit

Permalink
Fixes for errors seen in staging devices (sonic-net#7171)
Browse files Browse the repository at this point in the history
With the latest 201911 image, the following error was seen on staging devices with TSB command ( for both single asic, multi asic ). Though this err message doesn't affect the TSB functionality, it is good to fix.

admin@STG01-0101-0102-01T1:~$ TSB
BGP0 : % Could not find route-map entry TO_TIER0_V4 20
line 1: Failure to communicate[13] to zebra, line: no route-map TO_TIER0_V4 permit 20
% Could not find route-map entry TO_TIER0_V4 30
line 2: Failure to communicate[13] to zebra, line: no route-map TO_TIER0_V4 deny 30

In addition, in this PR I am fixing the message displayed to user when there are no BGP neighbors configured on that BGP instance. In multi-asic device there could be case where there are no BGP neighbors configured on a particular ASIC.
  • Loading branch information
judyjoseph authored and Carl Keene committed Aug 7, 2021
1 parent ce01c6e commit 230c6c5
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 7 deletions.
16 changes: 14 additions & 2 deletions dockers/docker-fpm-frr/TS
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ function check_not_installed()
{
c=0
config=$(vtysh -c "show run")
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6');
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
do
is_internal_route_map $route_map_name && continue
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
Expand All @@ -26,7 +26,7 @@ function check_installed()
c=0
e=0
config=$(vtysh -c "show run")
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6');
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
do
is_internal_route_map $route_map_name && continue
echo "$config" | egrep -q "^route-map $route_map_name permit 20$"
Expand All @@ -38,3 +38,15 @@ function check_installed()
done
return $((e-c))
}

function find_num_routemap()
{
c=0
config=$(vtysh -c "show run")
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | egrep 'V4|V6' | uniq);
do
is_internal_route_map $route_map_name && continue
c=$((c+1))
done
return $c
}
10 changes: 8 additions & 2 deletions dockers/docker-fpm-frr/TSA
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@
# Load the common functions
source /usr/bin/TS

find_num_routemap
routemap_count=$?
check_not_installed
not_installed=$?
if [[ $not_installed -ne 0 ]];

if [[ $routemap_count -eq 0 ]];
then
echo "System Mode: No external neighbors"
elif [[ $not_installed -ne 0 ]];
then
TSA_FILE=$(mktemp)
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | uniq);
do
is_internal_route_map $route_map_name && continue
case "$route_map_name" in
Expand Down
10 changes: 8 additions & 2 deletions dockers/docker-fpm-frr/TSB
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@
# Load the common functions
source /usr/bin/TS

find_num_routemap
routemap_count=$?
check_installed
installed=$?
if [[ $installed -ne 0 ]];

if [[ $routemap_count -eq 0 ]];
then
echo "System Mode: No external neighbors"
elif [[ $installed -ne 0 ]];
then
TSB_FILE=$(mktemp)
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p');
for route_map_name in $(echo "$config" | sed -ne 's/ neighbor \S* route-map \(\S*\) out/\1/p' | uniq);
do
is_internal_route_map $route_map_name && continue
case "$route_map_name" in
Expand Down
7 changes: 6 additions & 1 deletion dockers/docker-fpm-frr/TSC
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,18 @@
# Load the common functions
source /usr/bin/TS

find_num_routemap
routemap_count=$?
check_not_installed
not_installed=$?

check_installed
installed=$?

if [[ $installed -eq 0 ]];
if [[ $routemap_count -eq 0 ]];
then
echo "System Mode: No external neighbors"
elif [[ $installed -eq 0 ]];
then
echo "System Mode: Normal"
elif [[ $not_installed -eq 0 ]];
Expand Down

0 comments on commit 230c6c5

Please sign in to comment.