OSDN Git Service

Ver.1.1.0: Add many parameters in conf file. Add programs for test.
[opengate/opengate.git] / opengate / opengatesrv / comm-java.c
index 6a30bb6..c6a69b2 100644 (file)
@@ -2,7 +2,7 @@
 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
@@ -44,6 +44,8 @@ int getListenPort(void)
 {
   struct sockaddr_in servaddr;
   int portNo;
+  int portmin;
+  int portmax;
 
   listenfd=Socket(AF_INET, SOCK_STREAM, 0);
 
@@ -51,12 +53,16 @@ int getListenPort(void)
   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);
 
@@ -75,7 +81,7 @@ int waitAppletConnect(char *userid, char *clientAddr, int duration, char *macAdd
   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 */
@@ -83,6 +89,9 @@ int waitAppletConnect(char *userid, char *clientAddr, int duration, char *macAdd
   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;
 
@@ -126,14 +135,14 @@ int waitAppletConnect(char *userid, char *clientAddr, int duration, char *macAdd
          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");
@@ -234,7 +243,7 @@ void waitClientClose(void)
 
   /* set interval alarm */
   defaultSigfunc=Signal(SIGALRM, intervalAlarm);
-  alarm(ACTIVECHECKINTERVAL);
+  alarm(GetActiveCheckInterval());
 
   /* TCP read/write loop */
   /* this loop implement following logic */
@@ -274,7 +283,7 @@ void waitClientClose(void)
        /* 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;
          }
@@ -293,7 +302,7 @@ void waitClientClose(void)
 
        /* 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;
@@ -302,7 +311,7 @@ void waitClientClose(void)
          helloWait=FALSE;
          savePacketCount=GetPacketCount();
          Signal(SIGALRM, intervalAlarm);
-         alarm(ACTIVECHECKINTERVAL);
+         alarm(GetActiveCheckInterval());
        }         
 
       /* pass the delay for firewall log renewal */
@@ -310,7 +319,7 @@ void waitClientClose(void)
        delayAlarmRinged=FALSE;
        savePacketCount=GetPacketCount();
        Signal(SIGALRM, intervalAlarm);
-       alarm(ACTIVECHECKINTERVAL);
+       alarm(GetActiveCheckInterval());
        
       /* other abnormal read, then quit */
       }else{