Skip to content

Commit a57b838

Browse files
authored
Merge pull request #534 from coreemu/develop
merge for 7.3.0
2 parents 56e98f4 + 8297b74 commit a57b838

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

48 files changed

+2567
-521
lines changed

CHANGELOG.md

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,24 @@
1+
## 2020-12-02 CORE 7.3.0
2+
3+
* core-daemon
4+
* fixed issue where emane global configuration was not being sent to core-gui
5+
* updated controlnet names on host to be prefixed with ctrl
6+
* fixed RJ45 link shutdown from core-gui causing an error
7+
* fixed emane external transport xml generation
8+
* \#517 - update to account for radvd required directory
9+
* \#514 - support added for session specific environment files
10+
* \#529 - updated to configure netem limit based on delay or user specified, requires kernel 3.3+
11+
* core-pygui
12+
* fixed issue drawing wlan/emane link options when it should not have
13+
* edge labels are now placed a set distance from nodes like original gui
14+
* link color/width are now saved to xml files
15+
* added support to configure buffer size for links
16+
* \#525 - added support for multiple wired links between the same nodes
17+
* \#526 - added option to hide/show links with 100% loss
18+
* Documentation
19+
* \#527 - typo in service documentation
20+
* \#515 - added examples to docs for using EMANE features within a CORE context
21+
122
## 2020-09-29 CORE 7.2.1
223

324
* core-daemon

configure.ac

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
# Process this file with autoconf to produce a configure script.
33

44
# this defines the CORE version number, must be static for AC_INIT
5-
AC_INIT(core, 7.2.1)
5+
AC_INIT(core, 7.3.0)
66

77
# autoconf and automake initialization
88
AC_CONFIG_SRCDIR([netns/version.h.in])

daemon/core/api/grpc/grpcutils.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ def add_link_data(
128128
options.mer = options_proto.mer
129129
options.burst = options_proto.burst
130130
options.mburst = options_proto.mburst
131+
options.buffer = options_proto.buffer
131132
options.unidirectional = options_proto.unidirectional
132133
options.key = options_proto.key
133134
return iface1_data, iface2_data, options, link_type
@@ -329,6 +330,7 @@ def convert_link_options(options_data: LinkOptions) -> core_pb2.LinkOptions:
329330
burst=options_data.burst,
330331
delay=options_data.delay,
331332
dup=options_data.dup,
333+
buffer=options_data.buffer,
332334
unidirectional=options_data.unidirectional,
333335
)
334336

daemon/core/api/grpc/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -972,6 +972,7 @@ def EditLink(
972972
mburst=options_proto.mburst,
973973
unidirectional=options_proto.unidirectional,
974974
key=options_proto.key,
975+
buffer=options_proto.buffer,
975976
)
976977
session.update_link(node1_id, node2_id, iface1_id, iface2_id, options)
977978
iface1 = InterfaceData(id=iface1_id)

daemon/core/api/grpc/wrappers.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,7 @@ class LinkOptions:
457457
delay: int = 0
458458
dup: int = 0
459459
unidirectional: bool = False
460+
buffer: int = 0
460461

461462
@classmethod
462463
def from_proto(cls, proto: core_pb2.LinkOptions) -> "LinkOptions":
@@ -471,6 +472,7 @@ def from_proto(cls, proto: core_pb2.LinkOptions) -> "LinkOptions":
471472
delay=proto.delay,
472473
dup=proto.dup,
473474
unidirectional=proto.unidirectional,
475+
buffer=proto.buffer,
474476
)
475477

476478
def to_proto(self) -> core_pb2.LinkOptions:
@@ -485,6 +487,7 @@ def to_proto(self) -> core_pb2.LinkOptions:
485487
delay=self.delay,
486488
dup=self.dup,
487489
unidirectional=self.unidirectional,
490+
buffer=self.buffer,
488491
)
489492

490493

daemon/core/api/tlv/corehandlers.py

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@
5252
from core.location.mobility import BasicRangeModel
5353
from core.nodes.base import CoreNode, CoreNodeBase, NodeBase
5454
from core.nodes.network import WlanNode
55+
from core.nodes.physical import Rj45Node
5556
from core.services.coreservices import ServiceManager, ServiceShim
5657

5758

