亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費(fèi)注冊(cè) 查看新帖 |

Chinaunix

  平臺(tái) 論壇 博客 文庫(kù)
最近訪問板塊 發(fā)新帖
查看: 2250 | 回復(fù): 2
打印 上一主題 下一主題

求助:對(duì)sk_buff的操作(加擴(kuò)展頭) [復(fù)制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2008-05-29 17:25 |只看該作者 |倒序?yàn)g覽
最近要做二個(gè)內(nèi)核模塊,功能是對(duì)發(fā)出的普通ipv6數(shù)據(jù)包加一個(gè)擴(kuò)展頭,然后在接收端解析出這個(gè)擴(kuò)展頭。由于對(duì)sk_buff的操作不熟悉,老是出現(xiàn)問題,希望高人給與指點(diǎn),內(nèi)核版本是2.6.25,
加擴(kuò)展頭的函數(shù)程序如下,利用netfilter機(jī)制,掛載到nf_ip6_pre_routing鉤子上。
unsigned int extfilter(unsigned int hooknum,
struct sk_buff * skb,
const struct net_device *in,
const struct net_device *out,
int (*okfn) (struct sk_buff *))
{
        int extlen=sizeof(struct ip6_cga_hdr);
        struct ipv6hdr *top_iph,tmp_ip6;
        struct ip6_cga_hdr *cga_tmp,*tmp_ext=NULL;
        unsigned char *cga;

top_iph=kmalloc(sizeof(*top_iph), GFP_ATOMIC);
top_iph = ipv6_hdr(skb);//保存原頭部
cga_tmp=kmalloc(extlen, GFP_ATOMIC);
cga_tmp->nexthdr=top_iph->nexthdr;//保存下一個(gè)頭
top_iph->nexthdr=IPPROTO_CGA;
top_iph->payload_len= htons(skb->len - sizeof(*top_iph)+extlen);
memcpy(&tmp_ip6, top_iph, sizeof(tmp_ip6));
if(skb_headroom(skb)>=extlen)
skb_push(skb, extlen);//分配空間
else
{
printk("no headroom");
goto error_free_iph;
}      

cga_tmp->hdrlen=1;
cga_tmp->reserved=0;
cga_tmp->cgap=&tmp_cga;

        tmp_ext = NULL;
        if (extlen)
        {
                tmp_ext = kmalloc(extlen, GFP_ATOMIC);
                if (!tmp_ext) {
                 printk("no hearroom");
                goto error_free_iph;
                }
                memcpy(tmp_ext, cga_tmp, extlen);

        }
        memcpy(skb->data, &tmp_ip6, sizeof(tmp_ip6));
        cga=skb->data+sizeof(*top_iph);
        if (tmp_ext)
                memcpy(cga, tmp_ext, extlen);

                kfree(tmp_ext);
error_free_iph:
                kfree(top_iph);
                kfree(cga_tmp);
return NF_ACCEPT;

}
編譯沒錯(cuò)誤,可是加載模塊發(fā)送數(shù)據(jù)時(shí),機(jī)器不是死機(jī)就是抓到的包是malformal(畸形)包。ipv6地址格式很亂,而且接受數(shù)據(jù)時(shí)機(jī)器就死機(jī)了。謝謝幫忙。

論壇徽章:
0
2 [報(bào)告]
發(fā)表于 2008-05-29 18:03 |只看該作者
ding ,關(guān)注

論壇徽章:
0
3 [報(bào)告]
發(fā)表于 2008-05-30 08:38 |只看該作者
怎么沒人回答呢,
您需要登錄后才可以回帖 登錄 | 注冊(cè)

本版積分規(guī)則 發(fā)表回復(fù)

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號(hào)-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號(hào):11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報(bào)專區(qū)
中國(guó)互聯(lián)網(wǎng)協(xié)會(huì)會(huì)員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請(qǐng)注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP