[Click] [PATCH 07/12] FromHost: netdev_ops for linux 2.6.33+
Joonwoo Park
joonwpark81 at gmail.com
Sun Sep 26 01:30:06 EDT 2010
Signed-off-by: Joonwoo Park <joonwpark81 at gmail.com>
---
elements/linuxmodule/fromhost.cc | 17 +++++++++++++++++
1 files changed, 17 insertions(+), 0 deletions(-)
diff --git a/elements/linuxmodule/fromhost.cc b/elements/linuxmodule/fromhost.cc
index 8c26fc5..9062098 100644
--- a/elements/linuxmodule/fromhost.cc
+++ b/elements/linuxmodule/fromhost.cc
@@ -134,12 +134,21 @@ FromHost::new_device(const char *name)
#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 0)
setup(dev);
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
dev->open = fl_open;
dev->stop = fl_close;
dev->hard_start_xmit = fl_tx;
dev->get_stats = fl_stats;
dev->mtu = _mtu;
dev->tx_queue_len = 0;
+#else
+ ((struct net_device_ops*)(dev->netdev_ops))->ndo_open = fl_open;
+ ((struct net_device_ops*)(dev->netdev_ops))->ndo_stop = fl_close;
+ ((struct net_device_ops*)(dev->netdev_ops))->ndo_start_xmit = fl_tx;
+ ((struct net_device_ops*)(dev->netdev_ops))->ndo_get_stats = fl_stats;
+ dev->mtu = _mtu;
+ dev->tx_queue_len = 0;
+#endif
return dev;
}
@@ -175,7 +184,11 @@ FromHost::configure(Vector<String> &conf, ErrorHandler *errh)
// check for existing device
_dev = AnyDevice::get_by_name(_devname.c_str());
if (_dev) {
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 32)
if (_dev->open != fl_open) {
+#else
+ if (_dev->netdev_ops->ndo_open != fl_open) {
+#endif
dev_put(_dev);
_dev = 0;
return errh->error("device '%s' already exists", _devname.c_str());
@@ -410,10 +423,14 @@ FromHost::fl_tx(struct sk_buff *skb, net_device *dev)
#if HAVE_SKB_DST_DROP
skb_dst_drop(skb);
#else
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 35)
if (skb->dst) {
dst_release(skb->dst);
skb->dst = 0;
}
+#else
+ dst_release(skb_dst(skb));
+#endif
#endif
Packet *p = Packet::make(skb);
--
1.7.0.4
More information about the click
mailing list