17910 smf module build broken by libscf changes osol_160
authorDavid Powell <david.e.powell@oracle.com>
Thu, 17 Feb 2011 16:14:36 -0800
changeset 655 9e31437e903a
parent 654 86190d7250e0
child 656 17bb6b478c0b
17910 smf module build broken by libscf changes
usr/src/cmd/rad/mod/smf/mod_smf.c
usr/src/cmd/rad/mod/smf/propvec.c
usr/src/cmd/rad/mod/smf/propvec.h
--- a/usr/src/cmd/rad/mod/smf/mod_smf.c	Tue Feb 15 20:42:05 2011 -0500
+++ b/usr/src/cmd/rad/mod/smf/mod_smf.c	Thu Feb 17 16:14:36 2011 -0800
@@ -32,17 +32,13 @@
 #include <stddef.h>
 #include <unistd.h>
 #include <fcntl.h>
-
 #include <libscf.h>
 #include <libscf_priv.h>
-
 #include <rad/adr.h>
 #include <rad/rad_modapi.h>
 
 #include "api_smf.h"
-
-extern int rad_read_propvec(const char *, const char *, boolean_t,
-    scf_propvec_t *, scf_propvec_t **);
+#include "propvec.h"
 
 static pthread_mutex_t service_lock = PTHREAD_MUTEX_INITIALIZER;
 static list_t service_list;
@@ -250,8 +246,8 @@
 {
 	servinst_t *si = instance_getdata(inst);
 	char *title, *section, *path;
-	scf_propvec_t *badprop;
-	scf_propvec_t evec[] = {
+	rad_propvec_t *badprop;
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_TM_MANPATH, NULL, SCF_TYPE_USTRING, &path, 0 },
 		{ SCF_PROPERTY_TM_TITLE, NULL, SCF_TYPE_USTRING, &title, 0 },
 		{ SCF_PROPERTY_TM_SECTION, NULL, SCF_TYPE_USTRING, &section,
@@ -285,7 +281,7 @@
 		struct_set(mp, "section", data_new_string(section, lt_copy));
 		struct_set(mp, "path", data_new_string(path, lt_copy));
 		array_add(result, mp);
-		scf_clean_propvec(evec);
+		rad_clean_propvec(evec);
 	}
 	data_free(pgs);
 	*data = result;
@@ -300,8 +296,8 @@
 {
 	servinst_t *si = instance_getdata(inst);
 	char *uri;
-	scf_propvec_t *badprop;
-	scf_propvec_t evec[] = {
+	rad_propvec_t *badprop;
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_TM_URI, NULL, SCF_TYPE_USTRING, &uri, 0 },
 		{ NULL }
 	};
@@ -326,7 +322,7 @@
 		if (rad_read_propvec(si->fmri, str, B_FALSE, evec,
 		    &badprop) == 0) {
 			array_add(result, data_new_string(uri, lt_copy));
-			scf_clean_propvec(evec);
+			rad_clean_propvec(evec);
 		}
 	}
 	data_free(pgs);
@@ -345,17 +341,17 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	boolean_t enabled;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_ENABLED, NULL, SCF_TYPE_BOOLEAN, &enabled, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int scferr = rad_read_propvec(si->fmri, SCF_PG_GENERAL, B_FALSE,
 	    evec, &badprop);
 	if (scferr != 0)
 		return (error_scf(error, scferr));
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 
 	*data = data_new_boolean(enabled);
 	return (ce_ok);
@@ -371,17 +367,17 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	boolean_t enabled;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_ENABLED, NULL, SCF_TYPE_BOOLEAN, &enabled, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	if (rad_read_propvec(si->fmri, SCF_PG_GENERAL_OVR, B_FALSE, evec,
 	    &badprop) != 0)
 		return (api_serviceInfo_read_PersistentlyEnabled(inst, attr,
 		    data, error));
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 
 	*data = data_new_boolean(enabled);
 	return (ce_ok);
