#!/bin/sh # # lxc_macvlan Start/Stop LXC MACVLAN interface # # chkconfig: 345 98 02 # description: Starts/Stops LXC MACVLAN interface. # ### BEGIN INIT INFO # Provides: lxc_macvlan # Default-Start: 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start/Stop LXC MACVLAN interface # Description: Start/Stop LXC MACVLAN interface ### END INIT INFO # Source function library . /etc/rc.d/init.d/functions # Source any configurable options test ! -r /etc/sysconfig/lxc_macvlan || . /etc/sysconfig/lxc_macvlan # Tests for data provided in /etc/sysconfig/lxc_macvlan if [ -z "$MACVLAN_DEV" ]; then echo "MACVLAN_DEV not set is /etc/sysconfig/lxc_macvlan" exit 6 fi if [ -z "$MACVLAN_NAME" ]; then echo "MACVLAN_NAME not set is /etc/sysconfig/lxc_macvlan" exit 6 fi if [ -z "$MACVLAN_ADDRESS" ]; then echo "MACVLAN_ADDRESS not set is /etc/sysconfig/lxc_macvlan" exit 6 fi # If not defined MACVLAN_HWADDRESS, calculate it from MACVLAN_ADDRESS if [ -z "$MACVLAN_HWADDRESS" ]; then MACVLAN_HWADDRESS=`echo $MACVLAN_ADDRESS | awk -F "/" '{print $1}' | awk -F "." '{ printf "00:16:3e:%x:%x:%x\n", $2, $3, $4 }'` # TODO: Print on start() only # echo "MACVLAN_HWADDRESS not set, using calculated from MACVLAN_ADDRESS=${MACVLAN_ADDRESS} value: ${MACVLAN_HWADDRESS}"; fi start() { msg_starting "LXC macvlan interface" # set -x ip link add link $MACVLAN_DEV name $MACVLAN_NAME address $MACVLAN_HWADDRESS type macvlan mode bridge ip link set $MACVLAN_NAME up ip address add $MACVLAN_ADDRESS brd + dev $MACVLAN_NAME # TODO: check if works: # cat /sys/class/net/macv0/address # 00:13:00:00:20:14 RETVAL=$? [ $RETVAL -eq 0 ] && ok || fail } stop() { msg_stopping "LXC macvlan interface" # set -x ip link set $MACVLAN_NAME down ip link del $MACVLAN_NAME RETVAL=$? [ $RETVAL -eq 0 ] && ok || fail } status() { ip addr show $MACVLAN_NAME } RETVAL=0 # See how we were called. case "$1" in start) start ;; stop) stop ;; restart|reload|force-reload) stop start ;; status) status ;; *) msg_usage "$0 {start|stop|restart|reload|force-reload|status}" exit 3 esac exit $RETVAL