#include <stdlib.h>
#include <unistd.h>
#include "rpcclt_openapi.h"
#include "proc_util.h"
void printSntpAppMenu()
{
printf("Usage: sntp_example <test#> <arg1> <arg2> ... \n");
printf("Test 1: Add SNTP server: sntp_example 1 <sntp-server> \n");
printf("Test 2: Set SNTP server priority: sntp_example 2 <sntp-server> <priority> \n");
printf("Test 3: Set SNTP server port: sntp_example 3 <sntp-server> <port> \n");
printf("Test 4: Set SNTP server version: sntp_example 4 <sntp-server> <version> \n");
printf("Test 5: Delete SNTP server: sntp_example 5 <sntp-server> \n");
printf("Test 6: Get SNTP server info: sntp_example 6 \n");
printf("Test 7: Set SNTP client mode: sntp_example 7 <sntp-client mode> \n");
printf("Test 8: Get SNTP client info: sntp_example 8 \n");
printf("Test 9: sntp_example OpEN APIs sanity: sntp_example 9 \n");
return;
}
{
char str[100];
memset(str, 0, sizeof(str));
strncpy(str, sntpServerAddr, (sizeof(str) - 1));
sntpServer.
size = strlen(str)+1;
{
printf("Bad return code trying to add SNTP server. (result = %d)\n", result);
}
else
{
printf("SNTP server is added successfully. (result = %d)\n", result);
}
return;
}
{
uint32_t maxPriority;
char str[100];
memset(str, 0, sizeof(str));
strncpy(str, sntpServerAddr, (sizeof(str) - 1));
sntpServer.pstart = str;
sntpServer.size = strlen(str)+1;
{
if (priority > maxPriority)
{
printf("Invalid SNTP server priority. Maximum priority is %d.\n", maxPriority);
}
}
{
{
printf("Bad return code trying to set SNTP server priority. (result = %d)\n", result);
}
else
{
printf("SNTP server priority is set successfully. (result = %d)\n", result);
}
}
return;
}
{
char str[100];
memset(str, 0, sizeof(str));
strncpy(str, sntpServerAddr, (sizeof(str) - 1));
sntpServer.pstart = str;
sntpServer.size = strlen(str)+1;
{
printf("Bad return code trying to set SNTP server port. (result = %d)\n", result);
}
else
{
printf("SNTP server port is set successfully. (result = %d)\n", result);
}
return;
}
{
char str[100];
memset(str, 0, sizeof(str));
strncpy(str, sntpServerAddr, (sizeof(str) - 1));
sntpServer.pstart = str;
sntpServer.size = strlen(str)+1;
{
printf("Bad return code trying to set SNTP server version. (result = %d)\n", result);
}
else
{
printf("SNTP server version is set successfully. (result = %d)\n", result);
}
return;
}
{
char str[100];
memset(str, 0, sizeof(str));
strncpy(str, sntpServerAddr, (sizeof(str) - 1));
sntpServer.pstart = str;
sntpServer.size = strlen(str)+1;
{
printf("Bad return code trying to delete SNTP server. (result = %d)\n", result);
}
else
{
printf("SNTP server is deleted successfully. (result = %d)\n", result);
}
return;
}
{
uint32_t maxSntpServers = 0;
uint32_t sntpServerMaxLen = 0;
uint32_t stratum = 0;
uint32_t sntpServerRefIdStrLen = 0;
uint16_t priority, port, version;
uint32_t currSntpServers = 0;
open_buffdesc sntpServerLastUpdatedTime, sntpServerLastAttemptTime;
uint32_t numRequests = 0;
uint32_t numFailedRequests = 0;
char *str, *str1, *str2;
char buf1[256];
char buf2[256];
{
printf(" Bad return code trying to get maximum number of SNTP servers supported. (result = %d)\n", result);
return;
}
else
{
printf("Maximum no. of SNTP servers: %d\n", maxSntpServers);
}
{
printf(" Bad return code trying to get current SNTP servers supported. (result = %d)\n", result);
return;
}
else
{
printf("Current SNTP servers: %d\n", currSntpServers);
}
{
printf(" Bad return code trying to get maximum length of SNTP server. (result = %d)\n", result);
return;
}
{
printf(" Bad return code trying to get maximum length of SNTP server reference ID. (result = %d)\n", result);
return;
}
if ((str = (char *)malloc(sntpServerMaxLen)) == NULL)
{
printf("Could not allocate memory.\n");
return;
}
if ((str1 = (char *)malloc(sntpServerMaxLen)) == NULL)
{
printf("Could not allocate memory.\n");
free(str);
return;
}
if ((str2 = (char *)malloc(sntpServerRefIdStrLen)) == NULL)
{
printf("Could not allocate memory.\n");
free(str);
return;
}
memset(str, 0, sntpServerMaxLen);
sntpServer.pstart = str;
sntpServer.size = sntpServerMaxLen;
memset(str1, 0, sntpServerMaxLen);
activeSntpServer.pstart = str1;
activeSntpServer.size = sntpServerMaxLen;
memset(str2, 0, sntpServerRefIdStrLen);
referenceId.pstart = str2;
referenceId.size = sntpServerRefIdStrLen;
printf("\n");
printf("SNTP active server details: \n");
printf("---------------------------\n");
printf("SNTP server Address: ");
{
printf(" Bad return code trying to get active SNTP server address. (result = %d)\n", result);
}
else
{
printf("%s \n", (char *) activeSntpServer.pstart);
}
printf("SNTP server Type: ");
{
printf(" Bad return code trying to get active SNTP server type. (result = %d)\n", result);
}
else
{
switch(addressType)
{
printf("Unknown \n");
break;
printf("IPV4 \n");
break;
printf("DNS \n");
break;
printf("IPV6 \n");
break;
default:
break;
}
}
printf("Server stratum: ");
{
printf(" Bad return code trying to get active SNTP server stratum. (result = %d)\n", result);
}
else
{
printf("%d \n", stratum);
}
printf("Server Reference ID: ");
{
printf(" Bad return code trying to get active SNTP server reference ID. (result = %d)\n", result);
}
else
{
printf("%s \n", (char *) referenceId.pstart);
}
printf("Server Mode: ");
{
printf(" Bad return code trying to get active SNTP server Mode. (result = %d)\n", result);
}
else
{
switch(sntpServerMode)
{
printf("Reserved \n");
break;
printf("Symmetric Active \n");
break;
printf("Symmetric Passive \n");
break;
printf("Client \n");
break;
printf("Server \n");
break;
printf("Broadcast \n");
break;
printf("Reserved Control \n");
break;
printf("Reserved Private \n");
break;
default:
break;
}
}
printf("\n");
printf("SNTP servers details: \n");
printf("---------------------------\n");
{
printf(" Bad return code while getting first SNTP server. (result = %d)\n", result);
free(str);
return;
}
do
{
printf("SNTP server: %s \n", (char *)sntpServer.pstart);
printf("Address Type: ");
{
printf("Address type get failed. (result = %d) \n", result);
}
else
{
switch(addressType)
{
printf("Unknown \n");
break;
printf("IPV4 \n");
break;
printf("DNS \n");
break;
printf("IPV6 \n");
break;
default:
break;
}
}
printf("Priority: ");
{
printf("Priority get failed. (result = %d) \n", result);
}
else
{
printf("%d \n", priority);
}
printf("Port: ");
{
printf("Port get failed. (result = %d) \n", result);
}
else
{
printf("%d \n", port);
}
printf("Version: ");
{
printf("Version get failed. (result = %d) \n", result);
}
else
{
printf("%d \n", version);
}
printf("Last Attempt Status: ");
{
printf("Last Attempt Status get failed. (result = %d) \n", result);
}
else
{
switch(sntpLastAttemptStatus)
{
printf("Other \n");
break;
printf("Success \n");
break;
printf("Request Timed Out \n");
break;
printf("Bad Date Encoded \n");
break;
printf("Version Not Supported \n");
break;
printf("Server Unsynchronized \n");
break;
printf("Server Kiss Of Death \n");
break;
printf("Kiss of Death as Rate Exceeded \n");
break;
default:
break;
}
}
memset(buf1, 0x0, sizeof(buf1));
sntpServerLastUpdatedTime.pstart = buf1;
sntpServerLastUpdatedTime.size = OPEN_SNTP_BUFFER_SIZE;
printf("Last Updated Time: ");
{
printf("Last Updated Time get failed. (result = %d) \n", result);
}
else
{
printf("%s \n", (char *)sntpServerLastUpdatedTime.pstart);
}
memset(buf2, 0x0, sizeof(buf2));
sntpServerLastAttemptTime.pstart = buf2;
sntpServerLastAttemptTime.size = OPEN_SNTP_BUFFER_SIZE;
printf("Last Attempt Time: ");
{
printf("Last Attempted Time get failed. (result = %d) \n", result);
}
else
{
printf("%s \n", (char *)sntpServerLastAttemptTime.pstart);
}
printf("Number of Requests: ");
{
printf("Number of Requests get failed. (result = %d) \n", result);
}
else
{
printf("%d \n", numRequests);
}
printf("Number of Failed Requests: ");
{
printf("Number of Failed Requests get failed. (result = %d) \n", result);
}
else
{
printf("%d \n", numFailedRequests);
}
sntpServer.size = sntpServerMaxLen;
printf("\n");
free(str);
return;
}
{
{
printf("Bad return code trying to set SNTP client mode. (result = %d)\n", result);
}
else
{
printf("SNTP client mode is set successfully. (result = %d)\n", result);
}
return;
}
{
printf("Getting SNTP client information. \n");
{
printf("Bad return code trying to get SNTP client mode. (result = %d)\n", result);
}
else
{
printf("SNTP client mode: ");
switch(sntpClientMode)
{
printf("Disabled \n");
break;
printf("Unicast \n");
break;
printf("Broadcast \n");
break;
default:
break;
}
}
{
printf("Bad return code trying to get SNTP supported client mode. (result = %d)\n", result);
}
else
{
printf("SNTP supported client mode: ");
switch(sntpSuppClientMode)
{
printf("Disabled \n");
break;
printf("Unicast \n");
break;
printf("Broadcast \n");
break;
printf("Unicast Broadcast \n");
break;
default:
break;
}
}
return;
}
{
uint32_t sntpServerMaxLen, maxSntpServers;
uint16_t priority, port, version;
uint32_t stratum = 0;
uint32_t sntpServerRefIdStrLen = 0;
uint32_t currSntpServers = 0;
open_buffdesc sntpServerLastUpdatedTime, sntpServerLastAttemptTime;
char *str;
char buf1[256];
char buf2[256];
uint32_t numRequests = 0;
uint32_t numFailedRequests = 0;
printf("Testing SNTP OpEN APIs sanity:\n");
{
printf(" Bad return code trying to get maximum length of SNTP server. (result = %d)\n", result);
return;
}
if ((str = (char *)malloc(sntpServerMaxLen)) == NULL)
{
printf("Could not allocate memory.\n");
return;
}
memset(&referenceId,0,sizeof(referenceId));
memset(str, 0, sntpServerMaxLen);
sntpServer.pstart = str;
sntpServer.size = sntpServerMaxLen;
memset(buf1, 0x0, sizeof(buf1));
sntpServerLastUpdatedTime.pstart = buf1;
sntpServerLastUpdatedTime.size = sizeof(buf1);
memset(buf2, 0x0, sizeof(buf2));
sntpServerLastAttemptTime.pstart = buf2;
sntpServerLastAttemptTime.size = sizeof(buf2);
printf("\nTesting openapiSntpServerMaxAddrLenGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to SNTP server length. (result = %d)\n", result);
printf("openapiSntpServerMaxAddrLenGet() sanity successful. \n");
printf("\nTesting openapiSntpServerAdd(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("openapiSntpServerAdd() sanity successful. \n");
printf("\nTesting openapiSntpServerPrioritySet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("Invalid SNTP server priority. (result = %d)\n", result);
printf("Invalid SNTP server priority. (result = %d)\n", result);
printf("openapiSntpServerPrioritySet() sanity successful. \n");
printf("\nTesting openapiSntpServerPrioritySet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("Invalid SNTP server port. (result = %d)\n", result);
printf("Invalid SNTP server port. (result = %d)\n", result);
printf("openapiSntpServerPortSet() sanity successful. \n");
printf("\nTesting openapiSntpServerVersionSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("Invalid SNTP server version. (result = %d)\n", result);
printf("Invalid SNTP server version. (result = %d)\n", result);
printf("openapiSntpServerVersionSet() sanity successful. \n");
printf("\nTesting openapiSntpServersMaxSupportedGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to maximum no. of SNTP servers. (result = %d)\n", result);
printf("openapiSntpServersMaxSupportedGet() sanity successful. \n");
printf("\nTesting openapiSntpServerDelete(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("openapiSntpServerDelete() sanity successful. \n");
printf("\nTesting openapiSntpServerFirstGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("openapiSntpServerFirstGet() sanity successful. \n");
printf("\nTesting openapiSntpServerNextGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to previous SNTP server. (result = %d)\n", result);
printf("NULL buff descriptor to next SNTP server. (result = %d)\n", result);
printf("openapiSntpServerNextGet() sanity successful. \n");
printf("\nTesting openapiSntpServerAddressTypeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL address type. (result = %d)\n", result);
printf("openapiSntpServerAddressTypeGet() sanity successful. \n");
printf("\nTesting openapiSntpServerPriorityGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP server priority. (result = %d)\n", result);
printf("openapiSntpServerPriorityGet() sanity successful. \n");
printf("\nTesting openapiSntpServerPortGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP server port. (result = %d)\n", result);
printf("openapiSntpServerPortGet() sanity successful. \n");
printf("\nTesting openapiSntpServerVersionGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP server version. (result = %d)\n", result);
printf("openapiSntpServerVersionGet() sanity successful. \n");
printf("\nTesting openapiSntpClientModeSet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("Invalid SNTP client mode. (result = %d)\n", result);
printf("openapiSntpClientModeSet() sanity successful. \n");
printf("\nTesting openapiSntpClientModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to SNTP client mode. (result = %d)\n", result);
printf("openapiSntpClientModeGet() sanity successful. \n");
printf("\nTesting openapiSntpClientSupportedModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to SNTP client supported mode. (result = %d)\n", result);
printf("openapiSntpClientSupportedModeGet() sanity successful. \n");
printf("\nTesting openapiActiveSntpServerAddressTypeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL address type. (result = %d)\n", result);
printf("openapiActiveSntpServerAddressTypeGet() sanity successful. \n");
printf("\nTesting openapiActiveSntpServerIpAddressGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("openapiActiveSntpServerIpAddressGet() sanity successful. \n");
printf("\nTesting openapiActiveSntpServerStratumGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL SNTP server stratum. (result = %d)\n", result);
printf("openapiActiveSntpServerStratumGet() sanity successful. \n");
printf("\nTesting openapiActiveSntpServerReferenceIdGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL SNTP reference ID. (result = %d)\n", result);
printf("openapiActiveSntpServerReferenceIdGet() sanity successful. \n");
printf("\nTesting openapiSntpServerReferenceStringLengthGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to SNTP server reference ID. (result = %d)\n", result);
printf("openapiSntpServerReferenceStringLengthGet() sanity successful. \n");
printf("\nTesting openapiActiveSntpServerModeGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL SNTP server mode. (result = %d)\n", result);
printf("openapiActiveSntpServerModeGet() sanity successful. \n");
printf("\nTesting openapiSntpServerCurrentEntriesGet(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL parameter to current SNTP servers. (result = %d)\n", result);
printf("openapiSntpServerCurrentEntriesGet() sanity successful. \n");
printf("\nTesting openapiSntpServerLastAttemptStatus(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP Attempt Status. (result = %d)\n", result);
printf("openapiSntpServerLastAttemptStatus() sanity successful. \n");
printf("\nTesting openapiSntpServerLastUpdatedTime(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP Server Last Updated Time. (result = %d)\n", result);
printf("openapiSntpServerLastUpdatedTime() sanity successful. \n");
printf("\nTesting openapiSntpServerLastAttemptTime(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP Server Attempt Time. (result = %d)\n", result);
printf("openapiSntpServerLastAttemptTime() sanity successful. \n");
printf("\nTesting openapiSntpServerNumRequests(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP Attempt Status. (result = %d)\n", result);
printf("openapiSntpServerNumRequests() sanity successful. \n");
printf("\nTesting openapiSntpServerNumFailedRequests(): \n");
printf("NULL Client Handle. (result = %d)\n", result);
printf("NULL buff descriptor to SNTP server. (result = %d)\n", result);
printf("NULL parameter to SNTP Attempt Status. (result = %d)\n", result);
printf("openapiSntpServerNumFailedRequests() sanity successful. \n");
return;
}
int main(int argc, char **argv)
{
uint32_t testNum, arg1;
char switch_os_revision_string[100];
if (argc < 2)
{
printSntpAppMenu();
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 SNTP 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)
{
printSntpAppMenu();
exit(1);
}
sntpServerAdd(&clientHandle, argv[2]);
break;
case 2:
if (argc != 4)
{
printSntpAppMenu();
exit(1);
}
arg1 = atoi(argv[3]);
sntpServerPrioritySet(&clientHandle, argv[2], arg1);
break;
case 3:
if (argc != 4)
{
printSntpAppMenu();
exit(1);
}
arg1 = atoi(argv[3]);
sntpServerPortSet(&clientHandle, argv[2], arg1);
break;
case 4:
if (argc != 4)
{
printSntpAppMenu();
exit(1);
}
arg1 = atoi(argv[3]);
sntpServerVersionSet(&clientHandle, argv[2], arg1);
break;
case 5:
if (argc != 3)
{
printSntpAppMenu();
exit(1);
}
sntpServerDelete(&clientHandle, argv[2]);
break;
case 6:
if (argc != 2)
{
printSntpAppMenu();
exit(1);
}
sntpServerInfoGet(&clientHandle);
break;
case 7:
if (argc != 3)
{
printSntpAppMenu();
exit(1);
}
arg1 = atoi(argv[2]);
sntpClientModeSet(&clientHandle, arg1);
break;
case 8:
if (argc != 2)
{
printSntpAppMenu();
exit(1);
}
sntpClientInfoGet(&clientHandle);
break;
case 9:
if (argc != 2)
{
printSntpAppMenu();
exit(1);
}
sntpOpENAPISanity(&clientHandle);
break;
default:
printSntpAppMenu();
break;
}
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Stopping SNTP API example application");
return 0;
}