2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-22 09:58:01 +00:00

rhel: Add Red Hat network scripts integration.

[Spec file changes and some documentation updates by Ben Pfaff.]
This commit is contained in:
Alexey I. Froloff 2011-11-03 10:30:04 -07:00 committed by Ben Pfaff
parent df2a06abbe
commit 0fb426263e
8 changed files with 260 additions and 11 deletions

View File

@ -1,6 +1,7 @@
The following people, in alphabetical order, have either authored or
signed off on commits in the Open vSwitch version control repository.
Alexey I. Froloff raorn@altlinux.org
Andrew Evans aevans@nicira.com
Andrew Lambeth wal@nicira.com
Andy Southgate andy.southgate@citrix.com

View File

@ -64,6 +64,14 @@ RHEL. On RHEL 5, the default RPM source directory is
in this example: "kmod-openvswitch", "kmod-openvswitch-debug", and
"kmod-openvswitch-kdump".
Red Hat Network Scripts Integration
-----------------------------------
Simple integration with Red Hat network scripts has been implemented.
Please read rhel/README.RHEL in the source tree or
/usr/share/doc/openvswitch/README.RHEL in the installed openvswitch
package for details.
Reporting Bugs
--------------

1
NEWS
View File

@ -8,6 +8,7 @@ post-v1.3.0
- Added ability to modify TTL in IPv4.
- ovs-appctl:
- New "fdb/flush" command to flush bridge's MAC learning table.
- RHEL packaging now supports integration with Red Hat network scripts.
v1.3.0 - xx xxx xxxx
------------------------

115
rhel/README.RHEL Normal file
View File

@ -0,0 +1,115 @@
Red Hat network scripts integration
-----------------------------------
The RPM packages for Open vSwitch provide some integration with Red
Hat's network scripts. Using this integration is optional.
To use the integration for a Open vSwitch bridge or interface named
<name>, create or edit /etc/sysconfig/network-scripts/ifcfg-<name>.
This is a shell script that consists of a series of VARIABLE=VALUE
assignments. The following OVS-specific variable names are supported:
- DEVICETYPE: Always set to "ovs".
- TYPE: If this is "OVSBridge", then this file represents an OVS
bridge named <name>. Otherwise, it represents a port on an OVS
bridge and TYPE must have one of the following values:
* "OVSPort", if <name> is a physical port (e.g. eth0) or
virtual port (e.g. vif1.0).
* "OVSIntPort", if <name> is an internal port (e.g. a tagged
VLAN).
* "OVSBond", if <name> is an OVS bond.
- OVS_BRIDGE: If TYPE is anything other than "OVSBridge", set to
the name of the OVS bridge to which the port should be attached.
- OVS_OPTIONS: Optionally, extra options to set in the "Port"
table when adding the port to the bridge, as a sequence of
column[:key]=value options. For example, "tag=100" to make the
port an access port for VLAN 100. See the documentation of
"add-port" in ovs-vsctl(8) for syntax and the section on the
Port table in ovs-vswitchd.conf.db(5) for available options.
- OVS_EXTRA: Optionally, additional ovs-vsctl commands, separated
by "--" (double dash).
- BOND_IFACES: For "OVSBond" interfaces, a list of physical
interfaces to bond together.
Note
----
"ifdown" on a bridge will not bring individual ports on the bridge
down. "ifup" on a bridge will not add ports to the bridge. This
behavior should be compatible with standard bridges (with
TYPE=Bridge).
Examples
--------
Standalone bridge:
==> ifcfg-ovsbridge0 <==
DEVICE=ovsbridge0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
IPADDR=A.B.C.D
NETMASK=X.Y.Z.0
HOTPLUG=no
Adding physical eth0 to ovsbridge0 described above:
==> ifcfg-eth0 <==
DEVICE=eth0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=internet
BOOTPROTO=none
HOTPLUG=no
Tagged VLAN interface on top of ovsbridge0:
==> ifcfg-vlan100 <==
DEVICE=vlan100
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSIntPort
BOOTPROTO=static
IPADDR=A.B.C.D
NETMASK=X.Y.Z.0
OVS_BRIDGE=ovsbridge0
OVS_OPTIONS="tag=100"
OVS_EXTRA="set Interface $DEVICE external-ids:iface-id=$(hostname -s)-$DEVICE-vif"
HOTPLUG=no
Bonding:
==> ifcfg-bond0 <==
DEVICE=bond0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBond
OVS_BRIDGE=ovsbridge0
BOOTPROTO=none
BOND_IFACES="gige-1b-0 gige-1b-1 gige-21-0 gige-21-1"
OVS_OPTIONS="bond_mode=balance-tcp lacp=active"
HOTPLUG=no
==> ifcfg-gige-* <==
DEVICE=gige-*
ONBOOT=yes
HOTPLUG=no
Reporting Bugs
--------------
Please report problems to bugs@openvswitch.org.

View File

@ -6,9 +6,12 @@
# without warranty of any kind.
EXTRA_DIST += \
rhel/README.RHEL \
rhel/automake.mk \
rhel/etc_init.d_openvswitch \
rhel/etc_logrotate.d_openvswitch \
rhel/etc_sysconfig_network-scripts_ifdown-ovs \
rhel/etc_sysconfig_network-scripts_ifup-ovs \
rhel/kmodtool-openvswitch-el5.sh \
rhel/openvswitch-kmod-rhel5.spec \
rhel/openvswitch-kmod-rhel5.spec.in \

