X-Original-To: alpine-devel@lists.alpinelinux.org Delivered-To: alpine-devel@mail.alpinelinux.org Received: from mail-ee0-f54.google.com (mail-ee0-f54.google.com [74.125.83.54]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by mail.alpinelinux.org (Postfix) with ESMTPS id 9C6C2DC148E for ; Thu, 29 Dec 2011 18:16:40 +0000 (UTC) Received: by eekc50 with SMTP id c50so15902979eek.13 for ; Thu, 29 Dec 2011 10:16:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=YoYDpZnXdmXZckW+FRzCxLtnwancjZk94/+JHtSfuUo=; b=vpcQdwYqxSo5c3/vlfPCuDUdQ011zvP0BYot2fa3P0RmnB08/mYcTzwc5TplPgFJ5H weoJlfeE6KQNhfa4XBGKhyPNcnAvsClbRvowMNLwXJVwdGZoIomFs1RH9awI/PLCxpoP J9+QbunW2zq4N5I5+V3HyZpoVP7tpOSxc0m7A= Received: by 10.213.25.80 with SMTP id y16mr9292113ebb.5.1325182598643; Thu, 29 Dec 2011 10:16:38 -0800 (PST) Received: from localhost.localdomain (81.184.59.225.dyn.user.ono.com. [81.184.59.225]) by mx.google.com with ESMTPS id q67sm75281482eea.8.2011.12.29.10.16.36 (version=TLSv1/SSLv3 cipher=OTHER); Thu, 29 Dec 2011 10:16:37 -0800 (PST) Sender: =?UTF-8?Q?Roger_Pau_Monn=C3=A9?= From: Roger Pau Monne To: alpine-devel@lists.alpinelinux.org Cc: Roger Pau Monne Subject: [alpine-devel] [PATCH] alpine-conf: modify setup-interfaces to create simple bridges Date: Thu, 29 Dec 2011 19:16:26 +0100 Message-Id: <1325182586-2051-1-git-send-email-roger.pau@entel.upc.edu> X-Mailer: git-send-email 1.7.7.1 X-Mailinglist: alpine-devel Precedence: list List-Id: Alpine Development List-Unsubscribe: List-Post: List-Help: List-Subscribe: Modified setup-interfaces to create simple bridges (works only with one interface per bridge). Useful when setting up a Xen system, since interfaces need to be bridged in order for guests to have networking. Some distributions automatically create one bridge for each interface when Xen is installed, but I think this is too aggressive. --- setup-interfaces.in | 45 +++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 41 insertions(+), 4 deletions(-) diff --git a/setup-interfaces.in b/setup-interfaces.in index b461529..f78b23b 100755 --- a/setup-interfaces.in +++ b/setup-interfaces.in @@ -5,6 +5,7 @@ PREFIX= . $PREFIX/lib/libalpine.sh +bridges="" detect_interfaces() { ip addr | grep -v ' lo:' | awk -F : '/^[0-9]*:/ { print $2}' @@ -42,7 +43,26 @@ config_iface() { local address local netmask local gateway + local bridge local conf=$prefix$iface.conf + local answer + + while [ "$answer" != "yes" ] && [ "$answer" != "no" ] ; do + echon "Do you want to bridge the interface $iface? [no] " + default_read answer no + done + + if [ "$answer" = "yes" ]; then + bridge="br"`echo $iface | sed 's/[^0-9]//g'` + while [ 1 ]; do + echon "Name of the bridge you would like to create: [$bridge] " + default_read bridge $bridge + `echo "$bridges" | grep -q "$bridge"` || break + echo "Name already in use, please choose another one" + done + echo "bridge=${bridge}" > $conf + bridges="$bridges $bridge" + fi # use ipcalc to validate the address. we do accept /mask # we are no interested in the result, only error code, so @@ -55,7 +75,7 @@ config_iface() { [ "$address" = "abort" ] && return if [ "$address" = "dhcp" ] ; then HAS_DHCP=yes - echo "type=dhcp" > $conf + echo "type=dhcp" >> $conf rm $iface.noconf return fi @@ -87,7 +107,7 @@ config_iface() { [ -z "$gateway" ] && break done - echo "type=static" > $conf + echo "type=static" >> $conf echo "address=${address%%/*}" >> $conf #strip off /mask if there echo "netmask=$netmask" >> $conf echo "gateway=$gateway" >> $conf @@ -146,8 +166,20 @@ prompt_for_interfaces() { iface=`basename $i .conf` iface=${iface#[0-9]*~} . ./$i - echo "auto $iface" >> interfaces - echo "iface $iface inet $type" >> interfaces + if [ -n "$bridge" ]; then + echo "auto $iface $bridge" >> interfaces + echo "" >> interfaces + echo "iface $iface inet manual" >> interfaces + echo -e "\tup ip link set \$IFACE up" >> interfaces + echo -e "\tdown ip link set \$IFACE down" >> interfaces + echo "" >> interfaces + echo "iface $bridge inet $type" >> interfaces + echo -e "\tpre-up brctl addbr $bridge" >> interfaces + echo -e "\tpre-up brctl addif $bridge $iface" >> interfaces + else + echo "auto $iface" >> interfaces + echo "iface $iface inet $type" >> interfaces + fi case $type in dhcp) [ -n "$hostname" ] \ @@ -160,7 +192,12 @@ prompt_for_interfaces() { && echo -e "\tgateway $gateway" >> interfaces ;; esac + if [ -n "$bridge" ]; then + echo -e "\tpost-down brctl delif $bridge $iface" >> interfaces + echo -e "\tpost-down brctl delbr $bridge" >> interfaces + fi echo "" >> interfaces + bridge="" done while [ "$answer" != "yes" ] && [ "$answer" != "no" ] ; do -- 1.7.7.1 --- Unsubscribe: alpine-devel+unsubscribe@lists.alpinelinux.org Help: alpine-devel+help@lists.alpinelinux.org ---