1*e137d3e0Schristos #!/usr/sbin/dtrace -Cs 2*e137d3e0Schristos /* 3*e137d3e0Schristos * tcpsnoop.d - snoop TCP network packets by process. 4*e137d3e0Schristos * Written using DTrace (Solaris 10 3/05) 5*e137d3e0Schristos * 6*e137d3e0Schristos * This analyses TCP network packets and prints the responsible PID and UID, 7*e137d3e0Schristos * plus standard details such as IP address and port. This captures traffic 8*e137d3e0Schristos * of newly created TCP connections that were established while this program 9*e137d3e0Schristos * was running. It can help identify which processes is causing TCP traffic. 10*e137d3e0Schristos * 11*e137d3e0Schristos * WARNING: This script may only work on Solaris 10 3/05, since it uses the 12*e137d3e0Schristos * fbt provider to trace the raw operation of a specific version of the kernel. 13*e137d3e0Schristos * In the future, a 'stable' network provider should exist which will allow 14*e137d3e0Schristos * this to be written for that and subsequent versions of the kernel. In the 15*e137d3e0Schristos * meantime, check for other versions of this script in the /Net directory, 16*e137d3e0Schristos * and read the Notes/ALLfbt_notes.txt for more background on fbt. 17*e137d3e0Schristos * 18*e137d3e0Schristos * $Id: tcpsnoop.d,v 1.1.1.1 2015/09/30 22:01:09 christos Exp $ 19*e137d3e0Schristos * 20*e137d3e0Schristos * USAGE: tcpsnoop.d 21*e137d3e0Schristos * 22*e137d3e0Schristos * FIELDS: 23*e137d3e0Schristos * UID user ID 24*e137d3e0Schristos * PID process ID 25*e137d3e0Schristos * CMD command 26*e137d3e0Schristos * LADDR local IP address 27*e137d3e0Schristos * RADDR remote IP address 28*e137d3e0Schristos * LPORT local port number 29*e137d3e0Schristos * RPORT remote port number 30*e137d3e0Schristos * DR direction 31*e137d3e0Schristos * SIZE packet size, bytes 32*e137d3e0Schristos * 33*e137d3e0Schristos * SEE ALSO: snoop -rS 34*e137d3e0Schristos * 35*e137d3e0Schristos * COPYRIGHT: Copyright (c) 2005, 2006 Brendan Gregg. 36*e137d3e0Schristos * 37*e137d3e0Schristos * CDDL HEADER START 38*e137d3e0Schristos * 39*e137d3e0Schristos * The contents of this file are subject to the terms of the 40*e137d3e0Schristos * Common Development and Distribution License, Version 1.0 only 41*e137d3e0Schristos * (the "License"). You may not use this file except in compliance 42*e137d3e0Schristos * with the License. 43*e137d3e0Schristos * 44*e137d3e0Schristos * You can obtain a copy of the license at Docs/cddl1.txt 45*e137d3e0Schristos * or http://www.opensolaris.org/os/licensing. 46*e137d3e0Schristos * See the License for the specific language governing permissions 47*e137d3e0Schristos * and limitations under the License. 48*e137d3e0Schristos * 49*e137d3e0Schristos * CDDL HEADER END 50*e137d3e0Schristos * 51*e137d3e0Schristos * Author: Brendan Gregg [Sydney, Australia] 52*e137d3e0Schristos * 53*e137d3e0Schristos * TODO: IPv6 54*e137d3e0Schristos * 55*e137d3e0Schristos * 09-Jul-2004 Brendan Gregg Created this. 56*e137d3e0Schristos * 12-Mar-2005 " " Changed probes, size info now printed. 57*e137d3e0Schristos * 02-Jul-2005 " " Many more probes. Renamed "tcpsnoop.d". 58*e137d3e0Schristos * 03-Dec-2005 " " Fixed tcp_accept_finish bug, now 100% correct 59*e137d3e0Schristos * execname. Thanks Kias Belgaied for expertise. 60*e137d3e0Schristos * 20-Apr-2006 " " Fixed SS_TCP_FAST_ACCEPT bug in build 31+. 61*e137d3e0Schristos * 20-Apr-2006 " " Last update. 62*e137d3e0Schristos */ 63*e137d3e0Schristos 64*e137d3e0Schristos #pragma D option quiet 65*e137d3e0Schristos #pragma D option switchrate=10hz 66*e137d3e0Schristos 67*e137d3e0Schristos #include <sys/file.h> 68*e137d3e0Schristos #include <inet/common.h> 69*e137d3e0Schristos #include <sys/byteorder.h> 70*e137d3e0Schristos 71*e137d3e0Schristos /* 72*e137d3e0Schristos * Print header 73*e137d3e0Schristos */ 74*e137d3e0Schristos dtrace:::BEGIN 75*e137d3e0Schristos { 76*e137d3e0Schristos /* print main headers */ 77*e137d3e0Schristos printf("%5s %6s %-15s %5s %2s %-15s %5s %5s %s\n", 78*e137d3e0Schristos "UID", "PID", "LADDR", "LPORT", "DR", "RADDR", "RPORT", 79*e137d3e0Schristos "SIZE", "CMD"); 80*e137d3e0Schristos } 81*e137d3e0Schristos 82*e137d3e0Schristos /* 83*e137d3e0Schristos * TCP Process inbound connections 84*e137d3e0Schristos * 85*e137d3e0Schristos * 0x00200000 has been hardcoded. It was SS_TCP_FAST_ACCEPT, but was 86*e137d3e0Schristos * renamed to SS_DIRECT around build 31. 87*e137d3e0Schristos */ 88*e137d3e0Schristos fbt:sockfs:sotpi_accept:entry 89*e137d3e0Schristos /(arg1 & FREAD) && (arg1 & FWRITE) && (args[0]->so_state & 0x00200000)/ 90*e137d3e0Schristos { 91*e137d3e0Schristos self->sop = args[0]; 92*e137d3e0Schristos } 93*e137d3e0Schristos 94*e137d3e0Schristos fbt:sockfs:sotpi_create:return 95*e137d3e0Schristos /self->sop/ 96*e137d3e0Schristos { 97*e137d3e0Schristos self->nsop = (struct sonode *)arg1; 98*e137d3e0Schristos } 99*e137d3e0Schristos 100*e137d3e0Schristos fbt:sockfs:sotpi_accept:return 101*e137d3e0Schristos /self->nsop/ 102*e137d3e0Schristos { 103*e137d3e0Schristos this->tcpp = (tcp_t *)self->nsop->so_priv; 104*e137d3e0Schristos self->connp = (conn_t *)this->tcpp->tcp_connp; 105*e137d3e0Schristos tname[(int)self->connp] = execname; 106*e137d3e0Schristos tpid[(int)self->connp] = pid; 107*e137d3e0Schristos tuid[(int)self->connp] = uid; 108*e137d3e0Schristos } 109*e137d3e0Schristos 110*e137d3e0Schristos fbt:sockfs:sotpi_accept:return 111*e137d3e0Schristos { 112*e137d3e0Schristos self->nsop = 0; 113*e137d3e0Schristos self->sop = 0; 114*e137d3e0Schristos } 115*e137d3e0Schristos 116*e137d3e0Schristos /* 117*e137d3e0Schristos * TCP Process outbound connections 118*e137d3e0Schristos */ 119*e137d3e0Schristos fbt:ip:tcp_connect:entry 120*e137d3e0Schristos { 121*e137d3e0Schristos this->tcpp = (tcp_t *)arg0; 122*e137d3e0Schristos self->connp = (conn_t *)this->tcpp->tcp_connp; 123*e137d3e0Schristos tname[(int)self->connp] = execname; 124*e137d3e0Schristos tpid[(int)self->connp] = pid; 125*e137d3e0Schristos tuid[(int)self->connp] = uid; 126*e137d3e0Schristos } 127*e137d3e0Schristos 128*e137d3e0Schristos /* 129*e137d3e0Schristos * TCP Data translations 130*e137d3e0Schristos */ 131*e137d3e0Schristos fbt:sockfs:sotpi_accept:return, 132*e137d3e0Schristos fbt:ip:tcp_connect:return 133*e137d3e0Schristos /self->connp/ 134*e137d3e0Schristos { 135*e137d3e0Schristos /* fetch ports */ 136*e137d3e0Schristos #if defined(_BIG_ENDIAN) 137*e137d3e0Schristos self->lport = self->connp->u_port.tcpu_ports.tcpu_lport; 138*e137d3e0Schristos self->fport = self->connp->u_port.tcpu_ports.tcpu_fport; 139*e137d3e0Schristos #else 140*e137d3e0Schristos self->lport = BSWAP_16(self->connp->u_port.tcpu_ports.tcpu_lport); 141*e137d3e0Schristos self->fport = BSWAP_16(self->connp->u_port.tcpu_ports.tcpu_fport); 142*e137d3e0Schristos #endif 143*e137d3e0Schristos 144*e137d3e0Schristos /* fetch IPv4 addresses */ 145*e137d3e0Schristos this->fad12 = 146*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_faddr._S6_un._S6_u8[12]; 147*e137d3e0Schristos this->fad13 = 148*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_faddr._S6_un._S6_u8[13]; 149*e137d3e0Schristos this->fad14 = 150*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_faddr._S6_un._S6_u8[14]; 151*e137d3e0Schristos this->fad15 = 152*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_faddr._S6_un._S6_u8[15]; 153*e137d3e0Schristos this->lad12 = 154*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_laddr._S6_un._S6_u8[12]; 155*e137d3e0Schristos this->lad13 = 156*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_laddr._S6_un._S6_u8[13]; 157*e137d3e0Schristos this->lad14 = 158*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_laddr._S6_un._S6_u8[14]; 159*e137d3e0Schristos this->lad15 = 160*e137d3e0Schristos (int)self->connp->connua_v6addr.connua_laddr._S6_un._S6_u8[15]; 161*e137d3e0Schristos 162*e137d3e0Schristos /* convert type for use with lltostr() */ 163*e137d3e0Schristos this->fad12 = this->fad12 < 0 ? 256 + this->fad12 : this->fad12; 164*e137d3e0Schristos this->fad13 = this->fad13 < 0 ? 256 + this->fad13 : this->fad13; 165*e137d3e0Schristos this->fad14 = this->fad14 < 0 ? 256 + this->fad14 : this->fad14; 166*e137d3e0Schristos this->fad15 = this->fad15 < 0 ? 256 + this->fad15 : this->fad15; 167*e137d3e0Schristos this->lad12 = this->lad12 < 0 ? 256 + this->lad12 : this->lad12; 168*e137d3e0Schristos this->lad13 = this->lad13 < 0 ? 256 + this->lad13 : this->lad13; 169*e137d3e0Schristos this->lad14 = this->lad14 < 0 ? 256 + this->lad14 : this->lad14; 170*e137d3e0Schristos this->lad15 = this->lad15 < 0 ? 256 + this->lad15 : this->lad15; 171*e137d3e0Schristos 172*e137d3e0Schristos /* stringify addresses */ 173*e137d3e0Schristos self->faddr = strjoin(lltostr(this->fad12), "."); 174*e137d3e0Schristos self->faddr = strjoin(self->faddr, strjoin(lltostr(this->fad13), ".")); 175*e137d3e0Schristos self->faddr = strjoin(self->faddr, strjoin(lltostr(this->fad14), ".")); 176*e137d3e0Schristos self->faddr = strjoin(self->faddr, lltostr(this->fad15 + 0)); 177*e137d3e0Schristos self->laddr = strjoin(lltostr(this->lad12), "."); 178*e137d3e0Schristos self->laddr = strjoin(self->laddr, strjoin(lltostr(this->lad13), ".")); 179*e137d3e0Schristos self->laddr = strjoin(self->laddr, strjoin(lltostr(this->lad14), ".")); 180*e137d3e0Schristos self->laddr = strjoin(self->laddr, lltostr(this->lad15 + 0)); 181*e137d3e0Schristos 182*e137d3e0Schristos /* fix direction and save values */ 183*e137d3e0Schristos tladdr[(int)self->connp] = self->laddr; 184*e137d3e0Schristos tfaddr[(int)self->connp] = self->faddr; 185*e137d3e0Schristos tlport[(int)self->connp] = self->lport; 186*e137d3e0Schristos tfport[(int)self->connp] = self->fport; 187*e137d3e0Schristos 188*e137d3e0Schristos /* all systems go */ 189*e137d3e0Schristos tok[(int)self->connp] = 1; 190*e137d3e0Schristos } 191*e137d3e0Schristos 192*e137d3e0Schristos /* 193*e137d3e0Schristos * TCP Clear connp 194*e137d3e0Schristos */ 195*e137d3e0Schristos fbt:ip:tcp_get_conn:return 196*e137d3e0Schristos { 197*e137d3e0Schristos /* Q_TO_CONN */ 198*e137d3e0Schristos this->connp = (conn_t *)arg1; 199*e137d3e0Schristos tok[(int)this->connp] = 0; 200*e137d3e0Schristos tpid[(int)this->connp] = 0; 201*e137d3e0Schristos tuid[(int)this->connp] = 0; 202*e137d3e0Schristos tname[(int)this->connp] = 0; 203*e137d3e0Schristos } 204*e137d3e0Schristos 205*e137d3e0Schristos /* 206*e137d3e0Schristos * TCP Process "port closed" 207*e137d3e0Schristos */ 208*e137d3e0Schristos fbt:ip:tcp_xmit_early_reset:entry 209*e137d3e0Schristos { 210*e137d3e0Schristos this->queuep = (queue_t *)`tcp_g_q; /* ` */ 211*e137d3e0Schristos this->connp = (conn_t *)this->queuep->q_ptr; 212*e137d3e0Schristos this->tcpp = (tcp_t *)this->connp->conn_tcp; 213*e137d3e0Schristos 214*e137d3e0Schristos /* split addresses */ 215*e137d3e0Schristos this->ipha = (ipha_t *)args[1]->b_rptr; 216*e137d3e0Schristos this->fad15 = (this->ipha->ipha_src & 0xff000000) >> 24; 217*e137d3e0Schristos this->fad14 = (this->ipha->ipha_src & 0x00ff0000) >> 16; 218*e137d3e0Schristos this->fad13 = (this->ipha->ipha_src & 0x0000ff00) >> 8; 219*e137d3e0Schristos this->fad12 = (this->ipha->ipha_src & 0x000000ff); 220*e137d3e0Schristos this->lad15 = (this->ipha->ipha_dst & 0xff000000) >> 24; 221*e137d3e0Schristos this->lad14 = (this->ipha->ipha_dst & 0x00ff0000) >> 16; 222*e137d3e0Schristos this->lad13 = (this->ipha->ipha_dst & 0x0000ff00) >> 8; 223*e137d3e0Schristos this->lad12 = (this->ipha->ipha_dst & 0x000000ff); 224*e137d3e0Schristos 225*e137d3e0Schristos /* stringify addresses */ 226*e137d3e0Schristos self->faddr = strjoin(lltostr(this->fad12), "."); 227*e137d3e0Schristos self->faddr = strjoin(self->faddr, strjoin(lltostr(this->fad13), ".")); 228*e137d3e0Schristos self->faddr = strjoin(self->faddr, strjoin(lltostr(this->fad14), ".")); 229*e137d3e0Schristos self->faddr = strjoin(self->faddr, lltostr(this->fad15 + 0)); 230*e137d3e0Schristos self->laddr = strjoin(lltostr(this->lad12), "."); 231*e137d3e0Schristos self->laddr = strjoin(self->laddr, strjoin(lltostr(this->lad13), ".")); 232*e137d3e0Schristos self->laddr = strjoin(self->laddr, strjoin(lltostr(this->lad14), ".")); 233*e137d3e0Schristos self->laddr = strjoin(self->laddr, lltostr(this->lad15 + 0)); 234*e137d3e0Schristos 235*e137d3e0Schristos self->reset = 1; 236*e137d3e0Schristos } 237*e137d3e0Schristos 238*e137d3e0Schristos /* 239*e137d3e0Schristos * TCP Fetch "port closed" ports 240*e137d3e0Schristos */ 241*e137d3e0Schristos fbt:ip:tcp_xchg:entry 242*e137d3e0Schristos /self->reset/ 243*e137d3e0Schristos { 244*e137d3e0Schristos #if defined(_BIG_ENDIAN) 245*e137d3e0Schristos self->lport = (uint16_t)arg0; 246*e137d3e0Schristos self->fport = (uint16_t)arg1; 247*e137d3e0Schristos #else 248*e137d3e0Schristos self->lport = BSWAP_16((uint16_t)arg0); 249*e137d3e0Schristos self->fport = BSWAP_16((uint16_t)arg1); 250*e137d3e0Schristos #endif 251*e137d3e0Schristos self->lport = BE16_TO_U16(arg0); 252*e137d3e0Schristos self->fport = BE16_TO_U16(arg1); 253*e137d3e0Schristos } 254*e137d3e0Schristos 255*e137d3e0Schristos /* 256*e137d3e0Schristos * TCP Print "port closed" 257*e137d3e0Schristos */ 258*e137d3e0Schristos fbt:ip:tcp_xmit_early_reset:return 259*e137d3e0Schristos { 260*e137d3e0Schristos self->name = "<closed>"; 261*e137d3e0Schristos self->pid = 0; 262*e137d3e0Schristos self->uid = 0; 263*e137d3e0Schristos self->size = 54; /* should check trailers */ 264*e137d3e0Schristos self->dir = "<-"; 265*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 266*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 267*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 268*e137d3e0Schristos self->dir = "->"; 269*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 270*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 271*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 272*e137d3e0Schristos self->reset = 0; 273*e137d3e0Schristos self->size = 0; 274*e137d3e0Schristos self->name = 0; 275*e137d3e0Schristos } 276*e137d3e0Schristos 277*e137d3e0Schristos /* 278*e137d3e0Schristos * TCP Process Write 279*e137d3e0Schristos */ 280*e137d3e0Schristos fbt:ip:tcp_send_data:entry 281*e137d3e0Schristos { 282*e137d3e0Schristos self->conn_p = (conn_t *)args[0]->tcp_connp; 283*e137d3e0Schristos } 284*e137d3e0Schristos 285*e137d3e0Schristos fbt:ip:tcp_send_data:entry 286*e137d3e0Schristos /tok[(int)self->conn_p]/ 287*e137d3e0Schristos { 288*e137d3e0Schristos self->dir = "->"; 289*e137d3e0Schristos self->size = msgdsize(args[2]) + 14; /* should check trailers */ 290*e137d3e0Schristos self->uid = tuid[(int)self->conn_p]; 291*e137d3e0Schristos self->laddr = tladdr[(int)self->conn_p]; 292*e137d3e0Schristos self->faddr = tfaddr[(int)self->conn_p]; 293*e137d3e0Schristos self->lport = tlport[(int)self->conn_p]; 294*e137d3e0Schristos self->fport = tfport[(int)self->conn_p]; 295*e137d3e0Schristos self->ok = 2; 296*e137d3e0Schristos 297*e137d3e0Schristos /* follow inetd -> in.* transitions */ 298*e137d3e0Schristos self->name = pid && (tname[(int)self->conn_p] == "inetd") ? 299*e137d3e0Schristos execname : tname[(int)self->conn_p]; 300*e137d3e0Schristos self->pid = pid && (tname[(int)self->conn_p] == "inetd") ? 301*e137d3e0Schristos pid : tpid[(int)self->conn_p]; 302*e137d3e0Schristos tname[(int)self->conn_p] = self->name; 303*e137d3e0Schristos tpid[(int)self->conn_p] = self->pid; 304*e137d3e0Schristos } 305*e137d3e0Schristos 306*e137d3e0Schristos /* 307*e137d3e0Schristos * TCP Process Read 308*e137d3e0Schristos */ 309*e137d3e0Schristos fbt:ip:tcp_rput_data:entry 310*e137d3e0Schristos { 311*e137d3e0Schristos self->conn_p = (conn_t *)arg0; 312*e137d3e0Schristos self->size = msgdsize(args[1]) + 14; /* should check trailers */ 313*e137d3e0Schristos } 314*e137d3e0Schristos 315*e137d3e0Schristos fbt:ip:tcp_rput_data:entry 316*e137d3e0Schristos /tok[(int)self->conn_p]/ 317*e137d3e0Schristos { 318*e137d3e0Schristos self->dir = "<-"; 319*e137d3e0Schristos self->uid = tuid[(int)self->conn_p]; 320*e137d3e0Schristos self->laddr = tladdr[(int)self->conn_p]; 321*e137d3e0Schristos self->faddr = tfaddr[(int)self->conn_p]; 322*e137d3e0Schristos self->lport = tlport[(int)self->conn_p]; 323*e137d3e0Schristos self->fport = tfport[(int)self->conn_p]; 324*e137d3e0Schristos self->ok = 2; 325*e137d3e0Schristos 326*e137d3e0Schristos /* follow inetd -> in.* transitions */ 327*e137d3e0Schristos self->name = pid && (tname[(int)self->conn_p] == "inetd") ? 328*e137d3e0Schristos execname : tname[(int)self->conn_p]; 329*e137d3e0Schristos self->pid = pid && (tname[(int)self->conn_p] == "inetd") ? 330*e137d3e0Schristos pid : tpid[(int)self->conn_p]; 331*e137d3e0Schristos tname[(int)self->conn_p] = self->name; 332*e137d3e0Schristos tpid[(int)self->conn_p] = self->pid; 333*e137d3e0Schristos } 334*e137d3e0Schristos 335*e137d3e0Schristos /* 336*e137d3e0Schristos * TCP Complete printing outbound handshake 337*e137d3e0Schristos */ 338*e137d3e0Schristos fbt:ip:tcp_connect:return 339*e137d3e0Schristos /self->connp/ 340*e137d3e0Schristos { 341*e137d3e0Schristos self->name = tname[(int)self->connp]; 342*e137d3e0Schristos self->pid = tpid[(int)self->connp]; 343*e137d3e0Schristos self->uid = tuid[(int)self->connp]; 344*e137d3e0Schristos self->size = 54; /* should check trailers */ 345*e137d3e0Schristos self->dir = "->"; 346*e137d3e0Schristos /* this packet occured before connp was fully established */ 347*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 348*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 349*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 350*e137d3e0Schristos } 351*e137d3e0Schristos 352*e137d3e0Schristos /* 353*e137d3e0Schristos * TCP Complete printing inbound handshake 354*e137d3e0Schristos */ 355*e137d3e0Schristos fbt:sockfs:sotpi_accept:return 356*e137d3e0Schristos /self->connp/ 357*e137d3e0Schristos { 358*e137d3e0Schristos self->name = tname[(int)self->connp]; 359*e137d3e0Schristos self->pid = tpid[(int)self->connp]; 360*e137d3e0Schristos self->uid = tuid[(int)self->connp]; 361*e137d3e0Schristos self->size = 54; /* should check trailers */ 362*e137d3e0Schristos /* these packets occured before connp was fully established */ 363*e137d3e0Schristos self->dir = "<-"; 364*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 365*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 366*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 367*e137d3e0Schristos self->dir = "->"; 368*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 369*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 370*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 371*e137d3e0Schristos self->dir = "<-"; 372*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 373*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 374*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 375*e137d3e0Schristos } 376*e137d3e0Schristos 377*e137d3e0Schristos /* 378*e137d3e0Schristos * Print output 379*e137d3e0Schristos */ 380*e137d3e0Schristos fbt:ip:tcp_send_data:entry, 381*e137d3e0Schristos fbt:ip:tcp_rput_data:entry 382*e137d3e0Schristos /self->ok == 2/ 383*e137d3e0Schristos { 384*e137d3e0Schristos /* print output line */ 385*e137d3e0Schristos printf("%5d %6d %-15s %5d %2s %-15s %5d %5d %s\n", 386*e137d3e0Schristos self->uid, self->pid, self->laddr, self->lport, self->dir, 387*e137d3e0Schristos self->faddr, self->fport, self->size, self->name); 388*e137d3e0Schristos } 389*e137d3e0Schristos 390*e137d3e0Schristos /* 391*e137d3e0Schristos * TCP Clear connect variables 392*e137d3e0Schristos */ 393*e137d3e0Schristos fbt:sockfs:sotpi_accept:return, 394*e137d3e0Schristos fbt:ip:tcp_connect:return 395*e137d3e0Schristos /self->connp/ 396*e137d3e0Schristos { 397*e137d3e0Schristos self->faddr = 0; 398*e137d3e0Schristos self->laddr = 0; 399*e137d3e0Schristos self->fport = 0; 400*e137d3e0Schristos self->lport = 0; 401*e137d3e0Schristos self->connp = 0; 402*e137d3e0Schristos self->name = 0; 403*e137d3e0Schristos self->pid = 0; 404*e137d3e0Schristos self->uid = 0; 405*e137d3e0Schristos } 406*e137d3e0Schristos 407*e137d3e0Schristos /* 408*e137d3e0Schristos * TCP Clear r/w variables 409*e137d3e0Schristos */ 410*e137d3e0Schristos fbt:ip:tcp_send_data:entry, 411*e137d3e0Schristos fbt:ip:tcp_rput_data:entry 412*e137d3e0Schristos { 413*e137d3e0Schristos self->ok = 0; 414*e137d3e0Schristos self->dir = 0; 415*e137d3e0Schristos self->uid = 0; 416*e137d3e0Schristos self->pid = 0; 417*e137d3e0Schristos self->size = 0; 418*e137d3e0Schristos self->name = 0; 419*e137d3e0Schristos self->lport = 0; 420*e137d3e0Schristos self->fport = 0; 421*e137d3e0Schristos self->laddr = 0; 422*e137d3e0Schristos self->faddr = 0; 423*e137d3e0Schristos self->conn_p = 0; 424*e137d3e0Schristos } 425