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

FreeBSD Manual Pages

  
 
  

home | help
DTRACE_UDPLITE(4)	    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 argu-
       ments 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
       compatibility 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 head-
				  ers.

	     string ip_saddr	  IP source address.

	     string ip_daddr	  IP destination address.

       The udplitesinfo_t argument contains the	state of the UDP-Lite  connec-
       tion 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>.

FreeBSD	14.3			August 1, 2018		     DTRACE_UDPLITE(4)

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

home | help