|
Packit |
857059 |
/* BEGIN_ICS_COPYRIGHT5 ****************************************
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Copyright (c) 2015, Intel Corporation
|
|
Packit |
857059 |
|
|
Packit |
857059 |
Redistribution and use in source and binary forms, with or without
|
|
Packit |
857059 |
modification, are permitted provided that the following conditions are met:
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* Redistributions of source code must retain the above copyright notice,
|
|
Packit |
857059 |
this list of conditions and the following disclaimer.
|
|
Packit |
857059 |
* Redistributions in binary form must reproduce the above copyright
|
|
Packit |
857059 |
notice, this list of conditions and the following disclaimer in the
|
|
Packit |
857059 |
documentation and/or other materials provided with the distribution.
|
|
Packit |
857059 |
* Neither the name of Intel Corporation nor the names of its contributors
|
|
Packit |
857059 |
may be used to endorse or promote products derived from this software
|
|
Packit |
857059 |
without specific prior written permission.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
|
Packit |
857059 |
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit |
857059 |
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
Packit |
857059 |
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE
|
|
Packit |
857059 |
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit |
857059 |
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
|
Packit |
857059 |
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
|
Packit |
857059 |
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
|
Packit |
857059 |
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
Packit |
857059 |
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
Packit |
857059 |
|
|
Packit |
857059 |
* ** END_ICS_COPYRIGHT5 ****************************************/
|
|
Packit |
857059 |
/* [ICS VERSION STRING: unknown] */
|
|
Packit |
857059 |
#include <stdio.h>
|
|
Packit |
857059 |
#include <stdlib.h>
|
|
Packit |
857059 |
#include <unistd.h>
|
|
Packit |
857059 |
#include <string.h>
|
|
Packit |
857059 |
#include <ctype.h>
|
|
Packit |
857059 |
#include <errno.h>
|
|
Packit |
857059 |
#include <time.h>
|
|
Packit |
857059 |
#include "chassis_setup.h"
|
|
Packit |
857059 |
#include "iba/stl_types.h"
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#define NO_TZ_DST_SETUP 100
|
|
Packit |
857059 |
#define SYSLOG_PORT_DEFAULT -1
|
|
Packit |
857059 |
#define SYSLOG_FACILITY_DEFAULT -1
|
|
Packit |
857059 |
/* Info for all chassis */
|
|
Packit |
857059 |
int tzOffset; /* Offset in hours (from UTC) */
|
|
Packit |
857059 |
dstInfo_t dstInfo; /* DST start and end info */
|
|
Packit |
857059 |
char syslogIpAddr[20]; /* IP addr of syslog server */
|
|
Packit |
857059 |
int syslogPort = SYSLOG_PORT_DEFAULT; /* Port for syslog */
|
|
Packit |
857059 |
int syslogFacility = SYSLOG_FACILITY_DEFAULT; /* Facility level for syslog */
|
|
Packit |
857059 |
char ntpIpAddr[20]; /* IP addr of NTP server */
|
|
Packit |
857059 |
int linkWidthSelection; /* selection for link width */
|
|
Packit |
857059 |
int setname; /* should OPA Node Desc be set to match ethernet name */
|
|
Packit |
857059 |
int linkCRCModeSelection; /* selection for Link CRC mode */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* Globals for chassis specifics */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int numChassis;
|
|
Packit |
857059 |
chassisInfo_t *chassisInfoTable;
|
|
Packit |
857059 |
int chassisInfoTableSize;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
void stripCR(char *buf)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
char *p;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ((p = strchr(buf, '\n')) != NULL)
|
|
Packit |
857059 |
*p = '\0';
|
|
Packit |
857059 |
if ((p = strchr(buf, '\r')) != NULL)
|
|
Packit |
857059 |
*p = '\0';
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getYesNo(char *question, int def)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int done = 0;
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
char answerBuf[8];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
while (!done)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("%s: ", question);
|
|
Packit |
857059 |
if (fgets(answerBuf, 8, stdin)) {
|
|
Packit |
857059 |
stripCR(answerBuf);
|
|
Packit |
857059 |
if (strncmp(answerBuf, "none", 4) == 0)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
res = 0;
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else if ((answerBuf[0] == 'n') || (answerBuf[0] == 'N'))
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
res = 0;
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else if ((answerBuf[0] == 'y') || (answerBuf[0] == 'Y'))
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
res = 1;
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else if (strlen(answerBuf) == 0)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
res = def;
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
fprintf(stderr, "<%s> is not a valid entry - please enter y or n ... \n", answerBuf);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getInt(char *question, int low, int high, boolean allowAbort, int abortValue)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int done = 0;
|
|
Packit |
857059 |
int selection;
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
int goodInt;
|
|
Packit |
857059 |
char answerBuf[64];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
while (!done)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (allowAbort)
|
|
Packit |
857059 |
printf("%s (or none): ", question);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
printf("%s: ", question);
|
|
Packit |
857059 |
if (fgets(answerBuf, 64, stdin)) {
|
|
Packit |
857059 |
stripCR(answerBuf);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (allowAbort && (strncmp(answerBuf, "none", 4) == 0))
|
|
Packit |
857059 |
return abortValue;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (strlen(answerBuf) == 0)
|
|
Packit |
857059 |
goodInt = 0;
|
|
Packit |
857059 |
else {
|
|
Packit |
857059 |
for (i = 0, goodInt = 1; (i < strlen(answerBuf)) && goodInt; i++) {
|
|
Packit |
857059 |
if (!isdigit(answerBuf[i]))
|
|
Packit |
857059 |
goodInt = 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (goodInt)
|
|
Packit |
857059 |
selection = atoi(answerBuf);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
selection = -1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ((selection < low) || (selection > high))
|
|
Packit |
857059 |
fprintf(stderr, "<%s> is not a valid entry - please select a choice from %d to %d ...\n", answerBuf, low, high);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
res = selection;
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
void setupTZInfo(tzCode_t timeZone)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
switch (timeZone)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
case TZ_NA_ATLA:
|
|
Packit |
857059 |
/* NAmer - Atlantic */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -4;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_EAST:
|
|
Packit |
857059 |
/* NAmer - Eastern */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -5;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_CENT:
|
|
Packit |
857059 |
/* NAmer - Central */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -6;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_MOUN:
|
|
Packit |
857059 |
/* NAmer - Mountain */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -7;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_PACI:
|
|
Packit |
857059 |
/* NAmer - Pacific */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -8;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_ASKA:
|
|
Packit |
857059 |
/* NAmer - Alaska */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NA_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -9;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NA_HAWI:
|
|
Packit |
857059 |
/* NAmer - Hawaii */
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = -10;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_EU_UTC:
|
|
Packit |
857059 |
/* Europe - UTC */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = EUR_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 0;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_EU_CENT:
|
|
Packit |
857059 |
/* Europe - Central */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = EUR_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 1;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_EU_EAST:
|
|
Packit |
857059 |
/* Europe - Eastern */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = EUR_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 2;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_EU_MOSC:
|
|
Packit |
857059 |
/* Europe - Russia/Moscow */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = EUR_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 3;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_AS_CHIN:
|
|
Packit |
857059 |
/* China */
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 8;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_AS_JAPN:
|
|
Packit |
857059 |
/* Japan */
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 9;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_AU_SYDN:
|
|
Packit |
857059 |
/* Australia - Sydney */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = AUS_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 10;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case TZ_NZ_AUCK:
|
|
Packit |
857059 |
/* New Zealand - Auckland */
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
dstInfo = NZ_DSTInfo;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
dstInfo = None_DSTInfo;
|
|
Packit |
857059 |
tzOffset = 12;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
void getTimeZoneInfo(int configureTZDST)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int useServerTZInfo = 1;
|
|
Packit |
857059 |
int tzSelection;
|
|
Packit |
857059 |
int configureManually = 0;
|
|
Packit |
857059 |
int done = 0;
|
|
Packit |
857059 |
tzCode_t timeZone = TZ_NA_EAST;
|
|
Packit |
857059 |
char questionText[100];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (configureTZDST)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
useServerTZInfo = getYesNo("Do you want to use the local timezone information from the local server? [y]", 1);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (useServerTZInfo)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
tzset();
|
|
Packit |
857059 |
switch (TIMEZONEOFFSET)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
case 0:
|
|
Packit |
857059 |
/* UTC */
|
|
Packit |
857059 |
timeZone = TZ_EU_UTC;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 4:
|
|
Packit |
857059 |
/* NAmer - Atlantic */
|
|
Packit |
857059 |
timeZone = TZ_NA_ATLA;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 5:
|
|
Packit |
857059 |
/* NAmer - Eastern */
|
|
Packit |
857059 |
timeZone = TZ_NA_EAST;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 6:
|
|
Packit |
857059 |
/* NAmer - Central */
|
|
Packit |
857059 |
timeZone = TZ_NA_CENT;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 7:
|
|
Packit |
857059 |
/* NAmer - Mountain */
|
|
Packit |
857059 |
timeZone = TZ_NA_MOUN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 8:
|
|
Packit |
857059 |
/* NAmer - Pacific */
|
|
Packit |
857059 |
timeZone = TZ_NA_PACI;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 9:
|
|
Packit |
857059 |
/* NAmer - Alaska */
|
|
Packit |
857059 |
timeZone = TZ_NA_ASKA;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 10:
|
|
Packit |
857059 |
/* NAmer - Hawaii */
|
|
Packit |
857059 |
timeZone = TZ_NA_HAWI;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -1:
|
|
Packit |
857059 |
/* Cent Europe */
|
|
Packit |
857059 |
timeZone = TZ_EU_CENT;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -2:
|
|
Packit |
857059 |
/* East Europe */
|
|
Packit |
857059 |
timeZone = TZ_EU_EAST;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -3:
|
|
Packit |
857059 |
/* Russia - Moscow */
|
|
Packit |
857059 |
timeZone = TZ_EU_MOSC;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -8:
|
|
Packit |
857059 |
/* China */
|
|
Packit |
857059 |
timeZone = TZ_AS_CHIN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -9:
|
|
Packit |
857059 |
/* Japan */
|
|
Packit |
857059 |
timeZone = TZ_AS_JAPN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -10:
|
|
Packit |
857059 |
/* Australia - Sydney */
|
|
Packit |
857059 |
timeZone = TZ_AU_SYDN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case -12:
|
|
Packit |
857059 |
/* New Zealand - Auckland */
|
|
Packit |
857059 |
timeZone = TZ_NZ_AUCK;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
setupTZInfo(timeZone);
|
|
Packit |
857059 |
} /* using server TZ info */
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{ /* not using server TZ info */
|
|
Packit |
857059 |
|
|
Packit |
857059 |
printf("Select a locale that matches your location: \n");
|
|
Packit |
857059 |
printf("\t1 - North America - Atlantic\n");
|
|
Packit |
857059 |
printf("\t2 - North America - Eastern\n");
|
|
Packit |
857059 |
printf("\t3 - North America - Central\n");
|
|
Packit |
857059 |
printf("\t4 - North America - Mountain\n");
|
|
Packit |
857059 |
printf("\t5 - North America - Arizona\n");
|
|
Packit |
857059 |
printf("\t6 - North America - Pacific\n");
|
|
Packit |
857059 |
printf("\t7 - North America - Alaska\n");
|
|
Packit |
857059 |
printf("\t8 - North America - Hawaii\n");
|
|
Packit |
857059 |
printf("\t9 - UK\n");
|
|
Packit |
857059 |
printf("\t10 - Central Europe\n");
|
|
Packit |
857059 |
printf("\t11 - Eastern Europe\n");
|
|
Packit |
857059 |
printf("\t12 - Russia - Moscow\n");
|
|
Packit |
857059 |
printf("\t13 - China\n");
|
|
Packit |
857059 |
printf("\t14 - Japan\n");
|
|
Packit |
857059 |
printf("\t15 - Australia - Sydney\n");
|
|
Packit |
857059 |
printf("\t16 - New Zealand - Auckland\n");
|
|
Packit |
857059 |
printf("\t17 - Configure manually\n");
|
|
Packit |
857059 |
tzSelection = getInt("Enter selection", 1, 17, FALSE, 0);
|
|
Packit |
857059 |
daylight = 1;
|
|
Packit |
857059 |
switch (tzSelection)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
case 1:
|
|
Packit |
857059 |
timeZone = TZ_NA_ATLA;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 2:
|
|
Packit |
857059 |
timeZone = TZ_NA_EAST;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 3:
|
|
Packit |
857059 |
timeZone = TZ_NA_CENT;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 4:
|
|
Packit |
857059 |
timeZone = TZ_NA_MOUN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 5:
|
|
Packit |
857059 |
timeZone = TZ_NA_MOUN;
|
|
Packit |
857059 |
daylight = 0;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 6:
|
|
Packit |
857059 |
timeZone = TZ_NA_PACI;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 7:
|
|
Packit |
857059 |
timeZone = TZ_NA_ASKA;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 8:
|
|
Packit |
857059 |
timeZone = TZ_NA_HAWI;
|
|
Packit |
857059 |
daylight = 0;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 9:
|
|
Packit |
857059 |
timeZone = TZ_EU_UTC;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 10:
|
|
Packit |
857059 |
timeZone = TZ_EU_CENT;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 11:
|
|
Packit |
857059 |
timeZone = TZ_EU_EAST;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 12:
|
|
Packit |
857059 |
timeZone = TZ_EU_MOSC;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 13:
|
|
Packit |
857059 |
timeZone = TZ_AS_CHIN;
|
|
Packit |
857059 |
daylight = 0;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 14:
|
|
Packit |
857059 |
timeZone = TZ_AS_JAPN;
|
|
Packit |
857059 |
daylight = 0;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 15:
|
|
Packit |
857059 |
timeZone = TZ_AU_SYDN;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 16:
|
|
Packit |
857059 |
timeZone = TZ_NZ_AUCK;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
case 17:
|
|
Packit |
857059 |
configureManually = 1;
|
|
Packit |
857059 |
break;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if (!configureManually)
|
|
Packit |
857059 |
setupTZInfo(timeZone);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
tzOffset = getInt("Enter timezone offset in hours - positive is east, negative is west of UTC", -12, 12, FALSE, 0);
|
|
Packit |
857059 |
daylight = getYesNo("Does your timezone observe Daylight Saving or Summer Time? [y]", 1);
|
|
Packit |
857059 |
if (daylight)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
while (!done)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("You will be prompted for adjustment information - which day of the week in which month (e.g. 2nd Sunday in March),\n");
|
|
Packit |
857059 |
printf("for both start and end of the observance.\n\n");
|
|
Packit |
857059 |
printf("For month, valid replies are: 3-11: 3-Mar, 4-Apr, 5-May, 6-Jun, 7-Jul, 8-Aug, 9-Sep, 10-Oct, 11-Nov\n");
|
|
Packit |
857059 |
printf("For day of week, valid replies are: 1-7: 1-Sun, 2-Mon, 3-Tue, 4-Wed, 5-Thu, 6-Fri, 7-Sat\n");
|
|
Packit |
857059 |
printf("For which day, valid replies are: 1-5: 1-1st, 2-2nd, 3-3rd, 4-4th, 5-last\n");
|
|
Packit |
857059 |
dstInfo.startMonth = getInt("Enter the month in which your timezone begins observing DST/Summer Time", 3, 11, FALSE, 0);
|
|
Packit |
857059 |
dstInfo.startDay = getInt("Enter the day of week on which your timezone begins observing DST/Summer Time", 1, 7, FALSE, 0);
|
|
Packit |
857059 |
snprintf(questionText, sizeof(questionText), "Enter which %s in %s your timezone begins observing DST/Summer Time", DaysOfWeek[dstInfo.startDay], MonthsOfYear[dstInfo.startMonth]);
|
|
Packit |
857059 |
dstInfo.startWhich = getInt(questionText, 1, 5, FALSE, 0);
|
|
Packit |
857059 |
dstInfo.endMonth = getInt("Enter the month in which your timezone ends observing DST/Summer Time", 3, 11, FALSE, 0);
|
|
Packit |
857059 |
dstInfo.endDay = getInt("Enter the day of week on which your timezone ends observing DST/Summer Time", 1, 7, FALSE, 0);
|
|
Packit |
857059 |
snprintf(questionText, sizeof(questionText), "Enter which %s in %s your timezone ends observing DST/Summer Time", DaysOfWeek[dstInfo.endDay], MonthsOfYear[dstInfo.endMonth]);
|
|
Packit |
857059 |
dstInfo.endWhich = getInt(questionText, 1, 5, FALSE, 0);
|
|
Packit |
857059 |
printf("You have selected the following start/end parameters:\n");
|
|
Packit |
857059 |
printf(" Start DST/Summer Time on the %s %s in %s\n", Ordinals[dstInfo.startWhich], DaysOfWeek[dstInfo.startDay], MonthsOfYear[dstInfo.startMonth]);
|
|
Packit |
857059 |
printf(" End DST/Summer Time on the %s %s in %s\n", Ordinals[dstInfo.endWhich], DaysOfWeek[dstInfo.endDay], MonthsOfYear[dstInfo.endMonth]);
|
|
Packit |
857059 |
done = getYesNo("Does this reflect your timezone's start and end DST/Summer Time adjustments? [y]", 1);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
} /* not using server TZ info */
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
tzOffset = NO_TZ_DST_SETUP;
|
|
Packit |
857059 |
memset((void *)&dstInfo, 0, sizeof(dstInfo));
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int validateIpAddrSection(char *p)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int res = 0;
|
|
Packit |
857059 |
int digitCount = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
while(isdigit(*p++))
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
digitCount++;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if (digitCount <= 3)
|
|
Packit |
857059 |
res = digitCount;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getIpAddress(char *ipAddress, char *promptText)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
char inbuf[64];
|
|
Packit |
857059 |
int ipAddrParts[4];
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
int done = 0;
|
|
Packit |
857059 |
int i = 0;
|
|
Packit |
857059 |
char *p;
|
|
Packit |
857059 |
int goodSyntax = 1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
while (!done)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
p = inbuf;
|
|
Packit |
857059 |
printf("Enter IP address for %s (or none): ", promptText);
|
|
Packit |
857059 |
if (fgets(inbuf, 64, stdin) == NULL) {
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
printf("\n");
|
|
Packit |
857059 |
} else {
|
|
Packit |
857059 |
if (strncmp(inbuf, "none", 4) == 0)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
return 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
goodSyntax = 1;
|
|
Packit |
857059 |
for (i = 0; i < 4; i++)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if ((res = validateIpAddrSection(p)) > 0)
|
|
Packit |
857059 |
p += res;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (i < 3)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (*p == '.')
|
|
Packit |
857059 |
p++;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (goodSyntax)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
sscanf(inbuf, "%d.%d.%d.%d", &ipAddrParts[0], &ipAddrParts[1], &ipAddrParts[2], &ipAddrParts[3]);
|
|
Packit |
857059 |
goodSyntax = 1;
|
|
Packit |
857059 |
i = 0;
|
|
Packit |
857059 |
while (goodSyntax && (i < 4))
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if ((ipAddrParts[i] < 0) || (ipAddrParts[i] > 255))
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
i++;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (!goodSyntax)
|
|
Packit |
857059 |
fprintf(stderr, "Bad IP Address syntax: %s", inbuf);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (goodSyntax)
|
|
Packit |
857059 |
snprintf(ipAddress, 16, "%d.%d.%d.%d", ipAddrParts[0], ipAddrParts[1], ipAddrParts[2], ipAddrParts[3]);
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
res = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int validLicenseKey(char *key)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
char *p;
|
|
Packit |
857059 |
int goodSyntax = 1;
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
int j;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* valid syntax is 5 groups of six alphanumeric chars, each followed by a hyphen, and lastly
|
|
Packit |
857059 |
a single alphanumeric */
|
|
Packit |
857059 |
p = key;
|
|
Packit |
857059 |
for (i = 0; (i < 5) && goodSyntax; i++)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
for (j = 0; (j < 6) && goodSyntax; j++)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!isalnum(*p++))
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
if (j == 5)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (*p++ != '-')
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if (!isalnum(*p))
|
|
Packit |
857059 |
goodSyntax = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(goodSyntax);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
void removeCR(char *buf)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
char *p;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ((p = strchr(buf, '\n')) != NULL)
|
|
Packit |
857059 |
*p = '\0';
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getLicenseKey(char *smKey, char *promptText)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int done = 0;
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
char keyBuf[80];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
while (!done)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("Enter license key for %s: ", promptText);
|
|
Packit |
857059 |
if (fgets(keyBuf, 80, stdin)) {
|
|
Packit |
857059 |
removeCR(keyBuf);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (validLicenseKey(keyBuf))
|
|
Packit |
857059 |
done = 1;
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
fprintf(stderr, "Bad license key syntax\n");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
strcpy(smKey, keyBuf);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int storeChassisInfo(char *ipAddr, char *smKey)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
chassisInfo_t *oldTable;
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (numChassis == chassisInfoTableSize)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
oldTable = chassisInfoTable;
|
|
Packit |
857059 |
if ((chassisInfoTable = (chassisInfo_t *)malloc(sizeof(chassisInfo_t) * (chassisInfoTableSize + CHASSISINFOBLOCK))) == NULL)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
fprintf(stderr, "Error allocating table for chassis info\n");
|
|
Packit |
857059 |
return(0);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
if (oldTable != NULL)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
for (i = 0; i < chassisInfoTableSize; i++)
|
|
Packit |
857059 |
memcpy(&chassisInfoTable[i], &oldTable[i], sizeof(chassisInfo_t));
|
|
Packit |
857059 |
free(oldTable);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
chassisInfoTableSize += CHASSISINFOBLOCK;
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
memcpy(&chassisInfoTable[numChassis].chassisIpAddr, ipAddr, strlen(ipAddr)+1);
|
|
Packit |
857059 |
memcpy(&chassisInfoTable[numChassis].chassisSMKey, smKey, strlen(smKey)+1);
|
|
Packit |
857059 |
numChassis++;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getChassisSpecifics(int argc, char *argv[])
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
#if 0
|
|
Packit |
857059 |
int ipAddr;
|
|
Packit |
857059 |
int licenseKey;
|
|
Packit |
857059 |
char promptText[20];
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
char chassisIpAddr[20];
|
|
Packit |
857059 |
char chassisSMKey[50];
|
|
Packit |
857059 |
|
|
Packit |
857059 |
for (i = 2; i < argc; i++)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
#if 0
|
|
Packit |
857059 |
sprintf(promptText, "chassis %s", argv[i]);
|
|
Packit |
857059 |
printf("%s\n", promptText);
|
|
Packit |
857059 |
ipAddr = getYesNo("Do you wish to set the chassis IP address for this chassis? [n]", 0);
|
|
Packit |
857059 |
if (ipAddr)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!(res = getIpAddress(chassisIpAddr, promptText)))
|
|
Packit |
857059 |
NOIPADDR(chassisIpAddr);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
NOIPADDR(chassisIpAddr);
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
NOIPADDR(chassisIpAddr);
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
|
|
Packit |
857059 |
#if 0
|
|
Packit |
857059 |
licenseKey = getYesNo("Do you wish to add an SM license key for this chassis? [y]", 1);
|
|
Packit |
857059 |
if (licenseKey)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!(res = getLicenseKey(chassisSMKey, promptText)))
|
|
Packit |
857059 |
strcpy(chassisSMKey, "NO-KEY");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
strcpy(chassisSMKey, "NO-KEY");
|
|
Packit |
857059 |
res = storeChassisInfo(chassisIpAddr, chassisSMKey);
|
|
Packit |
857059 |
#else
|
|
Packit |
857059 |
strcpy(chassisSMKey, "NO-KEY");
|
|
Packit |
857059 |
res = storeChassisInfo(chassisIpAddr, chassisSMKey);
|
|
Packit |
857059 |
#endif
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int getGeneralInfo()
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int cfgSyslog = 0;
|
|
Packit |
857059 |
int useSyslogServer = 0;
|
|
Packit |
857059 |
int useSyslogPort = 0;
|
|
Packit |
857059 |
int useSyslogFacility = 0;
|
|
Packit |
857059 |
int useNTPServer = 0;
|
|
Packit |
857059 |
int setTzInfo = 0;
|
|
Packit |
857059 |
int setLinkWidth = 0;
|
|
Packit |
857059 |
int setLinkCRCMode = 0;
|
|
Packit |
857059 |
int res = 1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
cfgSyslog = getYesNo("Do you wish to adjust syslog configuration settings? [y]", 1);
|
|
Packit |
857059 |
if (cfgSyslog)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
useSyslogServer = getYesNo("Do you wish to configure a syslog server? [y]", 1);
|
|
Packit |
857059 |
if (useSyslogServer)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!(res = getIpAddress(syslogIpAddr, "syslog server")))
|
|
Packit |
857059 |
NOIPADDR(syslogIpAddr);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
NOIPADDR(syslogIpAddr);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
useSyslogPort = getYesNo("Do you wish to configure the syslog TCP/UDP port number? [n]", 0);
|
|
Packit |
857059 |
if (useSyslogPort)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
syslogPort = getInt("Enter TCP/UDP port number for syslog", 1, 1<<16, TRUE, SYSLOG_PORT_DEFAULT);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
useSyslogFacility = getYesNo("Do you wish to configure the syslog facility? [n]", 0);
|
|
Packit |
857059 |
if (useSyslogFacility)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
syslogFacility = getInt("Enter facility level for syslog (0-23)", 0, 23, TRUE, SYSLOG_FACILITY_DEFAULT);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
NOIPADDR(syslogIpAddr);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
useNTPServer = getYesNo("Do you wish to configure an NTP server? [y]", 1);
|
|
Packit |
857059 |
if (useNTPServer)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
if (!(res = getIpAddress(ntpIpAddr, "NTP server")))
|
|
Packit |
857059 |
NOIPADDR(ntpIpAddr);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
else
|
|
Packit |
857059 |
NOIPADDR(ntpIpAddr);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
setTzInfo = getYesNo("Do you wish to configure timezone and DST information? [y]", 1);
|
|
Packit |
857059 |
getTimeZoneInfo(setTzInfo);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
setLinkWidth = getYesNo("Do you wish to configure the chassis link width? [n]", 0);
|
|
Packit |
857059 |
if (setLinkWidth)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("\t1 : 1X\n\t2 : 2X\n\t3 : 1X/2X\n\t4 : 3X\n\t5 : 1X/3X\n\t6 : 2X/3X\n\t7 : 1X/2X/3X\n\t8 : 4X\n\t9 : 1X/4X\n\t10 : 2X/4X\n\t11 : 1X/2X/4X\n\t12 : 3X/4X\n\t13 : 1X/3X/4X\n\t14 : 2X/3X/4X\n\t15 : 1X/2X/3X/4X\n");
|
|
Packit |
857059 |
linkWidthSelection = getInt("Enter selection", 1, 15, TRUE, 0);
|
|
Packit |
857059 |
if (linkWidthSelection > 0)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
printf("*** Note: a reboot of all chassis devices is required in order to activate\n*** changes to the chassis link width\n");
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
} else
|
|
Packit |
857059 |
linkWidthSelection = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
setname = getYesNo("Do you wish to configure OPA Node Desc to match ethernet chassis name? [y]", 1);
|
|
Packit |
857059 |
if (setname) {
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
printf("*** Note: a reboot of all chassis devices is required in order to activate\n*** changes to the chassis OPA Node Desc\n");
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
setLinkCRCMode = getYesNo("Do you wish to configure the Link CRC Mode? [n]", 0);
|
|
Packit |
857059 |
if (setLinkCRCMode) {
|
|
Packit |
857059 |
printf("\t0 : 16b,\n\t1 : 14b/16b,\n\t2 : 48b/16b,\n\t3 : 48b/14b/16b,\n\t4 : per-lane/16b,\n\t5 : per-lane/14b/16b,\n\t6 : per-lane/48b/16b,\n\t7 : per-lane/48b/14b/16b\n");
|
|
Packit |
857059 |
linkCRCModeSelection = getInt("Enter selection", 0, 7, TRUE, -1);
|
|
Packit |
857059 |
if (linkCRCModeSelection > -1)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
printf("*** Note: a reboot of all chassis devices is required in order to activate\n*** changes to the chassis link CRC mode\n");
|
|
Packit |
857059 |
printf("*******************************************************************************\n");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
} else
|
|
Packit |
857059 |
linkCRCModeSelection = -1;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
return(res);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
int
|
|
Packit |
857059 |
main(int argc, char *argv[])
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
int i;
|
|
Packit |
857059 |
FILE *fp_out;
|
|
Packit |
857059 |
char *dirName;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
chassisInfoTable = NULL;
|
|
Packit |
857059 |
chassisInfoTableSize = 0;
|
|
Packit |
857059 |
numChassis = 0;
|
|
Packit |
857059 |
|
|
Packit |
857059 |
dirName = argv[1];
|
|
Packit |
857059 |
if (dirName == NULL)
|
|
Packit |
857059 |
dirName = ".";
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if (chdir(dirName) < 0) {
|
|
Packit |
857059 |
fprintf(stderr, "Error changing directory to %s: %s\n", dirName, strerror(errno));
|
|
Packit |
857059 |
exit(1);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
getChassisSpecifics(argc, argv);
|
|
Packit |
857059 |
getGeneralInfo();
|
|
Packit |
857059 |
|
|
Packit |
857059 |
if ((fp_out = fopen("./.chassisSetup.out","w")) == NULL)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
fprintf(stderr, "Error opening .chassisSetup.out for output: %s\n", strerror(errno));
|
|
Packit |
857059 |
exit(1);
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* display chassis info */
|
|
Packit |
857059 |
fprintf(fp_out, "Number of chassis: %d\n", numChassis);
|
|
Packit |
857059 |
for (i = 0; i < numChassis; i++)
|
|
Packit |
857059 |
{
|
|
Packit |
857059 |
fprintf(fp_out, "%d Chassis %s IP_Addr: %s\n", i+2, argv[i+2], chassisInfoTable[i].chassisIpAddr);
|
|
Packit |
857059 |
fprintf(fp_out, "%d Chassis %s SM_Key: %s\n", i+2, argv[i+2], (chassisInfoTable[i].chassisSMKey != NULL) ? chassisInfoTable[i].chassisSMKey : "NULL");
|
|
Packit |
857059 |
}
|
|
Packit |
857059 |
|
|
Packit |
857059 |
/* display general info */
|
|
Packit |
857059 |
fprintf(fp_out, "Syslog Server IP_Address:%s\n", syslogIpAddr);
|
|
Packit |
857059 |
fprintf(fp_out, "Syslog Port:%d\n", syslogPort);
|
|
Packit |
857059 |
fprintf(fp_out, "Syslog Facility:%d\n", syslogFacility);
|
|
Packit |
857059 |
fprintf(fp_out, "NTP Server IP_Address:%s\n", ntpIpAddr);
|
|
Packit |
857059 |
fprintf(fp_out, "Timezone offset:%d\n", tzOffset);
|
|
Packit |
857059 |
fprintf(fp_out, "Start DST:%d %d %d\n",
|
|
Packit |
857059 |
dstInfo.startWhich,
|
|
Packit |
857059 |
dstInfo.startDay,
|
|
Packit |
857059 |
dstInfo.startMonth);
|
|
Packit |
857059 |
fprintf(fp_out, "End DST:%d %d %d\n",
|
|
Packit |
857059 |
dstInfo.endWhich,
|
|
Packit |
857059 |
dstInfo.endDay,
|
|
Packit |
857059 |
dstInfo.endMonth);
|
|
Packit |
857059 |
fprintf(fp_out, "Link Width Selection:%d\n", linkWidthSelection);
|
|
Packit |
857059 |
fprintf(fp_out, "Set OPA Node Desc:%s\n", setname?"y":"n");
|
|
Packit |
857059 |
fprintf(fp_out, "Link CRC Mode:%d\n", linkCRCModeSelection);
|
|
Packit |
857059 |
|
|
Packit |
857059 |
fclose(fp_out);
|
|
Packit |
857059 |
exit(0);
|
|
Packit |
857059 |
}
|