Testing ethernet interface status
Samuel Martín Moro
faust64 at gmail.com
Thu Apr 1 18:58:43 UTC 2010
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ín Moro
On Thu, Apr 1, 2010 at 8:56 PM, Steve Polyack <korvus at 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, not
> 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 switch?
> 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 at freebsd.org mailing list
> To unsubscribe, send any mail to "
> freebsd-questions-unsubscribe at freebsd.org"
More information about the freebsd-questions