Dolda2000 GitWeb
/
mctap.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (from parent 1:
3cb771e
)
Added daemonization and syslogging.
author
Fredrik Tolf
<fredrik@dolda2000.com>
Sat, 9 Aug 2008 18:45:15 +0000
(20:45 +0200)
committer
Fredrik Tolf
<fredrik@dolda2000.com>
Sat, 9 Aug 2008 18:45:15 +0000
(20:45 +0200)
src/mctap.c
patch
|
blob
|
blame
|
history
diff --git
a/src/mctap.c
b/src/mctap.c
index
2bec00f
..
842a9d6
100644
(file)
--- a/
src/mctap.c
+++ b/
src/mctap.c
@@
-11,12
+11,13
@@
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/poll.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <sys/poll.h>
+#include <syslog.h>
#include "utils.h"
static void usage(FILE *out)
{
#include "utils.h"
static void usage(FILE *out)
{
- fprintf(out, "usage: mctap [-h] [-D TAPNAME] MCASTGROUP PORT\n");
+ fprintf(out, "usage: mctap [-h
d
] [-D TAPNAME] MCASTGROUP PORT\n");
}
static __attribute__ ((unused)) char *formataddress(struct sockaddr *arg, socklen_t arglen)
}
static __attribute__ ((unused)) char *formataddress(struct sockaddr *arg, socklen_t arglen)
@@
-126,7
+127,7
@@
static void bridge(int sock, int tap, struct sockaddr *dst, socklen_t dstlen)
ret = poll(pfds, 2, -1);
if(ret < 0) {
if(errno != EINTR) {
ret = poll(pfds, 2, -1);
if(ret < 0) {
if(errno != EINTR) {
-
fprintf(stderr, "mctap: poll: %s\n
", strerror(errno));
+
syslog(LOG_ERR, "mctap: poll: %s
", strerror(errno));
exit(1);
}
continue;
exit(1);
}
continue;
@@
-135,7
+136,7
@@
static void bridge(int sock, int tap, struct sockaddr *dst, socklen_t dstlen)
ret = read(sock, buf, sizeof(buf));
if(ret < 0) {
if((errno != EINTR) && (errno != EAGAIN)) {
ret = read(sock, buf, sizeof(buf));
if(ret < 0) {
if((errno != EINTR) && (errno != EAGAIN)) {
-
fprintf(stderr, "mctap: mcast packet: %s\n
", strerror(errno));
+
syslog(LOG_ERR, "mctap: mcast packet: %s
", strerror(errno));
exit(1);
}
} else {
exit(1);
}
} else {
@@
-154,7
+155,7
@@
static void bridge(int sock, int tap, struct sockaddr *dst, socklen_t dstlen)
ret = read(tap, buf, sizeof(buf));
if(ret < 0) {
if((errno != EINTR) && (errno != EAGAIN)) {
ret = read(tap, buf, sizeof(buf));
if(ret < 0) {
if((errno != EINTR) && (errno != EAGAIN)) {
-
fprintf(stderr, "mctap: mcast packet: %s\n
", strerror(errno));
+
syslog(LOG_ERR, "mctap: mcast packet: %s
", strerror(errno));
exit(1);
}
} else {
exit(1);
}
} else {
@@
-195,14
+196,19
@@
int main(int argc, char **argv)
struct in_addr group;
int port;
char *tapname;
struct in_addr group;
int port;
char *tapname;
+ int daemonize;
struct sockaddr_in dst;
tapname = "mctap";
struct sockaddr_in dst;
tapname = "mctap";
- while((c = getopt(argc, argv, "hD:")) >= 0) {
+ daemonize = 0;
+ while((c = getopt(argc, argv, "hD:d")) >= 0) {
switch(c) {
case 'D':
tapname = optarg;
break;
switch(c) {
case 'D':
tapname = optarg;
break;
+ case 'd':
+ daemonize = 1;
+ break;
case 'h':
usage(stdout);
return(0);
case 'h':
usage(stdout);
return(0);
@@
-228,6
+234,10
@@
int main(int argc, char **argv)
fprintf(stderr, "mctap: could not create TAP device: %s\n", strerror(errno));
exit(1);
}
fprintf(stderr, "mctap: could not create TAP device: %s\n", strerror(errno));
exit(1);
}
+ openlog(sprintf2("mctap-%s", tapname), LOG_PID, LOG_DAEMON);
+
+ if(daemonize)
+ daemon(0, 0);
memset(&dst, 0, sizeof(dst));
dst.sin_family = AF_INET;
memset(&dst, 0, sizeof(dst));
dst.sin_family = AF_INET;