Hi Mahesh, I would like to add Anders in for his comment.
Your below concern belongs to extended SaNameT in general, not only for LOG. I am not sure that use case (?) is valid or not. Regards, Vu > -----Original Message----- > From: A V Mahesh [mailto:[email protected]] > Sent: Monday, July 11, 2016 11:06 AM > To: Vu Minh Nguyen <[email protected]>; > [email protected] > Cc: [email protected] > Subject: Re: [PATCH 1 of 4] log: add one new option -f to saflogger tool > [#1315] > > Hi Vu, > > On 7/8/2016 4:08 PM, Vu Minh Nguyen wrote: > > Hi Mahesh, > > > > To make long DN work (e.g: long DN at @Ng token), we have to do some > > settings first. IMM is one of them. > > You can refer to ` setUpTestEnv()` @ tet_log_longDN.c for details on this. > [AVM] I understand that the Agent has to do > `setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1);` > to enable long DN , which I did for my LAG ( An application) , as we > know LAGA using IMMA,NTFA , ect ... implicitly, > in such case user will not expect , for each Agent that implicitly > getting used ( user un aware) , > what was trying to say is for all implicit agent long DN should be > enabled implicitly. > > -AVM > > > > > One question, have you tried to run the added test suite #13 for verifying > > long DN? > > With this test suite, before starting test, each TC does change precondition > > settings to make long DN work . > > > > If you want to see the verification data, enable the environment ` > > LOGTEST_ENABLE_STDOUT`. > > > > E.g: > > # LOGTEST_ENABLE_STDOUT=1 logtest 13 > > > > Regards, Vu > > > >> -----Original Message----- > >> From: A V Mahesh [mailto:[email protected]] > >> Sent: Friday, July 8, 2016 4:00 PM > >> To: Vu Minh Nguyen <[email protected]>; > >> [email protected] > >> Cc: [email protected] > >> Subject: Re: [PATCH 1 of 4] log: add one new option -f to saflogger tool > >> [#1315] > >> > >> Hi Vu, > >> > >> While validating the patch , i received following errors , do we need to > >> apply any other IMM patchs > >> > >> to validate this patch ? > >> > >> > ============================================================== > >> ================ > >> > >> # Jul 8 13:03:03 SC-1 osafimmnd[23888]: NO ERR_INVALID_PARAM: RDN > >> attribute value > >> > safLgStr=LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> LLLLLLLLLLLLLLLLL > >> is too large: 997. Max length is 64 for SaStringT > >> Jul 8 13:03:03 SC-1 osaflogd[23903]: WA saImmOiRtObjectCreate_2 > >> returned 7 for > >> > safLgStr=LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> > LLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL > >> LLLLLLLLLLLLLLLLL, > >> parent (null) > >> > >> > ============================================================== > >> ================ > >> > >> -AVM > >> > >> > >> On 7/8/2016 10:19 AM, A V Mahesh wrote: > >>> Hi Vu, > >>> > >>> On 7/8/2016 10:11 AM, Vu Minh Nguyen wrote: > >>>> I zipped all the patches in attached file, you can try to apply it in > >>>> the > >>>> meantime. Thanks. > >>> Thanks The attached patches are getting applied. > >>> > >>> -AVM > >>> > >>> On 7/8/2016 10:11 AM, Vu Minh Nguyen wrote: > >>>> Hi Mahesh, > >>>> > >>>> I have tried to apply these patches (copy from emails [PATCH x of 4]) > > to > >>>> latest staging and it works. > >>>> And I see you get failed at the first patch (saflogger tool), then I > >>>> guess > >>>> the patches you applied were broken somehow. > >>>> > >>>> Can you send me the saflogger patch (1st patch) that you used? I will > >>>> check > >>>> it to see why you get failed. > >>>> > >>>> I zipped all the patches in attached file, you can try to apply it in > >>>> the > >>>> meantime. Thanks. > >>>> > >>>> Regards, Vu > >>>> > >>>>> -----Original Message----- > >>>>> From: A V Mahesh [mailto:[email protected]] > >>>>> Sent: Friday, July 8, 2016 11:07 AM > >>>>> To: Vu Minh Nguyen <[email protected]>; > >>>>> [email protected] > >>>>> Cc: [email protected] > >>>>> Subject: Re: [PATCH 1 of 4] log: add one new option -f to saflogger > >>>>> tool > >>>>> [#1315] > >>>>> > >>>>> Hi Vu, > >>>>> > >>>>> This patch is not being applied on latest staging , can you tell on > >>>>> which changesset this will cleanly appy ? > >>>>> > >>>>> > >> > ============================================================== > >>>>> ==================== > >>>>> > >>>>> patching file osaf/tools/saflog/saflogger/Makefile.am > >>>>> Hunk #1 FAILED at 22. > >>>>> 1 out of 1 hunk FAILED -- saving rejects to file > >>>>> osaf/tools/saflog/saflogger/Makefile.am.rej > >>>>> patching file osaf/tools/saflog/saflogger/saf_logger.c > >>>>> Hunk #2 FAILED at 84. > >>>>> Hunk #3 FAILED at 96. > >>>>> Hunk #4 FAILED at 236. > >>>>> Hunk #5 FAILED at 259. > >>>>> Hunk #6 FAILED at 268. > >>>>> Hunk #7 FAILED at 299. > >>>>> Hunk #8 FAILED at 367. > >>>>> Hunk #9 FAILED at 411. > >>>>> 8 out of 9 hunks FAILED -- saving rejects to file > >>>>> osaf/tools/saflog/saflogger/saf_logger.c.rej > >>>>> > >>>>> > >> > ============================================================== > >>>>> ==================== > >>>>> > >>>>> -AVM > >>>>> > >>>>> On 7/1/2016 4:12 PM, Vu Minh Nguyen wrote: > >>>>>> osaf/tools/saflog/saflogger/Makefile.am | 1 + > >>>>>> osaf/tools/saflog/saflogger/saf_logger.c | 90 > >>>>> ++++++++++++++++++++++++++----- > >>>>>> 2 files changed, 75 insertions(+), 16 deletions(-) > >>>>>> > >>>>>> > >>>>>> With app stream, saflogger used app stream DN as logFileName. > >>>>>> With Long DN, the app stream DN could be longer than 255 > characters > >> in > >>>>> length. > >>>>>> This patch provides one new option -f <filename>. > >>>>>> This option is only applicable for app stream. > >>>>>> > >>>>>> diff --git a/osaf/tools/saflog/saflogger/Makefile.am > >>>>> b/osaf/tools/saflog/saflogger/Makefile.am > >>>>>> --- a/osaf/tools/saflog/saflogger/Makefile.am > >>>>>> +++ b/osaf/tools/saflog/saflogger/Makefile.am > >>>>>> @@ -22,6 +22,7 @@ MAINTAINERCLEANFILES = Makefile.in > >>>>>> bin_PROGRAMS = saflogger > >>>>>> > >>>>>> saflogger_CPPFLAGS = \ > >>>>>> + -DSA_EXTENDED_NAME_SOURCE \ > >>>>>> $(AM_CPPFLAGS) \ > >>>>>> -I$(top_srcdir)/osaf/tools/saflog/include > >>>>>> > >>>>>> diff --git a/osaf/tools/saflog/saflogger/saf_logger.c > >>>>> b/osaf/tools/saflog/saflogger/saf_logger.c > >>>>>> --- a/osaf/tools/saflog/saflogger/saf_logger.c > >>>>>> +++ b/osaf/tools/saflog/saflogger/saf_logger.c > >>>>>> @@ -37,8 +37,9 @@ > >>>>>> #include <poll.h> > >>>>>> #include <unistd.h> > >>>>>> #include <limits.h> > >>>>>> +#include <stdbool.h> > >>>>>> +#include "osaf_extended_name.h" > >>>>>> > >>>>>> -#include <saAis.h> > >>>>>> #include <saLog.h> > >>>>>> > >>>>>> #include "saf_error.h" > >>>>>> @@ -83,7 +84,7 @@ static void usage(void) > >>>>>> printf("\t%s - write log record to log stream\n", progname); > >>>>>> > >>>>>> printf("\nSYNOPSIS\n"); > >>>>>> - printf("\t%s [options] [message ...]\n", progname); > >>>>>> + printf("\t%s [options] [-f <FILENAME>] [message ...]\n", > >>>>>> progname); > >>>>>> > >>>>>> printf("\nDESCRIPTION\n"); > >>>>>> printf("\t%s is a SAF LOG client used to write a log record > >>>>>> into a > >>>>> specified log stream.\n", progname); > >>>>>> @@ -95,11 +96,16 @@ static void usage(void) > >>>>>> printf("\t-n or --notification write to notification > >>>> stream\n"); > >>>>>> printf("\t-y or --system write to system > > stream > >>>> (default)\n"); > >>>>>> printf("\t-a NAME or --application=NAME write to application > >>>>> stream NAME (create it if not exist)\n"); > >>>>>> + printf("\t-f FILENAME write log record to > >>>> FILENAME\n"); > >>>>>> printf("\t-s SEV or --severity=SEV use severity SEV, > >>>>>> default > >>>>> INFO\n"); > >>>>>> printf("\t\tvalid severity names: emerg, alert, crit, error, > >>>>>> warn, > >>>>> notice, info\n"); > >>>>>> + printf("\nNOTES\n"); > >>>>>> + printf("\t1) -f is only applicable for app stream.\n"); > >>>>>> + printf("\t1) <FILENAME> length must not be longer than 255 > >>>>> characters.\n"); > >>>>>> printf("\nEXAMPLES\n"); > >>>>>> printf("\tsaflogger -a safLgStrCfg=Test \"Hello world\"\n"); > >>>>>> + printf("\tsaflogger -a safLgStrCfg=Test -f testLogFile \"Hello > >>>>> world\"\n"); > >>>>>> printf("\tsaflogger -s crit \"I am going down\"\n\n"); > >>>>>> } > >>>>>> > >>>>>> @@ -230,7 +236,7 @@ static SaLogSeverityT get_severity(char > >>>>>> int main(int argc, char *argv[]) > >>>>>> { > >>>>>> int c; > >>>>>> - SaNameT logStreamName = {.length = 0 }; > >>>>>> + SaNameT logStreamName; > >>>>>> SaLogFileCreateAttributesT_2 *logFileCreateAttributes = NULL; > >>>>>> SaLogFileCreateAttributesT_2 appLogFileCreateAttributes; > >>>>>> SaLogStreamOpenFlagsT logStreamOpenFlags = 0; > >>>>>> @@ -253,6 +259,7 @@ int main(int argc, char *argv[]) > >>>>>> SaLogStreamHandleT logStreamHandle; > >>>>>> SaSelectionObjectT selectionObject; > >>>>>> unsigned int wait_time; > >>>>>> + bool is_appstream = false, f_opt = false; > >>>>>> > >>>>>> srandom(getpid()); > >>>>>> > >>>>>> @@ -261,11 +268,23 @@ int main(int argc, char *argv[]) > >>>>>> exit(EXIT_FAILURE); > >>>>>> } > >>>>>> > >>>>>> - sprintf((char *)logSvcUsrName.value, "%s.%u@%s", "saflogger", > >>>>> getpid(), hostname); > >>>>>> - logSvcUsrName.length = strlen((char *)logSvcUsrName.value); > >>>>>> + if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0) { > >>>>>> + fprintf(stderr, "Failed to enable Extended SaNameT"); > >>>>>> + exit(EXIT_FAILURE); > >>>>>> + } > >>>>>> + > >>>>>> + /** > >>>>>> + * osaf_extended_name_init() is added in case osaf_extended_* > >>>>>> APIs > >>>>>> + * are used before saLogInitialize(). > >>>>>> + */ > >>>>>> + osaf_extended_name_init(); > >>>>>> + > >>>>>> + char svcUserName[kOsafMaxDnLength]; > >>>>>> + snprintf(svcUserName, sizeof(svcUserName), "%s.%u@%s", > >>>>> "saflogger", getpid(), hostname); > >>>>>> + saAisNameLend(svcUserName, &logSvcUsrName); > >>>>>> > >>>>>> /* Setup default values */ > >>>>>> - strcpy((char *)logStreamName.value, SA_LOG_STREAM_SYSTEM); > >>>>> /* system stream is default */ > >>>>>> + saAisNameLend(SA_LOG_STREAM_SYSTEM, &logStreamName); > >>>>>> logRecord.logTimeStamp = SA_TIME_UNKNOWN; /* LOG > >>>>> service should supply timestamp */ > >>>>>> logRecord.logHdrType = SA_LOG_GENERIC_HEADER; > >>>>>> logRecord.logHeader.genericHdr.notificationClassId = NULL; > >>>>>> @@ -280,32 +299,58 @@ int main(int argc, char *argv[]) > >>>>>> appLogFileCreateAttributes.maxFilesRotated = > >>>>> DEFAULT_MAX_FILES_ROTATED; > >>>>>> /* Use built-in log file format in log server for app stream > > */ > >>>>>> appLogFileCreateAttributes.logFileFmt = NULL; > >>>>>> + appLogFileCreateAttributes.logFileName = NULL; > >>>>>> > >>>>>> while (1) { > >>>>>> - c = getopt_long(argc, argv, "?hlnya:s:", long_options, > >>>> NULL); > >>>>>> + c = getopt_long(argc, argv, "?hlnya:s:f:", long_options, > >>>>> NULL); > >>>>>> if (c == -1) { > >>>>>> break; > >>>>>> } > >>>>>> switch (c) { > >>>>>> case 'l': > >>>>>> - strcpy((char *)logStreamName.value, > >>>>> SA_LOG_STREAM_ALARM); > >>>>>> + saAisNameLend(SA_LOG_STREAM_ALARM, > >>>>> &logStreamName); > >>>>>> logRecord.logHdrType = SA_LOG_NTF_HEADER; > >>>>>> break; > >>>>>> case 'n': > >>>>>> - strcpy((char *)logStreamName.value, > >>>>> SA_LOG_STREAM_NOTIFICATION); > >>>>>> + saAisNameLend(SA_LOG_STREAM_NOTIFICATION, > >>>>> &logStreamName); > >>>>>> logRecord.logHdrType = SA_LOG_NTF_HEADER; > >>>>>> break; > >>>>>> case 'y': > >>>>>> - strcpy((char *)logStreamName.value, > >>>>> SA_LOG_STREAM_SYSTEM); > >>>>>> + saAisNameLend(SA_LOG_STREAM_SYSTEM, > >>>>> &logStreamName); > >>>>>> break; > >>>>>> case 'a': > >>>>>> + logFileCreateAttributes = > >>>>> &appLogFileCreateAttributes; > >>>>>> + logStreamOpenFlags = SA_LOG_STREAM_CREATE; > >>>>>> + > >>>>>> + char tmpDn[kOsafMaxDnLength + 8 + 1] = {0}; > >>>>>> if (strstr(optarg, "safLgStr")) > >>>>>> - strcpy((char *)logStreamName.value, > >>>>> optarg); > >>>>>> + strncpy(tmpDn, optarg, sizeof(tmpDn) - 1); > >>>>>> else > >>>>>> - sprintf((char *)logStreamName.value, > >>>>> "safLgStr=%s", optarg); > >>>>>> - logFileCreateAttributes = > >>>>> &appLogFileCreateAttributes; > >>>>>> + snprintf(tmpDn, sizeof(tmpDn), > >>>>> "safLgStr=%s", optarg); > >>>>>> + > >>>>>> + if (strlen(tmpDn) > kOsafMaxDnLength) { > >>>>>> + fprintf(stderr, "Application stream DN is so > >>>>> long (%lu). Max: %d \n", > >>>>>> + strlen(optarg), kOsafMaxDnLength); > >>>>>> + fprintf(stderr, "Shut down app. \n"); > >>>>>> + exit(EXIT_FAILURE); > >>>>>> + } > >>>>>> + saAisNameLend(tmpDn, &logStreamName); > >>>>>> + is_appstream = true; > >>>>>> + if (f_opt == false) > >>>>>> + appLogFileCreateAttributes.logFileName = > >>>>> strdup(optarg); > >>>>>> + break; > >>>>>> + case 'f': > >>>>>> + if (f_opt == true) { > >>>>>> + fprintf(stderr, "More than one option -f are > >>>>> given.\n"); > >>>>>> + fprintf(stderr, "Try saflogger -h for more > >>>>> information.\n"); > >>>>>> + exit(EXIT_FAILURE); > >>>>>> + > >>>>>> + } > >>>>>> + if (appLogFileCreateAttributes.logFileName != NULL) > >>>>>> + > >>>>> free(appLogFileCreateAttributes.logFileName); > >>>>>> + > >>>>>> appLogFileCreateAttributes.logFileName = > >>>>> strdup(optarg); > >>>>>> - logStreamOpenFlags = SA_LOG_STREAM_CREATE; > >>>>>> + f_opt = true; > >>>>>> break; > >>>>>> case 's': > >>>>>> logRecord.logHeader.genericHdr.logSeverity = > >>>>> get_severity(optarg); > >>>>>> @@ -322,6 +367,21 @@ int main(int argc, char *argv[]) > >>>>>> } > >>>>>> } > >>>>>> > >>>>>> + if (f_opt == true && is_appstream == false) { > >>>>>> + fprintf(stderr, "Note: -f is only applicaple for app > >>>> stream.\n"); > >>>>>> + fprintf(stderr, "Try saflogger -h for more information.\n"); > >>>>>> + exit(EXIT_FAILURE); > >>>>>> + } > >>>>>> + > >>>>>> + if (appLogFileCreateAttributes.logFileName != NULL && > >>>>> is_appstream == true) { > >>>>>> + size_t len = 0; > >>>>>> + if ((len = strlen(appLogFileCreateAttributes.logFileName)) > > >>>>> 255) { > >>>>>> + fprintf(stderr, "FILENAME is too long (%zu) (max: > >>>> 255 > >>>>> characters).\n", len); > >>>>>> + fprintf(stderr, "Try saflogger -h for more > >>>>> information.\n"); > >>>>>> + exit(EXIT_FAILURE); > >>>>>> + } > >>>>>> + } > >>>>>> + > >>>>>> if (optind >= argc) { > >>>>>> /* No body of log record */ > >>>>>> } > >>>>>> @@ -351,8 +411,6 @@ int main(int argc, char *argv[]) > >>>>>> exit(EXIT_FAILURE); > >>>>>> } > >>>>>> > >>>>>> - logStreamName.length = strlen((char *)logStreamName.value); > >>>>>> - > >>>>>> if (logRecord.logHdrType == SA_LOG_NTF_HEADER) { > >>>>>> /* Setup some valid values */ > >>>>>> logRecord.logHeader.ntfHdr.notificationId = > >>>>> SA_NTF_IDENTIFIER_UNUSED; > > ------------------------------------------------------------------------------ Attend Shape: An AT&T Tech Expo July 15-16. Meet us at AT&T Park in San Francisco, CA to explore cutting-edge tech and listen to tech luminaries present their vision of the future. This family event has something for everyone, including kids. Get more information and register today. http://sdm.link/attshape _______________________________________________ Opensaf-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/opensaf-devel
