LINK_ADDR(3)

명칭
link_addr, link_ntoa - 링크 레벨 액세스용 기본 주소 지정 routine

프로그램 라이브러리
libc

서식
<sys/types.h> <sys/socket.h> <net/if_dl.h> void link_addr(const char *addr, struct sockaddr_dl *sdl) char * link_ntoa(const struct sockaddr_dl *sdl)

해설
link_addr() routine는, 링크 레벨 주소를 나타내는 캐릭터 라인을 해석해, 시스템 콜로 사용하는데 적합한 바이너리 정보를 돌려줍니다. link_ntoa() routine는, 링크 레벨 주소를 인수에 취해, 링크 레벨 주소 자신, 존재하는 경우는 그 인터페이스명이나 번호등을 포함한, 현재의 정보를 나타낸다 ASCII 캐릭터 라인을 돌려줍니다. 이 기능은 아직 테스트 단계이며, 변경될 가능성이 있습니다.

link_addr() 에 대해서, 캐릭터 라인 addr 에는, ifconfig(8) 의 제일 인수가 될 수 있다 “name unit-number” 그렇다고 하는 형태의 임의 지정의 네트워크 인터페이스 식별자를 포함할 수가 있어 그 후에 코론, 그리고 피리어드로 단락지어진 16 진수의 조의 형태의 인터페이스 주소가 계속됩니다. 각각의 조는 주소의 1 바이트를 나타내고 있어 주소 바이트는 왼쪽에서 오른쪽에, 저위의 아르바이트로부터 고위의 아르바이트로 차지할 수 있습니다.

즉 le0:8. 0.9. 13. d. 30 (은)는 1 번째의 Lance 이더넷(ethernet) 인터페이스에 전송 된다 이더넷 어드레스를 나타냅니다.

이러한 함수를 직접 사용하는 것은 피할 수 있는 경향이 있어, 오히려 addr2ascii(3) 인터페이스가 사용됩니다. 그러나, 이 인터페이스는 아직 넓지는 실장되어 있지 않기 때문에, 이식성이 있는 프로그램에서는, 이 인터페이스에 의존할 수는 없습니다.

반환값
link_ntoa() (은)는, 항상 눌로 종료하는 캐릭터 라인을 돌려줍니다. link_addr() 함수는 반환값을 돌려주지 않습니다 ( 버그 참조).

관련 항목
addr2ascii(3)

역사
link_addr() 및 link_ntoa() 함수는 4.3BSD Reno 그리고 등장했습니다.

버그
link_ntoa() 의 반환값은 정적인 메모리 area에 있습니다.

함수 link_addr() (은)는, 부적절한 형식의 입력을 진단하는 기능이 필요하고, 이것을 인식하는 애매하지 않은 방법이 필요합니다.

링크 소켓 주소의 sdl_len 필드가 0 의 경우, link_ntoa() (은)는, 인터페이스 주소 바이트의 전에 코론을 삽입하지 않습니다. 변환된 주소가, 최초의 코론이 삽입되지 않고 link_addr() 에게 건네졌을 경우, 이 함수는 주소를 올바르게 해석하지 않을 것입니다.