2011-08-15 2 views
1

sk_buff에서 숯 * 버퍼를 수집했습니다 (skb-> head에서 skb_> end로 이동).이 버퍼를 다른 PC로 전송했습니다. 그리고 지금 나는이 패킷을 새로운 PC에서 네트워크로 다시 보내고 싶다. 어떻게 보낼 수 있습니까? dev_queue_xmit()을 사용하여 char * 및 데이터 길이로부터 sk_buff 구조체를 재구성해야했습니다. 것이 가능하다? 아니면 원시 소켓을 사용하여 데이터를 다시 보낼 수 있습니까?커널에서 sk_buff를 사용하여 char * buf로 패킷을 보냅니다.

답변

0

난 당신이 sk_buff, 하지 재구성을 구성 믿습니다. 게다가 나는 char*을 수집하는 것이 합리적이라고 생각하지 않습니다.

sk_buff은 별도의 조각으로 구성된 바이트 스트림을 나타 내기 때문에 패킷을 작성할 때 모든 곳으로 복사 할 필요가 없습니다. sk_buff에서 단일 버퍼를 수집해서는 안되지만 단일 버퍼가있는 경우 새 부분을 sk_buff으로 채우고 한 부분 만 버퍼를 가리키면 완료됩니다.

+0

필자는 새로운 측면에서 패킷을 다시 보내야합니다. 그 이유는 데이터 + 헤더를 전송하는 이유입니다. 이제 어떻게 할 수 있습니까? 페이로드 및 헤더에 대해 하나의 버퍼 또는 다른 char * 버퍼가 필요합니까? – SeregASM

관련 문제