네트워크 디바이스 드라이버에서 패킷 정보접근하기 질문입니다.
하고자 하는것은 디바이스 드라이버단에서 수신한 패킷에 대해
어떤 상위레이어(전송계층정도까지)로 가는지 판단해서 대상패킷에 대해서
다른 작업을 수행해주려 합니다.
그러니까 디바이스 드라이버단에서 해당패킷이 udp의 특정포트로 간다.
하면 그 패킷에 대해 특정한작업을 수행해 주고 싶은건데요.
질문1)이를 위해서 어떤 방법이 있을까요?
우선 든 생각이 수신한 패킷에 대해 헤더연산을 해서.
상위레벨 정보에 접근하는것인데. 잘되지가 않네요.
물론 이 경우 디바이스드라이버에서 수신된 패킷의 헤더에
상위레이어(ip,tdp/udp)정보가 포함되있을경우 가능하겠지요.
수신 인터럽트함수내에서
디바이스 드라이버 pcnet32_rx()함수
//어느 전송계층으로 가는가 찍어보려는 코드
printk("%d\n",skb->nh.iph->protocol);
위의 간단한 한줄코드를 컴파일한후 재부팅하는 과정에서
eth0 드라이버를 인식하는 과정에서 부팅이 멎어버립니다. 흠..
값이 안찍힐수야 있겠지만 부팅과정에서 문제까지 생기는것이 좀
이상하네요.
넷필터를 제가 잘몰라서 그러는데.
저의 경우에도 쓸수있을까요?
질문2) rx함수에서 다루게 되는 수신한패킷(sk_buff)에 상위레이어에 대한
정보(어떤 계층으로 분기되는지)가 다 들어가있는지 궁금합니다.
이게 가능해야 제가 해보려는 위의 방법이 가능한거겠지요.
그럼 두가지 질문에 대한 힌트혹은 답변을 부탁드립니다.
감사합니다. 수고하세요-
댓글 달기