/*
* 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
* 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
*/
/*
*/
/*
* Convert a TCP state value to a string.
*/
"<unknown>";
/*
* tcpinfo is the TCP header fields.
*/
} tcpinfo_t;
/*
* tcpsinfo contains stable TCP details from tcp_t.
*/
int tcps_local; /* is delivered locally, boolean */
int tcps_active; /* active open (from here), boolean */
int tcps_retransmit; /* retransmit send event, boolean */
} tcpsinfo_t;
/*
* tcplsinfo provides the old tcp state for state changes.
*/
} tcplsinfo_t;
/*
* __dtrace_tcp_tcph_t is used by the tcpinfo_t * translator to take either
* the non-NULL tcph_t * passed in or, if it is NULL, uses arg3 (tcp_t *)
* from the tcp:::send and tcp:::recieve probes and translates the tcp_t *
* into the tcpinfo_t. When no headers are available - as is the case for
* TCP fusion tcp:::send and tcp:::receive - this allows us to present the
* consumer with header data based on tcp_t * content and hide TCP fusion
* implementation details.
*/
tcp_hdr = T;
};
0;
0;
tcp_seq =
0;
tcp_ack =
0;
tcp_offset = T != NULL ?
0;
};
/*
* The following two members should just use tcp_t->tcp_loopback
* and tcp_t->tcp_active_open, however these are bit fields and
* can't be used until CR 6876830 is fixed. Meanwhile we source
* them a different way.
*/
tcps_local = T ? T->tcp_ipha ?
T->tcp_ip6h ?
tcps_lport = T ?
tcps_rport = T ?
tcps_laddr = T ?
tcps_raddr = T ?
/*
* Determine if send is a retransmission by comparing the seq # to
* tcp_rexmit_nxt/tcp_rexmit_max - if the value is >= rexmit_nxt and
* < rexmit_max, this is a retransmission. Cannot use tcp_rexmit
* bitfield value due to CR 6876830.
*/
1 : 0;
};
/*
* Note: although we specify that the old state argument used as the
* input to the tcplsinfo_t translator is an int32_t, it reaches us as an
* int64_t (since it is a probe argument) so explicitly cast it back to
* interpret the negatively-valued states correctly.
*/
tcps_state = (int32_t) I;
};