summaryrefslogtreecommitdiff
path: root/usr/src/cmd/fs.d/autofs/autod_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/fs.d/autofs/autod_main.c')
-rw-r--r--usr/src/cmd/fs.d/autofs/autod_main.c63
1 files changed, 35 insertions, 28 deletions
diff --git a/usr/src/cmd/fs.d/autofs/autod_main.c b/usr/src/cmd/fs.d/autofs/autod_main.c
index 12e35d4d4c..566e4484ec 100644
--- a/usr/src/cmd/fs.d/autofs/autod_main.c
+++ b/usr/src/cmd/fs.d/autofs/autod_main.c
@@ -19,11 +19,9 @@
* CDDL HEADER END
*/
/*
- * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
- * Use is subject to license terms.
+ * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*/
-#pragma ident "%Z%%M% %I% %E% SMI"
#include <stdio.h>
#include <stdio_ext.h>
@@ -47,6 +45,7 @@
#include <thread.h>
#include <locale.h>
#include <door.h>
+#include <limits.h>
#include "automount.h"
#include <sys/vfs.h>
#include <sys/mnttab.h>
@@ -61,6 +60,9 @@
#include <nfs/rnode.h>
#include <nfs/nfs.h>
#include <wait.h>
+#include <libshare.h>
+#include <libscf.h>
+#include "smfcfg.h"
static void autofs_doorfunc(void *, char *, size_t, door_desc_t *, uint_t);
static void autofs_setdoor(int);
@@ -112,7 +114,8 @@ main(argc, argv)
pid_t pid;
int c, error;
struct rlimit rlset;
- char *defval;
+ char defval[6];
+ int ret = 0, bufsz;
if (geteuid() != 0) {
(void) fprintf(stderr, "%s must be run as root\n", argv[0]);
@@ -120,33 +123,37 @@ main(argc, argv)
}
/*
- * Read in the values from config file first before we check
+ * Read in the values from SMF first before we check
* commandline options so the options override the file.
*/
- if ((defopen(AUTOFSADMIN)) == 0) {
- if ((defval = defread("AUTOMOUNTD_VERBOSE=")) != NULL) {
- if (strncasecmp("true", defval, 4) == 0)
- verbose = TRUE;
- else
- verbose = FALSE;
- }
- if ((defval = defread("AUTOMOUNTD_NOBROWSE=")) != NULL) {
- if (strncasecmp("true", defval, 4) == 0)
- automountd_nobrowse = TRUE;
- else
- automountd_nobrowse = FALSE;
- }
- if ((defval = defread("AUTOMOUNTD_TRACE=")) != NULL) {
- errno = 0;
- trace = strtol(defval, (char **)NULL, 10);
- if (errno != 0)
- trace = 0;
- }
- put_automountd_env();
-
- /* close defaults file */
- defopen(NULL);
+ bufsz = 6;
+ ret = autofs_smf_get_prop("automountd_verbose", defval,
+ DEFAULT_INSTANCE, SCF_TYPE_BOOLEAN, AUTOMOUNTD, &bufsz);
+ if (ret == SA_OK) {
+ if (strncasecmp("true", defval, 4) == 0)
+ verbose = TRUE;
+ else
+ verbose = FALSE;
+ }
+ bufsz = 6;
+ ret = autofs_smf_get_prop("nobrowse", defval, DEFAULT_INSTANCE,
+ SCF_TYPE_BOOLEAN, AUTOMOUNTD, &bufsz);
+ if (ret == SA_OK) {
+ if (strncasecmp("true", defval, 4) == 0)
+ automountd_nobrowse = TRUE;
+ else
+ automountd_nobrowse = FALSE;
+ }
+ bufsz = 6;
+ ret = autofs_smf_get_prop("trace", defval, DEFAULT_INSTANCE,
+ SCF_TYPE_INTEGER, AUTOMOUNTD, &bufsz);
+ if (ret == SA_OK) {
+ errno = 0;
+ trace = strtol(defval, (char **)NULL, 10);
+ if (errno != 0)
+ trace = 0;
}
+ put_automountd_env();
while ((c = getopt(argc, argv, "vnTD:")) != EOF) {
switch (c) {