creating a veth pair. One end of the interface becomes 'eth1' inside the
container and the other end attaches to 'br-int'.
-The script also lets one to add an IP address to the interface. e.g.:
+The script also lets one to add IP address, MAC address and Gateway address to
+the interface. e.g.:
-`% ovs-docker add-port br-int eth1 $CONTAINER_ID 192.168.1.1/24`
+```
+% ovs-docker add-port br-int eth1 $CONTAINER_ID --ipaddress=192.168.1.2/24 \
+--macaddress=a2:c3:0d:49:7f:f8 --gateway=192.168.1.1
+```
* A previously added network interface can be deleted. e.g.:
BRIDGE="$1"
INTERFACE="$2"
CONTAINER="$3"
- ADDRESS="$4"
- GATEWAY="$5"
- if [ "$#" -lt 3 ]; then
- usage
+ if [ -z "$BRIDGE" ] || [ -z "$INTERFACE" ] || [ -z "$CONTAINER" ]; then
+ echo >&2 "$UTIL add-port: not enough arguments (use --help for help)"
exit 1
fi
+ shift 3
+ while [ $# -ne 0 ]; do
+ case $1 in
+ --ipaddress=*)
+ ADDRESS=`expr X"$1" : 'X[^=]*=\(.*\)'`
+ shift
+ ;;
+ --macaddress=*)
+ MACADDRESS=`expr X"$1" : 'X[^=]*=\(.*\)'`
+ shift
+ ;;
+ --gateway=*)
+ GATEWAY=`expr X"$1" : 'X[^=]*=\(.*\)'`
+ shift
+ ;;
+ *)
+ echo >&2 "$UTIL add-port: unknown option \"$1\""
+ exit 1
+ ;;
+ esac
+ done
+
# Check if a port is already attached for the given container and interface
PORT=`get_port_for_container_interface "$CONTAINER" "$INTERFACE" \
2>/dev/null`
ip netns exec "$PID" ip addr add "$ADDRESS" dev "$INTERFACE"
fi
+ if [ -n "$MACADDRESS" ]; then
+ ip netns exec "$PID" ip link set dev "$INTERFACE" address "$MACADDRESS"
+ fi
+
if [ -n "$GATEWAY" ]; then
ip netns exec "$PID" ip route add default via "$GATEWAY"
fi
usage: ${UTIL} COMMAND
Commands:
- add-port BRIDGE INTERFACE CONTAINER [ADDRESS [GATEWAY]]
+ add-port BRIDGE INTERFACE CONTAINER [--ipaddress="ADDRESS"]
+ [--gateway=GATEWAY] [--macaddress="MACADDRESS"]
Adds INTERFACE inside CONTAINER and connects it as a port
in Open vSwitch BRIDGE. Optionally, sets ADDRESS on
INTERFACE. ADDRESS can include a '/' to represent network
- prefix length. Along with ADDRESS, optionally set the
- default gateway for the container. e.g.:
- ${UTIL} add-port br-int eth1 c474a0e2830e 192.168.1.2/24 \
- 192.168.1.1
+ prefix length. Optionally, sets a GATEWAY and a MACADDRESS.
+ e.g.:
+ ${UTIL} add-port br-int eth1 c474a0e2830e
+ --ipaddress=192.168.1.2/24 --gateway=192.168.1.1
+ --macaddress="a2:c3:0d:49:7f:f8"
del-port BRIDGE INTERFACE CONTAINER
Deletes INTERFACE inside CONTAINER and removes its
connection to Open vSwitch BRIDGE. e.g.: