Solaris 10 network interface MAC 주소 가져오기 질문.
void getNicMacAddr(char *if_name, char *macAddr)
{
... 중략...
{
char command[BUF_SIZE+1] = {0,};
char host_nm[BUF_SIZE] = {0};
char hostname_file[BUF_SIZE+1] = {0,};
FILE *fp = NULL;
FILE *f = NULL;
int32_t ret = 0;
sprintf(hostname_file, "/etc/hostname.%s", if_name);
if(access(hostname_file, 0) != 0)
{
return;
}
if((f = fopen(hostname_file, "r")) == NULL)
{
// error log
strcpy(macAddr, "NONE");
return;
}
ret = fscanf(f, "%s", host_nm);
fclose(f);
if(ret == 0 || ret == EOF)
{
// error log
strcpy(macAddr, "NONE");
return;
}
sprintf(command, "arp %s", host_nm);
fp = popen(command, "r");
if(!fp)
{
// error log
strcpy(macAddr, "NONE");
return;
}
ret = fscanf(fp, "%*s %*s %*s %s", macAddr);
pclose(fp);
if(ret==0 || ret == EOF)
{
// error log
strcpy(macAddr, "NONE");
return;
}
}
return;
}
Solaris10 환경에서 ifconfig 로 MAC 주소를 불러 올 수 없어서 방법을 찾다가 arp라는 명령어를 통해 MAC주소를 가져오는 방법을 시도해 보았는데요.
$ arp hostname
hotname (ip) at mac_address permanent published
이러한 형태로 출력이 되던데... MAC 주소가 제대로 나오는 건지 또, 이 형태가 항상 맞는 건지 궁금합니다. 제 코드에 의문이 있기도 하고요..ㅜ_ㅜ
다른 방법으로 DLPI??를 이용하는 방법이 있던데 그건 계정이 일반계정이라 권한에 문제가 있어서 사용할 수 없더라고요.
혹시 다른 쉬운 방법이 없는지도 궁금합니다. interface name을 통해 MAC 주소를 가져올 수 있으면 되는데요..
많은 가르침 부탁드립니다.
댓글 달기