@@ -419,16 +415,16 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	char *fmri = NULL;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_RESTARTER, NULL, SCF_TYPE_USTRING, &fmri, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	if (rad_read_propvec(si->fmri, SCF_PG_GENERAL, B_FALSE, evec,
 	    &badprop) == 0) {
 		*data = data_new_string(fmri, lt_copy);
-		scf_clean_propvec(evec);
+		rad_clean_propvec(evec);
 	} else {
 		*data = data_new_fstring("svc:/%s:%s",
 		    "system/svc/restarter", "default");
@@ -479,19 +475,19 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	char *state = NULL;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_NEXT_STATE, NULL, SCF_TYPE_ASTRING, &state, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int scferr = rad_read_propvec(si->fmri, SCF_PG_RESTARTER, B_FALSE, evec,
 	    &badprop);
 	if (scferr != 0)
 		return (error_scf(error, scferr));
 
 	*data = state2enum(state);
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 	return (*data != NULL ? ce_ok : ce_system);
 }
 
@@ -504,12 +500,12 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	char *aux;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_AUX_STATE, NULL, SCF_TYPE_ASTRING, &aux, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int scferr = rad_read_propvec(si->fmri, SCF_PG_RESTARTER, B_FALSE, evec,
 	    &badprop);
 	if (scferr != 0) {
@@ -521,7 +517,7 @@
 	}
 
 	*data = data_new_string(aux, lt_copy);
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 
 	return (*data != NULL ? ce_ok : ce_system);
 }
@@ -536,18 +532,18 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	scf_time_t time;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_STATE_TIMESTAMP, NULL, SCF_TYPE_TIME, &time, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int scferr = rad_read_propvec(si->fmri, SCF_PG_RESTARTER, B_FALSE, evec,
 	    &badprop);
 	if (scferr != 0)
 		return (error_scf(error, scferr));
 
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 
 	*data = data_new_time(time.t_seconds);
 
@@ -564,17 +560,17 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	uint64_t count;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_CONTRACT, NULL, SCF_TYPE_COUNT, &count, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int scferr = rad_read_propvec(si->fmri, SCF_PG_RESTARTER, B_FALSE, evec,
 	    &badprop);
 	if (scferr != 0)
 		return (error_scf(error, scferr));
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 
 	*data = data_new_long(count);
 
@@ -1409,8 +1405,8 @@
     data_t **ret, data_t **error)
 {
 	char *str;
-	scf_propvec_t *badprop;
-	scf_propvec_t evec[] = {
+	rad_propvec_t *badprop;
+	rad_propvec_t evec[] = {
 		{ locale, NULL, SCF_TYPE_ASTRING, &str, 0 },
 		{ NULL }
 	};
@@ -1426,7 +1422,7 @@
 	}
 
 	*ret = data_new_string(str, lt_copy);
-	scf_clean_propvec(evec);
+	rad_clean_propvec(evec);
 	return (ce_ok);
 }
 
@@ -1468,12 +1464,12 @@
 		return (error_scf(error, SCF_ERROR_INVALID_ARGUMENT));
 
 	char *logname = NULL;
