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:
parent
3ee510aa3a
commit
fb419a9f7d
1
features.in/net-eth/README
Normal file
1
features.in/net-eth/README
Normal file
@ -0,0 +1 @@
|
||||
Эта фича позволяет задать конфигурацию Ethernet-интерфейсов.
|
9
features.in/net-eth/config.mk
Normal file
9
features.in/net-eth/config.mk
Normal 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
|
50
features.in/net-eth/rootfs/image-scripts.d/50-net-eth
Executable file
50
features.in/net-eth/rootfs/image-scripts.d/50-net-eth
Executable 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
|
Loading…
Reference in New Issue
Block a user