Revision: 505
http://vde.svn.sourceforge.net/vde/?rev=505&view=rev
Author: rd235
Date: 2011-06-28 17:27:47 +0000 (Tue, 28 Jun 2011)
Log Message:
-----------
IPN: support for 2.6.39
Modified Paths:
--------------
trunk/ipn/af_ipn.c
trunk/ipn/ipn_netdev.c
Modified: trunk/ipn/af_ipn.c
===================================================================
--- trunk/ipn/af_ipn.c 2011-06-28 16:19:40 UTC (rev 504)
+++ trunk/ipn/af_ipn.c 2011-06-28 17:27:47 UTC (rev 505)
@@ -53,6 +53,9 @@
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)
#define IPN_PRE2637
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)
+#define IPN_PRE2639
+#endif
/*extension of RCV_SHUTDOWN defined in include/net/sock.h
* when the bit is set recv fails */
@@ -600,11 +603,19 @@
}
/* check if there is already an ipn-network socket with that name */
+#ifndef IPN_PRE2630
+ err = kern_path(sunaddr->sun_path, LOOKUP_FOLLOW, &nd.path);
+#else
err = path_lookup(sunaddr->sun_path, LOOKUP_FOLLOW, &nd);
+#endif
if (err) { /* it does not exist, NEW IPN socket! */
unsigned int mode;
/* Is it everything okay with the parent? */
+#ifndef IPN_PRE2639
+ err = kern_path_parent(sunaddr->sun_path, &nd);
+#else
err = path_lookup(sunaddr->sun_path, LOOKUP_PARENT, &nd);
+#endif
if (err)
goto out_mknod_parent;
/* Do I have the permission to create a file? */
@@ -742,7 +753,13 @@
int addr_len, int flags){
struct sockaddr_un *sunaddr=(struct sockaddr_un*)addr;
struct ipn_node *ipn_node=((struct ipn_sock *)sock->sk)->node;
+#ifndef IPN_PRE2639
+ struct path ndpath;
+#else
struct nameidata nd;
+#define ndpath nd.path
+#endif
+
struct ipn_network *ipnn,*previousipnn;
int err=0;
int portno;
@@ -760,17 +777,21 @@
if (err < 0)
goto out;
addr_len=err;
+#ifndef IPN_PRE2639
+ err = kern_path(sunaddr->sun_path, LOOKUP_FOLLOW, &ndpath);
+#else
err = path_lookup(sunaddr->sun_path, LOOKUP_FOLLOW, &nd);
+#endif
if (err)
goto out;
- err = inode_permission(nd.path.dentry->d_inode, MAY_READ);
+ err = inode_permission(ndpath.dentry->d_inode, MAY_READ);
if (err) {
if (err == -EACCES || err == -EROFS)
mustshutdown|=RCV_SHUTDOWN;
else
goto put_fail;
}
- err = inode_permission(nd.path.dentry->d_inode, MAY_WRITE);
+ err = inode_permission(ndpath.dentry->d_inode, MAY_WRITE);
if (err) {
if (err == -EACCES)
mustshutdown|=SEND_SHUTDOWN;
@@ -787,11 +808,11 @@
err=0;
ipn_node->shutdown=mustshutdown;
}
- if (!S_ISSOCK(nd.path.dentry->d_inode->i_mode)) {
+ if (!S_ISSOCK(ndpath.dentry->d_inode->i_mode)) {
err = -ECONNREFUSED;
goto put_fail;
}
- ipnn=ipn_find_network_byinode(nd.path.dentry->d_inode);
+ ipnn=ipn_find_network_byinode(ndpath.dentry->d_inode);
if (!ipnn || (ipnn->flags & IPN_FLAG_TERMINATED)) {
err = -ECONNREFUSED;
goto put_fail;
@@ -802,7 +823,7 @@
err = -EPROTO;
goto put_fail;
}
- path_put(&nd.path);
+ path_put(&ndpath);
ipn_node->ipn=ipnn;
} else
ipnn=ipn_node->ipn;
@@ -833,7 +854,7 @@
return err;
put_fail:
- path_put(&nd.path);
+ path_put(&ndpath);
out:
up(&ipn_glob_mutex);
return err;
Modified: trunk/ipn/ipn_netdev.c
===================================================================
--- trunk/ipn/ipn_netdev.c 2011-06-28 16:19:40 UTC (rev 504)
+++ trunk/ipn/ipn_netdev.c 2011-06-28 17:27:47 UTC (rev 505)
@@ -36,12 +36,18 @@
#define DRV_NAME "ipn"
#define DRV_VERSION "0.3.1"
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,24)
+#define IPN_PRE2624
+#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,29)
#define IPN_PRE2629
#endif
#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,37)
#define IPN_PRE2637
#endif
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,39)
+#define IPN_PRE2639
+#endif
static const struct ethtool_ops ipn_ethtool_ops;
@@ -100,9 +106,16 @@
/* receive from a GRAB via interface hook */
struct sk_buff *ipn_handle_hook(struct ipn_node *ipn_node, struct sk_buff *skb)
#else
+#ifdef IPN_PRE2639
static struct sk_buff *ipn_handle_frame(struct sk_buff *skb)
+#else
+static rx_handler_result_t ipn_handle_frame(struct sk_buff **pskb)
#endif
+#endif
{
+#ifndef IPN_PRE2639
+ struct sk_buff *skb = *pskb;
+#endif
char *data=(skb->data)-(skb->mac_len);
int len=skb->len+skb->mac_len;
#ifndef IPN_PRE2637
@@ -122,7 +135,11 @@
}
}
+#ifdef IPN_PRE2639
return (skb);
+#else
+ return RX_HANDLER_PASS;
+#endif
}
#ifndef IPN_PRE2629
@@ -180,7 +197,11 @@
}
#endif
#endif
+#ifdef IPN_PRE2624
+ dev=dev_get_by_name(name);
+#else
dev=dev_get_by_name(net,name);
+#endif
if (dev) {
if (dev->flags & IFF_LOOPBACK)
*err= -EINVAL;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
All of the data generated in your IT infrastructure is seriously valuable.
Why? It contains a definitive record of application performance, security
threats, fraudulent activity, and more. Splunk takes this data and makes
sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-d2d-c2
_______________________________________________
vde-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vde-users