2009-09-28 3 views

답변

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); 

... 

약간 정리하고 MAC 주소가 포함되어야합니다.

+0

성공 (ifdat.enaddr). 나는 이로써 IRIX 왕에게 왕관을 쓰게됩니다. 고맙습니다. – Thomas

1

프로그래밍 방식으로는 알지 못하지만 /etc/nvram eaddr을 시도해 볼 수 있습니다. exec() 수 있습니다.

+0

나는 껍질을 벗기고 싶지 않지만, 적어도 작동합니다. 감사. 이것은 모든 네트워크 카드가 동일한 MAC 주소를 갖는 것을 의미합니까? – Thomas

0

일부 플랫폼 (예 : Linux) ioctl()은 MAC 주소를 가져올 수 있습니다. ioctl()은 플랫폼에 따라 다르므로 IRIX를 점검해야합니다.

+0

그래, 나는 그것보다 조금 더 구체적인 것을 찾고있다. 이미 ioctl()과 sysctl()을 살펴 봤지만 나에게 아무런 관심도 보이지 않는다. – Thomas

+0

ioctl 헤더에서 가능한 ioctl() 요청을 확인 했습니까? – qrdl

관련 문제