/** Calculate the current traffic and display the stat based on time interval provided MIB Object used : ifIntOctets, ifOutets **/ void showTraffic(int timeInterval , int numberOfSamples) { char *monitorIp = monitor.ipaddress; int data[2]; char ifInOctets[50] ; char ifOutOctets[50]; //char ifSpeed[50]; sprintf(ifInOctets , "%s.%i","ifInOctets",monitor.ifIndex); sprintf(ifOutOctets , "%s.%i","ifOutOctets",monitor.ifIndex); //sprintf(ifSpeed , "%s.%i","ifSpeed",monitor.ifIndex); printf("Monitoring %s ...\n", monitorIp); // initialize the first data "inoctets" and "outoctets" snmpget(ifInOctets); data[lastInOctets] = (int) *(response->variables->val.integer); // last in data cleanup(); snmpget(ifOutOctets); data[lastOutOctets] = (int) *(response->variables->val.integer); // last out data cleanup(); int totalTime = timeInterval; while ( numberOfSamples >= 0 ) { sleep(timeInterval); snmpget(ifInOctets); int inOctets = (int) *(response->variables->val.integer); cleanup(); snmpget(ifOutOctets); int outOctets = (int) *(response->variables->val.integer); cleanup(); // bytes per seconds -> (bytes * 0.000001 per second) -> (Mb per second) long double traffic = ( max( inOctets-data[lastInOctets] , outOctets-data[lastOutOctets])) * 0.001 / ( timeInterval ); // for kbps printf("At %i second --> %Lf kbps. ( %.1LF mbps )\n" , totalTime , traffic, traffic*0.001); data[lastInOctets] = inOctets; data[lastOutOctets] = outOctets; totalTime += timeInterval; numberOfSamples--; } }
/** * 设置路由器端口的dead定时器值,成功返回0. */ int setDeadInteval(char * routerIp, char *ethIdNum, char *value){ if (routerIp == NULL || ethIdNum == NULL || value == NULL) { return -1; } int resault = 0; char routerType[MAX_LEN]; char command[MAX_LEN]; memset(routerType, '\0', sizeof(routerType)); memset(command, '\0', sizeof(command)); snmpget(routerIp, COMMUNITY, SYSTEMNAME, routerType); if (strcmp(routerType, HUAWEI_SYSTEMNAME) == 0) { if (!strstr(ethIdNum, "GigabitEthernet") == NULL) { sprintf(command, "expect %s%s %s %s %s", FILEPATH, FILENAME_SETDEAD_HUAWEI, routerIp, ethIdNum, value); } else { sprintf(command, "expect %s%s %s GigabitEthernet0/0/%s %s", FILEPATH, FILENAME_SETDEAD_HUAWEI, routerIp, ethIdNum, value); } } else { if (!strstr(ethIdNum, "eth") == NULL) { sprintf(command, "expect %s%s %s %s %s", FILEPATH, FILENAME_SETDEAD_QUAGGA, routerIp, ethIdNum, value); } else { sprintf(command, "expect %s%s %s eth%s %s", FILEPATH, FILENAME_SETDEAD_QUAGGA, routerIp, ethIdNum, value); } } resault = system(command); return resault; }
/** * 删除静态路由 */ int removeStaticRoute(char * routerIp, char * desIp, char *mask, char * nextHop){ if(routerIp == NULL || desIp == NULL || mask == NULL || nextHop == NULL){ return -1; } int resault = 0; char routerType[MAX_LEN]; char command[MAX_LEN]; memset(routerType, '\0', sizeof(routerType)); memset(command,'\0', sizeof(command)); snmpget(routerIp, COMMUNITY, SYSTEMNAME, routerType); if (strcmp(routerType, HUAWEI_SYSTEMNAME) == 0) { sprintf(command,"expect %s%s %s %s %s %s", FILEPATH, FILENAME_REMOVESTATICROUTE_HUAWEI, routerIp, desIp, mask, nextHop); resault = system(command); } else { sprintf(command,"expect %s%s %s %s %s %s", FILEPATH, FILENAME_REMOVESTATICROUTE_QUAGGA, routerIp, desIp, mask, nextHop); resault = system(command); } return resault; }
int setBgpPeerUpdateInterval(char *routerIp, char *bgpAreaId, char *peerIp, int interval) { if (routerIp == NULL || bgpAreaId == NULL || peerIp == NULL) { return -1; } int resault = 0; char routerType[MAX_LEN]; char command[MAX_LEN]; memset(routerType, '\0', sizeof(routerType)); memset(command, '\0', sizeof(command)); snmpget(routerIp, COMMUNITY, SYSTEMNAME, routerType); if (strcmp(routerType, HUAWEI_SYSTEMNAME) == 0) { sprintf(command, "expect %s%s %s %s %s %d", FILEPATH, FILENAME_SETBGPUPTADEINTERVAL_HUAWEI, routerIp, bgpAreaId, peerIp, interval); } else { sprintf(command, "expect %s%s %s %s %s %d", FILEPATH, FILENAME_SETBGPUPTADEINTERVAL_QUAGGA, routerIp, bgpAreaId, peerIp, interval); } resault = system(command); return resault; }