Revision: 575
http://sourceforge.net/p/vde/svn/575
Author: rd235
Date: 2014-02-08 16:48:32 +0000 (Sat, 08 Feb 2014)
Log Message:
-----------
vx{vde,lan} aren't compatible, new std vxvde port#
Modified Paths:
--------------
branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c
Modified: branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c
===================================================================
--- branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c 2014-02-08
15:07:29 UTC (rev 574)
+++ branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c 2014-02-08
16:48:32 UTC (rev 575)
@@ -34,7 +34,7 @@
#include "libvdeplug_mod.h"
#include "libvdeplug_vxhash.h"
-#define STDPORTSTR "4879"
+#define STDPORTSTR "14879"
#define STDTTL 1
#define STDVNI 1
#define STDHASHSIZE 1023
@@ -342,36 +342,6 @@
return 1;
}
-static ssize_t vde_vxvde_vxsend(struct vde_vxvde_conn *vde_conn,
- struct sockaddr *destaddr, const void *buf, size_t len,int
flags) {
- struct vxvde_hdr vhdr;
- struct iovec iov[]={{&vhdr, sizeof(vhdr)},{(char *)buf, len}};
- static struct msghdr msg;
- int retval;
- msg.msg_iov=iov;
- msg.msg_iovlen=2;
- msg.msg_name = destaddr;
- switch (destaddr->sa_family) {
- case AF_INET: msg.msg_namelen = sizeof(struct sockaddr_in);
- break;
- case AF_INET6: msg.msg_namelen = sizeof(struct sockaddr_in6);
- break;
- default:
-
msg.msg_namelen = 0;
- }
- memset(&vhdr, 0, sizeof(vhdr));
- vhdr.flags = (1 << 3);
-
- hton24(vhdr.id, vde_conn->vni);
-
- if ((retval=sendmsg(vde_conn->unifd, &msg, 0)) < 0)
- return -1;
- retval -= sizeof(struct vxvde_hdr);
- if (retval < 0)
- retval = 0;
- return retval;
-}
-
static ssize_t vde_vxvde_send(VDECONN *conn,const void *buf, size_t len,int
flags) {
struct vde_vxvde_conn *vde_conn = (struct vde_vxvde_conn *)conn;
struct eth_hdr *ehdr=(struct eth_hdr *) buf;
@@ -383,26 +353,44 @@
(destaddr=vx_find_in_hash(vde_conn->table,
vde_conn->multiaddr.vx.sa_family,
vde_conn->hash_mask, ehdr->dest, 1, time(NULL)-
vde_conn->expiretime)) == NULL),
0)) {
- return vde_vxvde_vxsend(vde_conn, &(vde_conn->multiaddr.vx),
buf, len, flags);
+ struct vxvde_hdr vhdr;
+ struct iovec iov[]={{&vhdr, sizeof(vhdr)},{(char *)buf, len}};
+ static struct msghdr msg;
+ int retval;
+ destaddr=&(vde_conn->multiaddr.vx);
+ msg.msg_iov=iov;
+ msg.msg_iovlen=2;
+ msg.msg_name = destaddr;
+ switch (destaddr->sa_family) {
+ case AF_INET: msg.msg_namelen = sizeof(struct
sockaddr_in);
+
break;
+ case AF_INET6: msg.msg_namelen = sizeof(struct
sockaddr_in6);
+
break;
+ default:
+
msg.msg_namelen = 0;
+ }
+ memset(&vhdr, 0, sizeof(vhdr));
+ vhdr.flags = (1 << 3);
+
+ hton24(vhdr.id, vde_conn->vni);
+
+ if ((retval=sendmsg(vde_conn->unifd, &msg, 0)) < 0)
+ return -1;
+ retval -= sizeof(struct vxvde_hdr);
+ if (retval < 0)
+ retval = 0;
+ return retval;
} else {
socklen_t destlen;
- in_port_t destport;
switch (destaddr->sa_family) {
case AF_INET: destlen = sizeof(struct sockaddr_in);
-
destport = ((struct sockaddr_in *) destaddr)->sin_port;
break;
case AF_INET6: destlen = sizeof(struct sockaddr_in6);
-
destport = ((struct sockaddr_in6 *) destaddr)->sin6_port;
break;
default:
destlen = 0;
-
destport = 0;
}
- if (__builtin_expect(destport != vde_conn->multiport, 1)) {
- return sendto(vde_conn->unifd, buf, len, 0, destaddr,
destlen);
- } else { /* compatibility with vxlan! */
- return vde_vxvde_vxsend(vde_conn, destaddr, buf, len,
flags);
- }
+ return sendto(vde_conn->unifd, buf, len, 0, destaddr, destlen);
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
vde-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vde-users