Index: route.cc
===================================================================
RCS file: /usr/src/mash/repository/vint/ns-2/route.cc,v
retrieving revision 1.23
diff -u -r1.23 route.cc
--- route.cc	1998/08/28 23:08:36	1.23
+++ route.cc	1998/09/28 18:32:45
@@ -177,7 +177,8 @@
 // 				dst_addr[i] = 0;
 // 			}
 			str2address(argv, src_addr, dst_addr);
-			for (i=0; i < HIER_LEVEL; i++)
+			// for (i=0; i < HIER_LEVEL; i++)
+			for (i=0; i < level_; i++)
 				if (src_addr[i]<=0 || dst_addr[i]<=0){
 					tcl.result ("negative node number");
 					return (TCL_ERROR);
@@ -198,7 +199,8 @@
 			str2address(argv, src_addr, dst_addr);
 			// assuming node-node addresses (instead of node-cluster or node-domain pair) 
 			// are sent for hier_reset  
-			for (i=0; i < HIER_LEVEL; i++)
+			// for (i=0; i < HIER_LEVEL; i++)
+			for (i=0; i < level_; i++)
 				if (src_addr[i]<=0 || dst_addr[i]<=0){
 					tcl.result ("negative node number");
 					return (TCL_ERROR);
@@ -269,7 +271,8 @@
 	ns_strtok(asrc, src);
 	ns_strtok(adst, dst);
 
-	for (i=0; i < HIER_LEVEL; i++)
+	// for (i=0; i < HIER_LEVEL; i++)
+	for (i=0; i < level_; i++)
 		if (src[i] <= 0) {
 			tcl.result("negative src node number");
 			return TCL_ERROR;
Index: ./tcl/lib/ns-route.tcl
===================================================================
RCS file: /usr/src/mash/repository/vint/ns-2/tcl/lib/ns-route.tcl,v
retrieving revision 1.13
diff -u -r1.13 ns-route.tcl
--- ns-route.tcl	1998/09/21 21:07:34	1.13
+++ ns-route.tcl	1998/09/28 18:33:45
@@ -51,14 +51,14 @@
 
 Simulator instproc compute-routes {} {
 	
-        #
-	# call hierarchical routing, if applicable
-	#
-	if [Simulator set EnableHierRt_] {
-		$self compute-hier-routes 
-	} else {
-		$self compute-flat-routes
-	}
+    #
+    # call hierarchical routing, if applicable
+    #
+    if [Simulator set EnableHierRt_] {
+	$self compute-hier-routes 
+    } else {
+	$self compute-flat-routes
+    }
 }
 
 Simulator instproc compute-flat-routes {} {
@@ -168,11 +168,11 @@
 	set ns [Simulator instance]
 	set node [$ns get-node-by-id $nodeid]
 
-	if [Simulator set EnableHierRt_] {
-		set dest [$ns get-node-by-id $destid]
-		set nh [$self hier-lookup [$node node-addr] [$dest node-addr]]
-		return [$ns get-node-id-by-addr $nh]
-	}
+    if [Simulator set EnableHierRt_] {
+	set dest [$ns get-node-by-id $destid]
+	set nh [$self hier-lookup [$node node-addr] [$dest node-addr]]
+	return [$ns get-node-id-by-addr $nh]
+    }
 	set rtobj [$node rtObject?]
 	if { $rtobj != "" } {
 		$rtobj lookup [$ns get-node-by-id $destid]
@@ -220,41 +220,45 @@
 # Hierarchical routing support
 #
 Simulator instproc hier-topo {rl} {
-	#
+    #
 	# if topo info not found, use default values
-	#
-	AddrParams instvar domain_num_ cluster_num_ nodes_num_ hlevel_
+    #
+    AddrParams instvar domain_num_ cluster_num_ nodes_num_ hlevel_
+    ### this is bad hack..should be removed when changed to n-levels
+    
+    if ![info exists cluster_num_] {
 	if {$hlevel_ > 1} {
-		### set default value of clusters/domain 
-		if ![info exists cluster_num_] {
-			set def [AddrParams set def_clusters]
-			puts "Default value for cluster_num set to $def\n"
-			for {set i 0} {$i < $domain_num_} {incr i} {
-				lappend clusters $def
-			}
-			AddrParams set cluster_num_ $clusters
-		}
-		### bad hack..should be removed when changed to n-levels
-		if {$hlevel_ > 2} {
-			set total_node 0
-			### set default value of nodes/cluster
-			if ![info exists nodes_num_ ] {
-				set def [AddrParams set def_nodes]
-				puts "Default value for nodes_num set to $def\n"
-				for {set i 0} {$i < $domain_num_} {incr i} {
-					set total_node [expr $total_node + \
-							    [lindex $clusters $i]]
-				}
-				for {set i 0} {$i < $total_node} {incr i} {
-					lappend nodes $def
-				}
-				AddrParams set nodes_num_ $nodes
-			}
-		}
-	}
-	eval $rl send-num-of-domains $domain_num_
-	eval $rl send-num-of-clusters $cluster_num_
-	eval $rl send-num-of-nodes $nodes_num_
+	    ### set default value of clusters/domain 
+	    set def [AddrParams set def_clusters]
+	    puts "Default value for cluster_num set to $def\n"
+	    for {set i 0} {$i < $domain_num_} {incr i} {
+		lappend clusters $def
+	    }
+	} else {
+	    ### how did we reach here instead of flat routing?
+	    puts stderr "hierarchy level = 1; should use flat-rtg instead of hier-rtg" 
+	    exit 1
+	}
+	AddrParams set cluster_num_ $clusters
+    }
+
+    ### set default value of nodes/cluster
+    if ![info exists nodes_num_ ] {
+	set total_node 0
+	set def [AddrParams set def_nodes]
+	puts "Default value for nodes_num set to $def\n"
+	for {set i 0} {$i < $domain_num_} {incr i} {
+	    set total_node [expr $total_node + \
+				[lindex $clusters $i]]
+	}
+	for {set i 0} {$i < $total_node} {incr i} {
+	    lappend nodes $def
+	}
+	AddrParams set nodes_num_ $nodes
+    }
+    eval $rl send-num-of-domains $domain_num_
+    eval $rl send-num-of-clusters $cluster_num_
+    eval $rl send-num-of-nodes $nodes_num_
 }
 
 
Index: ./tcl/rtglib/route-proto.tcl
===================================================================
RCS file: /usr/src/mash/repository/vint/ns-2/tcl/rtglib/route-proto.tcl,v
retrieving revision 1.22
diff -u -r1.22 route-proto.tcl
--- route-proto.tcl	1998/07/06 05:29:46	1.22
+++ route-proto.tcl	1998/09/28 18:35:12
@@ -370,13 +370,9 @@
     # The Simulator knows the entire topology.
     # Hence, the current compute-routes method in the Simulator class is
     # well suited.  We use it as is.
-
-    # check if hierarchical routing is enabled.
-    if [Simulator set EnableHierRt_] {
-	[Simulator instance] compute-hier-routes
-    } else {
-	[Simulator instance] compute-routes
-    }
+    
+    [Simulator instance] compute-routes
+    
 }
 
 #
@@ -385,19 +381,12 @@
 Class Agent/rtProto/Session -superclass Agent/rtProto
 
 Agent/rtProto/Session proc init-all args {
-    if [Simulator set EnableHierRt_] {
-	[Simulator instance] compute-hier-routes
-    } else {
-	[Simulator instance] compute-routes
-    }
+    [Simulator instance] compute-routes
 }
 
 Agent/rtProto/Session proc compute-all {} {
-    if [Simulator set EnableHierRt_] {
-	[Simulator instance] compute-hier-routes
-    } else {
-	[Simulator instance] compute-routes
-    }
+    [Simulator instance] compute-routes
+
 }
 
 #
Index: ./tcl/lib/ns-address.tcl
===================================================================
RCS file: /usr/src/mash/repository/vint/ns-2/tcl/lib/ns-address.tcl,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- ns-address.tcl	1998/08/28 23:08:37	1.11
+++ ns-address.tcl	1998/09/24 22:07:00	1.12
@@ -196,10 +196,12 @@
 
 Simulator instproc set-hieraddress {hlevel args} {
 	set a [$self get-AllocAddrBits "new"]
-	$a set size_ [AllocAddrBits set MAXADDRSIZE_]
-	if ![Simulator set EnableHierRt_] {
-		Simulator set EnableHierRt_ 1
-		Simulator set node_factory_ HierNode
+    $a set size_ [AllocAddrBits set MAXADDRSIZE_]
+    if { ![Simulator set EnableHierRt_] && $hlevel > 1} {
+	### By default, setting hierarchical addressing also turns on hier rtg, 
+	### provided the level is greater than 1
+	Simulator set EnableHierRt_ 1
+	Simulator set node_factory_ HierNode
 	}
 	if [Simulator set EnableMcast_] {
 		$a set-mcastbits 1
