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