Merge branch 'enhancement/distributed-flask' of https://github.com/coreemu/core into enhancement/distributed-flask
This commit is contained in:
commit
fb28741393
5 changed files with 75 additions and 2 deletions
|
@ -2,7 +2,7 @@
|
||||||
# Process this file with autoconf to produce a configure script.
|
# Process this file with autoconf to produce a configure script.
|
||||||
|
|
||||||
# this defines the CORE version number, must be static for AC_INIT
|
# this defines the CORE version number, must be static for AC_INIT
|
||||||
AC_INIT(core, 5.5.1)
|
AC_INIT(core, 5.5.2)
|
||||||
|
|
||||||
# autoconf and automake initialization
|
# autoconf and automake initialization
|
||||||
AC_CONFIG_SRCDIR([netns/version.h.in])
|
AC_CONFIG_SRCDIR([netns/version.h.in])
|
||||||
|
|
|
@ -864,6 +864,21 @@ class CoreGrpcClient(object):
|
||||||
request = core_pb2.OpenXmlRequest(data=data)
|
request = core_pb2.OpenXmlRequest(data=data)
|
||||||
return self.stub.OpenXml(request)
|
return self.stub.OpenXml(request)
|
||||||
|
|
||||||
|
def emane_link(self, session_id, nem_one, nem_two, linked):
|
||||||
|
"""
|
||||||
|
Helps broadcast wireless link/unlink between EMANE nodes.
|
||||||
|
|
||||||
|
:param int session_id: session id
|
||||||
|
:param int nem_one:
|
||||||
|
:param int nem_two:
|
||||||
|
:param bool linked: True to link, False to unlink
|
||||||
|
:return: core_pb2.EmaneLinkResponse
|
||||||
|
"""
|
||||||
|
request = core_pb2.EmaneLinkRequest(
|
||||||
|
session_id=session_id, nem_one=nem_one, nem_two=nem_two, linked=linked
|
||||||
|
)
|
||||||
|
return self.stub.EmaneLink(request)
|
||||||
|
|
||||||
def connect(self):
|
def connect(self):
|
||||||
"""
|
"""
|
||||||
Open connection to server, must be closed manually.
|
Open connection to server, must be closed manually.
|
||||||
|
|
|
@ -21,7 +21,7 @@ from core.emulator.data import (
|
||||||
NodeData,
|
NodeData,
|
||||||
)
|
)
|
||||||
from core.emulator.emudata import InterfaceData, LinkOptions, NodeOptions
|
from core.emulator.emudata import InterfaceData, LinkOptions, NodeOptions
|
||||||
from core.emulator.enumerations import EventTypes, LinkTypes, NodeTypes
|
from core.emulator.enumerations import EventTypes, LinkTypes, MessageFlags, NodeTypes
|
||||||
from core.errors import CoreCommandError, CoreError
|
from core.errors import CoreCommandError, CoreError
|
||||||
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
|
from core.location.mobility import BasicRangeModel, Ns2ScriptedMobility
|
||||||
from core.nodes.base import CoreNetworkBase
|
from core.nodes.base import CoreNetworkBase
|
||||||
|
@ -1560,3 +1560,47 @@ class CoreGrpcServer(core_pb2_grpc.CoreApiServicer):
|
||||||
continue
|
continue
|
||||||
interfaces.append(interface)
|
interfaces.append(interface)
|
||||||
return core_pb2.GetInterfacesResponse(interfaces=interfaces)
|
return core_pb2.GetInterfacesResponse(interfaces=interfaces)
|
||||||
|
|
||||||
|
def EmaneLink(self, request, context):
|
||||||
|
"""
|
||||||
|
Helps broadcast wireless link/unlink between EMANE nodes.
|
||||||
|
|
||||||
|
:param core.api.grpc.core_pb2.EmaneLinkRequest request: get-interfaces request
|
||||||
|
:param grpc.ServicerContext context: context object
|
||||||
|
:return: emane link response with success status
|
||||||
|
:rtype: core.api.grpc.core_pb2.EmaneLinkResponse
|
||||||
|
"""
|
||||||
|
logging.debug("emane link: %s", request)
|
||||||
|
session = self.get_session(request.session_id, context)
|
||||||
|
nem_one = request.nem_one
|
||||||
|
emane_one, netif = session.emane.nemlookup(nem_one)
|
||||||
|
if not emane_one or not netif:
|
||||||
|
context.abort(
|
||||||
|
grpc.StatusCode.NOT_FOUND, "nem one {} not found".format(nem_one)
|
||||||
|
)
|
||||||
|
node_one = netif.node
|
||||||
|
|
||||||
|
nem_two = request.nem_two
|
||||||
|
emane_two, netif = session.emane.nemlookup(nem_two)
|
||||||
|
if not emane_two or not netif:
|
||||||
|
context.abort(
|
||||||
|
grpc.StatusCode.NOT_FOUND, "nem two {} not found".format(nem_two)
|
||||||
|
)
|
||||||
|
node_two = netif.node
|
||||||
|
|
||||||
|
if emane_one.id == emane_two.id:
|
||||||
|
if request.linked:
|
||||||
|
flag = MessageFlags.ADD.value
|
||||||
|
else:
|
||||||
|
flag = MessageFlags.DELETE.value
|
||||||
|
link = LinkData(
|
||||||
|
message_type=flag,
|
||||||
|
link_type=LinkTypes.WIRELESS.value,
|
||||||
|
node1_id=node_one.id,
|
||||||
|
node2_id=node_two.id,
|
||||||
|
network_id=emane_one.id,
|
||||||
|
)
|
||||||
|
session.broadcast_link(link)
|
||||||
|
return core_pb2.EmaneLinkResponse(result=True)
|
||||||
|
else:
|
||||||
|
return core_pb2.EmaneLinkResponse(result=False)
|
||||||
|
|
|
@ -2028,6 +2028,7 @@ class CoreUdpHandler(CoreHandler):
|
||||||
}
|
}
|
||||||
self.master = False
|
self.master = False
|
||||||
self.session = None
|
self.session = None
|
||||||
|
self.coreemu = server.mainserver.coreemu
|
||||||
socketserver.BaseRequestHandler.__init__(self, request, client_address, server)
|
socketserver.BaseRequestHandler.__init__(self, request, client_address, server)
|
||||||
|
|
||||||
def setup(self):
|
def setup(self):
|
||||||
|
|
|
@ -119,6 +119,8 @@ service CoreApi {
|
||||||
// utilities
|
// utilities
|
||||||
rpc GetInterfaces (GetInterfacesRequest) returns (GetInterfacesResponse) {
|
rpc GetInterfaces (GetInterfacesRequest) returns (GetInterfacesResponse) {
|
||||||
}
|
}
|
||||||
|
rpc EmaneLink (EmaneLinkRequest) returns (EmaneLinkResponse) {
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// rpc request/response messages
|
// rpc request/response messages
|
||||||
|
@ -633,6 +635,17 @@ message GetInterfacesResponse {
|
||||||
repeated string interfaces = 1;
|
repeated string interfaces = 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message EmaneLinkRequest {
|
||||||
|
int32 session_id = 1;
|
||||||
|
int32 nem_one = 2;
|
||||||
|
int32 nem_two = 3;
|
||||||
|
bool linked = 4;
|
||||||
|
}
|
||||||
|
|
||||||
|
message EmaneLinkResponse {
|
||||||
|
bool result = 1;
|
||||||
|
}
|
||||||
|
|
||||||
// data structures for messages below
|
// data structures for messages below
|
||||||
message MessageType {
|
message MessageType {
|
||||||
enum Enum {
|
enum Enum {
|
||||||
|
|
Loading…
Reference in a new issue