Ejemplo n.º 1
0
	def configure(self, properties):
		oldCaptureToFile = self.getCaptureToFile()
		oldCaptureViaNet = self.getCaptureViaNet()
		oldCaptureFilter = self.getCaptureFilter()
		#FIXME: validate filter
		if "capture_to_file" in properties:
			self.setCaptureToFile(properties["capture_to_file"])
		if "capture_filter" in properties:
			self.setCaptureFilter(properties["capture_filter"])
		if "capture_via_net" in properties:
			self.setCaptureViaNet(properties["capture_via_net"])
		if "delay" in properties:
			self.setDelay(properties["delay"])
		if "bandwidth" in properties:
			self.setBandwidth(properties["bandwidth"])
		if "lossratio" in properties:
			self.setLossRatio(properties["lossratio"])
		Connection.configure(self, properties)
		if self.connector.state == State.STARTED:
			self._configLink()
			if oldCaptureToFile and (not self.getCaptureToFile() or self.getCaptureFilter() != oldCaptureFilter):
				self._stopCaptureToFile()
			if oldCaptureViaNet and (not self.getCaptureViaNet() or self.getCaptureFilter() != oldCaptureFilter):
				self._stopCaptureViaNet()
			if self.getCaptureToFile() and (not oldCaptureToFile or self.getCaptureFilter() != oldCaptureFilter):
				self._startCaptureToFile()
			if self.getCaptureViaNet() and (not oldCaptureViaNet or self.getCaptureFilter() != oldCaptureFilter):
				self._startCaptureViaNet()
Ejemplo n.º 2
0
	def getStartTasks(self):
		taskset = Connection.getStartTasks(self)
		create_pipe = tasks.Task("create-pipe", self._createPipe)
		configure_link = tasks.Task("configure-link", self._configLink, after=create_pipe)
		start_capture = tasks.Task("start-capture", self._startCapture)
		taskset.add([create_pipe, configure_link, start_capture])
		return taskset
Ejemplo n.º 3
0
	def getStopTasks(self):
		taskset = Connection.getStopTasks(self)
		unconfigure_link = tasks.Task("unconfigure-link", self._unconfigLink)
		unassign_ifb = tasks.Task("unassign-ifb", self._unassignIfb, after=unconfigure_link)
		stop_capture = tasks.Task("stop-capture", self._stopCapture)
		taskset.add([unconfigure_link, unassign_ifb, stop_capture])
		return taskset
Ejemplo n.º 4
0
	def getStartTasks(self):
		taskset = Connection.getStartTasks(self)
		assign_ifb = tasks.Task("assign-ifb", self._assignIfb)
		configure_link = tasks.Task("configure-link", self._configLink, after=assign_ifb)
		start_capture = tasks.Task("start-capture", self._startCapture)
		taskset.add([assign_ifb, configure_link, start_capture])
		return taskset
Ejemplo n.º 5
0
	def getIdUsage(self, host):
		ids = Connection.getIdUsage(self, host)
		capture_port = self.getAttribute("capture_port", None)
		if capture_port:
			ids.update(port=set((capture_port,)))
		ifb_id = self.getAttribute("ifb_id", None)
		if not ifb_id is None:
			ids.update(ifb=set((ifb_id,)))
		return ids
Ejemplo n.º 6
0
	def connectionsAdd(self, iface_name, properties): #@UnusedVariable, pylint: disable-msg=W0613
		iface = self.topology.interfacesGet(iface_name)
		fault.check(iface.device.state != State.STARTED, "Cannot add connections to running device: %s -> %s", (iface_name, self.name) )
		con = Connection ()
		con.connector = self
		con.interface = iface
		con.init()
		con.save()
