Netfilter관련 질문 입니다.

swunk의 이미지

아래와 같은 함수를 NF_IP_PRE_ROUTING에 등록 시켜 놓았습니다.

int func(...., struct sk_buff  **skb_pp,...)
{
    struct skb_buff *skb_p = *skb_pp;
    struct tcphdr *tcph;
    char *buf;
    tcph=(struct tcphdr *)(skb_p->h.tcphdr);
    memcpy(buf, tcp_h, sizeof(struct tcphdr));
    for(i=0; i<sizeof(struct tcp_hdr); i++)
        printk("%2x", *(buf+i));
    :
    :
}

위의 적은 구조체나 변수명들이 정확한지는 모르겠습니다. :roll:

여튼... 위와 같이 프린트 문에서 tcp 헤더의 값들을 hexa 값으로 출력하고 같은 패킷들을 동시에 ethereal로 잡아서 비교를 해보면...해당 패킷의 tcp 헤더값이 아닌 ip 헤더의 값들이 정확하게 찍힙니다.

어떻게 된거죠 ? 제가 무엇을 잘못 알고 있는 건가요 ?
이 외에도 이상한 이해 못하는 일 너무 많이 일어나내요...냠냠냠...

한수 부탁드립니다.