aboutsummaryrefslogtreecommitdiff
path: root/xenserver/etc_init.d_openvswitch
blob: 39d4d364e824b92f3c0d3f612351cc5f88ebb669 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#!/bin/sh
#
# openvswitch
#
# chkconfig: 2345 09 91
# description: Manage Open vSwitch kernel modules and user-space daemons

# Copyright (C) 2009, 2010, 2011 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:
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Open vSwitch switch
### END INIT INFO

. /usr/share/openvswitch/scripts/ovs-lib.sh || exit 1
. /etc/xensource-inventory
test -e /etc/sysconfig/openvswitch && . /etc/sysconfig/openvswitch

case `cat /etc/xensource/network.conf` in
    vswitch|openvswitch)
        ;;
    bridge)
        exit 0
        ;;
    *)
        echo "Open vSwitch disabled (/etc/xensource/network.conf is invalid)" >&2
        exit 0
        ;;
esac

start () {
    set $ovs_ctl ${1-start}
    set "$@" --system-id="$INSTALLATION_UUID"
    set "$@" --system-type="$PRODUCT_BRAND"
    set "$@" --system-version="$PRODUCT_VERSION-$BUILD_NUMBER"
    set "$@" --external-id=xs-system-uuid="$INSTALLATION_UUID"
    set "$@" --daemon-cwd=/var/xen/openvswitch
    if test X"$FORCE_COREFILES" != X; then
	set "$@" --force-corefiles="$FORCE_COREFILES"
    fi
    if test X"$OVSDB_SERVER_PRIORITY" != X; then
	set "$@" --ovsdb-server-priority="$OVSDB_SERVER_PRIORITY"
    fi
    if test X"$VSWITCHD_PRIORITY" != X; then
	set "$@" --ovs-vswitchd-priority="$VSWITCHD_PRIORITY"
    fi
    if test X"$VSWITCHD_MLOCKALL" != X; then
	set "$@" --mlockall="$VSWITCHD_MLOCKALL"
    fi
    if test ! -e /var/run/openvswitch.booted; then
        touch /var/run/openvswitch.booted
        set "$@" --delete-bridges
    fi
    "$@"

    if daemon_is_running ovs-xapi-sync; then
	log_success_msg "ovs-xapi-sync is already running"
    else
	PYTHONPATH=/usr/share/openvswitch/python \
            /usr/share/openvswitch/scripts/ovs-xapi-sync \
            --pidfile --detach --monitor unix:/var/run/openvswitch/db.sock
    fi

    # Allow GRE traffic.
    /sbin/iptables -I INPUT -p gre -j ACCEPT

    touch /var/lock/subsys/openvswitch
}

stop () {
    $ovs_ctl stop
    stop_daemon ovs-xapi-sync
    rm -f /var/lock/subsys/openvswitch
}

ovs_ctl=/usr/share/openvswitch/scripts/ovs-ctl
case $1 in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        stop
        start
        ;;
    reload|force-reload)
        # The main OVS daemons keep up-to-date, but ovs-xapi-sync needs help.
        pidfile=/var/run/openvswitch/ovs-xapi-sync.pid
        if test -e "$pidfile"; then
            pid=`cat "$pidfile"`
            action "Configuring Open vSwitch external IDs" kill -HUP $pid
        fi
        ;;
    status)
        $ovs_ctl status && daemon_status ovs-xapi-sync
        ;;
    version)
        $ovs_ctl version
        ;;
    force-reload-kmod)
        start force-reload-kmod
        ;;
    help)
        printf "openvswitch [start|stop|restart|reload|force-reload|status|version]\n"
        ;;
    *)
        printf "Unknown command: $1\n"
        exit 1
        ;;
esac