1 /*
2  * CDDL HEADER START
3  *
4  * The contents of this file are subject to the terms of the
5  * Common Development and Distribution License, Version 1.0 only
6  * (the "License").  You may not use this file except in compliance
7  * with the License.
8  *
9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10  * or http://www.opensolaris.org/os/licensing.
11  * See the License for the specific language governing permissions
12  * and limitations under the License.
13  *
14  * When distributing Covered Code, include this CDDL HEADER in each
15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16  * If applicable, add the following below this CDDL HEADER, with the
17  * fields enclosed by brackets "[]" replaced with your own identifying
18  * information: Portions Copyright [yyyy] [name of copyright owner]
19  *
20  * CDDL HEADER END
21  */
22 /*
23  * Copyright 2003 Sun Microsystems, Inc.  All rights reserved.
24  * Use is subject to license terms.
25  */
26 
27 #pragma ident	"%Z%%M%	%I%	%E% SMI"
28 
29 #include "cmdgen_include.h"
30 #include "nfs_keys.h"
31 #include "util.h"
32 #include <errno.h>
33 
34 
35 
36 /*
37  * Private data type declaration
38  */
39 #define	NFS_UNSHARE_CMD	"unshare "
40 
41 /*
42  * Private method declarations
43  */
44 
45 /*
46  * Public methods
47  */
48 /*
49  * generates the share command string
50  * memory returned must be freed by the caller.
51  */
52 /* ARGSUSED */
53 char *
cmdgen_unshare_nfs(CCIMInstance * inst,CCIMObjectPath * objPath,int * error)54 cmdgen_unshare_nfs(CCIMInstance *inst, CCIMObjectPath *objPath, int *error)
55 {
56 	char *propValue;
57 	char *cmd;
58 	size_t len;
59 
60 	if (objPath != NULL) {
61 		/*
62 		 * Create the unshare command using the properties
63 		 * passed in from inst.
64 		 */
65 
66 		propValue = util_getKeyValue(objPath->mKeyProperties, string,
67 		    NAME, error);
68 		if (propValue == NULL) {
69 			*error = EINVAL;
70 			cim_logDebug("cmdgen_unshare_nfs",
71 			    "SHAREDNAME is NULL");
72 			return ((char *)NULL);
73 		}
74 		len = strlen(NFS_UNSHARE_CMD) + strlen(propValue) + 2;
75 		cmd = (char *)calloc(len, sizeof (char));
76 		(void) snprintf(cmd, len, "%s %s", NFS_UNSHARE_CMD, propValue);
77 	} else {
78 		cim_logDebug("cmdgen_unshare_nfs", "objPath is NULL");
79 		cmd = NULL;
80 	}
81 	return (cmd);
82 }
83