하나의 프로세스내에 두개의 netlink 소켓 가능한가요?

oth0310의 이미지

하나의 프로세스내에 넷링크 소켓을 두개 생성해서 커널에 메세지를 던지면 커널이 받아서

해당 멤세지대로 처리를 하고 그 결과는 던진 소켓에만 보내주는 루틴이 필요합니다.

제가 짠 프로그램에서 보면
#######초기화 부분 ######
nl_fd1 생성
nl_fd2 생성

struct sockaddr_nl src1, src2 생성
...
src1.nl_pid = getpid();
src.nl_pid = 1234;

bind(nl_fd1,(struct sockaddr *)&src_addr,size)
bind(nl_fd1,(struct sockaddr *)&src_addr,size)

####### send 부분 ######

sendmsg(nl_fd1,&msg,0);
sendmsg(nl_fd2,&msg,0);

###### recv 부분 ######

val1 = recvmsg(nl_fd1, &msg, 0);
val2 = recvmsg(nl_fd2, &msg, 0);

if(val1 > 0)
...

if(vla2 > 0)
...

간단하게 이렇게 작성을 했는데요.

생성때는 nl_fd1 = 3 nl_fd2= 4 이렇게 생성이 되었는데

커널로 부터 수신은 항상 nl_fd2로 만 받습니다.

nl_fd1 소켓으로 커널에 보낸 메세지는 nl_fd1으로 받고 nl_fd2 로 보내면 nlfd2로 받는게 아닌가요?

아니면 pid를 사용하여 구분해야 하는 건지요?

고수님들의 한말씀 부탁드립니다.

oth0310의 이미지

댓글이 0 이네요. 제가 뭐 잘못 쓴 건가요?