def determineTargets(targetList, alphas, deeperList): totalTraffic = long(sumTraffic(targetList) / numNonZero(targetList)) newTargetList = [] oldTargetList = [] Globals.ASSIGNLOG.write('Threshold: ' + str(totalTraffic * Globals.MINTGTTHRESH) + " < x < " + str(totalTraffic * Globals.MAXTGTTHRESH) + '\n') for i in range(0, len(targetList)): if targetList[i]['traffic'] > (totalTraffic * Globals.MAXTGTTHRESH) or Alphas.sumAllAlphaAssign(alphas) < Alphas.sumAllAlphaTarget(alphas): Globals.ASSIGNLOG.write('\t' + str(targetList[i]['ip']) + " Beyond Threshold " + str(targetList[i]['traffic']) + '\n') # Beyond Threshold: Need more rules childList = IPRules.findChildRules(deeperList, targetList[i]['ip'], targetList[i]['wild']) for j, child in enumerate(childList): newTargetList.append(child) if childList != []: oldTargetList.append(targetList[i]) elif targetList[i]['traffic'] < (totalTraffic * Globals.MINTGTTHRESH): Globals.ASSIGNLOG.write('\t' + str(targetList[i]['ip']) + " Under Threshold " + str(targetList[i]['traffic']) + '\n') # Below Theshold: Reduce rules (siblingIP, siblingWild) = IPRules.findSiblingRule(targetList[i]) siblingRule = IPRules.findMatch(targetList, siblingIP, siblingWild) if siblingRule != []: if siblingRule[0]['traffic'] <= (totalTraffic * Globals.MINTGTTHRESH) and \ targetList.index(siblingRule[0]) < i: parentRule = IPRules.getParentRule(siblingRule[0]) Globals.ASSIGNLOG.write('\t' + str(parentRule['ip']) + '/' + str(parentRule['wild']) + ' combined\n') newTargetList.append(parentRule) oldTargetList.append(targetList[i]) oldTargetList.append(siblingRule[0]) else: Globals.ASSIGNLOG.write('\t' + str(targetList[i]['ip']) + " Fine Threshold " + str(targetList[i]['traffic']) + '\n') if targetList[i]['replica'] == -1: newTargetList.append(targetList[i]) oldTargetList.append(targetList[i]) return (oldTargetList, newTargetList)