void ArgusClientInit (struct ArgusParserStruct *parser) { struct ArgusModeStruct *mode = NULL; parser->RaWriteOut = 0; if (!(parser->RaInitialized)) { (void) signal (SIGHUP, (void (*)(int)) RaParseComplete); if ((parser->ArgusLabeler = ArgusNewLabeler(parser, 0L)) == NULL) ArgusLog (LOG_ERR, "ArgusClientInit: ArgusNewLabeler error"); if (parser->ArgusFlowModelFile) { RaLabelParseResourceFile (parser, parser->ArgusLabeler, parser->ArgusFlowModelFile); parser->ArgusFlowModelFile = NULL; } if ((parser->ArgusAggregator = ArgusNewAggregator(parser, NULL)) == NULL) ArgusLog (LOG_ERR, "ArgusClientInit: ArgusNewAggregator error"); if ((mode = parser->ArgusModeList) != NULL) { while (mode) { if (!(strncasecmp (mode->mode, "noprune", 7))) { parser->ArgusLabeler->prune = 0; } else if (!(strncasecmp (mode->mode, "addr", 4))) { if (parser->ArgusFlowModelFile) { if (!(RaReadAddressConfig (parser, parser->ArgusLabeler, parser->ArgusFlowModelFile) > 0)) ArgusLog (LOG_ERR, "ArgusNewLabeler: RaReadAddressConfig error"); } } else if ((!(strncasecmp (mode->mode, "debug.tree", 10))) || (!(strncasecmp (mode->mode, "debug", 5)))) { parser->ArgusLabeler->RaPrintLabelTreeMode = ARGUS_TREE; if (parser->ArgusLabeler && parser->ArgusLabeler->ArgusAddrTree) RaPrintLabelTree (parser->ArgusLabeler, parser->ArgusLabeler->ArgusAddrTree[AF_INET], 0, 0); exit(0); } mode = mode->nxt; } } parser->RaInitialized++; } }
void ArgusClientInit (struct ArgusParserStruct *parser) { struct ArgusModeStruct *mode = NULL; int correct = 1; parser->RaWriteOut = 0; if (!(parser->RaInitialized)) { (void) signal (SIGHUP, (void (*)(int)) RaParseComplete); (void) signal (SIGTERM, (void (*)(int)) RaParseComplete); (void) signal (SIGQUIT, (void (*)(int)) RaParseComplete); (void) signal (SIGINT, (void (*)(int)) RaParseComplete); if ((mode = parser->ArgusModeList) != NULL) { while (mode) { if (!(strncasecmp (mode->mode, "correct", 7))) correct = 1; if (!(strncasecmp (mode->mode, "nocorrect", 9))) correct = 0; if (!(strncasecmp (mode->mode, "rmon", 4))) parser->RaMonMode++; if (!(strncasecmp (mode->mode, "norep", 5))) parser->RaAgMode++; if (!(strncasecmp (mode->mode, "ind", 3))) ArgusProcessFileIndependantly = 1; if (!(strncasecmp (mode->mode, "replace", 7))) { ArgusProcessFileIndependantly = 1; parser->ArgusReplaceMode++; if ((parser->ArgusWfileList != NULL) && (!(ArgusListEmpty(parser->ArgusWfileList)))) { ArgusLog (LOG_ERR, "replace mode and -w option are incompatible\n"); } } mode = mode->nxt; } } if ((parser->ArgusMaskList) == NULL) parser->ArgusReverse = 1; else parser->ArgusReverse = 0; if (parser->ArgusFlowModelFile) { if ((parser->ArgusAggregator = ArgusParseAggregator(parser, parser->ArgusFlowModelFile, NULL)) == NULL) ArgusLog (LOG_ERR, "ArgusClientInit: ArgusParseAggregator error"); } else if ((parser->ArgusAggregator = ArgusNewAggregator(parser, NULL)) == NULL) ArgusLog (LOG_ERR, "ArgusClientInit: ArgusNewAggregator error"); if (correct == 0) { if (parser->ArgusAggregator->correct != NULL) free(parser->ArgusAggregator->correct); parser->ArgusAggregator->correct = NULL; } else { if (parser->ArgusAggregator->correct != NULL) free(parser->ArgusAggregator->correct); parser->ArgusAggregator->correct = strdup("yes"); } if (parser->Hstr) if (!(ArgusHistoMetricParse (parser, parser->ArgusAggregator))) usage (); if (parser->vflag) ArgusReverseSortDir++; if ((parser->ArgusWfileList != NULL) && (!(ArgusListEmpty(parser->ArgusWfileList)))) parser->nflag = 2; parser->RaInitialized++; parser->RaParseCompleting = 0; parser->ArgusLastRecordTime = 0; parser->RaSortedInput = 1; } }