Skip to content

Instantly share code, notes, and snippets.

@flavio-fernandes
Last active October 14, 2020 20:30
Show Gist options
  • Save flavio-fernandes/130fd5d602116d69e1ca1b7d405acc6d to your computer and use it in GitHub Desktop.
Save flavio-fernandes/130fd5d602116d69e1ca1b7d405acc6d to your computer and use it in GitHub Desktop.
create ip namespace and connect it to an ovs port
#!/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