免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1257 | 回复: 0
打印 上一主题 下一主题

关于构造skb,高手能否指点下? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-19 21:26 |只看该作者 |倒序浏览
条件:已有从eth0来的skb, 数据拷贝入以太网桢缓冲区framebuff, 且有记录桢长度frame_len,释放此skb
目的:把此缓冲区数据组成新的skb,从eth1发送出去

以下发送函数
static int  br_assemble_outgoing_skb(unsigned char * framebuff,
                                                                     unsigned long int frame_len,
                                                                     struct net_device *todev)
{
struct sk_buff *skb;
int res =0;

   //unsigned short protocol = 0;
   //unsigned char *smac ;
   //unsigned char *dmac;
   //unsigned char* netlayer_hdr;

   printk(KERN_ALERT "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
   printk("Will Assemble packet \n");
   skb = dev_alloc_skb(frame_len+2);

   if (skb != NULL)

    {
        skb_put(skb,frame_len);
        memcpy(skb->data, framebuff,frame_len);
         skb->protocol = ( (struct ethhdr *)framebuff)->h_proto;
         skb->dev = todev;
         //skb ->ip_summed = 0;
         //CHECKSUM_UNNECESSARY;
         skb->pkt_type = PACKET_OUTGOING;

        skb->mac.raw = skb->data;;
       skb->nh.raw = skb->data+sizeof(struct ethhdr);
     
            
       printk("Assemble packet 0x%.4x to todev %s frame_len:%ld succ \n",
                ntohs(skb->protocol),
                todev->name,
                frame_len);

      
      res= dev_queue_xmit(skb);
      if (res < 0) {
               dev_kfree_skb(skb);
               dev_put(todev);
         
                    }
   
      printk("dev xmit send 0x%.4x packet to %s succ \n",ntohs(skb->protocol ),skb->dev->name);
       printk(KERN_ALERT "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");
       
  }
   
return 0;
  

}

为何发送几个.10几个frame就死机了呢?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP