#! /bin/sh
#
# Copyright (C) 2011, 2012 Nicira Networks, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
### BEGIN INIT INFO
# Provides:          openvswitch-switch
# Required-Start:    $vboxdrv $network $named $remote_fs $syslog
# Required-Stop:     $remote_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Open vSwitch switch
### END INIT INFO

(test -x /usr/sbin/ovs-vswitchd && test -x /usr/sbin/ovsdb-server) || exit 0

. /usr/share/openvswitch/scripts/ovs-lib
test -e /etc/default/openvswitch-switch && . /etc/default/openvswitch-switch

if test X"$BRCOMPAT" = Xyes && test ! -x /usr/sbin/ovs-brcompatd; then
    BRCOMPAT=no
    log_warning_msg "ovs-brcompatd missing, disabling bridge compatibility"
fi

ovs_ctl () {
    set /usr/share/openvswitch/scripts/ovs-ctl "$@"
    if test X"$BRCOMPAT" = Xyes; then
        set "$@" --brcompat
    fi
    "$@"
}

load_kmod () {
    ovs_ctl load-kmod || exit $?
}

start () {
    if ovs_ctl load-kmod; then
	:
    else
	echo "Module has probably not been built for this kernel."
	if ! test -d /usr/share/doc/openvswitch-datapath-source; then
	    echo "Install the openvswitch-datapath-source package, then read"
	else
            echo "For instructions, read"
	fi
	echo "/usr/share/doc/openvswitch-datapath-source/README.Debian"

	if test X"$OVS_MISSING_KMOD_OK" = Xyes; then
	    # We're being invoked by the package postinst.  Do not
	    # fail package installation just because the kernel module
	    # is not available.
	    exit 0
	fi
    fi
    set ovs_ctl ${1-start} --system-id=random
    if test X"$FORCE_COREFILES" != X; then
	set "$@" --force-corefiles="$FORCE_COREFILES"
    fi
    "$@" || exit $?
    for tap in `seq 0 4`; do
        sudo ip tuntap add mode tap lan0p$tap
    done;
    sudo ip tuntap list
    for tap in `seq 0 4`; do
        sudo ip link set lan0p$tap up
    done;
    sudo ip link

    #mirror port
    sudo modprobe dummy
    sudo ip link set up dummy0
    sudo ifconfig dummy0 promisc -arp
    #mgmt
    sudo ip addr add 192.168.1.1 dev lan0hp0
    sudo ip link set lan0hp0 up
    sudo ip route add 192.168.1.0/24 dev lan0hp0
}

stop () {
    ovs_ctl stop
}

case $1 in
    start)
        start
	;;
    stop | force-stop)
        stop
        ;;
    reload | force-reload)
        # The OVS daemons keep up-to-date.
        ;;
    restart)
        stop
        start
        ;;
    status)
        ovs_ctl status
        exit $?
        ;;
    force-reload-kmod)
        start force-reload-kmod
        ;;
    load-kmod)
        load_kmod
        ;;
    *)
        echo "Usage: $0 {start|stop|restart|force-reload|status|force-stop|force-reload-kmod|load-kmod}" >&2
        exit 1
        ;;
esac

exit 0
