34 lines
780 B
Bash
Executable File
34 lines
780 B
Bash
Executable File
#!/bin/bash -e
|
|
|
|
netns="$1"
|
|
ifname="$2" # optional
|
|
ip_addr="$3" # optional
|
|
|
|
if [ -f "/var/run/netns/${netns}" ]; then
|
|
echo "netns $netns already exists"
|
|
else
|
|
echo "Creating netns $netns"
|
|
ip netns add "$netns"
|
|
fi
|
|
|
|
if [ "x$ifname" = "x" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
if [ -d "/sys/class/net/${ifname}" ]; then
|
|
echo "Moving iface $ifname to netns $netns"
|
|
ip link set $ifname netns $netns
|
|
else
|
|
ip netns exec $netns ls "/sys/class/net/${ifname}" >/dev/null && echo "iface $ifname already in netns $netns"
|
|
fi
|
|
|
|
if [ "x$ip_addr" = "x" ]; then
|
|
exit 0
|
|
fi
|
|
|
|
echo "Setting up iface $ifname with ${ip_addr}"
|
|
ip netns exec $netns ip link set dev $ifname up
|
|
ip netns exec $netns ip addr add ${ip_addr}/24 dev $ifname
|
|
|
|
#ip netns exec $netns ip route add default via ${ip_addr}
|