Ejemplo n.º 7
0
 def configure(self, properties):
     oldCaptureToFile = self.getCaptureToFile()
     oldCaptureViaNet = self.getCaptureViaNet()
     oldCaptureFilter = self.getCaptureFilter()
     if "capture_filter" in properties:
         filter = properties["capture_filter"]
         host = self.getHost()
         if host:
             fault.check(tcpdump._checkSyntax(host, filter=filter), "Syntax error in filter")
         self.setCaptureFilter(properties["capture_filter"])
     if "capture_to_file" in properties:
         self.setCaptureToFile(properties["capture_to_file"])
     if "capture_via_net" in properties:
         self.setCaptureViaNet(properties["capture_via_net"])
     for p in netemProperties:
         if p in properties:
             val = properties[p]
             val = netemValueConvert[p](val)
             fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p, val))
             self.setAttribute(p, val)
         if p + "_to" in properties:
             val = properties[p + "_to"]
             val = netemValueConvert[p](val)
             fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p + "_to", val))
             self.setAttribute(p + "_to", val)
         if p + "_from" in properties:
             val = properties[p + "_from"]
             val = netemValueConvert[p](val)
             fault.check(netemValuesChecks[p](val), "Invalid value for %s: %s", (p + "_from", val))
             self.setAttribute(p + "_from", val)
     Connection.configure(self, properties)
     if self.connector.state == State.STARTED:
         self._configLink()
         if oldCaptureToFile and (not self.getCaptureToFile() or self.getCaptureFilter() != oldCaptureFilter):
             self._stopCaptureToFile()
         if oldCaptureViaNet and (not self.getCaptureViaNet() or self.getCaptureFilter() != oldCaptureFilter):
             self._stopCaptureViaNet()
         if self.getCaptureToFile() and (not oldCaptureToFile or self.getCaptureFilter() != oldCaptureFilter):
             self._startCaptureToFile()
         if self.getCaptureViaNet() and (not oldCaptureViaNet or self.getCaptureFilter() != oldCaptureFilter):
             self._startCaptureViaNet()
Ejemplo n.º 8
0
 def getCapabilities(self, user):
     capabilities = Connection.getCapabilities(self, user)
     isUser = self.connector.topology.checkAccess(Permission.ROLE_USER, user)
     capabilities["configure"].update({"capture_filter": True, "capture_to_file": True, "capture_via_net": True})
     for p in netemProperties:
         capabilities["configure"][p] = True
         capabilities["configure"][p + "_to"] = True
         capabilities["configure"][p + "_from"] = True
     capabilities["action"].update(
         {"download_capture": isUser and not self.connector.state == State.CREATED and self.getCaptureToFile()}
     )
     capabilities["other"] = {
         "live_capture": isUser and self.connector.state == State.STARTED and self.getCaptureViaNet()
     }
     return capabilities
Ejemplo n.º 9
0
	def getCapabilities(self, user):
		capabilities = Connection.getCapabilities(self, user)
		isUser = self.connector.topology.checkAccess(Permission.ROLE_USER, user)
		capabilities["configure"].update({
			"capture_filter": True,
			"capture_to_file": True,
			"capture_via_net": True,
			"delay": True,
			"bandwidth": True,
			"lossratio": True,
		})
		capabilities["action"].update({
			"download_capture": isUser and not self.connector.state == State.CREATED and self.getCaptureToFile()
		})
		capabilities["other"] = {
			"live_capture": isUser and self.connector.state == State.STARTED and self.getCaptureViaNet()
		}
		return capabilities
Ejemplo n.º 10
0
	def toDict(self, auth):
		res = Connection.toDict(self, auth)
		res["attrs"].update(self.getAttributes())
		if self.connector.state == State.STARTED and self.getCaptureViaNet():
			res["attrs"].update(capture_host=self.getHost().name)
		return res
Ejemplo n.º 11
0
	def getDestroyTasks(self):
		taskset = Connection.getDestroyTasks(self)
		taskset.add(tasks.Task("remove-capture-dir", self._removeCaptureDir))
		return taskset
Ejemplo n.º 12
0
	def getPrepareTasks(self):
		return Connection.getPrepareTasks(self)
Ejemplo n.º 13
0
	def getStopTasks(self):
		taskset = Connection.getStopTasks(self)
		delete_pipes = tasks.Task("delete-pipes", self._deletePipes)
		stop_capture = tasks.Task("stop-capture", self._stopCapture)
		taskset.add([delete_pipes, stop_capture])
		return taskset
Ejemplo n.º 14
0
 def getStopTasks(self):
     taskset = Connection.getStopTasks(self)
     taskset.add(tasks.Task("stop", self._stop))
     return taskset
Ejemplo n.º 15
0
 def getStartTasks(self):
     taskset = Connection.getStartTasks(self)
     start_task = tasks.Task("start", self._start)
     taskset.add([start_task])
     return taskset