LINUX.ORG.RU

Ответ на: комментарий от dilmah

хм, то что надо, единственное неудобно что для этого надо делать сокет

alex_custov ★★★★★
() автор топика

> Есть информация, получаемая из HAL: имя сетевого интерфейса и его MAC. Можно ли (и как) узнать IP адрес, забинденый на этог интерфейс?

ifconfig $iface

Кстати, не забываем про алиасы, коих на интерфейс можно навесить множество.

gaa ★★
()
Ответ на: комментарий от gaa

>>ifconfig $iface

ну, эт понятно. Но popen'ить /sbin/ifconfig это мегакоряво

alex_custov ★★★★★
() автор топика
Ответ на: комментарий от gaa

> ifconfig $iface

Неправильно.

> Кстати, не забываем про алиасы, коих на интерфейс можно навесить множество.

А неправильно потому, что можно навесить множество адресов без всяких алиасов.

Поэтому правильно - /sbin/ip addr show dev $iface

INFOMAN ★★★★★
()
Ответ на: комментарий от Rastafarra

> getifaddrs

оно-то да, но на том варианте mipsel-gcc, который я пользую - этой радости нету :( так что хочется нечто более низкоуровневое

anonymous
()
Ответ на: комментарий от anonymous

лично я делаю что-то вроде:

#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 ★★★★
()
Ответ на: комментарий от Rastafarra

> лично я делаю что-то вроде:

Спасибо большое

anonymous
()
Ответ на: комментарий от koTuk

> ifconfig парсит файл _PATH_PROCNET_DEV соответственно для linux это 
> будет /proc/net/dev

+ ioctl()

rei3er
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.