It turns out that a host can have multiple valid default gateways,
something that's not common in ipv4.
This patches add supports for multiple default gateways in ipv6
environments.
Closes-Bug: #1786259
Change-Id: I30bf655f7160dd19c427ee79acdf145671a3e520
Signed-off-by: aojeagarcia <aojeagarcia@suse.com>
... | ... |
@@ -103,7 +103,7 @@ SUBNETPOOL_SIZE_V6=${SUBNETPOOL_SIZE_V6:-64} |
103 | 103 |
default_v4_route_devs=$(ip -4 route | grep ^default | awk '{print $5}') |
104 | 104 |
die_if_not_set $LINENO default_v4_route_devs "Failure retrieving default IPv4 route devices" |
105 | 105 |
|
106 |
-default_v6_route_devs=$(ip -6 route | grep ^default | awk '{print $5}') |
|
106 |
+default_v6_route_devs=$(ip -6 route list match default table all | grep via | awk '{print $5}') |
|
107 | 107 |
|
108 | 108 |
function _determine_config_l3 { |
109 | 109 |
local opts="--config-file $NEUTRON_CONF --config-file $Q_L3_CONF_FILE" |
... | ... |
@@ -395,6 +395,10 @@ function _neutron_configure_router_v6 { |
395 | 395 |
|
396 | 396 |
# This logic is specific to using the l3-agent for layer 3 |
397 | 397 |
if is_service_enabled q-l3 || is_service_enabled neutron-l3; then |
398 |
+ # Ensure IPv6 forwarding is enabled on the host |
|
399 |
+ sudo sysctl -w net.ipv6.conf.all.forwarding=1 |
|
400 |
+ # if the Linux host considers itself to be a router then it will |
|
401 |
+ # ignore all router advertisements |
|
398 | 402 |
# Ensure IPv6 RAs are accepted on interfaces with a default route. |
399 | 403 |
# This is needed for neutron-based devstack clouds to work in |
400 | 404 |
# IPv6-only clouds in the gate. Please do not remove this without |
... | ... |
@@ -405,8 +409,6 @@ function _neutron_configure_router_v6 { |
405 | 405 |
# device name would be reinterpreted as a slash, causing an error. |
406 | 406 |
sudo sysctl -w net/ipv6/conf/$d/accept_ra=2 |
407 | 407 |
done |
408 |
- # Ensure IPv6 forwarding is enabled on the host |
|
409 |
- sudo sysctl -w net.ipv6.conf.all.forwarding=1 |
|
410 | 408 |
# Configure and enable public bridge |
411 | 409 |
# Override global IPV6_ROUTER_GW_IP with the true value from neutron |
412 | 410 |
IPV6_ROUTER_GW_IP=$(openstack --os-cloud devstack-admin --os-region "$REGION_NAME" port list -c 'Fixed IP Addresses' | grep $ipv6_pub_subnet_id | awk -F'ip_address' '{ print $2 }' | cut -f2 -d\' | tr '\n' ' ') |