summaryrefslogtreecommitdiff
path: root/scripts/functions
diff options
context:
space:
mode:
authorVagrant Cascadian <vagrant+debianbugs@freegeek.org>2007-09-04 10:41:07 +0200
committermaximilian attems <max@stro.at>2007-09-04 10:41:07 +0200
commit5ac8a35ffa7db1c1295f46c75e6b8cc7cd698546 (patch)
treebf371a2821ca398c9a35bee8b9d74b852711a7aa /scripts/functions
parente2094587495879e34285018ff6f2b9f46c34ca45 (diff)
initramfs-tools: split networking code into separate function
ltsp in ubuntu started using NBD+unionfs+squashfs instead of NFS, and debian-live uses has a network boot methods using cifs in addition to a different way of using NFS (i think it also uses unionfs and maybe squashfs, not just a plain NFS/cifs mount)... so splitting out the networking related code into a separate function would move towards not having forked code for all of these different network boot methods. at least, that's my hope.
Diffstat (limited to 'scripts/functions')
-rw-r--r--scripts/functions35
1 files changed, 35 insertions, 0 deletions
diff --git a/scripts/functions b/scripts/functions
index db223cd..fdd808f 100644
--- a/scripts/functions
+++ b/scripts/functions
@@ -270,3 +270,38 @@ parse_numeric() {
chmod 600 /dev/root
ROOT=/dev/root
}
+
+configure_networking()
+{
+ # support ip options see linux sources Documentation/nfsroot.txt
+ case ${IPOPTS} in
+ none|off)
+ # Do nothing
+ ;;
+ ""|on|any)
+ # Bring up device
+ ipconfig ${DEVICE}
+ ;;
+ dhcp|bootp|rarp|both)
+ ipconfig -c ${IPOPTS} -d ${DEVICE}
+ ;;
+ *)
+ ipconfig -d $IPOPTS
+
+ # grab device entry from ip option
+ NEW_DEVICE=${IPOPTS#*:*:*:*:*:*}
+ if [ "${NEW_DEVICE}" != "${IPOPTS}" ]; then
+ NEW_DEVICE=${NEW_DEVICE%:*}
+ else
+ # wrong parse, possibly only a partial string
+ NEW_DEVICE=
+ fi
+ if [ -n "${NEW_DEVICE}" ]; then
+ DEVICE="${NEW_DEVICE}"
+ fi
+ ;;
+ esac
+
+ # source relevant ipconfig output
+ . /tmp/net-${DEVICE}.conf
+}