#! /bin/sh # original from cdjohns@NSWC-G.ARPA # # TIMETODEATH expressed in decimal instead of hex # -- mkhaw@teknowledge-vaxc.arpa # Use this script to force sockets in FIN_WAIT_2 state to close. # It works by setting the 2MSL timer in the TCP Protocol Control Block (PCB) # to a non-zero value. The kernel then begins to decrement this value until # it reaches zero, at which point the kernel forces a close on the socket and # deletes the TCP PCB. If both sides of the connection are hung, clearing one # side will possibly clear the other. # MSLOFFSET is the offset in the tcpcb record for the 2MSL timer. # describes the tcpcb record. # This value is the number of bytes offset, expressed in hexadecimal. MSLOFFSET=10 STATEOFFSET=8 # TIMETODEATH is the number of half seconds until the connection is # closed. This value is expressed in decimal and must be greater # than zero. TIMETODEATH=06 # Display netstat to get PCB addresses (first column). echo 'Active connections PCB Proto Recv-Q Send-Q Local Address Foreign Address (state)' netstat -A | egrep 'FIN_WAIT_[12]' echo printf 'PCB address to terminate? ' read addr echo # Use adb on kernel to display the PCB of the specified address adb -k /vmunix /dev/mem << SHAR_EOF $addr\$