Tuesday, June 23, 2009

find loca lip

find_local_ip(char *src_ip_addr,char *interface)
{
int tempsfd;
struct ifreq ifr;
struct sockaddr_in *sin = (struct sockaddr_in *)&ifr.ifr_addr;
memset(&ifr,0,sizeof(ifr));

if((tempsfd = socket(AF_INET,SOCK_STREAM,0))==-1) {
perror("temp socket");
exit(0);
}
strcpy(ifr.ifr_name,interface);
sin->sin_family = AF_INET;

if(ioctl(tempsfd,SIOCGIFADDR,&ifr)==0) {
close(tempsfd);
strcpy(src_ip_addr,inet_ntoa(sin->sin_addr));
return 0;
}
else
perror("ioctl");
close(tempsfd);
return 0;
}

No comments: