This list is closed, nobody may subscribe to it.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
(20) |
Oct
(4) |
Nov
|
Dec
(4) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(11) |
Feb
(12) |
Mar
(15) |
Apr
(8) |
May
(8) |
Jun
(6) |
Jul
(4) |
Aug
(10) |
Sep
(24) |
Oct
(6) |
Nov
(1) |
Dec
(3) |
2010 |
Jan
(1) |
Feb
(1) |
Mar
(1) |
Apr
(10) |
May
(24) |
Jun
(10) |
Jul
(25) |
Aug
(8) |
Sep
(5) |
Oct
(4) |
Nov
(16) |
Dec
(1) |
2011 |
Jan
(18) |
Feb
(29) |
Mar
(30) |
Apr
(13) |
May
(8) |
Jun
(25) |
Jul
(7) |
Aug
|
Sep
|
Oct
|
Nov
(21) |
Dec
(11) |
2012 |
Jan
(13) |
Feb
(2) |
Mar
(14) |
Apr
|
May
(2) |
Jun
(16) |
Jul
(8) |
Aug
(8) |
Sep
(2) |
Oct
(4) |
Nov
|
Dec
(4) |
2013 |
Jan
|
Feb
(9) |
Mar
(22) |
Apr
(3) |
May
(12) |
Jun
(1) |
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2014 |
Jan
(9) |
Feb
(8) |
Mar
(3) |
Apr
(2) |
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(7) |
Nov
(1) |
Dec
(2) |
2015 |
Jan
|
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
(2) |
Aug
|
Sep
|
Oct
|
Nov
(2) |
Dec
|
2016 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(2) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2017 |
Jan
(1) |
Feb
|
Mar
(1) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: <rd...@us...> - 2017-03-23 07:11:23
|
Revision: 588 http://sourceforge.net/p/vde/svn/588 Author: rd235 Date: 2017-03-23 07:11:19 +0000 (Thu, 23 Mar 2017) Log Message: ----------- bugfis: portgroup syntax err was deadlock: fixed. Modified Paths: -------------- branches/rd235/vde-2/src/Makefile.am branches/rd235/vde-2/src/vde_plug.c branches/rd235/vde-2/src/vde_switch/port.c Modified: branches/rd235/vde-2/src/Makefile.am =================================================================== --- branches/rd235/vde-2/src/Makefile.am 2014-11-12 14:23:16 UTC (rev 587) +++ branches/rd235/vde-2/src/Makefile.am 2017-03-23 07:11:19 UTC (rev 588) @@ -18,6 +18,7 @@ vdeterm #DIST_SUBDIRS = $(SUBDIRS) vdetaplib vde_cryptcab kvde_switch +DIST_SUBDIRS = $(SUBDIRS) vdetaplib vde_cryptcab if CAN_MAKE_VDETUNCTL sbin_PROGRAMS = vde_tunctl Modified: branches/rd235/vde-2/src/vde_plug.c =================================================================== --- branches/rd235/vde-2/src/vde_plug.c 2014-11-12 14:23:16 UTC (rev 587) +++ branches/rd235/vde-2/src/vde_plug.c 2017-03-23 07:11:19 UTC (rev 588) @@ -193,7 +193,7 @@ va_list args; if (isatty(STDERR_FILENO)) { - fprintf(stderr, "%s: Packet length error",myname); + fprintf(stderr, "%s: Packet length error ",myname); va_start(args, format); vfprintf(stderr, format, args); va_end(args); @@ -480,7 +480,7 @@ /*fprintf(stderr,"%s: RECV %d %x %x \n",myname,nx,bufin[0],bufin[1]);*/ if (nx==0) break; - vdestream_recv(vdestream, bufin, nx); + vdestream_recv(vdestream, bufin, nx); } if (pollv[1].revents & POLLIN) { nx=vde_recv(conn,bufin,BUFSIZE-2,0); Modified: branches/rd235/vde-2/src/vde_switch/port.c =================================================================== --- branches/rd235/vde-2/src/vde_switch/port.c 2014-11-12 14:23:16 UTC (rev 587) +++ branches/rd235/vde-2/src/vde_switch/port.c 2017-03-23 07:11:19 UTC (rev 588) @@ -1506,15 +1506,20 @@ if (*setup == ',') setup++; switch (*setup) { case 'u': + case 'U': rv=portsetvlan_nocheck(portno,atoi(++setup)); break; case 't': + case 'T': rv=vlanaddport_nocheck(portno,atoi(++setup)); break; case 'q': + case 'Q': portv[portno]->flag |= ALLOWQINQ; ++setup; break; + default: + return EINVAL; } if (rv != 0) break; while (*setup && (*setup == ',' || isdigit(*setup))) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: Ralph R. <ral...@gm...> - 2017-01-13 13:09:36
|
Hi all, I'm not totally sure this is the place for suggesting a patch for "dpipe", but may be it is. Basically, I had problems using dpipe with the '=}' syntax to add a a unidirectional stdin/out process between two vde_plugs, and tracked this down (in vde2-2.3.2+r586) to be a fault in the splitindex function of dpipe.c. Namely that the assignment "*dirchar=0;" really needs to be lifted out to be outside and before the "for" clause. Hopefully someone can take it from there. regards, Ralph. |
From: wch-tech house-grp.n. <wch...@ho...> - 2016-05-16 00:14:41
|
Hi, I looked at my previous message as posted and it looks like garbage. I am resubmitting using text this time. Hi, The description of vde2 fits my needs exactly. I have opensuse 13.1 running the xen kernel with a few guest machines controlled by xl. On this machine I have started a temporary switch per the tutorials and am ready to connect a vm (linux type). Since I am using xen and the xl tool stack I have searched the internet a bit, but I have seen no clear instructions on how to specify a connection to vde2 from the xl command set. The xl networking docs offer the following parameters to be specified in the "vif" line: mac bridge gatewaydev type model vifname script ip backend rate Is using vde2 this way possible? If so, are there any examples and instructions about how to do so posted on the internet? If so would someone point me to them? (Or post an explanation here?) (Just occured to me that I need to investigate option "script" above.) TIA Bill |
From: wch-tech house-grp.n. <wch...@ho...> - 2016-05-15 23:01:32
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> </head><body><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">Hi,</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">The description of vde2 fits my needs exactly.</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">I have opensuse 13.1 running the xen kernel with a few guest machines controlled by xl.</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">On this machine I have started a temporary switch per the tutorials and am ready to connect a vm (linux type).</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">Since I am using xen and the xl tool stack I have searched the internet a bit, but I have seen no clear instructions on how to specify a connection to vde2 from the xl command set.</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">The xl networking docs offer the following parameters to be specified in the "vif" line:</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">mac</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">bridge</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">gatewaydev</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">type</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">model</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">vifname</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">script</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">ip</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">backend</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">rate</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">Is using vde2 this way possible?</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">If so, are there any examples and instructions about how to do so posted on the internet?</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">If so would someone point me to them? (Or post an explanation here?)</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">(Just occured to me that I need to investigate option "script" above.)</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">TIA</p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;"><br></p><p style="-qt-block-indent: 0; text-indent: 0px; -qt-user-state: 0; margin: 0px;">Bill</p></body></html> |
From: Marco G. <mar...@po...> - 2015-11-11 10:28:23
|
--- vde-2/src/lib/libvdeplug.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/vde-2/src/lib/libvdeplug.c b/vde-2/src/lib/libvdeplug.c index 20cb2de..e5b3d6a 100644 --- a/vde-2/src/lib/libvdeplug.c +++ b/vde-2/src/lib/libvdeplug.c @@ -600,7 +600,7 @@ ssize_t vde_recv(VDECONN *conn,void *buf,size_t len,int flags) #ifdef CONNECTED_P2P ssize_t retval; if (__builtin_expect(conn!=0,1)) { - if (__builtin_expect(((retval=recv(conn->fddata,buf,len,0)) > 0), 1)) + if (__builtin_expect(((retval=recv(conn->fddata,buf,len,flags)) > 0), 1)) return retval; else { if (retval == 0 && conn->outsock != NULL) { @@ -616,7 +616,7 @@ ssize_t vde_recv(VDECONN *conn,void *buf,size_t len,int flags) } #else if (__builtin_expect(conn!=0,1)) - return recv(conn->fddata,buf,len,0); + return recv(conn->fddata,buf,len,flags); else { errno=EBADF; return -1; @@ -629,13 +629,13 @@ ssize_t vde_send(VDECONN *conn,const void *buf,size_t len,int flags) #ifdef CONNECTED_P2P if (__builtin_expect(conn!=0,1)) { ssize_t retval; - if (__builtin_expect(((retval=send(conn->fddata,buf,len,0)) >= 0),1)) + if (__builtin_expect(((retval=send(conn->fddata,buf,len,flags)) >= 0),1)) return retval; else { if (__builtin_expect(errno == ENOTCONN || errno == EDESTADDRREQ,0)) { if (__builtin_expect(conn->outsock != NULL,1)) { connect(conn->fddata, conn->outsock,conn->outlen); - return send(conn->fddata,buf,len,0); + return send(conn->fddata,buf,len,flags); } else return retval; } else @@ -648,9 +648,9 @@ ssize_t vde_send(VDECONN *conn,const void *buf,size_t len,int flags) #else if (__builtin_expect(conn!=0,1)) { if (__builtin_expect(conn->outsock == NULL,1)) - return send(conn->fddata,buf,len,0); + return send(conn->fddata,buf,len,flags); else - return sendto(conn->fddata,buf,len,0, + return sendto(conn->fddata,buf,len,flags, conn->outsock,conn->outlen); } else { errno=EBADF; -- 2.1.4 |
From: Marco G. <mar...@po...> - 2015-11-11 10:09:47
|
ctypes allows to write extensions in pure Python. It is also part of the Python's standard library and more portable across different implementations and versions. This is also a first step to support Python3. A compatibility layer to the old vdeplug_python is also supplied as like to the VdePlug module. --- vde-2/configure.ac | 15 --- vde-2/src/lib/python/Makefile.am | 15 +-- vde-2/src/lib/python/VdePlug.py | 96 ++------------- vde-2/src/lib/python/vdeplug.py | 219 +++++++++++++++++++++++++++++++++ vde-2/src/lib/python/vdeplug_python.c | 102 --------------- vde-2/src/lib/python/vdeplug_python.py | 15 +++ 6 files changed, 248 insertions(+), 214 deletions(-) create mode 100644 vde-2/src/lib/python/vdeplug.py delete mode 100644 vde-2/src/lib/python/vdeplug_python.c create mode 100644 vde-2/src/lib/python/vdeplug_python.py diff --git a/vde-2/configure.ac b/vde-2/configure.ac index c8f6d32..947aae6 100644 --- a/vde-2/configure.ac +++ b/vde-2/configure.ac @@ -223,21 +223,6 @@ AC_ARG_ENABLE([python], if test x"$enable_python" = x"yes"; then # check python AM_PATH_PYTHON([2.5]) - AC_PATH_PROG(PYTHON_CONFIG, python$PYTHON_VERSION-config) - if test x"$PYTHON_CONFIG" = x""; then - AC_PATH_PROG(PYTHON_CONFIG, python-config) - fi - if test x"$PYTHON_CONFIG" = x""; then - # not found, give up - enable_python=no - else - PYTHON_CFLAGS=`$PYTHON_CONFIG --includes` - PYTHON_LIBS=`$PYTHON_CONFIG --libs` - PYTHON_INCLUDES="$PYTHON_CFLAGS" - fi - AC_SUBST(PYTHON_CFLAGS) - AC_SUBST(PYTHON_INCLUDES) - AC_SUBST(PYTHON_LIBS) fi diff --git a/vde-2/src/lib/python/Makefile.am b/vde-2/src/lib/python/Makefile.am index b4d6e2b..4bfe5ef 100644 --- a/vde-2/src/lib/python/Makefile.am +++ b/vde-2/src/lib/python/Makefile.am @@ -1,12 +1,3 @@ -moddir = $(pythondir) - -AM_LIBTOOLFLAGS = --tag=disable-static - -LIBADD = $(top_builddir)/src/lib/libvdeplug.so - -mod_LTLIBRARIES = vdeplug_python.la -dist_python_SCRIPTS = VdePlug.py - -vdeplug_python_la_CFLAGS = -I$(top_srcdir)/include $(PYTHON_CFLAGS) $(PYTHON_INCLUDES) -vdeplug_python_la_LIBADD = $(PYTHON_LIBS) $(top_builddir)/src/lib/libvdeplug.la -vdeplug_python_la_LDFLAGS = -module -avoid-version +python_PYTHON = VdePlug.py \ + vdeplug.py \ + vdeplug_python.py diff --git a/vde-2/src/lib/python/VdePlug.py b/vde-2/src/lib/python/VdePlug.py index 241c832..8035855 100755 --- a/vde-2/src/lib/python/VdePlug.py +++ b/vde-2/src/lib/python/VdePlug.py @@ -1,89 +1,15 @@ -#!/usr/bin/python +from vdeplug import VdeStream, VdePlug +import warnings -''' - LibVdePlug/python wrapper - Copyright 2010 Daniele Lacamera +__all__ = ["VdeStream", "VdePlug"] - Released under the terms of GNU LGPL v. 2.1 - (see COPYING.libvdeplug in the main project directory) - -''' - -import vdeplug_python, os, sys, struct -from array import array - - -class VdeStream: - def __init__(self, parent, outf, frecv = None, ferr = None): - self.conn = parent - self.outf = outf - self.frecv = frecv - self.ferr = ferr - self.conn._streams.append(self) - if (self.frecv == None): - self.frecv=self.conn.send - - def recv(self, buf): - (toth, totl) = struct.unpack("BB", buf[0:2]) - tot = (toth << 8) + totl - buffer = buf[2:] - if (len(buffer) < tot): - sys.stderr.write("stream recv: wrong size %d, pkt is %d\n" % (tot, len(buffer))) - return -1 - elif (len(buffer) > tot): - self.frecv(buffer[0:tot]) - return self.recv(buffer[tot:]) # Recursion for remaining data - elif (self.frecv(buffer) < 0): - return -1 - - def send(self, buf): - if self.outf is None: - return -1 - lh = (len(buf)>>8) & 0xFF - ll = len(buf) & 0xFF - a = struct.pack("BB", lh, ll) - self.outf.write(a) - self.outf.write(buf) - self.outf.flush() - - - - - -class VdePlug: - - def __init__(self, sock=None, descr="Python", port=0, group=None, mode=0): - self._magic = vdeplug_python.open(sock, descr) - self._ctl = os.fdopen(vdeplug_python.ctlfd(self._magic)) - self._data = os.fdopen(vdeplug_python.datafd(self._magic), 'wb+', os.O_NONBLOCK) - self._streams = [] - - def ctlfd(self): - return self._ctl - - def datafd(self): - return self._data - - def send(self, buffer): - a = array('B', buffer) - r = self._data.write(a) - self._data.flush() - return r - - def recv(self, size): - return os.read(self._data.fileno(), size) - - def recvfrom_streams(self, buf): - for s in self._streams: - s.recv(buf) - - def sendto_streams(self, buf): - for s in self._streams: - s.send(buf) - - def close(self): - vdeplug_python.close(self._magic) - self._magic = None - +msg = """The module VdePlug is deprecated. Please use the module \ +vdeplug. Change your code as following: + try: + from vdeplug import VdePlug, VdeStream + except ImportError: + from VdePlug import VdePlug, VdeStream +""" +warnings.warn(msg, DeprecationWarning) diff --git a/vde-2/src/lib/python/vdeplug.py b/vde-2/src/lib/python/vdeplug.py new file mode 100644 index 0000000..6a63f08 --- /dev/null +++ b/vde-2/src/lib/python/vdeplug.py @@ -0,0 +1,219 @@ +# libvdeplug wrapper +# Copyright (C) 2015 Marco Giusti +# +# Released under the terms of GNU LGPL v. 2.1 +# (see COPYING.libvdeplug in the main project directory) + +import os +import ctypes +import ctypes.util + + +__all__ = ["LIBVDEPLUG_INTERFACE_VERSION", "VdeError", "open", "close", + "ctlfd", "datafd", "libvdeplug"] +__version__ = "0.1" + + +LIBVDEPLUG_INTERFACE_VERSION = 1 + + +# VdeError derives from RuntimeError only because of compatibility reasons + +class VdeError(EnvironmentError, RuntimeError): + + def __init__(self, *args): + if not args: + errno = ctypes.get_errno() + args = errno, os.strerror(errno) + super(VdeError, self).__init__(*args) + + +def open(sock, desc, port=0, group=None, mode=0o777): + """Open a VDE connection. + + @param sock: switch id (path) + @type sock: str + @param desc: description that appear in the port description on the + switch + @type desc: str + @param port: connect to a specific port of the switch [default=0] + @type port: int + @param group: change the ownership of the communication port to a specific + group (None=no change) [default=None] + @type group: str + @param mode: set communication port mode (if 0 standard socket mode + applies) [default=0] + @type mode: int + """ + + args = _VdeOpenArgs(int(port), str(group), int(mode)) + fd = libvdeplug.vde_open_real(sock, desc, LIBVDEPLUG_INTERFACE_VERSION, + ctypes.byref(args)) + if not fd: + raise VdeError() + return fd + + +def _invoke(func, conn): + i = func(conn) + if i < 0: + raise VdeError() + return i + + +def ctlfd(conn): + """ + for select/poll. the ctl socket is silent after the initial handshake. + when EOF the switch has closed the connection. + """ + + return _invoke(libvdeplug.vde_ctlfd, conn) + + +def datafd(conn): + """ + for select/poll when this fd receive data, there are packets to recv (call + vde_recv) + """ + + return _invoke(libvdeplug.vde_datafd, conn) + + +def close(conn): + """Close a connection.""" + + return _invoke(libvdeplug.vde_close, conn) + + +class Plug(object): + + def __init__(self, sock, desc, port=0, group=None, mode=0o777): + self._conn = open(sock, desc, port, group, mode) + try: + self._ctlfd = os.fdopen(ctlfd(self._conn)) + self._datafd = os.fdopen(datafd(self._conn), "wb+") + except: + self.close() + raise + + def __enter__(self): + return self + + def __exit__(self, exc_type, exc_value, traceback): + self.close() + + def ctlfd(self): + return self._ctlfd + + def datafd(self): + return self._datafd + + def close(self): + close(self._conn) + + +class _VdeOpenArgs(ctypes.Structure): + + _fields_ = [("port", ctypes.c_int), + ("group", ctypes.c_char_p), + ("mode", ctypes.c_int)] + + +def _initializeModule(libvdeplug): + libvdeplug.vde_open_real.argtypes = [ctypes.c_char_p, ctypes.c_char_p, + ctypes.c_int, + ctypes.POINTER(_VdeOpenArgs)] + libvdeplug.vde_open_real.restype = ctypes.c_void_p + libvdeplug.vde_recv.argtypes = [ctypes.c_void_p, ctypes.c_void_p, + ctypes.c_size_t, ctypes.c_int] + libvdeplug.vde_recv.restype = ctypes.c_ssize_t + libvdeplug.vde_send.argtypes = [ctypes.c_void_p, ctypes.c_void_p, + ctypes.c_size_t, ctypes.c_int] + libvdeplug.vde_send.restype = ctypes.c_ssize_t + libvdeplug.vde_datafd.argtypes = [ctypes.c_void_p] + libvdeplug.vde_datafd.restype = ctypes.c_int + libvdeplug.vde_ctlfd.argtypes = [ctypes.c_void_p] + libvdeplug.vde_ctlfd.restype = ctypes.c_int + libvdeplug.vde_close.argtypes = [ctypes.c_void_p] + libvdeplug.vde_close.restype = ctypes.c_int + + +name = ctypes.util.find_library("vdeplug") +if not name: + raise ImportError("Can't find vdeplug library.") +libvdeplug = ctypes.CDLL(name, use_errno=True) +del name +_initializeModule(libvdeplug) + + +# old VdePlug compatibility + +# LibVdePlug/python wrapper +# Copyright 2010 Daniele Lacamera +# +# Released under the terms of GNU LGPL v. 2.1 +# (see COPYING.libvdeplug in the main project directory) + +import sys +import struct +from array import array + + +class VdePlug(Plug): + + def __init__(self, sock=None, descr="Python", port=0, group=None, mode=0): + super(VdePlug, self).__init__(sock, descr, port, group, mode) + self._streams = [] + + def send(self, buffer): + a = array("B", buffer) + r = self._datafd.write(a) + self._datafd.flush() + return r + + def recv(self, size): + return self._datafd.read(size) + + def recvfrom_streams(self, buf): + for s in self._streams: + s.recv(buf) + + def sendto_streams(self, buf): + for s in self._streams: + s.send(buf) + + +class VdeStream: + + def __init__(self, parent, outf, frecv=None, ferr=None): + self.conn = parent + self.outf = outf + self.frecv = frecv + self.ferr = ferr + self.conn._streams.append(self) + if self.frecv is None: + self.frecv = self.conn.send + + def recv(self, buf): + toth, totl = struct.unpack("BB", buf[0:2]) + tot = (toth << 8) + totl + buffer = buf[2:] + if len(buffer) < tot: + sys.stderr.write("stream recv: wrong size %d, pkt is %d\n" % + (tot, len(buffer))) + return -1 + elif len(buffer) > tot: + self.frecv(buffer[0:tot]) + return self.recv(buffer[tot:]) # Recursion for remaining data + elif self.frecv(buffer) < 0: + return -1 + + def send(self, buf): + if self.outf is None: + return -1 + lh = (len(buf) >> 8) & 0xFF + ll = len(buf) & 0xFF + a = struct.pack("BB", lh, ll) + self.outf.write(a) + self.outf.write(buf) + self.outf.flush() diff --git a/vde-2/src/lib/python/vdeplug_python.c b/vde-2/src/lib/python/vdeplug_python.c deleted file mode 100644 index 9d70e72..0000000 --- a/vde-2/src/lib/python/vdeplug_python.c +++ /dev/null @@ -1,102 +0,0 @@ -/* - * LibVdePlug/python wrapper - * Copyright © 2010 Daniele Lacamera - * - * Released under the terms of GNU LGPL v. 2.1 - * (see COPYING.libvdeplug in the main project directory) - * - */ -#include "Python.h" -#include <stdio.h> -#include "libvdeplug.h" - - -static PyObject *vdeplug_open(PyObject *self, PyObject *args) -{ - struct vde_open_args vde_args = {0,NULL,0777}; - char *vde_sock = NULL, *vde_descr = NULL; - VDECONN *ret; - - if (!PyArg_ParseTuple(args, "ss|isi", &vde_sock, &vde_descr, &vde_args.port, &vde_args.group, &vde_args.mode)) - goto failure; - - ret = vde_open_real(vde_sock, vde_descr, 1, &vde_args); - if (!ret) - goto failure; - else - return PyLong_FromUnsignedLong((unsigned long) ret); - - -failure: - return PyErr_SetFromErrno(PyExc_RuntimeError); -} - -static PyObject *vdeplug_ctlfd(PyObject *self, PyObject *args) -{ - VDECONN *conn; - unsigned long vde_magic = 0; - - if (!PyArg_ParseTuple(args, "k", &vde_magic)) - goto failure; - conn = (VDECONN *) vde_magic; - - if (!conn) - goto failure; - - return Py_BuildValue("i", vde_ctlfd(conn)); - -failure: - return PyErr_SetFromErrno(PyExc_RuntimeError); -} - -static PyObject *vdeplug_datafd(PyObject *self, PyObject *args) -{ - VDECONN *conn; - unsigned long vde_magic = 0; - - if (!PyArg_ParseTuple(args, "k", &vde_magic)) - goto failure; - conn = (VDECONN *) vde_magic; - - if (!conn) - goto failure; - - return Py_BuildValue("i", vde_datafd(conn)); - -failure: - return PyErr_SetFromErrno(PyExc_RuntimeError); -} - -static PyObject *vdeplug_close(PyObject *self, PyObject *args) -{ - VDECONN *conn; - unsigned long vde_magic = 0; - - if (!PyArg_ParseTuple(args, "k", &vde_magic)) - goto failure; - conn = (VDECONN *) vde_magic; - - if (!conn) - goto failure; - - return Py_BuildValue("i", vde_close(conn)); - -failure: - return PyErr_SetFromErrno(PyExc_RuntimeError); -} - - - -static PyMethodDef vdeplug_methods[] = { - {"open", vdeplug_open, METH_VARARGS}, - {"ctlfd", vdeplug_ctlfd, METH_VARARGS}, - {"datafd", vdeplug_datafd, METH_VARARGS}, - {"close", vdeplug_close, METH_VARARGS}, - {NULL, NULL} /* Sentinel */ -}; - -void initvdeplug_python(void) -{ - (void) Py_InitModule("vdeplug_python", vdeplug_methods); -// PyErr_SetString(PyExc_RuntimeError,"vdeplug error"); -} diff --git a/vde-2/src/lib/python/vdeplug_python.py b/vde-2/src/lib/python/vdeplug_python.py new file mode 100644 index 0000000..96738f3 --- /dev/null +++ b/vde-2/src/lib/python/vdeplug_python.py @@ -0,0 +1,15 @@ +from vdeplug import open, ctlfd, datafd, close +import warnings + + +__all__ = ["open", "ctlfd", "datafd", "close"] + +msg = """The module vdeplug_python is deprecated. Please use the module \ +vdeplug. Change your code as following: + + try: + import vdeplug as vp + except ImportError: + import vdeplug_python as vp +""" +warnings.warn(msg, DeprecationWarning) -- 2.1.4 |
From: Toralf F. <tor...@gm...> - 2015-07-15 13:30:50
|
Hello, a Quality Assurance issue was reported by the build system of my Gentoo Linux tinderbox [1] while building a Gentoo package containing your software. Such reported issues are sometimes correct. Otherwise just drop this mail. OTOH it would be interesting why the issue is wrong. ============================================================================= [1] volumes/amd64-stable_20150713-232025/var/log/portage/elog/net-misc:vde-2.2.2:20150715-103134.log b.g.o: https://bugs.gentoo.org/buglist.cgi?query_format=advanced&resolution=---&short_desc=net-misc%2Fvde&short_desc_type=allwordssubstr proxy-maintainers mls...@no... jmb...@ge... ============================================================================= QA: other QA Notice: Package triggers severe warnings which indicate that it may exhibit random runtime failures. hash.c:179:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] hash.c:195:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] hash.c:213:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] hash.c:367:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fstp.c:478:2: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fstp.c:479:3: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] fstp.c:672:4: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing] Please do not file a Gentoo bug and instead report the above QA issues directly to the upstream developers of this software. Homepage: http://vde.sourceforge.net/ |
From: Prem A. H. <pharidos@Brocade.com> - 2015-07-02 08:38:13
|
Hi Folks Does anyone know if there is an option to increase the MTU of the vde_switch to somewhere close to 9000. Currently I see all packets exceeding 1518 bytes are getting truncated Regards Prem |
From: Tim T. <ti...@cu...> - 2015-03-11 11:07:28
|
I'm happily using vde/qemu now for years on debian/unbutu and had never any problems, apart from having to compile qemu myself for vde support, which always worked fine. I now tried to put together a system with qemu 2.2.0 and vde2 2.3.2 and while vde seems to run ok, the qemu vm cannot communicate with the vde network. qemu 2.2.0 self-compiled against libvdeplug 2.2.3 and running vde2 2.2.3 from Ubuntu works runs fine. I have setup my vde_switch as follows: modprobe kvm-intel chgrp adm /dev/kvm chmod g+rw /dev/kvm echo "1024" > /proc/sys/dev/hpet/max-user-freq modprobe tun vde_switch -tap tap0 --pidfile /var/run/qemu-vde_switch.pid -daemon chmod -R a+rwx /var/run/vde.ctl ifconfig tap0 192.168.8.1 broadcast 192.168.8.255 netmask 255.255.255.0 up echo "1" > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE dnsmasq --log-queries --user=dnsmasq \ --dhcp-leasefile=/var/lib/misc/qemu-dhcpd.leases \ --dhcp-range=192.168.8.101,192.168.8.199,255.255.255.0,192.168.8.255,8h \ --interface=tap0 \ --domain=decentral.ch \ --pid-file=/var/run/qemu-dnsmasq.pid The vde_switch runs ok, I guess, I can ping 192.168.8.1 and do an nslookup www.google.com 192.168.8.1 with good results. I have compiled qemu with vde support (--enable-vde), the binary also links against vde: ldd /usr/bin/qemu-system-x86_64 linux-vdso.so.1 (0x00007fffc05f5000) libz.so.1 => /lib/libz.so.1 (0x00007f23ca87e000) libcurl.so.4 => /usr/lib/libcurl.so.4 (0x00007f23ca62d000) libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f23ca42c000) libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f23ca121000) librt.so.1 => /lib/librt.so.1 (0x00007f23c9f19000) libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007f23c9c6f000) libutil.so.1 => /lib/libutil.so.1 (0x00007f23c9a6c000) libncursesw.so.5 => /lib/libncursesw.so.5 (0x00007f23c9808000) libasound.so.2 => /usr/lib/libasound.so.2 (0x00007f23c94e3000) libvdeplug.so.3 => /usr/lib/libvdeplug.so.3 (0x00007f23c92de000) .... I start the quest vm with parameters: /usr/bin/qemu-system-x86_64 -enable-kvm -m 1024 -boot c -hda sda -cdrom gaiarise-vga.iso -net nic,macaddr=52:54:00:12:34:84 -net vde -vnc 192.168.219.22:5900 -k de-ch -vga std The network card comes up in the qemu guest vm, but neither communication with dhcp nor a fixed ip works. The host system is running kernel 3.19.1, the guest also something like that although the guest is definitely not the problem, as the same guest runs fine on my ubuntu system with vde 2.2.3. When the vm starts, I get a ls -l /var/run/vde.ctl/* srwx------ 1 timtas root 0 Mar 11 10:58 /var/run/vde.ctl/002.7 srwxrwxrwx 1 root root 0 Mar 11 10:58 /var/run/vde.ctl/ctl so, it seems that some connection to the switch is made. On my ubuntu, the files however look a bit different: ls -l /var/run/vde.ctl/* srwx------ 1 qemu root 0 Mar 2 18:46 /var/run/vde.ctl/002 srwxrwxrwx 1 root root 0 Aug 8 2014 /var/run/vde.ctl/ctl Is there something else I have to do to make this work, maybe dowgrade to 2.2.3 or do I have to set some kernel parameters on the host system? I also tried svn (r587), with the exact same results, btw. Kind regards Tim |
From: Zdenek S. <zde...@gm...> - 2014-12-07 17:33:01
|
On Sun, Dec 7, 2014 at 6:17 PM, Dmitry Antipov <dma...@ya...> wrote: > (This question may be not quite acceptable for this list - I'm not sure whether > this is VDE or QEMU issue, and sorry for possible inconveniences). > > I'm using QEMU 2.1.1 to emulate SPARC system and have vde network between two > VMs and host system, organized as shown: > > host > tap0 > + 192.168.100.254 + > | | > | | > vm0 vm1 > eth0 eth0 > 192.168.100.1 --- 192.168.100.2 > > On host, I'm running vde_switch and extra stuff as: > > vde_switch -tap tap0 -daemon -mod 660 -group [group] > ip addr add 192.168.100.254/24 dev tap0 > ip link set tap0 up > echo 1 > /proc/sys/net/ipv4/ip_forward > iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o [external network iface] -j MASQUERADE > > VMs are running with: > > qemu-system-sparc -m 256 -net nic -net vde -hda vm0.img > qemu-system-sparc -m 256 -net nic -net vde -hda vm1.img > > Everything looks good, but... > > ...the problem: I need to build redundant network by using the same method, i.e. > improve the network shown above with: > > host > tap1 > + 192.168.101.254 + > | | > | | > vm0 vm1 > eth1 eth1 > 192.168.101.1 --- 192.168.101.2 > > I'm trying to run two vde switches: > > vde_switch -sock /tmp/vde0 -tap tap0 -daemon -mod 660 -group [group] > vde_switch -sock /tmp/vde1 -tap tap1 -daemon -mod 660 -group [group] > > and run VMs with: > > qemu-system-sparc -m 256 -net nic,vlan=1 -net vde,sock=/tmp/vde0,vlan=1 -net nic,vlan=2 -net vde,sock=/tmp/vde1,vlan=2 -hda vm0.img > Hello Dmitry, here are parameters I used to use. I'm sorry, but you will have to fill in the blanks. Also, dropping some parameters is possible, I'm sure. " -netdev vde,id=hostnet0,sock=%s%s \ -device %s,netdev=hostnet0,id=net%i,mac=%s,multifunction=on%s" \ "$br" "$br_opt" "$net_model" "$i" "$net_mac" "$net_opt" I can look those up if necessary, though. I believe the reason is you're using old/wrong parameters there or missing some. Z. -- Zdenek Styblik email: zde...@gm... jabber: zde...@gm... > but the result is: > > Warning: hub port hub2port0 has no peer > Warning: lan 2 with no nics > Warning: netdev hub2port0 has no peer > Warning: requested NIC (anonymous, model unspecified) was not created (not supported by this machine?) > > Is it possible to build redundant network as described above? > > Thanks in advance, > Dmitry > > > ------------------------------------------------------------------------------ > Download BIRT iHub F-Type - The Free Enterprise-Grade BIRT Server > from Actuate! Instantly Supercharge Your Business Reports and Dashboards > with Interactivity, Sharing, Native Excel Exports, App Integration & more > Get technology previously reserved for billion-dollar corporations, FREE > http://pubads.g.doubleclick.net/gampad/clk?id=164703151&iu=/4140/ostg.clktrk > _______________________________________________ > vde-users mailing list > vde...@li... > https://lists.sourceforge.net/lists/listinfo/vde-users |
From: Dmitry A. <dma...@ya...> - 2014-12-07 17:17:16
|
(This question may be not quite acceptable for this list - I'm not sure whether this is VDE or QEMU issue, and sorry for possible inconveniences). I'm using QEMU 2.1.1 to emulate SPARC system and have vde network between two VMs and host system, organized as shown: host tap0 + 192.168.100.254 + | | | | vm0 vm1 eth0 eth0 192.168.100.1 --- 192.168.100.2 On host, I'm running vde_switch and extra stuff as: vde_switch -tap tap0 -daemon -mod 660 -group [group] ip addr add 192.168.100.254/24 dev tap0 ip link set tap0 up echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o [external network iface] -j MASQUERADE VMs are running with: qemu-system-sparc -m 256 -net nic -net vde -hda vm0.img qemu-system-sparc -m 256 -net nic -net vde -hda vm1.img Everything looks good, but... ...the problem: I need to build redundant network by using the same method, i.e. improve the network shown above with: host tap1 + 192.168.101.254 + | | | | vm0 vm1 eth1 eth1 192.168.101.1 --- 192.168.101.2 I'm trying to run two vde switches: vde_switch -sock /tmp/vde0 -tap tap0 -daemon -mod 660 -group [group] vde_switch -sock /tmp/vde1 -tap tap1 -daemon -mod 660 -group [group] and run VMs with: qemu-system-sparc -m 256 -net nic,vlan=1 -net vde,sock=/tmp/vde0,vlan=1 -net nic,vlan=2 -net vde,sock=/tmp/vde1,vlan=2 -hda vm0.img but the result is: Warning: hub port hub2port0 has no peer Warning: lan 2 with no nics Warning: netdev hub2port0 has no peer Warning: requested NIC (anonymous, model unspecified) was not created (not supported by this machine?) Is it possible to build redundant network as described above? Thanks in advance, Dmitry |
From: <ga...@us...> - 2014-11-12 14:23:25
|
Revision: 587 http://sourceforge.net/p/vde/svn/587 Author: garden Date: 2014-11-12 14:23:16 +0000 (Wed, 12 Nov 2014) Log Message: ----------- vde_autolink: Add missing null entry in getopt_long array. Modified Paths: -------------- trunk/vde-2/src/vde_autolink.c Modified: trunk/vde-2/src/vde_autolink.c =================================================================== --- trunk/vde-2/src/vde_autolink.c 2014-10-12 21:12:39 UTC (rev 586) +++ trunk/vde-2/src/vde_autolink.c 2014-11-12 14:23:16 UTC (rev 587) @@ -1329,6 +1329,7 @@ {"mgmtmode", 1, 0, MGMTMODEARG}, {"sock", 1, 0, 's'}, {"switchmgmt", 1, 0, 'S'}, + {NULL, 0, 0, 0}, }; progname=basename(argv[0]); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 21:12:49
|
Revision: 586 http://sourceforge.net/p/vde/svn/586 Author: garden Date: 2014-10-12 21:12:39 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Enable vde_over_ns when header is present. Remove unused variable in vde_over_ns. Modified Paths: -------------- trunk/vde-2/configure.ac trunk/vde-2/src/vde_over_ns/dns.c Modified: trunk/vde-2/configure.ac =================================================================== --- trunk/vde-2/configure.ac 2014-10-12 20:55:52 UTC (rev 585) +++ trunk/vde-2/configure.ac 2014-10-12 21:12:39 UTC (rev 586) @@ -45,7 +45,8 @@ AC_CHECK_HEADERS([openssl/blowfish.h], [], [add_cryptcab_support=no ; warn_cryptcab=yes]) -AC_CHECK_HEADERS([sysexits.h], [], +AC_CHECK_HEADERS([sysexits.h], + [add_over_ns_support=yes], [add_over_ns_support=no ; warn_over_ns=yes]) # Checks for typedefs, structures, and compiler characteristics. Modified: trunk/vde-2/src/vde_over_ns/dns.c =================================================================== --- trunk/vde-2/src/vde_over_ns/dns.c 2014-10-12 20:55:52 UTC (rev 585) +++ trunk/vde-2/src/vde_over_ns/dns.c 2014-10-12 21:12:39 UTC (rev 586) @@ -431,11 +431,10 @@ unsigned char *dns_constructpacket (struct dnspkt *pkt, int *l) { static unsigned char *buf, *ptr; - int len, *offsets, qdcount, ancount, i; + int len, *offsets, qdcount, i; struct rr *list; qdcount = _get_listlen(pkt->query); - ancount = _get_listlen(pkt->answer); len = dns_getpktsize(pkt); ptr = buf = malloc(len); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 20:56:06
|
Revision: 585 http://sourceforge.net/p/vde/svn/585 Author: garden Date: 2014-10-12 20:55:52 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Add missing source files in vde_vxlan Makefile.am. Modified Paths: -------------- trunk/vde-2/src/vde_vxlan/Makefile.am Modified: trunk/vde-2/src/vde_vxlan/Makefile.am =================================================================== --- trunk/vde-2/src/vde_vxlan/Makefile.am 2014-10-12 20:49:53 UTC (rev 584) +++ trunk/vde-2/src/vde_vxlan/Makefile.am 2014-10-12 20:55:52 UTC (rev 585) @@ -9,6 +9,15 @@ endif bin_PROGRAMS = vde_vxlan -vde_vxlan_SOURCES = vde_vxlan.c vxlan_hash.c log.c plug.c vxlan.c +vde_vxlan_SOURCES = \ + log.c \ + log.h \ + plug.c \ + plug.h \ + vde_vxlan.c \ + vxlan.c \ + vxlan.h \ + vxlan_hash.c \ + vxlan_hash.h vde_vxlan_LDADD = $(top_builddir)/src/common/libvdecommon.la \ $(top_builddir)/src/lib/libvdeplug.la This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 20:49:58
|
Revision: 584 http://sourceforge.net/p/vde/svn/584 Author: garden Date: 2014-10-12 20:49:53 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Add missing format string in snprintf. Modified Paths: -------------- trunk/vde-2/src/vde_router/vde_router.c Modified: trunk/vde-2/src/vde_router/vde_router.c =================================================================== --- trunk/vde-2/src/vde_router/vde_router.c 2014-10-12 20:34:33 UTC (rev 583) +++ trunk/vde-2/src/vde_router/vde_router.c 2014-10-12 20:49:53 UTC (rev 584) @@ -1357,7 +1357,7 @@ return nfds; } if (nfds < MAXCONN) { - snprintf(buf,MAXCMD,header); + snprintf(buf,MAXCMD,"%s",header); write(new,buf,strlen(buf)); write(new,prompt,strlen(prompt)); pfd[nfds].fd=new; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 20:34:38
|
Revision: 583 http://sourceforge.net/p/vde/svn/583 Author: garden Date: 2014-10-12 20:34:33 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Add missing headers in vde_router Makefile.am. Modified Paths: -------------- trunk/vde-2/src/vde_router/Makefile.am Modified: trunk/vde-2/src/vde_router/Makefile.am =================================================================== --- trunk/vde-2/src/vde_router/Makefile.am 2014-10-12 20:17:24 UTC (rev 582) +++ trunk/vde-2/src/vde_router/Makefile.am 2014-10-12 20:34:33 UTC (rev 583) @@ -11,9 +11,27 @@ endif bin_PROGRAMS = vde_router -vde_router_SOURCES = rbtree.h vde_headers.h vder_arp.h vder_datalink.h vder_icmp.h \ - vde_router.h vder_packet.h vder_queue.h rbtree.c vder_arp.c vder_datalink.c \ - vder_icmp.c vde_router.c vder_packet.c vder_queue.c vder_udp.c vder_dhcp.c \ - vder_olsr.c +vde_router_SOURCES = \ + rbtree.c \ + rbtree.h \ + vde_headers.h \ + vde_router.c \ + vde_router.h \ + vder_arp.c \ + vder_arp.h \ + vder_datalink.c \ + vder_datalink.h \ + vder_dhcp.c \ + vder_dhcp.h \ + vder_icmp.c \ + vder_icmp.h \ + vder_olsr.c \ + vder_olsr.h \ + vder_packet.c \ + vder_packet.h \ + vder_queue.c \ + vder_queue.h \ + vder_udp.c \ + vder_udp.h vde_router_LDADD = $(top_builddir)/src/common/libvdecommon.la $(top_builddir)/src/lib/libvdeplug.la -lpthread This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 20:17:29
|
Revision: 582 http://sourceforge.net/p/vde/svn/582 Author: garden Date: 2014-10-12 20:17:24 +0000 (Sun, 12 Oct 2014) Log Message: ----------- In 2014, I think we can stop trying to outsmart the compiler. Remove "register" storage class. Modified Paths: -------------- trunk/vde-2/src/common/poll.c trunk/vde-2/src/dpipe.c trunk/vde-2/src/kvde_switch/consmgmt.c trunk/vde-2/src/kvde_switch/kvde_switch.c trunk/vde-2/src/lib/libvdehist.c trunk/vde-2/src/lib/libvdeplug.c trunk/vde-2/src/slirpvde/cksum.c trunk/vde-2/src/slirpvde/ip_icmp.c trunk/vde-2/src/slirpvde/ip_input.c trunk/vde-2/src/slirpvde/ip_output.c trunk/vde-2/src/slirpvde/mbuf.c trunk/vde-2/src/slirpvde/mbuf.h trunk/vde-2/src/slirpvde/misc.c trunk/vde-2/src/slirpvde/slirp.h trunk/vde-2/src/slirpvde/slirpvde.c trunk/vde-2/src/slirpvde/socket.h trunk/vde-2/src/slirpvde/tcp_input.c trunk/vde-2/src/slirpvde/tcp_output.c trunk/vde-2/src/slirpvde/tcp_subr.c trunk/vde-2/src/slirpvde/tcp_timer.c trunk/vde-2/src/slirpvde/udp.c trunk/vde-2/src/slirpvde/udp.h trunk/vde-2/src/vde_autolink.c trunk/vde-2/src/vde_cryptcab/crc32.c trunk/vde-2/src/vde_l3/vde_l3.c trunk/vde-2/src/vde_plug.c trunk/vde-2/src/vde_router/rbtree.c trunk/vde-2/src/vde_switch/bitarray.h trunk/vde-2/src/vde_switch/consmgmt.c trunk/vde-2/src/vde_switch/fstp.c trunk/vde-2/src/vde_switch/hash.c trunk/vde-2/src/vde_switch/port.c trunk/vde-2/src/vde_switch/qtimer.c trunk/vde-2/src/vde_switch/vde_switch.c trunk/vde-2/src/vde_vxlan/vxlan_hash.c trunk/vde-2/src/vdeq.c trunk/vde-2/src/vdetaplib/libvdetap.c trunk/vde-2/src/vdetaplib/vdetap.c trunk/vde-2/src/wirefilter.c Modified: trunk/vde-2/src/common/poll.c =================================================================== --- trunk/vde-2/src/common/poll.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/common/poll.c 2014-10-12 20:17:24 UTC (rev 582) @@ -22,7 +22,7 @@ static int prepare_select(struct pollfd *ufds, nfds_t nfds, int timeout, struct timeval **pstimeout, int *maxfdp1, fd_set *rfds, fd_set *wfds, fd_set *efds) { - register int i; + int i; struct pollfd *currfd; struct timeval *stimeout = *pstimeout; @@ -93,7 +93,7 @@ static int convert_results(struct pollfd *ufds, int nfds, fd_set *rfds, fd_set *wfds, fd_set *efds) { - register int i; + int i; struct pollfd *currfd; int retval = 0; Modified: trunk/vde-2/src/dpipe.c =================================================================== --- trunk/vde-2/src/dpipe.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/dpipe.c 2014-10-12 20:17:24 UTC (rev 582) @@ -29,7 +29,7 @@ int splitindex(int argc, char *argv[], int *dirchar) { - register int i; + int i; for (i=0; i<argc; i++) { if (*dirchar == argv[i][0] && argv[i][1] == '=' ) { Modified: trunk/vde-2/src/kvde_switch/consmgmt.c =================================================================== --- trunk/vde-2/src/kvde_switch/consmgmt.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/kvde_switch/consmgmt.c 2014-10-12 20:17:24 UTC (rev 582) @@ -72,7 +72,7 @@ void addcl(int ncl,struct comlist *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { cl->next=NULL; (*clt)=cl; @@ -82,9 +82,9 @@ void delcl(int ncl,struct comlist *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { - register struct comlist **p=&clh; + struct comlist **p=&clh; while (*p != NULL) { if (*p == cl) *p=cl->next; @@ -109,9 +109,9 @@ void deldbgcl(int ncl,struct dbgcl *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { - register struct dbgcl **p=&dbgclh; + struct dbgcl **p=&dbgclh; while (*p != NULL) { if (*p == cl) { if (cl->fds) free(cl->fds); @@ -136,7 +136,7 @@ void delplugin(struct plugin *cl) { - register struct plugin **p=&pluginh; + struct plugin **p=&pluginh; while (*p != NULL) { if (*p == cl) *p=cl->next; Modified: trunk/vde-2/src/kvde_switch/kvde_switch.c =================================================================== --- trunk/vde-2/src/kvde_switch/kvde_switch.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/kvde_switch/kvde_switch.c 2014-10-12 20:17:24 UTC (rev 582) @@ -102,7 +102,7 @@ unsigned char add_type(struct swmodule *mgr,int prio) { - register int i; + int i; if(ntypes==maxtypes) { maxtypes = maxtypes ? 2 * maxtypes : 8; if (maxtypes > PRIOFLAG) { @@ -168,14 +168,14 @@ static void file_cleanup(void) { - register int i; + int i; for(i = 0; i < nfds; i++) TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->private_data); } void remove_fd(int fd) { - register int i; + int i; for(i = 0; i < nfds; i++){ if(fds[i].fd == fd) break; @@ -196,7 +196,7 @@ static void main_loop() { time_t now; - register int n,i; + int n,i; while(1) { n=poll(fds,nfds,-1); now=time(NULL); @@ -206,7 +206,7 @@ } else { for(i = 0; /*i < nfds &&*/ n>0; i++){ if(fds[i].revents != 0) { - register int prenfds=nfds; + int prenfds=nfds; n--; fdpp[i]->timestamp=now; TYPE2MGR(fdpp[i]->type)->handle_io(fdpp[i]->type,fds[i].fd,fds[i].revents,fdpp[i]->private_data); @@ -258,7 +258,7 @@ static struct option *optcpy(struct option *tgt, struct option *src, int n, int tag) { - register int i; + int i; memcpy(tgt,src,sizeof(struct option) * n); for (i=0;i<n;i++) { tgt[i].val=(tgt[i].val & 0xffff) | tag << 16; @@ -303,7 +303,7 @@ if (long_options == NULL || optstring==NULL) exit(2); { /* fill-in the long_options fields */ - register int i; + int i; char *os=optstring; char last=0; struct option *opp=long_options; Modified: trunk/vde-2/src/lib/libvdehist.c =================================================================== --- trunk/vde-2/src/lib/libvdehist.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/lib/libvdehist.c 2014-10-12 20:17:24 UTC (rev 582) @@ -397,7 +397,7 @@ static int telnet_options(struct vdehiststat *st,unsigned char *s) { - register int action_n_object; + int action_n_object; if (st->telnetprotocol == 0) { st->telnetprotocol=1; st->echo=0; Modified: trunk/vde-2/src/lib/libvdeplug.c =================================================================== --- trunk/vde-2/src/lib/libvdeplug.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/lib/libvdeplug.c 2014-10-12 20:17:24 UTC (rev 582) @@ -749,7 +749,7 @@ //fprintf(stderr,"%s: splitpacket rnx=%d remaining=%d size=%d\n",myname,rnx,vdestream->remaining,len); if (len==0) return; if (vdestream->rnx>0) { - register int amount=MIN(vdestream->remaining,len); + int amount=MIN(vdestream->remaining,len); //fprintf(stderr,"%s: fragment amount %d\n",myname,amount); memcpy(vdestream->fragp,buf,amount); vdestream->remaining-=amount; Modified: trunk/vde-2/src/slirpvde/cksum.c =================================================================== --- trunk/vde-2/src/slirpvde/cksum.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/cksum.c 2014-10-12 20:17:24 UTC (rev 582) @@ -47,8 +47,8 @@ int cksum(struct mbuf *m, int len) { register u_int16_t *w; - register int sum = 0; - register int mlen = 0; + int sum = 0; + int mlen = 0; int byte_swapped = 0; union { Modified: trunk/vde-2/src/slirpvde/ip_icmp.c =================================================================== --- trunk/vde-2/src/slirpvde/ip_icmp.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/ip_icmp.c 2014-10-12 20:17:24 UTC (rev 582) @@ -66,8 +66,8 @@ void icmp_input(struct mbuf *m, int hlen) { - register struct icmp *icp; - register struct ip *ip=mtod(m, struct ip *); + struct icmp *icp; + struct ip *ip=mtod(m, struct ip *); int icmplen=ip->ip_len; Slirp *slirp = m->slirp; @@ -190,9 +190,9 @@ const char *message) { unsigned hlen, shlen, s_ip_len; - register struct ip *ip; - register struct icmp *icp; - register struct mbuf *m; + struct ip *ip; + struct icmp *icp; + struct mbuf *m; DEBUG_CALL("icmp_error"); DEBUG_ARG("msrc = %lx", (long )msrc); @@ -306,10 +306,10 @@ void icmp_reflect(struct mbuf *m) { - register struct ip *ip = mtod(m, struct ip *); + struct ip *ip = mtod(m, struct ip *); int hlen = ip->ip_hl << 2; int optlen = hlen - sizeof(struct ip ); - register struct icmp *icp; + struct icmp *icp; /* * Send an icmp packet back to the ip level, Modified: trunk/vde-2/src/slirpvde/ip_input.c =================================================================== --- trunk/vde-2/src/slirpvde/ip_input.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/ip_input.c 2014-10-12 20:17:24 UTC (rev 582) @@ -44,9 +44,9 @@ static struct ip *ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp); static void ip_freef(Slirp *slirp, struct ipq *fp); -static void ip_enq(register struct ipasfrag *p, - register struct ipasfrag *prev); -static void ip_deq(register struct ipasfrag *p); +static void ip_enq(struct ipasfrag *p, + struct ipasfrag *prev); +static void ip_deq(struct ipasfrag *p); /* * IP initialization: fill in IP protocol switch table. @@ -68,7 +68,7 @@ ip_input(struct mbuf *m) { Slirp *slirp = m->slirp; - register struct ip *ip; + struct ip *ip; int hlen; DEBUG_CALL("ip_input"); @@ -159,7 +159,7 @@ * XXX This should fail, don't fragment yet */ if (ip->ip_off &~ IP_DF) { - register struct ipq *fp; + struct ipq *fp; struct qlink *l; /* * Look for queue of fragments @@ -240,8 +240,8 @@ static struct ip * ip_reass(Slirp *slirp, struct ip *ip, struct ipq *fp) { - register struct mbuf *m = dtom(slirp, ip); - register struct ipasfrag *q; + struct mbuf *m = dtom(slirp, ip); + struct ipasfrag *q; int hlen = ip->ip_hl << 2; int i, next; @@ -395,7 +395,7 @@ static void ip_freef(Slirp *slirp, struct ipq *fp) { - register struct ipasfrag *q, *p; + struct ipasfrag *q, *p; for (q = fp->frag_link.next; q != (struct ipasfrag*)&fp->frag_link; q = p) { p = q->ipf_next; @@ -411,7 +411,7 @@ * Like insque, but pointers in middle of structure. */ static void -ip_enq(register struct ipasfrag *p, register struct ipasfrag *prev) +ip_enq(struct ipasfrag *p, struct ipasfrag *prev) { DEBUG_CALL("ip_enq"); DEBUG_ARG("prev = %lx", (long)prev); @@ -425,7 +425,7 @@ * To ip_enq as remque is to insque. */ static void -ip_deq(register struct ipasfrag *p) +ip_deq(struct ipasfrag *p) { ((struct ipasfrag *)(p->ipf_prev))->ipf_next = p->ipf_next; ((struct ipasfrag *)(p->ipf_next))->ipf_prev = p->ipf_prev; @@ -471,10 +471,10 @@ ip_dooptions(m) struct mbuf *m; { - register struct ip *ip = mtod(m, struct ip *); + struct ip *ip = mtod(m, struct ip *); register u_char *cp; - register struct ip_timestamp *ipt; - register struct in_ifaddr *ia; + struct ip_timestamp *ipt; + struct in_ifaddr *ia; int opt, optlen, cnt, off, code, type, forward = 0; struct in_addr *sin, dst; typedef u_int32_t n_time; @@ -665,9 +665,9 @@ * (XXX) should be deleted; last arg currently ignored. */ void -ip_stripoptions(register struct mbuf *m, struct mbuf *mopt) +ip_stripoptions(struct mbuf *m, struct mbuf *mopt) { - register int i; + int i; struct ip *ip = mtod(m, struct ip *); register caddr_t opts; int olen; Modified: trunk/vde-2/src/slirpvde/ip_output.c =================================================================== --- trunk/vde-2/src/slirpvde/ip_output.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/ip_output.c 2014-10-12 20:17:24 UTC (rev 582) @@ -54,9 +54,9 @@ ip_output(struct socket *so, struct mbuf *m0) { Slirp *slirp = m0->slirp; - register struct ip *ip; - register struct mbuf *m = m0; - register int hlen = sizeof(struct ip ); + struct ip *ip; + struct mbuf *m = m0; + int hlen = sizeof(struct ip ); int len, off, error = 0; DEBUG_CALL("ip_output"); @@ -111,7 +111,7 @@ m0 = m; mhlen = sizeof (struct ip); for (off = hlen + len; off < (u_int16_t)ip->ip_len; off += len) { - register struct ip *mhip; + struct ip *mhip; m = m_get(slirp); if (m == NULL) { error = -1; Modified: trunk/vde-2/src/slirpvde/mbuf.c =================================================================== --- trunk/vde-2/src/slirpvde/mbuf.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/mbuf.c 2014-10-12 20:17:24 UTC (rev 582) @@ -43,7 +43,7 @@ struct mbuf * m_get(Slirp *slirp) { - register struct mbuf *m; + struct mbuf *m; int flags = 0; DEBUG_CALL("m_get"); Modified: trunk/vde-2/src/slirpvde/mbuf.h =================================================================== --- trunk/vde-2/src/slirpvde/mbuf.h 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/mbuf.h 2014-10-12 20:17:24 UTC (rev 582) @@ -118,7 +118,7 @@ void m_init(Slirp *); struct mbuf * m_get(Slirp *); void m_free(struct mbuf *); -void m_cat(register struct mbuf *, register struct mbuf *); +void m_cat(struct mbuf *, struct mbuf *); void m_inc(struct mbuf *, int); void m_adj(struct mbuf *, int); int m_copy(struct mbuf *, struct mbuf *, int, int); Modified: trunk/vde-2/src/slirpvde/misc.c =================================================================== --- trunk/vde-2/src/slirpvde/misc.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/misc.c 2014-10-12 20:17:24 UTC (rev 582) @@ -24,8 +24,8 @@ inline void insque(void *a, void *b) { - register struct quehead *element = (struct quehead *) a; - register struct quehead *head = (struct quehead *) b; + struct quehead *element = (struct quehead *) a; + struct quehead *head = (struct quehead *) b; element->qh_link = head->qh_link; head->qh_link = (struct quehead *)element; element->qh_rlink = (struct quehead *)head; @@ -36,7 +36,7 @@ inline void remque(void *a) { - register struct quehead *element = (struct quehead *) a; + struct quehead *element = (struct quehead *) a; ((struct quehead *)(element->qh_link))->qh_rlink = element->qh_rlink; ((struct quehead *)(element->qh_rlink))->qh_link = element->qh_link; element->qh_rlink = NULL; Modified: trunk/vde-2/src/slirpvde/slirp.h =================================================================== --- trunk/vde-2/src/slirpvde/slirp.h 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/slirp.h 2014-10-12 20:17:24 UTC (rev 582) @@ -316,25 +316,25 @@ void ip_init(Slirp *); void ip_input(struct mbuf *); void ip_slowtimo(Slirp *); -void ip_stripoptions(register struct mbuf *, struct mbuf *); +void ip_stripoptions(struct mbuf *, struct mbuf *); /* ip_output.c */ int ip_output(struct socket *, struct mbuf *); /* tcp_input.c */ -void tcp_input(register struct mbuf *, int, struct socket *); -int tcp_mss(register struct tcpcb *, u_int); +void tcp_input(struct mbuf *, int, struct socket *); +int tcp_mss(struct tcpcb *, u_int); /* tcp_output.c */ -int tcp_output(register struct tcpcb *); -void tcp_setpersist(register struct tcpcb *); +int tcp_output(struct tcpcb *); +void tcp_setpersist(struct tcpcb *); /* tcp_subr.c */ void tcp_init(Slirp *); void tcp_template(struct tcpcb *); -void tcp_respond(struct tcpcb *, register struct tcpiphdr *, register struct mbuf *, tcp_seq, tcp_seq, int); +void tcp_respond(struct tcpcb *, struct tcpiphdr *, struct mbuf *, tcp_seq, tcp_seq, int); struct tcpcb * tcp_newtcpcb(struct socket *); -struct tcpcb * tcp_close(register struct tcpcb *); +struct tcpcb * tcp_close(struct tcpcb *); void tcp_sockclosed(struct tcpcb *); int tcp_fconnect(struct socket *); void tcp_connect(struct socket *); Modified: trunk/vde-2/src/slirpvde/slirpvde.c =================================================================== --- trunk/vde-2/src/slirpvde/slirpvde.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/slirpvde.c 2014-10-12 20:17:24 UTC (rev 582) @@ -138,7 +138,7 @@ #define convery2ascii(x) ((x)>=' ' && (x) <= '~')?(x):'.' void dumppkt(const uint8_t *pkt, int pkt_len) { - register int i,j; + int i,j; printf("Packet dump len=%d\n",pkt_len); if (pkt_len == 0) return; @@ -354,7 +354,7 @@ char *sockname=NULL; int result,nfds; register ssize_t nx; - /*register int i;*/ + /*int i;*/ fd_set rs,ws,xs; int opt,longindx; int daemonize=0; Modified: trunk/vde-2/src/slirpvde/socket.h =================================================================== --- trunk/vde-2/src/slirpvde/socket.h 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/socket.h 2014-10-12 20:17:24 UTC (rev 582) @@ -85,8 +85,8 @@ int sosendto(struct socket *, struct mbuf *); struct socket * tcp_listen(Slirp *, u_int32_t, u_int, u_int32_t, u_int, int); -void soisfconnecting(register struct socket *); -void soisfconnected(register struct socket *); +void soisfconnecting(struct socket *); +void soisfconnected(struct socket *); void sofwdrain(struct socket *); struct iovec; /* For win32 */ size_t sopreprbuf(struct socket *so, struct iovec *iov, int *np); Modified: trunk/vde-2/src/slirpvde/tcp_input.c =================================================================== --- trunk/vde-2/src/slirpvde/tcp_input.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/tcp_input.c 2014-10-12 20:17:24 UTC (rev 582) @@ -99,13 +99,13 @@ #endif static void tcp_dooptions(struct tcpcb *tp, u_char *cp, int cnt, struct tcpiphdr *ti); -static void tcp_xmit_timer(register struct tcpcb *tp, int rtt); +static void tcp_xmit_timer(struct tcpcb *tp, int rtt); static int -tcp_reass(register struct tcpcb *tp, register struct tcpiphdr *ti, +tcp_reass(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m) { - register struct tcpiphdr *q; + struct tcpiphdr *q; struct socket *so = tp->t_socket; int flags; @@ -130,7 +130,7 @@ * segment. If it provides all of our data, drop us. */ if (!tcpfrag_list_end(tcpiphdr_prev(q), tp)) { - register int i; + int i; q = tcpiphdr_prev(q); /* conversion to int (in i) handles seq wraparound */ i = q->ti_seq + q->ti_len - ti->ti_seq; @@ -158,7 +158,7 @@ * if they are completely covered, dequeue them. */ while (!tcpfrag_list_end(q, tp)) { - register int i = (ti->ti_seq + ti->ti_len) - q->ti_seq; + int i = (ti->ti_seq + ti->ti_len) - q->ti_seq; if (i <= 0) break; if (i < q->ti_len) { @@ -216,12 +216,12 @@ tcp_input(struct mbuf *m, int iphlen, struct socket *inso) { struct ip save_ip, *ip; - register struct tcpiphdr *ti; + struct tcpiphdr *ti; caddr_t optp = NULL; int optlen = 0; int len, tlen, off; - register struct tcpcb *tp = NULL; - register int tiflags; + struct tcpcb *tp = NULL; + int tiflags; struct socket *so = NULL; int todrop, acked, ourfinisacked, needoutput = 0; int iss = 0; @@ -1343,7 +1343,7 @@ tcp_pulloutofband(so, ti, m) struct socket *so; struct tcpiphdr *ti; - register struct mbuf *m; + struct mbuf *m; { int cnt = ti->ti_urp - 1; @@ -1374,7 +1374,7 @@ */ static void -tcp_xmit_timer(register struct tcpcb *tp, int rtt) +tcp_xmit_timer(struct tcpcb *tp, int rtt) { register short delta; Modified: trunk/vde-2/src/slirpvde/tcp_output.c =================================================================== --- trunk/vde-2/src/slirpvde/tcp_output.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/tcp_output.c 2014-10-12 20:17:24 UTC (rev 582) @@ -55,11 +55,11 @@ int tcp_output(struct tcpcb *tp) { - register struct socket *so = tp->t_socket; - register long len, win; + struct socket *so = tp->t_socket; + long len, win; int off, flags, error; - register struct mbuf *m; - register struct tcpiphdr *ti; + struct mbuf *m; + struct tcpiphdr *ti; u_char opt[MAX_TCPOPTLEN]; unsigned optlen, hdrlen; int idle, sendalot; Modified: trunk/vde-2/src/slirpvde/tcp_subr.c =================================================================== --- trunk/vde-2/src/slirpvde/tcp_subr.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/tcp_subr.c 2014-10-12 20:17:24 UTC (rev 582) @@ -66,7 +66,7 @@ tcp_template(struct tcpcb *tp) { struct socket *so = tp->t_socket; - register struct tcpiphdr *n = &tp->t_template; + struct tcpiphdr *n = &tp->t_template; n->ti_mbuf = NULL; n->ti_x1 = 0; @@ -104,7 +104,7 @@ tcp_respond(struct tcpcb *tp, struct tcpiphdr *ti, struct mbuf *m, tcp_seq ack, tcp_seq seq, int flags) { - register int tlen; + int tlen; int win = 0; DEBUG_CALL("tcp_respond"); @@ -175,7 +175,7 @@ struct tcpcb * tcp_newtcpcb(struct socket *so) { - register struct tcpcb *tp; + struct tcpcb *tp; tp = (struct tcpcb *)malloc(sizeof(*tp)); if (tp == NULL) @@ -237,10 +237,10 @@ struct tcpcb * tcp_close(struct tcpcb *tp) { - register struct tcpiphdr *t; + struct tcpiphdr *t; struct socket *so = tp->t_socket; Slirp *slirp = so->slirp; - register struct mbuf *m; + struct mbuf *m; DEBUG_CALL("tcp_close"); DEBUG_ARG("tp = %lx", (long )tp); Modified: trunk/vde-2/src/slirpvde/tcp_timer.c =================================================================== --- trunk/vde-2/src/slirpvde/tcp_timer.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/tcp_timer.c 2014-10-12 20:17:24 UTC (rev 582) @@ -32,7 +32,7 @@ #include <slirp.h> -static struct tcpcb *tcp_timers(register struct tcpcb *tp, int timer); +static struct tcpcb *tcp_timers(struct tcpcb *tp, int timer); /* * Fast timeout routine for processing delayed acks @@ -40,8 +40,8 @@ void tcp_fasttimo(Slirp *slirp) { - register struct socket *so; - register struct tcpcb *tp; + struct socket *so; + struct tcpcb *tp; DEBUG_CALL("tcp_fasttimo"); @@ -64,9 +64,9 @@ void tcp_slowtimo(Slirp *slirp) { - register struct socket *ip, *ipnxt; - register struct tcpcb *tp; - register int i; + struct socket *ip, *ipnxt; + struct tcpcb *tp; + int i; DEBUG_CALL("tcp_slowtimo"); @@ -106,7 +106,7 @@ void tcp_canceltimers(struct tcpcb *tp) { - register int i; + int i; for (i = 0; i < TCPT_NTIMERS; i++) tp->t_timer[i] = 0; @@ -119,9 +119,9 @@ * TCP timer processing. */ static struct tcpcb * -tcp_timers(register struct tcpcb *tp, int timer) +tcp_timers(struct tcpcb *tp, int timer) { - register int rexmt; + int rexmt; DEBUG_CALL("tcp_timers"); Modified: trunk/vde-2/src/slirpvde/udp.c =================================================================== --- trunk/vde-2/src/slirpvde/udp.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/udp.c 2014-10-12 20:17:24 UTC (rev 582) @@ -54,11 +54,11 @@ * ip->ip_len length data (IPDU) */ void -udp_input(register struct mbuf *m, int iphlen) +udp_input(struct mbuf *m, int iphlen) { Slirp *slirp = m->slirp; - register struct ip *ip; - register struct udphdr *uh; + struct ip *ip; + struct udphdr *uh; int len; struct ip save_ip; struct socket *so; @@ -232,7 +232,7 @@ struct sockaddr_in *saddr, struct sockaddr_in *daddr, int iptos) { - register struct udpiphdr *ui; + struct udpiphdr *ui; int error = 0; DEBUG_CALL("udp_output"); Modified: trunk/vde-2/src/slirpvde/udp.h =================================================================== --- trunk/vde-2/src/slirpvde/udp.h 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/slirpvde/udp.h 2014-10-12 20:17:24 UTC (rev 582) @@ -74,7 +74,7 @@ struct mbuf; void udp_init(Slirp *); -void udp_input(register struct mbuf *, int); +void udp_input(struct mbuf *, int); int udp_output(struct socket *, struct mbuf *, struct sockaddr_in *); int udp_attach(struct socket *); void udp_detach(struct socket *); Modified: trunk/vde-2/src/vde_autolink.c =================================================================== --- trunk/vde-2/src/vde_autolink.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_autolink.c 2014-10-12 20:17:24 UTC (rev 582) @@ -1454,7 +1454,7 @@ npfd=newmgmtconn(pfd[mgmtindex].fd,pfd,npfd); if (mgmt && (npfd > mgmtindex+1)) { - register int i; + int i; for (i=mgmtindex+1;i<npfd;i++) { if( (pfd[i].revents & POLLHUP) || ((pfd[i].revents & POLLIN) && Modified: trunk/vde-2/src/vde_cryptcab/crc32.c =================================================================== --- trunk/vde-2/src/vde_cryptcab/crc32.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_cryptcab/crc32.c 2014-10-12 20:17:24 UTC (rev 582) @@ -33,7 +33,7 @@ */ u_int32_t chksum_crc32 (unsigned char *block, unsigned int length) { - register unsigned long crc; + unsigned long crc; unsigned long i; crc = 0xFFFFFFFF; @@ -47,7 +47,7 @@ unsigned char *crc32(unsigned char *block, unsigned int len) { - register unsigned long crc=chksum_crc32(block,len); + unsigned long crc=chksum_crc32(block,len); unsigned char *res=malloc(4); res[0]=crc&0x000000FF; Modified: trunk/vde-2/src/vde_l3/vde_l3.c =================================================================== --- trunk/vde-2/src/vde_l3/vde_l3.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_l3/vde_l3.c 2014-10-12 20:17:24 UTC (rev 582) @@ -1513,7 +1513,7 @@ mgmtfdstart=mgmtindex+1; } if (mgmtfdstart >= 0 && npfd > mgmtfdstart) { - register int i; + int i; for (i=mgmtfdstart;i<npfd;i++) { if (pfd[i].revents & POLLHUP || (pfd[i].revents & POLLIN && mgmtcommand(pfd[i].fd) < 0)) Modified: trunk/vde-2/src/vde_plug.c =================================================================== --- trunk/vde-2/src/vde_plug.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_plug.c 2014-10-12 20:17:24 UTC (rev 582) @@ -130,7 +130,7 @@ static void vde_ip_check(const unsigned char *buf,int rnx) { struct header *ph=(struct header *) buf; - register int i,j,vlan=0; + int i,j,vlan=0; char addr[256]; union body *pb; @@ -286,7 +286,7 @@ int main(int argc, char **argv) { static char *sockname=NULL; - register ssize_t nx; + ssize_t nx; struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700}; uname(&me); Modified: trunk/vde-2/src/vde_router/rbtree.c =================================================================== --- trunk/vde-2/src/vde_router/rbtree.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_router/rbtree.c 2014-10-12 20:17:24 UTC (rev 582) @@ -79,7 +79,7 @@ if (parent == gparent->rb_left) { { - register struct rb_node *uncle = gparent->rb_right; + struct rb_node *uncle = gparent->rb_right; if (uncle && rb_is_red(uncle)) { rb_set_black(uncle); @@ -92,7 +92,7 @@ if (parent->rb_right == node) { - register struct rb_node *tmp; + struct rb_node *tmp; __rb_rotate_left(parent, root); tmp = parent; parent = node; @@ -104,7 +104,7 @@ __rb_rotate_right(gparent, root); } else { { - register struct rb_node *uncle = gparent->rb_left; + struct rb_node *uncle = gparent->rb_left; if (uncle && rb_is_red(uncle)) { rb_set_black(uncle); @@ -117,7 +117,7 @@ if (parent->rb_left == node) { - register struct rb_node *tmp; + struct rb_node *tmp; __rb_rotate_right(parent, root); tmp = parent; parent = node; Modified: trunk/vde-2/src/vde_switch/bitarray.h =================================================================== --- trunk/vde-2/src/vde_switch/bitarray.h 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/bitarray.h 2014-10-12 20:17:24 UTC (rev 582) @@ -94,7 +94,7 @@ static inline bitarray ba_realloc(bitarray b,int n,int m) { - register int __i; + int __i; bitarray nb=realloc(b,__WORDSIZEROUND(m)*sizeof(unsigned long)); if(nb != NULL) for(__i=__WORDSIZEROUND(n);__i<__WORDSIZEROUND(m);__i++) @@ -120,15 +120,15 @@ static inline void ba_zap(bitarray x,int n) { - register unsigned int __i; + unsigned int __i; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) x[__i]=0; } #define ba_FORALLFUN(X,N,F,ARG) \ - ({ register unsigned int __i,__j; \ - register bitarrayelem __v; \ + ({ unsigned int __i,__j; \ + bitarrayelem __v; \ int max=__WORDSIZEROUND(N); \ for (__i=0; __i< max; __i++) \ for (__v=(X)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) \ @@ -136,8 +136,8 @@ 0; }) #define ba_FORALL(X,N,EXPR,K) \ - ({ register unsigned int __i,__j; \ - register bitarrayelem __v; \ + ({ unsigned int __i,__j; \ + bitarrayelem __v; \ int max=__WORDSIZEROUND(N); \ for (__i=0; __i< max; __i++) \ for (__v=(X)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) \ @@ -146,8 +146,8 @@ static inline int ba_card(bitarray x,int n) { - register unsigned int __i,__j,__n=0; - register bitarrayelem __v; + unsigned int __i,__j,__n=0; + bitarrayelem __v; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) for (__v=(x)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) @@ -157,8 +157,8 @@ static inline void ba_empty(bitarray x,int n) { - register unsigned int __i; - register bitarrayelem __v=0; + unsigned int __i; + bitarrayelem __v=0; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) __v |= (x)[__i]; \ @@ -171,7 +171,7 @@ static inline void ba_add(bitarray dst, bitarray src, int n) { - register unsigned int __i; + unsigned int __i; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) dst[__i] |= src[__i]; @@ -179,7 +179,7 @@ static inline void ba_remove(bitarray dst, bitarray src, int n) { - register unsigned int __i; + unsigned int __i; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) dst[__i] &= ~(src[__i]); @@ -187,7 +187,7 @@ static inline void ba_negate(bitarray x, int n) { - register unsigned int __i; + unsigned int __i; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) x[__i] = ~(x[__i]); @@ -203,8 +203,8 @@ static inline bitarray bac_realloc(bitarray b,int n,int m) { - register int __i; - register int __size=b[__WORDSIZEROUND(n)]; + int __i; + int __size=b[__WORDSIZEROUND(n)]; bitarray nb=realloc(b,(__WORDSIZEROUND(m)+1)*sizeof(unsigned long)); if(nb != NULL) { b[__WORDSIZEROUND(m)]=__size; @@ -223,23 +223,23 @@ static inline void bac_set(bitarray x,int n,int i) { - register bitarrayelem __v=x[i>>__LOG_WORDSIZE]; - register bitarrayelem __w=__v; + bitarrayelem __v=x[i>>__LOG_WORDSIZE]; + bitarrayelem __w=__v; __v |= (1L << (i & __WORDSIZEMASK)); if (__v != __w) x[i>>__LOG_WORDSIZE]=__v,(x[__WORDSIZEROUND(n)]++); } static inline void bac_clr(bitarray x,int n,int i) { - register bitarrayelem __v=x[i>>__LOG_WORDSIZE]; - register bitarrayelem __w=__v; + bitarrayelem __v=x[i>>__LOG_WORDSIZE]; + bitarrayelem __w=__v; __v &= ~(1L << (i & __WORDSIZEMASK)); if (__v != __w) x[i>>__LOG_WORDSIZE]=__v,(x[__WORDSIZEROUND(n)]--); } static inline void bac_zap(bitarray x,int n) { - register unsigned int __i; + unsigned int __i; int max=__WORDSIZEROUND(n); for (__i=0; __i< max; __i++) x[__i]=0; @@ -247,18 +247,18 @@ } #define bac_FORALLFUN(X,N,F,ARG) \ - ({ register unsigned int __i,__j; \ - register bitarrayelem __v; \ - register int __n=(X)[__WORDSIZEROUND(N)]; \ + ({ unsigned int __i,__j; \ + bitarrayelem __v; \ + int __n=(X)[__WORDSIZEROUND(N)]; \ for (__i=0; __n > 0; __i++) \ for (__v=(X)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) \ if (__v & 1) (F)(__i*__VDEWORDSIZE+__j,(ARG)),__n--; \ 0; }) #define bac_FORALL(X,N,EXPR,K) \ - ({ register unsigned int __i,__j; \ - register bitarrayelem __v; \ - register int __n=(X)[__WORDSIZEROUND(N)]; \ + ({ unsigned int __i,__j; \ + bitarrayelem __v; \ + int __n=(X)[__WORDSIZEROUND(N)]; \ for (__i=0; __n > 0; __i++) \ for (__v=(X)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) \ if (__v & 1) (K)=__i*__VDEWORDSIZE+__j,(EXPR),__n--; \ Modified: trunk/vde-2/src/vde_switch/consmgmt.c =================================================================== --- trunk/vde-2/src/vde_switch/consmgmt.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/consmgmt.c 2014-10-12 20:17:24 UTC (rev 582) @@ -79,7 +79,7 @@ void addcl(int ncl,struct comlist *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { cl->next=NULL; (*clt)=cl; @@ -89,9 +89,9 @@ void delcl(int ncl,struct comlist *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { - register struct comlist **p=&clh; + struct comlist **p=&clh; while (*p != NULL) { if (*p == cl) *p=cl->next; @@ -116,9 +116,9 @@ void deldbgcl(int ncl,struct dbgcl *cl) { - register int i; + int i; for (i=0;i<ncl;i++,cl++) { - register struct dbgcl **p=&dbgclh; + struct dbgcl **p=&dbgclh; while (*p != NULL) { if (*p == cl) { if (cl->fds) free(cl->fds); @@ -143,7 +143,7 @@ void delplugin(struct plugin *cl) { - register struct plugin **p=plugint=&pluginh; + struct plugin **p=plugint=&pluginh; while (*p != NULL) { if (*p == cl) *p=cl->next; Modified: trunk/vde-2/src/vde_switch/fstp.c =================================================================== --- trunk/vde-2/src/vde_switch/fstp.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/fstp.c 2014-10-12 20:17:24 UTC (rev 582) @@ -192,7 +192,7 @@ int fstnewvlan(int vlan) { /*printf("F new vlan %d\n",vlan);*/ - register unsigned int port; + unsigned int port; int newvlan=(fsttab[vlan] == NULL); if (newvlan && ((fsttab[vlan]=malloc(sizeof(struct vlst))) == NULL || @@ -249,7 +249,7 @@ void fstsetnumports (int val) { - register int i; + int i; /*printf("F numports %d\n",val);*/ for (i=0;i<NUMOFVLAN;i++) { if (fsttab[i]) { @@ -292,7 +292,7 @@ static void fst_hello_vlan(int vlan,int now) { int age,nowvlan; - register int port; + int port; /* timeout on the root port */ if (fsttab[vlan]->rootport != 0 && (now - fsttab[vlan]->roottimestamp) > 3*helloperiod) fstnewvlan(vlan); @@ -333,7 +333,7 @@ */ static void fst_updatebackup(int vlan,int index) { - register int port; + int port; ba_FORALL(fsttab[vlan]->backup,numports, ({ if (!FSTP_ACTIVE(vlan,port)) { ba_clr(fsttab[vlan]->backup,port); @@ -413,7 +413,7 @@ */ static void topology_change(int vlan, int genport) { - register int port; + int port; int now=qtime(); //if (now - fsttab[vlan]->tctime > 2*helloperiod) { /*limit age?*/ /*printf("TOPOLOGY CHANGE %d\n",vlan);*/ @@ -438,7 +438,7 @@ * 3- give back the acknowledge and put the new root in fwd*/ static void fastprotocol(int vlan, int newrootport) { - register int port; + int port; ba_FORALL(fsttab[vlan]->untag,numports, ({ if(port != newrootport && !(ba_check(fsttab[vlan]->backup,port)) && !(ba_check(fsttab[vlan]->edge,port)) && FSTP_ACTIVE(vlan,port)) { @@ -667,7 +667,7 @@ static void fstprintactive(int vlan,FILE *fd) { - register int i; + int i; printoutc(fd,"FST DATA VLAN %04d %s %s",vlan, memcmp(myid,fsttab[vlan]->root,SWITCHID_LEN)==0?"ROOTSWITCH":"", ((pflag & FSTP_TAG)==0)?"FSTP IS DISABLED":""); @@ -690,7 +690,7 @@ static int fstprint(FILE *fd,char *arg) { if (*arg != 0) { - register int vlan; + int vlan; vlan=atoi(arg); if (vlan >= 0 && vlan < NUMOFVLAN-1) { if (bac_check(validvlan,vlan)) Modified: trunk/vde-2/src/vde_switch/hash.c =================================================================== --- trunk/vde-2/src/vde_switch/hash.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/hash.c 2014-10-12 20:17:24 UTC (rev 582) @@ -285,8 +285,8 @@ if (vx == 0) return 0; else { - register int i=0; - register int x=vx-1; + int i=0; + int x=vx-1; while (x) { x>>=1; i++; } if (vx != 1<<i) printlog(LOG_WARNING,"Hash size must be a power of 2. %d rounded to %d",vx,1<<i); @@ -352,7 +352,7 @@ if (rv < 6) return EINVAL; else { - register int i; + int i; for (i=0;i<ETH_ALEN;i++) mac[i]=maci[i]; e=find_entry(extmac(mac,vlan)); Modified: trunk/vde-2/src/vde_switch/port.c =================================================================== --- trunk/vde-2/src/vde_switch/port.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/port.c 2014-10-12 20:17:24 UTC (rev 582) @@ -65,7 +65,7 @@ /* void packet_dump (struct packet *p) { - register int i; + int i; printf ("packet dump dst"); for (i=0;i<ETH_ALEN;i++) printf(":%02x",p->header.dest[i]); @@ -180,7 +180,7 @@ struct port *port=portv[portno]; if (port != NULL && port->ep==NULL) { portv[portno]=NULL; - register int i; + int i; /* delete completely the port. all vlan defs zapped */ bac_FORALL(validvlan,NUMOFVLAN,ba_clr(vlant[i].table,portno),i); free(port); @@ -268,7 +268,7 @@ ep->vdepq_max=stdqlen; #endif if(port->ep == NULL) {/* WAS INACTIVE */ - register int i; + int i; /* copy all the vlan defs to the active vlan defs */ ep->next=port->ep; port->ep=ep; @@ -351,7 +351,7 @@ port->ms=NULL; port->sender=NULL; port->curuser=-1; - register int i; + int i; /* inactivate port: all active vlan defs cleared */ bac_FORALL(validvlan,NUMOFVLAN,({ ba_clr(vlant[i].bctag,portno); @@ -467,7 +467,7 @@ void portset_send_packet(bitarray portset, void *packet, int len) { - register int i; + int i; #ifndef VDE_PQ2 ba_FORALL(portset,numports, SEND_PACKET_PORT(portv[i],i,packet,len), i); @@ -590,7 +590,7 @@ portv[port]->bytesin+=len; #endif if (pflag & HUB_TAG) { /* this is a HUB */ - register int i; + int i; #ifndef VDE_PQ2 for(i = 1; i < numports; i++) if((i != port) && (portv[i] != NULL)) @@ -640,7 +640,7 @@ /* BROADCAST: tag/untag. Broadcast the packet untouched on the ports * of the same tag-ness, then transform it to the other tag-ness for the others*/ if (tagged) { - register int i; + int i; #ifndef VDE_PQ2 ba_FORALL(vlant[vlan].bctag,numports, ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i); @@ -657,7 +657,7 @@ ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbufu);}),i); #endif } else { /* untagged */ - register int i; + int i; #ifndef VDE_PQ2 ba_FORALL(vlant[vlan].bcuntag,numports, ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i); @@ -989,7 +989,7 @@ static int print_ptable(FILE *fd,char *arg) { - register int i; + int i; if (*arg != 0) { i=atoi(arg); if (i <0 || i>=numports) @@ -1006,7 +1006,7 @@ static int print_ptableall(FILE *fd,char *arg) { - register int i; + int i; if (*arg != 0) { i=atoi(arg); if (i <0 || i>=numports) @@ -1034,7 +1034,7 @@ static int portresetcounters(char *arg) { - register int i; + int i; if (*arg != 0) { i=atoi(arg); if (i <0 || i>=numports) @@ -1131,7 +1131,7 @@ { if (vlan >= 0 && vlan < NUMOFVLAN) { if (bac_check(validvlan,vlan)) { - register int i,used=0; + int i,used=0; ba_FORALL(vlant[vlan].table,numports,used++,i); if (used) return EADDRINUSE; @@ -1206,7 +1206,7 @@ static void vlanprintactive(int vlan,FILE *fd) { - register int i; + int i; printoutc(fd,"VLAN %04d",vlan); #ifdef FSTP if (pflag & FSTP_TAG) { @@ -1248,7 +1248,7 @@ static int vlanprint(FILE *fd,char *arg) { if (*arg != 0) { - register int vlan; + int vlan; vlan=atoi(arg); if (vlan >= 0 && vlan < NUMOFVLAN-1) { if (bac_check(validvlan,vlan)) @@ -1264,7 +1264,7 @@ static void vlanprintelem(int vlan,FILE *fd) { - register int i; + int i; printoutc(fd,"VLAN %04d",vlan); ba_FORALL(vlant[vlan].table,numports, printoutc(fd," -- Port %04d tagged=%d active=%d status=%s", @@ -1274,7 +1274,7 @@ static int vlanprintall(FILE *fd,char *arg) { if (*arg != 0) { - register int vlan; + int vlan; vlan=atoi(arg); if (vlan > 0 && vlan < NUMOFVLAN-1) { if (bac_check(validvlan,vlan)) @@ -1302,7 +1302,7 @@ if (rv < 6) return EINVAL; else { - register int i; + int i; for (i=0;i<ETH_ALEN;i++) switchmac[i]=maci[i]; return 0; Modified: trunk/vde-2/src/vde_switch/qtimer.c =================================================================== --- trunk/vde-2/src/vde_switch/qtimer.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/qtimer.c 2014-10-12 20:17:24 UTC (rev 582) @@ -57,7 +57,7 @@ unsigned int qtimer_add(time_t period,int times,void (*call)(),void *arg) { - register int n; + int n; if (period>0 && call && times>=0) { qtime_csenter(); if (activeqt >= maxqt) { @@ -96,7 +96,7 @@ void qtimer_del(unsigned int n) { - register int i; + int i; for (i=0; i<activeqt; i++) { if (n==qth[i]->qt_n) { qth[i]->qt_times=0; @@ -107,8 +107,8 @@ static void sig_alarm(int sig) { - register int i; - register int j; + int i; + int j; gqtime++; //printf("%d\n",gqtime); for (i=0,j=0; i<activeqt; i++) { Modified: trunk/vde-2/src/vde_switch/vde_switch.c =================================================================== --- trunk/vde-2/src/vde_switch/vde_switch.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_switch/vde_switch.c 2014-10-12 20:17:24 UTC (rev 582) @@ -115,7 +115,7 @@ unsigned char add_type(struct swmodule *mgr,int prio) { - register int i; + int i; if(ntypes==maxtypes) { maxtypes = maxtypes ? 2 * maxtypes : 8; if (maxtypes > PRIOFLAG) { @@ -190,14 +190,14 @@ static void file_cleanup(void) { - register int i; + int i; for(i = 0; i < nfds; i++) TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->private_data); } void remove_fd(int fd) { - register int i; + int i; for(i = 0; i < nfds; i++){ if(fds[i].fd == fd) break; @@ -267,7 +267,7 @@ static void main_loop() { time_t now; - register int n,i; + int n,i; while(1) { n=poll(fds,nfds,-1); now=qtime(); @@ -277,7 +277,7 @@ } else { for(i = 0; /*i < nfds &&*/ n>0; i++){ if(fds[i].revents != 0) { - register int prenfds=nfds; + int prenfds=nfds; n--; fdpp[i]->timestamp=now; TYPE2MGR(fdpp[i]->type)->handle_io(fdpp[i]->type,fds[i].fd,fds[i].revents,fdpp[i]->private_data); @@ -289,7 +289,7 @@ else { if (i < nfds && i > 0 && i != nprio) { - register int i_1=i-1; + int i_1=i-1; if (fdpp[i]->timestamp > fdpp[i_1]->timestamp) { struct pollfd tfds; struct pollplus *tfdpp; @@ -356,7 +356,7 @@ static struct option *optcpy(struct option *tgt, struct option *src, int n, int tag) { - register int i; + int i; memcpy(tgt,src,sizeof(struct option) * n); for (i=0;i<n;i++) { tgt[i].val=(tgt[i].val & 0xffff) | tag << 16; @@ -399,7 +399,7 @@ Usage(); } else { - register int i; + int i; for (i=0;i<ETH_ALEN;i++) switchmac[i]=maci[i]; } @@ -451,7 +451,7 @@ if (long_options == NULL || optstring==NULL) exit(2); { /* fill-in the long_options fields */ - register int i; + int i; char *os=optstring; char last=0; struct option *opp=long_options; @@ -581,7 +581,7 @@ { struct timeval v; long val; - register int i; + int i; gettimeofday(&v,NULL); srand48(v.tv_sec ^ v.tv_usec ^ getpid()); for(i=0,val=lrand48();i<4; i++,val>>=8) Modified: trunk/vde-2/src/vde_vxlan/vxlan_hash.c =================================================================== --- trunk/vde-2/src/vde_vxlan/vxlan_hash.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vde_vxlan/vxlan_hash.c 2014-10-12 20:17:24 UTC (rev 582) @@ -207,8 +207,8 @@ if (vx == 0) return 0; else { - register int i=0; - register int x=vx-1; + int i=0; + int x=vx-1; while (x) { x>>=1; i++; } if (vx != 1<<i) printlog(LOG_WARNING,"Hash size must be a power of 2. %d rounded to %d",vx,1<<i); Modified: trunk/vde-2/src/vdeq.c =================================================================== --- trunk/vde-2/src/vdeq.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vdeq.c 2014-10-12 20:17:24 UTC (rev 582) @@ -45,7 +45,7 @@ static int countnics(const char *s) { - register int nics=1; + int nics=1; while (*s) { if (*s==',') nics++; s++; @@ -55,8 +55,8 @@ static int countnewnics(int argc,char *argv[]) { - register int nics=0; - register int netflag=0; + int nics=0; + int netflag=0; while (argc > 0) { if (strcmp(argv[0],"-net")==0) netflag=1; @@ -73,7 +73,7 @@ static int isdaemonize(int argc,char *argv[]) { - register int daemonize=0; + int daemonize=0; if(strcmp(filename,"qemu")==0){ int daemonadds=0; while (argc > 0) { @@ -120,7 +120,7 @@ static void cleanup() { - register int i; + int i; for (i=0; i<nb_nics; i++) { if (conn[i] != NULL) vde_close(conn[i]); @@ -282,13 +282,13 @@ char *argsock=NULL,**sockname; int *ports; int result; - register ssize_t nx; + ssize_t nx; int newargc; int daemonize; char **newargv; typedef int pair[2]; pair *sp; - register int i,j; + int i,j; int oldsyntax=0; int newsyntax=0; int ver; @@ -415,8 +415,8 @@ sockname[0]=NULL; else { - register char *s=argsock; - register char oldch; + char *s=argsock; + char oldch; i=0; do { sockname[i++]=s; Modified: trunk/vde-2/src/vdetaplib/libvdetap.c =================================================================== --- trunk/vde-2/src/vdetaplib/libvdetap.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vdetaplib/libvdetap.c 2014-10-12 20:17:24 UTC (rev 582) @@ -84,7 +84,7 @@ void libvdetap_init (void) __attribute((constructor)); void libvdetap_init(void) { - register int i; + int i; nativesym(ioctl, "ioctl"); nativesym(open, "open"); nativesym(open64, "open64"); Modified: trunk/vde-2/src/vdetaplib/vdetap.c =================================================================== --- trunk/vde-2/src/vdetaplib/vdetap.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/vdetaplib/vdetap.c 2014-10-12 20:17:24 UTC (rev 582) @@ -30,7 +30,7 @@ { int fd,fddata; int nx; - register int i; + int i; struct vde_open_args open_args={.port=0,.group=NULL,.mode=0700}; char *descr; /*printf("argc = %d\n",argc); Modified: trunk/vde-2/src/wirefilter.c =================================================================== --- trunk/vde-2/src/wirefilter.c 2014-10-12 20:05:22 UTC (rev 581) +++ trunk/vde-2/src/wirefilter.c 2014-10-12 20:17:24 UTC (rev 582) @@ -670,7 +670,7 @@ //fprintf(stderr,"%s: splitpacket rnx=%d remaining=%d size=%d\n",progname,rnx[dir],remaining[dir],size); if (size==0) return; if (rnx[dir]>0) { - register int amount=MIN(remaining[dir],size); + int amount=MIN(remaining[dir],size); //fprintf(stderr,"%s: fragment amount %d\n",progname,amount); memcpy(fragp[dir],buf,amount); remaining[dir]-=amount; @@ -1679,7 +1679,7 @@ int mgmtfdstart=consoleindex; if (mgmtindex >= 0) mgmtfdstart=mgmtindex+1; if (mgmtfdstart >= 0 && npfd > mgmtfdstart) { - register int i; + int i; for (i=mgmtfdstart;i<npfd;i++) { if (pfd[i].revents & POLLIN && mgmtcommand(pfd[i].fd) < 0) pfd[i].revents |= POLLHUP; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 20:05:28
|
Revision: 581 http://sourceforge.net/p/vde/svn/581 Author: garden Date: 2014-10-12 20:05:22 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Clean up unused variables. Modified Paths: -------------- trunk/vde-2/src/common/canonicalize.c trunk/vde-2/src/lib/python/vdeplug_python.c trunk/vde-2/src/slirpvde/tftp.c trunk/vde-2/src/vde_router/vde_router.c trunk/vde-2/src/vde_router/vder_olsr.c trunk/vde-2/src/vde_switch/bitarray.h trunk/vde-2/src/vde_switch/plugins/dump.c Modified: trunk/vde-2/src/common/canonicalize.c =================================================================== --- trunk/vde-2/src/common/canonicalize.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/common/canonicalize.c 2014-10-12 20:05:22 UTC (rev 581) @@ -51,7 +51,6 @@ char *resolved_root = resolved + 1; char *ret_path = NULL; int num_links = 0; - int validstat = 0; struct stat *pst = NULL; if (!name || !resolved) @@ -128,7 +127,6 @@ else if (end - start == 2 && start[0] == '.' && start[1] == '.') { /* Back up to previous component, ignore if at root already. */ - validstat = 0; if (dest > resolved_root) while ((--dest)[-1] != '/'); } @@ -151,7 +149,6 @@ *dest = '\0'; /*check the dir along the path */ - validstat = 1; if (lstat(resolved, pst) < 0) goto abort; else @@ -169,7 +166,6 @@ } /* symlink! */ - validstat = 0; n = readlink (resolved, buf, PATH_MAX); if (n < 0) goto abort; Modified: trunk/vde-2/src/lib/python/vdeplug_python.c =================================================================== --- trunk/vde-2/src/lib/python/vdeplug_python.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/lib/python/vdeplug_python.c 2014-10-12 20:05:22 UTC (rev 581) @@ -16,13 +16,11 @@ struct vde_open_args vde_args = {0,NULL,0777}; char *vde_sock = NULL, *vde_descr = NULL; VDECONN *ret; - int e; if (!PyArg_ParseTuple(args, "ss|isi", &vde_sock, &vde_descr, &vde_args.port, &vde_args.group, &vde_args.mode)) goto failure; ret = vde_open_real(vde_sock, vde_descr, 1, &vde_args); - e = errno; if (!ret) goto failure; else Modified: trunk/vde-2/src/slirpvde/tftp.c =================================================================== --- trunk/vde-2/src/slirpvde/tftp.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/slirpvde/tftp.c 2014-10-12 20:05:22 UTC (rev 581) @@ -161,7 +161,6 @@ struct sockaddr_in saddr, daddr; struct mbuf *m; struct tftp_t *tp; - int nobytes; m = m_get(spt->slirp); @@ -185,8 +184,6 @@ daddr.sin_addr = spt->client_ip; daddr.sin_port = spt->client_port; - nobytes = 2; - m->m_len = sizeof(struct tftp_t) - 514 + 3 + strlen(msg) - sizeof(struct ip) - sizeof(struct udphdr); Modified: trunk/vde-2/src/vde_router/vde_router.c =================================================================== --- trunk/vde-2/src/vde_router/vde_router.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/vde_router/vde_router.c 2014-10-12 20:05:22 UTC (rev 581) @@ -1387,7 +1387,7 @@ char cmd[MAXCMD]; int npfd = 0; struct pollfd pfd[MAXCONN]; - int consoleindex = -1, mgmtindex = -1; + int mgmtindex = -1; int i, n, daemon = 0; char *pidfile = NULL, *configfile = NULL; int option_index; @@ -1459,7 +1459,6 @@ } setsid(); } else { - consoleindex = npfd; pfd[npfd].fd = STDIN_FILENO; pfd[npfd].events = POLLIN | POLLHUP; write(STDOUT_FILENO,header,strlen(header)); Modified: trunk/vde-2/src/vde_router/vder_olsr.c =================================================================== --- trunk/vde-2/src/vde_router/vder_olsr.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/vde_router/vder_olsr.c 2014-10-12 20:05:22 UTC (rev 581) @@ -608,7 +608,6 @@ static void olsr_recv(uint8_t *buffer, int len) { struct olsrmsg *msg; - struct olsr_hmsg_tc *msg_tc; struct olsrhdr *outohdr, *oh = (struct olsrhdr *) buffer; struct olsr_route_entry *ancestor; int parsed = 0; @@ -653,7 +652,6 @@ recv_mid(buffer + parsed + sizeof(struct olsrmsg), ntohs(msg->size) - (sizeof(struct olsrmsg)), origin); break; case OLSRMSG_TC: - msg_tc = (struct olsr_hmsg_tc *) (buffer + parsed); if (reconsider_topology(buffer + parsed + sizeof(struct olsrmsg), ntohs(msg->size) - (sizeof(struct olsrmsg)), origin) < 1) msg->ttl = 0; else { Modified: trunk/vde-2/src/vde_switch/bitarray.h =================================================================== --- trunk/vde-2/src/vde_switch/bitarray.h 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/vde_switch/bitarray.h 2014-10-12 20:05:22 UTC (rev 581) @@ -142,7 +142,7 @@ for (__i=0; __i< max; __i++) \ for (__v=(X)[__i],__j=0; __j < __VDEWORDSIZE; __v >>=1, __j++) \ if (__v & 1) {(K)=__i*__VDEWORDSIZE+__j;(EXPR);} \ - 0; }) + (K); }) static inline int ba_card(bitarray x,int n) { Modified: trunk/vde-2/src/vde_switch/plugins/dump.c =================================================================== --- trunk/vde-2/src/vde_switch/plugins/dump.c 2014-10-12 19:22:54 UTC (rev 580) +++ trunk/vde-2/src/vde_switch/plugins/dump.c 2014-10-12 20:05:22 UTC (rev 581) @@ -32,11 +32,10 @@ static int dump(char *arg) { int active=atoi(arg); - int rv; if (active) - rv=eventadd(testevent,"packet",dl); + eventadd(testevent,"packet",dl); else - rv=eventdel(testevent,"packet",dl); + eventdel(testevent,"packet",dl); return 0; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ga...@us...> - 2014-10-12 19:23:09
|
Revision: 580 http://sourceforge.net/p/vde/svn/580 Author: garden Date: 2014-10-12 19:22:54 +0000 (Sun, 12 Oct 2014) Log Message: ----------- Add format string to fprintf calls. Modified Paths: -------------- trunk/vde-2/src/common/cmdparse.c Modified: trunk/vde-2/src/common/cmdparse.c =================================================================== --- trunk/vde-2/src/common/cmdparse.c 2014-03-08 12:08:39 UTC (rev 579) +++ trunk/vde-2/src/common/cmdparse.c 2014-10-12 19:22:54 UTC (rev 580) @@ -284,13 +284,13 @@ int i; for (i=0;i<argc;i++) { if (i) fprintf(mf," "); - fprintf(mf,argv[i]); + fprintf(mf, "%s", argv[i]); } } else { int num=atoi(t); while (*t >='0' && *t <= '9') t++; if (num < argc) - fprintf(mf,argv[num]); + fprintf(mf, "%s", argv[num]); } } else fprintf(mf,"%c",*t); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <ni...@ly...> - 2014-04-02 13:03:09
|
[ I hope this is a good place to send patches and bug reports. I don't plan to get deeply involved in vde development, so I'd prefer not subscribing to the -devel list, which as far as I understand is a members only list. ] Some of the arrays passed to getopt_long have no proper termination. E.g., vde_l3 --version crashes for me. Patch below. Also the logic in vde_switch and kvde_switch looks a bit fishy; it's not obvious to me if they add terminator or not. Regards, /Niels Index: src/unixcmd.c =================================================================== --- src/unixcmd.c (revision 579) +++ src/unixcmd.c (working copy) @@ -56,6 +56,7 @@ {"rcfile", 1, 0, 'f'}, {"sock", 1, 0, 's'}, {"verbose", 0, 0, 'v'}, + {NULL, 0, 0, 0} }; int c; while ((c=getopt_long (argc, argv, "f:s:v", Index: src/vde_autolink.c =================================================================== --- src/vde_autolink.c (revision 579) +++ src/vde_autolink.c (working copy) @@ -1329,6 +1329,7 @@ {"mgmtmode", 1, 0, MGMTMODEARG}, {"sock", 1, 0, 's'}, {"switchmgmt", 1, 0, 'S'}, + {NULL, 0, 0, 0} }; progname=basename(argv[0]); Index: src/vde_l3/vde_l3.c =================================================================== --- src/vde_l3/vde_l3.c (revision 579) +++ src/vde_l3/vde_l3.c (working copy) @@ -1324,6 +1324,7 @@ {"vdeplug", 1, 0, 'v'}, {"mgmt", 1, 0, 'M'}, //TODO {"daemon",0 , 0,'d'}, + {NULL, 0, 0, 0}, }; progname=strdup(argv[0]); VDEROUTER.route_table = NULL; -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. |
From: <ni...@ly...> - 2014-04-02 12:55:34
|
The following fixes a bad (and to small) array size. Found it only thanks to a gcc warning. Regards, /Niels Index: vder_packet.c =================================================================== --- vder_packet.c (revision 579) +++ vder_packet.c (working copy) @@ -199,7 +199,7 @@ } else { struct iphdr *hdr = iphead(packet); uint32_t sender = hdr->saddr; - uint8_t foot[sizeof(hdr) + 8]; + uint8_t foot[sizeof(*hdr) + 8]; memcpy(foot, footprint(packet), sizeof(struct iphdr) + 8); if (vder_ip_decrease_ttl(packet)) { -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. |
From: <ni...@ly...> - 2014-03-26 07:54:53
|
ni...@ly... (Niels Möller) writes: [ I think the message I reply to got stuck in moderation, and has not yet appeared on the list. ] > I'm setting up a test network with qemu and vde. I would like to be able > to sniff traffic by running tcpdump on the host machine, by attaching > tcpdump to one of the ports of an emulated vde_switch. (I'll configure > vde_switch it to act as hub rather thna a switch if that's needed; not > sure if there are other ways, like a second attach to port I'm really > interested in, or some port-replication feature as found in some other > switches). > > I'd prefer to not have to route packets via some real network interfaces > on the host computer, just to be able to sniff it. > > I've been searching for tools to do this, but I couldn't find anything. > Ideally, I'd like to use something like vde_plug the-hub | tcpdump -r -, > but vde_plug and tcpdump don't use the same format. > > I have looked briefly at the vde_pcapplug source code, but it appears it > doesn't support pcap savefiles. I imagine it wouldn't be very hard to > extend vde_pcapplug to be able to read and/or write pcap files, instead > of working with a real network interface. But before I try that, I'd > like to know if there's any other tool I should be using instead? I've now hacked vde_pcapplug to be able to do this. The patch below seems to work. If no interface is specified, packets are dumped in pcap format to stdout. Reading a save file from stdin is not implemented. Example usage: ./vde_pcapplug -s .vde-hubs/hub02 | tcpdump -r - Regards, /Niels Line offsets in this patch may be a bit off, since I had to do a few unrelated edits to get the file to compile outside of the vde tree, and those changes are not included here. Also indentation changes are excluded to reduce clutter, so one should reindent after applying the patch. diff --git a/vde_pcapplug.c b/vde_pcapplug.c index 8045146..aef8f1c 100644 --- a/vde_pcapplug.c +++ b/vde_pcapplug.c @@ -68,6 +68,7 @@ static VDECONN *conn = NULL; static pcap_t *pcap = NULL; +static pcap_dumper_t *dumper = NULL; char *prog; int logok; @@ -96,6 +97,8 @@ static void cleanup(void) printlog(LOG_WARNING,"Couldn't remove pidfile '%s': %s", pidfile, strerror(errno)); } + if (dumper) + pcap_dump_close(dumper); if (pcap) pcap_close(pcap); if (conn) @@ -155,7 +158,7 @@ static void setsighandlers() struct pollfd pollv[]={{0,POLLIN|POLLHUP},{0,POLLIN|POLLHUP},{0,POLLIN|POLLHUP}}; static void usage(void) { - fprintf(stderr, "Usage: %s [OPTION]... interface\n\n", prog); + fprintf(stderr, "Usage: %s [OPTION]... [interface]\n\n", prog); fprintf(stderr, " -p, --port=portnum Port number in the VDE switch\n" " -g, --group=group Group for the socket\n" " -m, --mode=mode Octal mode for the socket\n" @@ -359,12 +362,11 @@ int main(int argc, char **argv) if (optind < argc) ifname=argv[optind]; - else - usage(); // implies exit atexit(cleanup); setsighandlers(); + if (ifname) { pcap = pcap_open_live(ifname, BUFSIZE, 1, 0, errbuf); if (pcap == NULL) { printlog(LOG_ERR, "Open %s: %s\n", ifname, errbuf); @@ -380,8 +382,13 @@ int main(int argc, char **argv) exit(1); } setup_fd(pcapfd); - pollv[0].fd=pcapfd; + } + else { + pcap = pcap_open_dead (DLT_EN10MB, BUFSIZE); + dumper = pcap_dump_open (pcap, "-"); + pollv[0].fd=-1; + } pollv[1].fd=vde_datafd(conn); pollv[2].fd=vde_ctlfd(conn); @@ -399,10 +406,18 @@ int main(int argc, char **argv) nx=vde_recv(conn,bufin,sizeof(bufin),0); if (nx<=0) break; + if (dumper) { + struct pcap_pkthdr hdr; + gettimeofday (&hdr.ts, NULL); + hdr.len = hdr.caplen = nx; + pcap_dump ((void *) dumper, &hdr, bufin); + } + else if (ifname) { nx = pcap_inject(pcap, bufin, nx); if (nx<=0) break; } } + } return(0); } -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. |
From: <ni...@ly...> - 2014-03-25 12:58:52
|
Hello, I'm setting up a test network with qemu and vde. I would like to be able to sniff traffic by running tcpdump on the host machine, by attaching tcpdump to one of the ports of an emulated vde_switch. (I'll configure vde_switch it to act as hub rather thna a switch if that's needed; not sure if there are other ways, like a second attach to port I'm really interested in, or some port-replication feature as found in some other switches). I'd prefer to not have to route packets via some real network interfaces on the host computer, just to be able to sniff it. I've been searching for tools to do this, but I couldn't find anything. Ideally, I'd like to use something like vde_plug the-hub | tcpdump -r -, but vde_plug and tcpdump don't use the same format. I have looked briefly at the vde_pcapplug source code, but it appears it doesn't support pcap savefiles. I imagine it wouldn't be very hard to extend vde_pcapplug to be able to read and/or write pcap files, instead of working with a real network interface. But before I try that, I'd like to know if there's any other tool I should be using instead? Regards, /Niels -- Niels Möller. PGP-encrypted email is preferred. Keyid C0B98E26. Internet email is subject to wholesale government surveillance. |
From: <rd...@us...> - 2014-03-08 12:08:45
|
Revision: 579 http://sourceforge.net/p/vde/svn/579 Author: rd235 Date: 2014-03-08 12:08:39 +0000 (Sat, 08 Mar 2014) Log Message: ----------- vxvde bugfix (IPv4 self broadcasts) and optimizations Modified Paths: -------------- branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c branches/rd235/vde-2/src/vde_plug.c Modified: branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c =================================================================== --- branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c 2014-02-10 21:41:41 UTC (rev 578) +++ branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxvde.c 2014-03-08 12:08:39 UTC (rev 579) @@ -196,7 +196,6 @@ return retval; } - #ifdef DEBUGADDR static inline void printaddr(char *msg, void *sockaddr) { @@ -255,7 +254,6 @@ for (rp = result; rp != NULL; rp = rp->ai_next) { switch (rp->ai_family) { case AF_INET6: { - // currently unsupported struct sockaddr_in6 *addr=(struct sockaddr_in6 *)(rp->ai_addr); struct ipv6_mreq mc_req; struct sockaddr_in6 bindaddr; @@ -309,8 +307,8 @@ &bindaddrlen) < 0) goto error; uniport=bindaddr.sin6_port; - break; } + break; case AF_INET: { struct sockaddr_in *addr=(struct sockaddr_in *)(rp->ai_addr); struct ip_mreqn mc_req; @@ -370,6 +368,7 @@ uniport=bindaddr.sin_port; //fprintf(stderr,"local port %d\n",ntohs(bindaddr.sin_port)); } + break; default: uniport=0; } Modified: branches/rd235/vde-2/src/vde_plug.c =================================================================== --- branches/rd235/vde-2/src/vde_plug.c 2014-02-10 21:41:41 UTC (rev 578) +++ branches/rd235/vde-2/src/vde_plug.c 2014-03-08 12:08:39 UTC (rev 579) @@ -42,6 +42,7 @@ #define BUFSIZE 4096 #define ETH_ALEN 6 +#define ETH_HDRLEN (ETH_ALEN+ETH_ALEN+2) VDECONN *conn; VDECONN *conn2; @@ -300,15 +301,19 @@ break; if (pollv[0].revents & POLLIN) { nx=vde_recv(conn, bufin, BUFSIZE,0); - if (nx==0) + if (__builtin_expect((nx >= ETH_HDRLEN),1)) { + vde_send(conn2, bufin, nx, 0); + /*fprintf(stderr,"0->1 %d ",nx);*/ + } else if (nx<0) break; - vde_send(conn2, bufin, nx, 0); } if (pollv[1].revents & POLLIN) { nx=vde_recv(conn2,bufin,BUFSIZE,0); - if (nx<0) + if (__builtin_expect((nx >= ETH_HDRLEN),1)) { + vde_send(conn, bufin, nx, 0); + /*fprintf(stderr,"1->0 %d ",nx);*/ + } else if (nx<0) break; - vde_send(conn, bufin, nx, 0); } } return(0); @@ -465,8 +470,8 @@ for(;;) { poll(pollv,3,-1); - if ((pollv[0].revents | pollv[1].revents | pollv[2].revents) & POLLHUP || - pollv[2].revents & POLLIN) + if (__builtin_expect(((pollv[0].revents | pollv[1].revents | pollv[2].revents) & POLLHUP || + pollv[2].revents & POLLIN),0)) break; if (pollv[0].revents & POLLIN) { nx=read(STDIN_FILENO,bufin,sizeof(bufin)); @@ -475,17 +480,16 @@ /*fprintf(stderr,"%s: RECV %d %x %x \n",myname,nx,bufin[0],bufin[1]);*/ if (nx==0) break; - vdestream_recv(vdestream, bufin, nx); + vdestream_recv(vdestream, bufin, nx); } if (pollv[1].revents & POLLIN) { nx=vde_recv(conn,bufin,BUFSIZE-2,0); - if (nx<0) - perror("vde_plug: recvfrom "); - else + if (__builtin_expect((nx >= ETH_HDRLEN),1)) { vdestream_send(vdestream, bufin, nx); /*fprintf(stderr,"%s: SENT %d %x %x \n",myname,nx,bufin[0],bufin[1]);*/ - } + } else if (nx<0) + perror("vde_plug: recvfrom "); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <rd...@us...> - 2014-02-10 21:41:46
|
Revision: 578 http://sourceforge.net/p/vde/svn/578 Author: rd235 Date: 2014-02-10 21:41:41 +0000 (Mon, 10 Feb 2014) Log Message: ----------- vxlan: some bugfix and ipv6 support (yet untested) Modified Paths: -------------- branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxlan.c Modified: branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxlan.c =================================================================== --- branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxlan.c 2014-02-10 08:42:37 UTC (rev 577) +++ branches/rd235/vde-2/src/lib/libvdeplug/libvdeplug_vxlan.c 2014-02-10 21:41:41 UTC (rev 578) @@ -128,9 +128,9 @@ hints.ai_family = AF_UNSPEC; /* Allow IPv4 or IPv6 */ hints.ai_socktype = SOCK_DGRAM; /* Datagram socket */ hints.ai_protocol = 0; /* Any protocol */ - sockname=strsep(&given_sockname,":/"); - vnistr=strsep(&given_sockname,":/"); - if ((portstr=strsep(&given_sockname,":/")) == NULL) + sockname=strsep(&given_sockname,"/"); + vnistr=strsep(&given_sockname,"/"); + if ((portstr=strsep(&given_sockname,"/")) == NULL) portstr=STDPORTSTR; s = getaddrinfo(sockname, portstr, &hints, &result); if (s < 0) { @@ -142,9 +142,39 @@ /* TODO scan the list of results */ for (rp = result; rp != NULL; rp = rp->ai_next) { switch (rp->ai_family) { - case AF_INET6: - // currently unsupported - continue; + case AF_INET6: { + struct sockaddr_in6 *addr=(struct sockaddr_in6 *)(rp->ai_addr); + struct ipv6_mreq mc_req; + multiaddr = (struct sockaddr *) addr; + struct sockaddr_in6 bindaddr; + int loop = 0; + + if ((multifd=socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP)) < 0) + goto error; + if ((setsockopt(multifd, IPPROTO_IPV6, IPV6_MULTICAST_HOPS, + &ttl, sizeof(ttl))) < 0) + goto error; + if ((setsockopt(multifd, IPPROTO_IPV6, IPV6_MULTICAST_LOOP, + &loop, sizeof(loop))) < 0) + goto error; + + memset(&bindaddr, 0, sizeof(bindaddr)); + bindaddr.sin6_family = AF_INET6; + memcpy(&bindaddr.sin6_addr, &in6addr_any, sizeof(in6addr_any)); + bindaddr.sin6_port = addr->sin6_port; + if ((bind(multifd, (struct sockaddr *) &bindaddr, + sizeof(bindaddr))) < 0) { + close(multifd); + multifd=-1; + continue; + } + memcpy(&mc_req.ipv6mr_multiaddr, &addr->sin6_addr, + sizeof(addr->sin6_addr)); + mc_req.ipv6mr_interface = 0; + if ((setsockopt(multifd, IPPROTO_IPV6, IPV6_ADD_MEMBERSHIP, + &mc_req, sizeof(mc_req))) < 0) + goto error; + } case AF_INET: { struct sockaddr_in *addr=(struct sockaddr_in *)(rp->ai_addr); struct ip_mreq mc_req; @@ -154,19 +184,13 @@ multifd=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if (multifd < 0) - return NULL; + goto error; if ((setsockopt(multifd, IPPROTO_IP, IP_MULTICAST_TTL, - &ttl, sizeof(ttl))) < 0) { - close(multifd); - multifd=-1; - return NULL; - } + &ttl, sizeof(ttl))) < 0) + goto error; if ((setsockopt(multifd, IPPROTO_IP, IP_MULTICAST_LOOP, - &loop, sizeof(loop))) < 0) { - close(multifd); - multifd=-1; - return NULL; - } + &loop, sizeof(loop))) < 0) + goto error; memset(&bindaddr, 0, sizeof(bindaddr)); bindaddr.sin_family = AF_INET; bindaddr.sin_addr.s_addr = htonl(INADDR_ANY); @@ -180,11 +204,8 @@ mc_req.imr_multiaddr.s_addr = addr->sin_addr.s_addr; mc_req.imr_interface.s_addr = htonl(INADDR_ANY); if ((setsockopt(multifd, IPPROTO_IP, IP_ADD_MEMBERSHIP, - &mc_req, sizeof(mc_req))) < 0) { - close(multifd); - multifd=-1; - return NULL; - } + &mc_req, sizeof(mc_req))) < 0) + goto error; } } } @@ -194,13 +215,12 @@ if ((newconn=calloc(1,sizeof(struct vde_vxlan_conn)))==NULL) { errno=ENOMEM; - close(multifd); - return NULL; + goto error; } newconn->module=&vdeplug_vxlan; newconn->hash_mask=STDHASHSIZE; - newconn->table=vx_hash_init(AF_INET, newconn->hash_mask); + newconn->table=vx_hash_init(AF_INET, newconn->hash_mask); newconn->vni=vnistr?atoi(vnistr):STDVNI; newconn->expiretime=STDEXPIRETIME; switch (multiaddr->sa_family) { @@ -213,6 +233,11 @@ } newconn->multifd=multifd; return (VDECONN *) newconn; + +error: + if (multifd >= 0) close(multifd); + if (newconn != NULL) free(newconn); + return NULL; } static ssize_t vde_vxlan_recv(VDECONN *conn,void *buf,size_t len,int flags) { @@ -234,17 +259,21 @@ msg.msg_iov=iov; msg.msg_iovlen=2; msg.msg_control=NULL; - msg.msg_control=0; + msg.msg_controllen=0; msg.msg_flags=0; - if (__builtin_expect(((retval=recvmsg(vde_conn->multifd, &msg, 0) - -sizeof(struct vxlan_hdr))>ETH_HEADER_SIZE), 1)) { + retval=recvmsg(vde_conn->multifd, &msg, 0)-sizeof(struct vxlan_hdr); + if (__builtin_expect((retval > ETH_HEADER_SIZE), 1)) { struct eth_hdr *ehdr=(struct eth_hdr *) buf; - if (vhdr.flags != (1<<0) || ntoh24(vhdr.id) != vde_conn->vni) + if (vhdr.flags != (1 << 3) || ntoh24(vhdr.id) != vde_conn->vni) + goto error; vx_find_in_hash_update(vde_conn->table, vde_conn->hash_mask, ehdr->src, 1, msg.msg_name, time(NULL)); return retval; } - return 0; +error: + errno = EAGAIN; + *((unsigned char *)buf)=0; + return 1; } static ssize_t vde_vxlan_send(VDECONN *conn,const void *buf, size_t len,int flags) { This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |