do_ipconfig1()
{
	local i j
	modprobe -q af_packet
	for j in $netdev; do
		for i in $(substchar "$j" "|" " "); do
			ipconfig -t 20 $@ $i && break
		done
	done
}

start_ip()
{
	local netdev i

	# parse ip bootargs + launch ipconfig
	[ -n "$NETIF" ] && $(substchar "$NETIF" "," " ") || netdev=$(GetNetIf)

	case $netdev in
		ib[0-9]) modprobe -q ib_ipoib && udevadm settle ;;
	esac

	# support ip options see linux sources Documentation/nbd.txt
	case ${IPOPTS} in
		none|off)
			# Do nothing
			;;
		""|on|any)
			# Bring up device
			do_ipconfig1
			;;
		dhcp|bootp|rarp|both)
			do_ipconfig1 -c ${IPOPTS}
			;;
		*)
			local n=0
			local autoconf client_ip server_ip gw_ip netmask host_name
			for p in $(substchar "$IPOPTS" ":" " "); do
				n=$(($n+1))
				case "$n" in
					1) client_ip="$p" ;;
					2) server_ip="$p" ;;
					3) gw_ip="$p" ;;
					4) netmask="$p" ;;
					5) host_name="$p" ;;
					6) [ -z "$p" ] || netdev="$p" ;;
					7) autoconf="$p" ;;
					*) break ;;
				esac
			done
			for i in $netdev; do
				netdev=$i
				ipconfig $client_ip:$server_ip:$gw_ip:$netmask:$host_name:$netdev:$autoconf
				break
			done
			;;
	esac

	# source relevant ipconfig output
	for i in $(substchar "$netdev" "|" " "); do
		if [ -s /run/net-$i.conf ]; then
			. /run/net-$i.conf
			break
		fi
	done
}

start_ip
