阅读:2051回复:1
神那,救救我吧。
我按照设备驱动书上写了一个虚拟网卡驱动,不过改动了一下,我的目的是这样的,
1,把接受到的包都发送到虚拟网卡,这样从上面来看就好像是从虚拟网卡接收到的包一? 样,这个问题已经解决了。 2。想虚拟网卡发送包的时候,虚拟网卡的接收函数把包通过物理网卡发送。发送函数写 了,能够编译过去,也能够insmod ,也可以配置虚拟网卡的IP, 问题来了:配置了一条发出包的时候要通过虚拟网卡发送的路由。用ping 来ping 目的 网络的一台主机。用ifconfig sn0和ifconfig eth0也却是发现已经发送的包增多。 结果一段时间后就down机。 提示如下:(sn0是虚拟网卡名字) kernel panic :skput:over:c8023d21:1632 put:1514 dev sn0 in swapper task ---not syncing. 那位高手解决一下问题吧:发送程序程序如下:别的肯定没有问题。 int snull_tx(struct sk_buff *skb, struct device *dev)/*the dev is a virtual netcard*/ { int len, retval=0; struct snull_priv *privp; if (dev->tbusy) {/* shouldn't happen */ retval = -EBUSY; goto tx_done; } if (skb == NULL) { return 0; } dev->tbusy = 1; /* transmission is busy */ dev->trans_start = jiffies; /* save the timestamp */ /* actual deliver of data is device-specific, the hard_dev is eth0 */ skb->dev = hard_dev; /*hard_dev = dev_get("eth0")*/ dev_queue_xmit(skb); privp = dev->priv; privp = (struct snull_priv *)dev->priv; privp->stats.tx_packets++; dev->tbusy = 0; mark_bh(NET_BH); tx_done: dev_kfree_skb(skb); /* release it */ return retval; /* zero == done; nonzero == fail */ } |
|
|
沙发#
发布于:2001-10-22 09:04
参照ipip.c的写法,能够发送出去了。
|
|
|