Date: Tue, 9 Nov 1999 17:14:34 GMT From: hibma@skylink.it To: FreeBSD-gnats-submit@freebsd.org Subject: conf/14810: [PATCH] initialising multiple interfaces through DHCP does not work Message-ID: <199911091714.RAA02566@heidi.plazza.it>
index | next in thread | raw e-mail
>Number: 14810
>Category: conf
>Synopsis: [PATCH] initialising multiple interfaces through DHCP does not work
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: change-request
>Submitter-Id: current-users
>Arrival-Date: Wed Nov 10 02:40:01 PST 1999
>Closed-Date:
>Last-Modified:
>Originator: Nick Hibma
>Release: FreeBSD 4.0-CURRENT i386
>Organization:
>Environment:
FreeBSD hare 4.0-CURRENT FreeBSD 4.0-CURRENT #7: Tue Nov 9 17:58:56 CET 1999 toor@henny:/usr/src/sys/compile/HARE i386
>Description:
In my configuration I have two ethernet interfaces that I would like to
configure through DHCP. In rc.conf:
ifconfig_ed1="DHCP"
ifconfig_wb0="DHCP"
This does not work for the second interface as dhclient bails out on the
fact that port 68 is already taken (by dhclient started for the first
interface).
>How-To-Repeat:
Add a second (bogus possibly) network interface to your rc.conf
>Fix:
Instead of starting a dhclient for each interface, start on for all of them at
the same time.
--- /etc/rc.network.orig Tue Nov 9 17:01:34 1999
+++ /etc/rc.network Tue Nov 9 18:04:12 1999
@@ -77,11 +77,11 @@
;;
esac
+ dhcp_interfaces=""
for ifn in ${network_interfaces}; do
- showstat=false
if [ -r /etc/start_if.${ifn} ]; then
. /etc/start_if.${ifn}
- showstat=true
+ eval showstat_$ifn=1
fi
# Do the primary ifconfig if specified
@@ -92,15 +92,22 @@
'')
;;
[Dd][Hh][Cc][Pp])
- ${dhcp_program:-/sbin/dhclient} ${dhcp_flags} ${ifn}
- showstat=true
+ # DHCP inits are done all in one go below
+ dhcp_interfaces="$dhcp_interfaces $ifn"
+ eval showstat_$ifn=1
;;
*)
ifconfig ${ifn} ${ifconfig_args}
- showstat=true
+ eval showstat_$ifn=1
;;
esac
+ done
+
+ if [ ! -z "${dhcp_interfaces}" ]; then
+ ${dhcp_program:-/sbin/dhclient} ${dhcp_flags} ${dhcp_interfaces}
+ fi
+ for ifn in ${network_interfaces}; do
# Check to see if aliases need to be added
#
alias=0
@@ -108,7 +115,7 @@
eval ifconfig_args=\$ifconfig_${ifn}_alias${alias}
if [ -n "${ifconfig_args}" ]; then
ifconfig ${ifn} ${ifconfig_args} alias
- showstat=true
+ eval showstat_$ifn=1
alias=`expr ${alias} + 1`
else
break;
@@ -120,14 +127,15 @@
eval ifconfig_args=\$ifconfig_${ifn}_ipx
if [ -n "${ifconfig_args}" ]; then
ifconfig ${ifn} ${ifconfig_args}
- showstat=true
+ eval showstat_$ifn=1
fi
+ done
- case ${showstat} in
- true)
+ for ifn in ${network_interfaces}; do
+ eval showstat=\$showstat_${ifn}
+ if [ ! -z ${showstat} ]; then
ifconfig ${ifn}
- ;;
- esac
+ fi
done
# Warm up user ppp if required, must happen before natd.
And the uuencoded version (to maintain overlong lines):
begin 644 rc.network.diff
M+2TM("]E=&,O<F,N;F5T=V]R:RYO<FEG"51U92!.;W8@(#D@,3<Z,#$Z,S0@
M,3DY.0HK*RL@+V5T8R]R8RYN971W;W)K"51U92!.;W8@(#D@,3@Z,#0Z,3(@
M,3DY.0I`0"`M-S<L,3$@*S<W+#$Q($!`"B`)"3L["B`)97-A8PH@"BL)9&AC
M<%]I;G1E<F9A8V5S/2(B"B`)9F]R(&EF;B!I;B`D>VYE='=O<FM?:6YT97)F
M86-E<WT[(&1O"BT)"7-H;W=S=&%T/69A;'-E"B`)"6EF(%L@+7(@+V5T8R]S
M=&%R=%]I9BXD>VEF;GT@73L@=&AE;@H@"0D)+B`O971C+W-T87)T7VEF+B1[
M:69N?0HM"0D)<VAO=W-T870]=')U90HK"0D)979A;"!S:&]W<W1A=%\D:69N
M/3$*(`D)9FD*(`H@"0DC($1O('1H92!P<FEM87)Y(&EF8V]N9FEG(&EF('-P
M96-I9FEE9`I`0"`M.3(L,34@*SDR+#(R($!`"B`)"2<G*0H@"0D).SL*(`D)
M6T1D75M(:%U;0V-=6U!P72D*+0D)"21[9&AC<%]P<F]G<F%M.BTO<V)I;B]D
M:&-L:65N='T@)'MD:&-P7V9L86=S?2`D>VEF;GT*+0D)"7-H;W=S=&%T/71R
M=64**PD)"2,@1$A#4"!I;FET<R!A<F4@9&]N92!A;&P@:6X@;VYE(&=O(&)E
M;&]W"BL)"0ED:&-P7VEN=&5R9F%C97,](B1D:&-P7VEN=&5R9F%C97,@)&EF
M;B(**PD)"65V86P@<VAO=W-T871?)&EF;CTQ"B`)"0D[.PH@"0DJ*0H@"0D)
M:69C;VYF:6<@)'MI9FY]("1[:69C;VYF:6=?87)G<WT*+0D)"7-H;W=S=&%T
M/71R=64**PD)"65V86P@<VAO=W-T871?)&EF;CTQ"B`)"0D[.PH@"0EE<V%C
M"BL)9&]N90HK"BL):68@6R`A("UZ("(D>V1H8W!?:6YT97)F86-E<WTB(%T[
M('1H96X**PD))'MD:&-P7W!R;V=R86TZ+2]S8FEN+V1H8VQI96YT?2`D>V1H
M8W!?9FQA9W-]("1[9&AC<%]I;G1E<F9A8V5S?0HK"69I"B`**PEF;W(@:69N
M(&EN("1[;F5T=V]R:U]I;G1E<F9A8V5S?3L@9&\*(`D)(R!#:&5C:R!T;R!S
M964@:68@86QI87-E<R!N965D('1O(&)E(&%D9&5D"B`)"2,*(`D)86QI87,]
M,`I`0"`M,3`X+#<@*S$Q-2PW($!`"B`)"0EE=F%L(&EF8V]N9FEG7V%R9W,]
M7"1I9F-O;F9I9U\D>VEF;GU?86QI87,D>V%L:6%S?0H@"0D):68@6R`M;B`B
M)'MI9F-O;F9I9U]A<F=S?2(@73L@=&AE;@H@"0D)"6EF8V]N9FEG("1[:69N
M?2`D>VEF8V]N9FEG7V%R9W-](&%L:6%S"BT)"0D)<VAO=W-T870]=')U90HK
M"0D)"65V86P@<VAO=W-T871?)&EF;CTQ"B`)"0D)86QI87,]8&5X<'(@)'MA
M;&EA<WT@*R`Q8`H@"0D)96QS90H@"0D)"6)R96%K.PI`0"`M,3(P+#$T("LQ
M,C<L,34@0$`*(`D)979A;"!I9F-O;F9I9U]A<F=S/5PD:69C;VYF:6=?)'MI
M9FY]7VEP>`H@"0EI9B!;("UN("(D>VEF8V]N9FEG7V%R9W-](B!=.R!T:&5N
M"B`)"0EI9F-O;F9I9R`D>VEF;GT@)'MI9F-O;F9I9U]A<F=S?0HM"0D)<VAO
M=W-T870]=')U90HK"0D)979A;"!S:&]W<W1A=%\D:69N/3$*(`D)9FD**PED
M;VYE"B`*+0D)8V%S92`D>W-H;W=S=&%T?2!I;@HM"0ET<G5E*0HK"69O<B!I
M9FX@:6X@)'MN971W;W)K7VEN=&5R9F%C97-].R!D;PHK"0EE=F%L('-H;W=S
M=&%T/5PD<VAO=W-T871?)'MI9FY]"BL)"6EF(%L@(2`M>B`D>W-H;W=S=&%T
M?2!=.R!T:&5N"B`)"0EI9F-O;F9I9R`D>VEF;GT*+0D)"3L["BT)"65S86,*
M*PD)9FD*(`ED;VYE"B`*(`DC(%=A<FT@=7`@=7-E<B!P<'`@:68@<F5Q=6ER
=960L(&UU<W0@:&%P<&5N(&)E9F]R92!N871D+@IE
`
end
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
help
Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199911091714.RAA02566>
