iPhone のIPアドレスを取得する

iPhoneIPアドレスを取得するCのコード。 ifa_name は 3G が "pdp_ip0"、Wi-Fi が "en0" のようである。


#include
#include
#include
#include
#include

int get_ip_addr(char* buf) {
struct ifaddrs* ifa_list = NULL;
struct ifaddrs* tmp;
int ret;

ret = getifaddrs(&ifa_list);
if (ret < 0) return EXIT_FAILURE;

tmp = ifa_list;
while (tmp) {
if (tmp->ifa_addr->sa_family == AF_INET) {
if (strncmp(tmp->ifa_name, "lo", 2) != 0) {
strcpy(buf, inet_ntoa(((struct sockaddr_in*)tmp->ifa_addr)->sin_addr));
freeifaddrs(ifa_list);
return EXIT_SUCCESS;
}
}
tmp = tmp->ifa_next;
}

freeifaddrs(ifa_list);
return EXIT_FAILURE;
}