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_udp(4) $ 65bf5ca77SDevin Teske# $Copyright: 2014-2018 Devin Teske. All rights reserved. $ 75bf5ca77SDevin Teske# 85bf5ca77SDevin Teske############################################################ DESCRIPTION 95bf5ca77SDevin Teske# 105bf5ca77SDevin Teske# Display local/remote UDP addresses/ports and bytes sent/received for UDP I/O 115bf5ca77SDevin Teske# 125bf5ca77SDevin Teske############################################################ PROBE 135bf5ca77SDevin Teske 145bf5ca77SDevin Teskecase "$PROFILE" in 155bf5ca77SDevin Teskeudp) : ${PROBE:=udp:::send, udp:::receive} ;; 165bf5ca77SDevin Teske *) : ${PROBE:=udp:::${PROFILE#udp-}} 175bf5ca77SDevin Teskeesac 185bf5ca77SDevin Teske 195bf5ca77SDevin Teske############################################################ ACTIONS 205bf5ca77SDevin Teske 215bf5ca77SDevin Teskeexec 9<<EOF 225bf5ca77SDevin Teskethis string flow; 235bf5ca77SDevin Teskethis string local; 245bf5ca77SDevin Teskethis string remote; 255bf5ca77SDevin Teskethis u_char local6; 265bf5ca77SDevin Teskethis u_char recv; 275bf5ca77SDevin Teskethis u_char remote6; 285bf5ca77SDevin Teskethis uint16_t length; 295bf5ca77SDevin Teskethis uint16_t lport; 305bf5ca77SDevin Teskethis uint16_t rport; 315bf5ca77SDevin Teske 325bf5ca77SDevin Teske$PROBE /* probe ID $ID */ 335bf5ca77SDevin Teske{${TRACE:+ 345bf5ca77SDevin Teske printf("<$ID>"); 355bf5ca77SDevin Teske} 365bf5ca77SDevin Teske /* 375bf5ca77SDevin Teske * dtrace_udp(4) 385bf5ca77SDevin Teske */ 395bf5ca77SDevin Teske this->recv = probename == "receive" ? 1 : 0; 405bf5ca77SDevin Teske this->flow = this->recv ? "<-" : "->"; 415bf5ca77SDevin Teske 425bf5ca77SDevin Teske /* 435bf5ca77SDevin Teske * ipinfo_t * 445bf5ca77SDevin Teske */ 455bf5ca77SDevin Teske this->local = this->recv ? args[2]->ip_daddr : args[2]->ip_saddr; 465bf5ca77SDevin Teske this->remote = this->recv ? args[2]->ip_saddr : args[2]->ip_daddr; 475bf5ca77SDevin Teske 485bf5ca77SDevin Teske /* 495bf5ca77SDevin Teske * udpinfo_t * 505bf5ca77SDevin Teske */ 515bf5ca77SDevin Teske this->length = (uint16_t)args[4]->udp_length; 525bf5ca77SDevin Teske this->lport = this->recv ? args[4]->udp_dport : args[4]->udp_sport; 535bf5ca77SDevin Teske this->rport = this->recv ? args[4]->udp_sport : args[4]->udp_dport; 545bf5ca77SDevin Teske 555bf5ca77SDevin Teske /* 565bf5ca77SDevin Teske * IPv6 support 575bf5ca77SDevin Teske */ 585bf5ca77SDevin Teske this->local6 = strstr(this->local, ":") != NULL ? 1 : 0; 595bf5ca77SDevin Teske this->remote6 = strstr(this->remote, ":") != NULL ? 1 : 0; 605bf5ca77SDevin Teske this->local = strjoin(strjoin(this->local6 ? "[" : "", 615bf5ca77SDevin Teske this->local), this->local6 ? "]" : ""); 625bf5ca77SDevin Teske this->remote = strjoin(strjoin(this->remote6 ? "[" : "", 635bf5ca77SDevin Teske this->remote), this->remote6 ? "]" : ""); 645bf5ca77SDevin Teske} 655bf5ca77SDevin TeskeEOF 665bf5ca77SDevin TeskeACTIONS=$( cat <&9 ) 675bf5ca77SDevin TeskeID=$(( $ID + 1 )) 685bf5ca77SDevin Teske 695bf5ca77SDevin Teske############################################################ EVENT DETAILS 705bf5ca77SDevin Teske 71*a061d970SDevin Teskeif [ ! "$CUSTOM_DETAILS" ]; then 725bf5ca77SDevin Teskeexec 9<<EOF 735bf5ca77SDevin Teske /* 745bf5ca77SDevin Teske * Print network I/O details 755bf5ca77SDevin Teske */ 765bf5ca77SDevin Teske printf("%s:%u %s %s:%u %d byte%s", 775bf5ca77SDevin Teske this->local, this->lport, 785bf5ca77SDevin Teske this->flow, 795bf5ca77SDevin Teske this->remote, this->rport, 805bf5ca77SDevin Teske this->length, 815bf5ca77SDevin Teske this->length == 1 ? "" : "s"); 825bf5ca77SDevin TeskeEOF 835bf5ca77SDevin TeskeEVENT_DETAILS=$( cat <&9 ) 84*a061d970SDevin Teskefi 855bf5ca77SDevin Teske 865bf5ca77SDevin Teske################################################################################ 875bf5ca77SDevin Teske# END 885bf5ca77SDevin Teske################################################################################ 89