diff --git a/lib/neutron b/lib/neutron index 8a63359b5c..8517102a65 100644 --- a/lib/neutron +++ b/lib/neutron @@ -1194,6 +1194,12 @@ function _neutron_configure_router_v6 { # and then on to recover the public bridge's link local address sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.${PUBLIC_BRIDGE}.disable_ipv6=0 + if ! ip -6 addr show dev $PUBLIC_BRIDGE | grep 'scope global'; then + # Create an IPv6 ULA address for PUBLIC_BRIDGE if one is not present + IPV6_BRIDGE_ULA=`uuidgen | sed s/-//g | cut -c 23- | sed -e "s/\(..\)\(....\)\(....\)/\1:\2:\3/"` + sudo ip -6 addr add fd$IPV6_BRIDGE_ULA::1 dev $PUBLIC_BRIDGE + fi + if is_neutron_ovs_base_plugin && [[ "$Q_USE_NAMESPACE" = "True" ]]; then local ext_gw_interface=$(_neutron_get_ext_gw_interface) local ipv6_cidr_len=${IPV6_PUBLIC_RANGE#*/}