summaryrefslogtreecommitdiff
path: root/net/scotty
diff options
context:
space:
mode:
authorhubertf <hubertf>1997-11-23 22:21:02 +0000
committerhubertf <hubertf>1997-11-23 22:21:02 +0000
commit938128e3ac4bf77373e4565742c14dbf828b186c (patch)
tree0a20aff000dca18d918ba6cf1fef49b4fecedd7a /net/scotty
parentaab80b55989c6f1dfd0e2cd3fa7422a9bffbe4ba (diff)
downloadpkgsrc-938128e3ac4bf77373e4565742c14dbf828b186c.tar.gz
Njetwork monitoring tool.
Diffstat (limited to 'net/scotty')
-rw-r--r--net/scotty/Makefile43
-rw-r--r--net/scotty/files/md51
-rw-r--r--net/scotty/patches/patch-aa40
-rw-r--r--net/scotty/patches/patch-ab15
-rw-r--r--net/scotty/patches/patch-ad640
-rw-r--r--net/scotty/patches/patch-ae19
-rw-r--r--net/scotty/patches/patch-af20
-rw-r--r--net/scotty/pkg/COMMENT1
-rw-r--r--net/scotty/pkg/DESCR43
-rw-r--r--net/scotty/pkg/PLIST394
-rwxr-xr-xnet/scotty/scripts/untrue5
11 files changed, 1221 insertions, 0 deletions
diff --git a/net/scotty/Makefile b/net/scotty/Makefile
new file mode 100644
index 00000000000..84395431d6a
--- /dev/null
+++ b/net/scotty/Makefile
@@ -0,0 +1,43 @@
+# New ports collection makefile for: scotty
+# Version required: 2.1.6
+# Date created: 18 Februar 1995
+# Whom: Gennady Sorokopud <gena@netvision.net.il>
+#
+# $Id: Makefile,v 1.1.1.1 1997/11/23 22:21:02 hubertf Exp $
+#
+
+DISTNAME= scotty-2.1.6
+CATEGORIES= net tk80
+MASTER_SITES= ftp://ftp.ibr.cs.tu-bs.de/pub/local/tkined/
+
+MAINTAINER= phk@freebsd.org
+
+LIB_DEPENDS= tk80\\.1\\.:${PORTSDIR}/x11/tk80
+
+GNU_CONFIGURE= yes
+CONFIGURE_ARGS= --with-tcl-config=/usr/local/lib/tcl8.0 \
+ --with-tk-config=/usr/local/lib/tk8.0
+
+WRKSRC=${WRKDIR}/${DISTNAME}/unix
+MAN1= tkined.1 scotty.1
+MAN8= ntping.8 straps.8
+MANN= Tnm.n cmip.n dns.n gdmo.n http.n icmp.n ined.n job.n \
+ mib.n msqltcl.n netdb.n ntp.n rpc.n snmp.n sunrpc.n \
+ syslog.n udp.n
+PLIST= ${PKGDIR}/PLIST.tmp
+
+pre-install:
+ @cd ${WRKSRC};make sinstall
+ @${CP} ${WRKSRC}/../tnm/ntping/ntping.8 ${WRKSRC}/../doc
+ @sed "s,@FREEBSD_VERSION@,$$(uname -m)-$$(uname)-$$(uname -r)," pkg/PLIST >/tmp/PLIST
+.if defined(NOMANCOMPRESS)
+ @sed "s,@GZIP@,," /tmp/PLIST >pkg/PLIST.tmp
+.else
+ @sed "s,@GZIP@,.gz," /tmp/PLIST >pkg/PLIST.tmp
+.endif
+ @${RM} /tmp/PLIST
+
+pre-clean:
+ @${RM} -f pkg/PLIST.tmp
+
+.include <bsd.port.mk>
diff --git a/net/scotty/files/md5 b/net/scotty/files/md5
new file mode 100644
index 00000000000..1f2d4e8e14f
--- /dev/null
+++ b/net/scotty/files/md5
@@ -0,0 +1 @@
+MD5 (scotty-2.1.6.tar.gz) = 1c6f28dc959250508bb3323aba401560
diff --git a/net/scotty/patches/patch-aa b/net/scotty/patches/patch-aa
new file mode 100644
index 00000000000..aa364249d34
--- /dev/null
+++ b/net/scotty/patches/patch-aa
@@ -0,0 +1,40 @@
+--- Makefile.in~ Fri Sep 13 07:42:06 1996
++++ Makefile.in Fri Sep 13 09:28:45 1996
+@@ -469,7 +469,7 @@
+ @$(INSTALL_PROGRAM) scotty $(BIN_INSTALL_DIR)/scotty$(TNM_VERSION)
+ @$(INSTALL_DATA) tnm$(SHLIB_SUFFIX) $(LIB_RUNTIME_DIR)/tnm$(TNM_VERSION)$(SHLIB_SUFFIX)
+ @chmod 555 $(LIB_RUNTIME_DIR)/tnm$(TNM_VERSION)$(SHLIB_SUFFIX)
+- @echo 'package ifneeded Tnm $(TNM_VERSION) "load $(LIB_RUNTIME_DIR)/tnm$(TNM_VERSION)[info sharedlibextension]"' > $(TNM_INSTALL_DIR)/pkgIndex.tcl
++ @echo 'package ifneeded Tnm $(TNM_VERSION) "load $(LIB_RUNTIME_DIR)/tnm$(TNM_VERSION).so"' > $(TNM_INSTALL_DIR)/pkgIndex.tcl
+
+ tnm-install-mibs:
+ @for i in $(TNM_INSTALL_DIR)/mibs ; \
+@@ -567,10 +567,14 @@
+ fi; \
+ done;
+ @echo "Installing tkined$(TNM_VERSION) and tkined$(TNM_VERSION)$(SHLIB_SUFFIX)"
+- @$(INSTALL_PROGRAM) $(UNIX_DIR)/tkined $(BIN_INSTALL_DIR)/tkined$(TKI_VERSION)
++ @sed s,@PREFIX@,${prefix},g tkined.sh.in >tkined.sh
++ @$(INSTALL) -m 555 ${UNIX_DIR}/tkined.sh ${BIN_INSTALL_DIR}/tkined
++ @$(INSTALL) -m 555 $(UNIX_DIR)/tkined $(BIN_INSTALL_DIR)/tkined$(TKI_VERSION)
++ @sed s,@PREFIX@,${prefix},g scotty.sh.in >scotty.sh
++ @$(INSTALL) -m 555 ${UNIX_DIR}/scotty.sh ${BIN_INSTALL_DIR}/scotty
+ @$(INSTALL_DATA) tkined$(SHLIB_SUFFIX) $(LIB_RUNTIME_DIR)/tkined$(TKI_VERSION)$(SHLIB_SUFFIX)
+ @chmod 555 $(LIB_RUNTIME_DIR)/tkined$(TKI_VERSION)$(SHLIB_SUFFIX)
+- @echo 'package ifneeded Tkined $(TKI_VERSION) "load $(LIB_RUNTIME_DIR)/tkined$(TKI_VERSION)[info sharedlibextension]"' > $(TKI_INSTALL_DIR)/pkgIndex.tcl
++ @echo 'package ifneeded Tkined $(TKI_VERSION) "load $(LIB_RUNTIME_DIR)/tkined$(TKI_VERSION).so"' > $(TKI_INSTALL_DIR)/pkgIndex.tcl
+ @$(INSTALL_DATA) $(TKI_DIR)/tkined.defaults $(TKI_INSTALL_DIR)
+
+ tki-install-library:
+--- tkined.sh.in~ Fri Sep 13 09:30:41 1996
++++ tkined.sh.in Fri Sep 13 09:26:21 1996
+@@ -0,0 +1,3 @@
++#!/bin/sh
++export TCLLIBPATH="@PREFIX@/lib/tkined1.4.6 @PREFIX@/lib/tnm2.1.6"
++exec @PREFIX@/bin/tkined1.4.6 $*
+--- scotty.sh.in~ Fri Sep 13 09:30:41 1996
++++ scotty.sh.in Fri Sep 13 09:26:21 1996
+@@ -0,0 +1,3 @@
++#!/bin/sh
++export TCLLIBPATH="@PREFIX@/lib/tnm2.1.6"
++exec @PREFIX@/bin/scotty2.1.6
diff --git a/net/scotty/patches/patch-ab b/net/scotty/patches/patch-ab
new file mode 100644
index 00000000000..fea4b9f9de7
--- /dev/null
+++ b/net/scotty/patches/patch-ab
@@ -0,0 +1,15 @@
+--- ../tkined/apps/snmp_monitor.tcl Mon Sep 2 18:30:19 1996
++++ ..//tkined/apps/snmp_monitor.tcl Mon Mar 3 14:43:52 1997
+@@ -482,8 +482,11 @@
+
+ set args $ip
+ set i 0
++ set snmpconfig [ined attribute $id "SNMP:Config"]
+ foreach if $iflist {
+- lappend args [CreateChart $id [expr 30+$i] [expr 30+$i]]
++ set nid [CreateChart $id [expr 30+$i] [expr 30+$i]]
++ lappend args $nid
++ ined -noupdate attribute $nid "SNMP:Config" $snmpconfig
+ lappend args $if
+ incr i
+ }
diff --git a/net/scotty/patches/patch-ad b/net/scotty/patches/patch-ad
new file mode 100644
index 00000000000..24f497c97cd
--- /dev/null
+++ b/net/scotty/patches/patch-ad
@@ -0,0 +1,640 @@
+--- ../tkined/apps/ip_discover.tcl Thu Sep 12 22:01:03 1996
++++ ../tkined/apps/ip_discover.tcl Thu Mar 6 17:11:38 1997
+@@ -21,6 +21,17 @@
+ IpInit IP-Discover
+
+ ##
++## Mapping sysObjectID to icons
++##
++
++set sysid2icon(1.3.6.1.4.1.311.1.1.3.1) pc.xbm
++set sysid2icon(1.3.6.1.4.1.9.1) cisco.xbm
++set sysid2icon(1.3.6.1.4.1.11.2.3.9.1) laser.xbm
++set sysid2icon(1.3.6.1.4.1.75.5.80.1.1) concent.xbm
++set sysid2icon(1.3.6.1.4.10.250.8) unixpc.xbm
++set sysid2icon(1.3.6.1.4.1.42.2) SUN-Server.xbm
++
++##
+ ## These are the global parameters that control the discovering
+ ## process. They are manipulated by the "Discover Parameter" proc.
+ ##
+@@ -30,7 +41,15 @@
+ set columns 16
+ set report true
+ set debug false
+-
++set communities {public private}
++set suppresdomain {.foo.bar.com}
++set parallel 10
++
++for {set i 1} {$i < 32} {incr i} {
++ set a [expr 0xffffffff << $i]
++ set b [expr ($a >> 24) & 0xff].[expr ($a >> 16) & 0xff].[expr ($a >> 8) & 0xff].[expr ($a) & 0xff]
++ set subnetbits($b) /[expr 32-$i]
++}
+
+ ##
+ ## During our icmp fire, we build up the following tables.
+@@ -48,13 +67,30 @@
+ ##
+
+ ##
++## We want to do things in parallel, so this procedure comes handy
++##
++
++proc forsome {var count list code} {
++ upvar 1 $var sublist
++ set rel [expr $count - 1]
++ while {[llength $list]} {
++ set sublist [lrange $list 0 $rel]
++ uplevel 1 "$code"
++ set list [lrange $list $count end]
++ }
++}
++
++##
+ ## Reset the global tables. This is now called before we start anything
+ ## else to recover from abnormal terminated runs.
+ ##
+
+ proc reset {} {
+- catch {
+- unset nodes networks links ids trace mask fip name address gateways
++ foreach i {
++ nodes networks links ids trace mask fip name address gateways snmp
++ icon } {
++ global $i
++ catch "unset $i"
+ }
+ }
+
+@@ -146,20 +182,23 @@
+ ##
+
+ proc netping { network } {
++ global parallel
+ set result ""
++ set res ""
+ if {[regexp "^\[0-9\]+\.\[0-9\]+\.\[0-9\]+$" $network] > 0} {
+ set hosts ""
+ for {set a4 1} {$a4<255} {incr a4} {
+- append hosts " $network.$a4"
++ lappend hosts "$network.$a4"
+ }
+- set result [icmp echo $hosts]
+- }
+- set res ""
+- foreach pr $result {
+- set pr_ip [lindex $pr 0]
+- set pr_time [lindex $pr 1]
+- if {$pr_time>=0} {
+- lappend res $pr_ip
++ forsome lst $parallel $hosts {
++ debug "** ping $lst"
++ foreach pr [icmp echo $lst] {
++ set pr_ip [lindex $pr 0]
++ set pr_time [lindex $pr 1]
++ if {$pr_time>=0} {
++ lappend res $pr_ip
++ }
++ }
+ }
+ }
+ return $res
+@@ -246,13 +285,13 @@
+ }
+
+ ##
+-## Get a trace of the routes to very node. Store them in the global
++## Get a trace of the routes to every node. Store them in the global
+ ## array trace. If we find nodes that were not discovered using the
+ ## icmp fire, put them in the global table.
+ ##
+
+ proc discover_traces {} {
+- global ids nodes trace address
++ global ids nodes trace address parallel
+ set count 0
+ set start [clock seconds]
+
+@@ -260,19 +299,14 @@
+ foreach id [array names nodes] {
+ set ip $address($id)
+ lappend addrs $ip
+- if {[llength $addrs] > 255} {
+- foreach route [trace_route $addrs] {
+- set id $ids([lindex $route 0])
+- set trace($id) [lindex $route 1]
+- incr count
+- }
+- set addrs ""
+- }
+ }
+- foreach route [trace_route $addrs] {
+- set id $ids([lindex $route 0])
+- set trace($id) [lindex $route 1]
+- incr count
++ forsome lst $parallel $addrs {
++ debug "** trace $lst"
++ foreach route [trace_route $lst] {
++ set id $ids([lindex $route 0])
++ set trace($id) [lindex $route 1]
++ incr count
++ }
+ }
+
+ # add new discovered nodes to the global tables
+@@ -301,26 +335,22 @@
+ ##
+
+ proc discover_masks {} {
+- global nodes ids mask address
++ global nodes ids mask address parallel
+ set count 0
+ set start [clock seconds]
+
+ set addrs ""
+ foreach id [array names nodes] {
++ if {[info exists mask($id)]} continue
+ lappend addrs $address($id)
+- if {[llength $addrs] > 255} {
+- foreach ipmask [icmp mask $addrs] {
+- set id $ids([lindex $ipmask 0])
+- set mask($id) [lindex $ipmask 1]
+- incr count
+- }
+- set addrs ""
+- }
+ }
+- foreach ipmask [icmp mask $addrs] {
+- set id $ids([lindex $ipmask 0])
+- set mask($id) [lindex $ipmask 1]
+- incr count
++ forsome lst $parallel $addrs {
++ debug "** masks $lst"
++ foreach ipmask [icmp mask $lst] {
++ set id $ids([lindex $ipmask 0])
++ set mask($id) [lindex $ipmask 1]
++ incr count
++ }
+ }
+ writeln "$count netmasks queried in [expr {[clock seconds]-$start}] seconds."
+ flush stdout
+@@ -334,31 +364,101 @@
+ ## ===========================================================================
+ ##
+
+-proc discover_snmp_callback {id s e} {
+- global snmp
++proc discover_snmp_callback {id s e {v ""}} {
++ global snmp icon sysid2icon
+ if {$e == "noError"} {
+ set snmp($id) [$s configure]
++ foreach i [array names sysid2icon] {
++ if {[string first $i [lindex $v 2]] == 0} {
++ set icon($id) $sysid2icon($i)
++ }
++ }
++ debug $v
+ }
+ $s destroy
+ }
+
+ proc discover_snmp {} {
+- global nodes address snmp
+- global icmp_retries icmp_timeout
++ global nodes address snmp communities ids parallel
++ global icmp_retries icmp_timeout mask gateways icon
++
+ set start [clock seconds]
+ mib load rfc1213.mib
+- foreach id [array names nodes] {
+- set ip $address($id)
+- if {[catch {snmp session -address $ip \
+- -retries $icmp_retries -timeout $icmp_timeout} s]} continue
++ foreach com $communities {
++ debug "** Looking for community $com"
++ set ips ""
++ foreach id [array names nodes] {
++ if {[info exists snmp($id)]} continue
++ lappend ips $address($id)
++ }
++ forsome ipl $parallel $ips {
++ debug "** snmp community $com $ipl"
++ foreach ip $ipl {
++ if {[catch {snmp session -address $ip -community $com \
++ -retries $icmp_retries -timeout $icmp_timeout} s]} continue
++ if {[catch {
++ $s get sysObjectID.0 "discover_snmp_callback $ids($ip) %S %E %V"
++ } msg]} {
++ writeln "Oops: $ip get sysObjectID.0: $msg"
++ }
++ update
++ snmp wait
++ }
++ }
++ }
++ foreach i [array names snmp] {
++ set s [eval snmp session $snmp($i)]
++ set l ""
++ catch {unset ifstate}
++ debug "** Walk [$s configure]"
++ if {[catch {$s walk x "ifIndex ifAdminStatus" {
++ set ifstate([lindex [lindex $x 0] 2]) [lindex [lindex $x 1] 2]
++ } } msg]} {
++ writeln "Oops: $msg from $s"
++ continue
++ }
+ if {[catch {
+- $s get sysObjectID.0 [list discover_snmp_callback $id "%S" "%E"]
+- } msg]} {
+- writeln "Oops: $ip get sysObjectID.0: $msg"
++ $s walk x "ipAdEntAddr ipAdEntNetMask ipAdEntIfIndex" {
++ set a [lindex [lindex $x 0] 2]
++ if {$a == "0.0.0.0"} continue
++ if {$a == "1.1.1.1"} continue
++ if {$a == "127.0.0.1"} continue
++ set if [lindex [lindex $x 2] 2]
++ if {$ifstate($if) != "up"} continue
++ lappend l $a
++ set m [lindex [lindex $x 1] 2]
++ if {$a == $address($i)} {
++ set mask($i) $m
++ } elseif {![info exists ids($a)]} {
++ create_node $a
++ set j $ids($a)
++ set mask($j) $m
++ set snmp($j) $snmp($i)
++ if {[info exists icon($i)]} {
++debug "** id $j $a/$m icon $icon($i)"
++ set icon($j) $icon($i)
++ }
++ debug "** New interface: $j $a $m"
++ }
++ } } msg]} {
++ writeln "Oops: $msg from $s"
++ continue
++ }
++
++ if {[llength $l] > 1} {
++ foreach j $l {
++ set ll "$j"
++ foreach k $l {
++ if {$k != $j} {
++ lappend ll "$k"
++ }
++ }
++ set gateways($ids($j)) $ll
++ }
+ }
+- update
++ $s destroy
+ }
+- snmp wait
++
+ set count [llength [array names snmp]]
+ writeln "$count snmp agents queried in [expr {[clock seconds]-$start}] seconds."
+ flush stdout
+@@ -380,33 +480,26 @@
+ ##
+
+ proc discover_fips {} {
+- global nodes ids fip address
++ global nodes ids fip address parallel
+ set count 0
+ set start [clock seconds]
+
+ set addrs ""
+- set idlist ""
++ set idx 0
+ foreach id [array names nodes] {
+ lappend addrs $address($id)
+- lappend idlist $id
+- if {[llength $addrs] > 255} {
+- set idx 0
+- foreach ipfip [icmp ttl 32 $addrs] {
+- set id [lindex $idlist $idx]
+- set fip($id) [lindex $ipfip 0]
+- incr count
+- incr idx
+- }
+- set addrs ""
+- set idlist ""
+- }
++ set idlist($idx) $id
++ incr idx
+ }
+ set idx 0
+- foreach ipfip [icmp ttl 32 $addrs] {
+- set id [lindex $idlist $idx]
+- set fip($id) [lindex $ipfip 0]
+- incr count
+- incr idx
++ forsome lst $parallel $addrs {
++ debug "** fips $lst"
++ foreach ipfip [icmp ttl 32 $lst] {
++ set id $idlist($idx)
++ set fip($id) [lindex $ipfip 0]
++ incr count
++ incr idx
++ }
+ }
+ writeln "$count ip addresses queried in [expr {[clock seconds]-$start}] seconds."
+ flush stdout
+@@ -513,6 +606,7 @@
+ foreach id [array names nodes] {
+ set ip $address($id)
+ set netmask $mask($id)
++ if {$netmask == "0.0.0.0"} continue;
+
+ # Get the official network for this node.
+
+@@ -526,22 +620,25 @@
+ D { set bytes "" }
+ }
+ set net [join $bytes .]
+- if {![info exists table($net)]} { set table($net) $mmm }
++
++debug ">> $ip $netmask $net $mmm"
++
++ #if {![info exists table($net)]} { set table($net) $mmm }
+
+ # Sanity check for incorrect netmasks. Netmasks wider than
+ # the official network type don't make any sense. Ignore
+ # problems that are due to the loopback mask of the localhost.
+
+- if {$netmask == "0.0.0.0"} continue;
+ if { [ip_network $net $netmask] != $net } {
+ if {![catch {nslook [exec hostname]} localhost]} {
+ if {[string trim $localhost] == $ip} continue
+ }
+- set txt "Please check the netmask $netmask for $ip on class $class network $net."
++ set txt "Please check the netmask $netmask for $ip on network $net."
+ ined acknowledge $txt
+ if {$report == "true"} {
+ writeln $txt
+ }
++ set mask($id) "0.0.0.0"
+ continue
+ }
+
+@@ -550,6 +647,21 @@
+ set subnet [ip_network $ip $netmask]
+ if {![info exists table($subnet)]} { set table($subnet) $netmask }
+ }
++ foreach id [array names nodes] {
++ set ip $address($id)
++ set netmask $mask($id)
++ if {$netmask != "0.0.0.0"} continue;
++
++debug "))) $ip $netmask $mmm"
++ foreach net [array names table] {
++ if {[ip_ismember $ip $net [lindex $table($net) 0]]} {
++ set mask($id) $table($net)
++debug "=== $ip $mask($id) $net "
++ break
++ }
++ }
++
++ }
+
+ if {[info exist table]} {
+
+@@ -618,6 +730,7 @@
+ incr cons
+ }
+ }
++ writeln "Network $net ($pros, $cons, $unk)."
+ if {$cons > $pros} {
+ set res [ined confirm \
+ "The majority ($cons : $pros) of nodes on network $net have wide netmasks." \
+@@ -745,6 +858,7 @@
+
+ writeln "$count gateways discovered in [expr {[clock seconds]-$start}] seconds."
+ flush stdout
++
+ }
+
+
+@@ -863,7 +977,7 @@
+ ##
+
+ proc merge_gateways {} {
+- global ids nodes networks links gateways address name
++ global ids nodes networks links gateways address name snmp
+ set count 0
+ set start [clock seconds]
+
+@@ -871,7 +985,10 @@
+
+ debug "** entering merge_gateways"
+ foreach id [array names gateways] {
+- if {[llength $gateways($id)] < 2} continue
++ if {[llength $gateways($id)] < 2} {
++ unset gateways($id)
++ continue
++ }
+ debug "** gateways ($id) :\t $gateways($id)"
+ }
+
+@@ -888,8 +1005,6 @@
+
+ foreach id [array names gateways] {
+
+- if {[llength $gateways($id)] < 2} continue
+-
+ set myip [lindex $gateways($id) 0]
+ if {[info exists done($myip)]} {
+ debug "** $myip skipped - $myip is already done"
+@@ -952,12 +1067,16 @@
+ # addresses for which there is no id. We get such beasts
+ # when checking the returned udp address.
+
+- if {![info exists ids($ip)]} continue
+-
++ if {![info exists ids($ip)]} {
++ writeln "skipping $ip for reasons we don't understand"
++ continue
++ }
++
+ set rid $ids($ip)
+ catch {unset nodes($rid)}
+ catch {unset address($rid)}
+ catch {unset name($rid)}
++ catch {unset snmp($rid)}
+
+ # Adjust the links pointing to rid.
+
+@@ -997,7 +1116,8 @@
+ ##
+
+ proc talk_to_ined {} {
+- global nodes networks links address snmp name
++ global nodes networks links address snmp name gateways subnetbits
++ global suppresdomain icon
+ set count 0
+ set start [clock seconds]
+
+@@ -1018,6 +1138,9 @@
+ NODE {
+ set addr [GetIpAddress $comp]
+ set id_by_addr($addr) $id
++ foreach a [ined attribute $id "allIP"] {
++ set id_by_addr($a) $id
++ }
+ }
+ NETWORK {
+ set id_by_addr([ined address $comp]) $id
+@@ -1045,13 +1168,22 @@
+ if {[info exists id_by_addr($ip)]} {
+ set ined_id($id) $id_by_addr($ip)
+ } else {
++ set nm "[lindex $name($id) 0]"
++ regsub "\(.*\)$suppresdomain\$" "$nm" {\1} nm
+ set ined_id($id) [ined -noupdate create NODE]
+ ined -noupdate address $ined_id($id) $ip
+- ined -noupdate name $ined_id($id) "[lindex $name($id) 0]"
++ ined -noupdate name $ined_id($id) "$nm"
+ ined -noupdate label $ined_id($id) name
+ ined -noupdate move $ined_id($id) [nextx] [nexty]
+ if {[info exists snmp($id)]} {
+ ined -noupdate attribute $ined_id($id) "SNMP:Config" $snmp($id)
++ ined -noupdate color $ined_id($id) brown
++ }
++ if {[info exists icon($id)]} {
++ ined -noupdate icon $ined_id($id) $icon($id)
++ }
++ if {[info exists gateways($id)]} {
++ ined -noupdate attribute $ined_id($id) "allIP" $gateways($id)
+ }
+ set id_by_addr($ip) $ined_id($id)
+ incr count
+@@ -1074,11 +1206,12 @@
+ if {[info exists id_by_addr($ip)]} {
+ set ined_id($id) $id_by_addr($ip)
+ } else {
+- set ined_id($id) [ined -noupdate create NETWORK 0 0 300 0]
+- ined -noupdate name $ined_id($id) "$ip $type"
++ set ined_id($id) [ined -noupdate create NETWORK 0 0 100 0]
++ ined -noupdate name $ined_id($id) "$ip$subnetbits($networks($id))"
+ ined -noupdate address $ined_id($id) $ip
+ ined -noupdate label $ined_id($id) name
+ ined -noupdate move $ined_id($id) [nextx] [nexty]
++ ined -noupdate attribute $ined_id($id) "netmask" $networks($id)
+ set id_by_addr($ip) $ined_id($id)
+ incr count
+ }
+@@ -1125,7 +1258,7 @@
+
+ proc "Discover IP Network" {list} {
+
+- global nodes networks links ids trace mask fip name address gateways
++ global nodes networks links ids trace mask fip name address gateways snmp
+ static nets
+
+ reset
+@@ -1171,15 +1304,16 @@
+ foreach network $nets { discover_nodes $network }
+ if {[info exists nodes]} {
+ discover_traces
+- discover_masks
+ discover_snmp
++ discover_masks
+ discover_fips
+ discover_networks
+ discover_gateways
+ discover_links
+ merge_gateways
+ talk_to_ined
+- unset nodes networks links ids trace mask fip name address
++ catch {unset nodes networks links ids trace mask fip name address}
++ catch {unset snmp}
+ catch {unset gateways}
+ }
+
+@@ -1195,7 +1329,7 @@
+
+ proc "Discover Route" {list} {
+
+- global nodes networks links ids trace mask fip name address gateways
++ global nodes networks links ids trace mask fip name address gateways snmp
+ static ips
+
+ reset
+@@ -1249,8 +1383,8 @@
+
+ if {[info exists nodes]} {
+ discover_traces
+- discover_masks
+ discover_snmp
++ discover_masks
+ discover_fips
+ discover_networks
+ discover_gateways
+@@ -1259,6 +1393,7 @@
+ talk_to_ined
+ unset nodes networks links ids trace mask fip name address
+ catch {unset gateways}
++ catch {unset snmp}
+
+ }
+
+@@ -1276,6 +1411,9 @@
+ global email_trace
+ global report
+ global debug
++ global communities
++ global suppresdomain
++ global parallel
+
+ set result [ined request "IP-Discover Parameter" \
+ [list [list "# of ICMP retries:" $icmp_retries scale 1 10] \
+@@ -1287,7 +1425,10 @@
+ [list "Nodes per row:" $columns scale 10 40] \
+ [list "Email Discover Routes:" $email_trace radio true false] \
+ [list "Write Report:" $report radio true false] \
+- [list "Debug Mode:" $debug radio true false] ] \
++ [list "Debug Mode:" $debug radio true false] \
++ [list "SNMP Communities:" $communities entry 10] \
++ [list "Suppress Domain:" $suppresdomain entry 10] \
++ [list "Parallelism:" $parallel scale 1 255] ] \
+ [list "set values" cancel] ]
+
+ if {[lindex $result 0] == "cancel"} return
+@@ -1302,6 +1443,9 @@
+ set email_trace [lindex $result 8]
+ set report [lindex $result 9]
+ set debug [lindex $result 10]
++ set communities [lindex $result 11]
++ set suppresdomain [lindex $result 12]
++ set parallel [lindex $result 13]
+
+ icmp -retries $icmp_retries
+ icmp -timeout $icmp_timeout
+@@ -1408,7 +1552,7 @@
+
+ proc ined_create {host user} {
+ global nodes networks links ids trace mask fip name address gateways
+- global hosts email_trace
++ global hosts email_trace snmp
+
+ if {![info exists hosts($host)]} {
+ set hosts($host) $host
+@@ -1425,8 +1569,8 @@
+
+ if {[info exists nodes]} {
+ discover_traces
+- discover_masks
+ discover_snmp
++ discover_masks
+ discover_fips
+ discover_networks
+ discover_gateways
+@@ -1435,6 +1579,7 @@
+ talk_to_ined
+ unset nodes networks links ids trace mask fip name address
+ catch {unset gateways}
++ catch {unset snmp}
+ }
+
+ writeln "discover finished in [expr {[clock seconds]-$start}] seconds"
diff --git a/net/scotty/patches/patch-ae b/net/scotty/patches/patch-ae
new file mode 100644
index 00000000000..3acac9b44a7
--- /dev/null
+++ b/net/scotty/patches/patch-ae
@@ -0,0 +1,19 @@
+--- ../tnm/ntping/ntping.c Thu Sep 19 10:59:13 1996
++++ ../tnm/ntping/ntping.c Thu Mar 6 17:32:03 1997
+@@ -749,7 +749,15 @@
+ return;
+ }
+
+- dprintf (stderr, "* .. got host %s .. ", job->hname);
++ dprintf (stderr, "* .. got host %s .. %x %x ", job->hname,
++ sfrom.sin_addr.s_addr, job->sa.sin_addr.s_addr );
++
++ if ( type == ping && sfrom.sin_addr.s_addr != job->sa.sin_addr.s_addr)
++ {
++ dprintf (stderr, "* non-matching IP# was: %x should be:%x.\n",
++ sfrom.sin_addr.s_addr, job->sa.sin_addr.s_addr );
++ return;
++ }
+
+ switch (type)
+ {
diff --git a/net/scotty/patches/patch-af b/net/scotty/patches/patch-af
new file mode 100644
index 00000000000..3854c33a18b
--- /dev/null
+++ b/net/scotty/patches/patch-af
@@ -0,0 +1,20 @@
+--- configure Tue Jul 22 15:21:27 1997
++++ configure Sat Aug 23 04:14:43 1997
+@@ -1402,7 +1402,7 @@
+ DL_LIBS=$TCL_DL_LIBS
+ LD_FLAGS=$TCL_LD_FLAGS
+ LD_SEARCH_FLAGS=$TCL_LD_SEARCH_FLAGS
+-TCL_INCLUDES=-I$TCL_PREFIX/include
++TCL_INCLUDES=-I$TCL_PREFIX/include/tcl$TCL_VERSION
+
+ if test -z "$SHLIB_LD" ; then
+ { echo "configure: error: no shared linker definition (TCL_SHLIB_LD) in tclConfig.sh" 1>&2; exit 1; }
+@@ -1486,7 +1486,7 @@
+ fi
+
+ . $tnm_cv_path_tk_config/tkConfig.sh
+-TK_INCLUDES=-I$TK_PREFIX/include
++TK_INCLUDES=-I$TK_PREFIX/include/tk$TK_VERSION
+ if test "$TK_INCLUDES" = "$TCL_INCLUDES" ; then
+ TK_INCLUDES=""
+ fi
diff --git a/net/scotty/pkg/COMMENT b/net/scotty/pkg/COMMENT
new file mode 100644
index 00000000000..83edca3d4f2
--- /dev/null
+++ b/net/scotty/pkg/COMMENT
@@ -0,0 +1 @@
+network management extensions to tcl
diff --git a/net/scotty/pkg/DESCR b/net/scotty/pkg/DESCR
new file mode 100644
index 00000000000..39adf550433
--- /dev/null
+++ b/net/scotty/pkg/DESCR
@@ -0,0 +1,43 @@
+
+ scotty - network management extensions to tcl
+
+
+scotty is a tcl extension which allows to set up TCP and UDP
+connections, to send various ICMP packets, to query the domain name
+system (DNS), to check clock screw using the NTP protocol and to query
+various SUN RPC services (like rstat and mountd).
+
+Included in this package is an interface to SNMPv1 and SNMPv2. The
+SNMP stack was written from scratch to provide an efficient and
+portable tcl SNMP extension. MIB extensions can be written in tcl by
+running the scotty extension as an SNMP agent. This allows you to
+implement your own specific MIB without getting in contact with the
+lowlevel ASN.1/BER stuff.
+
+The scotty package includes scripts for the tkined network editor to
+troubleshoot your IP network (ping, traceroute, finger, query tcp
+services, query RPC services), for monitoring network status plus
+scripts to discover and layout the topology of your IP network. SNMP
+based scripts can be used to dump routing tables, to query interface
+status and to monitor SNMP variables. There is also a MIB browser to
+inspect the MIB hierarchy.
+
+More information is available via WWW under the URL:
+
+ http://www.cs.tu-bs.de/ibr/projects/nm/scotty/
+
+If you have problems installing scotty or if you have made any changes
+to run scotty on your hardware or if you have found any bugs, please
+contact us. Discussion about scotty is currently done on the tkined
+mailing list. To join, send a request to
+
+ tkined-request@ibr.cs.tu-bs.de.
+
+Messages to the list should be send to tkined@ibr.cs.tu-bs.de.
+
+ Juergen
+
+---
+Juergen Schoenwaelder (schoenw@ibr.cs.tu-bs.de) http://www.cs.tu-bs.de/~schoenw
+Technical University Braunschweig, Dept. Operating Systems & Computer Networks
+Bueltenweg 74/75, D-38106 Braunschweig, Germany. (Tel. +49 531 / 391-3249)
diff --git a/net/scotty/pkg/PLIST b/net/scotty/pkg/PLIST
new file mode 100644
index 00000000000..5fc0247308b
--- /dev/null
+++ b/net/scotty/pkg/PLIST
@@ -0,0 +1,394 @@
+bin/ntping
+bin/straps
+bin/scotty
+bin/scotty2.1.6
+bin/tkined
+bin/tkined1.4.6
+lib/tnm2.1.6/mibs/cisco.mib
+lib/tnm2.1.6/mibs/dvmrp.mib
+lib/tnm2.1.6/mibs/hp-unix.mib
+lib/tnm2.1.6/mibs/ncd.mib
+lib/tnm2.1.6/mibs/rfc1213.mib
+lib/tnm2.1.6/mibs/rfc1238.mib
+lib/tnm2.1.6/mibs/rfc1269.mib
+lib/tnm2.1.6/mibs/rfc1285.mib
+lib/tnm2.1.6/mibs/rfc1315.mib
+lib/tnm2.1.6/mibs/rfc1354.mib
+lib/tnm2.1.6/mibs/rfc1381.mib
+lib/tnm2.1.6/mibs/rfc1382.mib
+lib/tnm2.1.6/mibs/rfc1406.mib
+lib/tnm2.1.6/mibs/rfc1407.mib
+lib/tnm2.1.6/mibs/rfc1414.mib
+lib/tnm2.1.6/mibs/rfc1461.mib
+lib/tnm2.1.6/mibs/rfc1471.mib
+lib/tnm2.1.6/mibs/rfc1472.mib
+lib/tnm2.1.6/mibs/rfc1473.mib
+lib/tnm2.1.6/mibs/rfc1474.mib
+lib/tnm2.1.6/mibs/rfc1493.mib
+lib/tnm2.1.6/mibs/rfc1512.mib
+lib/tnm2.1.6/mibs/rfc1513.mib
+lib/tnm2.1.6/mibs/rfc1514.mib
+lib/tnm2.1.6/mibs/rfc1515.mib
+lib/tnm2.1.6/mibs/rfc1516.mib
+lib/tnm2.1.6/mibs/rfc1525.mib
+lib/tnm2.1.6/mibs/rfc1559.mib
+lib/tnm2.1.6/mibs/rfc1565.mib
+lib/tnm2.1.6/mibs/rfc1566.mib
+lib/tnm2.1.6/mibs/rfc1567.mib
+lib/tnm2.1.6/mibs/rfc1573.mib
+lib/tnm2.1.6/mibs/rfc1595.mib
+lib/tnm2.1.6/mibs/rfc1604.mib
+lib/tnm2.1.6/mibs/rfc1611.mib
+lib/tnm2.1.6/mibs/rfc1612.mib
+lib/tnm2.1.6/mibs/rfc1628.mib
+lib/tnm2.1.6/mibs/rfc1643.mib
+lib/tnm2.1.6/mibs/rfc1650.mib
+lib/tnm2.1.6/mibs/rfc1657.mib
+lib/tnm2.1.6/mibs/rfc1658.mib
+lib/tnm2.1.6/mibs/rfc1659.mib
+lib/tnm2.1.6/mibs/rfc1660.mib
+lib/tnm2.1.6/mibs/rfc1666.mib
+lib/tnm2.1.6/mibs/rfc1694.mib
+lib/tnm2.1.6/mibs/rfc1695.mib
+lib/tnm2.1.6/mibs/rfc1696.mib
+lib/tnm2.1.6/mibs/rfc1697.mib
+lib/tnm2.1.6/mibs/rfc1724.mib
+lib/tnm2.1.6/mibs/rfc1742.mib
+lib/tnm2.1.6/mibs/rfc1747.mib
+lib/tnm2.1.6/mibs/rfc1748.mib
+lib/tnm2.1.6/mibs/rfc1749.mib
+lib/tnm2.1.6/mibs/rfc1757.mib
+lib/tnm2.1.6/mibs/rfc1759.mib
+lib/tnm2.1.6/mibs/rfc1792.mib
+lib/tnm2.1.6/mibs/rfc1850.mib
+lib/tnm2.1.6/mibs/rfc1906.mib
+lib/tnm2.1.6/mibs/rfc1907.mib
+lib/tnm2.1.6/mibs/rfc1910.mib
+lib/tnm2.1.6/mibs/rfc2020.mib
+lib/tnm2.1.6/mibs/synoptics.mib
+lib/tnm2.1.6/mibs/tubs-linux.mib
+lib/tnm2.1.6/mibs/tubs-mlm.mib
+lib/tnm2.1.6/mibs/tubs-nfs.mib
+lib/tnm2.1.6/mibs/tubs-proc.mib
+lib/tnm2.1.6/mibs/tubs-tnm.mib
+lib/tnm2.1.6/mibs/unix.mib
+lib/tnm2.1.6/mibs/wellfleet.mib
+lib/tnm2.1.6/mibs/xxx.mib
+lib/tnm2.1.6/mibs/rfc1155.smi
+lib/tnm2.1.6/mibs/rfc1573.smi
+lib/tnm2.1.6/mibs/rfc1902.smi
+lib/tnm2.1.6/mibs/compat.tc
+lib/tnm2.1.6/mibs/rfc1903.tc
+lib/tnm2.1.6/mibs/OIM.gdmo
+lib/tnm2.1.6/mibs/X721.gdmo
+lib/tnm2.1.6/mibs/X722.gdmo
+lib/tnm2.1.6/mibs/X739.gdmo
+lib/tnm2.1.6/pkgIndex.tcl
+lib/tnm2.1.6/library/README
+lib/tnm2.1.6/library/dialog.tcl
+lib/tnm2.1.6/library/output.tcl
+lib/tnm2.1.6/library/snmp.tcl
+lib/tnm2.1.6/library/monitor.tcl
+lib/tnm2.1.6/library/obsolete.tcl
+lib/tnm2.1.6/library/init.tcl
+lib/tnm2.1.6/library/tclIndex
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1155.smi.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1902.smi.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1903.tc.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/compat.tc.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1906.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1907.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1213.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1910.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1269.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1238.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1757.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1315.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1354.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1381.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1382.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1406.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1407.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1414.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1461.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1471.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1472.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1473.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1474.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1493.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1512.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1513.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1514.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1515.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1516.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1525.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1559.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1565.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1566.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1567.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1573.smi.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1573.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1595.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1604.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1611.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1612.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1628.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1643.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1650.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1657.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1658.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1659.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1660.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1666.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1694.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1695.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1696.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1697.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1724.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1742.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1747.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1748.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1749.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1759.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1792.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc1850.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/rfc2020.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/tubs-tnm.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/tubs-nfs.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/tubs-proc.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/tubs-mlm.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/xxx.mib.idy
+lib/tnm2.1.6/@FREEBSD_VERSION@/dvmrp.mib.idy
+lib/tnm2.1.6/agents/snmpd
+lib/tnm2.1.6/agents/snmpd-tnm.tcl
+lib/tnm2.1.6/agents/snmpd-mlm.tcl
+lib/tnm2.1.6/agents/snmpd-nfs.tcl
+lib/tnm2.1.6/agents/snmpd-proc.tcl
+lib/tnm2.1.6/agents/snmpd-http.tcl
+lib/tnm2.1.6/agents/README
+lib/tnm2.1.6/examples/discover
+lib/tnm2.1.6/examples/discover.n
+lib/tnm2.1.6/examples/emok
+lib/tnm2.1.6/examples/emok.n
+lib/tnm2.1.6/examples/etherload
+lib/tnm2.1.6/examples/etherload.n
+lib/tnm2.1.6/examples/ifload
+lib/tnm2.1.6/examples/ifload.n
+lib/tnm2.1.6/examples/ifload2gif
+lib/tnm2.1.6/examples/ifload2gif.n
+lib/tnm2.1.6/examples/snmptrapd
+lib/tnm2.1.6/examples/snmptrapd.n
+lib/tnm2.1.6/examples/mibtree
+lib/tnm2.1.6/examples/mibtree.n
+lib/tnm2.1.6/examples/nslook
+lib/tnm2.1.6/examples/nslook.n
+lib/tnm2.1.6/examples/rpcprobe
+lib/tnm2.1.6/examples/rpcprobe.n
+lib/tnm2.1.6/examples/rstat
+lib/tnm2.1.6/examples/rstat.n
+lib/tnm2.1.6/examples/snmpwalk
+lib/tnm2.1.6/examples/snmpwalk.n
+lib/tnm2.1.6/examples/tcpspeed
+lib/tnm2.1.6/examples/tcpspeed.n
+lib/tnm2.1.6/examples/traceroute
+lib/tnm2.1.6/examples/traceroute.n
+lib/tnm2.1.6/examples/udploss
+lib/tnm2.1.6/examples/udploss.n
+lib/tnm2.1.6/examples/udpspeed
+lib/tnm2.1.6/examples/udpspeed.n
+lib/tnm2.1.6/examples/uiping
+lib/tnm2.1.6/examples/uiping.n
+lib/tnm2.1.6/examples/yanny
+lib/tnm2.1.6/examples/yanny.n
+lib/tnm2.1.6/examples/pcnfs
+lib/tnm2.1.6/examples/pcnfs.n
+lib/tnm2.1.6/examples/mibgrep
+lib/tnm2.1.6/examples/mibgrep.n
+lib/tnm2.1.6.so
+lib/tkined1.4.6/pkgIndex.tcl
+lib/tkined1.4.6/tkined.defaults
+lib/tkined1.4.6/library/Editor.tcl
+lib/tkined1.4.6/library/Diagram.tcl
+lib/tkined1.4.6/library/Command.tcl
+lib/tkined1.4.6/library/Tool.tcl
+lib/tkined1.4.6/library/Objects.tcl
+lib/tkined1.4.6/library/Dialog.tcl
+lib/tkined1.4.6/library/Event.tcl
+lib/tkined1.4.6/library/Help.tcl
+lib/tkined1.4.6/library/Misc.tcl
+lib/tkined1.4.6/library/pkgIndex.tcl
+lib/tkined1.4.6/bitmaps/Box.xbm
+lib/tkined1.4.6/bitmaps/BoxMask.xbm
+lib/tkined1.4.6/bitmaps/DEC-Server.xbm
+lib/tkined1.4.6/bitmaps/DEC-ServerMask.xbm
+lib/tkined1.4.6/bitmaps/DEC.xbm
+lib/tkined1.4.6/bitmaps/DECMask.xbm
+lib/tkined1.4.6/bitmaps/HP.xbm
+lib/tkined1.4.6/bitmaps/HP7550.xbm
+lib/tkined1.4.6/bitmaps/HP7550Mask.xbm
+lib/tkined1.4.6/bitmaps/HPMask.xbm
+lib/tkined1.4.6/bitmaps/HPdj.xbm
+lib/tkined1.4.6/bitmaps/HPdjMask.xbm
+lib/tkined1.4.6/bitmaps/HPsj.xbm
+lib/tkined1.4.6/bitmaps/HPsjMask.xbm
+lib/tkined1.4.6/bitmaps/IPC.xbm
+lib/tkined1.4.6/bitmaps/IPCMask.xbm
+lib/tkined1.4.6/bitmaps/NFS-client.xbm
+lib/tkined1.4.6/bitmaps/NFS-clientMask.xbm
+lib/tkined1.4.6/bitmaps/NFS-server.xbm
+lib/tkined1.4.6/bitmaps/NFS-serverMask.xbm
+lib/tkined1.4.6/bitmaps/RS6000.xbm
+lib/tkined1.4.6/bitmaps/RS6000Mask.xbm
+lib/tkined1.4.6/bitmaps/SLC.xbm
+lib/tkined1.4.6/bitmaps/SLCMask.xbm
+lib/tkined1.4.6/bitmaps/SUN-Server.xbm
+lib/tkined1.4.6/bitmaps/SUN-ServerMask.xbm
+lib/tkined1.4.6/bitmaps/SUN3.xbm
+lib/tkined1.4.6/bitmaps/SUN3Mask.xbm
+lib/tkined1.4.6/bitmaps/SparcStation.xbm
+lib/tkined1.4.6/bitmaps/SparcStationMask.xbm
+lib/tkined1.4.6/bitmaps/Xstation.xbm
+lib/tkined1.4.6/bitmaps/XstationMask.xbm
+lib/tkined1.4.6/bitmaps/action.xbm
+lib/tkined1.4.6/bitmaps/actionMask.xbm
+lib/tkined1.4.6/bitmaps/backbone.xbm
+lib/tkined1.4.6/bitmaps/backboneMask.xbm
+lib/tkined1.4.6/bitmaps/bigBox.xbm
+lib/tkined1.4.6/bitmaps/bigBoxMask.xbm
+lib/tkined1.4.6/bitmaps/bone.xbm
+lib/tkined1.4.6/bitmaps/boneMask.xbm
+lib/tkined1.4.6/bitmaps/bridge.xbm
+lib/tkined1.4.6/bitmaps/bridgeMask.xbm
+lib/tkined1.4.6/bitmaps/bus.xbm
+lib/tkined1.4.6/bitmaps/busMask.xbm
+lib/tkined1.4.6/bitmaps/cisco.xbm
+lib/tkined1.4.6/bitmaps/ciscoMask.xbm
+lib/tkined1.4.6/bitmaps/clock.xbm
+lib/tkined1.4.6/bitmaps/clockMask.xbm
+lib/tkined1.4.6/bitmaps/concent.xbm
+lib/tkined1.4.6/bitmaps/concentMask.xbm
+lib/tkined1.4.6/bitmaps/connector.xbm
+lib/tkined1.4.6/bitmaps/connectorMask.xbm
+lib/tkined1.4.6/bitmaps/corner.xbm
+lib/tkined1.4.6/bitmaps/explode.xbm
+lib/tkined1.4.6/bitmaps/explodeMask.xbm
+lib/tkined1.4.6/bitmaps/graph.xbm
+lib/tkined1.4.6/bitmaps/group.xbm
+lib/tkined1.4.6/bitmaps/groupMask.xbm
+lib/tkined1.4.6/bitmaps/hand.xbm
+lib/tkined1.4.6/bitmaps/handMask.xbm
+lib/tkined1.4.6/bitmaps/hyper.xbm
+lib/tkined1.4.6/bitmaps/hyperMask.xbm
+lib/tkined1.4.6/bitmaps/icon.xbm
+lib/tkined1.4.6/bitmaps/ined.xbm
+lib/tkined1.4.6/bitmaps/inedMask.xbm
+lib/tkined1.4.6/bitmaps/laser.xbm
+lib/tkined1.4.6/bitmaps/laserMask.xbm
+lib/tkined1.4.6/bitmaps/link.xbm
+lib/tkined1.4.6/bitmaps/linkMask.xbm
+lib/tkined1.4.6/bitmaps/locker.xbm
+lib/tkined1.4.6/bitmaps/lockerMask.xbm
+lib/tkined1.4.6/bitmaps/mac.xbm
+lib/tkined1.4.6/bitmaps/macMask.xbm
+lib/tkined1.4.6/bitmaps/machine.xbm
+lib/tkined1.4.6/bitmaps/machineMask.xbm
+lib/tkined1.4.6/bitmaps/modem.xbm
+lib/tkined1.4.6/bitmaps/modemMask.xbm
+lib/tkined1.4.6/bitmaps/mx.xbm
+lib/tkined1.4.6/bitmaps/mxMask.xbm
+lib/tkined1.4.6/bitmaps/network.xbm
+lib/tkined1.4.6/bitmaps/networkMask.xbm
+lib/tkined1.4.6/bitmaps/noicon.xbm
+lib/tkined1.4.6/bitmaps/parsytec.xbm
+lib/tkined1.4.6/bitmaps/parsytecMask.xbm
+lib/tkined1.4.6/bitmaps/pc.xbm
+lib/tkined1.4.6/bitmaps/pcMask.xbm
+lib/tkined1.4.6/bitmaps/phone.xbm
+lib/tkined1.4.6/bitmaps/phoneMask.xbm
+lib/tkined1.4.6/bitmaps/pointer.xbm
+lib/tkined1.4.6/bitmaps/pointerMask.xbm
+lib/tkined1.4.6/bitmaps/printer.xbm
+lib/tkined1.4.6/bitmaps/printerMask.xbm
+lib/tkined1.4.6/bitmaps/pserver.xbm
+lib/tkined1.4.6/bitmaps/pserverMask.xbm
+lib/tkined1.4.6/bitmaps/reference.xbm
+lib/tkined1.4.6/bitmaps/referenceMask.xbm
+lib/tkined1.4.6/bitmaps/ring.xbm
+lib/tkined1.4.6/bitmaps/ringMask.xbm
+lib/tkined1.4.6/bitmaps/router.xbm
+lib/tkined1.4.6/bitmaps/routerMask.xbm
+lib/tkined1.4.6/bitmaps/smallBox.xbm
+lib/tkined1.4.6/bitmaps/smallBoxMask.xbm
+lib/tkined1.4.6/bitmaps/spock.xbm
+lib/tkined1.4.6/bitmaps/switch.xbm
+lib/tkined1.4.6/bitmaps/switchMask.xbm
+lib/tkined1.4.6/bitmaps/text.xbm
+lib/tkined1.4.6/bitmaps/textMask.xbm
+lib/tkined1.4.6/bitmaps/tkined.xbm
+lib/tkined1.4.6/bitmaps/tkinedMask.xbm
+lib/tkined1.4.6/bitmaps/tserver.xbm
+lib/tkined1.4.6/bitmaps/tserverMask.xbm
+lib/tkined1.4.6/bitmaps/unixpc.xbm
+lib/tkined1.4.6/bitmaps/unixpcMask.xbm
+lib/tkined1.4.6/bitmaps/world.xbm
+lib/tkined1.4.6/bitmaps/worldMask.xbm
+lib/tkined1.4.6/bitmaps/zoomin.xbm
+lib/tkined1.4.6/bitmaps/zoomout.xbm
+lib/tkined1.4.6/apps/manager.tcl
+lib/tkined1.4.6/apps/event.tcl
+lib/tkined1.4.6/apps/movie.tcl
+lib/tkined1.4.6/apps/bones.tcl
+lib/tkined1.4.6/apps/ip_trouble.tcl
+lib/tkined1.4.6/apps/ip_monitor.tcl
+lib/tkined1.4.6/apps/ip_layout.tcl
+lib/tkined1.4.6/apps/ip_discover.tcl
+lib/tkined1.4.6/apps/ip_world.tcl
+lib/tkined1.4.6/apps/snmp_trouble.tcl
+lib/tkined1.4.6/apps/snmp_monitor.tcl
+lib/tkined1.4.6/apps/snmp_browser.tcl
+lib/tkined1.4.6/apps/snmp_host.tcl
+lib/tkined1.4.6/apps/snmp_cisco.tcl
+lib/tkined1.4.6/apps/snmp_hp.tcl
+lib/tkined1.4.6/apps/cmip_trouble.tcl
+lib/tkined1.4.6/apps/clock.tcl
+lib/tkined1.4.6/apps/game.tcl
+lib/tkined1.4.6/apps/mibtree
+lib/tkined1.4.6/apps/library.tcl
+lib/tkined1.4.6/apps/README
+lib/tkined1.4.6/apps/world-map.xbm
+lib/tkined1.4.6/apps/usa-map.xbm
+lib/tkined1.4.6/apps/germany-map.xbm
+lib/tkined1.4.6/apps/locations
+lib/tkined1.4.6/apps/tclIndex
+lib/tkined1.4.6.so
+@dirrm lib/tkined1.4.6/library
+@dirrm lib/tkined1.4.6/bitmaps
+@dirrm lib/tkined1.4.6/apps
+@dirrm lib/tkined1.4.6
+@dirrm lib/tnm2.1.6/mibs
+@dirrm lib/tnm2.1.6/library
+@dirrm lib/tnm2.1.6/@FREEBSD_VERSION@
+@dirrm lib/tnm2.1.6/examples
+@dirrm lib/tnm2.1.6/agents
+@dirrm lib/tnm2.1.6
+man/man1/scotty.1@GZIP@
+man/man1/tkined.1@GZIP@
+man/man8/straps.8@GZIP@
+man/man8/ntping.8@GZIP@
+man/mann/dns.n@GZIP@
+man/mann/gdmo.n@GZIP@
+man/mann/http.n@GZIP@
+man/mann/icmp.n@GZIP@
+man/mann/job.n@GZIP@
+man/mann/mib.n@GZIP@
+man/mann/msqltcl.n@GZIP@
+man/mann/netdb.n@GZIP@
+man/mann/rpc.n@GZIP@
+man/mann/snmp.n@GZIP@
+man/mann/sunrpc.n@GZIP@
+man/mann/syslog.n@GZIP@
+man/mann/udp.n@GZIP@
+man/mann/Tnm.n@GZIP@
+man/mann/cmip.n@GZIP@
+man/mann/ined.n@GZIP@
+man/mann/ntp.n@GZIP@
diff --git a/net/scotty/scripts/untrue b/net/scotty/scripts/untrue
new file mode 100755
index 00000000000..c8ea5fb8417
--- /dev/null
+++ b/net/scotty/scripts/untrue
@@ -0,0 +1,5 @@
+#!/bin/sh
+# untrue $1: convert /bin/true -> true
+# also mask CFLAGS
+mv -f $1 $1.true
+sed -e 's./bin/true.true.;s.^CFLAGS.#CFLAGS.' $1.true > $1