Date: Fri, 13 Oct 2006 15:21:03 +0300 (EEST) From: Ari Suutari <ari.suutari@syncrontech.com> To: FreeBSD-gnats-submit@FreeBSD.org Subject: kern/104377: CARP interface doesn't go up on VmWare Message-ID: <200610131221.k9DCL3DR014155@guinness.syncrontech.com> Resent-Message-ID: <200610131230.k9DCUNtO023593@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 104377
>Category: kern
>Synopsis: CARP interface doesn't go up on VmWare
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Fri Oct 13 12:30:20 GMT 2006
>Closed-Date:
>Last-Modified:
>Originator: Ari Suutari
>Release: FreeBSD 6.2-PRERELEASE i386
>Organization:
Syncron Tech Oy
>Environment:
FreeBSD glass.syncrontech.com 6.2-PRERELEASE FreeBSD 6.2-PRERELEASE #0: Fri Oct 13 14:23:21 EEST 2006 asu@glass.syncrontech.com:/usr/src/sys/i386/compile/CARP_GENERIC i386
>Description:
When using CARP on system where physical network interface doesn't
support link stat reporting, carp device doesn't go up during boot.
One can manually up it, but it requires a additional script to be
run during boot.
This is problem at least under VmWare, but should occur also with
older network cards.
>How-To-Repeat:
Put following lines into /etc/rc.conf on VmWare guest machine:
cloned_interfaces="carp0"
ifconfig_carp0="inet 192.168.5.59/24 vhid 55 pass xxx123"
Reboot the machine. After machine is up, run ifconfig carp0.
It displays that interface is not up, and it is in INIT state.
>Fix:
Apply following patch. It changes the bahaviour of CARP so that
it assumes that link is UP unless specifically told by physical
interface that it is down (ie. handle LINK_STATE_UNKNOWN
more gracefully).
I tested this under VmWare (ie. lnc interface) and under
real machine (fxp ethernet interface - supports link
state reporting, as far as I understad). Both worked ok.
Index: ip_carp.c
===================================================================
RCS file: /opt/freebsd-cvs/src/sys/netinet/ip_carp.c,v
retrieving revision 1.27.2.8
diff -c -r1.27.2.8 ip_carp.c
*** ip_carp.c 25 Sep 2006 13:01:59 -0000 1.27.2.8
--- ip_carp.c 13 Oct 2006 11:11:08 -0000
***************
*** 2116,2122 ****
{
CARP_SCLOCK_ASSERT(sc);
! if (sc->sc_carpdev->if_link_state != LINK_STATE_UP ||
!(sc->sc_carpdev->if_flags & IFF_UP)) {
sc->sc_flags_backup = SC2IFP(sc)->if_flags;
SC2IFP(sc)->if_flags &= ~IFF_UP;
--- 2116,2122 ----
{
CARP_SCLOCK_ASSERT(sc);
! if (sc->sc_carpdev->if_link_state == LINK_STATE_DOWN ||
!(sc->sc_carpdev->if_flags & IFF_UP)) {
sc->sc_flags_backup = SC2IFP(sc)->if_flags;
SC2IFP(sc)->if_flags &= ~IFF_UP;
>Release-Note:
>Audit-Trail:
>Unformatted:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200610131221.k9DCL3DR014155>
