159 uint32_t ipv6_flow; /* flow label */
160 uint16_t ipv6_plen; /* payload length */
161 uint8_t ipv6_nexthdr; /* next header protocol */
162 string ipv6_nextstr; /* next header protocol, as a string */
163 uint8_t ipv6_hlim; /* hop limit */
164 in6_addr_t *ipv6_src; /* source address */
165 in6_addr_t *ipv6_dst; /* destination address */
166 string ipv6_saddr; /* source address, string */
167 string ipv6_daddr; /* destination address, string */
168 ip6_t *ipv6_hdr; /* pointer to raw header */
169 } ipv6info_t;
170
171 /*
172 * void_ip_t is a void pointer to either an IPv4 or IPv6 header. It has
173 * its own type name so that a translator can be determined.
174 */
175 typedef uintptr_t void_ip_t;
176
177 /*
178 * __dtrace_ipsr_ill_t is used by the translator to take an ill_t plus an
179 * additional arg6 from the ip:::send and ip:::recieve probes, and translate
180 * them to an ifinfo_t.
181 */
182 typedef ill_t __dtrace_ipsr_ill_t;
183
184 /*
185 * __dtrace_tcp_void_ip_t is used by the translator to take either the
186 * non-NULL void_ip_t * passed in or, if it is NULL, uses arg3 (tcp_t *)
187 * from the tcp:::send and tcp:::recieve probes to translate to an ipinfo_t.
188 * When no headers are available in the TCP fusion case for tcp:::send
189 * and tcp:::receive case, this allows us to present the consumer with header
190 * data based on the tcp_t * content in order to hide the implementation
191 * details of TCP fusion.
192 */
193 typedef void * __dtrace_tcp_void_ip_t;
194
195 #pragma D binding "1.5" translator
196 translator pktinfo_t < mblk_t *M > {
197 pkt_addr = NULL;
198 };
199
200 #pragma D binding "1.5" translator
201 translator csinfo_t < conn_t *C > {
202 cs_addr = NULL;
203 };
204
205 #pragma D binding "1.6.3" translator
206 translator csinfo_t < ip_xmit_attr_t *C > {
207 cs_addr = (uintptr_t)C;
|
159 uint32_t ipv6_flow; /* flow label */
160 uint16_t ipv6_plen; /* payload length */
161 uint8_t ipv6_nexthdr; /* next header protocol */
162 string ipv6_nextstr; /* next header protocol, as a string */
163 uint8_t ipv6_hlim; /* hop limit */
164 in6_addr_t *ipv6_src; /* source address */
165 in6_addr_t *ipv6_dst; /* destination address */
166 string ipv6_saddr; /* source address, string */
167 string ipv6_daddr; /* destination address, string */
168 ip6_t *ipv6_hdr; /* pointer to raw header */
169 } ipv6info_t;
170
171 /*
172 * void_ip_t is a void pointer to either an IPv4 or IPv6 header. It has
173 * its own type name so that a translator can be determined.
174 */
175 typedef uintptr_t void_ip_t;
176
177 /*
178 * __dtrace_ipsr_ill_t is used by the translator to take an ill_t plus an
179 * additional arg6 from the ip:::send and ip:::receive probes, and translate
180 * them to an ifinfo_t.
181 */
182 typedef ill_t __dtrace_ipsr_ill_t;
183
184 /*
185 * __dtrace_tcp_void_ip_t is used by the translator to take either the
186 * non-NULL void_ip_t * passed in or, if it is NULL, uses arg3 (tcp_t *)
187 * from the tcp:::send and tcp:::receive probes to translate to an ipinfo_t.
188 * When no headers are available in the TCP fusion case for tcp:::send
189 * and tcp:::receive case, this allows us to present the consumer with header
190 * data based on the tcp_t * content in order to hide the implementation
191 * details of TCP fusion.
192 */
193 typedef void * __dtrace_tcp_void_ip_t;
194
195 #pragma D binding "1.5" translator
196 translator pktinfo_t < mblk_t *M > {
197 pkt_addr = NULL;
198 };
199
200 #pragma D binding "1.5" translator
201 translator csinfo_t < conn_t *C > {
202 cs_addr = NULL;
203 };
204
205 #pragma D binding "1.6.3" translator
206 translator csinfo_t < ip_xmit_attr_t *C > {
207 cs_addr = (uintptr_t)C;
|