Skip site navigation (1)Skip section navigation (2)
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>