Index: trunk/exodus/wllogic.py
===================================================================
--- trunk/exodus/wllogic.py	(revision 6479)
+++ trunk/exodus/wllogic.py	(revision 6480)
@@ -1,5 +1,5 @@
 # (c) Roland van Laar
 
-from exodus.models import Node, Interface, WIFI_MODE_CHOICES
+from exodus.models import Node, WIFI_MODE_CHOICES
 from exodus.settings import MASTERIP_NETMASK, WIRELESS, COMPAT
 from math import ceil, log
@@ -10,10 +10,23 @@
 
 def new_ssid(nic):
-	"""Generates a new ssid name for a new wifi NIC"""
+    """Generates a new ssid name for a new wifi NIC.
+    
+    Don't use this for an accesspoint because it will generate a new
+    ssid.
+    """
 
-	# nic is used instead of nic.iface, because string nic is passed on, 
-	# instead of object nic.
+    node = nic.node.name 
+    network = nic.node.network.name
 
-	return "%s.%s.%s" % (nic.iface, nic.node.name, nic.node.network.name)
+    if nic.accesspoint: 
+        ssid_list = set([i.ssid for i in \
+                nic.node.interface_set.filter(accesspoint=True)])
+        ssid = "ap%%d.%s.%s" % ( node, network) 
+        free_list = ( ssid % (i) for i in range(len(ssid_list)+1) if not 
+                (ssid %(i) in ssid_list))
+        return free_list.next()
+
+    else:
+	    return "il-%s.%s.%s.%s" % (nic.direction, nic.iface, node, network)
 
 #
@@ -59,8 +72,4 @@
 	return(show_addr(broadcast(address,netmask)))
 
-#XXX: free_master_ip/add_interlink_ip should be more general by writing a function
-#     which finds a range based on a given range, taken ip/netmask and 
-#     requested subnet
-
 def free_master_ip(city_network, netmask = MASTERIP_NETMASK):
 	"""Calculates the next free masterip."""
@@ -83,68 +92,4 @@
     # go from network address to a valid ip.
 	return show_addr(i+1)
-
-#
-# XXX: Needs merging with free_interlink_ip as interface could have both AP, 
-# interlink defined on one link
-#def free_publicap_ip(masterLink, netmask):
-#	taken = {}
-#
-#	for interface in Interface.objects.filter(link=masterLink):
-#		#Grr, needs all interfaces which are master requires a bit of a hack
-#		addr = network(interface.ip, interface.netmask)
-#		addrMax = broadcast(interface.ip, interface.netmask)
-#		while addr < addrMax:
-#			taken[addr] = 1
-#			addr = addr + 1
-#
-#	for accessPoint in PublicAP.objects.filter(iface=masterLink):
-#		#Grr, needs all interfaces which are master requires a bit of a hack
-#		addr = network(accessPoint.ip, accessPoint.netmask)
-#		addrMax = broadcast(accessPoint.ip, accessPoint.netmask)
-#		while addr < addrMax:
-#			taken[addr] = 1
-#			addr = addr + 1
-#
-#	#Should be dynamic based on the number of hosts in here
-#	size = netmask
-#	numaddrs = 1 << (32 - size)
-#	i = network(masterLink.ip,masterLink.netmask)
-#	while taken.has_key(i):
-#		i = i + numaddrs
-#	
-#	return show_addr(i)
-#
-def free_interlink_ip(masterLink):
-	taken = {}
-	
-	for interface in Interface.objects.filter(node=masterLink.node):
-		#Grr, needs all interfaces which are master requires a bit of a hack
-		addr = network(interface.ip, interface.netmask)
-		taken[addr] = 1
-
-	#Should be dynamic based on the number of hosts in here
-	size = masterLink.netmask
-	numaddrs = 1 << (32 - size)
-	i = network(masterLink.node.masterip,24) + 4
-	while taken.has_key(i):
-		i = i + numaddrs
-	
-	return show_addr(i)
-
-def add_interlink_ip(master_link):
-	taken = {}
-	
-	for interface in Interface.objects.filter(link=master_link):
-		#Grr, needs all interfaces which are master requires a bit of a hack
-		addr = parse_addr(interface.ip)
-		taken[addr] = 1
-
-	size = 32
-	numaddrs = 1 << (32 - size)
-	i = network(master_link.ip, master_link.netmask) + 1
-	while taken.has_key(i):
-		i = i + 1
-	
-	return show_addr(i)
 
 def link_is_wireless(iface):
