4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
33 #include <sys/idm/idm_transport.h>
34 #include <sys/ksocket.h>
36 * Define TCP window size (send and receive buffer sizes)
39 #define IDM_RCVBUF_SIZE (256 * 1024)
40 #define IDM_SNDBUF_SIZE (256 * 1024)
42 /* sockets-specific portion of idm_svc_t */
43 typedef struct idm_so_svc_s
{
46 kt_did_t is_thread_did
;
47 boolean_t is_thread_running
;
50 /* sockets-specific portion of idm_conn_t */
51 typedef struct idm_so_conn_s
{
54 kthread_t
*ic_tx_thread
;
55 kt_did_t ic_tx_thread_did
;
56 boolean_t ic_tx_thread_running
;
59 list_t ic_tx_list
; /* List of PDUs for transmit */
61 kthread_t
*ic_rx_thread
;
62 kt_did_t ic_rx_thread_did
;
63 boolean_t ic_rx_thread_running
;
66 void idm_so_init(idm_transport_t
*it
);
69 /* Socket functions */
72 idm_socreate(int domain
, int type
, int protocol
);
74 void idm_soshutdown(ksocket_t so
);
76 void idm_sodestroy(ksocket_t so
);
78 int idm_get_ipaddr(idm_addr_list_t
**);
80 int idm_sorecv(ksocket_t so
, void *msg
, size_t len
);
82 int idm_sosendto(ksocket_t so
, void *buff
, size_t len
,
83 struct sockaddr
*name
, socklen_t namelen
);
85 int idm_iov_sosend(ksocket_t so
, iovec_t
*iop
, int iovlen
,
88 int idm_iov_sorecv(ksocket_t so
, iovec_t
*iop
, int iovlen
,
91 void idm_sotx_thread(void *arg
);
92 void idm_sorx_thread(void *arg
);
95 int idm_sotx_pdu_constructor(void *hdl
, void *arg
, int flags
);
97 void idm_sotx_pdu_destructor(void *pdu_void
, void *arg
);
99 int idm_sorx_pdu_constructor(void *hdl
, void *arg
, int flags
);
101 void idm_sorx_pdu_destructor(void *pdu_void
, void *arg
);
103 void idm_so_svc_port_watcher(void *arg
);
110 #endif /* _IDM_SO_H */