opengate server
module for communication with java
-Copyright (C) 1999-2001 Yoshiaki Watanabe
+Copyright (C) 1999 Yoshiaki Watanabe
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
{
struct sockaddr_in servaddr;
int portNo;
+ int portmin;
+ int portmax;
listenfd=Socket(AF_INET, SOCK_STREAM, 0);
servaddr.sin_family=AF_INET;
servaddr.sin_addr.s_addr=htonl(INADDR_ANY);
+ /* get port range from config file */
+ portmin=GetPortMin();
+ portmax=GetPortMax();
+
/* search unused port between PORTMIN and PORTMAX */
- for(portNo=PORTMIN; portNo<=PORTMAX; portNo++){
+ for(portNo=portmin; portNo<=portmax; portNo++){
servaddr.sin_port=htons(portNo);
if(bind(listenfd, (SA *)&servaddr, sizeof(servaddr))==0)break;
}
- if(portNo>PORTMAX)portNo=-1; /* cannot get unused port */
+ if(portNo>portmax)portNo=-1; /* cannot get unused port */
Listen(listenfd, LISTENQ);
int connect; /* java cconnect success(1) or not */
char connectAddr[ADDRMAXLN]; /* connected client address */
char httpStr[BUFFMAXLN]; /* HTTP GET string at terminate */
- int checkInterval=ACTIVECHECKINTERVAL; /* terminal check interval */
+ int checkInterval; /* terminal check interval */
char macAddrNow[ADDRMAXLN]; /* MAC address at now */
int packetCountPrev=0; /* packet count at previous check */
int packetCountNow=0; /* packet count at now */
time_t endTime; /* the absolute time to exit */
int leftTime; /* the left time length to exit */
+
+ checkInterval=GetActiveCheckInterval();
+
/* get the time to exit */
endTime=time(NULL)+duration;
noPacketPeriod=0;
packetCountPrev=packetCountNow;
}
- if(noPacketPeriod*ACTIVECHECKINTERVAL >= NOPACKETINTERVAL){
+ if(noPacketPeriod*GetActiveCheckInterval() >= GetNoPacketInterval()){
err_msg("ERR in comm-java: no packet passed for the client");
connect=0;
break;
}
/* mac address check */
- if(ENABLEMACADDR){
+ if(GetEnableMacAddr()==1){
GetMacAddr(clientAddr, macAddrNow);
if(strcmp(macAddr, macAddrNow)!=0){
err_msg("ERR in comm-java: mac address is changed");
/* set interval alarm */
defaultSigfunc=Signal(SIGALRM, intervalAlarm);
- alarm(ACTIVECHECKINTERVAL);
+ alarm(GetActiveCheckInterval());
/* TCP read/write loop */
/* this loop implement following logic */
/* if no packet is passed in long time, then quit */
if(GetPacketCount()==savePacketCount){
noPacketPeriod++;
- if(noPacketPeriod*ACTIVECHECKINTERVAL >= NOPACKETINTERVAL){
+ if(noPacketPeriod*GetActiveCheckInterval() >= GetNoPacketInterval()){
err_msg("ERR in comm-java: no packet passed for the client");
break;
}
/* is the reply ignored many times */
noReplyCount++;
- if(noReplyCount>=NOREPLYMAX){
+ if(noReplyCount>=GetNoReplyMax()){
/* many times, then quit */
err_msg("ERR in comm-java: no reply to hello");
break;
helloWait=FALSE;
savePacketCount=GetPacketCount();
Signal(SIGALRM, intervalAlarm);
- alarm(ACTIVECHECKINTERVAL);
+ alarm(GetActiveCheckInterval());
}
/* pass the delay for firewall log renewal */
delayAlarmRinged=FALSE;
savePacketCount=GetPacketCount();
Signal(SIGALRM, intervalAlarm);
- alarm(ACTIVECHECKINTERVAL);
+ alarm(GetActiveCheckInterval());
/* other abnormal read, then quit */
}else{