Vanilla Development Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
CVS update: Vanilla/newstartd
Date: Monday February 28, 19100 @ 20:51
Author: karthik
Update of /home/netrek/cvsroot/Vanilla/newstartd
In directory swashbuckler.fortress.real-time.com:/var/tmp/cvs-serv3695/newstartd
Modified Files:
newstartd.c
Log Message:
Added IP binding support to newstartd.
****************************************
Index: Vanilla/newstartd/newstartd.c
diff -u Vanilla/newstartd/newstartd.c:1.17 Vanilla/newstartd/newstartd.c:1.18
--- Vanilla/newstartd/newstartd.c:1.17 Sun Feb 20 07:36:16 2000
+++ Vanilla/newstartd/newstartd.c Mon Feb 28 20:51:05 2000
@@ -1,7 +1,7 @@
-/* $Id: newstartd.c,v 1.17 2000/02/20 13:36:16 jeffno Exp $ */
+/* $Id: newstartd.c,v 1.18 2000/02/29 02:51:05 karthik Exp $ */
#ifndef lint
-static char vcid[] = "$Id: newstartd.c,v 1.17 2000/02/20 13:36:16 jeffno Exp $";
+static char vcid[] = "$Id: newstartd.c,v 1.18 2000/02/29 02:51:05 karthik Exp $";
#endif /* lint */
/*
@@ -98,6 +98,7 @@
int accepts; /* count of accept() calls */
int denials; /* count of deny() calls */
int forks; /* count of fork() calls */
+ unsigned long addr; /* address to bind() to */
} prog[MAXPROG];
extern char peerhostname[]; /* defined in newaccess.c */
@@ -400,7 +401,7 @@
}
addr.sin_family = AF_INET;
- addr.sin_addr.s_addr = INADDR_ANY;
+ addr.sin_addr.s_addr = prog[i].addr;
addr.sin_port = htons (prog[i].port);
if (bind (sock, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
@@ -645,22 +646,35 @@
int read_portfile (char *portfile)
{
FILE *fi;
- char buf[BUFSIZ];
- int i = 0, p, n;
+ char buf[BUFSIZ], addrbuf[BUFSIZ], *port;
+ int i = 0, n;
struct stat sbuf;
fi = fopen (portfile, "r");
if (fi) {
while (fgets (buf, BUFSIZ, fi)) {
- if ((n = sscanf (buf, "%d %s \"%[^\"]\" %s %s %s %s", &p,
+ if (buf[0] == '#')
+ continue;
+ if ((n = sscanf (buf, "%s %s \"%[^\"]\" %s %s %s %s",
+ addrbuf,
prog[i].prog,
prog[i].progname,
prog[i].arg[0],
prog[i].arg[1],
prog[i].arg[2],
prog[i].arg[3])) >= 3) {
+ if (!(port = strchr(addrbuf, ':')))
+ {
+ prog[i].addr = INADDR_ANY;
+ prog[i].port = atoi(addrbuf);
+ }
+ else
+ {
+ *port++ = '\0';
+ prog[i].addr = inet_addr(addrbuf);
+ prog[i].port = atoi(port);
+ };
prog[i].nargs = n-3;
- prog[i].port = (unsigned short) p;
prog[i].sock = -1;
prog[i].internal = (!strcmp (prog[i].prog, "special"));
prog[i].accepts = 0;