Форум — Development IP адрес интерфейса 0 0 Есть информация, получаемая из HAL: имя сетевого интерфейса и его MAC. Можно ли (и как) узнать IP адрес, забинденый на этог интерфейс? Ссылка
Ответ на: комментарий от dilmah 28.05.08 18:02:02 MSK хм, то что надо, единственное неудобно что для этого надо делать сокет alex_custov ★★★★★ (28.05.08 18:46:28 MSK) автор топика Ссылка
> Есть информация, получаемая из HAL: имя сетевого интерфейса и его MAC. Можно ли (и как) узнать IP адрес, забинденый на этог интерфейс? ifconfig $iface Кстати, не забываем про алиасы, коих на интерфейс можно навесить множество. gaa ★★ (28.05.08 18:46:52 MSK) Показать ответы Ссылка
Ответ на: комментарий от gaa 28.05.08 18:46:52 MSK >>ifconfig $iface ну, эт понятно. Но popen'ить /sbin/ifconfig это мегакоряво alex_custov ★★★★★ (28.05.08 18:50:07 MSK) автор топика Ссылка
Ответ на: комментарий от gaa 28.05.08 18:46:52 MSK > ifconfig $iface Неправильно. > Кстати, не забываем про алиасы, коих на интерфейс можно навесить множество. А неправильно потому, что можно навесить множество адресов без всяких алиасов. Поэтому правильно - /sbin/ip addr show dev $iface INFOMAN ★★★★★ (28.05.08 22:48:30 MSK) Показать ответ Ссылка
Ответ на: комментарий от INFOMAN 28.05.08 22:48:30 MSK А как узнать какие вообще есть интерфейсы в системе типа AF_INET ? anonymous (29.05.08 07:01:14 MSK) Показать ответ Ссылка
Ответ на: комментарий от Rastafarra 29.05.08 07:58:48 MSK > getifaddrs оно-то да, но на том варианте mipsel-gcc, который я пользую - этой радости нету :( так что хочется нечто более низкоуровневое anonymous (29.05.08 08:03:25 MSK) Показать ответ Ссылка
Ответ на: комментарий от anonymous 29.05.08 08:03:25 MSK лично я делаю что-то вроде: #include <sys/ioctl.h> #include <net/if.h> #include <unistd.h> #include <arpa/inet.h> #include <stdio.h> int main (int argc, char *argv[]) { int i; int s = socket (PF_INET, SOCK_STREAM, 0); for (i=1;;i++) { struct ifreq ifr; struct sockaddr_in *sin = (struct sockaddr_in *) &ifr.ifr_addr; char *ip; ifr.ifr_ifindex = i; if (ioctl (s, SIOCGIFNAME, &ifr) < 0) break; if (ioctl (s, SIOCGIFADDR, &ifr) < 0) continue; ip = inet_ntoa (sin->sin_addr); printf ("name: %5s, ip: %15s\n", ifr.ifr_name, ip); } close (s); return 0; } Rastafarra ★★★★ (29.05.08 10:11:12 MSK) Показать ответ Ссылка
Ответ на: комментарий от Rastafarra 29.05.08 10:11:12 MSK > лично я делаю что-то вроде: Спасибо большое anonymous (29.05.08 11:38:53 MSK) Ссылка
Ответ на: комментарий от anonymous 29.05.08 07:01:14 MSK ifconfig парсит файл _PATH_PROCNET_DEV соответственно для linux это будет /proc/net/dev koTuk ☆ (29.05.08 12:18:11 MSK) Показать ответ Ссылка
Ответ на: комментарий от koTuk 29.05.08 12:18:11 MSK > ifconfig парсит файл _PATH_PROCNET_DEV соответственно для linux это > будет /proc/net/dev + ioctl() rei3er ★ (29.05.08 22:29:50 MSK) Ссылка