Last active
October 14, 2020 20:30
-
-
Save flavio-fernandes/130fd5d602116d69e1ca1b7d405acc6d to your computer and use it in GitHub Desktop.
create ip namespace and connect it to an ovs port
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
[ $EUID -eq 0 ] || { echo 'must be root' >&2; exit 1; } | |
set -o errexit | |
# set -x | |
create_fake_vm() { | |
iface_id=$1 | |
name=$2 | |
mac=$3 | |
ip=$4 | |
mask=$5 | |
gw=$6 | |
ipv6_addr=$7 | |
ipv6_gw=$8 | |
ip netns add $name | |
ovs-vsctl -- add-port br-int $name -- set interface $name type=internal -- set Interface $name external_ids:iface-id=$iface_id | |
ip link set $name netns $name | |
ip netns exec $name ip link set lo up | |
[ -n "$mac" ] && ip netns exec $name ip link set $name address $mac | |
if [ "$ip" == "dhcp" ]; then | |
ip netns exec $name ip link set $name up | |
#ip netns exec $name dhclient -sf /bin/fullstack-dhclient-script --no-pid -1 -v --timeout 10 $name | |
ip netns exec $name dhclient -sf /bin/fullstack-dhclient-script --no-pid -nw $name | |
else | |
ip netns exec $name ip addr add $ip/$mask dev $name | |
[ -n "$ipv6_addr" ] && ip netns exec $name ip addr add $ipv6_addr dev $name ||: | |
ip netns exec $name ip link set $name up | |
ip netns exec $name ip route add default via $gw dev $name | |
[ -n "$ipv6_gw" ] && ip netns exec $name ip -6 route add default via $ipv6_gw dev $name ||: | |
fi | |
} | |
create_fake_vm $@ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment