101 lines
1.9 KiB
C
101 lines
1.9 KiB
C
#include "./include/iptrans.h"
|
|
|
|
|
|
|
|
extern void iptrans_timer();
|
|
|
|
/*@ignore@*/
|
|
void init_timer_interrupt(void)
|
|
{
|
|
struct sigaction newact;
|
|
newact.sa_handler =iptrans_timer;
|
|
newact.sa_flags =0;
|
|
sigemptyset(&newact.sa_mask);
|
|
sigaction(SIGALRM,&newact,NULL);
|
|
}
|
|
|
|
void setup_interval_timer(void)
|
|
{
|
|
struct itimerval value;
|
|
value.it_interval.tv_sec =0;
|
|
value.it_interval.tv_usec =10*1000;
|
|
value.it_value.tv_sec = 0;
|
|
value.it_value.tv_usec = 10*1000;
|
|
setitimer(ITIMER_REAL,&value,NULL);
|
|
}
|
|
|
|
void init_timer()
|
|
{
|
|
init_timer_interrupt();
|
|
setup_interval_timer();
|
|
}
|
|
|
|
void interrupt_handler(int signo)
|
|
{
|
|
CloseTcpConn();
|
|
}
|
|
|
|
int initSystem()
|
|
{
|
|
struct sigaction act;
|
|
|
|
//close(0);
|
|
//close(1);
|
|
//close(2);
|
|
act.sa_handler = interrupt_handler;
|
|
sigemptyset(&act.sa_mask);
|
|
act.sa_flags = 0;
|
|
if(sigaction(SIGPIPE,&act,NULL)<0)
|
|
fprintf(stderr,"set signal failed\n");
|
|
|
|
system("sysctl -w net.ipv4.tcp_keepalive_time=20");
|
|
system("sysctl -w net.ipv4.tcp_keepalive_probes=2");
|
|
|
|
return 1;
|
|
}
|
|
|
|
int
|
|
main(int argc, char *argv[])
|
|
{
|
|
|
|
int err_flag = FALSE;
|
|
int test_mode = FALSE;
|
|
int ret;
|
|
SetDebugFlag();
|
|
|
|
/*
|
|
** Get option from command line.
|
|
** option 'd' is enable to run program with daemon mode.
|
|
*/
|
|
while ((ret = getopt(argc, argv, "dt")) != -1)
|
|
switch (ret)
|
|
{
|
|
case 'd':
|
|
/* Set daemon mode and open a syslog */
|
|
DaemonInit("IPTRANS", LOG_USER);
|
|
break;
|
|
case 't':
|
|
test_mode = TRUE; /* test mode: bind port 4950 to recvfrom */
|
|
break;
|
|
case '?':
|
|
err_flag = TRUE;
|
|
}
|
|
if (err_flag) {
|
|
log_msg("Usage: %s -d -t \n", argv[0]);
|
|
log_msg(" -d with daemon mode");
|
|
log_msg(" -t with test mode");
|
|
exit(1);
|
|
}
|
|
|
|
debug_init();
|
|
initSystem();
|
|
iptrMainInit();
|
|
init_timer();
|
|
|
|
while(1){
|
|
usleep(1);
|
|
}
|
|
exit(0);
|
|
}
|
|
/*@end@*/
|