Lines Matching refs:svc

158 static int ds_send_reg_req(ds_svc_t *svc, ds_port_t *port);
163 static int ds_svc_isfree(ds_svc_t *svc, void *arg);
164 static int ds_svc_unregister(ds_svc_t *svc, void *arg);
165 static int ds_svc_port_up(ds_svc_t *svc, void *arg);
168 static void ds_reset_svc(ds_svc_t *svc, ds_port_t *port);
169 static int ds_svc_register_onport(ds_svc_t *svc, ds_port_t *port);
170 static int ds_svc_register_onport_walker(ds_svc_t *svc, void *arg);
188 static int ds_loopback_set_svc(ds_svc_t *svc, ds_capability_t *cap,
198 static ds_svc_t *ds_svc_clone(ds_svc_t *svc);
199 static void ds_check_for_dup_services(ds_svc_t *svc);
200 static void ds_delete_svc_entry(ds_svc_t *svc);
939 ds_svc_t *svc, *found_svc = 0; in ds_find_svc_by_id_port() local
946 svc = ds_svcs.tbl[idx]; in ds_find_svc_by_id_port()
947 if (DS_SVC_ISFREE(svc)) in ds_find_svc_by_id_port()
949 if (strcmp(svc->cap.svc_id, svc_id) != 0) in ds_find_svc_by_id_port()
951 if ((svc->flags & DSSF_ISCLIENT) != flag_match) in ds_find_svc_by_id_port()
953 if (port != NULL && svc->port == port) { in ds_find_svc_by_id_port()
954 return (svc); in ds_find_svc_by_id_port()
955 } else if (svc->state == DS_SVC_INACTIVE) { in ds_find_svc_by_id_port()
956 found_svc = svc; in ds_find_svc_by_id_port()
958 found_svc = svc; in ds_find_svc_by_id_port()
975 ds_svc_t *svc = NULL; in ds_handle_reg_req() local
996 svc = ds_find_svc_by_id_port(req->svc_id, in ds_handle_reg_req()
998 if (svc == NULL) { in ds_handle_reg_req()
1025 PORTID(port), req->svc_id, (u_longlong_t)svc->hdl); in ds_handle_reg_req()
1039 switch (svc->state) { in ds_handle_reg_req()
1045 req->svc_id, svc->state); in ds_handle_reg_req()
1057 PORTID(port), req->svc_id, svc->state); in ds_handle_reg_req()
1058 (void) ds_svc_unregister(svc, port); in ds_handle_reg_req()
1061 (void) ds_svc_port_up(svc, port); in ds_handle_reg_req()
1062 (void) ds_svc_register_onport(svc, port); in ds_handle_reg_req()
1072 match = negotiate_version(svc->cap.nvers, svc->cap.vers, in ds_handle_reg_req()
1083 (int)DS_HDL2IDX(svc->hdl), svc->state, in ds_handle_reg_req()
1084 (int)(svc->port == NULL ? -1 : PORTID(svc->port))); in ds_handle_reg_req()
1089 if (svc->state != DS_SVC_INACTIVE) { in ds_handle_reg_req()
1090 if (svc->port != NULL && port == svc->port) { in ds_handle_reg_req()
1095 (void) ds_svc_unregister(svc, port); in ds_handle_reg_req()
1096 } else if (!DS_HDL_ISCLIENT(svc->hdl)) { in ds_handle_reg_req()
1105 svc = ds_svc_clone(svc); in ds_handle_reg_req()
1108 svc->port = port; in ds_handle_reg_req()
1109 svc->svc_hdl = req->svc_handle; in ds_handle_reg_req()
1110 svc->state = DS_SVC_ACTIVE; in ds_handle_reg_req()
1124 if (svc->ops.ds_reg_cb) { in ds_handle_reg_req()
1128 (*svc->ops.ds_reg_cb)(svc->ops.cb_arg, &version, in ds_handle_reg_req()
1129 svc->hdl); in ds_handle_reg_req()
1134 DS_EOL, PORTID(port), svc->cap.svc_id, in ds_handle_reg_req()
1152 DS_EOL, PORTID(port), svc->cap.svc_id, new_major); in ds_handle_reg_req()
1166 ds_svc_t *svc; in ds_handle_reg_ack() local
1186 (svc = ds_get_svc(ack->svc_handle)) == NULL) { in ds_handle_reg_ack()
1193 if (svc->state != DS_SVC_REG_PENDING) { in ds_handle_reg_ack()
1195 PORTID(port), svc->state); in ds_handle_reg_ack()
1199 ver = &(svc->cap.vers[svc->ver_idx]); in ds_handle_reg_ack()
1202 svc->ver.major = ver->major; in ds_handle_reg_ack()
1209 svc->ver.minor = ver->minor; in ds_handle_reg_ack()
1216 svc->ver.minor = ack->minor_vers; in ds_handle_reg_ack()
1219 svc->state = DS_SVC_ACTIVE; in ds_handle_reg_ack()
1220 svc->port = port; in ds_handle_reg_ack()
1223 DS_EOL, PORTID(port), svc->cap.svc_id, svc->ver.major, in ds_handle_reg_ack()
1224 svc->ver.minor, (u_longlong_t)svc->hdl); in ds_handle_reg_ack()
1227 if (svc->ops.ds_reg_cb) { in ds_handle_reg_ack()
1233 tmpver.major = svc->ver.major; in ds_handle_reg_ack()
1234 tmpver.minor = svc->ver.minor; in ds_handle_reg_ack()
1236 (*svc->ops.ds_reg_cb)(svc->ops.cb_arg, &tmpver, svc->hdl); in ds_handle_reg_ack()
1256 ds_try_next_port(ds_svc_t *svc, int portid) in ds_try_next_port() argument
1267 DS_PORTSET_DUP(totry, svc->avail); in ds_try_next_port()
1269 if (DS_PORT_IN_SET(svc->tried, i)) in ds_try_next_port()
1297 DS_PORTSET_ADD(svc->tried, portid); in ds_try_next_port()
1299 if (ds_send_reg_req(svc, port) == 0) { in ds_try_next_port()
1309 ds_reset_svc(svc, port); in ds_try_next_port()
1317 ds_svc_t *svc; in ds_handle_reg_nack() local
1346 if ((svc = ds_get_svc(nack->svc_handle)) == NULL) { in ds_handle_reg_nack()
1353 if (svc->state != DS_SVC_REG_PENDING) { in ds_handle_reg_nack()
1355 "invalid state (%d)" DS_EOL, PORTID(port), svc->cap.svc_id, in ds_handle_reg_nack()
1356 (u_longlong_t)nack->svc_handle, svc->state); in ds_handle_reg_nack()
1362 " for %s" DS_EOL, PORTID(port), svc->cap.svc_id); in ds_handle_reg_nack()
1363 ds_reset_svc(svc, port); in ds_handle_reg_nack()
1373 DS_EOL, PORTID(port), svc->cap.svc_id); in ds_handle_reg_nack()
1374 ds_reset_svc(svc, port); in ds_handle_reg_nack()
1375 if ((svc->flags & DSSF_ISCLIENT) == 0) in ds_handle_reg_nack()
1376 ds_try_next_port(svc, PORTID(port) + 1); in ds_handle_reg_nack()
1381 DS_EOL, PORTID(port), svc->cap.svc_id, in ds_handle_reg_nack()
1389 for (idx = svc->ver_idx; idx < svc->cap.nvers; idx++) { in ds_handle_reg_nack()
1390 if (svc->cap.vers[idx].major <= nack->major_vers) { in ds_handle_reg_nack()
1396 if (idx == svc->cap.nvers) { in ds_handle_reg_nack()
1399 DS_EOL, PORTID(port), svc->cap.svc_id, nack->major_vers); in ds_handle_reg_nack()
1400 ds_reset_svc(svc, port); in ds_handle_reg_nack()
1401 if ((svc->flags & DSSF_ISCLIENT) == 0) in ds_handle_reg_nack()
1402 ds_try_next_port(svc, PORTID(port) + 1); in ds_handle_reg_nack()
1407 svc->state = DS_SVC_INACTIVE; in ds_handle_reg_nack()
1408 svc->ver_idx = idx; in ds_handle_reg_nack()
1410 (void) ds_svc_register(svc, NULL); in ds_handle_reg_nack()
1422 ds_svc_t *svc; in ds_handle_unreg_req() local
1442 ((svc = ds_find_clnt_svc_by_hdl_port(req->svc_handle, port)) in ds_handle_unreg_req()
1443 == NULL && ((svc = ds_get_svc(req->svc_handle)) == NULL || in ds_handle_unreg_req()
1444 svc->port != port))) { in ds_handle_unreg_req()
1458 PORTID(port), svc->cap.svc_id, (u_longlong_t)req->svc_handle); in ds_handle_unreg_req()
1460 (void) ds_svc_unregister(svc, svc->port); in ds_handle_unreg_req()
1463 PORTID(port), svc->cap.svc_id, (u_longlong_t)req->svc_handle); in ds_handle_unreg_req()
1465 ds_check_for_dup_services(svc); in ds_handle_unreg_req()
1563 ds_svc_t *svc; in ds_handle_data() local
1587 if ((svc = ds_find_clnt_svc_by_hdl_port(data->svc_handle, port)) in ds_handle_data()
1589 if ((svc = ds_get_svc(data->svc_handle)) == NULL) { in ds_handle_data()
1602 PORTID(port), svc->cap.svc_id, (u_longlong_t)svc->hdl); in ds_handle_data()
1606 (*svc->ops.ds_data_cb)(svc->ops.cb_arg, msg, msgsz); in ds_handle_data()
1612 ds_svc_t *svc; in ds_handle_nack() local
1634 if ((svc = ds_find_clnt_svc_by_hdl_port(nack->svc_handle, in ds_handle_nack()
1636 if ((svc = ds_get_svc(nack->svc_handle)) == NULL) { in ds_handle_nack()
1646 (void) ds_svc_unregister(svc, svc->port); in ds_handle_nack()
1698 ds_send_reg_req(ds_svc_t *svc, ds_port_t *port) in ds_send_reg_req() argument
1708 if ((svc->state != DS_SVC_INACTIVE) && in ds_send_reg_req()
1709 ((svc->flags & DSSF_ISCLIENT) == 0)) { in ds_send_reg_req()
1711 "for svc '%s'" DS_EOL, PORTID(port), svc->state, in ds_send_reg_req()
1712 svc->cap.svc_id); in ds_send_reg_req()
1739 idlen = strlen(svc->cap.svc_id); in ds_send_reg_req()
1749 req->svc_handle = svc->hdl; in ds_send_reg_req()
1750 ver = &(svc->cap.vers[svc->ver_idx]); in ds_send_reg_req()
1755 (void) memcpy(req->svc_id, svc->cap.svc_id, idlen + 1); in ds_send_reg_req()
1759 DS_EOL, PORTID(port), svc->cap.svc_id, ver->major, ver->minor, in ds_send_reg_req()
1760 (u_longlong_t)svc->hdl); in ds_send_reg_req()
1763 svc->port = port; in ds_send_reg_req()
1765 } else if ((svc->flags & DSSF_ISCLIENT) == 0) { in ds_send_reg_req()
1766 svc->state = DS_SVC_REG_PENDING; in ds_send_reg_req()
1777 ds_send_unreg_req(ds_svc_t *svc) in ds_send_unreg_req() argument
1783 ds_port_t *port = svc->port; in ds_send_unreg_req()
1788 "associated with a port" DS_EOL, svc->cap.svc_id); in ds_send_unreg_req()
1823 if (svc->flags & DSSF_ISCLIENT) { in ds_send_unreg_req()
1824 req->svc_handle = svc->svc_hdl; in ds_send_unreg_req()
1826 req->svc_handle = svc->hdl; in ds_send_unreg_req()
1831 PORTID(port), (svc->cap.svc_id) ? svc->cap.svc_id : "NULL", in ds_send_unreg_req()
1832 (u_longlong_t)svc->hdl); in ds_send_unreg_req()
2015 ds_svc_t *svc; in ds_walk_svcs() local
2021 svc = ds_svcs.tbl[idx]; in ds_walk_svcs()
2024 if ((*svc_cb)(svc, arg) != 0) in ds_walk_svcs()
2032 ds_svc_isfree(ds_svc_t *svc, void *arg) in ds_svc_isfree() argument
2042 if (DS_SVC_ISFREE(svc)) { in ds_svc_isfree()
2052 ds_svc_ismatch(ds_svc_t *svc, void *arg) in ds_svc_ismatch() argument
2054 if (DS_SVC_ISFREE(svc)) { in ds_svc_ismatch()
2058 if (strcmp(svc->cap.svc_id, arg) == 0 && in ds_svc_ismatch()
2059 (svc->flags & DSSF_ISCLIENT) == 0) { in ds_svc_ismatch()
2068 ds_svc_clnt_ismatch(ds_svc_t *svc, void *arg) in ds_svc_clnt_ismatch() argument
2070 if (DS_SVC_ISFREE(svc)) { in ds_svc_clnt_ismatch()
2074 if (strcmp(svc->cap.svc_id, arg) == 0 && in ds_svc_clnt_ismatch()
2075 (svc->flags & DSSF_ISCLIENT) != 0) { in ds_svc_clnt_ismatch()
2084 ds_svc_free(ds_svc_t *svc, void *arg) in ds_svc_free() argument
2088 if (svc == NULL) { in ds_svc_free()
2092 if (svc->cap.svc_id) { in ds_svc_free()
2093 DS_FREE(svc->cap.svc_id, strlen(svc->cap.svc_id) + 1); in ds_svc_free()
2094 svc->cap.svc_id = NULL; in ds_svc_free()
2097 if (svc->cap.vers) { in ds_svc_free()
2098 DS_FREE(svc->cap.vers, svc->cap.nvers * sizeof (ds_ver_t)); in ds_svc_free()
2099 svc->cap.vers = NULL; in ds_svc_free()
2102 DS_FREE(svc, sizeof (ds_svc_t)); in ds_svc_free()
2111 ds_svc_t *svc; in ds_set_svc_port_tried() local
2117 svc = ds_svcs.tbl[idx]; in ds_set_svc_port_tried()
2118 if (!DS_SVC_ISFREE(svc) && (svc->flags & DSSF_ISCLIENT) != 0 && in ds_set_svc_port_tried()
2119 strcmp(svc_id, svc->cap.svc_id) == 0) in ds_set_svc_port_tried()
2120 DS_PORTSET_ADD(svc->tried, PORTID(port)); in ds_set_svc_port_tried()
2125 ds_svc_register_onport(ds_svc_t *svc, ds_port_t *port) in ds_svc_register_onport() argument
2129 if (DS_SVC_ISFREE(svc)) in ds_svc_register_onport()
2132 if (!DS_PORT_IN_SET(svc->avail, PORTID(port))) in ds_svc_register_onport()
2135 if (DS_PORT_IN_SET(svc->tried, PORTID(port))) in ds_svc_register_onport()
2141 if ((svc->flags & DSSF_ISCLIENT) == 0) { in ds_svc_register_onport()
2142 if (svc->state != DS_SVC_INACTIVE) in ds_svc_register_onport()
2144 DS_PORTSET_ADD(svc->tried, PORTID(port)); in ds_svc_register_onport()
2146 ds_set_svc_port_tried(svc->cap.svc_id, port); in ds_svc_register_onport()
2156 if (ds_send_reg_req(svc, port) == 0) { in ds_svc_register_onport()
2161 if ((svc->flags & DSSF_ISCLIENT) == 0) { in ds_svc_register_onport()
2163 ds_reset_svc(svc, port); in ds_svc_register_onport()
2169 ds_svc_register_onport_walker(ds_svc_t *svc, void *arg) in ds_svc_register_onport_walker() argument
2173 if (DS_SVC_ISFREE(svc)) in ds_svc_register_onport_walker()
2176 (void) ds_svc_register_onport(svc, arg); in ds_svc_register_onport_walker()
2181 ds_svc_register(ds_svc_t *svc, void *arg) in ds_svc_register() argument
2190 if (DS_SVC_ISFREE(svc)) in ds_svc_register()
2193 DS_PORTSET_DUP(ports, svc->avail); in ds_svc_register()
2194 if (svc->flags & DSSF_ISCLIENT) { in ds_svc_register()
2196 if (DS_PORT_IN_SET(svc->tried, idx)) in ds_svc_register()
2199 } else if (svc->state != DS_SVC_INACTIVE) in ds_svc_register()
2221 if (ds_svc_register_onport(svc, port)) { in ds_svc_register()
2222 if ((svc->flags & DSSF_ISCLIENT) == 0) in ds_svc_register()
2231 ds_svc_unregister(ds_svc_t *svc, void *arg) in ds_svc_unregister() argument
2238 if (DS_SVC_ISFREE(svc)) { in ds_svc_unregister()
2243 if (svc->port != port) { in ds_svc_unregister()
2249 " hdl=0x%09lx" DS_EOL, PORTID(port), svc->cap.svc_id, in ds_svc_unregister()
2250 svc->ver.major, svc->ver.minor, svc->hdl); in ds_svc_unregister()
2253 " hdl=0x%09lx" DS_EOL, svc->cap.svc_id, svc->ver.major, in ds_svc_unregister()
2254 svc->ver.minor, svc->hdl); in ds_svc_unregister()
2258 ds_reset_svc(svc, port); in ds_svc_unregister()
2261 if (svc->ops.ds_unreg_cb) { in ds_svc_unregister()
2262 (*svc->ops.ds_unreg_cb)(svc->ops.cb_arg); in ds_svc_unregister()
2266 hdl = DS_ALLOC_HDL(DS_HDL2IDX(svc->hdl), DS_HDL2COUNT(svc->hdl)); in ds_svc_unregister()
2267 if (DS_HDL_ISCLIENT(svc->hdl)) { in ds_svc_unregister()
2270 svc->hdl = hdl; in ds_svc_unregister()
2272 if (svc->state != DS_SVC_UNREG_PENDING) { in ds_svc_unregister()
2274 (void) ds_svc_register(svc, NULL); in ds_svc_unregister()
2281 ds_svc_port_up(ds_svc_t *svc, void *arg) in ds_svc_port_up() argument
2285 if (DS_SVC_ISFREE(svc)) { in ds_svc_port_up()
2290 DS_PORTSET_ADD(svc->avail, port->id); in ds_svc_port_up()
2291 DS_PORTSET_DEL(svc->tried, port->id); in ds_svc_port_up()
2381 ds_reset_svc(ds_svc_t *svc, ds_port_t *port) in ds_reset_svc() argument
2385 if (svc->state != DS_SVC_UNREG_PENDING) in ds_reset_svc()
2386 svc->state = DS_SVC_INACTIVE; in ds_reset_svc()
2387 svc->ver_idx = 0; in ds_reset_svc()
2388 svc->ver.major = 0; in ds_reset_svc()
2389 svc->ver.minor = 0; in ds_reset_svc()
2390 svc->port = NULL; in ds_reset_svc()
2392 DS_PORTSET_DEL(svc->avail, port->id); in ds_reset_svc()
2400 ds_svc_t *svc; in ds_get_svc() local
2413 svc = ds_svcs.tbl[idx]; in ds_get_svc()
2416 if (DS_SVC_ISFREE(svc)) in ds_get_svc()
2420 if (svc->hdl != hdl) in ds_get_svc()
2423 return (svc); in ds_get_svc()
2493 ds_svc_t *svc; in ds_ucap_init() local
2548 svc = ds_alloc_svc(); in ds_ucap_init()
2550 DS_HDL_SET_ISCLIENT(svc->hdl); in ds_ucap_init()
2553 svc->state = DS_SVC_FREE; in ds_ucap_init()
2554 svc->svc_hdl = DS_BADHDL1; in ds_ucap_init()
2556 svc->flags = flags; in ds_ucap_init()
2557 svc->drvi = instance; in ds_ucap_init()
2558 svc->drv_psp = NULL; in ds_ucap_init()
2568 if ((rv = ds_loopback_set_svc(svc, cap, &lb_hdl)) != 0) { in ds_ucap_init()
2579 (void) memcpy(&svc->cap, cap, sizeof (ds_capability_t)); in ds_ucap_init()
2582 svc->cap.svc_id = ds_strdup(cap->svc_id); in ds_ucap_init()
2585 svc->cap.vers = DS_MALLOC(cap->nvers * sizeof (ds_ver_t)); in ds_ucap_init()
2586 (void) memcpy(svc->cap.vers, cap->vers, cap->nvers * sizeof (ds_ver_t)); in ds_ucap_init()
2589 (void) memcpy(&svc->ops, ops, sizeof (ds_clnt_ops_t)); in ds_ucap_init()
2591 svc->state = DS_SVC_INACTIVE; in ds_ucap_init()
2592 svc->ver_idx = 0; in ds_ucap_init()
2593 DS_PORTSET_DUP(svc->avail, ds_allports); in ds_ucap_init()
2594 DS_PORTSET_SETNULL(svc->tried); in ds_ucap_init()
2598 hdl = svc->hdl; in ds_ucap_init()
2605 ds_cbarg_set_cookie(svc); in ds_ucap_init()
2618 (void) ds_svc_register(svc, NULL); in ds_ucap_init()
2627 __func__, svc->cap.svc_id, hdl); in ds_ucap_init()
2647 ds_svc_t *svc; in ds_unreg_hdl() local
2654 if ((svc = ds_get_svc(hdl)) == NULL) { in ds_unreg_hdl()
2662 svc->cap.svc_id, (u_longlong_t)svc->hdl); in ds_unreg_hdl()
2664 svc->state = DS_SVC_UNREG_PENDING; in ds_unreg_hdl()
2666 is_loopback = ((svc->flags & DSSF_LOOPBACK) != 0); in ds_unreg_hdl()
2667 lb_hdl = svc->svc_hdl; in ds_unreg_hdl()
2669 if (svc->port) { in ds_unreg_hdl()
2670 (void) ds_send_unreg_req(svc); in ds_unreg_hdl()
2673 (void) ds_svc_unregister(svc, svc->port); in ds_unreg_hdl()
2675 ds_delete_svc_entry(svc); in ds_unreg_hdl()
2730 ds_svc_t *svc; in ds_cap_send() local
2741 if ((svc = ds_get_svc(hdl)) == NULL) { in ds_cap_send()
2748 if (svc->state != DS_SVC_ACTIVE) { in ds_cap_send()
2751 __func__, svc->state); in ds_cap_send()
2756 if (svc->flags & DSSF_LOOPBACK) { in ds_cap_send()
2757 hdl = svc->svc_hdl; in ds_cap_send()
2763 if ((port = svc->port) == NULL) { in ds_cap_send()
2765 DS_EOL, __func__, svc->cap.svc_id); in ds_cap_send()
2770 if (svc->flags & DSSF_ISCLIENT) { in ds_cap_send()
2772 svc_hdl = svc->svc_hdl; in ds_cap_send()
2805 " payload_len=%d" DS_EOL, PORTID(port), (u_longlong_t)svc->hdl, in ds_cap_send()
3019 ds_svc_t *svc; in ds_loopback_register() local
3024 if ((svc = ds_get_svc(hdl)) == NULL) { in ds_loopback_register()
3030 svc->state = DS_SVC_ACTIVE; in ds_loopback_register()
3032 if (svc->ops.ds_reg_cb) { in ds_loopback_register()
3035 ds_ver.major = svc->ver.major; in ds_loopback_register()
3036 ds_ver.minor = svc->ver.minor; in ds_loopback_register()
3037 (*svc->ops.ds_reg_cb)(svc->ops.cb_arg, &ds_ver, hdl); in ds_loopback_register()
3044 ds_svc_t *svc; in ds_loopback_unregister() local
3047 if ((svc = ds_get_svc(hdl)) == NULL) { in ds_loopback_unregister()
3056 svc->flags &= ~DSSF_LOOPBACK; in ds_loopback_unregister()
3057 svc->svc_hdl = DS_BADHDL2; in ds_loopback_unregister()
3058 svc->state = DS_SVC_INACTIVE; in ds_loopback_unregister()
3060 if (svc->ops.ds_unreg_cb) { in ds_loopback_unregister()
3063 (*svc->ops.ds_unreg_cb)(svc->ops.cb_arg); in ds_loopback_unregister()
3070 ds_svc_t *svc; in ds_loopback_send() local
3073 if ((svc = ds_get_svc(hdl)) == NULL) { in ds_loopback_send()
3084 if (svc->ops.ds_data_cb) { in ds_loopback_send()
3087 (*svc->ops.ds_data_cb)(svc->ops.cb_arg, buf, buflen); in ds_loopback_send()
3092 ds_loopback_set_svc(ds_svc_t *svc, ds_capability_t *cap, ds_svc_hdl_t *lb_hdlp) in ds_loopback_set_svc() argument
3135 svc->state = DS_SVC_INACTIVE; /* prevent alloc'ing svc */ in ds_loopback_set_svc()
3143 svc->flags |= DSSF_LOOPBACK; in ds_loopback_set_svc()
3144 svc->svc_hdl = lb_svc->hdl; in ds_loopback_set_svc()
3145 svc->port = NULL; in ds_loopback_set_svc()
3146 svc->ver.major = new_major; in ds_loopback_set_svc()
3147 svc->ver.minor = new_minor; in ds_loopback_set_svc()
3150 lb_svc->svc_hdl = svc->hdl; in ds_loopback_set_svc()
3156 DS_EOL, __func__, (u_longlong_t)svc->hdl, in ds_loopback_set_svc()
3165 ds_svc_t *svc; in ds_find_clnt_svc_by_hdl_port() local
3173 svc = ds_svcs.tbl[idx]; in ds_find_clnt_svc_by_hdl_port()
3174 if (DS_SVC_ISFREE(svc)) in ds_find_clnt_svc_by_hdl_port()
3176 if ((svc->flags & DSSF_ISCLIENT) != 0 && in ds_find_clnt_svc_by_hdl_port()
3177 svc->svc_hdl == hdl && svc->port == port) { in ds_find_clnt_svc_by_hdl_port()
3180 (u_longlong_t)hdl, (uint_t)DS_HDL2IDX(svc->hdl)); in ds_find_clnt_svc_by_hdl_port()
3181 return (svc); in ds_find_clnt_svc_by_hdl_port()
3191 ds_svc_clone(ds_svc_t *svc) in ds_svc_clone() argument
3196 ASSERT(svc->flags & DSSF_ISCLIENT); in ds_svc_clone()
3203 "0x%llx" DS_EOL, __func__, (u_longlong_t)svc->hdl, in ds_svc_clone()
3205 (void) memcpy(newsvc, svc, sizeof (ds_svc_t)); in ds_svc_clone()
3210 newsvc->cap.svc_id = ds_strdup(svc->cap.svc_id); in ds_svc_clone()
3211 newsvc->cap.vers = DS_MALLOC(svc->cap.nvers * sizeof (ds_ver_t)); in ds_svc_clone()
3212 (void) memcpy(newsvc->cap.vers, svc->cap.vers, in ds_svc_clone()
3213 svc->cap.nvers * sizeof (ds_ver_t)); in ds_svc_clone()
3235 ds_svc_t *svc; in i_ds_hdl_lookup() local
3241 svc = ds_svcs.tbl[idx]; in i_ds_hdl_lookup()
3242 if (DS_SVC_ISFREE(svc)) in i_ds_hdl_lookup()
3244 if (strcmp(svc->cap.svc_id, service) == 0 && in i_ds_hdl_lookup()
3245 (svc->flags & DSSF_ISCLIENT) == client_flag) { in i_ds_hdl_lookup()
3247 hdlp[nhdls] = svc->hdl; in i_ds_hdl_lookup()
3275 ds_check_for_dup_services(ds_svc_t *svc) in ds_check_for_dup_services() argument
3277 if ((svc->flags & DSSF_ISCLIENT) != 0 && in ds_check_for_dup_services()
3278 svc->state == DS_SVC_INACTIVE && in ds_check_for_dup_services()
3279 i_ds_hdl_lookup(svc->cap.svc_id, 1, NULL, 2) == 2) { in ds_check_for_dup_services()
3280 ds_delete_svc_entry(svc); in ds_check_for_dup_services()
3285 ds_delete_svc_entry(ds_svc_t *svc) in ds_delete_svc_entry() argument
3295 DS_FREE(svc->cap.svc_id, strlen(svc->cap.svc_id) + 1); in ds_delete_svc_entry()
3296 DS_FREE(svc->cap.vers, svc->cap.nvers * sizeof (ds_ver_t)); in ds_delete_svc_entry()
3299 tmp_hdl = svc->hdl; in ds_delete_svc_entry()
3300 bzero((void *)svc, sizeof (ds_svc_t)); in ds_delete_svc_entry()
3303 svc->hdl = tmp_hdl; in ds_delete_svc_entry()
3304 svc->state = DS_SVC_FREE; in ds_delete_svc_entry()