#include <stdlib.h>
#include <unistd.h>
#include "rpcclt_openapi.h"
#include "proc_util.h"
typedef struct
{
uint32_t ctrId;
char ctrName[40];
} ctrIdToStrMap_t;
static ctrIdToStrMap_t ctrIdToStr[] =
{
};
#define NUM_COUNTERS (sizeof(ctrIdToStr)/sizeof(ctrIdToStrMap_t))
{
char *ctrArray = NULL;
char linkName[256];
uint32_t i;
uint32_t bufSize;
uint64_t *pCtr;
uint32_t maxCtrIdx;
uint64_t ctrValue;
printf("\n");
{
printf("Error obtaining counter buffer size (rc = %d)\n\n", result);
return;
}
ctrArray = (char *)malloc(bufSize);
if (ctrArray == NULL)
{
printf("Cannot allocate memory for counter collection buffer\n\n");
return;
}
memset(ctrArray, 0, bufSize);
{
printf("Error obtaining counters using bulk get method (rc = %d)\n", result);
free(ctrArray);
return;
}
memset(linkName, 0, sizeof(linkName));
bufd.pstart = linkName;
bufd.size = sizeof(linkName);
{
printf("Bulk statistics for interface %s:\n", linkName);
}
else
{
printf("Interface name retrieval error for ifNum %d\n\n", ifNum);
printf("Bulk statistics for ifNum %u\n", ifNum);
}
printf("\n");
pCtr = (uint64_t *)ctrArray;
maxCtrIdx = (uint32_t)*pCtr++;
for (i = 1; i < NUM_COUNTERS; i++)
{
if (i < maxCtrIdx)
{
ctrValue = *pCtr++;
}
else
{
ctrValue = 0;
}
printf("%40s - 0x%016llx\n", ctrIdToStr[i].ctrName, ctrValue);
}
printf("\n");
free(ctrArray);
}
int main(int argc, char **argv)
{
uint32_t ifNum;
uint64_t ctrValue;
char linkName[256];
uint32_t i;
uint32_t lastResetSecs;
l7proc_crashlog_register();
{
printf("\nFailed to initialize RPC to OpEN. Exiting (result = %d)\n", rc);
exit(1);
}
{
sleep(1);
}
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Starting interface statistics example application");
linkNameBuff.pstart = linkName;
linkNameBuff.size = sizeof(linkName);
printf("\n");
printf("Network OS version = %s\n", (char *) linkNameBuff.pstart);
else
printf("Network OS Version retrieve error\n");
printf("\n");
printf("ifNum Interface Name State Value \n");
printf("----- -------------------------------- ----- ------------------------\n");
{
switch (i)
{
break;
break;
break;
break;
default:
continue;
}
{
do
{
printf("%5u ", ifNum);
linkNameBuff.size = sizeof(linkName);
printf("%-32s ", (char *)linkNameBuff.pstart);
else
printf("%-32s ", "link name retrieve error");
else
printf("%-5s ", "???");
{
ctrValue = -1;
switch (rc)
{
printf("0x%016llx\n", ctrValue);
break;
printf("Counter unavailable\n");
break;
default:
printf("Counter get failed (rc = %d)\n", rc);
break;
}
}
printf("\n");
}
}
printf("\n");
{
memset(linkName, 0, sizeof(linkName));
linkNameBuff.pstart = linkName;
linkNameBuff.size = sizeof(linkName);
printf("Displaying statistics of %s\n", (char *)linkNameBuff.pstart);
else
printf("link name retrieval error\n");
printf("\n");
statValStrBuff.pstart = statValStr;
for (i = 1; i < NUM_COUNTERS; i++)
{
ctrValue = -1;
memset(statValStr, 0, sizeof(statValStr));
statValStrBuff.size = sizeof(statValStr);
rc =
openapiStatGet(&clientHandle, ctrIdToStr[i].ctrId, ifNum, &ctrValue);
switch (rc)
{
printf("%40s - 0x%016llx\n", ctrIdToStr[i].ctrName, ctrValue);
break;
printf("%40s - Counter unavailable\n", ctrIdToStr[i].ctrName);
break;
default:
printf("%40s - Counter get failed (rc = %d)\n", ctrIdToStr[i].ctrName, rc);
break;
}
switch (rc)
{
printf("%40s - %s\n", ctrIdToStr[i].ctrName, (char *)statValStrBuff.pstart);
break;
printf("%40s - Counter unavailable\n", ctrIdToStr[i].ctrName);
break;
default:
printf("%40s - Counter get failed (rc = %d)\n", ctrIdToStr[i].ctrName, rc);
break;
}
}
intfStatsBulkDisplay(&clientHandle, ifNum);
printf("\n");
printf("Resetting OPEN_CTR_RX_TOTAL_BYTES on an interface.\n");
{
printf("Statistics reset successfully on interface %d.\n", ifNum);
}
{
printf("Failed to reset statistics on interface %d.\n", ifNum);
}
{
printf("Error resetting stats.\n");
}
else
{
printf("Internal error.\n");
}
printf("\n");
{
printf("Seconds since stats last reset on interface %d: %8u (before)\n", ifNum, lastResetSecs);
}
else
{
printf("Failed to get last reset time on interface %d.\n", ifNum);
}
printf("Resetting all the counters on an interface.\n");
{
printf("Statistics reset successfully on interface %d.\n", ifNum);
}
{
printf("Failed to reset statistics on interface %d.\n", ifNum);
}
else
{
printf("Internal error.\n");
}
{
printf("Seconds since stats last reset on interface %d: %8u (after)\n", ifNum, lastResetSecs);
}
else
{
printf("Failed to get last reset time on interface %d.\n", ifNum);
}
}
printf("\n");
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Stopping interface statistics example application");
return 0;
}