Debian: handle default route in a standard manner.
Currently the packages puppet-network and ifupdown-extra are not handling the default route with in a standard manner. The package puppet-network is adding the netmask value as IPv4 (0.0.0.0), this change uses the prefix length with zero, as ifupdown-extra is capable to process both netmask and prefix length per entry in /etc/network/routes. As for ifupdown-extra it was not capable to handle the "default" keyword for IPv4/6 routes. This change adds that capacity. Test plan [PASS] install AIO-DX with 1 compute node [PASS] unlock compute node, a default IPv6 route was installed [PASS] add/remove IPv6 routes on the compute node [PASS] add/remove another IPv6 default route on the compute node, with different metric Story: 2010211 Task: 46284 Signed-off-by: Andre Kantek <andrefernandozanella.kantek@windriver.com> Change-Id: I38bc8437c26c1e906b600b5f3c609fe504883101
This commit is contained in:
parent
2c71642e6e
commit
755c51c027
@ -0,0 +1,35 @@
|
||||
From c26d6507ef7db08738073b8b11ff5ce4c2851c32 Mon Sep 17 00:00:00 2001
|
||||
From: Andre Kantek <andrefernandozanella.kantek@windriver.com>
|
||||
Date: Tue, 13 Sep 2022 11:10:11 -0300
|
||||
Subject: [PATCH] Use prefix_len for default routes
|
||||
|
||||
Signed-off-by: Andre Fernando Zanella Kantek <AndreFernandoZanella.Kantek@windriver.com>
|
||||
---
|
||||
lib/puppet/provider/network_route/routes.rb | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/lib/puppet/provider/network_route/routes.rb b/lib/puppet/provider/network_route/routes.rb
|
||||
index 0874b1d..ec2d1fe 100644
|
||||
--- a/lib/puppet/provider/network_route/routes.rb
|
||||
+++ b/lib/puppet/provider/network_route/routes.rb
|
||||
@@ -76,7 +76,7 @@ Puppet::Type.type(:network_route).provide(:routes) do
|
||||
if route[0] == 'default'
|
||||
name = 'default'
|
||||
route_hash[name][:network] = 'default'
|
||||
- route_hash[name][:netmask] = '0.0.0.0'
|
||||
+ route_hash[name][:netmask] = '0'
|
||||
else
|
||||
# use the CIDR version of the target as :name
|
||||
name = "#{route[0]}/#{IPAddr.new(route[1]).to_i.to_s(2).count('1')}"
|
||||
@@ -105,7 +105,7 @@ Puppet::Type.type(:network_route).provide(:routes) do
|
||||
raise Puppet::Error, "#{provider.name} is missing the required parameter 'gateway'." if provider.gateway.nil?
|
||||
raise Puppet::Error, "#{provider.name} is missing the required parameter 'interface'." if provider.interface.nil?
|
||||
|
||||
- netmask = (provider.name == 'default' ? '0.0.0.0' : provider.netmask)
|
||||
+ netmask = (provider.name == 'default' ? '0' : provider.netmask)
|
||||
|
||||
contents << "#{provider.network} #{netmask} #{provider.gateway} #{provider.interface}"
|
||||
contents << (provider.options == :absent ? "\n" : " #{provider.options}\n")
|
||||
--
|
||||
2.17.1
|
||||
|
@ -3,3 +3,4 @@
|
||||
0003-set-routes-file-to-var-run-network-scripts.puppet.patch
|
||||
0004-Save-dir-path-variable-with-distinct-names.patch
|
||||
0005-Add-options-content-to-routes-file.patch
|
||||
0006-Use-prefix_len-for-default-routes.patch
|
@ -0,0 +1,152 @@
|
||||
From 946aea4142d5d0acea03c3f72509fd2285f7f73f Mon Sep 17 00:00:00 2001
|
||||
From: Andre Kantek <andrefernandozanella.kantek@windriver.com>
|
||||
Date: Tue, 13 Sep 2022 11:02:35 -0300
|
||||
Subject: [PATCH] Handle default route creation
|
||||
|
||||
Signed-off-by: Andre Kantek <andrefernandozanella.kantek@windriver.com>
|
||||
---
|
||||
debian/ifupdown-extra.networking-routes.init | 34 ++++++++++++++------
|
||||
if-up-scripts/static-routes | 30 ++++++++++++-----
|
||||
2 files changed, 46 insertions(+), 18 deletions(-)
|
||||
|
||||
diff --git a/debian/ifupdown-extra.networking-routes.init b/debian/ifupdown-extra.networking-routes.init
|
||||
index db1254d..e9097d1 100755
|
||||
--- a/debian/ifupdown-extra.networking-routes.init
|
||||
+++ b/debian/ifupdown-extra.networking-routes.init
|
||||
@@ -81,6 +81,20 @@ function get_prefix_length {
|
||||
fi
|
||||
}
|
||||
|
||||
+# if route is default, remove prefix_len
|
||||
+function get_linux_network {
|
||||
+ network=$1
|
||||
+ netmask=$2
|
||||
+ local prefix_len
|
||||
+ local linux_network
|
||||
+ prefix_len=$(get_prefix_length ${netmask})
|
||||
+ linux_network="${network}${prefix_len}"
|
||||
+ if [ "${network}" == "default" ]; then
|
||||
+ linux_network="${network}"
|
||||
+ fi
|
||||
+ echo "${linux_network}"
|
||||
+}
|
||||
+
|
||||
# Functions to read the route file and process it
|
||||
|
||||
|
||||
@@ -118,19 +132,19 @@ del_global_routes() {
|
||||
cat $ROUTEFILE | egrep "^[^#].*$" |
|
||||
while read network netmask gateway interface ; do
|
||||
if [ -n "$interface" ] && [ -n "$network" ] && [ -n "$netmask" ] && [ -n "$gateway" ] ; then
|
||||
- local prefix_len
|
||||
- prefix_len=$(get_prefix_length ${netmask})
|
||||
+ local linux_network
|
||||
+ linux_network=$(get_linux_network ${network} ${netmask})
|
||||
if [ "$gateway" != "reject" ] ; then
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Deleting global route for $network / $netmask through gateway $gateway"
|
||||
if [ "$interface" != "any" ] ; then
|
||||
- run_route del ${network}${prefix_len} via ${gateway} dev ${interface}
|
||||
+ run_route del ${linux_network} via ${gateway} dev ${interface}
|
||||
else
|
||||
- run_route del ${network}${prefix_len} via ${gateway}
|
||||
+ run_route del ${linux_network} via ${gateway}
|
||||
fi
|
||||
[ $? -ne 0 ] && ret=$?
|
||||
else
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Deleting reject route for $network / $netmask"
|
||||
- run_route del ${network}${prefix_len} reject
|
||||
+ run_route del ${linux_network} reject
|
||||
[ $? -ne 0 ] && ret=$?
|
||||
fi
|
||||
|
||||
@@ -147,19 +161,19 @@ add_global_routes() {
|
||||
cat $ROUTEFILE | egrep "^[^#].*$" |
|
||||
while read network netmask gateway interface ; do
|
||||
if [ -n "$interface" ] && [ -n "$network" ] && [ -n "$netmask" ] && [ -n "$gateway" ] ; then
|
||||
- local prefix_len
|
||||
- prefix_len=$(get_prefix_length ${netmask})
|
||||
+ local linux_network
|
||||
+ linux_network=$(get_linux_network ${network} ${netmask})
|
||||
if [ "$gateway" != "reject" ] ; then
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Adding global route for $network / $netmask through gateway $gateway"
|
||||
if [ "$interface" != "any" ] ; then
|
||||
- run_route add ${network}${prefix_len} via ${gateway} dev ${interface}
|
||||
+ run_route add ${linux_network} via ${gateway} dev ${interface}
|
||||
else
|
||||
- run_route add ${network}${prefix_len} via ${gateway}
|
||||
+ run_route add ${linux_network} via ${gateway}
|
||||
fi
|
||||
[ $? -ne 0 ] && ret=$?
|
||||
else
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Adding global reject route for $network / $netmask"
|
||||
- run_route add ${network}${prefix_len} reject
|
||||
+ run_route add ${linux_network} reject
|
||||
[ $? -ne 0 ] && ret=$?
|
||||
fi
|
||||
|
||||
diff --git a/if-up-scripts/static-routes b/if-up-scripts/static-routes
|
||||
index 867303d..1341f43 100755
|
||||
--- a/if-up-scripts/static-routes
|
||||
+++ b/if-up-scripts/static-routes
|
||||
@@ -85,6 +85,20 @@ function get_prefix_length {
|
||||
fi
|
||||
}
|
||||
|
||||
+# if route is default, remove prefix_len
|
||||
+function get_linux_network {
|
||||
+ network=$1
|
||||
+ netmask=$2
|
||||
+ local prefix_len
|
||||
+ local linux_network
|
||||
+ prefix_len=$(get_prefix_length ${netmask})
|
||||
+ linux_network="${network}${prefix_len}"
|
||||
+ if [ "${network}" == "default" ]; then
|
||||
+ linux_network="${network}"
|
||||
+ fi
|
||||
+ echo "${linux_network}"
|
||||
+}
|
||||
+
|
||||
del_static_routes() {
|
||||
# NOTE: We actually don't have to remove routes if downing an interface
|
||||
# since they will be removed nevertheless. In any case, this
|
||||
@@ -93,14 +107,14 @@ del_static_routes() {
|
||||
cat $ROUTEFILE | egrep "^[^#].*[[:space:]]${IFACE}[[:space:]]*$" |
|
||||
while read network netmask gateway interface ; do
|
||||
if [ -n "$interface" ] && [ -n "$network" ] && [ -n "$netmask" ] && [ -n "$gateway" ] ; then
|
||||
- local prefix_len
|
||||
- prefix_len=$(get_prefix_length ${netmask})
|
||||
+ local linux_network
|
||||
+ linux_network=$(get_linux_network ${network} ${netmask})
|
||||
if [ "$gateway" != "reject" ] ; then
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Deleting route for $network / $netmask through gateway $gateway at $interface"
|
||||
- ip route del ${network}${prefix_len} via ${gateway} dev ${interface}
|
||||
+ ip route del ${linux_network} via ${gateway} dev ${interface}
|
||||
else
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Deleting reject route for $network / $netmask when bringing up $interface"
|
||||
- ip route del ${network}${prefix_len} reject
|
||||
+ ip route del ${linux_network} reject
|
||||
fi
|
||||
|
||||
else
|
||||
@@ -113,14 +127,14 @@ add_static_routes() {
|
||||
cat $ROUTEFILE | egrep "^[^#].*[[:space:]]${IFACE}[[:space:]]*$" |
|
||||
while read network netmask gateway interface ; do
|
||||
if [ -n "$interface" ] && [ -n "$network" ] && [ -n "$netmask" ] && [ -n "$gateway" ] ; then
|
||||
- local prefix_len
|
||||
- prefix_len=$(get_prefix_length ${netmask})
|
||||
+ local linux_network
|
||||
+ linux_network=$(get_linux_network ${network} ${netmask})
|
||||
if [ "$gateway" != "reject" ] && [ "$gateway" != "blackhole" ] ; then
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Adding route for $network / $netmask through gateway $gateway at $interface"
|
||||
- ip route add ${network}${prefix_len} via ${gateway} dev ${interface}
|
||||
+ ip route add ${linux_network} via ${gateway} dev ${interface}
|
||||
else
|
||||
[ "$VERBOSITY" -eq 1 ] && echo "DEBUG: Adding reject/blackhole route for $network / $netmask when bringing up $interface"
|
||||
- ip route add blackhole ${network}${prefix_len}
|
||||
+ ip route add blackhole ${linux_network}
|
||||
fi
|
||||
|
||||
else
|
||||
--
|
||||
2.17.1
|
||||
|
@ -1,3 +1,4 @@
|
||||
0001-Accept-netmask-or-prefix-length-on-etc-network-route.patch
|
||||
0002-Install-00check-network-cable-in-the-correct-spot.patch
|
||||
0003-ignore-IFACE-all-for-ifupdown-scripts.patch
|
||||
0004-Handle-default-route-creation.patch
|
Loading…
Reference in New Issue
Block a user