하나의 프로세스내에 두개의 netlink 소켓 가능한가요?
하나의 프로세스내에 넷링크 소켓을 두개 생성해서 커널에 메세지를 던지면 커널이 받아서
해당 멤세지대로 처리를 하고 그 결과는 던진 소켓에만 보내주는 루틴이 필요합니다.
제가 짠 프로그램에서 보면
#######초기화 부분 ######
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를 사용하여 구분해야 하는 건지요?
고수님들의 한말씀 부탁드립니다.
댓글좀 달아 주세요. ㅜㅜ
댓글이 0 이네요. 제가 뭐 잘못 쓴 건가요?
댓글 달기