#include <stdlib.h>
#include <unistd.h>
#include "rpcclt_openapi.h"
#include "proc_util.h"
#define NUM_LOG_ENTRIES_TO_GET 10
void printLoggingAppMenu()
{
printf("Usage: logging_example <test#> <arg1> <arg2> ... \n");
printf("Test 1: Set CLI command logging mode: logging_example 1 <mode> \n");
printf("Test 2: Get CLI command logging mode: logging_example 2 \n");
printf("Test 3: Set console logging mode: logging_example 3 <mode> \n");
printf("Test 4: Get console logging mode: logging_example 4 \n");
printf("Test 5: Set console logging severity level: logging_example 5 <severity-level> \n");
printf("Test 6: Get console logging severity level: logging_example 6 \n");
printf("Test 7: Set persistent logging mode: logging_example 7 <mode> \n");
printf("Test 8: Get persistent logging mode: logging_example 8 \n");
printf("Test 9: Set persistent logging severity level: logging_example 9 <severity-level>\n");
printf("Test 10: Get persistent logging severity level: logging_example 10 \n");
printf("Test 11: Set syslog mode: logging_example 11 <mode> \n");
printf("Test 12: Get syslog mode: logging_example 12 \n");
printf("Test 13: Set syslog port: logging_example 13 <syslog port> \n");
printf("Test 14: Get syslog port: logging_example 14 \n");
printf("Test 15: Add logging host: logging_example 15 <host address> \n");
printf("Test 16: Set logging host port: logging_example 16 <host address> <port> \n");
printf("Test 17: Set logging host severity level: logging_example 17 <host address> <severity-level> \n");
printf("Test 18: Delete logging host: logging_example 18 <host address> \n");
printf("Test 19: Show logging host details: logging_example 19 \n");
printf("Test 20: Retrieve buffered log entries: logging_example 20 \n");
printf("Test 21: Clear buffered log: logging_example 21 \n");
printf("Test 22: Retrieve trap log entries: logging_example 22 \n");
printf("Test 23: Clear trap log: logging_example 23 \n");
printf("Test 24: Logging OpEN APIs Sanity: logging_example 24 \n");
return;
}
{
{
printf("Bad return code trying to get max host address length. (result = %d)\n", result);
}
return result;
}
{
{
printf("Bad return code trying to set CLI command Logging mode. (result = %d)\n", result);
}
else
{
printf("CLI command Logging mode is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to get CLI command Logging mode. (result = %d)\n", result);
}
else
{
printf("CLI command Logging Mode: ");
{
printf("Enable\n");
}
else
{
printf("Disable\n");
}
}
return;
}
{
{
{
printf("Console Logging mode is already set to mode %d. (result = %d)\n", mode, result);
}
else
{
printf("Bad return code trying to set Console Logging mode. (result = %d)\n", result);
}
}
else
{
printf("Console Logging mode is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to get Console Logging mode. (result = %d)\n", result);
}
else
{
printf("Console Logging Mode: ");
{
printf("Enable\n");
}
else
{
printf("Disable\n");
}
}
return;
}
{
{
printf("Bad return code trying to set Console Logging severity level. (result = %d)\n", result);
}
else
{
printf("Console Logging severity level is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to get Console Logging severity level. (result = %d)\n", result);
}
else
{
printf("Console Logging severity level: %d\n", severity);
}
return;
}
{
{
{
printf("Persistent Logging mode is already set to mode %d. (result = %d)\n", mode, result);
}
{
printf("Persistent Logging Feature is not supported. (result = %d)\n", result);
}
else
{
printf("Bad return code trying to set Persistent Logging mode. (result = %d)\n", result);
}
}
else
{
printf("Persistent Logging mode is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to set Persistent Logging severity level. (result = %d)\n", result);
}
else
{
printf("Persistent Logging severity level is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to get Persistent Logging mode. (result = %d)\n", result);
}
else
{
printf("Persistent Logging Mode: ");
{
printf("Enable\n");
}
else
{
printf("Disable\n");
}
}
return;
}
{
{
printf("Bad return code trying to get Persistent Logging severity level. (result = %d)\n", result);
}
else
{
printf("Persistent Logging severity level: %d\n", severity);
}
return;
}
{
{
{
printf("Syslog mode is already set to mode %d. (result = %d)\n", mode, result);
}
else
{
printf("Bad return code trying to set Syslog mode. (result = %d)\n", result);
}
}
else
{
printf("Syslog mode is set successfully. (result = %d)\n", result);
}
return;
}
{
{
printf("Bad return code trying to get Syslog mode. (result = %d)\n", result);
}
else
{
printf("Syslog Mode: ");
{
printf("Enable\n");
}
else
{
printf("Disable\n");
}
}
return;
}
{
{
{
if (port == 0)
{
printf("Syslog port is already set to default port . (result = %d)\n", result);
}
else
{
printf("Syslog port is already set to port %d. (result = %d)\n", port, result);
}
}
else
{
printf("Bad return code trying to set Syslog port. (result = %d)\n", result);
}
}
else
{
printf("Syslog port is set successfully. (result = %d)\n", result);
}
return;
}
{
uint16_t port;
{
printf("Bad return code trying to get Syslog port. (result = %d)\n", result);
}
else
{
printf("Syslog port: %d.\n", port);
}
return;
}
{
char *str;
uint32_t len;
if (getMaxHostAddrLen(clientHandle, &len) ==
OPEN_E_NONE)
{
if (strlen(hostAddress) >= len)
{
printf("Host address length can not be longer than %d.\n", len - 1);
return;
}
len = strlen(hostAddress) + 1;
str = (char *) malloc(len);
memset(str, 0, len);
strncpy(str, hostAddress, len);
{
printf("Bad return code trying to add Logging Host. (result = %d)\n", result);
}
else
{
printf("Logging host added successfully.(result = %d) \n", result);
}
free(str);
}
return;
}
{
char *str;
uint32_t len;
if (getMaxHostAddrLen(clientHandle, &len) ==
OPEN_E_NONE)
{
if (strlen(hostAddress) >= len)
{
printf("Host address length can not be longer than %d.\n", len - 1);
return;
}
len = strlen(hostAddress) + 1;
str = (char *) malloc(len);
memset(str, 0, len);
strncpy(str, hostAddress, len);
buffdesc.pstart = str;
buffdesc.size = len;
{
printf("Bad return code trying to set logging host port. (result = %d)\n", result);
}
else
{
printf("Logging host port is set successfully.(result = %d) \n", result);
}
free(str);
}
return;
}
{
char *str;
uint32_t len;
if (getMaxHostAddrLen(clientHandle, &len) ==
OPEN_E_NONE)
{
if (strlen(hostAddress) >= len)
{
printf("Host address length can not be longer than %d.\n", len - 1);
return;
}
len = strlen(hostAddress) + 1;
str = (char *) malloc(len);
memset(str, 0, len);
strncpy(str, hostAddress, len);
buffdesc.pstart = str;
buffdesc.size = len;
{
printf("Bad return code trying to set logging host severity level. (result = %d)\n", result);
}
else
{
printf("Logging host severity level is set successfully.(result = %d) \n", result);
}
free(str);
}
return;
}
{
char *str;
uint32_t len;
if (getMaxHostAddrLen(clientHandle, &len) ==
OPEN_E_NONE)
{
if (strlen(hostAddress) >= len)
{
printf("Host address length can not be longer than %d.\n", len - 1);
return;
}
len = strlen(hostAddress) + 1;
str = (char *) malloc(len);
memset(str, 0, len);
strncpy(str, hostAddress, len);
buffdesc.pstart = str;
buffdesc.size = len;
{
printf("Bad return code trying to delete logging host. (result = %d)\n", result);
}
else
{
printf("Logging host is deleted successfully.(result = %d) \n", result);
}
free(str);
}
return;
}
{
char *str;
uint32_t loggingHostMaxAddrLen = 0;
uint32_t maxLoggingHosts = 0;
uint16_t port;
{
printf("Bad return code trying to get logging host maximum address length. (result = %d)\n", result);
return;
}
if ((str = malloc(loggingHostMaxAddrLen)) == NULL)
{
printf("Could not allocate memory.\n");
return;
}
memset(str, 0, loggingHostMaxAddrLen);
buffdesc.pstart = str;
buffdesc.size = loggingHostMaxAddrLen;
{
printf("Bad return code trying to get first logging host. (result = %d)\n", result);
free(str);
return;
}
{
printf("Bad return code trying to get maximum Logging Hosts supported. (result = %d)\n", result);
}
else
{
printf("Maximum Logging Hosts supported: %d\n", maxLoggingHosts);
}
printf("\n");
do
{
printf("Logging Host Address: %s\n", (char *) buffdesc.pstart);
printf("Port: ");
{
printf("Bad return code trying to get logging host port. (result = %d)\n", result);
}
else
{
printf("%d\n", port);
}
printf("Severity Level: ");
{
printf("Bad return code trying to get logging host severity. (result = %d)\n", result);
}
else
{
printf("%d\n", severity);
}
printf("\n");
buffdesc.size = loggingHostMaxAddrLen;
free(str);
return;
}
{
uint32_t index;
int count = 0;
buffdesc.pstart = malloc(OPENAPI_LOG_ENTRY_BUF_SIZE);
buffdesc.size = OPENAPI_LOG_ENTRY_BUF_SIZE;
index = 0;
printf("Printing up to %d entries from buffered log.\n", NUM_LOG_ENTRIES_TO_GET);
(count < NUM_LOG_ENTRIES_TO_GET))
{
count++;
printf("%d: %s\n", count, (char *)buffdesc.pstart);
buffdesc.size = OPENAPI_LOG_ENTRY_BUF_SIZE;
}
if (count == 0)
{
printf("No log entries found.\n");
}
free(buffdesc.pstart);
return;
}
{
{
printf("Error clearing buffered log. result = %d\n", result);
}
else
{
printf("Successfully cleared buffered log.\n");
}
}
{
uint32_t numEntries;
int i;
buffdesc.pstart = malloc(OPENAPI_TRAP_LOG_BUF_SIZE);
buffdesc.size = OPENAPI_TRAP_LOG_BUF_SIZE;
{
printf("Bad return code trying to get log messages. (result = %d)\n", result);
free(buffdesc.pstart);
return;
}
trapEntry = buffdesc.pstart;
printf("Retrieved %d entries.\n", numEntries);
for (i = 0; i < numEntries; i++)
{
printf("%d: %s\n", i, trapEntry[i].trapEntry);
}
free(buffdesc.pstart);
return;
}
{
{
printf("Error clearing trap log. result = %d\n", result);
}
else
{
printf("Successfully cleared trap log.\n");
}
}
{
char *str;
uint32_t loggingHostMaxAddrLen = 0;
uint32_t maxLoggingHosts = 0;
uint16_t port = 0;
{
printf("Bad return code trying to get logging host maximum address length. (result = %d)\n", result);
return;
}
if ((str = malloc(loggingHostMaxAddrLen)) == NULL)
{
printf("Could not allocate memory.\n");
return;
}
memset(str, 0, loggingHostMaxAddrLen);
buffdesc.pstart = str;
buffdesc.size = loggingHostMaxAddrLen;
printf("\nTesting openapiCliCmdLoggingModeSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid CLI command Logging mode. (result = %d)\n", result);
printf("openapiCliCmdLoggingModeSet() sanity successful.\n");
printf("\nTesting openapiCliCmdLoggingModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL CLI command Logging mode. (result = %d)\n", result);
printf("openapiCliCmdLoggingModeGet() sanity successful.\n");
printf("\nTesting openapiConsoleLoggingModeSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid Command Logging mode. (result = %d)\n", result);
printf("openapiConsoleLoggingModeSet() sanity successful.\n");
printf("\nTesting openapiConsoleLoggingModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL Command Logging mode. (result = %d)\n", result);
printf("openapiConsoleLoggingModeGet() sanity successful.\n");
printf("\nTesting openapiConsoleLoggingSeveritySet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid Console Logging Severity Level . (result = %d)\n", result);
printf("openapiConsoleLoggingSeveritySet() sanity successful.\n");
printf("\nTesting openapiConsoleLoggingSeverityGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL Console Logging Severity Level . (result = %d)\n", result);
printf("openapiConsoleLoggingSeverityGet() sanity successful.\n");
printf("\nTesting openapiPersistentLoggingModeSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid Persistent Logging mode. (result = %d)\n", result);
printf("openapiPersistentLoggingModeSet() sanity successful.\n");
printf("\nTesting openapiPersistentLoggingSeverityLevelSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid Persistent Logging Severity Level . (result = %d)\n", result);
printf("openapiPersistentLoggingSeverityLevelSet() sanity successful.\n");
printf("\nTesting openapiPersistentLoggingModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL Persistent Logging Mode. (result = %d)\n", result);
printf("openapiPersistentLoggingModeGet() sanity successful.\n");
printf("\nTesting openapiPersistentLoggingSeverityLevelGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL Persistent LoggingSeverity Level. (result = %d)\n", result);
printf("openapiPersistentLoggingSeverityLevelGet() sanity successful.\n");
printf("\nTesting openapiSysLogModeSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid syslog mode. (result = %d)\n", result);
printf("openapiSysLogModeSet() sanity successful.\n");
printf("\nTesting openapiSysLogModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL syslog mode. (result = %d)\n", result);
printf("openapiSysLogModeGet() sanity successful.\n");
printf("\nTesting openapiSysLogPortSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("openapiSysLogPortSet() sanity successful.\n");
printf("\nTesting openapiSysLogPortGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL syslog port. (result = %d)\n", result);
printf("openapiSysLogPortGet() sanity successful.\n");
printf("\nTesting openapiLoggingHostAdd(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("openapiLoggingHostAdd() sanity successful.\n");
printf("\nTesting openapiLoggingHostPortSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("openapiLoggingHostPortSet() sanity successful.\n");
printf("\nTesting openapiLoggingHostSeveritySet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("Invalid logging host severity level. (result = %d)\n", result);
printf("openapiLoggingHostSeveritySet() sanity successful.\n");
printf("\nTesting openapiLoggingHostIpAddrNextGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("\nTesting openapiLoggingHostSeverityGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("NULL Logging host severity level. (result = %d)\n", result);
printf("openapiLoggingHostSeverityGet() sanity successful.\n");
printf("\nTesting openapiLoggingHostPortGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("NULL Logging host port. (result = %d)\n", result);
printf("openapiLoggingHostPortGet() sanity successful.\n");
printf("\nTesting openapiLoggingHostRemove(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor. (result = %d)\n", result);
printf("openapiLoggingHostRemove() sanity successful.\n");
printf("\nTesting openapiMaxLoggingHostsSupportedGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL maximum logging hosts. (result = %d)\n", result);
printf("openapiMaxLoggingHostsSupportedGet() sanity successful.\n");
printf("\nTesting openapiLoggingHostMaxAddrLenGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL logging host maximum address length. (result = %d)\n", result);
printf("openapiLoggingHostMaxAddrLenGet() sanity successful.\n");
free(str);
return;
}
int main(int argc, char **argv)
{
uint32_t testNum, arg1;
char switch_os_revision_string[100];
if (argc < 2)
{
printLoggingAppMenu();
exit(1);
}
testNum = atoi(argv[1]);
l7proc_crashlog_register();
{
printf("\nFailed to initialize RPC to OpEN. Exiting (result = %d)\n", result);
exit(2);
}
{
sleep(1);
}
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Starting logging API example application");
printf("\n");
switch_os_revision.pstart = switch_os_revision_string;
switch_os_revision.size = sizeof(switch_os_revision_string);
printf("Network OS version = %s\n", switch_os_revision_string);
else
printf("Network OS version retrieve error\n");
printf("\n");
switch (testNum)
{
case 1:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
cliCommandLoggingModeSet(&clientHandle, arg1);
break;
case 2:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
cliCommandLoggingModeGet(&clientHandle);
break;
case 3:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
consoleLoggingModeSet(&clientHandle, arg1);
break;
case 4:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
consoleLoggingModeGet(&clientHandle);
break;
case 5:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
consoleLoggingSeverityLevelSet(&clientHandle, arg1);
break;
case 6:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
consoleLoggingSeverityLevelGet(&clientHandle);
break;
case 7:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
persistentLoggingModeSet(&clientHandle, arg1);
break;
case 8:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
persistentLoggingModeGet(&clientHandle);
break;
case 9:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
persistentLoggingSeverityLevelSet(&clientHandle, arg1);
break;
case 10:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
persistentLoggingSeverityLevelGet(&clientHandle);
break;
case 11:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
syslogModeSet(&clientHandle, arg1);
break;
case 12:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
syslogModeGet(&clientHandle);
break;
case 13:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
syslogPortSet(&clientHandle, arg1);
break;
case 14:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
syslogPortGet(&clientHandle);
break;
case 15:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
loggingHostAdd(&clientHandle, argv[2]);
break;
case 16:
if (argc != 4)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[3]);
loggingHostPortSet(&clientHandle, argv[2], arg1);
break;
case 17:
if (argc != 4)
{
printLoggingAppMenu();
exit(1);
}
arg1 = atoi(argv[3]);
loggingHostSeveritySet(&clientHandle, argv[2], arg1);
break;
case 18:
if (argc != 3)
{
printLoggingAppMenu();
exit(1);
}
loggingHostDelete(&clientHandle, argv[2]);
break;
case 19:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
loggingHostInfoGet(&clientHandle);
break;
case 20:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
getBufferedLog(&clientHandle);
break;
case 21:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
clearBufferedLog(&clientHandle);
break;
case 22:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
getTrapLog(&clientHandle);
break;
case 23:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
clearTrapLog(&clientHandle);
break;
case 24:
if (argc != 2)
{
printLoggingAppMenu();
exit(1);
}
loggingOpENAPIsSanity(&clientHandle);
break;
default:
printLoggingAppMenu();
break;
}
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Stopping logging API example application");
return 0;
}