]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - cddl/lib/libdtrace/siftr.d
MFV: r362513
[FreeBSD/FreeBSD.git] / cddl / lib / libdtrace / siftr.d
1 /*
2  * CDDL HEADER START
3  *
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.
7  *
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.
12  *
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]
18  *
19  * CDDL HEADER END
20  *
21  * $FreeBSD$
22  */
23
24 #pragma D depends_on module kernel
25 #pragma D depends_on module siftr
26 #pragma D depends_on provider tcp
27
28 /*
29  * Convert a SIFTR direction value to a string
30  */
31 #pragma D binding "1.12.1" SIFTR_IN
32 inline int SIFTR_IN =   1;
33 #pragma D binding "1.12.1" SIFTR_OUT
34 inline int SIFTR_OUT =  2;
35
36 /* SIFTR direction strings. */
37 #pragma D binding "1.12.1" siftr_dir_string
38 inline string siftr_dir_string[uint8_t direction] =
39         direction == SIFTR_IN ? "in" :
40         direction == SIFTR_OUT ? "out" :
41         "unknown" ;
42
43 typedef struct siftrinfo {
44         struct timeval          tval;
45         uint8_t                 direction;
46         uint8_t                 ipver;
47         uint32_t                hash;
48         uint16_t                tcp_localport;
49         uint16_t                tcp_foreignport;
50         uint64_t                snd_cwnd;
51         u_long                  snd_wnd;
52         u_long                  rcv_wnd;
53         u_long                  snd_bwnd;
54         u_long                  snd_ssthresh;
55         int                     conn_state;
56         u_int                   max_seg_size;
57         int                     smoothed_rtt;
58         u_char                  sack_enabled;
59         u_char                  snd_scale;
60         u_char                  rcv_scale;
61         u_int                   flags;
62         int                     rxt_length;
63         u_int                   snd_buf_hiwater;
64         u_int                   snd_buf_cc;
65         u_int                   rcv_buf_hiwater;
66         u_int                   rcv_buf_cc;
67         u_int                   sent_inflight_bytes;
68         int                     t_segqlen;
69         u_int                   flowid;
70         u_int                   flowtype;
71 } siftrinfo_t;
72
73 #pragma D binding "1.12.1" translator
74 translator siftrinfo_t < struct pkt_node *p > {
75         direction =             p == NULL ? 0 : p->direction;
76         ipver =                 p == NULL ? 0 : p->ipver;
77         hash =                  p == NULL ? 0 : p->hash;
78         tcp_localport =         p == NULL ? 0 : ntohs(p->tcp_localport);
79         tcp_foreignport =       p == NULL ? 0 : ntohs(p->tcp_foreignport);
80         snd_cwnd =              p == NULL ? 0 : p->snd_cwnd;
81         snd_wnd =               p == NULL ? 0 : p->snd_wnd;
82         rcv_wnd =               p == NULL ? 0 : p->rcv_wnd;
83         snd_bwnd =              p == NULL ? 0 : p->snd_bwnd;
84         snd_ssthresh =          p == NULL ? 0 : p->snd_ssthresh;
85         conn_state =            p == NULL ? 0 : p->conn_state;
86         max_seg_size =          p == NULL ? 0 : p->max_seg_size;
87         smoothed_rtt =          p == NULL ? 0 : p->smoothed_rtt;
88         sack_enabled =          p == NULL ? 0 : p->sack_enabled;
89         snd_scale =             p == NULL ? 0 : p->snd_scale;
90         rcv_scale =             p == NULL ? 0 : p->rcv_scale;
91         flags =                 p == NULL ? 0 : p->flags;
92         rxt_length =            p == NULL ? 0 : p->rxt_length;
93         snd_buf_hiwater =       p == NULL ? 0 : p->snd_buf_hiwater;
94         snd_buf_cc =            p == NULL ? 0 : p->snd_buf_cc;
95         rcv_buf_hiwater =       p == NULL ? 0 : p->rcv_buf_hiwater;
96         rcv_buf_cc =            p == NULL ? 0 : p->rcv_buf_cc;
97         sent_inflight_bytes =   p == NULL ? 0 : p->sent_inflight_bytes;
98         t_segqlen =             p == NULL ? 0 : p->t_segqlen;
99         flowid =                p == NULL ? 0 : p->flowid;
100         flowtype =              p == NULL ? 0 : p->flowtype;
101 };