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.
29 declare -a SETUP_INTERFACES=()
30 declare -a SETUP_FLAGS=()
32 declare -r SETUP_OPTIONS="confdir:,lockfile:,lockrevdir:,hostname:,netdev:,netmask:,netprefix:,netbcast:,interface:,flags:,context:,initstyle:"
33 declare -r SETUP_HELPMSG=$"
34 --context ... the static context of the vserver [default: none; a dynamic
35 context will be assumed]
36 --confdir ... [default: $CONFDIR/<name>]
38 ... [default: $RUNDIR/<name>]
39 --lockrevdir <dirname>
40 ... [default: $CONFDIR/.defaults/run.rev]
43 --netbcast <broadcast>
44 --netmask <netmask>|--netprefix <prefixlen>
45 ... sets the default netmask (a.b.c.d quadruple) or prefixlen
46 (length of the interface)
47 --interface [<name-suffix>=][<device>:]<ip>[/<mask|prefixlen>]
48 ... declares an network-interface; this option can be specified
51 ... sets comma-separated list of flags; possible flags are
52 lock: Prevent the vserver from setting new security context
53 sched: Merge scheduler priority of all processes in the
54 vserver so that it acts a like a single one.
55 nproc: Limit the number of processes in the vserver
56 according to ulimit (instead of a per user limit,
57 this becomes a per vserver limit)
58 private: No other process can join this security context.
61 ... configures the initstyle (e.g. minit,sysv,plain)
64 function setup_setOption2
67 (--context) SETUP_CONTEXT=$2;;
68 (--confdir) SETUP_CONFDIR=$2;;
69 (--lockfile) SETUP_LOCKFILE=$2;;
70 (--lockrevdir) SEUTP_LOCKREVDIR=$2;;
71 (--hostname) SETUP_HOSTNAME=$2;;
72 (--netdev) SETUP_NETDEV=$2;;
73 (--netmask) SETUP_NETMASK=$2;;
74 (--netprefix) SETUP_NETPREFIX=$2;;
75 (--netbcast) SETUP_NETBCAST=$2;;
76 (--interface) SETUP_INTERFACES=( "${SETUP_INTERFACES[@]}" "$2" );;
77 (--initstyle) SETUP_INITSTYLE=$2;;
78 (--flags) old_IFS=$IFS
81 SETUP_FLAGS=( "${SETUP_FLAGS[@]}" "$@" )
90 function _setup_writeSingleOption
92 test -z "$1" || echo "$1" >"$2"
95 function _setup_writeInterface
101 local name=${tmp%%=*}
102 test "$name" != "$tmp" || name=
106 test "$dev" != "$tmp" || dev=
109 local mask=${tmp##*/}
110 test "$mask" != "$tmp" || mask=
112 local ip=${tmp%%/${mask}}
115 test "${mask%%.*}" != "$mask" || {
120 d=$vdir/interfaces/$idx
123 _setup_writeSingleOption "$name" $d/name
124 _setup_writeSingleOption "$dev" $d/dev
125 _setup_writeSingleOption "$ip" $d/ip
126 _setup_writeSingleOption "$mask" $d/mask
127 _setup_writeSingleOption "$prefix" $d/prefix
129 test "$dev" -o "$SETUP_NETDEV" || \
130 echo $"No device specified for interface '$idx'; do not forget to set the 'nodev' option" >&2
133 function setup_setDefaults
135 : ${SETUP_CONFDIR:=$CONFDIR/$1}
136 : ${SETUP_LOCKFILE:=$RUNDIR/$1}
137 : ${SETUP_LOCKREVDIR:=$CONFDIR/.defaults/run.rev}
138 findFile SETUP_FSTAB "$CONFDIR"/.defaults/fstab "$PKGLIBDEFAULTDIR"/fstab
141 function setup_writeOption
144 local cfgdir=$SETUP_CONFDIR
147 mkdir -p "$cfgdir"/interfaces "$cfgdir"/apps/init "$cfgdir"/uts
149 _setup_writeSingleOption "$name" "$cfgdir"/name
150 _setup_writeSingleOption "$SETUP_CONTEXT" "$cfgdir"/context
151 _setup_writeSingleOption "$SETUP_HOSTNAME" "$cfgdir"/uts/nodename
152 _setup_writeSingleOption "$SETUP_NETDEV" "$cfgdir"/interfaces/dev
153 _setup_writeSingleOption "$SETUP_NETMASK" "$cfgdir"/interfaces/mask
154 _setup_writeSingleOption "$SETUP_NETPREFIX" "$cfgdir"/interfaces/prefix
155 _setup_writeSingleOption "$SETUP_NETBCAST" "$cfgdir"/interfaces/bcast
156 _setup_writeSingleOption "$SETUP_INITSTYLE" "$cfgdir"/apps/init/style
159 for i in "${SETUP_INTERFACES[@]}"; do
160 _setup_writeInterface "$cfgdir" $idx "$i"
164 test -z "$SETUP_FLAGS" || for i in "${SETUP_FLAGS[@]}"; do
166 done >"$cfgdir"/flags
168 ln -s "$SETUP_LOCKFILE" "$cfgdir"/run
169 ln -s "$SETUP_LOCKREVDIR" "$cfgdir"/run.rev
172 function setup_writeInitialFstab
174 cat "$SETUP_FSTAB" >"$SETUP_CONFDIR"/fstab
181 setup_setOption2 --interface foo0=eth0:1.2.3.4/1
182 setup_setOption2 --interface foo1=eth0:1.2.3.4/255.255.248.0
183 setup_setOption2 --interface foo2=eth0:1.2.3.4
184 setup_setOption2 --interface foo3=1.2.3.4
185 setup_setOption2 --interface foo4=1.2.3.4/1
186 setup_setOption2 --interface eth0:1.2.3.4
187 setup_setOption2 --interface eth0:1.2.3.4/1
188 setup_setOption2 --interface 1.2.3.4
189 setup_setOption2 --interface 1.2.3.4/1