#include <stdio.h>
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
int main (void)
{
char eth0ip[32];
memset(eth0ip, 0, 32);
geteth0ip(eth0ip, 32);
printf("eth0: %s\n", eth0ip);
return 0;
}
int geteth0ip(char *buf, int bufferlen)
{
struct ifaddrs * ifaddrstruct=NULL;
void * tmpaddrptr=NULL;
char addressbuffer[INET_ADDRSTRLEN];
if(getifaddrs(&ifaddrstruct))
{
return -1;
}
while (ifaddrstruct!=NULL)
{
if (ifaddrstruct->ifa_addr->sa_family==AF_INET)
{
tmpaddrptr=&((struct sockaddr_in *)ifaddrstruct->ifa_addr)->sin_addr;
memset(addressbuffer, 0, INET_ADDRSTRLEN);
if(!inet_ntop(AF_INET, tmpaddrptr, addressbuffer, INET_ADDRSTRLEN))
{
return -1;
}
if(!strncmp("eth0", ifaddrstruct->ifa_name, 4))
{
memcpy(buf, addressbuffer, bufferlen);
}
}
ifaddrstruct=ifaddrstruct->ifa_next;
}
freeifaddrs(ifaddrstruct);
return 0;
}
#include <sys/types.h>
#include <ifaddrs.h>
#include <netinet/in.h>
#include <string.h>
#include <arpa/inet.h>
int main (void)
{
char eth0ip[32];
memset(eth0ip, 0, 32);
geteth0ip(eth0ip, 32);
printf("eth0: %s\n", eth0ip);
return 0;
}
int geteth0ip(char *buf, int bufferlen)
{
struct ifaddrs * ifaddrstruct=NULL;
void * tmpaddrptr=NULL;
char addressbuffer[INET_ADDRSTRLEN];
if(getifaddrs(&ifaddrstruct))
{
return -1;
}
while (ifaddrstruct!=NULL)
{
if (ifaddrstruct->ifa_addr->sa_family==AF_INET)
{
tmpaddrptr=&((struct sockaddr_in *)ifaddrstruct->ifa_addr)->sin_addr;
memset(addressbuffer, 0, INET_ADDRSTRLEN);
if(!inet_ntop(AF_INET, tmpaddrptr, addressbuffer, INET_ADDRSTRLEN))
{
return -1;
}
if(!strncmp("eth0", ifaddrstruct->ifa_name, 4))
{
memcpy(buf, addressbuffer, bufferlen);
}
}
ifaddrstruct=ifaddrstruct->ifa_next;
}
freeifaddrs(ifaddrstruct);
return 0;
}