Browse code

Merge "Allow ipv6 ECMP in devstack"

Zuul authored on 2018/10/08 17:17:33
Showing 1 changed files
... ...
@@ -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' ' ')