--- br2684ctl.c +++ br2684ctl.c @@ -3,6 +3,8 @@ #include #include #include +#include +#include #include #include #include @@ -22,9 +24,9 @@ */ -#define LOG_NAME "RFC1483/2684 bridge" -#define LOG_OPTION LOG_PERROR -#define LOG_FACILITY LOG_LOCAL0 +#define LOG_NAME "br2684ctl" +#define LOG_OPTION LOG_PERROR|LOG_PID +#define LOG_FACILITY LOG_LOCAL2 int lastsock, lastitf; @@ -39,10 +41,16 @@ void fatal(const char *str, int i) void exitFunc(void) { - syslog (LOG_PID,"Daemon terminated\n"); + syslog (LOG_NOTICE,"Daemon terminated\n"); } +void int_signal(int dummy) +{ + syslog (LOG_INFO,"Killed by a signal\n"); + exit(0); +} + int create_pidfile(int num) { FILE *pidfile = NULL; @@ -80,7 +88,7 @@ int create_br(char *nstr) err=ioctl (lastsock, ATM_NEWBACKENDIF, &ni); if (err == 0) - syslog(LOG_INFO, "Interface \"%s\" created sucessfully\n",ni.ifname); + syslog(LOG_NOTICE, "Interface \"%s\" created sucessfully\n",ni.ifname); else syslog(LOG_INFO, "Interface \"%s\" could not be created, reason: %s\n", ni.ifname, @@ -112,7 +120,7 @@ int assign_vcc(char *astr, int encap, in addr.sap_addr.vpi = 0; addr.sap_addr.vci = vci; #endif - syslog(LOG_INFO,"Communicating over ATM %d.%d.%d, encapsulation: %s\n", addr.sap_addr.itf, + syslog(LOG_NOTICE,"Communicating over ATM %d.%d.%d, encapsulation: %s\n", addr.sap_addr.itf, addr.sap_addr.vpi, addr.sap_addr.vci, encap?"VC mux":"LLC"); @@ -261,11 +269,13 @@ int main (int argc, char **argv) } create_pidfile(itfnum); + signal(SIGINT, int_signal); + signal(SIGTERM, int_signal); syslog (LOG_INFO, "RFC 1483/2684 bridge daemon started\n"); atexit (exitFunc); - while (1) sleep(30); /* to keep the sockets... */ + while (1) pause(); /* to keep the sockets... */ return 0; } --- /dev/null +++ Makefile @@ -0,0 +1,13 @@ +OPTS := -O2 +CFLAGS := -Wall -g +LIBS := -latm + +all: br2684ctl + +br2684ctl: br2684ctl.c + $(CC) $(OPTS) $(CFLAGS) $(LIBS) $< -o $@ + +distclean: clean +clean: + rm -f br2684ctl +