Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 08 Dec 2003 11:16:57 +0900
From:      Jun Kuriyama <kuriyama@imgsrc.co.jp>
To:        Dan Nelson <dnelson@allantgroup.com>
Cc:        pdeuskar@freebsd.org
Subject:   Re: dev/em: Link is not up until 2 seconds after "ifconfig up"
Message-ID:  <7mwu985a06.wl@black.imgsrc.co.jp>
In-Reply-To: <20031208020941.GA96374@dan.emsphone.com>
References:  <7m8ylp6pn0.wl@black.imgsrc.co.jp> <20031207150250.L35454@sbk-gw.sibnet.ru> <7my8to5bqk.wl@black.imgsrc.co.jp> <20031208020941.GA96374@dan.emsphone.com>

next in thread | previous in thread | raw e-mail | index | archive | help
At Sun, 7 Dec 2003 20:09:41 -0600,
Dan Nelson wrote:
> You may need to disable other stuff too; modern switches autosense much
> more than just speed and duplex.  Cisco switches have enough features
> enabled on their ports by default that it can take up to 30 seconds for
> traffic to start passing after plugging in a cable. 
> http://www.cisco.com/warp/public/473/12.html

My switch (Allied Telesis 8216XL2) has MDI (straight or cross)
autoselection, but of course I disabled it.  I cannot find other
configurable flags in 8216XL2's menu.

> Do you really need to down then up your interface for vrrp to work? 
> Why can't you just change the MAC address on the fly?  If I change the
> MAC address on my active card with "ifconfig fxp0 ether
> 01:02:03:04:05:06", it sends out a gratuitous arp to let everyone know
> of the change, and traffic never stops.

Hmm, that's why freevrrpd is doing so.  I'll try to modify skipping
interface down/up.

----- vrrp_state.c
        vrrp_thread_mutex_lock();
        vrrp_interface_vripaddr_delete(vr);
        ethaddr = vrrp_list_get_last(vr);
        if (vrrp_interface_down(vr->vr_if->if_name) == -1) {
                vrrp_thread_mutex_unlock();
                return -1;
        }
        if (vrrp_interface_ethaddr_set(vr->vr_if->if_name, &ethaddr) == -1) {
                vrrp_thread_mutex_unlock();
                return -1;
        }
        bcopy(&ethaddr, &vr->vr_if->actualethaddr, sizeof(struct ether_addr));
        if (vrrp_interface_up(vr->vr_if->if_name) == -1) {
                vrrp_thread_mutex_unlock();
                return -1;
        }
        if (vrrp_network_send_gratuitous_arp_ips(vr, &ethaddr) == -1)
                return -1;
        vrrp_thread_mutex_unlock();
-----


-- 
Jun Kuriyama <kuriyama@imgsrc.co.jp> // IMG SRC, Inc.
             <kuriyama@FreeBSD.org> // FreeBSD Project



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?7mwu985a06.wl>