svn commit: r347155 - in stable/11: share/man/man4 sys/netinet sys/netinet6

Michael Tuexen tuexen at FreeBSD.org
Sun May 5 12:32:49 UTC 2019


Author: tuexen
Date: Sun May  5 12:32:47 2019
New Revision: 347155
URL: https://svnweb.freebsd.org/changeset/base/347155

Log:
  MFC r336551:
  Add missing dtrace probes for received UDP packets.
  
  Fire UDP receive probes when a packet is received and there is no
  endpoint consuming it. Fire the probe also if the TTL of the
  received packet is smaller than the minimum required by the endpoint.
  
  Clarify also in the man page, when the probe fires.
  
  Reviewed by:		dteske@, markj@, rrs@
  Sponsored by:		Netflix, Inc.
  Differential Revision:	https://reviews.freebsd.org/D16046

Modified:
  stable/11/share/man/man4/dtrace_udp.4
  stable/11/sys/netinet/udp_usrreq.c
  stable/11/sys/netinet6/udp6_usrreq.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/share/man/man4/dtrace_udp.4
==============================================================================
--- stable/11/share/man/man4/dtrace_udp.4	Sun May  5 12:28:39 2019	(r347154)
+++ stable/11/share/man/man4/dtrace_udp.4	Sun May  5 12:32:47 2019	(r347155)
@@ -24,7 +24,7 @@
 .\"
 .\" $FreeBSD$
 .\"
-.Dd April 18, 2015
+.Dd July 20, 2018
 .Dt DTRACE_UDP 4
 .Os
 .Sh NAME
@@ -45,7 +45,11 @@ The
 .Fn udp:::send
 probe fires whenever the kernel prepares to transmit a UDP packet, and the
 .Fn udp:::receive
-probe fires whenever the kernel receives a UDP packet.
+probe fires whenever the kernel receives a UDP packet, unless
+the UDP 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 headers of the corresponding packet.
 .Sh ARGUMENTS

Modified: stable/11/sys/netinet/udp_usrreq.c
==============================================================================
--- stable/11/sys/netinet/udp_usrreq.c	Sun May  5 12:28:39 2019	(r347154)
+++ stable/11/sys/netinet/udp_usrreq.c	Sun May  5 12:32:47 2019	(r347155)
@@ -667,6 +667,7 @@ udp_input(struct mbuf **mp, int *offp, int proto)
 			    inet_ntoa_r(ip->ip_dst, dst), ntohs(uh->uh_dport),
 			    inet_ntoa_r(ip->ip_src, src), ntohs(uh->uh_sport));
 		}
+		UDP_PROBE(receive, NULL, NULL, ip, NULL, uh);
 		UDPSTAT_INC(udps_noport);
 		if (m->m_flags & (M_BCAST | M_MCAST)) {
 			UDPSTAT_INC(udps_noportbcast);
@@ -686,6 +687,7 @@ udp_input(struct mbuf **mp, int *offp, int proto)
 	 */
 	INP_RLOCK_ASSERT(inp);
 	if (inp->inp_ip_minttl && inp->inp_ip_minttl > ip->ip_ttl) {
+		UDP_PROBE(receive, NULL, inp, ip, inp, uh);
 		INP_RUNLOCK(inp);
 		m_freem(m);
 		return (IPPROTO_DONE);

Modified: stable/11/sys/netinet6/udp6_usrreq.c
==============================================================================
--- stable/11/sys/netinet6/udp6_usrreq.c	Sun May  5 12:28:39 2019	(r347154)
+++ stable/11/sys/netinet6/udp6_usrreq.c	Sun May  5 12:32:47 2019	(r347155)
@@ -456,6 +456,7 @@ udp6_input(struct mbuf **mp, int *offp, int proto)
 			    ip6_sprintf(ip6bufs, &ip6->ip6_src),
 			    ntohs(uh->uh_sport));
 		}
+		UDP_PROBE(receive, NULL, NULL, ip6, NULL, uh);
 		UDPSTAT_INC(udps_noport);
 		if (m->m_flags & M_MCAST) {
 			printf("UDP6: M_MCAST is set in a unicast packet.\n");


More information about the svn-src-all mailing list