/*************************************************
Function: set_ipaddr
Description: set ip addr
Input: net_dev ipaddr
Output:
Return: 0 sucess -1 failed
Others:
*************************************************/
int set_ipaddr(const char *net_dev, const char* ipaddr)
{
struct ifreq ifr;
int fd = 0;
struct sockaddr_in *pAddr;
if((NULL == net_dev) || (NULL == ipaddr))
{
dbg_log_print(LOG_ERR, "illegal call function SetGeneralIP!");
return -1;
}
if ((fd = socket(AF_INET,SOCK_DGRAM,0)) < 0)
{
dbg_log_print(LOG_ERR,"socket....setip..false!!!");
return -1;
}
strcpy(ifr.ifr_name, net_dev);
pAddr = (struct sockaddr_in *)&(ifr.ifr_addr);
bzero(pAddr, sizeof(struct sockaddr_in));
pAddr->sin_addr.s_addr = inet_addr(ipaddr);
pAddr->sin_family = AF_INET;
if (ioctl(fd, SIOCSIFADDR, &ifr) < 0)
{
close(fd);
dbg_log_print(LOG_ERR,"ioctl..set_ipaddr..false!!!");
return -1;
}
close(fd);
return 0;
}
关于ifreq结构:
结构原型:
/*