리눅스에서 PCB 관리.

hurryon의 이미지

FreeBSD 의 코드를 리눅스용으로 변경하고 있습니다. PCB 에서 관리 되는 내용을 좀 뽑아 오고 싶은데 여의치 않아서 고수님들의 도움이 필요 해서 이렇게 글을 남깁니다.

inp = sotoinpcb(so);

단순의 위의 한 코드입니다. 물론 FreeBSD 의 코드 입니다. 리눅스에서는 sotoinpcb() 라는 함수가 존재하지 않습니다. ㅠㅠ

sjpark의 이미지

배추의 이미지

그럼 inpcb 라는 구조체는 있나요?

제아이디와비번은 배추, 12ws 입니다.

hurryon의 이미지

struct inpcb 도 리눅스에서는 존재하지 않는거 같습니다. FreeBSD 와는 완전히 동일하게 PCB 를 관리하지는 않는거 같습니다. 단순히 테스크 (프로세스)의 구조체로 struct task_struct 를 이용하지만 FreeBSD 와 같이 PCB 에 의해 관리 되는 IP의 소스, 데스티네이션 등과 같은 정보를 리눅스에서 가져 오고 싶거든요.

휴.

배추의 이미지

구글은 우리의 친구..

Quote:
The Linux kernel code (see linux-${VERS}/src/net/ipv4/af_inet.c)
maintains two adressess in the moral equivalent of an inpcb: the
hashtable address, and the address acutally used for outbound traffic.
When the local "hashtable" address is non-unicast, the Linux kernel
sets the second, acutal-outbound address, to INADDR_ANY.

제아이디와비번은 배추, 12ws 입니다.

hurryon의 이미지

고맙습니다. 찾았네요! 휴...검색을 한다고 했는데...이렇게 답을 주셨네요. ^^

배추의 이미지

jonathan stone씨(jonathan <at> DSG.Stanford.EDU)에게 감사의 메일이라도 ^.^

제아이디와비번은 배추, 12ws 입니다.