kuryr/usr/libexec/kuryr/bridge
Liping Mao d241bbbb2f kuryr bind port error with neutron linux bridge driver
When neutron configured with linux bridge driver, kuryr will bind
port error. The linux bridge name should be "brq"+network_id[0,11].

Change-Id: I07be68bbfe7b1384f4e946664aed41546ff9ddce
Closes-bug: #1638041
2016-11-01 14:57:05 +08:00

69 lines
1.7 KiB
Bash
Executable File

#!/bin/bash
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
bind_port() {
PORT_ID=$1
IFNAME=$2
ENDPOINT_ID=$3
MAC_ADDRESS=$4
NET_ID=$5
echo "plugging veth $IFNAME (Neutron port $PORT_ID)..."
# create a linux bridge
br_name="brq"${NET_ID:0:11}
ip link show $br_name
if [ $? -ne 0 ]; then
echo "Bridge $br_name does not exist, create it"
ip link add name $br_name type bridge
echo 0 > /sys/devices/virtual/net/$br_name/bridge/forward_delay
echo 0 > /sys/devices/virtual/net/$br_name/bridge/stp_state
ip link set $br_name up
else
echo "Bridge $br_name exists"
fi
# connect the veth outside to linux bridge
ip link set dev $IFNAME master $br_name
ip link set $IFNAME up
}
unbind_port() {
PORT_ID=$1
IFNAME=$2
ENDPOINT_ID=$3
MAC_ADDRESS=$4
VIF_DETAILs=$5
NET_ID=$6
echo "unplugging veth $IFNAME..."
br_name="brq"${NET_ID:0:11}
ip link set dev $IFNAME nomaster
}
case $1 in
"bind")
shift
bind_port "$@"
exit 0
;;
"unbind")
shift
unbind_port "$@"
exit 0
;;
*)
echo >&2 "$0: Invalid command $1."
exit 1
;;
esac