[newlib-cygwin] Add the "TCP Blackbox Recorder"

Sebastian Huber sh@sourceware.org
Fri Aug 24 13:10:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=61d5f8adfaee228bbb2284f401c07a816085f14e

commit 61d5f8adfaee228bbb2284f401c07a816085f14e
Author: jtl <jtl@FreeBSD.org>
Date:   Thu Mar 22 09:40:08 2018 +0000

    Add the "TCP Blackbox Recorder"
    
    which we discussed at the developer summits at BSDCan and BSDCam in 2017.
    
    The TCP Blackbox Recorder allows you to capture events on a TCP connection
    in a ring buffer. It stores metadata with the event. It optionally stores
    the TCP header associated with an event (if the event is associated with a
    packet) and also optionally stores information on the sockets.
    
    It supports setting a log ID on a TCP connection and using this to correlate
    multiple connections that share a common log ID.
    
    You can log connections in different modes. If you are doing a coordinated
    test with a particular connection, you may tell the system to put it in
    mode 4 (continuous dump). Or, if you just want to monitor for errors, you
    can put it in mode 1 (ring buffer) and dump all the ring buffers associated
    with the connection ID when we receive an error signal for that connection
    ID. You can set a default mode that will be applied to a particular ratio
    of incoming connections. You can also manually set a mode using a socket
    option.
    
    This commit includes only basic probes. rrs@ has added quite an abundance
    of probes in his TCP development work. He plans to commit those soon.
    
    There are user-space programs which we plan to commit as ports. These read
    the data from the log device and output pcapng files, and then let you
    analyze the data (and metadata) in the pcapng files.
    
    Reviewed by:	gnn (previous version)
    Obtained from:	Netflix, Inc.
    Relnotes:	yes
    Differential Revision:	https://reviews.freebsd.org/D11085

Diff:
---
 newlib/libc/sys/rtems/include/netinet/tcp.h | 9 +++++++++
 1 file changed, 9 insertions(+)

diff --git a/newlib/libc/sys/rtems/include/netinet/tcp.h b/newlib/libc/sys/rtems/include/netinet/tcp.h
index 4c1c9d4..f599c95 100644
--- a/newlib/libc/sys/rtems/include/netinet/tcp.h
+++ b/newlib/libc/sys/rtems/include/netinet/tcp.h
@@ -168,6 +168,12 @@ struct tcphdr {
 #define TCP_NOOPT	8	/* don't use TCP options */
 #define TCP_MD5SIG	16	/* use MD5 digests (RFC2385) */
 #define	TCP_INFO	32	/* retrieve tcp_info structure */
+#define	TCP_LOG		34	/* configure event logging for connection */
+#define	TCP_LOGBUF	35	/* retrieve event log for connection */
+#define	TCP_LOGID	36	/* configure log ID to correlate connections */
+#define	TCP_LOGDUMP	37	/* dump connection log events to device */
+#define	TCP_LOGDUMPID	38	/* dump events from connections with same ID to
+				   device */
 #define	TCP_CONGESTION	64	/* get/set congestion control algorithm */
 #define	TCP_CCALGOOPT	65	/* get/set cc algorithm specific options */
 #define	TCP_KEEPINIT	128	/* N, time to establish connection */
@@ -189,6 +195,9 @@ struct tcphdr {
 #define	TCPI_OPT_ECN		0x08
 #define	TCPI_OPT_TOE		0x10
 
+/* Maximum length of log ID. */
+#define TCP_LOG_ID_LEN	64
+
 /*
  * The TCP_INFO socket option comes from the Linux 2.6 TCP API, and permits
  * the caller to query certain information about the state of a TCP



More information about the Newlib-cvs mailing list