summaryrefslogtreecommitdiff
path: root/usr/src/man/man3scf/scf_handle_create.3scf
blob: d751808b4069fbb31ca631e17c51af25d02a295c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
'\" te
.\" Copyright (c) 2007, Sun Microsystems, Inc. All Rights Reserved.
.\" 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]
.TH SCF_HANDLE_CREATE 3SCF "Aug 17, 2007"
.SH NAME
scf_handle_create, scf_handle_destroy, scf_handle_decorate, scf_handle_bind,
scf_handle_unbind, scf_myname \- Service Configuration Facility handle
functions
.SH SYNOPSIS
.LP
.nf
cc [ \fIflag\fR\&.\|.\|. ] \fIfile\fR\&.\|.\|. \fB-lscf\fR [ \fIlibrary\fR\&.\|.\|. ]
#include <libscf.h>

\fBscf_handle_t *\fR\fBscf_handle_create\fR(\fBscf_version_t\fR \fIversion\fR);
.fi

.LP
.nf
\fBvoid\fR \fBscf_handle_destroy\fR(\fBscf_handle_t *\fR\fIhandle\fR);
.fi

.LP
.nf
\fBint\fR \fBscf_handle_decorate\fR(\fBscf_handle_t *\fR\fIhandle\fR, \fBconst char *\fR\fIparam\fR,
     \fBscf_value_t *\fR\fIvalue\fR);
.fi

.LP
.nf
\fBint\fR \fBscf_handle_bind\fR(\fBscf_handle_t *\fR\fIhandle\fR);
.fi

.LP
.nf
\fBint\fR \fBscf_handle_unbind\fR(\fBscf_handle_t *\fR\fIhandle\fR);
.fi

.LP
.nf
\fBssize_t\fR \fBscf_myname\fR(\fBscf_handle_t *\fR\fIhandle\fR, \fBchar *\fR\fIout\fR, \fBsize_t\fR \fIsz\fR);
.fi

.SH DESCRIPTION
.sp
.LP
The \fBscf_handle_create()\fR function creates a new Service Configuration
Facility handle that is used as the base for all communication with the
configuration repository. The version argument must be \fBSCF_VERSION\fR.
.sp
.LP
The \fBscf_handle_decorate()\fR function sets a single connection-level
parameter, \fIparam\fR, to the supplied value. If \fIvalue\fR is
\fBSCF_DECORATE_CLEAR\fR, \fIparam\fR is reset to its default state. Values
passed to \fBscf_handle_decorate()\fR can be reset, reused, or destroyed. The
values set do not take effect until \fBscf_handle_bind()\fR is called. Any
invalid values will not cause errors prior to the call to
\fBscf_handle_bind()\fR. The only available decorations is:
.sp
.ne 2
.na
\fBdebug\fR
.ad
.RS 9n
(count) Set the debugging flags.
.RE

.sp
.LP
The \fBscf_handle_bind()\fR function binds the handle to a running
\fBsvc.configd\fR(1M) daemon, using the current decorations to modify the
connection. All states derived from the handle are reset immediately after a
successful binding.
.sp
.LP
The \fBscf_handle_unbind()\fR function severs an existing repository connection
or clears the in-client state for a broken connection.
.sp
.LP
The \fBscf_handle_destroy()\fR function destroys and frees an SCF handle. It is
illegal to use the handle after calling \fBscf_handle_destroy()\fR. Actions on
subordinate objects act as if the handle is unbound.
.sp
.LP
The \fBscf_myname()\fR function retrieves the FMRI for the service of which the
connecting process is a part. If the full FMRI does not fit in the provided
buffer, it is truncated and, if \fIsz\fR > 0, zero-terminated.
.SH RETURN VALUES
.sp
.LP
Upon successful completion, \fBscf_handle_create()\fR returns the new handle.
Otherwise, it returns \fINULL\fR.
.sp
.LP
Upon successful completion, \fBscf_handle_decorate()\fR,
\fBscf_handle_bind()\fR, and \fBscf_handle_unbind()\fR return 0. Otherwise,
they return -1.
.sp
.LP
The \fBscf_myname()\fR function returns the length of the full FMRI. Otherwise,
it returns -1.
.SH ERRORS
.sp
.LP
The \fBscf_handle_create()\fR function will fail if:
.sp
.ne 2
.na
\fB\fBSCF_ERROR_NO_MEMORY\fR\fR
.ad
.RS 30n
There is no memory available.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_VERSION_MISMATCH\fR\fR
.ad
.RS 30n
The version is invalid, or the application was compiled against a version of
the library that is more recent than the one on the system.
.RE

.sp
.LP
The \fBscf_handle_decorate()\fR function will fail if:
.sp
.ne 2
.na
\fB\fBSCF_ERROR_INVALID_ARGUMENT\fR\fR
.ad
.RS 30n
The \fIparam\fR argument is not a recognized parameter.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_TYPE_MISMATCH\fR\fR
.ad
.RS 30n
The \fIvalue\fR argument does not match the expected type for param.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_NOT_SET\fR\fR
.ad
.RS 30n
The \fIvalue\fR argument is not set.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_IN_USE\fR\fR
.ad
.RS 30n
The handle is currently bound.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_HANDLE_MISMATCH\fR\fR
.ad
.RS 30n
The \fIvalue\fR argument is not derived from \fIhandle\fR.
.RE

.sp
.LP
The \fBscf_handle_bind()\fR function will fail if:
.sp
.ne 2
.na
\fB\fBSCF_ERROR_INVALID_ARGUMENT\fR\fR
.ad
.RS 30n
One of the decorations was invalid.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_NO_SERVER\fR\fR
.ad
.RS 30n
The repository server is not running.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_NO_RESOURCES\fR\fR
.ad
.RS 30n
The server does not have adequate resources for a new connection.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_IN_USE\fR\fR
.ad
.RS 30n
The handle is already bound.
.RE

.sp
.LP
The \fBscf_handle_unbind()\fR function will fail if:
.sp
.ne 2
.na
\fB\fBSCF_ERROR_NOT_BOUND\fR\fR
.ad
.RS 23n
The handle is not bound.
.RE

.sp
.LP
The \fBscf_handle_myname()\fR function will fail if:
.sp
.ne 2
.na
\fB\fBSCF_ERROR_CONNECTION_BROKEN\fR\fR
.ad
.sp .6
.RS 4n
The connection to the repository was lost.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_NOT_BOUND\fR\fR
.ad
.sp .6
.RS 4n
The handle is not bound.
.RE

.sp
.ne 2
.na
\fB\fBSCF_ERROR_NOT_SET\fR\fR
.ad
.sp .6
.RS 4n
This process is not marked as a SMF service.
.RE

.sp
.LP
The \fBscf_error\fR(3SCF) function can be used to retrieve the error value.
.SH ATTRIBUTES
.sp
.LP
See \fBattributes\fR(5) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Committed
_
MT-Level	See below.
.TE

.sp
.LP
Operations on a single handle (and the objects associated with it) are Safe.
Operations on different handles are MT-Safe. Objects associated with different
handles cannot be mixed, as this will lead to an
\fBSCF_ERROR_HANDLE_MISMATCH\fR error.
.SH SEE ALSO
.sp
.LP
\fBlibscf\fR(3LIB), \fBscf_error\fR(3SCF), \fBattributes\fR(5)