Clean up unused variables.
[vde.git] / vde-2 / src / vde_switch / plugins / dump.c
blob09d04e222741a77a38f0e0a417d4fd86a199d1f8
1 #define _GNU_SOURCE
3 #include <stdio.h>
4 #include <stdlib.h>
6 #include <config.h>
7 #include <vde.h>
8 #include <vdecommon.h>
10 #include <vdeplugin.h>
13 static int testevent(struct dbgcl *tag,void *arg,va_list v);
14 static int dump(char *arg);
16 struct plugin vde_plugin_data={
17 .name="dump",
18 .help="dump packets",
21 static struct comlist cl[]={
22 {"dump","============","DUMP Packets",NULL,NOARG},
23 {"dump/active","0/1","start dumping data",dump,STRARG},
26 #define D_DUMP 0100
27 static struct dbgcl dl[]= {
28 {"dump/packetin","dump incoming packet",D_DUMP|D_IN},
29 {"dump/packetout","dump outgoing packet",D_DUMP|D_OUT},
32 static int dump(char *arg)
34 int active=atoi(arg);
35 if (active)
36 eventadd(testevent,"packet",dl);
37 else
38 eventdel(testevent,"packet",dl);
39 return 0;
42 static int testevent(struct dbgcl *event,void *arg,va_list v)
44 struct dbgcl *this=arg;
45 switch (event->tag) {
46 case D_PACKET|D_OUT:
47 this++;
48 case D_PACKET|D_IN:
50 int port=va_arg(v,int);
51 unsigned char *buf=va_arg(v,unsigned char *);
52 int len=va_arg(v,int);
53 char *pktdump;
54 size_t dumplen;
55 FILE *out=open_memstream(&pktdump,&dumplen);
56 if (out) {
57 int i;
58 fprintf(out,"Pkt: Port %04d len=%04d ",
59 port,
60 len);
61 for (i=0;i<len;i++)
62 fprintf(out,"%02x ",buf[i]);
63 fclose(out);
64 DBGOUT(this, "%s",pktdump);
65 free(pktdump);
69 return 0;
72 static void
73 __attribute__ ((constructor))
74 init (void)
76 ADDCL(cl);
77 ADDDBGCL(dl);
80 static void
81 __attribute__ ((destructor))
82 fini (void)
84 DELCL(cl);
85 DELDBGCL(dl);