#ifndef _INET_TCP_CLUSTER_H
#define _INET_TCP_CLUSTER_H
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _KERNEL
extern void (*cl_inet_listen)(netstackid_t, uint8_t, sa_family_t, uint8_t *,
in_port_t, void *);
extern void (*cl_inet_unlisten)(netstackid_t, uint8_t, sa_family_t, uint8_t *,
in_port_t, void *);
extern int (*cl_inet_connect2)(netstackid_t, uint8_t, boolean_t, sa_family_t,
uint8_t *, in_port_t, uint8_t *, in_port_t, void *);
extern void (*cl_inet_disconnect)(netstackid_t, uint8_t, sa_family_t,
uint8_t *, in_port_t, uint8_t *, in_port_t, void *);
extern int cl_tcp_walk_list(netstackid_t,
int (*callback)(cl_tcp_info_t *, void *), void *);
#define CL_INET_CONNECT(connp, is_outgoing, err) { \
(err) = 0; \
if (cl_inet_connect2 != NULL) { \
\
if ((connp)->conn_ipversion == IPV4_VERSION) { \
if ((connp)->conn_laddr_v4 != 0) { \
(err) = (*cl_inet_connect2)( \
(connp)->conn_netstack->netstack_stackid,\
IPPROTO_TCP, is_outgoing, AF_INET, \
(uint8_t *)(&((connp)->conn_laddr_v4)),\
(in_port_t)(connp)->conn_lport, \
(uint8_t *)(&((connp)->conn_faddr_v4)),\
(in_port_t)(connp)->conn_fport, NULL); \
} \
} else { \
if (!IN6_IS_ADDR_UNSPECIFIED( \
&(connp)->conn_laddr_v6)) { \
(err) = (*cl_inet_connect2)( \
(connp)->conn_netstack->netstack_stackid,\
IPPROTO_TCP, is_outgoing, AF_INET6, \
(uint8_t *)(&((connp)->conn_laddr_v6)),\
(in_port_t)(connp)->conn_lport, \
(uint8_t *)(&((connp)->conn_faddr_v6)), \
(in_port_t)(connp)->conn_fport, NULL); \
} \
} \
} \
}
#define CL_INET_DISCONNECT(connp) { \
if (cl_inet_disconnect != NULL) { \
\
if ((connp)->conn_ipversion == IPV4_VERSION) { \
if ((connp)->conn_laddr_v4 != 0) { \
(*cl_inet_disconnect)( \
(connp)->conn_netstack->netstack_stackid,\
IPPROTO_TCP, AF_INET, \
(uint8_t *)(&((connp)->conn_laddr_v4)),\
(in_port_t)(connp)->conn_lport, \
(uint8_t *)(&((connp)->conn_faddr_v4)),\
(in_port_t)(connp)->conn_fport, NULL); \
} \
} else { \
if (!IN6_IS_ADDR_UNSPECIFIED( \
&(connp)->conn_laddr_v6)) { \
(*cl_inet_disconnect)( \
(connp)->conn_netstack->netstack_stackid,\
IPPROTO_TCP, AF_INET6, \
(uint8_t *)(&((connp)->conn_laddr_v6)),\
(in_port_t)(connp)->conn_lport, \
(uint8_t *)(&((connp)->conn_faddr_v6)), \
(in_port_t)(connp)->conn_fport, NULL); \
} \
} \
} \
}
#endif
#ifdef __cplusplus
}
#endif
#endif