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############################################################ ACTIONS 215bf5ca77SDevin Teske 225bf5ca77SDevin Teskeexec 9<<EOF 235bf5ca77SDevin Teskethis string flow; 245bf5ca77SDevin Teskethis string if_name; 255bf5ca77SDevin Teskethis string local; 265bf5ca77SDevin Teskethis string remote; 275bf5ca77SDevin Teskethis u_char recv; 285bf5ca77SDevin Teskethis uint32_t length; 295bf5ca77SDevin Teske 305bf5ca77SDevin Teske$PROBE /* probe ID $ID */ 315bf5ca77SDevin Teske{${TRACE:+ 325bf5ca77SDevin Teske printf("<$ID>"); 335bf5ca77SDevin Teske} 345bf5ca77SDevin Teske /* 355bf5ca77SDevin Teske * dtrace_ip(4) 365bf5ca77SDevin Teske */ 375bf5ca77SDevin Teske this->recv = probename == "receive" ? 1 : 0; 385bf5ca77SDevin Teske this->flow = this->recv ? "<-" : "->"; 395bf5ca77SDevin Teske 405bf5ca77SDevin Teske /* 415bf5ca77SDevin Teske * ipinfo_t * 425bf5ca77SDevin Teske */ 435bf5ca77SDevin Teske this->length = (uint32_t)args[2]->ip_plength; 445bf5ca77SDevin Teske this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr; 455bf5ca77SDevin Teske this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr; 465bf5ca77SDevin Teske 475bf5ca77SDevin Teske /* 485bf5ca77SDevin Teske * ifinfo_t * 495bf5ca77SDevin Teske */ 505bf5ca77SDevin Teske this->if_name = args[3]->if_name; 515bf5ca77SDevin Teske} 525bf5ca77SDevin TeskeEOF 535bf5ca77SDevin TeskeACTIONS=$( cat <&9 ) 545bf5ca77SDevin TeskeID=$(( $ID + 1 )) 555bf5ca77SDevin Teske 565bf5ca77SDevin Teske############################################################ EVENT DETAILS 575bf5ca77SDevin Teske 58*a061d970SDevin Teskeif [ ! "$CUSTOM_DETAILS" ]; then 595bf5ca77SDevin Teskeexec 9<<EOF 605bf5ca77SDevin Teske /* 615bf5ca77SDevin Teske * Print network I/O details 625bf5ca77SDevin Teske */ 635bf5ca77SDevin Teske printf("%s %s %s %s %u byte%s", 645bf5ca77SDevin Teske this->if_name, 655bf5ca77SDevin Teske this->local, 665bf5ca77SDevin Teske this->flow, 675bf5ca77SDevin Teske this->remote, 685bf5ca77SDevin Teske this->length, 695bf5ca77SDevin Teske this->length == 1 ? "" : "s"); 705bf5ca77SDevin TeskeEOF 715bf5ca77SDevin TeskeEVENT_DETAILS=$( cat <&9 ) 72*a061d970SDevin Teskefi 735bf5ca77SDevin Teske 745bf5ca77SDevin Teske################################################################################ 755bf5ca77SDevin Teske# END 765bf5ca77SDevin Teske################################################################################ 77