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 }; 102