diff options
author | markj <markj@FreeBSD.org> | 2013-08-25 21:54:41 +0000 |
---|---|---|
committer | markj <markj@FreeBSD.org> | 2013-08-25 21:54:41 +0000 |
commit | 29e4661920638221bbffb4c527fb24daa4702b4c (patch) | |
tree | c2b1016fdbcd18b8a7c9f33a21b6c2bb2b755348 /sys/netinet6/nd6.c | |
parent | 03a89a5fe0a80e1df50027d7d94266daffa41805 (diff) | |
download | FreeBSD-src-29e4661920638221bbffb4c527fb24daa4702b4c.zip FreeBSD-src-29e4661920638221bbffb4c527fb24daa4702b4c.tar.gz |
Implement the ip, tcp, and udp DTrace providers. The probe definitions use
dynamic translation so that their arguments match the definitions for
these providers in Solaris and illumos. Thus, existing scripts for these
providers should work unmodified on FreeBSD.
Tested by: gnn, hiren
MFC after: 1 month
Diffstat (limited to 'sys/netinet6/nd6.c')
-rw-r--r-- | sys/netinet6/nd6.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/netinet6/nd6.c b/sys/netinet6/nd6.c index 7755da1..e76121d 100644 --- a/sys/netinet6/nd6.c +++ b/sys/netinet6/nd6.c @@ -34,6 +34,7 @@ __FBSDID("$FreeBSD$"); #include "opt_inet.h" #include "opt_inet6.h" +#include "opt_kdtrace.h" #include <sys/param.h> #include <sys/systm.h> @@ -50,6 +51,7 @@ __FBSDID("$FreeBSD$"); #include <sys/lock.h> #include <sys/rwlock.h> #include <sys/queue.h> +#include <sys/sdt.h> #include <sys/sysctl.h> #include <net/if.h> @@ -62,6 +64,7 @@ __FBSDID("$FreeBSD$"); #include <net/vnet.h> #include <netinet/in.h> +#include <netinet/in_kdtrace.h> #include <net/if_llatbl.h> #define L3_ADDR_SIN6(le) ((struct sockaddr_in6 *) L3_ADDR(le)) #include <netinet/if_ether.h> @@ -2083,6 +2086,8 @@ nd6_output_lle(struct ifnet *ifp, struct ifnet *origifp, struct mbuf *m0, return (error); } m_clrprotoflags(m); /* Avoid confusing lower layers. */ + IP_PROBE(send, NULL, NULL, mtod(m, struct ip6_hdr *), ifp, NULL, + mtod(m, struct ip6_hdr *)); if ((ifp->if_flags & IFF_LOOPBACK) != 0) { return ((*ifp->if_output)(origifp, m, (struct sockaddr *)dst, NULL)); |