Netlink Socket에 대한 질문 입니다.

hyper9의 이미지

좀 광범위한 질문인것 같긴하지만요 ~

Linux에서 보이는 netlink socket의 용도는 주로 어떤건지 궁금해서요 ~
그리고,,,netlink socket 을 사용해서 message를 주고 받다보니
NLMSG_ERROR라는 error가 발생하는 경우가 있던데 ,,이건 어떤 이유로
발생하는 error인지도 함께 가르쳐주시면 감사하겠습니다..~

hyper9의 이미지

Code는 대충 아래와 같습니다.

status = recvmsg(fd, &msg, 0);

h = (struct nlmsghdr *)buf;

if(h->nlmsg_type == NLMSG_ERROR)
{
struct nlmsgerr *err = (struct nlmsgerr *)NLMSG_DATA(h);

errno = -err->error;
printf("errno = %s \n", strerror(errno));
}

첫번째 궁금함은 recvmsg()로 수신한 후에 h->nlmsg_type이 NLMSG_ERROR로
나오는 이유가 무엇일까 하는 것이고요 ~

두번째 궁금함은 위에서와 같이 errno를 print해 보면 "File Exists"라고 나오는데
이것도 어떤 의미인지 영 감이 잘 안와서요..

여러분의 검토 및 답변 부탁드립니다. ~ ^^