리눅스 커널. 터널 디바이스에서 dev->hard_start_xmit 호출 이전에 패킷 hook 하기?

jenix의 이미지

안녕하세요.

기존 터널 디바이스 드라이버를 수정하고 있는데요

문제가 하나 생겼습니다 -ㅇ-;

dev->hard_start_xmit 콜백함수가 호출되는 시점에서

skb 를 가공하고 처리해서 송신큐로 넣어주더라구요.

그런데 제가 원하는건 이 소캣버퍼의 가공을 async 하게 처리하고 싶은데요.

hard_start_xmit 콜백함수가 호출되기 이전에 이리로 들어올 skb 를

중간에서 훅할수 있으면 제일 좋을것 같습니다만 방법을 잘 모르겠습니다.

제가 아직 네트웍 디바이스 드라이버 작성을 완전히 공부를 못해서 모를수도 있는데..

혹시 이 터널 디바이스 자체에서 hard_start_xmit 함수가 호출되기 이전에 skb 를 접근할수 있는 법은 없을까요.. ( 제가 알바본걸로는 없는것 같던데 ㅠㅠ )

또 제가 생각한건 넷필터 모듈을 만들어서 훅을 하게 하는 법도 있을듯 한데요.

근데 이건 ;; 넷필터 자체 속도도 저하가 될거같고 암튼 이 방법은 여러모로 안좋을것 같은데.. 에고..

( 이게 터널 디바이스는 완전히 소프트웨어(?) 디바이스라 그런것 같습니다. )

터널 디바이스 만들때, 패킷 가공을 async 하게 처리해보신분 계시면 조언좀 부탁드립니다 :oops: