#!/bin/sh # # $Id: prndd,v 1.4 1999/03/12 00:39:05 vogelke Exp $ # # NAME: # prndd # # SYNOPSIS: # prndd # # DESCRIPTION: # Prints TCP/IP settings using ndd. To find the parameters set # for each device, do something like this: # # for name in arp hme icmp ip rawip tcp udp # do # echo "/dev/$name:" # list=`ndd /dev/$name '?' | awk '{print $1}' | # grep -v '^\?$' | sort` # # for each in $list # do # result=`ndd /dev/$name $each` # echo " $each: $result" # done # # echo # done # # We could do something like this in the script itself, but we # end up reading hash tables of open connections, etc. I'm just # looking for one-line values that might aid in tuning. # # AUTHOR: # Karl Vogel # Sumaria Systems, Inc. PATH=/bin:/usr/sbin export PATH tmp=/tmp/prndd$$ trap "rm -f $tmp; exit 0" 0 1 2 3 15 # ============================= FUNCTIONS ================================== die () { echo "$*" >& 2 exit 1 } version () { local_sedscr='s/RCSfile: // s/,v . .Revision: / v/ s/\$//g' local_revno='$RCSfile: prndd,v $ $Revision: 1.4 $' echo "$local_revno" | sed -e "$local_sedscr" } # ============================= MAIN PROGRAM =============================== id | grep 'uid=0(root)' > /dev/null || die "Sorry, must be run by root" # # ndd commands. # list=" /dev/arp arp_cleanup_interval /dev/arp arp_debug /dev/hme 100fdx_cap /dev/hme 100hdx_cap /dev/hme 10fdx_cap /dev/hme 10hdx_cap /dev/hme adv_100fdx_cap /dev/hme adv_100hdx_cap /dev/hme adv_10fdx_cap /dev/hme adv_10hdx_cap /dev/hme adv_autoneg_cap /dev/hme autoneg_cap /dev/hme instance /dev/hme ipg0 /dev/hme ipg1 /dev/hme ipg2 /dev/hme lance_mode /dev/hme link_mode /dev/hme link_speed /dev/hme link_status /dev/hme lp_100fdx_cap /dev/hme lp_100hdx_cap /dev/hme lp_10fdx_cap /dev/hme lp_10hdx_cap /dev/hme lp_autoneg_cap /dev/hme pace_size /dev/hme transceiver_inuse /dev/hme use_int_xcvr /dev/icmp icmp_bsd_compat /dev/icmp icmp_def_ttl /dev/icmp icmp_max_buf /dev/icmp icmp_recv_hiwat /dev/icmp icmp_wroff_extra /dev/icmp icmp_xmit_hiwat /dev/icmp icmp_xmit_lowat /dev/ip ip_addrs_per_if /dev/ip ip_broadcast_ttl /dev/ip ip_debug /dev/ip ip_def_ttl /dev/ip ip_forward_src_routed /dev/ip ip_forwarding /dev/ip ip_icmp_err_interval /dev/ip ip_icmp_return_data_bytes /dev/ip ip_ignore_delete_time /dev/ip ip_ignore_redirect /dev/ip ip_ire_cleanup_interval /dev/ip ip_ire_flush_interval /dev/ip ip_ire_pathmtu_interval /dev/ip ip_ire_redirect_interval /dev/ip ip_mrtdebug /dev/ip ip_output_queue /dev/ip ip_path_mtu_discovery /dev/ip ip_reass_queue_bytes /dev/ip ip_respond_to_echo_broadcast /dev/ip ip_respond_to_timestamp /dev/ip ip_rput_pullups /dev/ip ip_send_redirects /dev/ip ip_send_source_quench /dev/ip ip_strict_dst_multihoming /dev/ip ip_wroff_extra /dev/rawip icmp_bsd_compat /dev/rawip icmp_def_ttl /dev/rawip icmp_max_buf /dev/rawip icmp_recv_hiwat /dev/rawip icmp_wroff_extra /dev/rawip icmp_xmit_hiwat /dev/rawip icmp_xmit_lowat /dev/tcp tcp_close_wait_interval /dev/tcp tcp_co_min /dev/tcp tcp_conn_grace_period /dev/tcp tcp_conn_req_max_q /dev/tcp tcp_conn_req_max_q0 /dev/tcp tcp_cwnd_max /dev/tcp tcp_debug /dev/tcp tcp_deferred_ack_interval /dev/tcp tcp_dupack_fast_retransmit /dev/tcp tcp_fin_wait_2_flush_interval /dev/tcp tcp_ignore_path_mtu /dev/tcp tcp_ip_abort_cinterval /dev/tcp tcp_ip_abort_interval /dev/tcp tcp_ip_abort_linterval /dev/tcp tcp_ip_notify_cinterval /dev/tcp tcp_ip_notify_interval /dev/tcp tcp_ip_ttl /dev/tcp tcp_keepalive_interval /dev/tcp tcp_largest_anon_port /dev/tcp tcp_max_buf /dev/tcp tcp_maxpsz_multiplier /dev/tcp tcp_mss_def /dev/tcp tcp_mss_max /dev/tcp tcp_mss_min /dev/tcp tcp_naglim_def /dev/tcp tcp_old_urp_interpretation /dev/tcp tcp_rcv_push_wait /dev/tcp tcp_recv_hiwat /dev/tcp tcp_recv_hiwat_minmss /dev/tcp tcp_rexmit_interval_initial /dev/tcp tcp_rexmit_interval_max /dev/tcp tcp_rexmit_interval_min /dev/tcp tcp_rtt_updates /dev/tcp tcp_rwin_credit_pct /dev/tcp tcp_slow_start_initial /dev/tcp tcp_smallest_anon_port /dev/tcp tcp_smallest_nonpriv_port /dev/tcp tcp_snd_lowat_fraction /dev/tcp tcp_sth_rcv_hiwat /dev/tcp tcp_sth_rcv_lowat /dev/tcp tcp_strong_iss /dev/tcp tcp_wroff_xtra /dev/tcp tcp_xmit_hiwat /dev/tcp tcp_xmit_lowat /dev/tcp tcp_zero_win_probesize /dev/udp udp_def_ttl /dev/udp udp_do_checksum /dev/udp udp_largest_anon_port /dev/udp udp_max_buf /dev/udp udp_recv_hiwat /dev/udp udp_smallest_anon_port /dev/udp udp_smallest_nonpriv_port /dev/udp udp_trust_optlen /dev/udp udp_wroff_extra /dev/udp udp_xmit_hiwat /dev/udp udp_xmit_lowat " # # Run each ndd command, store in a temp file so we can make # multiple passes. There's probably some neat way to do this # in awk or perl, but I don't care. # version uname -a echo "NDD parameters as of `date`" ( echo "$list" | while read device param do case "$device" in "") ;; *) result=`ndd $device $param` echo $device $param: $result ;; esac done ) > $tmp # # Format the results nicely. Put a pagefeed before /dev/tcp. # for each in `cut -f1 -d' ' $tmp | sort -u` do # I don't like control characters in scripts... case "$each" in "/dev/tcp") echo '=' | tr '=' '\014' ;; *) ;; esac echo echo "$each" grep $each $tmp | cut -f2- -d' ' | awk '{ printf "%30s %d\n", $1, $2 }' | pr -2t -w82 | expand | sed -e 's/^/ /' done exit 0