Page MenuHomeFreeBSD

D2387.id5066.diff
No OneTemporary

D2387.id5066.diff

Index: cddl/lib/libdtrace/tcp.d
===================================================================
--- cddl/lib/libdtrace/tcp.d
+++ cddl/lib/libdtrace/tcp.d
@@ -245,20 +245,19 @@
/*
* Convert a SIFTR direction value to a string
*/
-#pragma D binding "1.6.3" SIFTR_IN
+#pragma D binding "1.12.1" SIFTR_IN
inline int SIFTR_IN = 1;
-#pragma D binding "1.6.3" SIFTR_OUT
+#pragma D binding "1.12.1" SIFTR_OUT
inline int SIFTR_OUT = 2;
/* SIFTR direction strings. */
-#pragma D binding "1.6.3" siftr_dir_string
+#pragma D binding "1.12.1" siftr_dir_string
inline string siftr_dir_string[uint8_t direction] =
direction == SIFTR_IN ? "in" :
direction == SIFTR_OUT ? "out" :
"unknown" ;
-
-typedef struct siftr {
+typedef struct siftrinfo {
struct timeval tval;
uint8_t direction;
uint8_t ipver;
@@ -286,9 +285,9 @@
int t_segqlen;
u_int flowid;
u_int flowtype;
-} siftrinfo_t ;
+} siftrinfo_t;
-#pragma D binding "1.6.3" translator
+#pragma D binding "1.12.1" translator
translator siftrinfo_t < struct pkt_node *p > {
direction = p == NULL ? 0 : p->direction;
ipver = p == NULL ? 0 : p->ipver;
Index: share/dtrace/siftr
===================================================================
--- /dev/null
+++ share/dtrace/siftr
@@ -0,0 +1,68 @@
+#!/usr/sbin/dtrace -s
+/*
+ * Copyright (c) 2015 George V. Neville-Neil
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ *
+ * The siftr D script collects data from the SIFTR kernel module
+ *
+ * Usage: siftr
+ */
+
+#pragma D option quiet
+tcp:kernel::siftr
+{
+ printf("direction %s state %s local %d remote %d\n",
+ siftr_dir_string[args[0]->direction],
+ tcp_state_string[args[0]->conn_state],
+ args[0]->tcp_localport,
+ args[0]->tcp_foreignport);
+ printf("snd_cwnd %d snd_wnd %d rcv_wnd %d snd_bwnd %d snd_ssthresh %d \n",
+ args[0]->snd_cwnd,
+ args[0]->snd_wnd,
+ args[0]->rcv_wnd,
+ args[0]->snd_bwnd,
+ args[0]->snd_ssthresh);
+ printf("\tmax_seg_size %d smoothed_rtt %d sack_enabled %d\n",
+ args[0]->max_seg_size,
+ args[0]->smoothed_rtt,
+ args[0]->sack_enabled);
+ printf("\tsnd_scale %d rcv_scale %d flags %d rxt_length %d\n",
+ args[0]->snd_scale,
+ args[0]->rcv_scale,
+ args[0]->flags,
+ args[0]->rxt_length);
+ printf("\tsnd_buf_hiwater %d snd_buf_cc %d rcv_buf_hiwater %d\n",
+ args[0]->snd_buf_hiwater,
+ args[0]->snd_buf_cc,
+ args[0]->rcv_buf_hiwater);
+ printf("\trcv_buf_cc %d sent_inflight_bytes %d t_segqlen %d\n",
+ args[0]->rcv_buf_cc,
+ args[0]->sent_inflight_bytes,
+ args[0]->t_segqlen);
+ printf("\tflowid %d flowtype %d\n",
+ args[0]->flowid,
+ args[0]->flowtype);
+}
Index: sys/netinet/in_kdtrace.h
===================================================================
--- sys/netinet/in_kdtrace.h
+++ sys/netinet/in_kdtrace.h
@@ -53,8 +53,8 @@
SDT_PROBE_DECLARE(tcp, , , connect__request);
SDT_PROBE_DECLARE(tcp, , , receive);
SDT_PROBE_DECLARE(tcp, , , send);
-SDT_PROBE_DECLARE(tcp, , , state__change);
SDT_PROBE_DECLARE(tcp, , , siftr);
+SDT_PROBE_DECLARE(tcp, , , state__change);
SDT_PROBE_DECLARE(udp, , , receive);
SDT_PROBE_DECLARE(udp, , , send);
Index: sys/netinet/in_kdtrace.c
===================================================================
--- sys/netinet/in_kdtrace.c
+++ sys/netinet/in_kdtrace.c
@@ -102,6 +102,9 @@
"struct tcpcb *", "tcpsinfo_t *" ,
"struct tcphdr *", "tcpinfo_t *");
+SDT_PROBE_DEFINE1_XLATE(tcp, , , siftr,
+ "struct pkt_node *", "siftrinfo_t *");
+
SDT_PROBE_DEFINE6_XLATE(tcp, , , state__change,
"void *", "void *",
"struct tcpcb *", "csinfo_t *",
@@ -110,9 +113,6 @@
"void *", "void *",
"int", "tcplsinfo_t *");
-SDT_PROBE_DEFINE1_XLATE(tcp, , , siftr,
- "struct pkt_node *", "siftrinfo_t *");
-
SDT_PROBE_DEFINE5_XLATE(udp, , , receive,
"void *", "pktinfo_t *",
"struct inpcb *", "csinfo_t *",
Index: sys/netinet/siftr.c
===================================================================
--- sys/netinet/siftr.c
+++ sys/netinet/siftr.c
@@ -80,6 +80,7 @@
#include <sys/socketvar.h>
#include <sys/sysctl.h>
#include <sys/unistd.h>
+#include <sys/sdt.h>
#include <net/if.h>
#include <net/if_var.h>
@@ -91,9 +92,7 @@
#include <netinet/in_var.h>
#include <netinet/ip.h>
#include <netinet/tcp_var.h>
-
-#include <sys/sdt.h>
-#include "in_kdtrace.h"
+#include <netinet/in_kdtrace.h>
#ifdef SIFTR_IPV6
#include <netinet/ip6.h>

File Metadata

Mime Type
text/plain
Expires
Tue, Aug 25, 10:19 AM (3 h, 7 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
37232274
Default Alt Text
D2387.id5066.diff (5 KB)

Event Timeline