int test_link_of_wired_iface(string interface)
{
const char *iface = interface.c_str();
int linkup = 0;
int fdsock = socket(AF_INET, SOCK_DGRAM, 0);
if(fdsock == -1)
{
linkup = 0;
}
struct ifreq devifreq;
struct ifconf ifc;
char buffer[8192];
ifc.ifc_len = sizeof(buffer);
ifc.ifc_buf = buffer;
strcpy(devifreq.ifr_name, iface);
if (ioctl(fdsock,SIOCGIFFLAGS,&devifreq) < 0)
linkup=0;
if ((devifreq.ifr_flags & IFF_UP)!=0)
{
if ((devifreq.ifr_flags & IFF_RUNNING)!=0 )
linkup=1;
else
linkup=0;
}
else
linkup=0;
close(fdsock);
return linkup;
}