initial net-eth feature

This one is also putting an end to an overly long lived hack
named vm-net by replacing it with a bit more generic mechanism.
This commit is contained in:
Michael Shigorin 2013-06-25 20:04:59 +04:00
parent 3ee510aa3a
commit fb419a9f7d
3 changed files with 60 additions and 0 deletions

View File

@ -0,0 +1 @@
Эта фича позволяет задать конфигурацию Ethernet-интерфейсов.

View File

@ -0,0 +1,9 @@
use/net-eth: use/net
@$(call add_feature)
@$(call xport,NET_ETH)
# typical boilerplate
use/net-eth/dhcp: use/net-eth use/net/dhcp
@$(call add,NET_ETH,eth0:dhcp)
# use e.g. eth0:static:10.0.0.2/24:10.0.0.1 for predefined static configuration

View File

@ -0,0 +1,50 @@
#!/bin/sh
# parse interface configuration tuples:
# iface:proto[:ipv4addr/netmask[:ipv4gw]]
# and write it down as intended
fatal() { echo "error: $*" >&2; exit 1; }
# simple etcnet configurations are also picked up by NM
if type -t NetworkManager >&/dev/null ||
type -t connmand >&/dev/null; then
NMCTL=yes
else
NMCTL=no
fi
IFACEDIR="/etc/net/ifaces"
# uses global variables
write_iface() {
dir="$IFACEDIR/$iface"
mkdir -p "$dir"
case "$proto" in
dhcp)
;;
static)
[ -n "$ipv4addr" ] || fatal "ipv4addr missing"
echo "$ipv4addr" > "$dir/ipv4address"
[ -z "$ipv4gw" ] ||
echo "default via $ipv4gw" > "$dir/ipv4route"
;;
*)
fatal "unknown proto value: $proto"
;;
esac
{
echo "TYPE=eth"
echo "DISABLED=no"
echo "BOOTPROTO=$proto"
echo "NM_CONTROLLED=$NMCTL"
echo "USE_IFPLUGD=yes"
} > "$dir/options"
}
[ -z "$GLOBAL_NET_ETH" ] ||
echo "$GLOBAL_NET_ETH" \
| tr ' ' '\n' \
| while IFS=':' read iface proto ipv4addr ipv4gw; do
[ -n "$iface" -a -n "$proto" ] || continue
write_iface
done