#include <stdlib.h>
#include <stdbool.h>
#include <unistd.h>
#include "rpcclt_openapi.h"
#include "proc_util.h"
#define OPENAPI_DEFAULT_IMAGE_DESCR_MAX 256
#define OPEN_BUFF_EX_SIZE (256+1)
char *exampleName;
{
uint32_t max;
return max;
}
uint32_t nameMaxLen,
char *activeLabel,
char *backupLabel)
{
aBuffdesc.
pstart = activeLabel;
aBuffdesc.
size = nameMaxLen;
bBuffdesc.pstart = backupLabel;
bBuffdesc.size = nameMaxLen;
{
printf("Bad return code trying to get code image labels. (result = %d)\n", result);
}
else
{
printf("imageLabelsGet: activeLabel=%s backupLabel=%s\n",
(char *)aBuffdesc.pstart, (char *)bBuffdesc.pstart);
}
}
uint32_t unit,
uint32_t nameMaxLen,
char *activeImage,
char *backupImage,
char *activatedImage)
{
aBuffdesc.pstart = activeImage;
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = backupImage;
bBuffdesc.size = nameMaxLen;
cBuffdesc.pstart = activatedImage;
cBuffdesc.size = nameMaxLen;
{
printf("Bad return code trying to get code image names. (result = %d)\n", result);
}
else
{
printf("imageNamesGet: activeImage=%s backupImage=%s activatedImage=%s\n",
(char *)aBuffdesc.pstart, (char *)bBuffdesc.pstart, (char *)cBuffdesc.pstart);
}
}
uint32_t nameMaxLen,
char *imageLabel,
char *imageDescr)
{
char labelStr[nameMaxLen];
strcpy(labelStr, imageLabel);
aBuffdesc.pstart = labelStr;
aBuffdesc.size = strlen(labelStr)+1;
bBuffdesc.pstart = imageDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
printf("Bad return code trying to get code image description. (result = %d)\n", result);
}
else
{
printf("imageDescrGet: imageLabel=%s imageDescr=%s\n", imageLabel, (char *)bBuffdesc.pstart);
}
}
uint32_t nameMaxLen,
char *imageLabel,
char *imageDescr)
{
char labelStr[nameMaxLen];
char descrStr[OPENAPI_DEFAULT_IMAGE_DESCR_MAX];
strcpy(labelStr, imageLabel);
aBuffdesc.pstart = labelStr;
aBuffdesc.size = strlen(labelStr)+1;
strcpy(descrStr, imageDescr);
bBuffdesc.pstart = descrStr;
bBuffdesc.size = strlen(descrStr)+1;
{
printf("imageDescrSet: Bad return code trying to set code image description. (result = %d)\n", result);
}
else
{
printf("imageDescrSet: imageLabel=%s imageDescr=%s\n", imageLabel, imageDescr);
}
}
uint32_t nameMaxLen,
char *imageLabel,
bool *isValid)
{
char labelStr[nameMaxLen];
strcpy(labelStr, imageLabel);
buffdesc.pstart = labelStr;
buffdesc.size = strlen(labelStr)+1;
{
printf("Bad return code trying to validate code image. (result = %d)\n", result);
}
else
{
printf(
"imageLabelIsValid: imageLabel=%s isValid=%s.\n", imageLabel, (flag==
OPEN_TRUE)?
"true":
"false");
}
}
uint32_t unit,
uint32_t nameMaxLen,
char *imageLabel,
{
char labelStr[nameMaxLen];
strcpy(labelStr, imageLabel);
buffdesc.pstart = labelStr;
buffdesc.size = strlen(labelStr)+1;
{
printf("imageActivate: Bad return code trying to set active image. (result = %d)\n", result);
}
else
{
printf("imageActivate: imageLabel=%s unit=%d.\n", imageLabel, unit);
}
}
uint32_t unit,
uint32_t nameMaxLen,
char *imageLabel)
{
char labelStr[nameMaxLen];
strcpy(labelStr, imageLabel);
buffdesc.pstart = labelStr;
buffdesc.size = strlen(labelStr)+1;
{
printf("imageDelete: Bad return code trying to delete image. (result = %d)\n", result);
}
else
{
printf("imageDelete: imageLabel=%s unit=%d.\n", imageLabel, unit);
}
}
uint32_t unit)
{
{
printf("bootcodeUpdate: Bad return code trying to update bootcode. (result = %d)\n", result);
}
else
{
printf("bootcodeUpdate: unit=%d.\n", unit);
}
}
uint32_t nameMaxLen,
char *imagePath,
char *imageLabel)
{
char activeLabel[nameMaxLen];
char backupLabel[nameMaxLen];
printf("Testing imageOpENAPIUpgradeTest()\n");
memset(activeLabel, 0, sizeof(activeLabel));
memset(backupLabel, 0, sizeof(backupLabel));
activeBuffdesc.pstart = activeLabel;
activeBuffdesc.size = sizeof(activeLabel);
backupBuffdesc.pstart = backupLabel;
backupBuffdesc.size = sizeof(backupLabel);
{
printf("Bad return code trying to get code image labels. (result = %d)\n", result);
return;
}
imageLocation.pstart = imagePath;
imageLocation.size = strlen(imagePath) + 1;
if (0 == strcmp(imageLabel, "active"))
{
imageName.pstart = activeLabel;
imageName.size = strlen(activeLabel) + 1;
}
else
{
imageName.pstart = backupLabel;
imageName.size = strlen(backupLabel) + 1;
}
{
printf("imageUpgrade: Bad return code trying to upgrade image [%s]. (result = %d)\n", imagePath, result);
}
else
{
printf("imageUpgrade: Successfully upgraded with image [%s]\n", imagePath);
}
}
{
char buf[OPEN_UBOOT_VERSION_LENGTH];
memset(buf, 0, sizeof(buf));
buffdesc.pstart = buf;
buffdesc.size = sizeof(buf);
{
printf("Bootcode version = %s\n", buf);
}
else
{
printf("Bootcode Version retrieve error\n");
}
return;
}
void printImageAppMenu()
{
printf("\nUsage: image_example <test#> <arg1> <arg2> ...\n\n");
printf("Test 1: get image labels: %s 1\n", exampleName);
printf("Test 2: get image names: %s 2\n", exampleName);
printf("Test 3: get image descriptions: %s 3\n", exampleName);
printf("Test 4: get image description: %s 4 image\n", exampleName);
printf("Test 5: set image description: %s 5 image description\n", exampleName);
printf("Test 6: delete backup image: %s 6 image\n", exampleName);
printf("Test 7: check that that argument (e.g., 'active') is a valid image label for this platform: %s 7 image\n", exampleName);
printf("Test 8: update boot code: %s 8\n", exampleName);
printf("Test 9: activate backup image and update boot code: %s 9\n", exampleName);
printf("Test 10: activate backup image but do not update boot code: %s 10\n", exampleName);
printf("Test 11: copy image to switch: %s 11 label path\n", exampleName);
printf("Test 12: run negative tests: %s 12\n", exampleName);
printf("Test 13: Boot Code Version: %s 13 \n", exampleName);
return;
}
uint32_t nameMaxLen)
{
char activeLabel[nameMaxLen];
char activeImage[nameMaxLen];
char activeDescr[OPENAPI_DEFAULT_IMAGE_DESCR_MAX];
char backupLabel[nameMaxLen];
char backupImage[nameMaxLen];
char activatedImage[nameMaxLen];
uint32_t unit = 1;
aBuffdesc.pstart = activeImage;
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = backupImage;
bBuffdesc.size = nameMaxLen;
cBuffdesc.pstart = activatedImage;
cBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = NULL;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeImage;
aBuffdesc.size = nameMaxLen + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = NULL;
bBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
bBuffdesc.pstart = backupImage;
bBuffdesc.size = nameMaxLen + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
bBuffdesc.size = nameMaxLen;
cBuffdesc.pstart = NULL;
cBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
cBuffdesc.pstart = activatedImage;
cBuffdesc.size = nameMaxLen + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = NULL;
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = backupLabel;
bBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = nameMaxLen + 1;
bBuffdesc.pstart = backupLabel;
bBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = NULL;
bBuffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = nameMaxLen;
bBuffdesc.pstart = backupLabel;
bBuffdesc.size = nameMaxLen + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = NULL;
buffdesc.size = nameMaxLen;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = activeLabel;
buffdesc.size = nameMaxLen + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
strcpy(activeLabel, "active");
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = NULL;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = nameMaxLen + 1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = NULL;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = NULL;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = nameMaxLen + 1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = 0;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_FAIL got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = NULL;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
aBuffdesc.pstart = activeLabel;
aBuffdesc.size = strlen(activeLabel)+1;
bBuffdesc.pstart = activeDescr;
bBuffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = activeLabel;
buffdesc.size = strlen(activeLabel)+1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = NULL;
buffdesc.size = strlen(activeLabel)+1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = activeLabel;
buffdesc.size = strlen(activeLabel)+1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_FAIL got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_FAIL got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = NULL;
buffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
buffdesc.pstart = activeLabel;
buffdesc.size = OPENAPI_DEFAULT_IMAGE_DESCR_MAX + 1;
{
fprintf(stderr, "%s:%d FAIL expect OPEN_E_PARAM got %d\n",
__FUNCTION__, __LINE__, result);
exit(1);
}
fprintf(stderr, "All sanity tests were successful.");
return;
}
int main(int argc, char **argv)
{
char switch_os_revision_string[100];
uint32_t testNum;
uint32_t nameMaxLen;
int unit = 1;
bool isValid;
char activeDescr[OPENAPI_DEFAULT_IMAGE_DESCR_MAX];
char backupDescr[OPENAPI_DEFAULT_IMAGE_DESCR_MAX];
char *activeLabel = NULL;
char *activeImage = NULL;
char *backupLabel = NULL;
char *backupImage = NULL;
char *activatedImage = NULL;
exampleName = argv[0];
if (argc < 2)
{
printImageAppMenu();
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 Code Image 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");
}
nameMaxLen = imageFileNameMaxLengthGet(&clientHandle);
activeLabel = (char*)malloc(nameMaxLen);
activeImage = (char*)malloc(nameMaxLen);
backupLabel = (char*)malloc(nameMaxLen);
backupImage = (char*)malloc(nameMaxLen);
activatedImage = (char*)malloc(nameMaxLen);
memset(activeLabel, 0, nameMaxLen);
memset(activeImage, 0, nameMaxLen);
memset(backupLabel, 0, nameMaxLen);
memset(backupImage, 0, nameMaxLen);
memset(activatedImage, 0, nameMaxLen);
printf("\n");
switch (testNum)
{
case 1:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
break;
case 2:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageNamesGet(&clientHandle, unit, nameMaxLen, activeImage, backupImage, activatedImage);
break;
case 3:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
imageDescrGet(&clientHandle, nameMaxLen, activeLabel, activeDescr);
imageDescrGet(&clientHandle, nameMaxLen, backupLabel, backupDescr);
break;
case 4:
if (argc != 3)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
if ((0 != strcmp(argv[2], activeLabel)) && (0 != strcmp(argv[2], backupLabel)))
{
printImageAppMenu();
exit(1);
}
imageDescrGet(&clientHandle, nameMaxLen, argv[2], activeDescr);
break;
case 5:
if (argc != 4)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
if ((0 != strcmp(argv[2], activeLabel)) && (0 != strcmp(argv[2], backupLabel)))
{
printImageAppMenu();
exit(1);
}
imageDescrSet(&clientHandle, nameMaxLen, argv[2], argv[3]);
break;
case 6:
if (argc != 3)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
if (strcmp(backupLabel, argv[2]) == 0)
{
imageDelete(&clientHandle, unit, nameMaxLen, argv[2]);
}
else
{
printf("Unable to delete a non-backup image '%s'. Try again with '%s'\n",
argv[2], backupLabel);
}
break;
case 7:
if (argc != 3)
{
printImageAppMenu();
exit(1);
}
imageLabelIsValid(&clientHandle, nameMaxLen, argv[2], &isValid);
break;
case 8:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
bootcodeUpdate(&clientHandle, unit);
break;
case 9:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
imageActivate(&clientHandle, unit, nameMaxLen, backupLabel,
OPEN_TRUE);
break;
case 10:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageLabelsGet(&clientHandle, nameMaxLen, activeLabel, backupLabel);
imageActivate(&clientHandle, unit, nameMaxLen, backupLabel,
OPEN_FALSE);
break;
case 11:
if (argc != 4)
{
printImageAppMenu();
exit(1);
}
if ((0 != strcmp(argv[2], "active")) && (0 != strcmp(argv[2], "backup")))
{
printImageAppMenu();
exit(1);
}
imageOpENAPIUpgradeTest(&clientHandle, nameMaxLen, argv[3], argv[2]);
break;
case 12:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageOpENAPISanity(&clientHandle, nameMaxLen);
break;
case 13:
if (argc != 2)
{
printImageAppMenu();
exit(1);
}
imageOpENAPIBootCodeVersion(&clientHandle);
break;
default:
printImageAppMenu();
break;
}
L7PROC_LOGF(L7PROC_LOG_SEVERITY_INFO, 0, "Stopping Code Image API example application");
free(activeLabel);
free(activeImage);
free(backupLabel);
free(backupImage);
free(activatedImage);
return 0;
}