Можно попробовать получить статус среды через ioctl SIOCGIFMEDIA.
struct ifmediareq ifmr;
int sock = socket(AF_INET, SOCK_DGRAM, 0);
memset(&ifmr, 0x0, sizeof(ifmr));
strlcpy(ifmr.ifm_name, "wm0", sizeof(ifmr.ifm_name));
ioctl(sock, SIOCGIFMEDIA, &ifmr);
if ( (ifmr.ifm_status & (IFM_AVALID|IFM_ACTIVE)) == (IFM_AVALID|IFM_ACTIVE) ) {
printf("link up\n");
} else {
printf("link down\n");
}
close(sock);
Полный пример во вложении.