ds_common.c revision da42b56a9a91df0c475186f2afad543f96a05019
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * CDDL HEADER START
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * The contents of this file are subject to the terms of the
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * Common Development and Distribution License (the "License").
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * You may not use this file except in compliance with the License.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * or http://www.opensolaris.org/os/licensing.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * See the License for the specific language governing permissions
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * and limitations under the License.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * When distributing Covered Code, include this CDDL HEADER in each
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
dfc4e0fc3052835b2a069aa9d869fa1161c33fe6Peter Major * If applicable, add the following below this CDDL HEADER, with the
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * fields enclosed by brackets "[]" replaced with your own identifying
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * information: Portions Copyright [yyyy] [name of copyright owner]
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * CDDL HEADER END
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * Use is subject to license terms.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * Domain Services Module Common Code.
1067e734d6cec73ee954f2e43c1bba0e09d267cfPhill Cunnington * This module is intended to be used by both Solaris and the VBSC
#ifndef MIN
#define MIN(a, b) ((a) < (b) ? (a) : (b))
#ifndef DS_DEFAULT_RETRIES
#ifndef DS_DEFAULT_DELAY
char *newstr;
return (newstr);
ds_common_init(void)
buf[0] = 0;
return (buf);
static ldc_status_t
int rv;
return (ldc_state);
__func__);
__func__);
static uint_t
if (!ds_enabled) {
return (LDC_SUCCESS);
goto done;
goto done;
done:
return (LDC_SUCCESS);
int rv;
return (rv);
if (rv != 0) {
return (rv);
int rv;
return (rv);
return (rv);
return (rv);
return (rv);
int rv = 0;
int retry_count = 0;
*sizep = 0;
while (bytes_left > 0) {
if (rv != 0) {
if (nbytes != 0) {
retry_count = 0;
return (rv);
char *hbuf;
char *currp;
int rv;
if (read_size != 0) {
if (!msg) {
msglen);
int rv;
int loopcnt = 0;
if (rv != 0) {
(void) ds_sys_dispatch_func((void (*)(void *))
return (rv);
(int)amt_left);
goto error;
loopcnt = 0;
} while (amt_left > 0);
return (rv);
char *msg;
explen);
if (match) {
if (match) {
explen);
int idx;
explen);
goto done;
done:
static ds_svc_t *
int idx;
return (svc);
} else if (!found_svc) {
return (found_svc);
char *msg;
case DS_SVC_REG_PENDING:
case DS_SVC_ACTIVE:
case DS_SVC_INACTIVE:
if (match) {
goto do_reg_nack;
explen);
goto done;
goto done;
done:
for (i = 0; i < DS_MAX_PORTS; i++) {
portid = 0;
int idx;
explen);
goto done;
goto done;
goto done;
goto done;
goto done;
goto done;
done:
char *msg;
explen);
if (!is_up)
explen);
#ifdef DEBUG
explen);
#ifdef DEBUG
char *msg;
int msgsz;
int hdrsz;
explen);
== NULL) {
explen);
int rv;
return (rv);
int rv;
return (rv);
#ifdef DEBUG
char *curr;
char *aoff;
aoff++;
int idx;
return (idx);
int idx;
int idx;
if (port) {
if (!was_ready) {
if (!was_ready) {
ds_svc_t *
ds_alloc_svc(void)
int idx;
goto found;
return (newsvc);
if (port) {
ds_svc_t *
int idx;
return (NULL);
return (NULL);
return (NULL);
return (NULL);
return (svc);
int idx;
return (DS_VERS_INCREASING_MAJOR_ERR);
return (DS_VERS_INCREASING_MINOR_ERR);
return (DS_VERS_OK);
int rv = 0;
int is_loopback;
int is_client;
return (EINVAL);
__func__);
return (EINVAL);
return (EINVAL);
return (EINVAL);
return (EALREADY);
if (is_client) {
is_loopback = 0;
return (rv);
is_loopback = 0;
if (is_loopback) {
if (hdlp) {
int is_loopback;
return (ENXIO);
if (is_loopback) {
int rv;
return (rv);
if (nhdls == 0) {
return (ENXIO);
rv);
return (rv);
rv);
return (rv);
int rv;
int is_client = 0;
return (ENXIO);
return (ENOTCONN);
return (ECONNRESET);
return (ECONNRESET);
if (is_client) {
return (rv);
int rv;
if (rv == 0) {
int tblsz;
* Hacked from zeus workspace, support.c
* Hacked from zeus workspace, support.c
return (B_FALSE);
return (B_FALSE);
for (i = 0; i < num_versions; i++) {
if (!found_match)
return (found_match);
int ds_errno;
char *estr;
} ds_errno_to_str_tab[] = {
#ifdef ECHRNG
{ 0, NULL },
int i, en;
return (ebuf);
return (ebuf);
int match = 0;
return (ENXIO);
if (!match) {
return (ENOTSUP);
return (EBUSY);
static ds_svc_t *
int idx;
return (svc);
return (NULL);
static ds_svc_t *
return (newsvc);
int idx;
int nhdls = 0;
nhdls++;
nhdls++;
return (nhdls);