@@ -787,20 +788,30 @@ def handle_link_message(self, message):
787788
options = LinkOptions()
788789
options.delay = message.get_tlv(LinkTlvs.DELAY.value)
789790
options.bandwidth = message.get_tlv(LinkTlvs.BANDWIDTH.value)
790-
options.loss = message.get_tlv(LinkTlvs.LOSS.value)
791-
options.dup = message.get_tlv(LinkTlvs.DUP.value)
792791
options.jitter = message.get_tlv(LinkTlvs.JITTER.value)
793792
options.mer = message.get_tlv(LinkTlvs.MER.value)
794793
options.burst = message.get_tlv(LinkTlvs.BURST.value)
795794
options.mburst = message.get_tlv(LinkTlvs.MBURST.value)
796795
options.unidirectional = message.get_tlv(LinkTlvs.UNIDIRECTIONAL.value)
797796
options.key = message.get_tlv(LinkTlvs.KEY.value)
797+
loss = message.get_tlv(LinkTlvs.LOSS.value)
798+
dup = message.get_tlv(LinkTlvs.DUP.value)
799+
if loss is not None:
800+
options.loss = float(loss)
801+
if dup is not None:
802+
options.dup = int(dup)
798803

799804
if message.flags & MessageFlags.ADD.value:
800805
self.session.add_link(
801806
node1_id, node2_id, iface1_data, iface2_data, options, link_type
802807
)
803808
elif message.flags & MessageFlags.DELETE.value:
809+
node1 = self.session.get_node(node1_id, NodeBase)
810+
node2 = self.session.get_node(node2_id, NodeBase)
811+
if isinstance(node1, Rj45Node):
812+
iface1_data.id = node1.iface_id
813+
if isinstance(node2, Rj45Node):
814+
iface2_data.id = node2.iface_id
804815
self.session.delete_link(
805816
node1_id, node2_id, iface1_data.id, iface2_data.id, link_type
806817
)
@@ -1851,7 +1862,15 @@ def send_objects(self):
18511862
)
18521863
self.session.broadcast_config(config_data)
18531864

1854-
# send emane model info
1865+
# send global emane config
1866+
config = self.session.emane.get_configs()
1867+
logging.debug("global emane config: values(%s)", config)
1868+
config_data = ConfigShim.config_data(
1869+
0, None, ConfigFlags.UPDATE.value, self.session.emane.emane_config, config
1870+
)
1871+
self.session.broadcast_config(config_data)
1872+
1873+
# send emane model configs
18551874
for node_id in self.session.emane.nodes():
18561875
emane_configs = self.session.emane.get_all_configs(node_id)
18571876
for model_name in emane_configs:

daemon/core/configservices/frrservices/services.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
from core.configservice.base import ConfigService, ConfigServiceMode
66
from core.emane.nodes import EmaneNet
77
from core.nodes.base import CoreNodeBase
8-
from core.nodes.interface import CoreInterface
8+
from core.nodes.interface import DEFAULT_MTU, CoreInterface
99
from core.nodes.network import WlanNode
1010

1111
GROUP: str = "FRR"
@@ -18,7 +18,7 @@ def has_mtu_mismatch(iface: CoreInterface) -> bool:
1818
mtu-ignore command. This is needed when e.g. a node is linked via a
1919
GreTap device.
2020
"""
21-
if iface.mtu != 1500:
21+
if iface.mtu != DEFAULT_MTU:
2222
return True
2323
if not iface.net:
2424
return False

daemon/core/configservices/quaggaservices/services.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from core.configservice.base import ConfigService, ConfigServiceMode
77
from core.emane.nodes import EmaneNet
88
from core.nodes.base import CoreNodeBase
9-
from core.nodes.interface import CoreInterface
9+
from core.nodes.interface import DEFAULT_MTU, CoreInterface
1010
from core.nodes.network import WlanNode
1111

1212
GROUP: str = "Quagga"
@@ -19,7 +19,7 @@ def has_mtu_mismatch(iface: CoreInterface) -> bool:
1919
mtu-ignore command. This is needed when e.g. a node is linked via a
2020
GreTap device.
2121
"""
22-
if iface.mtu != 1500:
22+
if iface.mtu != DEFAULT_MTU:
2323
return True
2424
if not iface.net:
2525
return False

daemon/core/configservices/utilservices/services.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ def data(self) -> Dict[str, Any]:
217217
class RadvdService(ConfigService):
218218
name: str = "radvd"
219219
group: str = GROUP_NAME
220-
directories: List[str] = ["/etc/radvd"]
220+
directories: List[str] = ["/etc/radvd", "/var/run/radvd"]
221221
files: List[str] = ["/etc/radvd/radvd.conf"]
222222
executables: List[str] = ["radvd"]
223223
dependencies: List[str] = []

daemon/core/emulator/data.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,7 @@ class LinkOptions:
172172
mburst: int = None
173173
unidirectional: int = None
174174
key: int = None
175+
buffer: int = None
175176

176177

177178
@dataclass

0 commit comments

Comments
 (0)