?? simutil.pc
字號:
/*#define SYBASE_ENV 1 */#include "simu112.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <errno.h>#include <malloc.h>#ifdef SYBASE_ENV#include <sybfront.h>#include <sybdb.h>#include <syberror.h>#endifEXEC SQL INCLUDE sqlca;extern void unprocessdata(char *, char *);DEVICEHEAD *device_head;extern COMPRULEDATA comp_rule_data[MAX_SWITCH + 1];extern SOCKETSTRUCT so[MAX_FD];extern char LIC_USERNAME[61];extern int LIC_DRIVERNUMBER;void ReadIniFile(char *szFileName, char *szStringName, char *szStringValue, char *szDefaultValue);static char *StringToupper(char *p);int f_is_ts_busy(char *ts_address, int ts_port); /* 1 - busy 0 - idle */int getCompareDBrows(char *switch_name){ short table_rows; table_rows = -1; EXEC SQL WHENEVER SQLERROR GOTO sqlerror; EXEC SQL SELECT count(*) into:table_rows from CompareTable where Switch =:switch_name; return (short) table_rows;sqlerror: fLogInfo("\nSQL ERROR in getCompareDBrows !!"); fLogInfo("\nSQLCODE: %d", sqlca.sqlcode); fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm.sqlerrmc); return -1;}int getRouteDBrows(void){ short routeDBrows; EXEC SQL WHENEVER SQLERROR GOTO sqlerror; EXEC SQL SELECT count(*) into:routeDBrows from Exchange, Switch where Exchange.Switch = Switch.Switch and Switch.TestType = '2'; return (int) routeDBrows;sqlerror: fLogInfo("\nSQL ERROR in getRouteDBrows !!"); fLogInfo("\nSQLCODE: %d", sqlca.sqlcode); fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm.sqlerrmc); return -1;}char switchType(char *switch_string){ COMPRULEDATA *p; int i; for (i = 0; i < MAX_SWITCH + 1; i++) { p = &comp_rule_data[i]; if (strlen(p->SwitchName) == 0) break; if (strcmp(switch_string, p->SwitchName) == 0) return (char) i; } return (char) 0;}/************************************************************* *initialize the route table for deciding the terminal server* *return 0:success * * -1:failure * *************************************************************//*int setRouteTable(DBPROCESS *dbproc) */int setRouteTable(void){ char s1[11]; /*Exchange.Exchange */ char s2[31]; /*Switch.Address */ char s3[7]; /*Switch.PortNumber */ char s4[2]; /*Switch.TestPortType */ char s5[9]; /*Switch.SwitchPasswd */ char s6[11]; /*Switch.ModemTelePhone */ char s7[11]; /*Switch.SIMSwitchType */ char s8[21]; /*Switch.SIMSwitchIP */ char s9[7]; /*Switch.SIMSwitchPort */ char s10[21]; /*Switch.RtuId */ char s11[2]; /*Switch.UseGrade */ char s12[17]; /*Switch.SwitchUserName */ char s13[2]; /*Switch.MultConnect */ /*RETCODE rc; */ int row, len, rtu_row; char temp[21]; char old_Address[31]; char old_PortNumber[7]; if ((device_head = malloc(sizeof(DEVICEHEAD))) == NULL) { fLogInfo("\nERROR in setRouteTable !!"); fLogInfo("\nERROR when Malloc for device_head.\n"); return -1; } if ((device_head->count = getRouteDBrows()) == -1) { free(device_head); return -1; } if ((device_head->test_device = malloc(sizeof(TESTDEVICE) * device_head->count)) == NULL) { fLogInfo("\nERROR in setRouteTable !!"); fLogInfo("\nERROR when Malloc for device_head->test_device.\n"); free(device_head); return -2; } row = 0; old_Address[0] = '\0'; old_PortNumber[0] = '\0'; rtu_row = 0; EXEC SQL DECLARE my_cur1 CURSOR FOR SELECT distinct Exchange.Exchange, Switch.Address, Switch.PortNumber, NVL(Switch.TestPortType,' '), NVL(Switch.SwitchPasswd,' '), NVL(Switch.ModemTelePhone, '000'), NVL(Switch.SIMSwitchType,' '), NVL(Switch.SIMSwitchIP,' '), NVL(Switch.SIMSwitchPort,' '), NVL(Switch.RtuId,' '), NVL(Switch.UseGrade,'0'), NVL(Switch.SwitchUserName,' '), NVL(Switch.MultConnect,'0') FROM Exchange, Switch WHERE Exchange.Switch = Switch.Switch and Switch.TestType = '2' ORDER BY Switch.Address, Switch.PortNumber; EXEC SQL OPEN my_cur1; EXEC SQL WHENEVER NOT FOUND DO break; EXEC SQL WHENEVER SQLERROR GOTO sqlerror; /* printf("device_head->count=%d\n",device_head->count); */ /* while (1){ */ while (row < device_head->count) { EXEC SQL FETCH my_cur1 INTO:s1,:s2,:s3,:s4,:s5,:s6,:s7,:s8,:s9,:s10,:s11, : s12,:s13; RemoveWhitespace(s1); strncpy((device_head->test_device + row)->ExkNumber, (char *) s1, (len = strlen(s1))); (device_head->test_device + row)->ExkNumber[len] = 0; RemoveWhitespace((device_head->test_device + row)->ExkNumber); StringToupper((device_head->test_device + row)->ExkNumber); RemoveWhitespace(s2); strncpy((device_head->test_device + row)->TSAddress, (char *) s2, (len = strlen(s2))); (device_head->test_device + row)->TSAddress[len] = 0; RemoveWhitespace((device_head->test_device + row)->TSAddress); RemoveWhitespace(s3); strncpy((device_head->test_device + row)->TSPortNo, (char *) s3, (len = strlen(s3))); (device_head->test_device + row)->TSPortNo[len] = 0; RemoveWhitespace((device_head->test_device + row)->TSPortNo); RemoveWhitespace(s4); strncpy(temp, (char *) s4, (len = strlen(s4))); temp[len] = 0; (device_head->test_device + row)->TestPortType = temp[0]; RemoveWhitespace(s5); strncpy((device_head->test_device + row)->PortPassword, (char *) s5, (len = strlen(s5))); (device_head->test_device + row)->PortPassword[len] = 0; RemoveWhitespace((device_head->test_device + row)->PortPassword); RemoveWhitespace(s6); strncpy((device_head->test_device + row)->DialNumber, (char *) s6, (len = strlen(s6))); (device_head->test_device + row)->DialNumber[len] = 0; RemoveWhitespace((device_head->test_device + row)->DialNumber); RemoveWhitespace(s7); strncpy(temp, (char *) s7, (len = strlen(s7))); temp[len] = 0; RemoveWhitespace(temp); (device_head->test_device + row)->SwitchType = switchType(temp); RemoveWhitespace(s8); strncpy((device_head->test_device + row)->ServerAddress, (char *) s8, (len = strlen(s8))); (device_head->test_device + row)->ServerAddress[len] = 0; RemoveWhitespace((device_head->test_device + row)->ServerAddress); RemoveWhitespace(s9); strncpy(temp, (char *) s9, (len = strlen(s9))); temp[len] = 0; (device_head->test_device + row)->ServerPort = atoi(temp); RemoveWhitespace(s10); strncpy((device_head->test_device + row)->RtuId, (char *) s10, (len = strlen(s10))); (device_head->test_device + row)->RtuId[len] = 0; RemoveWhitespace(StringToupper((device_head->test_device + row)->RtuId)); if (strcmp(old_Address, (device_head->test_device + row)->TSAddress) != 0 || strcmp(old_PortNumber, (device_head->test_device + row)->TSPortNo) != 0) { rtu_row++; strcpy(old_Address, (device_head->test_device + row)->TSAddress); strcpy(old_PortNumber, (device_head->test_device + row)->TSPortNo); } /*RemoveWhitespace(s11); strncpy(temp,(char *)s11,(len=sizeof(s11))); temp[len]=0; (device_head->test_device+row)->UseGrade=temp[0]; */ (device_head->test_device + row)->UseGrade = s11[0]; RemoveWhitespace(s12); strncpy((device_head->test_device + row)->SwitchUserName, (char *) s12, (len = strlen(s12))); (device_head->test_device + row)->SwitchUserName[len] = 0; RemoveWhitespace((device_head->test_device + row)->SwitchUserName); /* RemoveWhitespace(s13); */ strncpy(temp, (char *) s13, (len = strlen(s13))); temp[len] = 0; (device_head->test_device + row)->MultConnect = temp[0]; /* printf("\n\ns1:%s,ExkNumber:%s\n",s1,(device_head->test_device+row)->ExkNumber); printf("s2:%s,TSAddress:%s\n",s2,(device_head->test_device+row)->TSAddress); printf("s3:%s,TSPortNo:%s\n",s3,(device_head->test_device+row)->TSPortNo); printf("s4:%s,TestPortType:%c\n",s4,(device_head->test_device+row)->TestPortType); printf("s5:%s,PortPassword:%s\n",s5,(device_head->test_device+row)->PortPassword); printf("s6:%s,DialNumber:%s\n",s6,(device_head->test_device+row)->DialNumber); printf("s7:%s,SwitchType:%d\n",s7,(device_head->test_device+row)->SwitchType); printf("s8:%s,ServerAddress:%s\n",s8,(device_head->test_device+row)->ServerAddress); printf("s9:%s,ServerPort:%d\n",s9,(device_head->test_device+row)->ServerPort); printf("s10:%s,RtuId:%s\n",s10,(device_head->test_device+row)->RtuId); printf("s11:%s,UseGrade:%c\n",s11,(device_head->test_device+row)->UseGrade); printf("s12:%s,SwitchUserName:%s\n",s12,(device_head->test_device+row)->SwitchUserName); printf("s13:%s,MultConnect:%c\n",s13,(device_head->test_device+row)->MultConnect); */ row++; /* printf("row=%d,rtu_row=%d,\n",row,rtu_row); */ } if (row == 0 || rtu_row > LIC_DRIVERNUMBER) { free(device_head->test_device); free(device_head); fLogInfo("\nERROR in setRouteTable !!"); if (rtu_row > LIC_DRIVERNUMBER) { fLogInfo("\nError encountered! Server abort!"); fLogInfo("\nThe routers number is more than Maximum drivers number!"); fLogInfo("\nPlease apply for new license!\n"); return -3; } else { fLogInfo("\nRouters number is 0!\n"); return -4; } } device_head->count = row; printf("device_head->count:%d, rtu_row:%d\n", device_head->count, rtu_row); EXEC SQL CLOSE my_cur1; return 0;sqlerror: fLogInfo("\nSQL ERROR in setRouteTable !!"); fLogInfo("\nSQLCODE: %d", sqlca.sqlcode); fLogInfo("\nERRMSG: %.70s \n", sqlca.sqlerrm.sqlerrmc); return -5;}int freeRouteTable(){ free(device_head->test_device); free(device_head); return 0;}/********************************************************* *comment: * * select which terminal server can be used to test* *return 0:success 1:can't be found 2:busy * *********************************************************/int getSIMterm(TESTREQMSG * term_srv, char *sim_drv_addr, int *sim_drv_port){ int i; int flag; /* 0-judged by ExkNumber, 1-judged by address and port, 2-judged by RtuId */ char temp_rtuid[25]; char temp_addr[20]; char temp_port[7]; int found_flag; flag = 0; if (term_srv->Tid[0] != '\0') { if (strstr(term_srv->Tid, ",")) { f_split_addr_port(term_srv->Tid, temp_addr, temp_port); flag = 1; } else { strcpy(temp_rtuid, term_srv->Tid); flag = 2; } } /* printf("flag=%d, RtuId=%s, TID=%s \n",flag,temp_rtuid,term_srv->Tid); */ switch (flag) { case 0: found_flag = 0; for (i = 0; i < device_head->count; i++) { if (strcmp(term_srv->ExkNumber, (device_head->test_device + i)->ExkNumber) == 0) { /* found */ found_flag = 1; if ((device_head->test_device + i)->MultConnect != '1' && f_is_ts_busy((device_head->test_device + i)->TSAddress, atoi((device_head->test_device + i)->TSPortNo))) { printf("getSIMterm()::MultConnect=%c\n", (device_head->test_device + i)->MultConnect); continue; /* if TS is busy, then we finding next */ } else { strcpy(sim_drv_addr, (device_head->test_device + i)->ServerAddress); *sim_drv_port = (device_head->test_device + i)->ServerPort; strcpy(term_srv->TSAddress, (device_head->test_device + i)->TSAddress); strcpy(term_srv->TSPortNo, (device_head->test_device + i)->TSPortNo); strcpy(term_srv->PortPassword, (device_head->test_device + i)->PortPassword); strcpy(term_srv->SwitchUserName, (device_head->test_device + i)->SwitchUserName); strcpy(term_srv->DialNumber, (device_head->test_device + i)->DialNumber); term_srv->TestPortType = (device_head->test_device + i)->TestPortType; term_srv->SwitchType = (device_head->test_device + i)->SwitchType; term_srv->UseGrade = (device_head->test_device + i)->UseGrade; return (0); /*have been found */ } } } if (found_flag) return (2); break; case 1: for (i = 0; i < device_head->count; i++) { /* printf("temp_addr=%s, temp_port=%s, TSAddress=%s, TSPortNo=%s \n",temp_addr,temp_port,(device_head->test_device+i)->TSAddress,(device_head->test_device+i)->TSPortNo); */ if ((strcmp(temp_addr, (device_head->test_device + i)->TSAddress) == 0) && (strcmp(temp_port, (device_head->test_device + i)->TSPortNo) == 0)) { /*success */ strcpy(sim_drv_addr, (device_head->test_device + i)->ServerAddress); *sim_drv_port = (device_head->test_device + i)->ServerPort; strcpy(term_srv->TSAddress, (device_head->test_device + i)->TSAddress); strcpy(term_srv->TSPortNo, (device_head->test_device + i)->TSPortNo); strcpy(term_srv->PortPassword, (device_head->test_device + i)->PortPassword); strcpy(term_srv->SwitchUserName, (device_head->test_device + i)->SwitchUserName); strcpy(term_srv->DialNumber, (device_head->test_device + i)->DialNumber); term_srv->TestPortType = (device_head->test_device + i)->TestPortType; term_srv->SwitchType = (device_head->test_device + i)->SwitchType;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -