Index: trunk/assign.html
===================================================================
--- trunk/assign.html	(revision 30)
+++ trunk/assign.html	(revision 31)
@@ -85,6 +85,8 @@
 </select>
 </td>
+</tr><tr class="color2">
+<td>Route/allocate from this master:&nbsp;</td><td>$$MASTERLIST$$</td>
 </tr><tr class="color1">
-<td valign="top">Description/Name:&nbsp</td><td><input name="desc" size=40></td>
+<td>Description/Name:&nbsp;</td><td><input name="desc" size=40></td>
 </tr><tr class="color2">
 <td>Notes:&nbsp;</td><td><textarea name="notes" rows="3" cols="40"></textarea></td>
Index: trunk/cgi-bin/main.cgi
===================================================================
--- trunk/cgi-bin/main.cgi	(revision 30)
+++ trunk/cgi-bin/main.cgi	(revision 31)
@@ -782,4 +782,10 @@
 	or croak "Could not open assign.html: $!";
     $html = join('',<HTML>);
+    my $masterlist = "<select name=allocfrom><option selected>-</option>\n";
+    foreach my $master (@masterblocks) {
+      $masterlist .= "<option>$master</option>\n";
+    }
+    $masterlist .= "</select>\n";
+    $html =~ s|\$\$MASTERLIST\$\$|$masterlist|g;
     close HTML;
   }
@@ -857,6 +863,11 @@
       my $failmsg;
       if ($webvar{alloctype} eq 'rr') {
-	$sql = "select * from freeblocks where maskbits<=$webvar{maskbits} and routed='n'".
-	  " order by maskbits desc";
+        if ($webvar{allocfrom} ne '-') {
+	  $sql = "select * from freeblocks where maskbits<=$webvar{maskbits} and routed='n'".
+		" and cidr <<= '$webvar{allocfrom}' order by maskbits desc";
+	} else {
+	  $sql = "select * from freeblocks where maskbits<=$webvar{maskbits} and routed='n'".
+		" order by maskbits desc";
+	}
 	$failmsg = "No suitable free block found.<br>\nWe do not have a free".
 	  " routeable block of that size.<br>\nYou will have to either route".
@@ -876,6 +887,11 @@
 	    " chose a smaller blocksize.";
 	}
-	$sql = "select * from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
-	  " and routed='y' order by cidr,maskbits desc";
+	if ($webvar{allocfrom} ne '-') {
+	  $sql = "select * from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
+		" and cidr <<= '$webvar{allocfrom}' and routed='y' order by cidr,maskbits desc";
+	} else {
+	  $sql = "select * from freeblocks where city='$city' and maskbits<=$webvar{maskbits}".
+		" and routed='y' order by cidr,maskbits desc";
+	}
       }
       $sth = $ip_dbh->prepare($sql);
