typedef int (*nfs_host_callback_t)(const char *sharepath, const char *host,
const char *security, const char *access, void *cookie);
-/**
+/*
* Invokes the specified callback function for each Solaris share option
* listed in the specified string.
*/
int was_nul, rc;
if (shareopts == NULL)
- return SA_OK;
+ return (SA_OK);
shareopts_dup = strdup(shareopts);
if (shareopts_dup == NULL)
- return SA_NO_MEMORY;
+ return (SA_NO_MEMORY);
opt = shareopts_dup;
was_nul = 0;
if (rc != SA_OK) {
free(shareopts_dup);
- return rc;
+ return (rc);
}
}
free(shareopts_dup);
- return 0;
+ return (0);
}
typedef struct nfs_host_cookie_s {
const char *security;
} nfs_host_cookie_t;
-/**
+/*
* Helper function for foreach_nfs_host. This function checks whether the
* current share option is a host specification and invokes a callback
* function with information about the host.
host_dup = strdup(value);
if (host_dup == NULL)
- return SA_NO_MEMORY;
+ return (SA_NO_MEMORY);
host = host_dup;
if (rc != SA_OK) {
free(host_dup);
- return rc;
+ return (rc);
}
host = next;
free(host_dup);
}
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Invokes a callback function for all NFS hosts that are set for a share.
*/
static int
&udata);
}
-/**
+/*
* Converts a Solaris NFS host specification to its Linux equivalent.
*/
static int
}
if (*plinux_hostspec == NULL) {
- return SA_NO_MEMORY;
+ return (SA_NO_MEMORY);
}
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Used internally by nfs_enable_share to enable sharing for a single host.
*/
static int
free(opts);
if (rc < 0)
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
else
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Adds a Linux share option to an array of NFS options.
*/
static int
(value ? 1 + strlen(value) : 0) + 1);
if (new_linux_opts == NULL)
- return SA_NO_MEMORY;
+ return (SA_NO_MEMORY);
new_linux_opts[len] = '\0';
*plinux_opts = new_linux_opts;
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Validates and converts a single Solaris share option to its Linux
* equivalent.
*/
/* host-specific options, these are taken care of elsewhere */
if (strcmp(key, "ro") == 0 || strcmp(key, "rw") == 0 ||
strcmp(key, "sec") == 0)
- return SA_OK;
+ return (SA_OK);
if (strcmp(key, "anon") == 0)
key = "anonuid";
- if (strcmp(key, "root_mapping") == 0) {
- (void) add_linux_shareopt(plinux_opts, "root_squash", NULL);
- key = "anonuid";
- }
+ if (strcmp(key, "root_mapping") == 0) {
+ (void) add_linux_shareopt(plinux_opts, "root_squash", NULL);
+ key = "anonuid";
+ }
if (strcmp(key, "nosub") == 0)
key = "subtree_check";
strcmp(key, "all_squash") != 0 &&
strcmp(key, "no_all_squash") != 0 && strcmp(key, "fsid") != 0 &&
strcmp(key, "anonuid") != 0 && strcmp(key, "anongid") != 0) {
- return SA_SYNTAX_ERR;
+ return (SA_SYNTAX_ERR);
}
(void) add_linux_shareopt(plinux_opts, key, value);
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Takes a string containing Solaris share options (e.g. "sync,no_acl") and
* converts them to a NULL-terminated array of Linux NFS options.
*/
(void) add_linux_shareopt(plinux_opts, "no_root_squash", NULL);
(void) add_linux_shareopt(plinux_opts, "mountpoint", NULL);
- rc = foreach_nfs_shareopt(shareopts, get_linux_shareopts_cb, plinux_opts);
+ rc = foreach_nfs_shareopt(shareopts, get_linux_shareopts_cb,
+ plinux_opts);
if (rc != SA_OK) {
free(*plinux_opts);
*plinux_opts = NULL;
}
- return rc;
+ return (rc);
}
-/**
+/*
* Enables NFS sharing for the specified share.
*/
static int
int rc;
if (!nfs_available()) {
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
}
shareopts = FSINFO(impl_share, nfs_fstype)->shareopts;
if (shareopts == NULL)
- return SA_OK;
+ return (SA_OK);
rc = get_linux_shareopts(shareopts, &linux_opts);
if (rc != SA_OK)
- return rc;
+ return (rc);
rc = foreach_nfs_host(impl_share, nfs_enable_share_one, linux_opts);
free(linux_opts);
- return rc;
+ return (rc);
}
-/**
+/*
* Used internally by nfs_disable_share to disable sharing for a single host.
*/
static int
free(hostpath);
if (rc < 0)
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
else
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Disables NFS sharing for the specified share.
*/
static int
* The share can't possibly be active, so nothing
* needs to be done to disable it.
*/
- return SA_OK;
+ return (SA_OK);
}
- return foreach_nfs_host(impl_share, nfs_disable_share_one, NULL);
+ return (foreach_nfs_host(impl_share, nfs_disable_share_one, NULL));
}
-/**
+/*
* Checks whether the specified NFS share options are syntactically correct.
*/
static int
rc = get_linux_shareopts(shareopts, &linux_opts);
if (rc != SA_OK)
- return rc;
+ return (rc);
free(linux_opts);
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Checks whether a share is currently active.
*/
static boolean_t
FILE *nfs_exportfs_temp_fp;
if (!nfs_available())
- return B_FALSE;
+ return (B_FALSE);
nfs_exportfs_temp_fp = fdopen(dup(nfs_exportfs_temp_fd), "r");
if (nfs_exportfs_temp_fp == NULL ||
fseek(nfs_exportfs_temp_fp, 0, SEEK_SET) < 0) {
fclose(nfs_exportfs_temp_fp);
- return B_FALSE;
+ return (B_FALSE);
}
- while (fgets(line, sizeof(line), nfs_exportfs_temp_fp) != NULL) {
+ while (fgets(line, sizeof (line), nfs_exportfs_temp_fp) != NULL) {
/*
* exportfs uses separate lines for the share path
* and the export options when the share path is longer
if (strcmp(line, impl_share->sharepath) == 0) {
fclose(nfs_exportfs_temp_fp);
- return B_TRUE;
+ return (B_TRUE);
}
}
fclose(nfs_exportfs_temp_fp);
- return B_FALSE;
+ return (B_FALSE);
}
-/**
+/*
* Called to update a share's options. A share's options might be out of
* date if the share was loaded from disk (i.e. /etc/dfs/sharetab) and the
* "sharenfs" dataset property has changed in the meantime. This function
shareopts_dup = strdup(shareopts);
if (shareopts_dup == NULL)
- return SA_NO_MEMORY;
+ return (SA_NO_MEMORY);
if (old_shareopts != NULL)
free(old_shareopts);
if (needs_reshare)
nfs_enable_share(impl_share);
- return SA_OK;
+ return (SA_OK);
}
-/**
+/*
* Clears a share's NFS options. Used by libshare to
* clean up shares that are about to be free()'d.
*/
nfs_exportfs_temp_fd = mkstemp(nfs_exportfs_tempfile);
if (nfs_exportfs_temp_fd < 0)
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
unlink(nfs_exportfs_tempfile);
if (pid < 0) {
(void) close(nfs_exportfs_temp_fd);
nfs_exportfs_temp_fd = -1;
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
}
if (pid > 0) {
- while ((rc = waitpid(pid, &status, 0)) <= 0 && errno == EINTR)
- ; /* empty loop body */
+ while ((rc = waitpid(pid, &status, 0)) <= 0 && errno == EINTR);
if (rc <= 0) {
(void) close(nfs_exportfs_temp_fd);
nfs_exportfs_temp_fd = -1;
- return SA_SYSTEM_ERR;
+ return (SA_SYSTEM_ERR);
}
if (!WIFEXITED(status) || WEXITSTATUS(status) != 0) {
(void) close(nfs_exportfs_temp_fd);
nfs_exportfs_temp_fd = -1;
- return SA_CONFIG_ERR;
+ return (SA_CONFIG_ERR);
}
- return SA_OK;
+ return (SA_OK);
}
/* child */
if (nfs_exportfs_temp_fd == -1)
(void) nfs_check_exportfs();
- return (nfs_exportfs_temp_fd != -1) ? B_TRUE : B_FALSE;
+ return ((nfs_exportfs_temp_fd != -1) ? B_TRUE : B_FALSE);
}
-/**
+/*
* Initializes the NFS functionality of libshare.
*/
void