int main(int argc, char *argv[]) { int ret = 0; GenericAgentConfig *config = CheckOpts(argc, argv); #ifdef HAVE_AVAHI_CLIENT_CLIENT_H #ifdef HAVE_AVAHI_COMMON_ADDRESS_H if (NULL_OR_EMPTY(POLICY_SERVER) && BOOTSTRAP) { int ret = AutomaticBootstrap(); if (ret < 0) { return 1; } } #endif #endif ReportContext *report_context = OpenReports(config->agent_type); GenericAgentDiscoverContext(config, report_context); Policy *policy = GenericAgentLoadPolicy(config, report_context, ALWAYS_VALIDATE); CheckLicenses(); ThisAgentInit(); BeginAudit(); KeepPromises(policy, config, report_context); CloseReports("agent", report_context); // only note class usage when default policy is run if (!config->input_file) { NoteClassUsage(VHEAP, true); NoteClassUsage(VHARDHEAP, true); } #ifdef HAVE_NOVA Nova_NoteVarUsageDB(); Nova_TrackExecution(config->input_file); #endif PurgeLocks(); if (BOOTSTRAP && !VerifyBootstrap()) { ret = 1; } EndAudit(CFA_BACKGROUND); GenericAgentConfigDestroy(config); return ret; }
void FatalError(const EvalContext *ctx, char *s, ...) { if (s) { va_list ap; char buf[CF_BUFSIZE] = ""; va_start(ap, s); vsnprintf(buf, CF_BUFSIZE - 1, s, ap); va_end(ap); CfOut(OUTPUT_LEVEL_ERROR, "", "Fatal CFEngine error: %s", buf); } EndAudit(ctx, 0); exit(1); }
void FatalError(char *s, ...) { if (s) { va_list ap; char buf[CF_BUFSIZE] = ""; va_start(ap, s); vsnprintf(buf, CF_BUFSIZE - 1, s, ap); va_end(ap); CfOut(cf_error, "", "Fatal CFEngine error: %s", buf); } EndAudit(0); exit(1); }
void FatalError(const EvalContext *ctx, char *s, ...) { if (s) { va_list ap; char buf[CF_BUFSIZE] = ""; va_start(ap, s); vsnprintf(buf, CF_BUFSIZE - 1, s, ap); va_end(ap); Log(LOG_LEVEL_ERR, "Fatal CFEngine error: %s", buf); } EndAudit(ctx, 0); exit(EXIT_FAILURE); // calling abort would bypass exit handlers and trigger subtle bugs }
void KeepPromises() { double efficiency; BeginAudit(); KeepControlPromises(); KeepPromiseBundles(); EndAudit(); // TOPICS counts the number of currently defined promises // OCCUR counts the number of objects touched while verifying config efficiency = 100.0*CF_OCCUR/(double)(CF_OCCUR+CF_TOPICS); NoteEfficiency(efficiency); CfOut(cf_verbose,""," -> Checked %d objects with %d promises, efficiency %.2lf",CF_OCCUR,CF_TOPICS,efficiency); }
void SelfTerminatePrelude(void) { CfLock best_guess; CfOut(cf_verbose, "", "Trying to remove lock - try %s", CFLOCK); best_guess.lock = xstrdup(CFLOCK); best_guess.last = xstrdup(CFLAST); best_guess.log = xstrdup(CFLOG); YieldCurrentLock(best_guess); unlink(PIDFILE); if (THIS_AGENT_TYPE == cf_agent) { EndAudit(); } GenericDeInitialize(); }
void FatalError(const EvalContext *ctx, char *s, ...) { if (s) { va_list ap; char buf[CF_BUFSIZE] = ""; va_start(ap, s); vsnprintf(buf, CF_BUFSIZE - 1, s, ap); va_end(ap); Log(LOG_LEVEL_ERR, "Fatal CFEngine error: %s", buf); } EndAudit(ctx, 0); #ifdef NDEBUG exit(EXIT_FAILURE); #else abort(); #endif }
int main(int argc, char *argv[]) { int ret = 0; GenericAgentConfig *config = CheckOpts(argc, argv); #ifdef HAVE_AVAHI_CLIENT_CLIENT_H #ifdef HAVE_AVAHI_COMMON_ADDRESS_H if (NULL_OR_EMPTY(POLICY_SERVER) && BOOTSTRAP) { int ret = AutomaticBootstrap(); if (ret < 0) { return 1; } } #endif #endif ReportContext *report_context = OpenReports(config->agent_type); GenericAgentDiscoverContext(config, report_context); Policy *policy = NULL; if (GenericAgentCheckPolicy(config, report_context, ALWAYS_VALIDATE)) { policy = GenericAgentLoadPolicy(config->agent_type, config, report_context); } else if (config->tty_interactive) { FatalError("CFEngine was not able to get confirmation of promises from cf-promises, please verify input file\n"); } else { CfOut(OUTPUT_LEVEL_ERROR, "", "CFEngine was not able to get confirmation of promises from cf-promises, so going to failsafe\n"); HardClass("failsafe_fallback"); GenericAgentConfigSetInputFile(config, "failsafe.cf"); policy = GenericAgentLoadPolicy(config->agent_type, config, report_context); } CheckLicenses(); ThisAgentInit(); BeginAudit(); KeepPromises(policy, config, report_context); CloseReports("agent", report_context); // only note class usage when default policy is run if (!config->input_file) { NoteClassUsage(VHEAP, true); NoteClassUsage(VHARDHEAP, true); } #ifdef HAVE_NOVA Nova_NoteVarUsageDB(); Nova_TrackExecution(config->input_file); #endif PurgeLocks(); if (BOOTSTRAP && !VerifyBootstrap()) { ret = 1; } EndAudit(CFA_BACKGROUND); GenericAgentConfigDestroy(config); return ret; }