# -*- tab-width: 4 -*- ;; Emacs # vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM ############################################################ IDENT(1) # # $Title: dwatch(8) module for dtrace_ip(4) $ # $Copyright: 2014-2018 Devin Teske. All rights reserved. $ # $FreeBSD$ # ############################################################ DESCRIPTION # # Display interface name and bytes sent/received when IP I/O occurs # ############################################################ PROBE case "$PROFILE" in ip) : ${PROBE:=ip:::send, ip:::receive} ;; *) : ${PROBE:=ip:::${PROFILE#ip-}} 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_ip(4) */ this->recv = probename == "receive" ? 1 : 0; this->flow = this->recv ? "<-" : "->"; /* * ipinfo_t * */ this->length = (uint32_t)args[2]->ip_plength; this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr; this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr; /* * ifinfo_t * */ this->if_name = args[3]->if_name; } EOF ACTIONS=$( cat <&9 ) ID=$(( $ID + 1 )) ############################################################ EVENT TAG exec 9<if_name, this->local, this->flow, this->remote, this->length, this->length == 1 ? "" : "s"); EOF EVENT_DETAILS=$( cat <&9 ) ################################################################################ # END ################################################################################