static int VerifyMountPromise(EvalContext *ctx, char *name, Attributes a, Promise *pp) { char *options; char dir[CF_BUFSIZE]; int changes = 0; CfOut(OUTPUT_LEVEL_VERBOSE, "", " -> Verifying mounted file systems on %s\n", name); snprintf(dir, CF_BUFSIZE, "%s/.", name); if (!IsPrivileged()) { cfPS(ctx, OUTPUT_LEVEL_ERROR, PROMISE_RESULT_INTERRUPTED, "", pp, a, "Only root can mount filesystems.\n"); return false; } options = Rlist2String(a.mount.mount_options, ","); if (!FileSystemMountedCorrectly(MOUNTEDFSLIST, name, options, a)) { if (!a.mount.unmount) { if (!MakeParentDirectory(dir, a.move_obstructions)) { } if (a.mount.editfstab) { changes += VerifyInFstab(ctx, name, a, pp); } else { cfPS(ctx, OUTPUT_LEVEL_INFORM, PROMISE_RESULT_FAIL, "", pp, a, " -> Filesystem %s was not mounted as promised, and no edits were promised in %s\n", name, VFSTAB[VSYSTEMHARDCLASS]); // Mount explicitly VerifyMount(ctx, name, a, pp); } } else { if (a.mount.editfstab) { changes += VerifyNotInFstab(ctx, name, a, pp); } } if (changes) { CF_MOUNTALL = true; } } else { if (a.mount.unmount) { VerifyUnmount(ctx, name, a, pp); if (a.mount.editfstab) { VerifyNotInFstab(ctx, name, a, pp); } } else { cfPS(ctx, OUTPUT_LEVEL_INFORM, PROMISE_RESULT_NOOP, "", pp, a, " -> Filesystem %s seems to be mounted as promised\n", name); } } free(options); return true; }
static PromiseResult VerifyMountPromise(EvalContext *ctx, char *name, Attributes a, Promise *pp) { char *options; char dir[CF_BUFSIZE]; int changes = 0; Log(LOG_LEVEL_VERBOSE, "Verifying mounted file systems on '%s'", name); snprintf(dir, CF_BUFSIZE, "%s/.", name); if (!IsPrivileged()) { cfPS(ctx, LOG_LEVEL_ERR, PROMISE_RESULT_INTERRUPTED, pp, a, "Only root can mount filesystems"); return PROMISE_RESULT_INTERRUPTED; } options = Rlist2String(a.mount.mount_options, ","); PromiseResult result = PROMISE_RESULT_NOOP; if (!FileSystemMountedCorrectly(GetGlobalMountedFSList(), name, a)) { if (!a.mount.unmount) { if (!MakeParentDirectory(dir, a.move_obstructions)) { } if (a.mount.editfstab) { changes += VerifyInFstab(ctx, name, a, pp, &result); } else { cfPS(ctx, LOG_LEVEL_INFO, PROMISE_RESULT_FAIL, pp, a, "Filesystem '%s' was not mounted as promised, and no edits were promised in '%s'", name, VFSTAB[VSYSTEMHARDCLASS]); result = PromiseResultUpdate(result, PROMISE_RESULT_FAIL); // Mount explicitly result = PromiseResultUpdate(result, VerifyMount(ctx, name, a, pp)); } } else { if (a.mount.editfstab) { changes += VerifyNotInFstab(ctx, name, a, pp, &result); } } if (changes) { CF_MOUNTALL = true; } } else { if (a.mount.unmount) { VerifyUnmount(ctx, name, a, pp); if (a.mount.editfstab) { VerifyNotInFstab(ctx, name, a, pp, &result); } } else { cfPS(ctx, LOG_LEVEL_INFO, PROMISE_RESULT_NOOP, pp, a, "Filesystem '%s' seems to be mounted as promised", name); } } free(options); return result; }
static int VerifyMountPromise(char *name, Attributes a, Promise *pp, const ReportContext *report_context) { char *options; char dir[CF_BUFSIZE]; int changes = 0; CfOut(cf_verbose, "", " -> Verifying mounted file systems on %s\n", name); snprintf(dir, CF_BUFSIZE, "%s/.", name); if (!IsPrivileged()) { cfPS(cf_error, CF_INTERPT, "", pp, a, "Only root can mount filesystems.\n"); return false; } options = Rlist2String(a.mount.mount_options, ","); if (!FileSystemMountedCorrectly(MOUNTEDFSLIST, name, options, a, pp)) { if (!a.mount.unmount) { if (!MakeParentDirectory(dir, a.move_obstructions, report_context)) { } if (a.mount.editfstab) { changes += VerifyInFstab(name, a, pp); } else { cfPS(cf_inform, CF_FAIL, "", pp, a, " -> Filesystem %s was not mounted as promised, and no edits were promised in %s\n", name, VFSTAB[VSYSTEMHARDCLASS]); // Mount explicitly VerifyMount(name, a, pp); } } else { if (a.mount.editfstab) { changes += VerifyNotInFstab(name, a, pp); } } if (changes) { CF_MOUNTALL = true; } } else { if (a.mount.unmount) { VerifyUnmount(name, a, pp); if (a.mount.editfstab) { VerifyNotInFstab(name, a, pp); } } else { cfPS(cf_inform, CF_NOP, "", pp, a, " -> Filesystem %s seems to be mounted as promised\n", name); } } free(options); return true; }