}
/********************************************************/
+/* check nat insertion by reading info in opengatemd.db */
+/********************************************************/
+int checkNatInsertion(char* macAddr4, char* macAddr6, char* userid){
+
+ sqlite3 *db;
+ sqlite3_stmt *stmt;
+ struct stat st;
+ char* macAddress=NULL;
+
+ /* SQL UPDATE COMMAND, where %x is replaced in snprintf */
+ char *selectFormat="SELECT isNat FROM macinfo WHERE macAddress='%s'";
+ char *selectCmd;
+ int resultFlag;
+
+ /* find not-null mac address */
+ if(!isNull(macAddr4)) macAddress=macAddr4;
+ else if(!isNull(macAddr6)) macAddress=macAddr6;
+ else return FALSE;
+
+ /* if db is not exist, ignore */
+ if(stat(GetConfValue("SqliteDbMd"),&st)!=0) return FALSE;
+
+ /* open sqlite */
+ if(sqlite3_open(GetConfValue("SqliteDbMd"),&db)!=SQLITE_OK){
+ err_msg("ERR at %s#%d: sqlite3_open",__FILE__,__LINE__);
+ sqlite3_close(db);
+ return FALSE;
+ }
+
+ /* prepare command string */
+ selectCmd=sqlite3_mprintf(selectFormat, macAddress);
+
+ /* compile to internal statement */
+ if(sqlite3_prepare(db, selectCmd, BUFFMAXLN, &stmt, NULL)!=SQLITE_OK){
+
+ /* finalize */
+ sqlite3_free(selectCmd);
+ sqlite3_finalize(stmt);
+ sqlite3_close(db);
+ return FALSE;
+ }
+
+ /* get first match item */
+ if(sqlite3_step(stmt)==SQLITE_ROW){
+ resultFlag=(int)sqlite3_column_int(stmt, 0);
+ }else{
+ resultFlag=FALSE;
+ }
+
+ /* finalize */
+ sqlite3_free(selectCmd);
+ sqlite3_finalize(stmt);
+ sqlite3_close(db);
+
+ /* if found, write to log */
+ if(resultFlag==TRUE){
+ if(debug>0)err_msg("INFO: user [%s] accesses via NAT/Router", userid);
+ }
+ return resultFlag;
+}
+
+/********************************************************/
/* get user property from property db (NOT implemented) */
/********************************************************/
int getUserProperty(char userid[USERMAXLN], char userProperty[BUFFMAXLN])
return ACCEPT; /* The User is Accepted */
}
-
+/***************************************************************/
/* debug write routine */
int PutSessionBeginToDb(char* cookie, char* userid,
char* clientAddr4, char* clientAddr6,
return ret;
}
+int CheckNatInsertion(char* macAddr4, char* macAddr6, char* userid){
+ int ret;
+ if(debug>1) err_msg("DEBUG:=>checkNatInsertion(%s,%s,%s)",macAddr4,macAddr6,userid);
+ ret=checkNatInsertion(macAddr4,macAddr6,userid);
+ if(debug>1) err_msg("DEBUG:(%d)<=checkNatInsertion( )",ret);
+ return ret;
+}
void split(char content[], char *name[], char *value[], char *next[]);
int GetUserIdFromEnv(char *userid);
-/* db interface*/
+/* comm-userdb.c */
int PutSessionBeginToDb(char* cookie, char* userid,
char* clientAddr4, char* clientAddr6,
char* macAddr4,
int GetSessionInfoFromDb(char* cookie, char* userid, char* clientAddr4,
char *macAddr, int *duration, int *durationEntered, char *language);
int GetUserProperty(char *userid, char *userProperty);
+int CheckNatInsertion(char* macAddr4, char* macAddr6, char* userid);
/* TCP communication with client */
int GetListenPort(void);
void listAlarm(void);
-
-