ETHERS(3)

명칭
ethers, ether_line, ether_aton, ether_ntoa, ether_ntohost, ether_hostton - 이더넷 어드레스 변환 및 조사 routine

프로그램 라이브러리
libc

서식
<sys/types.h> <sys/socket.h> <net/ethernet.h> int ether_line(const char *l, struct ether_addr *e, char *hostname) struct ether_addr * ether_aton(const char *a) char * ether_ntoa(const struct ether_addr *n) int ether_ntohost(char *hostname, const struct ether_addr *e) int ether_hostton(const char *hostname, struct ether_addr *e)

해설
이러한 함수는, ether_addr 구조체를 사용해 이더넷 어드레스를 조작합니다. 이 구조체는 헤더 파일 <netinet/if_ether.h> 에 정의되고 있습니다.

    /*
     * 이더넷(ethernet)(MAC) 주소의 바이트수
     */
    #define ETHER_ADDR_LEN          6
    /*
     * 48 비트 이더넷 어드레스의 구조체
     */
    struct  ether_addr {
            u_char octet[ETHER_ADDR_LEN];
    };

ether_line() 함수는, ethers(5) 형식의 ASCII 캐릭터 라인이다 l (을)를 주사 해, 캐릭터 라인으로 지정된 이더넷 어드레스를 e (으)로 설정해, 호스트명을 h (으)로 설정합니다. 이 함수는, /etc/ethers 의 행을 그 구성 부분에 퍼스 하는데 사용됩니다.

ether_aton() 함수는, 이더넷 어드레스의 ASCII 표현을 ether_addr 구조체로 변환합니다. 같이 ether_ntoa() (은)는, ether_addr 구조체로서 지정된 이더넷 어드레스를 ASCII 캐릭터 라인으로 변환합니다.

ether_ntohost() 함수와 ether_hostton() 함수는, 이더넷 어드레스를 /etc/ethers 데이타베이스로 지정된 대응하는 호스트명에 MAP 합니다. ether_ntohost() (은)는, 이더넷 어드레스로부터 호스트명에의 변환을 실시해, ether_hostton() (은)는, 호스트명으로부터 이더넷 어드레스에의 변환을 실시합니다.

반환값
ether_line() (은)는, 처리가 성공하면(자) 0 을 돌려줍니다. 주어진 행 l 의 일부에서도 퍼스 할 수 없었던 경우는 0 이 아닌 값을 돌려줍니다. 추출된 이더넷 어드레스가 주어졌다 ether_addr 구조체 e 에 돌려주어, 호스트명이 주어진 캐릭터 라인 h 에 돌려줍니다.

ether_ntoa() (은)는, 처리가 성공하면(자) 이더넷 어드레스의 ASCII 표현이 들어간 캐릭터 라인에의 포인터를 돌려줍니다. 주어졌다 ether_addr 구조체를 변환할 수 없었던 경우는, NULL 포인터를 돌려줍니다. 똑같이, ether_aton() (은)는 성공하면(자) ether_addr 구조체에의 포인터를 돌려주어, 실패하면(자) NULL 포인터를 돌려줍니다.

ether_ntohost() 함수와 ether_hostton() 함수는 양쪽 모두, 성공했을 경우는 0 을 돌려주어, /etc/ethers 데이타베이스내에 일치하는 것을 찾아낼 수 없었던 경우는 0 이 아닌 값을 돌려줍니다.

주
유저는, ether_line(), ether_ntohost() 및 ether_hostton() 의 각 함수에게 건네지는 호스트 명문자열이, 돌려주어진 호스트명을 넣을 수 있을 만큼 큰 일을 프로텍션할 필요가 있습니다.

NIS 상호작용
/etc/ethers 의 안에 1 개의 것 + 이 들어간 행이 있는 경우, ether_ntohost() 함수와 ether_hostton() 함수는, /etc/ethers 파일내의 데이터에 가세해, NIS ethers.byname 및 ethers.byaddr MAP를 조사하려고 합니다.

관련 항목
yp(4), ethers(5)

버그
ether_aton() 함수와 ether_ntoa() 함수는, 이것들이 다음에 불려 갔을 때에는 덧쓰기될 가능성이 있는 정적 메모리 area에 보존된 값을 돌려줍니다.

역사
ethers 프로그램 라이브러리 함수의 이 실장은, FreeBSD 2.1 (을)를 위해서(때문에) 작성되어 등장했습니다.