View File

@ -0,0 +1,53 @@
#!/bin/bash
# Copyright (c) 2011 Alexey I. Froloff.
#
# 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.
. /etc/init.d/functions
cd /etc/sysconfig/network-scripts
. ./network-functions
[ -f ../network ] && . ../network
CONFIG=${1}
source_config
. /etc/sysconfig/network
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-${REAL_DEVICETYPE}"
if [ ! -x ${OTHERSCRIPT} ]; then
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifdown-eth"
fi
case "$TYPE" in
OVSBridge)
${OTHERSCRIPT} ${CONFIG} $2
retval=$?
ovs-vsctl -- --if-exists del-br "$DEVICE"
;;
OVSPort|OVSIntPort|OVSBond)
${OTHERSCRIPT} ${CONFIG} $2
retval=$?
ovs-vsctl -- --if-exists del-port "$OVS_BRIDGE" "$DEVICE"
;;
*)
echo $"Invalid OVS interface type $TYPE"
exit 1
;;
esac
exit $retval

View File

@ -0,0 +1,63 @@
#!/bin/bash
# Copyright (c) 2011 Alexey I. Froloff.
#
# 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.
. /etc/init.d/functions
cd /etc/sysconfig/network-scripts
. ./network-functions
[ -f ../network ] && . ../network
CONFIG=${1}
need_config ${CONFIG}
source_config
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-${REAL_DEVICETYPE}"
if [ ! -x ${OTHERSCRIPT} ]; then
OTHERSCRIPT="/etc/sysconfig/network-scripts/ifup-eth"
fi
case "$TYPE" in
OVSBridge)
ovs-vsctl -- --may-exist add-br "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
${OTHERSCRIPT} ${CONFIG} ${2}
;;
OVSPort)
/sbin/ifup "$OVS_BRIDGE"
${OTHERSCRIPT} ${CONFIG} ${2}
ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
;;
OVSIntPort)
/sbin/ifup "$OVS_BRIDGE"
ovs-vsctl -- --may-exist add-port "$OVS_BRIDGE" "$DEVICE" $OVS_OPTIONS -- set Interface "$DEVICE" type=internal ${OVS_EXTRA+-- $OVS_EXTRA}
${OTHERSCRIPT} ${CONFIG} ${2}
;;
OVSBond)
/sbin/ifup "$OVS_BRIDGE"
for _iface in $BOND_IFACES; do
/sbin/ifup ${_iface}
done
ovs-vsctl -- --fake-iface add-bond "$OVS_BRIDGE" "$DEVICE" ${BOND_IFACES} $OVS_OPTIONS ${OVS_EXTRA+-- $OVS_EXTRA}
${OTHERSCRIPT} ${CONFIG} ${2}
;;
*)
echo $"Invalid OVS interface type $TYPE"
exit 1
;;
esac

View File

@ -35,17 +35,19 @@ make %{_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
install -d -m 755 $RPM_BUILD_ROOT/etc
install -d -m 755 $RPM_BUILD_ROOT/etc/init.d
install -m 755 rhel/etc_init.d_openvswitch \
$RPM_BUILD_ROOT/etc/init.d/openvswitch
install -d -m 755 $RPM_BUILD_ROOT/etc/sysconfig
install -d -m 755 $RPM_BUILD_ROOT/etc/logrotate.d
install -m 755 rhel/etc_logrotate.d_openvswitch \
$RPM_BUILD_ROOT/etc/logrotate.d/openvswitch
install -d -m 755 $RPM_BUILD_ROOT/usr/share/openvswitch/scripts
install -m 755 rhel/usr_share_openvswitch_scripts_sysconfig.template \
$RPM_BUILD_ROOT/usr/share/openvswitch/scripts/sysconfig.template
for base in \
etc_init.d_openvswitch \
etc_logrotate.d_openvswitch \
etc_sysconfig_network-scripts_ifup-ovs \
etc_sysconfig_network-scripts_ifdown-ovs \
usr_share_openvswitch_scripts_sysconfig.template; do
dst=$RPM_BUILD_ROOT/$(echo $base | sed 's,_,/,g')
install -d -m755 "$(dirname $dst)"
install rhel/$base "$dst"
done
docdir=$RPM_BUILD_ROOT/usr/share/doc/openvswitch-%{version}
install -d -m755 "$docdir"
install rhel/README.RHEL "$docdir"
install python/compat/uuid.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
install python/compat/argparse.py $RPM_BUILD_ROOT/usr/share/openvswitch/python
@ -100,6 +102,8 @@ exit 0
%defattr(-,root,root)
/etc/init.d/openvswitch
/etc/logrotate.d/openvswitch
/etc/sysconfig/network-scripts/ifup-ovs
/etc/sysconfig/network-scripts/ifdown-ovs
/etc/openvswitch/bugtool-plugins/*
/usr/bin/ovs-appctl
/usr/bin/ovs-benchmark
@ -142,4 +146,5 @@ exit 0
/usr/share/openvswitch/scripts/ovs-save
/usr/share/openvswitch/scripts/sysconfig.template
/usr/share/openvswitch/vswitch.ovsschema
/usr/share/doc/openvswitch-%{version}/README.RHEL
/var/lib/openvswitch