# -*- tab-width: 4 -*- ;; Emacs # vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM ############################################################ IDENT(1) # # $Title: dwatch(8) module for dtrace_udp(4) $ # $Copyright: 2014-2018 Devin Teske. All rights reserved. $ # $FreeBSD$ # ############################################################ DESCRIPTION # # Display local/remote UDP addresses/ports and bytes sent/received for UDP I/O # ############################################################ PROBE case "$PROFILE" in udp) : ${PROBE:=udp:::send, udp:::receive} ;; *) : ${PROBE:=udp:::${PROFILE#udp-}} esac ############################################################ GLOBALS # # This profile does not support these dwatch features # NB: They are disabled here so they have no effect when profile is loaded # unset EXECNAME # -k name unset EXECREGEX # -z regex unset GROUP # -g group unset PID # -p pid unset PSARGS # affects -d unset PSTREE # -R unset USER # -u user ############################################################ ACTIONS exec 9<"); } /* * dtrace_udp(4) */ this->recv = probename == "receive" ? 1 : 0; this->flow = this->recv ? "<-" : "->"; /* * ipinfo_t * */ this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr; this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr; /* * udpinfo_t * */ this->length = (uint16_t)args[4]->udp_length; this->lport = this->recv ? args[4]->udp_dport : args[4]->udp_sport; this->rport = this->recv ? args[4]->udp_sport : args[4]->udp_dport; /* * IPv6 support */ this->local6 = strstr(this->local, ":") != NULL ? 1 : 0; this->remote6 = strstr(this->remote, ":") != NULL ? 1 : 0; this->local = strjoin(strjoin(this->local6 ? "[" : "", this->local), this->local6 ? "]" : ""); this->remote = strjoin(strjoin(this->remote6 ? "[" : "", this->remote), this->remote6 ? "]" : ""); } EOF ACTIONS=$( cat <&9 ) ID=$(( $ID + 1 )) ############################################################ EVENT TAG exec 9<local, this->lport, this->flow, this->remote, this->rport, this->length, this->length == 1 ? "" : "s"); EOF EVENT_DETAILS=$( cat <&9 ) fi ################################################################################ # END ################################################################################