iceCount;
if(s_DeviceCount > 0)
{
sprintf(command,"ifconfig %s up",s_Deviceinfo.DeviceName);
system(command); //boot up the device firstly
return SYS_NOERROR;
}
else
return SYS_FAILED;
}
第二种方法,利用linux ioctl函数读取I/O接口的相关信息。
/*****************************************************************************
* Name : trid_char * APP_NetLink_GetIFFLAGS(char *NetDev )
* Description : Get net interface IFFLAGS
* Params : NetDev
* Returns : the string of the NetDev
* Author/date : Danny.Hu /2011.11.16
*****************************************************************************/
RETURN_TYPE APP_NetLink_GetIFFlags( trid_char *NetDev )
{
int fd = -1;
int InterfaceFlags;
struct ifreq ifr;
memset(&ifr, 0, sizeof(ifr));
strcpy(ifr.ifr_name, NetDev);
fd = socket(AF_INET, SOCK_DGRAM, 0);
if (fd < 0)
{
printf("Cannot get control socket\n");
close(fd);
return SYS_FAILED;
}
else if( 0!=(ioctl(fd, SIOCGIFFLAGS, (char*)&ifr)) )
{
printf("Cannot get Network Interface Flags!\n");
close(fd);
return SYS_FAILED;
}
InterfaceFlags = ifr.ifr_flags;
printf("<");
if ( InterfaceFlags & IFF_UP) printf("Network %s is UP, ", NetDev);
if ( InterfaceFlags & IFF_BROADCAST) printf("Network %s is BCAST, ", NetDev);
if ( InterfaceFlags & IFF_MULTICAST) printf("Network %s is MCAST, ", NetDev);
if ( InterfaceFlags & IFF_LOOPBACK) printf("Network %s is LOOP, ", NetDev);
if ( InterfaceFlags & IFF_POINTOPOINT) printf("Network %s is P2P, ", NetDev);
printf(">\n");
close(fd);
return SYS_NOERROR;
}