> On 29 Apr 2015, at 17:19 , George V. Neville-Neil <g...@freebsd.org> wrote: > > Author: gnn > Date: Wed Apr 29 17:19:55 2015 > New Revision: 282240 > URL: https://svnweb.freebsd.org/changeset/base/282240 > > Log: > Brief demo script showing the various values that can be read via > the new SIFTR statically defined tracepoint (SDT). > > Differential Revision: https://reviews.freebsd.org/D2387 > Reviewed by: bz, markj >
That’s not the latest revision; sorry. > Modified: > head/cddl/lib/libdtrace/tcp.d > head/sys/netinet/in_kdtrace.c > head/sys/netinet/in_kdtrace.h > head/sys/netinet/siftr.c > > Modified: head/cddl/lib/libdtrace/tcp.d > ============================================================================== > --- head/cddl/lib/libdtrace/tcp.d Wed Apr 29 17:18:41 2015 > (r282239) > +++ head/cddl/lib/libdtrace/tcp.d Wed Apr 29 17:19:55 2015 > (r282240) > @@ -241,3 +241,78 @@ translator tcpinfoh_t < struct tcphdr *p > translator tcplsinfo_t < int s > { > tcps_state = s; > }; > + > +/* > + * Convert a SIFTR direction value to a string > + */ > +#pragma D binding "1.12.1" SIFTR_IN > +inline int SIFTR_IN = 1; > +#pragma D binding "1.12.1" SIFTR_OUT > +inline int SIFTR_OUT = 2; > + > +/* SIFTR direction strings. */ > +#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 siftrinfo { > + struct timeval tval; > + uint8_t direction; > + uint8_t ipver; > + uint32_t hash; > + uint16_t tcp_localport; > + uint16_t tcp_foreignport; > + uint64_t snd_cwnd; > + u_long snd_wnd; > + u_long rcv_wnd; > + u_long snd_bwnd; > + u_long snd_ssthresh; > + int conn_state; > + u_int max_seg_size; > + int smoothed_rtt; > + u_char sack_enabled; > + u_char snd_scale; > + u_char rcv_scale; > + u_int flags; > + int rxt_length; > + u_int snd_buf_hiwater; > + u_int snd_buf_cc; > + u_int rcv_buf_hiwater; > + u_int rcv_buf_cc; > + u_int sent_inflight_bytes; > + int t_segqlen; > + u_int flowid; > + u_int flowtype; > +} siftrinfo_t; > + > +#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; > + hash = p == NULL ? 0 : p->hash; > + tcp_localport = p == NULL ? 0 : ntohs(p->tcp_localport); > + tcp_foreignport = p == NULL ? 0 : ntohs(p->tcp_foreignport); > + snd_cwnd = p == NULL ? 0 : p->snd_cwnd; > + snd_wnd = p == NULL ? 0 : p->snd_wnd; > + rcv_wnd = p == NULL ? 0 : p->rcv_wnd; > + snd_bwnd = p == NULL ? 0 : p->snd_bwnd; > + snd_ssthresh = p == NULL ? 0 : p->snd_ssthresh; > + conn_state = p == NULL ? 0 : p->conn_state; > + max_seg_size = p == NULL ? 0 : p->max_seg_size; > + smoothed_rtt = p == NULL ? 0 : p->smoothed_rtt; > + sack_enabled = p == NULL ? 0 : p->sack_enabled; > + snd_scale = p == NULL ? 0 : p->snd_scale; > + rcv_scale = p == NULL ? 0 : p->rcv_scale; > + flags = p == NULL ? 0 : p->flags; > + rxt_length = p == NULL ? 0 : p->rxt_length; > + snd_buf_hiwater = p == NULL ? 0 : p->snd_buf_hiwater; > + snd_buf_cc = p == NULL ? 0 : p->snd_buf_cc; > + rcv_buf_hiwater = p == NULL ? 0 : p->rcv_buf_hiwater; > + rcv_buf_cc = p == NULL ? 0 : p->rcv_buf_cc; > + sent_inflight_bytes = p == NULL ? 0 : p->sent_inflight_bytes; > + t_segqlen = p == NULL ? 0 : p->t_segqlen; > + flowid = p == NULL ? 0 : p->flowid; > + flowtype = p == NULL ? 0 : p->flowtype; > +}; > > Modified: head/sys/netinet/in_kdtrace.c > ============================================================================== > --- head/sys/netinet/in_kdtrace.c Wed Apr 29 17:18:41 2015 > (r282239) > +++ head/sys/netinet/in_kdtrace.c Wed Apr 29 17:19:55 2015 > (r282240) > @@ -102,6 +102,9 @@ SDT_PROBE_DEFINE5_XLATE(tcp, , , send, > "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 *", > > Modified: head/sys/netinet/in_kdtrace.h > ============================================================================== > --- head/sys/netinet/in_kdtrace.h Wed Apr 29 17:18:41 2015 > (r282239) > +++ head/sys/netinet/in_kdtrace.h Wed Apr 29 17:19:55 2015 > (r282240) > @@ -32,6 +32,8 @@ > SDT_PROBE6(ip, , , probe, arg0, arg1, arg2, arg3, arg4, arg5) > #define UDP_PROBE(probe, arg0, arg1, arg2, arg3, arg4) > \ > SDT_PROBE5(udp, , , probe, arg0, arg1, arg2, arg3, arg4) > +#define TCP_PROBE1(probe, arg0) \ > + SDT_PROBE1(tcp, , , probe, arg0) > #define TCP_PROBE5(probe, arg0, arg1, arg2, arg3, arg4) > \ > SDT_PROBE5(tcp, , , probe, arg0, arg1, arg2, arg3, arg4) > #define TCP_PROBE6(probe, arg0, arg1, arg2, arg3, arg4, arg5) > \ > @@ -51,6 +53,7 @@ SDT_PROBE_DECLARE(tcp, , , connect__refu > SDT_PROBE_DECLARE(tcp, , , connect__request); > SDT_PROBE_DECLARE(tcp, , , receive); > SDT_PROBE_DECLARE(tcp, , , send); > +SDT_PROBE_DECLARE(tcp, , , siftr); > SDT_PROBE_DECLARE(tcp, , , state__change); > > SDT_PROBE_DECLARE(udp, , , receive); > > Modified: head/sys/netinet/siftr.c > ============================================================================== > --- head/sys/netinet/siftr.c Wed Apr 29 17:18:41 2015 (r282239) > +++ head/sys/netinet/siftr.c Wed Apr 29 17:19:55 2015 (r282240) > @@ -75,6 +75,7 @@ __FBSDID("$FreeBSD$"); > #include <sys/pcpu.h> > #include <sys/proc.h> > #include <sys/sbuf.h> > +#include <sys/sdt.h> > #include <sys/smp.h> > #include <sys/socket.h> > #include <sys/socketvar.h> > @@ -86,6 +87,7 @@ __FBSDID("$FreeBSD$"); > #include <net/pfil.h> > > #include <netinet/in.h> > +#include <netinet/in_kdtrace.h> > #include <netinet/in_pcb.h> > #include <netinet/in_systm.h> > #include <netinet/in_var.h> > @@ -547,6 +549,7 @@ siftr_process_pkt(struct pkt_node * pkt_ > } > #endif > > + TCP_PROBE1(siftr, pkt_node); > alq_post_flags(siftr_alq, log_buf, 0); > } > > — Bjoern A. Zeeb Charles Haddon Spurgeon: "Friendship is one of the sweetest joys of life. Many might have failed beneath the bitterness of their trial had they not found a friend." _______________________________________________ svn-src-head@freebsd.org mailing list http://lists.freebsd.org/mailman/listinfo/svn-src-head To unsubscribe, send any mail to "svn-src-head-unsubscr...@freebsd.org"