Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
DTRACE_UDPLITE(4)	 BSD Kernel Interfaces Manual	     DTRACE_UDPLITE(4)

NAME
     dtrace_udplite -- a DTrace	provider for tracing events related to the
     UDP-Lite protocol

SYNOPSIS
     udplite:::receive(pktinfo_t *, csinfo_t *,	ipinfo_t *, udplitesinfo_t *,
	 udpliteinfo_t *);

     udplite:::send(pktinfo_t *, csinfo_t *, ipinfo_t *, udplitesinfo_t	*,
	 udpliteinfo_t *);

DESCRIPTION
     The DTrace	udplite	provider allows	users to trace events in the
     udplite(4)	protocol implementation.  The udplite:::send() probe fires
     whenever the kernel prepares to transmit a	UDP-Lite packet, and the
     udplite:::receive() probe fires whenever the kernel receives a UDP-Lite
     packet, unless the	UDP-Lite header	is incomplete, the destination port is
     0,	the length field is invalid, or	the checksum is	wrong.	The arguments
     to	these probes can be used to obtain detailed information	about the IP
     and UDP-Lite headers of the corresponding packet.

ARGUMENTS
     The pktinfo_t argument is currently unimplemented and is included for
     compatibility with	other implementations of this provider.	 Its fields
     are:

	   uintptr_t pkt_addr  Always set to 0.

     The csinfo_t argument is currently	unimplemented and is included for com-
     patibility	with other implementations of this provider.  Its fields are:

	   uintptr_t cs_addr  Always set to 0.

	   uint64_t cs_cid    A	pointer	to the struct inpcb for	this packet,
			      or NULL.

	   pid_t cs_pid	      Always set to 0.

     The ipinfo_t argument contains IP fields common to	both IPv4 and IPv6
     packets.  Its fields are:

	   uint8_t ip_ver	IP version of the packet, 4 for	IPv4 packets
				and 6 for IPv6 packets.

	   uint32_t ip_plength	IP payload size.  This does not	include	the
				size of	the IP header or IPv6 option headers.

	   string ip_saddr	IP source address.

	   string ip_daddr	IP destination address.

     The udplitesinfo_t	argument contains the state of the UDP-Lite connection
     associated	with the packet.  Its fields are:

	   uintptr_t udplites_addr  Pointer to the struct inpcb	containing the
				    IP state for the associated	socket.

	   uint16_t udplites_lport  Local UDP-Lite port.

	   uint16_t udplites_rport  Remote UDP-Lite port.

	   string udplites_laddr    Local IPv4 or IPv6 address.

	   string udplites_raddr    Remote IPv4	or IPv6	address.

     The udpliteinfo_t argument	is the raw UDP-Lite header of the packet, with
     all fields	in host	order.	Its fields are:

	   uint16_t udplite_sport	   Source UDP-Lite port.

	   uint16_t udplite_dport	   Destination UDP-Lite	port.

	   uint16_t udplite_coverage	   Checksum coverage of	the UDP-Lite
					   header, in bytes, or	0 for full
					   coverage.

	   uint16_t udplite_checksum	   A checksum of the UDP-Lite header
					   and payload,	or 0 if	no checksum
					   was calculated.

	   struct udplitehdr *udplite_hdr  A pointer to	the raw	UDP-Lite
					   header.

FILES
     /usr/lib/dtrace/udplite.d	DTrace type and	translator definitions for the
				udplite	provider.

EXAMPLES
     The following script counts transmitted packets by	destination port.

	   udplite:::send
	   {
		   @num[args[4]->udplite_dport]	= count();
	   }

     This script will print some details of each UDP-Lite packet as it is sent
     or	received by the	kernel:

	   #pragma D option quiet
	   #pragma D option switchrate=10Hz

	   dtrace:::BEGIN
	   {
		   printf(" %10s %36s	 %-36s %6s\n", "DELTA(us)", "SOURCE",
		       "DEST", "COV");
		   last	= timestamp;
	   }

	   udplite:::send
	   {
		   this->elapsed = (timestamp -	last) /	1000;
		   self->dest =	strjoin(strjoin(args[2]->ip_daddr, ":"),
			lltostr(args[4]->udplite_dport));
		   printf(" %10d %30s:%-5d -> %-36s %6d\n", this->elapsed,
		       args[2]->ip_saddr, args[4]->udplite_sport,
		       self->dest, args[4]->udplite_coverage);
		   last	= timestamp;
	   }

	   udplite:::receive
	   {
		   this->elapsed = (timestamp -	last) /	1000;
		   self->dest =	strjoin(strjoin(args[2]->ip_saddr, ":"),
			lltostr(args[4]->udplite_sport));
		   printf(" %10d %30s:%-5d <- %-36s %6d\n", this->elapsed,
		       args[2]->ip_daddr, args[4]->udplite_dport,
		       self->dest, args[4]->udplite_coverage);
		   last	= timestamp;
	   }

SEE ALSO
     dtrace(1),	dtrace_ip(4), dtrace_sctp(4), dtrace_tcp(4), dtrace_udp(4),
     udplite(4), SDT(9)

HISTORY
     The udplite provider first	appeared in FreeBSD 12.0.

AUTHORS
     This manual page was written by Mark Johnston <markj@FreeBSD.org> and
     Michael Tuexen <tuexen@FreeBSD.org>.

BSD				August 1, 2018				   BSD

NAME | SYNOPSIS | DESCRIPTION | ARGUMENTS | FILES | EXAMPLES | SEE ALSO | HISTORY | AUTHORS

Want to link to this manual page? Use this URL:
<https://www.freebsd.org/cgi/man.cgi?query=dtrace_udplite&sektion=4&manpath=FreeBSD+12.0-RELEASE+and+Ports>

home | help