diff options
author | Kacheong Poon <Kacheong.Poon@Sun.COM> | 2010-02-24 07:49:29 -0800 |
---|---|---|
committer | Kacheong Poon <Kacheong.Poon@Sun.COM> | 2010-02-24 07:49:29 -0800 |
commit | 721fffe35d40e548a5a58dc53a2ec9c6762172d9 (patch) | |
tree | 0d10f62e1ca25f6d524b97fc4240fe59fa9e8548 /usr/src/uts/common/inet/tcp_cluster.h | |
parent | 3357fc65c82fa21d1aabd8d906fb1f49810afe0b (diff) | |
download | illumos-joyent-721fffe35d40e548a5a58dc53a2ec9c6762172d9.tar.gz |
PSARC 2010/042 increase max TCP_INIT_CWND
6923847 Increase TCP_INIT_CWND max
6918307 Some TCP kstats are not needed
6923858 TCP connection counter
6925635 The file tcp.c is too big
Diffstat (limited to 'usr/src/uts/common/inet/tcp_cluster.h')
-rw-r--r-- | usr/src/uts/common/inet/tcp_cluster.h | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/usr/src/uts/common/inet/tcp_cluster.h b/usr/src/uts/common/inet/tcp_cluster.h new file mode 100644 index 0000000000..90efc1be34 --- /dev/null +++ b/usr/src/uts/common/inet/tcp_cluster.h @@ -0,0 +1,128 @@ +/* + * CDDL HEADER START + * + * The contents of this file are subject to the terms of the + * Common Development and Distribution License (the "License"). + * You may not use this file except in compliance with the License. + * + * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE + * or http://www.opensolaris.org/os/licensing. + * See the License for the specific language governing permissions + * and limitations under the License. + * + * When distributing Covered Code, include this CDDL HEADER in each + * file and include the License file at usr/src/OPENSOLARIS.LICENSE. + * If applicable, add the following below this CDDL HEADER, with the + * fields enclosed by brackets "[]" replaced with your own identifying + * information: Portions Copyright [yyyy] [name of copyright owner] + * + * CDDL HEADER END + */ +/* + * Copyright 2010 Sun Microsystems, Inc. All rights reserved. + * Use is subject to license terms. + */ + +#ifndef _INET_TCP_CLUSTER_H +#define _INET_TCP_CLUSTER_H + +#ifdef __cplusplus +extern "C" { +#endif + +#ifdef _KERNEL + +/* + * Cluster hooks defined in tcp_cluster.c. + */ +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 *); + + +/* + * Cluster networking hook for traversing current connection list. + * This routine is used to extract the current list of live connections + * which must continue to to be dispatched to this node. + */ +extern int cl_tcp_walk_list(netstackid_t, + int (*callback)(cl_tcp_info_t *, void *), void *); + +/* + * int CL_INET_CONNECT(conn_t *cp, tcp_t *tcp, boolean_t is_outgoing, int err) + */ +#define CL_INET_CONNECT(connp, is_outgoing, err) { \ + (err) = 0; \ + if (cl_inet_connect2 != NULL) { \ + /* \ + * Running in cluster mode - register active connection \ + * information \ + */ \ + 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) { \ + /* \ + * Running in cluster mode - deregister active \ + * connection information \ + */ \ + 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 /* _KERNEL */ + +#ifdef __cplusplus +} +#endif + +#endif /* _INET_TCP_CLUSTER_H */ |