diff --git a/daemon/core/api/grpc/grpcutils.py b/daemon/core/api/grpc/grpcutils.py index 9a944bbe..c9b76b73 100644 --- a/daemon/core/api/grpc/grpcutils.py +++ b/daemon/core/api/grpc/grpcutils.py @@ -94,7 +94,7 @@ def add_link_data( if options_data: options.delay = options_data.delay options.bandwidth = options_data.bandwidth - options.per = options_data.per + options.loss = options_data.loss options.dup = options_data.dup options.jitter = options_data.jitter options.mer = options_data.mer @@ -343,7 +343,7 @@ def convert_link(link_data: LinkData) -> core_pb2.Link: key=link_data.key, mburst=link_data.mburst, mer=link_data.mer, - per=link_data.per, + loss=link_data.loss, bandwidth=link_data.bandwidth, burst=link_data.burst, delay=link_data.delay, diff --git a/daemon/core/api/grpc/server.py b/daemon/core/api/grpc/server.py index ca9e0133..3374df2e 100644 --- a/daemon/core/api/grpc/server.py +++ b/daemon/core/api/grpc/server.py @@ -881,21 +881,20 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer): interface1_id = request.interface1_id interface2_id = request.interface2_id options_data = request.options - link_options = LinkOptions() - link_options.delay = options_data.delay - link_options.bandwidth = options_data.bandwidth - link_options.per = options_data.per - link_options.dup = options_data.dup - link_options.jitter = options_data.jitter - link_options.mer = options_data.mer - link_options.burst = options_data.burst - link_options.mburst = options_data.mburst - link_options.unidirectional = options_data.unidirectional - link_options.key = options_data.key - link_options.opaque = options_data.opaque - session.update_link( - node1_id, node2_id, interface1_id, interface2_id, link_options + options = LinkOptions( + delay=options_data.delay, + bandwidth=options_data.bandwidth, + loss=options_data.loss, + dup=options_data.dup, + jitter=options_data.jitter, + mer=options_data.mer, + burst=options_data.burst, + mburst=options_data.mburst, + unidirectional=options_data.unidirectional, + key=options_data.key, + opaque=options_data.opaque, ) + session.update_link(node1_id, node2_id, interface1_id, interface2_id, options) return core_pb2.EditLinkResponse(result=True) def DeleteLink( diff --git a/daemon/core/api/tlv/coreapi.py b/daemon/core/api/tlv/coreapi.py index df60e374..088a7631 100644 --- a/daemon/core/api/tlv/coreapi.py +++ b/daemon/core/api/tlv/coreapi.py @@ -495,7 +495,7 @@ class CoreLinkTlv(CoreTlv): LinkTlvs.N2_NUMBER.value: CoreTlvDataUint32, LinkTlvs.DELAY.value: CoreTlvDataUint64, LinkTlvs.BANDWIDTH.value: CoreTlvDataUint64, - LinkTlvs.PER.value: CoreTlvDataString, + LinkTlvs.LOSS.value: CoreTlvDataString, LinkTlvs.DUP.value: CoreTlvDataString, LinkTlvs.JITTER.value: CoreTlvDataUint64, LinkTlvs.MER.value: CoreTlvDataUint16, diff --git a/daemon/core/api/tlv/corehandlers.py b/daemon/core/api/tlv/corehandlers.py index 33222cf3..562f8c89 100644 --- a/daemon/core/api/tlv/corehandlers.py +++ b/daemon/core/api/tlv/corehandlers.py @@ -336,9 +336,9 @@ class CoreHandler(socketserver.BaseRequestHandler): :return: nothing """ logging.debug("handling broadcast link: %s", link_data) - per = "" - if link_data.per is not None: - per = str(link_data.per) + loss = "" + if link_data.loss is not None: + loss = str(link_data.loss) dup = "" if link_data.dup is not None: dup = str(link_data.dup) @@ -350,7 +350,7 @@ class CoreHandler(socketserver.BaseRequestHandler): (LinkTlvs.N2_NUMBER, link_data.node2_id), (LinkTlvs.DELAY, link_data.delay), (LinkTlvs.BANDWIDTH, link_data.bandwidth), - (LinkTlvs.PER, per), + (LinkTlvs.LOSS, loss), (LinkTlvs.DUP, dup), (LinkTlvs.JITTER, link_data.jitter), (LinkTlvs.MER, link_data.mer), @@ -775,7 +775,7 @@ class CoreHandler(socketserver.BaseRequestHandler): options.delay = message.get_tlv(LinkTlvs.DELAY.value) options.bandwidth = message.get_tlv(LinkTlvs.BANDWIDTH.value) options.session = message.get_tlv(LinkTlvs.SESSION.value) - options.per = message.get_tlv(LinkTlvs.PER.value) + options.loss = message.get_tlv(LinkTlvs.LOSS.value) options.dup = message.get_tlv(LinkTlvs.DUP.value) options.jitter = message.get_tlv(LinkTlvs.JITTER.value) options.mer = message.get_tlv(LinkTlvs.MER.value) @@ -787,6 +787,7 @@ class CoreHandler(socketserver.BaseRequestHandler): options.network_id = message.get_tlv(LinkTlvs.NETWORK_ID.value) options.key = message.get_tlv(LinkTlvs.KEY.value) options.opaque = message.get_tlv(LinkTlvs.OPAQUE.value) + if message.flags & MessageFlags.ADD.value: self.session.add_link( node1_id, node2_id, interface1_data, interface2_data, options diff --git a/daemon/core/api/tlv/enumerations.py b/daemon/core/api/tlv/enumerations.py index ed06bbe7..0efb7c99 100644 --- a/daemon/core/api/tlv/enumerations.py +++ b/daemon/core/api/tlv/enumerations.py @@ -59,7 +59,7 @@ class LinkTlvs(Enum): N2_NUMBER = 0x02 DELAY = 0x03 BANDWIDTH = 0x04 - PER = 0x05 + LOSS = 0x05 DUP = 0x06 JITTER = 0x07 MER = 0x08 diff --git a/daemon/core/emane/commeffect.py b/daemon/core/emane/commeffect.py index 71acb199..21252b6f 100644 --- a/daemon/core/emane/commeffect.py +++ b/daemon/core/emane/commeffect.py @@ -141,7 +141,7 @@ class EmaneCommEffectModel(emanemodel.EmaneModel): nemid, latency=convert_none(options.delay), jitter=convert_none(options.jitter), - loss=convert_none(options.per), + loss=convert_none(options.loss), duplicate=convert_none(options.dup), unicast=int(convert_none(options.bandwidth)), broadcast=int(convert_none(options.bandwidth)), diff --git a/daemon/core/emulator/data.py b/daemon/core/emulator/data.py index d3283974..819716e3 100644 --- a/daemon/core/emulator/data.py +++ b/daemon/core/emulator/data.py @@ -101,7 +101,7 @@ class LinkData: node2_id: int = None delay: float = None bandwidth: float = None - per: float = None + loss: float = None dup: float = None jitter: float = None mer: float = None diff --git a/daemon/core/emulator/emudata.py b/daemon/core/emulator/emudata.py index 24b9495a..2aecdace 100644 --- a/daemon/core/emulator/emudata.py +++ b/daemon/core/emulator/emudata.py @@ -68,7 +68,7 @@ class LinkOptions: session: int = None delay: int = None bandwidth: int = None - per: float = None + loss: float = None dup: int = None jitter: int = None mer: int = None diff --git a/daemon/core/gui/dialogs/linkconfig.py b/daemon/core/gui/dialogs/linkconfig.py index 1c20e2e1..9c3fc987 100644 --- a/daemon/core/gui/dialogs/linkconfig.py +++ b/daemon/core/gui/dialogs/linkconfig.py @@ -223,7 +223,7 @@ class LinkConfigurationDialog(Dialog): duplicate = get_int(self.duplicate) loss = get_float(self.loss) options = core_pb2.LinkOptions( - bandwidth=bandwidth, jitter=jitter, delay=delay, dup=duplicate, per=loss + bandwidth=bandwidth, jitter=jitter, delay=delay, dup=duplicate, loss=loss ) link.options.CopyFrom(options) @@ -252,7 +252,7 @@ class LinkConfigurationDialog(Dialog): jitter=down_jitter, delay=down_delay, dup=down_duplicate, - per=down_loss, + loss=down_loss, unidirectional=True, ) self.edge.asymmetric_link = core_pb2.Link( @@ -317,12 +317,12 @@ class LinkConfigurationDialog(Dialog): self.bandwidth.set(str(link.options.bandwidth)) self.jitter.set(str(link.options.jitter)) self.duplicate.set(str(link.options.dup)) - self.loss.set(str(link.options.per)) + self.loss.set(str(link.options.loss)) self.delay.set(str(link.options.delay)) if not self.is_symmetric: asym_link = self.edge.asymmetric_link self.down_bandwidth.set(str(asym_link.options.bandwidth)) self.down_jitter.set(str(asym_link.options.jitter)) self.down_duplicate.set(str(asym_link.options.dup)) - self.down_loss.set(str(asym_link.options.per)) + self.down_loss.set(str(asym_link.options.loss)) self.down_delay.set(str(asym_link.options.delay)) diff --git a/daemon/core/location/mobility.py b/daemon/core/location/mobility.py index e9efa16b..43996ba3 100644 --- a/daemon/core/location/mobility.py +++ b/daemon/core/location/mobility.py @@ -338,7 +338,7 @@ class BasicRangeModel(WirelessModel): options = LinkOptions( bandwidth=self.bw, delay=self.delay, - per=self.loss, + loss=self.loss, jitter=self.jitter, ) self.wlan.linkconfig(netif, options) diff --git a/daemon/core/nodes/base.py b/daemon/core/nodes/base.py index 66ea41a0..cd77f857 100644 --- a/daemon/core/nodes/base.py +++ b/daemon/core/nodes/base.py @@ -1134,7 +1134,7 @@ class CoreNetworkBase(NodeBase): bandwidth=netif.getparam("bw"), dup=netif.getparam("duplicate"), jitter=netif.getparam("jitter"), - per=netif.getparam("loss"), + loss=netif.getparam("loss"), ) all_links.append(link_data) @@ -1153,7 +1153,7 @@ class CoreNetworkBase(NodeBase): bandwidth=netif.getparam("bw"), dup=netif.getparam("duplicate"), jitter=netif.getparam("jitter"), - per=netif.getparam("loss"), + loss=netif.getparam("loss"), ) netif.swapparams("_params_up") diff --git a/daemon/core/nodes/network.py b/daemon/core/nodes/network.py index 235b43f2..8ac1939e 100644 --- a/daemon/core/nodes/network.py +++ b/daemon/core/nodes/network.py @@ -482,7 +482,7 @@ class CoreNetwork(CoreNetworkBase): netem = "netem" delay = options.delay changed = max(changed, netif.setparam("delay", delay)) - loss = options.per + loss = options.loss if loss is not None: loss = float(loss) changed = max(changed, netif.setparam("loss", loss)) @@ -939,7 +939,7 @@ class PtpNet(CoreNetwork): unidirectional=unidirectional, delay=if1.getparam("delay"), bandwidth=if1.getparam("bw"), - per=if1.getparam("loss"), + loss=if1.getparam("loss"), dup=if1.getparam("duplicate"), jitter=if1.getparam("jitter"), interface1_id=if1.node.getifindex(if1), @@ -970,7 +970,7 @@ class PtpNet(CoreNetwork): node2_id=if1.node.id, delay=if2.getparam("delay"), bandwidth=if2.getparam("bw"), - per=if2.getparam("loss"), + loss=if2.getparam("loss"), dup=if2.getparam("duplicate"), jitter=if2.getparam("jitter"), unidirectional=1, diff --git a/daemon/core/xml/corexml.py b/daemon/core/xml/corexml.py index 45e8d9c5..831ffae6 100644 --- a/daemon/core/xml/corexml.py +++ b/daemon/core/xml/corexml.py @@ -569,7 +569,7 @@ class CoreXmlWriter: options = etree.Element("options") add_attribute(options, "delay", link_data.delay) add_attribute(options, "bandwidth", link_data.bandwidth) - add_attribute(options, "per", link_data.per) + add_attribute(options, "loss", link_data.loss) add_attribute(options, "dup", link_data.dup) add_attribute(options, "jitter", link_data.jitter) add_attribute(options, "mer", link_data.mer) @@ -947,37 +947,35 @@ class CoreXmlReader: interface2_data = create_interface_data(interface2_element) options_element = link_element.find("options") - link_options = LinkOptions() + options = LinkOptions() if options_element is not None: - link_options.bandwidth = get_int(options_element, "bandwidth") - link_options.burst = get_int(options_element, "burst") - link_options.delay = get_int(options_element, "delay") - link_options.dup = get_int(options_element, "dup") - link_options.mer = get_int(options_element, "mer") - link_options.mburst = get_int(options_element, "mburst") - link_options.jitter = get_int(options_element, "jitter") - link_options.key = get_int(options_element, "key") - link_options.per = get_float(options_element, "per") - link_options.unidirectional = get_int(options_element, "unidirectional") - link_options.session = options_element.get("session") - link_options.emulation_id = get_int(options_element, "emulation_id") - link_options.network_id = get_int(options_element, "network_id") - link_options.opaque = options_element.get("opaque") - link_options.gui_attributes = options_element.get("gui_attributes") + options.bandwidth = get_int(options_element, "bandwidth") + options.burst = get_int(options_element, "burst") + options.delay = get_int(options_element, "delay") + options.dup = get_int(options_element, "dup") + options.mer = get_int(options_element, "mer") + options.mburst = get_int(options_element, "mburst") + options.jitter = get_int(options_element, "jitter") + options.key = get_int(options_element, "key") + options.loss = get_float(options_element, "loss") + if options.loss is None: + options.loss = get_float(options_element, "per") + options.unidirectional = get_int(options_element, "unidirectional") + options.session = options_element.get("session") + options.emulation_id = get_int(options_element, "emulation_id") + options.network_id = get_int(options_element, "network_id") + options.opaque = options_element.get("opaque") + options.gui_attributes = options_element.get("gui_attributes") - if link_options.unidirectional == 1 and node_set in node_sets: + if options.unidirectional == 1 and node_set in node_sets: logging.info("updating link node1(%s) node2(%s)", node1_id, node2_id) self.session.update_link( - node1_id, - node2_id, - interface1_data.id, - interface2_data.id, - link_options, + node1_id, node2_id, interface1_data.id, interface2_data.id, options ) else: logging.info("adding link node1(%s) node2(%s)", node1_id, node2_id) self.session.add_link( - node1_id, node2_id, interface1_data, interface2_data, link_options + node1_id, node2_id, interface1_data, interface2_data, options ) node_sets.add(node_set) diff --git a/daemon/proto/core/api/grpc/core.proto b/daemon/proto/core/api/grpc/core.proto index 8062a731..828b41fb 100644 --- a/daemon/proto/core/api/grpc/core.proto +++ b/daemon/proto/core/api/grpc/core.proto @@ -719,7 +719,7 @@ message LinkOptions { int32 key = 3; int32 mburst = 4; int32 mer = 5; - float per = 6; + float loss = 6; int64 bandwidth = 7; int32 burst = 8; int64 delay = 9; diff --git a/daemon/tests/test_links.py b/daemon/tests/test_links.py index 61f9d13d..819e2be8 100644 --- a/daemon/tests/test_links.py +++ b/daemon/tests/test_links.py @@ -80,7 +80,7 @@ class TestLinks: # given delay = 50 bandwidth = 5000000 - per = 25 + loss = 25 dup = 25 jitter = 10 node1 = session.add_node(CoreNode) @@ -90,13 +90,13 @@ class TestLinks: interface1 = node1.netif(interface1_data.id) assert interface1.getparam("delay") != delay assert interface1.getparam("bw") != bandwidth - assert interface1.getparam("loss") != per + assert interface1.getparam("loss") != loss assert interface1.getparam("duplicate") != dup assert interface1.getparam("jitter") != jitter # when options = LinkOptions( - delay=delay, bandwidth=bandwidth, per=per, dup=dup, jitter=jitter + delay=delay, bandwidth=bandwidth, loss=loss, dup=dup, jitter=jitter ) session.update_link( node1.id, node2.id, interface1_id=interface1_data.id, options=options @@ -105,7 +105,7 @@ class TestLinks: # then assert interface1.getparam("delay") == delay assert interface1.getparam("bw") == bandwidth - assert interface1.getparam("loss") == per + assert interface1.getparam("loss") == loss assert interface1.getparam("duplicate") == dup assert interface1.getparam("jitter") == jitter @@ -113,7 +113,7 @@ class TestLinks: # given delay = 50 bandwidth = 5000000 - per = 25 + loss = 25 dup = 25 jitter = 10 node1 = session.add_node(SwitchNode) @@ -123,13 +123,13 @@ class TestLinks: interface2 = node2.netif(interface2_data.id) assert interface2.getparam("delay") != delay assert interface2.getparam("bw") != bandwidth - assert interface2.getparam("loss") != per + assert interface2.getparam("loss") != loss assert interface2.getparam("duplicate") != dup assert interface2.getparam("jitter") != jitter # when options = LinkOptions( - delay=delay, bandwidth=bandwidth, per=per, dup=dup, jitter=jitter + delay=delay, bandwidth=bandwidth, loss=loss, dup=dup, jitter=jitter ) session.update_link( node1.id, node2.id, interface2_id=interface2_data.id, options=options @@ -138,7 +138,7 @@ class TestLinks: # then assert interface2.getparam("delay") == delay assert interface2.getparam("bw") == bandwidth - assert interface2.getparam("loss") == per + assert interface2.getparam("loss") == loss assert interface2.getparam("duplicate") == dup assert interface2.getparam("jitter") == jitter @@ -146,7 +146,7 @@ class TestLinks: # given delay = 50 bandwidth = 5000000 - per = 25 + loss = 25 dup = 25 jitter = 10 node1 = session.add_node(CoreNode) @@ -158,18 +158,18 @@ class TestLinks: interface2 = node2.netif(interface2_data.id) assert interface1.getparam("delay") != delay assert interface1.getparam("bw") != bandwidth - assert interface1.getparam("loss") != per + assert interface1.getparam("loss") != loss assert interface1.getparam("duplicate") != dup assert interface1.getparam("jitter") != jitter assert interface2.getparam("delay") != delay assert interface2.getparam("bw") != bandwidth - assert interface2.getparam("loss") != per + assert interface2.getparam("loss") != loss assert interface2.getparam("duplicate") != dup assert interface2.getparam("jitter") != jitter # when options = LinkOptions( - delay=delay, bandwidth=bandwidth, per=per, dup=dup, jitter=jitter + delay=delay, bandwidth=bandwidth, loss=loss, dup=dup, jitter=jitter ) session.update_link( node1.id, node2.id, interface1_data.id, interface2_data.id, options @@ -178,12 +178,12 @@ class TestLinks: # then assert interface1.getparam("delay") == delay assert interface1.getparam("bw") == bandwidth - assert interface1.getparam("loss") == per + assert interface1.getparam("loss") == loss assert interface1.getparam("duplicate") == dup assert interface1.getparam("jitter") == jitter assert interface2.getparam("delay") == delay assert interface2.getparam("bw") == bandwidth - assert interface2.getparam("loss") == per + assert interface2.getparam("loss") == loss assert interface2.getparam("duplicate") == dup assert interface2.getparam("jitter") == jitter diff --git a/daemon/tests/test_xml.py b/daemon/tests/test_xml.py index b28e0986..0b44a354 100644 --- a/daemon/tests/test_xml.py +++ b/daemon/tests/test_xml.py @@ -304,7 +304,7 @@ class TestXml: # create link options = LinkOptions() - options.per = 10.5 + options.loss = 10.5 options.bandwidth = 50000 options.jitter = 10 options.delay = 30 @@ -347,7 +347,7 @@ class TestXml: node = session.nodes[node_id] links += node.all_link_data() link = links[0] - assert options.per == link.per + assert options.loss == link.loss assert options.bandwidth == link.bandwidth assert options.jitter == link.jitter assert options.delay == link.delay @@ -371,7 +371,7 @@ class TestXml: # create link options = LinkOptions() - options.per = 10.5 + options.loss = 10.5 options.bandwidth = 50000 options.jitter = 10 options.delay = 30 @@ -414,7 +414,7 @@ class TestXml: node = session.nodes[node_id] links += node.all_link_data() link = links[0] - assert options.per == link.per + assert options.loss == link.loss assert options.bandwidth == link.bandwidth assert options.jitter == link.jitter assert options.delay == link.delay @@ -441,7 +441,7 @@ class TestXml: options1.unidirectional = 1 options1.bandwidth = 5000 options1.delay = 10 - options1.per = 10.5 + options1.loss = 10.5 options1.dup = 5 options1.jitter = 5 session.add_link(node1.id, node2.id, interface1_data, interface2_data, options1) @@ -449,7 +449,7 @@ class TestXml: options2.unidirectional = 1 options2.bandwidth = 10000 options2.delay = 20 - options2.per = 10 + options2.loss = 10 options2.dup = 10 options2.jitter = 10 session.update_link( @@ -496,11 +496,11 @@ class TestXml: link2 = links[1] assert options1.bandwidth == link1.bandwidth assert options1.delay == link1.delay - assert options1.per == link1.per + assert options1.loss == link1.loss assert options1.dup == link1.dup assert options1.jitter == link1.jitter assert options2.bandwidth == link2.bandwidth assert options2.delay == link2.delay - assert options2.per == link2.per + assert options2.loss == link2.loss assert options2.dup == link2.dup assert options2.jitter == link2.jitter