Hi,
I hv a programme which returns the local ip(ipv4) address.
I want to improve this as to check the ip is whether ipv4 or ipv6 and return.
here is what i hv written so for to get ipv4 address.
Code:
in_addr_t dalesa_get_iface( int sock )
{
//in_addr_t l_iface;
static struct ifreq ifreqs[4]; // assumes no more than 4 interfaces configured.
struct ifconf ifconf;
memset(&ifconf,0,sizeof(ifconf));
ifconf.ifc_buf = (char*) (ifreqs);
ifconf.ifc_len = sizeof(ifreqs);
ioctl( sock, SIOCGIFCONF, ( char* )&ifconf );
int nifaces = ifconf.ifc_len/sizeof(struct ifreq);
int i ;
for( i=0; i<nifaces; i++ )
{
struct sockaddr sa = ifreqs[i].ifr_ifru.ifru_addr;
struct sockaddr_in *sa_in = (struct sockaddr_in* )&sa;
if ( sa_in->sin_addr.s_addr != 16777343)
{
printf("sa_in->sin_addr.sin_family = %i \n" ,AF_INET );
return sa_in->sin_addr.s_addr;
}
}
return 16777343; // 127.0.0.1
}
please help me how this can this be improved in order to return ipv4 or ipv6 address?
thanks.