GNS3 Docker Images
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

67 lines
2.2 KiB

#!/bin/sh
#
# Startup script for Open vSwitch
#
# Copyright (C) 2015 GNS3 Technologies Inc.
# Copyright (C) 2019 Bernhard Ehlers
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
cust_init="/etc/openvswitch/init.sh"
export PATH="$PATH:/usr/share/openvswitch/scripts"
if [ ! -f "/etc/openvswitch/conf.db" ]; then
# init database and start the daemons
cat /proc/sys/kernel/random/uuid > /etc/openvswitch/system-id.conf
ovs-ctl --system-id=random start
# add bridges br0..br3
x=0
while [ $x -lt 4 ]; do
ovs-vsctl add-br br$x
ovs-vsctl set bridge br$x datapath_type=netdev
x=$((x+1))
done
# add eth interfaces without network configuration to br0
sed -n 's/^ *\(eth[0-9]*\):.*/\1/p' /proc/net/dev | while read -r if; do
ofport=${if#eth}
[ "$ofport" -eq 0 ] && ofport=1000
grep -q -s -E \
"^[[:blank:]]*iface[[:blank:]]+${if}[[:blank:].:]" \
/etc/network/interfaces || \
ovs-vsctl add-port br0 "$if" -- \
set interface "$if" ofport_request="$ofport"
done
else
# use existing database and start the daemons
ovs-ctl --system-id=random start
fi
# activate internal bridge interfaces
ovs-vsctl --bare -f table --columns=name find interface type=internal | while read -r if; do
ip link set dev "$if" up
done
# configure non-lo/eth interfaces of /etc/network/interfaces
sed -n -E -e '/^[[:blank:]]*iface[[:blank:]]+(lo|eth)/d' \
-e 's/^[[:blank:]]*iface[[:blank:]]+([a-zA-Z][^[:blank:]]*).*/\1/p' \
/etc/network/interfaces | \
while read -r if; do
ifup -f "$if"
done
# run custom initialization script
[ -f "$cust_init" ] && [ -x "$cust_init" ] && "$cust_init"