[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v2 1/2] tools/hotplug, Use udev rules instead of qemu script to setup the bridge.
From: Anthony PERARD <anthony.perard@xxxxxxxxxx> This patch adds a second argument to vif-bridge script. It can be "vif" or "tap". "vif" give the default behavior and "tap" just add the interface to the found bridge when the action is "add". Signed-off-by: Anthony PERARD <anthony.perard@xxxxxxxxxx> --- tools/hotplug/Linux/vif-bridge | 42 +++++++++++++++++++++++++++----- tools/hotplug/Linux/vif-common.sh | 12 ++++++--- tools/hotplug/Linux/xen-backend.rules | 5 ++- tools/libxl/libxl.c | 4 +- 4 files changed, 48 insertions(+), 15 deletions(-) diff --git a/tools/hotplug/Linux/vif-bridge b/tools/hotplug/Linux/vif-bridge index d35144e..63223f3 100644 --- a/tools/hotplug/Linux/vif-bridge +++ b/tools/hotplug/Linux/vif-bridge @@ -29,6 +29,13 @@ # rules for its ip addresses (if any). #============================================================================ +# Older versions of Xen do not pass in the type as an argument +if [ $# -lt 2 ]; then + type_if=vif +else + type_if=$2 +fi + dir=$(dirname "$0") . "$dir/vif-common.sh" @@ -79,22 +86,43 @@ then fatal "Could not find bridge device $bridge" fi +case "$type_if" in + vif) + dev=$vif + ;; + tap) + dev=$INTERFACE + ;; +esac + case "$command" in online) - setup_bridge_port "$vif" - add_to_bridge "$bridge" "$vif" + if [ "$type_if" = vif ]; then + setup_bridge_port "$vif" + add_to_bridge "$bridge" "$vif" + fi ;; offline) - do_without_error brctl delif "$bridge" "$vif" - do_without_error ifconfig "$vif" down + if [ "$type_if" = vif ]; then + do_without_error brctl delif "$bridge" "$vif" + do_without_error ifconfig "$vif" down + fi + ;; + + add) + if [ "$type_if" = tap ]; then + add_to_bridge "$bridge" "$dev" + fi ;; esac -handle_iptable +if [ "$type_if" = vif ]; then + handle_iptable +fi -log debug "Successful vif-bridge $command for $vif, bridge $bridge." -if [ "$command" == "online" ] +log debug "Successful vif-bridge $command for $dev, bridge $bridge." +if [ "$type_if" = vif -a "$command" = "online" ] then success fi diff --git a/tools/hotplug/Linux/vif-common.sh b/tools/hotplug/Linux/vif-common.sh index 44dd342..4cf00c0 100644 --- a/tools/hotplug/Linux/vif-common.sh +++ b/tools/hotplug/Linux/vif-common.sh @@ -33,7 +33,9 @@ fi case "$command" in add | remove) - exit 0 + if [ "$type_if" != tap ]; then + exit 0 + fi ;; esac @@ -48,9 +50,11 @@ evalVariables "$@" ip=${ip:-} ip=$(xenstore_read_default "$XENBUS_PATH/ip" "$ip") -# Check presence of compulsory args. -XENBUS_PATH="${XENBUS_PATH:?}" -vif="${vif:?}" +if [ "$type_if" != tap ]; then + # Check presence of compulsory args. + XENBUS_PATH="${XENBUS_PATH:?}" + vif="${vif:?}" +fi vifname=$(xenstore_read_default "$XENBUS_PATH/vifname" "") diff --git a/tools/hotplug/Linux/xen-backend.rules b/tools/hotplug/Linux/xen-backend.rules index 2d844a1..8b749ac 100644 --- a/tools/hotplug/Linux/xen-backend.rules +++ b/tools/hotplug/Linux/xen-backend.rules @@ -2,10 +2,11 @@ SUBSYSTEM=="xen-backend", KERNEL=="tap*", RUN+="/etc/xen/scripts/blktap $env{ACT SUBSYSTEM=="xen-backend", KERNEL=="vbd*", RUN+="/etc/xen/scripts/block $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vtpm*", RUN+="/etc/xen/scripts/vtpm $env{ACTION}" SUBSYSTEM=="xen-backend", KERNEL=="vif2-*", RUN+="/etc/xen/scripts/vif2 $env{ACTION}" -SUBSYSTEM=="xen-backend", KERNEL=="vif-*", ACTION=="online", RUN+="/etc/xen/scripts/vif-setup online" -SUBSYSTEM=="xen-backend", KERNEL=="vif-*", ACTION=="offline", RUN+="/etc/xen/scripts/vif-setup offline" +SUBSYSTEM=="xen-backend", KERNEL=="vif-*", ACTION=="online", RUN+="/etc/xen/scripts/vif-setup online vif" +SUBSYSTEM=="xen-backend", KERNEL=="vif-*", ACTION=="offline", RUN+="/etc/xen/scripts/vif-setup offline vif" SUBSYSTEM=="xen-backend", KERNEL=="vscsi*", RUN+="/etc/xen/scripts/vscsi $env{ACTION}" SUBSYSTEM=="xen-backend", ACTION=="remove", RUN+="/etc/xen/scripts/xen-hotplug-cleanup" KERNEL=="evtchn", NAME="xen/%k" KERNEL=="blktap[0-9]*", NAME="xen/%k" KERNEL=="pci_iomul", NAME="xen/%k" +SUBSYSTEM=="net", KERNEL=="tap*", ACTION=="add", RUN+="/etc/xen/scripts/vif-setup $env{ACTION} tap" diff --git a/tools/libxl/libxl.c b/tools/libxl/libxl.c index 40c7255..db45af3 100644 --- a/tools/libxl/libxl.c +++ b/tools/libxl/libxl.c @@ -1206,8 +1206,8 @@ static char ** libxl_build_device_model_args_new(libxl_ctx *ctx, flexarray_set(dm_args, num++, libxl_sprintf(ctx, "nic,vlan=%d,macaddr=%s,model=%s", vifs[i].devid, smac, vifs[i].model)); flexarray_set(dm_args, num++, "-net"); - flexarray_set(dm_args, num++, libxl_sprintf(ctx, "tap,vlan=%d,ifname=%s,script=%s", - vifs[i].devid, vifs[i].ifname, "/etc/xen/scripts/qemu-ifup")); + flexarray_set(dm_args, num++, libxl_sprintf(ctx, "tap,vlan=%d,ifname=%s,script=no", + vifs[i].devid, vifs[i].ifname)); ioemu_vifs++; } } -- 1.6.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |