Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
G
gateways-monitor
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Locked Files
Issues
0
Issues
0
List
Boards
Labels
Service Desk
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Security & Compliance
Security & Compliance
Dependency List
License Compliance
Packages
Packages
List
Container Registry
Analytics
Analytics
CI / CD
Code Review
Insights
Issues
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Railgun
gateways-monitor
Commits
9be3fbe3
Commit
9be3fbe3
authored
Dec 29, 2020
by
nanahira
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
run once after
parent
277bacd4
Pipeline
#1933
passed with stage
in 3 minutes and 13 seconds
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
38 additions
and
32 deletions
+38
-32
gateway-monitor.sh
gateway-monitor.sh
+38
-32
No files found.
gateway-monitor.sh
View file @
9be3fbe3
...
...
@@ -3,41 +3,47 @@
# ROUTE_PLANS
source
/usr/src/app/route-plans
_calculate_route
()
{
# 读 babeld 路由
declare
-A
routes
while
read
-r
dst others
do
routes[
"
$dst
"
]=
"
$others
"
done
< <
(
ip route show proto
$TARGET_PROTOCOL
root 10.198.0.0/24
)
# 取最优路由并写进系统路由表
# 这个循环内所有 echo 的东西都会打给 iproute2。打调试信息要用 stderr
for
table
in
"
${
!ROUTE_PLANS[@]
}
"
;
do
best_dev
=
best_metric
=
65535
for
dst
in
${
ROUTE_PLANS
[
"
$table
"
]
}
do
if
[[
-v
"routes[
$dst
]"
]]
then
# 只需要 dev 和 metric,其余的丢弃,目前的体系全都是 L3 口,仅用 dev 就可以路由
# 这里假设了 dev 和 metric 的位置。babeld 生成的路由表是符合这个规律的
read
_ _ _ dev _ metric _
<<<
${
routes
[
$dst
]
}
if
((
metric < best_metric
))
;
then
best_metric
=
"
$metric
"
best_dev
=
"
$dev
"
fi
fi
done
if
[
-z
"
$best_dev
"
]
then
echo
"route flush table
$table
"
else
echo
"route replace default dev
$best_dev
table
$table
"
fi
done
| ip
-batch
-
}
_calculate_route
while
read
dst others
do
if
[[
"
$dst
"
==
"10.198.0."
*
]]
&&
[[
"
$others
"
==
*
"proto
$TARGET_PROTOCOL
"
*
]]
then
# 读 babeld 路由
declare
-A
routes
while
read
-r
dst others
do
routes[
"
$dst
"
]=
"
$others
"
done
< <
(
ip route show proto
$TARGET_PROTOCOL
root 10.198.0.0/24
)
# 取最优路由并写进系统路由表
# 这个循环内所有 echo 的东西都会打给 iproute2。打调试信息要用 stderr
for
table
in
"
${
!ROUTE_PLANS[@]
}
"
;
do
best_dev
=
best_metric
=
65535
for
dst
in
${
ROUTE_PLANS
[
"
$table
"
]
}
do
if
[[
-v
"routes[
$dst
]"
]]
then
# 只需要 dev 和 metric,其余的丢弃,目前的体系全都是 L3 口,仅用 dev 就可以路由
# 这里假设了 dev 和 metric 的位置。babeld 生成的路由表是符合这个规律的
read
_ _ _ dev _ metric _
<<<
${
routes
[
$dst
]
}
if
((
metric < best_metric
))
;
then
best_metric
=
"
$metric
"
best_dev
=
"
$dev
"
fi
fi
done
if
[
-z
"
$best_dev
"
]
then
echo
"route flush table
$table
"
else
echo
"route replace default dev
$best_dev
table
$table
"
fi
done
| ip
-batch
-
_calculate_route
fi
done
< <
(
ip monitor route
)
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment