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 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  com-
     patibility 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 pack-
     ets.  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 cov-
					   erage.

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

	   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),  ud-
     plite(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 ports 15.quarterly	 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+15.1-RELEASE+and+Ports.quarterly>

home | help