#!/bin/bash -eu
#
# Copyright 2015 Hewlett-Packard Development Company, L.P.
#
# 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.
#
#
# This replaces the ebtables on your system with a wrapper script that
# does implicit locking. This is needed if libvirt < 1.2.11 on your platform.

EBTABLES=/sbin/ebtables
EBTABLESREAL=/sbin/ebtables.real
FILES=$TOP_DIR/files

if [[ -f "$EBTABLES" ]]; then
    if file $EBTABLES | grep ELF; then
        sudo mv $EBTABLES $EBTABLESREAL
        sudo install -m 0755 $FILES/ebtables.workaround $EBTABLES
        echo "Replaced ebtables with locking workaround"
    fi
fi
