Date: Thu, 1 Apr 2010 20:58:21 +0200 From: =?ISO-8859-1?Q?Samuel_Mart=EDn_Moro?= <faust64@gmail.com> To: Steve Polyack <korvus@comcast.net> Cc: Peter Steele <psteele@maxiscale.com>, "freebsd-questions@freebsd.org" <freebsd-questions@freebsd.org> Subject: Re: Testing ethernet interface status Message-ID: <h2yce5f79aa1004011158v4628f9a3w26826d6c2d95e58b@mail.gmail.com> In-Reply-To: <4BB4EC44.2070804@comcast.net> References: <7B9397B189EB6E46A5EE7B4C8A4BB7CB3B65FC5D@MBX03.exg5.exghost.com> <4BB4EC44.2070804@comcast.net>
next in thread | previous in thread | raw e-mail | index | archive | help
I don't remember everything, but I used to do a program to do that. You should also check ifmr.ifm_active value. There was some "strange" behaviour (obviously normal, but unexpected when I coded it), about up/down interfaces and plug or unplugged cables and yep, ifconfig's doing it 'wrong' :) Samuel Mart=EDn Moro {EPITECH.} tek4 CamTrace S.A.S On Thu, Apr 1, 2010 at 8:56 PM, Steve Polyack <korvus@comcast.net> wrote: > On 04/01/10 14:21, Peter Steele wrote: > >> What's the best what to test the status of an Ethernet interface >> programmatically? We've been using this code similar to this: >> >> struct ifmediareq ifmr; >> memset(&ifmr, 0, sizeof(ifmr)); >> strcpy(ifmr.ifm_name, "nfe0"); >> ioctl(sockfd, SIOCGIFMEDIA, (caddr_t)&ifmr) >> >> and then checking the value of ifmr.ifm_status& IFM_ACTIVE. We've found >> that every once in a while this code will return a false positive, >> indicating that the interface has gone offline when in fact it has not. >> >> So, is there a more reliable call to test if an Ethernet interface has >> gone offline? >> >> > I was going to suggest that you look at the ifconfig(8) source code, but > then I did so myself - it looks like you're doing it pretty much exactly = how > they are. I've never noticed ifconfig(8) returning an incorrect value, n= ot > to say it's not possible. > > Are you sure that nothing is causing interface state resets? i.e. > mismatched duplex/speed settings between the FreeBSD machine and the swit= ch? > Have you checked dmesg(8) for logs of interface state changes? You can > also check the output of 'netstat -i' to check for interface errors. > > > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to " > freebsd-questions-unsubscribe@freebsd.org" >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?h2yce5f79aa1004011158v4628f9a3w26826d6c2d95e58b>