[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