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
{EPITECH.} tek4
CamTrace S.A.S


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
> http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> To unsubscribe, send any mail to "
> freebsd-questions-unsubscribe at freebsd.org"
>


More information about the freebsd-questions mailing list