2009-09-28 2 views
1

Как найти MAC-адрес сетевой карты в IRIX? Я бы предпочел не использовать что-то, что отображает его, и проанализировать вывод.Как найти MAC-адрес программно в IRIX?

Я кодирования C.

методы, которые требуют корневого доступа, являются приемлемыми.

ответ

2
#include <net/raw.h> 
#include <net/if.h> 
#include <net/soioctl.h> 
#include <sys/ioctl.h> 
#include <sys/types.h> 
#include <sys/socket.h> 
#include <unistd.h> 

... 

struct ifreq ifdat; 
int s; 

s = socket (PF_RAW, SOCK_RAW, RAWPROTO_SNOOP); 
strcpy (ifdat.ifr_name, "en0"); 
ioctl (s, SIOCGIFADDR, &ifdat); 

... 

Очистите его немного, и ifdat должен содержать ваш MAC-адрес.

+0

Успех (ifdat.enaddr). Я здесь корону короля IRIX. Спасибо. – Thomas

1

Я не знаю о программном обеспечении, но вы можете попробовать /etc/nvram eaddr, я полагаю, вы могли бы exec() что.

+0

Я бы предпочел не раскошелиться, но, по крайней мере, он работает. Благодарю. Означает ли это, что все сетевые карты имеют один и тот же MAC-адрес? – Thomas

0

На некоторых платформах (например, Linux) ioctl() позволяет получить MAC-адрес. Вам нужно проверить IRIX, поскольку ioctl() зависит от платформы.

+0

Да, я ищу что-то более конкретное, чем это. Я уже смотрел на ioctl() и sysctl(), но мне ничего не остается. – Thomas

+0

Вы проверили возможный запрос ioctl() в заголовках ioctl? – qrdl