-	scf_propvec_t evec[] = {
+	rad_propvec_t evec[] = {
 		{ SCF_PROPERTY_LOGFILE, NULL, SCF_TYPE_USTRING, &logname, 0 },
 		{ NULL }
 	};
 
-	scf_propvec_t *badprop;
+	rad_propvec_t *badprop;
 	int errval = rad_read_propvec(si->fmri, SCF_PG_RESTARTER, B_FALSE,
 	    evec, &badprop);
 	if (errval != 0)
--- a/usr/src/cmd/rad/mod/smf/propvec.c	Tue Feb 15 20:42:05 2011 -0500
+++ b/usr/src/cmd/rad/mod/smf/propvec.c	Thu Feb 17 16:14:36 2011 -0800
@@ -20,12 +20,7 @@
  */
 
 /*
- * Copyright 2009 Sun Microsystems, Inc.  All rights reserved.
- * Use is subject to license terms.
- */
-
-/*
- * Shame.
+ * Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
  */
 
 #include <assert.h>
@@ -36,7 +31,7 @@
 #include <sys/param.h>
 #include <errno.h>
 #include <libscf.h>
-#include <libscf_priv.h>
+#include "propvec.h"
 
 extern scf_handle_t *handle_create(void);
 
@@ -60,15 +55,15 @@
  * Like free(3C), this function preserves the value of errno.
  */
 void
-rad_clean_propvec(scf_propvec_t *propvec)
+rad_clean_propvec(rad_propvec_t *propvec)
 {
 	int saved_errno = errno;
-	scf_propvec_t *prop;
+	rad_propvec_t *prop;
 
 	for (prop = propvec; prop->pv_prop != NULL; prop++) {
 		assert(prop->pv_type != SCF_TYPE_INVALID);
 		if (prop->pv_type == SCF_TYPE_OPAQUE) {
-			scf_opaque_t *o = prop->pv_ptr;
+			rad_opaque_t *o = prop->pv_ptr;
 
 			if (o->so_addr != NULL)
 				free(o->so_addr);
@@ -83,7 +78,7 @@
 }
 
 static int
-count_props(scf_propvec_t *props)
+count_props(rad_propvec_t *props)
 {
 	int count = 0;
 
@@ -105,7 +100,7 @@
  *
  * For opaque types, a buffer is allocated using malloc(3C) to hold the
  * opaque data.  A pointer to this buffer and its size are stored in
- * the caller-provided scf_opaque_t.  It is the caller's responsibility
+ * the caller-provided rad_opaque_t.  It is the caller's responsibility
  * to free this buffer.  To simplify error handling, the address fields
  * for unread opaque data are initialized to NULL.
  *
@@ -119,7 +114,7 @@
  */
 int
 rad_read_propvec(const char *fmri, const char *pgname, boolean_t running,
-    scf_propvec_t *properties, scf_propvec_t **badprop)
+    rad_propvec_t *properties, rad_propvec_t **badprop)
 {
 	scf_handle_t *h = handle_create();
 	scf_service_t *s = scf_service_create(h);
@@ -129,12 +124,12 @@
 	scf_property_t *p = scf_property_create(h);
 	scf_value_t *v = scf_value_create(h);
 	boolean_t instance = B_TRUE;
-	scf_propvec_t *prop;
+	rad_propvec_t *prop;
 	int error = 0;
 
 	for (prop = properties; prop->pv_prop != NULL; prop++) {
 		if (prop->pv_type == SCF_TYPE_OPAQUE)
-			((scf_opaque_t *)prop->pv_ptr)->so_addr = NULL;
+			((rad_opaque_t *)prop->pv_ptr)->so_addr = NULL;
 		else if (scf_true_base_type(prop->pv_type) == SCF_TYPE_ASTRING)
 			*((char **)prop->pv_ptr) = NULL;
 	}
@@ -206,7 +201,7 @@
 			break;
 		}
 		case SCF_TYPE_OPAQUE: {
-			scf_opaque_t *opaque = prop->pv_ptr;
+			rad_opaque_t *opaque = prop->pv_ptr;
 			ssize_t size = scf_value_get_opaque(v, NULL, 0);
 
 			if (size == -1) {
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/usr/src/cmd/rad/mod/smf/propvec.h	Thu Feb 17 16:14:36 2011 -0800
@@ -0,0 +1,57 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+
+/*
+ * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
+ */
+
+#ifndef	_PROPVEC_H
+#define	_PROPVEC_H
+
+#include <sys/types.h>
+#include <libscf.h>
+
+#ifdef	__cplusplus
+extern "C" {
+#endif
+
+typedef struct {
+	void	*so_addr;
+	size_t	so_size;
+} rad_opaque_t;
+
+typedef struct {
+	const char	*pv_prop;
+	const char	*pv_desc;
+	scf_type_t	pv_type;
+	void		*pv_ptr;
+	uint64_t	pv_aux;
+} rad_propvec_t;
+
+void rad_clean_propvec(rad_propvec_t *);
+int rad_read_propvec(const char *, const char *, boolean_t,
+    rad_propvec_t *, rad_propvec_t **);
+
+#ifdef	__cplusplus
+}
+#endif
+
+#endif	/* _PROPVEC_H */