From: "Martin Hundebøll" <martin@hundeboll.net>
To: The list for a Better Approach To Mobile Ad-hoc Networking
<b.a.t.m.a.n@lists.open-mesh.org>
Subject: Re: [B.A.T.M.A.N.] problems while patching vde 2.3.2
Date: Mon, 24 Nov 2014 20:57:45 +0100 [thread overview]
Message-ID: <54738DB9.4070004@hundeboll.net> (raw)
In-Reply-To: <CAHmnjeAPeFU2oFyVM3=6H0R3_bu9EOV_3wRianjpHiqHHCwPvA@mail.gmail.com>
[-- Attachment #1: Type: text/plain, Size: 1084 bytes --]
A long time ago, I updated the patch to vde-2.3.2, and fortunately still
have it lying around...
Good luck!
// Martin
On 2014-11-24 19:18, Lucas Aimaretto wrote:
> Hi all,
>
> I'm trying to patch VDE just as suggested in [1] but I'm having
> trouble. I've downloaded VDE 2.3.2 from here [2] and the patches from
> here [1].
>
> I'm doing the following:
>
> lucas@test:~/batman-adv/
> script/vde$ tar zxvf vde2-2.3.2.tar.gz
> lucas@test:~/batman-adv/script/vde$ patch
> vde2-2.3.2/src/vde_switch/port.c < vde2-2.3.2_colour.patch
> patching file vde2-2.3.2/src/vde_switch/port.c
> patching file vde2-2.3.2/src/vde_switch/port.c
> Hunk #1 FAILED at 68.
> 1 out of 1 hunk FAILED -- saving rejects to file
> vde2-2.3.2/src/vde_switch/port.c.rej
>
> What is it that I'm doing wrong?
>
> Any hint is appreciated ...
>
> Regards!
>
> Lucas
>
> [1] - http://www.open-mesh.org/projects/open-mesh/wiki/Emulation
> [2] - http://sourceforge.net/projects/vde/files/vde2/2.3.2/
>
--
Kind Regards,
Martin Hundebøll
Frederiks Allé 99A, 1.th
8000 Aarhus C
+45 61 65 54 61
martin@hundeboll.net
[-- Attachment #2: vde2-2.3.2_colour.patch --]
[-- Type: text/x-patch, Size: 10236 bytes --]
diff -urp a/src/vde_switch/port.c b/src/vde_switch/port.c
--- a/src/vde_switch/port.c 2011-11-23 17:41:17.000000000 +0100
+++ b/src/vde_switch/port.c 2012-07-05 11:12:10.325671913 +0200
@@ -96,6 +96,7 @@ struct endpoint {
struct port {
struct endpoint *ep;
int flag;
+ int colour;
/* sender is already inside ms, but it needs one more memaccess */
int (*sender)(int fd_ctl, int fd_data, void *packet, int len, int port);
struct mod_support *ms;
@@ -153,6 +154,7 @@ static int alloc_port(unsigned int portn
EVENTOUT(DBGPORTNEW,i);
portv[i]=port;
+ port->colour=0;
port->ep=NULL;
port->user=port->group=port->curuser=-1;
#ifdef FSTP
@@ -589,12 +591,12 @@ void handle_in_packet(struct endpoint *e
register int i;
#ifndef VDE_PQ2
for(i = 1; i < numports; i++)
- if((i != port) && (portv[i] != NULL))
+ if((i != port) && (portv[i] != NULL) && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour))
SEND_PACKET_PORT(portv[i],i,packet,len);
#else
void *tmpbuf=NULL;
for(i = 1; i < numports; i++)
- if((i != port) && (portv[i] != NULL))
+ if((i != port) && (portv[i] != NULL) && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour))
SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbuf);
#endif
} else { /* This is a switch, not a HUB! */
@@ -639,35 +641,35 @@ void handle_in_packet(struct endpoint *e
register int i;
#ifndef VDE_PQ2
ba_FORALL(vlant[vlan].bctag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
packet=TAG2UNTAG(packet,len);
ba_FORALL(vlant[vlan].bcuntag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
#else
void *tmpbuft=NULL;
void *tmpbufu=NULL;
ba_FORALL(vlant[vlan].bctag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbuft);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbuft);}),i);
packet=TAG2UNTAG(packet,len);
ba_FORALL(vlant[vlan].bcuntag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbufu);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbufu);}),i);
#endif
} else { /* untagged */
register int i;
#ifndef VDE_PQ2
ba_FORALL(vlant[vlan].bcuntag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
packet=UNTAG2TAG(packet,vlan,len);
ba_FORALL(vlant[vlan].bctag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len);}),i);
#else
void *tmpbufu=NULL;
void *tmpbuft=NULL;
ba_FORALL(vlant[vlan].bcuntag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbufu);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbufu);}),i);
packet=UNTAG2TAG(packet,vlan,len);
ba_FORALL(vlant[vlan].bctag,numports,
- ({if (i != port) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbuft);}),i);
+ ({if (i != port && (!(pflag & COLOURFUL_TAG) || portv[i]->colour != portv[port]->colour)) SEND_PACKET_PORT(portv[i],i,packet,len,&tmpbuft);}),i);
#endif
}
}
@@ -679,35 +681,47 @@ void handle_in_packet(struct endpoint *e
#ifndef VDE_PQ2
if (tagged) {
if (portv[tarport]->vlanuntag==vlan) { /* TAG->UNTAG */
- packet = TAG2UNTAG(packet,len);
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour) {
+ packet = TAG2UNTAG(packet,len);
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ }
} else { /* TAG->TAG */
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour)
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
}
} else {
if (portv[tarport]->vlanuntag==vlan) { /* UNTAG->UNTAG */
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour)
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
} else { /* UNTAG->TAG */
- packet = UNTAG2TAG(packet,vlan,len);
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour) {
+ packet = UNTAG2TAG(packet,vlan,len);
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len);
+ }
}
}
#else
if (tagged) {
void *tmpbuf=NULL;
if (portv[tarport]->vlanuntag==vlan) { /* TAG->UNTAG */
- packet = TAG2UNTAG(packet,len);
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour) {
+ packet = TAG2UNTAG(packet,len);
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ }
} else { /* TAG->TAG */
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour)
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
}
} else {
void *tmpbuf=NULL;
if (portv[tarport]->vlanuntag==vlan) { /* UNTAG->UNTAG */
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour)
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
} else { /* UNTAG->TAG */
- packet = UNTAG2TAG(packet,vlan,len);
- SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ if (!(pflag & COLOURFUL_TAG) || portv[tarport]->colour != portv[port]->colour) {
+ packet = UNTAG2TAG(packet,vlan,len);
+ SEND_PACKET_PORT(portv[tarport],tarport,packet,len,&tmpbuf);
+ }
}
}
#endif
@@ -722,6 +736,7 @@ static int showinfo(FILE *fd)
{
printoutc(fd,"Numports=%d",numports);
printoutc(fd,"HUB=%s",(pflag & HUB_TAG)?"true":"false");
+ printoutc(fd,"COLOURFUL=%s",(pflag & COLOURFUL_TAG)?"true":"false");
#ifdef PORTCOUNTERS
printoutc(fd,"counters=true");
#else
@@ -921,6 +936,19 @@ static int epqlen(char *arg)
}
#endif
+static int portsetcolour(char *arg)
+{
+ int port,colour;
+ if (sscanf(arg,"%i %i",&port,&colour) != 2)
+ return EINVAL;
+ if (port < 0 || port >= numports)
+ return EINVAL;
+ if (portv[port] == NULL)
+ return ENXIO;
+ portv[port]->colour= colour;
+ return 0;
+}
+
static char *port_getuser(uid_t uid)
{
static char buf[6];
@@ -971,6 +999,7 @@ static int print_port(FILE *fd,int i,int
printoutc(fd," IN: pkts %10lld bytes %20lld",portv[i]->pktsin,portv[i]->bytesin);
printoutc(fd," OUT: pkts %10lld bytes %20lld",portv[i]->pktsout,portv[i]->bytesout);
#endif
+ printoutc(fd," colour: %10d",portv[i]->colour);
for (ep=portv[i]->ep; ep != NULL; ep=ep->next) {
printoutc(fd," -- endpoint ID %04d module %-12s: %s",ep->fd_ctl,
portv[i]->ms->modname,(ep->descr)?ep->descr:"no endpoint description");
@@ -1053,12 +1082,21 @@ static int portsethub(int val)
#ifdef FSTP
fstpshutdown();
#endif
- portflag(P_SETFLAG,HUB_TAG);
+ portflag(P_ADDFLAG,HUB_TAG);
} else
portflag(P_CLRFLAG,HUB_TAG);
return 0;
}
+static int portsetcolourful(int val)
+{
+ if (val) {
+ portflag(P_ADDFLAG,COLOURFUL_TAG);
+ } else
+ portflag(P_CLRFLAG,COLOURFUL_TAG);
+ return 0;
+}
+
static int portsetvlan(char *arg)
{
int port,vlan;
@@ -1339,6 +1377,7 @@ static struct comlist cl[]={
{"port/setnumports","N","set the number of ports",portsetnumports,INTARG},
/*{"port/setmacaddr","MAC","set the switch MAC address",setmacaddr,STRARG},*/
{"port/sethub","0/1","1=HUB 0=switch",portsethub,INTARG},
+ {"port/setcolourful","0/1","1=colourful 0=no colour",portsetcolourful,INTARG},
{"port/setvlan","N VLAN","set port VLAN (untagged)",portsetvlan,STRARG},
{"port/createauto","","create a port with an automatically allocated id (inactive|notallocatable)",portcreateauto,NOARG|WITHFILE},
{"port/create","N","create the port N (inactive|notallocatable)",portcreate,INTARG},
@@ -1346,6 +1385,7 @@ static struct comlist cl[]={
{"port/allocatable","N 0/1","Is the port allocatable as unnamed? 1=Y 0=N",portallocatable,STRARG},
{"port/setuser","N user","access control: set user",portsetuser,STRARG},
{"port/setgroup","N user","access control: set group",portsetgroup,STRARG},
+ {"port/setcolour","N COLOUR","change colour of port",portsetcolour,STRARG},
{"port/epclose","N ID","remove the endpoint port N/id ID",epclose,STRARG},
#ifdef VDE_PQ2
{"port/defqlen","LEN","set the default queue length for new ports",defqlen,INTARG},
diff -urp a/src/vde_switch/port.h b/src/vde_switch/port.h
--- a/src/vde_switch/port.h 2011-11-23 17:41:17.000000000 +0100
+++ b/src/vde_switch/port.h 2012-07-05 01:58:39.788912257 +0200
@@ -20,7 +20,7 @@ struct ethheader {
struct packet {
struct ethheader header;
- unsigned char data[1504]; /*including trailer, IF ANY */
+ unsigned char data[1604]; /*including trailer, IF ANY */
};
struct bipacket {
@@ -68,6 +68,7 @@ int portflag(int op, int f);
#define P_CLRFLAG 3
#define HUB_TAG 0x1
+#define COLOURFUL_TAG 0x2
void port_init(int numports);
prev parent reply other threads:[~2014-11-24 19:57 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-24 18:18 [B.A.T.M.A.N.] problems while patching vde 2.3.2 Lucas Aimaretto
2014-11-24 18:23 ` Antonio Quartulli
2014-11-24 20:11 ` Antonio Quartulli
2014-11-25 13:28 ` Lucas Aimaretto
2014-11-24 19:57 ` Martin Hundebøll [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=54738DB9.4070004@hundeboll.net \
--to=martin@hundeboll.net \
--cc=b.a.t.m.a.n@lists.open-mesh.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.