3 # Copyright (C) 2003 Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; version 2 of the License.
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 # GNU General Public License for more details.
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
27 declare -a SETUP_INTERFACES=()
28 declare -a SETUP_FLAGS=()
30 declare -r SETUP_OPTIONS="confdir:,lockfile:,lockrevdir:,hostname:,netdev:,netmask:,netprefix:,netbcast:,interface:,flags:"
31 declare -r SETUP_HELPMSG=$"
32 --confdir ... [default: $CONFDIR/<name>]
34 ... [default: $RUNDIR/<name>]
35 --lockrevdir <dirname>
36 ... [default: $RUNDIR/rev/]
39 --netmask <netmask>|--netprefix <prefix>
40 ... sets the default netmask (a.b.c.d quadruple) or prefix
41 (length of the interface)
42 --interface [<name-suffix>=][<device>:]<ip>[/<mask|prefix>]
43 ... declares an network-interface; this option can be specified
46 ... sets comma-separated list of flags; possible flags are
47 lock: Prevent the vserver from setting new security context
48 sched: Merge scheduler priority of all processes in the
49 vserver so that it acts a like a single one.
50 nproc: Limit the number of processes in the vserver
51 according to ulimit (instead of a per user limit,
52 this becomes a per vserver limit)
53 private: No other process can join this security context.
57 function setup_setOption2
60 --confdir) SETUP_CONFDIR=$2;;
61 --lockfile) SETUP_LOCKFILE=$2;;
62 --lockrevdir) SEUTP_LOCKREVDIR=$2;;
63 --hostname) SETUP_HOSTNAME=$2;;
64 --netdev) SETUP_NETDEV=$2;;
65 --netmask) SETUP_NETMASK=$2;;
66 --netprefix) SETUP_NETPREFIX=$2;;
67 --netbcast) SETUP_BCAST=$2;;
68 --interface) SETUP_INTERFACES=( "${SETUP_INTERFACES[@]}" "$2" );;
72 SETUP_FLAGS=( "${SETUP_FLAGS[@]}" "$@" )
81 function _setup_writeSingleOption
83 test -z "$1" || echo "$1" >"$2"
86 function _setup_writeInterface
93 test "$name" != "$tmp" || name=
97 test "$dev" != "$tmp" || dev=
100 local mask=${tmp##*/}
101 test "$mask" != "$tmp" || mask=
103 local ip=${tmp%%/${mask}}
106 test "${mask%%.*}" != "$mask" || {
111 d=$vdir/interfaces/$idx
114 _setup_writeSingleOption "$name" $d/name
115 _setup_writeSingleOption "$dev" $d/dev
116 _setup_writeSingleOption "$ip" $d/ip
117 _setup_writeSingleOption "$mask" $d/mask
118 _setup_writeSingleOption "$prefix" $d/prefix
121 function setup_setDefaults
123 : ${SETUP_CONFDIR:=$CONFDIR/$1}
124 : ${SETUP_LOCKFILE:=$RUNDIR/$1}
125 : ${SETUP_LOCKREVDIR:=$RUNDIR/rev}
128 function setup_writeOption
131 local cfgdir=$SETUP_CONFDIR
134 mkdir -p "$cfgdir/interfaces"
136 _setup_writeSingleOption "$name" "$cfgdir"/name
137 _setup_writeSingleOption "$SETUP_HOSTNAME" "$cfgdir"/hostname
138 _setup_writeSingleOption "$SETUP_NETDEV" "$cfgdir"/interfaces/dev
139 _setup_writeSingleOption "$SETUP_NETMASK" "$cfgdir"/interfaces/mask
140 _setup_writeSingleOption "$SETUP_NETPREFIX" "$cfgdir"/interfaces/prefix
143 for i in "${SETUP_INTERFACES[@]}"; do
144 _setup_writeInterface "$cfgdir" $idx "$i"
148 test -z "$SETUP_FLAGS" || for i in "${SETUP_FLAGS[@]}"; do
150 done >"$cfgdir"/flags
152 ln -s "$SETUP_LOCKFILE" "$cfgdir/run"
153 ln -s "$SETUP_LOCKREVDIR" "$cfgdir/run.rev"
156 function setup_writeInitialFstab
158 cat <<EOF >$SETUP_CONFDIR/fstab
159 none /proc proc defaults 0 0
160 none /tmp tmpfs size=16m,mode=1777 0 0
161 none /dev/pts devpts gid=5,mode=620 0 0
169 setup_setOption2 --interface foo0=eth0:1.2.3.4/1
170 setup_setOption2 --interface foo1=eth0:1.2.3.4/255.255.248.0
171 setup_setOption2 --interface foo2=eth0:1.2.3.4
172 setup_setOption2 --interface foo3=1.2.3.4
173 setup_setOption2 --interface foo4=1.2.3.4/1
174 setup_setOption2 --interface eth0:1.2.3.4
175 setup_setOption2 --interface eth0:1.2.3.4/1
176 setup_setOption2 --interface 1.2.3.4
177 setup_setOption2 --interface 1.2.3.4/1