15bf5ca77SDevin Teske# -*- tab-width: 4 -*- ;; Emacs 25bf5ca77SDevin Teske# vi: set filetype=sh tabstop=8 shiftwidth=8 noexpandtab :: Vi/ViM 35bf5ca77SDevin Teske############################################################ IDENT(1) 45bf5ca77SDevin Teske# 55bf5ca77SDevin Teske# $Title: dwatch(8) module for dtrace_ip(4) $ 65bf5ca77SDevin Teske# $Copyright: 2014-2018 Devin Teske. All rights reserved. $ 75bf5ca77SDevin Teske# $FreeBSD$ 85bf5ca77SDevin Teske# 95bf5ca77SDevin Teske############################################################ DESCRIPTION 105bf5ca77SDevin Teske# 115bf5ca77SDevin Teske# Display interface name and bytes sent/received when IP I/O occurs 125bf5ca77SDevin Teske# 135bf5ca77SDevin Teske############################################################ PROBE 145bf5ca77SDevin Teske 155bf5ca77SDevin Teskecase "$PROFILE" in 165bf5ca77SDevin Teskeip) : ${PROBE:=ip:::send, ip:::receive} ;; 175bf5ca77SDevin Teske *) : ${PROBE:=ip:::${PROFILE#ip-}} 185bf5ca77SDevin Teskeesac 195bf5ca77SDevin Teske 205bf5ca77SDevin Teske############################################################ GLOBALS 215bf5ca77SDevin Teske 225bf5ca77SDevin Teske# 235bf5ca77SDevin Teske# This profile does not support these dwatch features 245bf5ca77SDevin Teske# NB: They are disabled here so they have no effect when profile is loaded 255bf5ca77SDevin Teske# 265bf5ca77SDevin Teskeunset EXECNAME # -k name 275bf5ca77SDevin Teskeunset EXECREGEX # -z regex 285bf5ca77SDevin Teskeunset GROUP # -g group 295bf5ca77SDevin Teskeunset PID # -p pid 305bf5ca77SDevin Teskeunset PSARGS # affects -d 315bf5ca77SDevin Teskeunset PSTREE # -R 325bf5ca77SDevin Teskeunset USER # -u user 335bf5ca77SDevin Teske 345bf5ca77SDevin Teske############################################################ ACTIONS 355bf5ca77SDevin Teske 365bf5ca77SDevin Teskeexec 9<<EOF 375bf5ca77SDevin Teskethis string flow; 385bf5ca77SDevin Teskethis string if_name; 395bf5ca77SDevin Teskethis string local; 405bf5ca77SDevin Teskethis string remote; 415bf5ca77SDevin Teskethis u_char recv; 425bf5ca77SDevin Teskethis uint32_t length; 435bf5ca77SDevin Teske 445bf5ca77SDevin Teske$PROBE /* probe ID $ID */ 455bf5ca77SDevin Teske{${TRACE:+ 465bf5ca77SDevin Teske printf("<$ID>"); 475bf5ca77SDevin Teske} 485bf5ca77SDevin Teske /* 495bf5ca77SDevin Teske * dtrace_ip(4) 505bf5ca77SDevin Teske */ 515bf5ca77SDevin Teske this->recv = probename == "receive" ? 1 : 0; 525bf5ca77SDevin Teske this->flow = this->recv ? "<-" : "->"; 535bf5ca77SDevin Teske 545bf5ca77SDevin Teske /* 555bf5ca77SDevin Teske * ipinfo_t * 565bf5ca77SDevin Teske */ 575bf5ca77SDevin Teske this->length = (uint32_t)args[2]->ip_plength; 585bf5ca77SDevin Teske this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr; 595bf5ca77SDevin Teske this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr; 605bf5ca77SDevin Teske 615bf5ca77SDevin Teske /* 625bf5ca77SDevin Teske * ifinfo_t * 635bf5ca77SDevin Teske */ 645bf5ca77SDevin Teske this->if_name = args[3]->if_name; 655bf5ca77SDevin Teske} 665bf5ca77SDevin TeskeEOF 675bf5ca77SDevin TeskeACTIONS=$( cat <&9 ) 685bf5ca77SDevin TeskeID=$(( $ID + 1 )) 695bf5ca77SDevin Teske 705bf5ca77SDevin Teske############################################################ EVENT TAG 715bf5ca77SDevin Teske 725bf5ca77SDevin Teskeexec 9<<EOF 735bf5ca77SDevin Teske printf("%s: ", "$PROFILE"); 745bf5ca77SDevin TeskeEOF 755bf5ca77SDevin TeskeEVENT_TAG=$( cat <&9 ) 765bf5ca77SDevin Teske 775bf5ca77SDevin Teske############################################################ EVENT DETAILS 785bf5ca77SDevin Teske 79*a061d970SDevin Teskeif [ ! "$CUSTOM_DETAILS" ]; then 805bf5ca77SDevin Teskeexec 9<<EOF 815bf5ca77SDevin Teske /* 825bf5ca77SDevin Teske * Print network I/O details 835bf5ca77SDevin Teske */ 845bf5ca77SDevin Teske printf("%s %s %s %s %u byte%s", 855bf5ca77SDevin Teske this->if_name, 865bf5ca77SDevin Teske this->local, 875bf5ca77SDevin Teske this->flow, 885bf5ca77SDevin Teske this->remote, 895bf5ca77SDevin Teske this->length, 905bf5ca77SDevin Teske this->length == 1 ? "" : "s"); 915bf5ca77SDevin TeskeEOF 925bf5ca77SDevin TeskeEVENT_DETAILS=$( cat <&9 ) 93*a061d970SDevin Teskefi 945bf5ca77SDevin Teske 955bf5ca77SDevin Teske################################################################################ 965bf5ca77SDevin Teske# END 975bf5ca77SDevin Teske################################################################################ 98