File docker-container-ifadd of Package docker-container-starter

#!/bin/bash

if [[ -z "${IFCONFIG_FILE}" ]] || [[ ! -f "${IFCONFIG_FILE}" ]]; then
	if [[ -z "${IFCONFIG_FILE}" ]]; then
		logger -p warning "Path of interface configuration file is not set, try default path..."
	elif [[ ! -e "${IFCONFIG_FILE}" ]]; then
		logger -p warning "Path of interface configuration file does not point to a file, try default path..."
	elif [[ ! -f "${IFCONFIG_FILE}" ]]; then
		logger -p warning "Path of interface configuration file does not point to a readable file, try default path..."
	fi

	if [[ -z "${RUNTIME_DIRECTORY}" ]]; then
		logger -p error "Runtime directory is not set either, is this script run from the systemd docker-container@.service? Quit now."
		exit 255
	elif [[ -f "${RUNTIME_DIRECTORY}/ifconfig" ]]; then
		IFCONFIG_FILE="${RUNTIME_DIRECTORY}/ifconfig"
		logger -p info "using file "${IFCONFIG_FILE}" as network interface configuration file."
	else
		logger -p error "Can not file default network interface configuration file. quit now."
		exit 255
	fi
fi

if [[ -z "${NAME}" ]]; then
	logger -p error "The environment variable NAME is empty, this must be a valid docker container name."
	exit 255
fi

source "${IFCONFIG_FILE}"

if [[ ${I_IF} -eq 0 ]]; then
	logger -p warning "No interfaces are defined for docker container \"${NAME}\"."
	exit 0
fi

ret=0
for i in $(seq 0 ${I_IF}); do
	if [ $i -ge ${I_IF} ]; then
		break
	fi
	logger -p info "Starting network interface ${i} ..."
	if [[ -z "${IF_BRIDGE[${i}]}" ]]; then
		logger -p error "No bridge defined, can not create interface."
		let "ret++"
		break
	fi
	if [[ -z "${IF[${i}]}" ]]; then
		logger -p error "No interface defined, can not create interface."
		let "ret++"
		break
	fi
	if [[ -z "${IF_IPADDR[${i}]}" ]]; then
		logger -p error "No ip address defined, can not create interface."
		let "ret++"
		break
	fi
	if [[ -z "${IF_NETMASK[${i}]}" ]]; then
		logger -p error "No ip address netmask defined, can not create interface."
		break
	fi
	if [[ -z "${IF_MAC[${i}]}" ]]; then
		logger -p warning "No mac address defined, generate a random one."
		IF_MAC[${i}]="$(printf '00:%02X:%02X:%02X:%02X:%02X\n' $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256] $[RANDOM%256])"
	fi
	if [[ -z "${IF_GW[${i}]}" ]]; then
		logger -p warning "No gateway address defined, interface will not have the gateway address set."
		/usr/bin/ovs-docker add-port "${IF_BRIDGE[${i}]}" "${IF[${i}]}" "${NAME}" --macaddress="${IF_MAC[${i}]}" --ipaddress="${IF_IPADDR[${i}]}/${IF_NETMASK[${i}]}" --mtu=1500
	else
		/usr/bin/ovs-docker add-port "${IF_BRIDGE[${i}]}" "${IF[${i}]}" "${NAME}" --macaddress="${IF_MAC[${i}]}" --ipaddress="${IF_IPADDR[${i}]}/${IF_NETMASK[${i}]}" --gateway="${IF_GW[${i}]}" --mtu=1500
	fi
	if [[ $? -ne 0 ]]; then
		logger -p error "ovs-docker returned code: $?."
		let "ret++"
	fi
done

exit $ret
openSUSE Build Service is sponsored by