본문 바로가기

OS/vxworks

PPC9A/SBC310에서 ethernet 카드의 mac address 가져오기

sysLib.c에 정의되어 있는 rsMacStringGet 함수나 mac 주소를 가지고 있는 sysMacAdrs 변수에 접근하면 된다.
uiPortNum는 0 / 1 번 이더넷 인터페이스 카드를 구분할 때 사용된다.

예제 코드

#include "vxWorks.h"
#include <stdio.h>

extern "C" STATUS rsMacStringGet(
        char* pcPortName    /* "motetsec", etc */
        , UINT  uiPortNum     /* e.g. 0, 1 etc */
        , char* pcMacString   /* where to put the return ascii string in the format "nn-nn-nn-nn-nn-nn" (i.e. at least 18 chars reqd) */
        );

extern char sysMacAdrs[2][6];

void macget()
{
    char tempMac[6];
    char tempMacNum[18] = { 0};
    rsMacStringGet("motetsec", 0, tempMacNum ) ;
    printf("eth0 = %s \n", tempMacNum );
}

void macget2()
{
    char tempMac[6];
   
    memcpy(tempMac, sysMacAdrs[0], 6);
   
    printf("eth0 = %02x-%02x-%02x-%02x-%02x-%02x\n", tempMac[0], tempMac[1], tempMac[2], tempMac[3], tempMac[4], tempMac[5]);
}