8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / uts / common / inet / tcp_cluster.h
blob90efc1be34379a127c77b5ffdd358c83afb7908c
1 /*
2 * CDDL HEADER START
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]
19 * CDDL HEADER END
22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
26 #ifndef _INET_TCP_CLUSTER_H
27 #define _INET_TCP_CLUSTER_H
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
33 #ifdef _KERNEL
36 * Cluster hooks defined in tcp_cluster.c.
38 extern void (*cl_inet_listen)(netstackid_t, uint8_t, sa_family_t, uint8_t *,
39 in_port_t, void *);
40 extern void (*cl_inet_unlisten)(netstackid_t, uint8_t, sa_family_t, uint8_t *,
41 in_port_t, void *);
42 extern int (*cl_inet_connect2)(netstackid_t, uint8_t, boolean_t, sa_family_t,
43 uint8_t *, in_port_t, uint8_t *, in_port_t, void *);
44 extern void (*cl_inet_disconnect)(netstackid_t, uint8_t, sa_family_t,
45 uint8_t *, in_port_t, uint8_t *, in_port_t, void *);
49 * Cluster networking hook for traversing current connection list.
50 * This routine is used to extract the current list of live connections
51 * which must continue to to be dispatched to this node.
53 extern int cl_tcp_walk_list(netstackid_t,
54 int (*callback)(cl_tcp_info_t *, void *), void *);
57 * int CL_INET_CONNECT(conn_t *cp, tcp_t *tcp, boolean_t is_outgoing, int err)
59 #define CL_INET_CONNECT(connp, is_outgoing, err) { \
60 (err) = 0; \
61 if (cl_inet_connect2 != NULL) { \
62 /* \
63 * Running in cluster mode - register active connection \
64 * information \
65 */ \
66 if ((connp)->conn_ipversion == IPV4_VERSION) { \
67 if ((connp)->conn_laddr_v4 != 0) { \
68 (err) = (*cl_inet_connect2)( \
69 (connp)->conn_netstack->netstack_stackid,\
70 IPPROTO_TCP, is_outgoing, AF_INET, \
71 (uint8_t *)(&((connp)->conn_laddr_v4)),\
72 (in_port_t)(connp)->conn_lport, \
73 (uint8_t *)(&((connp)->conn_faddr_v4)),\
74 (in_port_t)(connp)->conn_fport, NULL); \
75 } \
76 } else { \
77 if (!IN6_IS_ADDR_UNSPECIFIED( \
78 &(connp)->conn_laddr_v6)) { \
79 (err) = (*cl_inet_connect2)( \
80 (connp)->conn_netstack->netstack_stackid,\
81 IPPROTO_TCP, is_outgoing, AF_INET6, \
82 (uint8_t *)(&((connp)->conn_laddr_v6)),\
83 (in_port_t)(connp)->conn_lport, \
84 (uint8_t *)(&((connp)->conn_faddr_v6)), \
85 (in_port_t)(connp)->conn_fport, NULL); \
86 } \
87 } \
88 } \
91 #define CL_INET_DISCONNECT(connp) { \
92 if (cl_inet_disconnect != NULL) { \
93 /* \
94 * Running in cluster mode - deregister active \
95 * connection information \
96 */ \
97 if ((connp)->conn_ipversion == IPV4_VERSION) { \
98 if ((connp)->conn_laddr_v4 != 0) { \
99 (*cl_inet_disconnect)( \
100 (connp)->conn_netstack->netstack_stackid,\
101 IPPROTO_TCP, AF_INET, \
102 (uint8_t *)(&((connp)->conn_laddr_v4)),\
103 (in_port_t)(connp)->conn_lport, \
104 (uint8_t *)(&((connp)->conn_faddr_v4)),\
105 (in_port_t)(connp)->conn_fport, NULL); \
107 } else { \
108 if (!IN6_IS_ADDR_UNSPECIFIED( \
109 &(connp)->conn_laddr_v6)) { \
110 (*cl_inet_disconnect)( \
111 (connp)->conn_netstack->netstack_stackid,\
112 IPPROTO_TCP, AF_INET6, \
113 (uint8_t *)(&((connp)->conn_laddr_v6)),\
114 (in_port_t)(connp)->conn_lport, \
115 (uint8_t *)(&((connp)->conn_faddr_v6)), \
116 (in_port_t)(connp)->conn_fport, NULL); \
122 #endif /* _KERNEL */
124 #ifdef __cplusplus
126 #endif
128 #endif /* _INET_TCP_CLUSTER_H */