netfilter 후크를 사용하여 간단한 패킷 검사를 처리하려고합니다.C - saddr에 액세스 할 수 없습니다.
unsigned int hook_func(unsigned int hooknum, struct sk_buff *skb,
const struct net_device *in,
const struct net_device *out, int (*okfn)(struct sk_buff *))
{
struct iphdr *iph = (struct iphdr *)skb_network_header(skb);
}
그리고 네트워크 헤더
iph->protocol == IPPROTO_TCP
그러나
iph->saddr
실패의 프로토콜 부분에 액세스 할 수 있습니다
선언은 매우 간단 보인다. 어떤 제안? 나는 이것이 내 인생에 아주 간단한 오류처럼 느끼지만, 모든 예제 중 하나를이 방법을 따르거나 단순히 나는 두 가지 방법으로 같은 동작을 얻을
struct iphdr *iph = ip_hdr(skb);
사용합니다. 나는 모든 단서에 대해 skbuff.h를 보았지만 운이 없었습니다.
편집 :
이 그들이 방법 내가 접근하고 함께해야 할 수 있을까? 지금 디버깅을 위해 나는 단지 사용하여 값을 출력하는 것을 시도하고있다 : 당신이 가능하게 잘못된 메모리를 읽고 있도록
printk(KERN_DEBUG "%pI4", iph->saddr);
오류 메시지가 나타 납니까? 이게 뭐야? –
그것은 기계를 죽입니다. 저는 보통 내 VM에서 스냅 샷을 재설정합니다. 컴파일 시간 오류가 없습니다. 커널 충돌 후 오류 메시지가 표시되는 방법이 있습니까? – kevgliss