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
|
0003-set-routes-file-to-var-run-network-scripts.puppet.patch
|
||||||
0004-Save-dir-path-variable-with-distinct-names.patch
|
0004-Save-dir-path-variable-with-distinct-names.patch
|
||||||
0005-Add-options-content-to-routes-file.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
|
0001-Accept-netmask-or-prefix-length-on-etc-network-route.patch
|
||||||
0002-Install-00check-network-cable-in-the-correct-spot.patch
|
0002-Install-00check-network-cable-in-the-correct-spot.patch
|
||||||
0003-ignore-IFACE-all-for-ifupdown-scripts.patch
|
0003-ignore-IFACE-all-for-ifupdown-scripts.patch
|
||||||
|
0004-Handle-default-route-creation.patch
|
Loading…
Reference in New Issue
Block a user