Revision: 481
http://vde.svn.sourceforge.net/vde/?rev=481&view=rev
Author: rd235
Date: 2011-03-27 20:53:56 +0000 (Sun, 27 Mar 2011)
Log Message:
-----------
step two point five: propagate modifications to kvde_switch, handle_input
becomes handle_io
Modified Paths:
--------------
branches/rd235/vde-2/src/dpipe.c
branches/rd235/vde-2/src/kvde_switch/consmgmt.c
branches/rd235/vde-2/src/kvde_switch/datasock.c
branches/rd235/vde-2/src/kvde_switch/kvde_switch.c
branches/rd235/vde-2/src/vde_switch/consmgmt.c
branches/rd235/vde-2/src/vde_switch/datasock.c
branches/rd235/vde-2/src/vde_switch/switch.h
branches/rd235/vde-2/src/vde_switch/tuntap.c
branches/rd235/vde-2/src/vde_switch/vde_switch.c
Modified: branches/rd235/vde-2/src/dpipe.c
===================================================================
--- branches/rd235/vde-2/src/dpipe.c 2011-03-27 09:07:52 UTC (rev 480)
+++ branches/rd235/vde-2/src/dpipe.c 2011-03-27 20:53:56 UTC (rev 481)
@@ -114,7 +114,7 @@
close(p1[0]);
break;
default:
- fprintf(stderr,"CHECA\n");
+ fprintf(stderr,"Error\n");
}
execvp(argv1[0],argv1);
} else {
@@ -136,7 +136,7 @@
close(p1[1]);
break;
default:
- fprintf(stderr,"CHECA\n");
+ fprintf(stderr,"Error\n");
}
recmain(argc-split-1,argv2,newdirchar);
}
@@ -151,11 +151,72 @@
char **argv1,**argv2;
int p1[2],p2[2];
int dirchar=0;
+ int daemonize=0;
+ char *pidfile=NULL;
+ int pgrp;
+ int argflag;
+ int err=0;
progname=argv[0];
argv++;
argc--;
+ do {
+ argflag=0;
+ if (argv[0] && *argv[0] == '-') {
+ argflag++;
+ argv[0]++;
+ if (*argv[0] == '-') {
+ argv[0]++;
+ if (strcmp(argv[0],"daemon") == 0)
+ daemonize = 1;
+ else if (strcmp(argv[0],"pidfile") == 0) {
+ pidfile = argv[argflag];
+ argflag++;
+ } else {
+ fprintf(stderr,"unknown option
--%s\n",argv[0]);
+ err++;
+ }
+ } else {
+ while (*argv[0] != 0) {
+ switch (*argv[0]) {
+ case 0: break;
+ case 'd': daemonize = 1; break;
+ case 'p': pidfile =
argv[argflag];
+
argflag++;
+
break;
+ default:
fprintf(stderr,"unknown option -%c\n",*argv[0]);
+
err++;
+ }
+ if (*argv[0] != 0) argv[0]++;
+ }
+ }
+ argv += argflag;
+ argc -= argflag;
+ }
+ } while (argflag);
+
+ if (err)
+ exit(1);
+
+ if (setpgrp() == 0)
+ pgrp = getpgrp();
+ else {
+ fprintf(stderr,"Err: cannot create pgrp\n");
+ exit(1);
+ }
+
+ if (daemonize != 0)
+ daemon(0,0);
+
+ if (pidfile != NULL) {
+ FILE *f=fopen(pidfile, "w");
+ if (f != NULL) {
+ fprintf(f,"-%d\n",pgrp);
+ fclose(f);
+ }
+ }
+
alternate_fd();
split=splitindex(argc,argv,&dirchar);
Modified: branches/rd235/vde-2/src/kvde_switch/consmgmt.c
===================================================================
--- branches/rd235/vde-2/src/kvde_switch/consmgmt.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/kvde_switch/consmgmt.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -381,7 +381,7 @@
return;
}
- add_fd(new,mgmt_data,-1);
+ add_fd(new,mgmt_data,NULL);
EVENTOUT(MGMTPORTNEW,new);
snprintf(buf,MAXCMD,header,PACKAGE_VERSION);
write(new,buf,strlen(buf));
@@ -392,7 +392,7 @@
static int debugdel(int fd,char *arg);
#endif
static char *EOS="9999 END OF SESSION";
-static void handle_input(unsigned char type,int fd,int revents,int *unused)
+static void handle_io(unsigned char type,int fd,int revents,void *unused)
{
char buf[MAXCMD];
if (type != mgmt_ctl) {
@@ -451,7 +451,7 @@
return;
}
- add_fd(new,mgmt_data,-1);
+ add_fd(new,mgmt_data,NULL);
EVENTOUT(MGMTPORTNEW,new);
snprintf(buf,MAXCMD,header,PACKAGE_VERSION);
write(new,buf,strlen(buf));
@@ -489,7 +489,7 @@
fclose(f);
}
-static void cleanup(unsigned char type,int fd,int arg)
+static void cleanup(unsigned char type,int fd,void *unused)
{
if (fd < 0) {
if((pidfile != NULL) && unlink(pidfile_path) < 0) {
@@ -570,7 +570,7 @@
if(isatty(0) && !daemonize)
{
console_type=add_type(&swmi,0);
- add_fd(0,console_type,-1);
+ add_fd(0,console_type,NULL);
}
/* saves current path in pidfile_path, because otherwise with
daemonize() we
@@ -623,7 +623,7 @@
}
mgmt_ctl=add_type(&swmi,0);
mgmt_data=add_type(&swmi,0);
- add_fd(mgmtconnfd,mgmt_ctl,-1);
+ add_fd(mgmtconnfd,mgmt_ctl,NULL);
}
}
@@ -867,7 +867,7 @@
swmi.usage=usage;
swmi.parseopt=parseopt;
swmi.init=init;
- swmi.handle_input=handle_input;
+ swmi.handle_io=handle_io;
swmi.cleanup=cleanup;
ADDCL(cl);
#ifdef DEBUGOPT
Modified: branches/rd235/vde-2/src/kvde_switch/datasock.c
===================================================================
--- branches/rd235/vde-2/src/kvde_switch/datasock.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/kvde_switch/datasock.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -48,12 +48,12 @@
#define MODULENAME "kernel module interface"
-static void handle_input(unsigned char type,int fd,int revents,int *arg)
+static void handle_io(unsigned char type,int fd,int revents,void *arg)
{
/*here OOB messages will be delivered for debug options */
}
-static void cleanup(unsigned char type,int fd,int arg)
+static void cleanup(unsigned char type,int fd,void *unused)
{
unlink(ctl_socket);
}
@@ -215,7 +215,7 @@
exit(1);
}
runextinterfaces(&sun);
- add_fd(kvdefd,ctl_type,-1);
+ add_fd(kvdefd,ctl_type,NULL);
}
static int showinfo(FILE *fd)
@@ -247,7 +247,7 @@
swmi.usage=usage;
swmi.parseopt=parseopt;
swmi.init=init;
- swmi.handle_input=handle_input;
+ swmi.handle_io=handle_io;
swmi.cleanup=cleanup;
ADDCL(cl);
add_swm(&swmi);
Modified: branches/rd235/vde-2/src/kvde_switch/kvde_switch.c
===================================================================
--- branches/rd235/vde-2/src/kvde_switch/kvde_switch.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/kvde_switch/kvde_switch.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -79,7 +79,7 @@
/* FD MGMT */
struct pollplus {
unsigned char type;
- int arg;
+ void *private_data;
time_t timestamp;
};
@@ -131,7 +131,7 @@
ntypes--;
}
-void add_fd(int fd,unsigned char type,int arg)
+void add_fd(int fd,unsigned char type,void *private_data)
{
struct pollfd *p;
int index;
@@ -162,7 +162,7 @@
p->fd = fd;
p->events = POLLIN | POLLHUP;
fdpp[index]->type=type;
- fdpp[index]->arg=arg;
+ fdpp[index]->private_data=private_data;
nfds++;
}
@@ -170,7 +170,7 @@
{
register int i;
for(i = 0; i < nfds; i++)
-
TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->arg);
+
TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->private_data);
}
void remove_fd(int fd)
@@ -184,7 +184,7 @@
printlog(LOG_WARNING,"remove_fd : Couldn't find descriptor %d",
fd);
} else {
struct pollplus *old=fdpp[i];
-
TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->arg);
+
TYPE2MGR(fdpp[i]->type)->cleanup(fdpp[i]->type,fds[i].fd,fdpp[i]->private_data);
if (ISPRIO(fdpp[i]->type)) nprio--;
memmove(&fds[i], &fds[i + 1], (maxfds - i - 1) * sizeof(struct
pollfd));
memmove(&fdpp[i], &fdpp[i + 1], (maxfds - i - 1) *
sizeof(struct pollplus *));
@@ -209,7 +209,7 @@
register int prenfds=nfds;
n--;
fdpp[i]->timestamp=now;
-
TYPE2MGR(fdpp[i]->type)->handle_input(fdpp[i]->type,fds[i].fd,fds[i].revents,&(fdpp[i]->arg));
+
TYPE2MGR(fdpp[i]->type)->handle_io(fdpp[i]->type,fds[i].fd,fds[i].revents,fdpp[i]->private_data);
if (nfds!=prenfds) /* the current fd
has been deleted */
break; /* PERFORMANCE it is
faster returning to poll */
}
@@ -375,7 +375,7 @@
file_cleanup();
for(swmp=swmh;swmp != NULL;swmp=swmp->next)
if (swmp->cleanup != NULL)
- swmp->cleanup(0,-1,-1);
+ swmp->cleanup(0,-1,NULL);
}
static void sig_handler(int sig)
Modified: branches/rd235/vde-2/src/vde_switch/consmgmt.c
===================================================================
--- branches/rd235/vde-2/src/vde_switch/consmgmt.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/vde_switch/consmgmt.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -381,7 +381,7 @@
static int debugdel(int fd,char *arg);
#endif
static char *EOS="9999 END OF SESSION";
-static void handle_input(unsigned char type,int fd,int revents,void
*private_data)
+static void handle_io(unsigned char type,int fd,int revents,void *private_data)
{
char buf[MAXCMD];
if (type != mgmt_ctl) {
@@ -942,7 +942,7 @@
swmi.usage=usage;
swmi.parseopt=parseopt;
swmi.init=init;
- swmi.handle_input=handle_input;
+ swmi.handle_io=handle_io;
swmi.cleanup=cleanup;
ADDCL(cl);
#ifdef DEBUGOPT
Modified: branches/rd235/vde-2/src/vde_switch/datasock.c
===================================================================
--- branches/rd235/vde-2/src/vde_switch/datasock.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/vde_switch/datasock.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -205,7 +205,7 @@
}
}
-static void handle_input(unsigned char type,int fd,int revents,void *arg)
+static void handle_io(unsigned char type,int fd,int revents,void *arg)
{
struct endpoint *ep=arg;
if (type == data_type) {
@@ -504,7 +504,7 @@
swmi.usage=usage;
swmi.parseopt=parseopt;
swmi.init=init;
- swmi.handle_input=handle_input;
+ swmi.handle_io=handle_io;
swmi.cleanup=cleanup;
modfun.sender=send_datasock;
modfun.delep=delep;
Modified: branches/rd235/vde-2/src/vde_switch/switch.h
===================================================================
--- branches/rd235/vde-2/src/vde_switch/switch.h 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/vde_switch/switch.h 2011-03-27 20:53:56 UTC
(rev 481)
@@ -36,7 +36,7 @@
void (*usage)(void); /* usage function: command line opts explanation */
int (*parseopt)(int parm,char *optarg); /* parse getopt output */
void (*init)(void); /* init */
- void (*handle_input)(unsigned char type,int fd,int revents,void
*private_data); /* handle input */
+ void (*handle_io)(unsigned char type,int fd,int revents,void
*private_data); /* handle input */
void (*cleanup)(unsigned char type,int fd,void *private_data);
/*cleanup for files or final if fd == -1 */
struct swmodule *next;
};
Modified: branches/rd235/vde-2/src/vde_switch/tuntap.c
===================================================================
--- branches/rd235/vde-2/src/vde_switch/tuntap.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/vde_switch/tuntap.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -71,7 +71,7 @@
return 0;
}
-static void handle_input(unsigned char type,int fd,int revents,void
*private_data)
+static void handle_io(unsigned char type,int fd,int revents,void *private_data)
{
struct endpoint *ep=private_data;
struct bipacket packet;
@@ -252,7 +252,7 @@
swmi.usage=usage;
swmi.parseopt=parseopt;
swmi.init=init;
- swmi.handle_input=handle_input;
+ swmi.handle_io=handle_io;
swmi.cleanup=cleanup;
modfun.sender=send_tap;
modfun.delep=delep;
Modified: branches/rd235/vde-2/src/vde_switch/vde_switch.c
===================================================================
--- branches/rd235/vde-2/src/vde_switch/vde_switch.c 2011-03-27 09:07:52 UTC
(rev 480)
+++ branches/rd235/vde-2/src/vde_switch/vde_switch.c 2011-03-27 20:53:56 UTC
(rev 481)
@@ -278,7 +278,7 @@
register int prenfds=nfds;
n--;
fdpp[i]->timestamp=now;
-
TYPE2MGR(fdpp[i]->type)->handle_input(fdpp[i]->type,fds[i].fd,fds[i].revents,fdpp[i]->private_data);
+
TYPE2MGR(fdpp[i]->type)->handle_io(fdpp[i]->type,fds[i].fd,fds[i].revents,fdpp[i]->private_data);
if (nfds!=prenfds) /* the current fd
has been deleted */
break; /* PERFORMANCE it is
faster returning to poll */
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Enable your software for Intel(R) Active Management Technology to meet the
growing manageability and security demands of your customers. Businesses
are taking advantage of Intel(R) vPro (TM) technology - will your software
be a part of the solution? Download the Intel(R) Manageability Checker
today! http://p.sf.net/sfu/intel-dev2devmar
_______________________________________________
vde-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/vde-users