diff --git a/configure.ac b/configure.ac
index 79c5ecc0..763c6c4a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -146,7 +146,7 @@ if test "x$enable_daemon" = "xyes"; then
   CFLAGS_save=$CFLAGS
   CPPFLAGS_save=$CPPFLAGS
   if test "x$PYTHON_INCLUDE_DIR" = "x"; then
-    PYTHON_INCLUDE_DIR=`$PYTHON -c "import distutils.sysconfig; print distutils.sysconfig.get_python_inc()"`
+    PYTHON_INCLUDE_DIR=`$PYTHON -c "import distutils.sysconfig; print(distutils.sysconfig.get_python_inc())"`
   fi
   CFLAGS="-I$PYTHON_INCLUDE_DIR"
   CPPFLAGS="-I$PYTHON_INCLUDE_DIR"
diff --git a/daemon/core/api/grpc/core_pb2.py b/daemon/core/api/grpc/core_pb2.py
index 754f76c7..d1531404 100644
--- a/daemon/core/api/grpc/core_pb2.py
+++ b/daemon/core/api/grpc/core_pb2.py
@@ -1,5 +1,5 @@
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: core.proto
+# source: core/api/grpc/core.proto
 
 import sys
 _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
@@ -16,11 +16,11 @@ _sym_db = _symbol_database.Default()
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
-  name='core.proto',
+  name='core/api/grpc/core.proto',
   package='core',
   syntax='proto3',
   serialized_options=None,
-  serialized_pb=_b('\n\ncore.proto\x12\x04\x63ore\"\"\n\x14\x43reateSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"F\n\x15\x43reateSessionResponse\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\"\"\n\x14\x44\x65leteSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\'\n\x15\x44\x65leteSessionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x14\n\x12GetSessionsRequest\"=\n\x13GetSessionsResponse\x12&\n\x08sessions\x18\x01 \x03(\x0b\x32\x14.core.SessionSummary\"\x1f\n\x11GetSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"4\n\x12GetSessionResponse\x12\x1e\n\x07session\x18\x01 \x01(\x0b\x32\r.core.Session\"&\n\x18GetSessionOptionsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\">\n\x19GetSessionOptionsResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x91\x01\n\x18SetSessionOptionsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12:\n\x06\x63onfig\x18\x02 \x03(\x0b\x32*.core.SetSessionOptionsRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x19SetSessionOptionsResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\'\n\x19GetSessionLocationRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"M\n\x1aGetSessionLocationResponse\x12 \n\x08position\x18\x01 \x01(\x0b\x32\x0e.core.Position\x12\r\n\x05scale\x18\x02 \x01(\x02\"X\n\x19SetSessionLocationRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12 \n\x08position\x18\x02 \x01(\x0b\x32\x0e.core.Position\x12\r\n\x05scale\x18\x03 \x01(\x02\",\n\x1aSetSessionLocationResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"G\n\x16SetSessionStateRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\")\n\x17SetSessionStateResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x1f\n\x11NodeEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"%\n\tNodeEvent\x12\x18\n\x04node\x18\x01 \x01(\x0b\x32\n.core.Node\"\x1f\n\x11LinkEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"N\n\tLinkEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x18\n\x04link\x18\x02 \x01(\x0b\x32\n.core.Link\"\"\n\x14SessionEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"f\n\x0cSessionEvent\x12\x0c\n\x04node\x18\x01 \x01(\x05\x12\r\n\x05\x65vent\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0c\n\x04time\x18\x05 \x01(\x02\x12\x0f\n\x07session\x18\x06 \x01(\x05\"!\n\x13\x43onfigEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\x9e\x02\n\x0b\x43onfigEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x0c\n\x04node\x18\x02 \x01(\x05\x12\x0e\n\x06object\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x12\n\ndata_types\x18\x05 \x03(\x05\x12\x13\n\x0b\x64\x61ta_values\x18\x06 \x01(\t\x12\x10\n\x08\x63\x61ptions\x18\x07 \x01(\t\x12\x0e\n\x06\x62itmap\x18\x08 \x01(\t\x12\x17\n\x0fpossible_values\x18\t \x01(\t\x12\x0e\n\x06groups\x18\n \x01(\t\x12\x0f\n\x07session\x18\x0b \x01(\t\x12\x11\n\tinterface\x18\x0c \x01(\x05\x12\x12\n\nnetwork_id\x18\r \x01(\x05\x12\x0e\n\x06opaque\x18\x0e \x01(\t\"$\n\x16\x45xceptionEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\x90\x01\n\x0e\x45xceptionEvent\x12\x0c\n\x04node\x18\x01 \x01(\x05\x12\x0f\n\x07session\x18\x02 \x01(\x05\x12#\n\x05level\x18\x03 \x01(\x0e\x32\x14.core.ExceptionLevel\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61te\x18\x05 \x01(\t\x12\x0c\n\x04text\x18\x06 \x01(\t\x12\x0e\n\x06opaque\x18\x07 \x01(\t\"\x1f\n\x11\x46ileEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\xc4\x01\n\tFileEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x0c\n\x04node\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04mode\x18\x04 \x01(\t\x12\x0e\n\x06number\x18\x05 \x01(\x05\x12\x0c\n\x04type\x18\x06 \x01(\t\x12\x0e\n\x06source\x18\x07 \x01(\t\x12\x0f\n\x07session\x18\x08 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\t \x01(\x0c\x12\x17\n\x0f\x63ompressed_data\x18\n \x01(\x0c\";\n\x0e\x41\x64\x64NodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04node\x18\x02 \x01(\x0b\x32\n.core.Node\"\x1d\n\x0f\x41\x64\x64NodeResponse\x12\n\n\x02id\x18\x01 \x01(\x05\"-\n\x0eGetNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"P\n\x0fGetNodeResponse\x12\x18\n\x04node\x18\x01 \x01(\x0b\x32\n.core.Node\x12#\n\ninterfaces\x18\x02 \x03(\x0b\x32\x0f.core.Interface\"P\n\x0f\x45\x64itNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12 \n\x08position\x18\x03 \x01(\x0b\x32\x0e.core.Position\"\"\n\x10\x45\x64itNodeResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"0\n\x11\x44\x65leteNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"$\n\x12\x44\x65leteNodeResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"2\n\x13GetNodeLinksRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"1\n\x14GetNodeLinksResponse\x12\x19\n\x05links\x18\x01 \x03(\x0b\x32\n.core.Link\";\n\x0e\x41\x64\x64LinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04link\x18\x02 \x01(\x0b\x32\n.core.Link\"!\n\x0f\x41\x64\x64LinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x98\x01\n\x0f\x45\x64itLinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x10\n\x08node_one\x18\x02 \x01(\x05\x12\x10\n\x08node_two\x18\x03 \x01(\x05\x12\x15\n\rinterface_one\x18\x04 \x01(\x05\x12\x15\n\rinterface_two\x18\x05 \x01(\x05\x12\"\n\x07options\x18\x06 \x01(\x0b\x32\x11.core.LinkOptions\"\"\n\x10\x45\x64itLinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"v\n\x11\x44\x65leteLinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x10\n\x08node_one\x18\x02 \x01(\x05\x12\x10\n\x08node_two\x18\x03 \x01(\x05\x12\x15\n\rinterface_one\x18\x04 \x01(\x05\x12\x15\n\rinterface_two\x18\x05 \x01(\x05\"$\n\x12\x44\x65leteLinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\"\n\x0fGetHooksRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"-\n\x10GetHooksResponse\x12\x19\n\x05hooks\x18\x01 \x03(\x0b\x32\n.core.Hook\";\n\x0e\x41\x64\x64HookRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04hook\x18\x02 \x01(\x0b\x32\n.core.Hook\"!\n\x0f\x41\x64\x64HookResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\",\n\x19GetMobilityConfigsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\xf2\x01\n\x1aGetMobilityConfigsResponse\x12>\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32-.core.GetMobilityConfigsResponse.ConfigsEntry\x1a\x33\n\x0eMobilityConfig\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\x1a_\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.core.GetMobilityConfigsResponse.MobilityConfig:\x02\x38\x01\"7\n\x18GetMobilityConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\">\n\x19GetMobilityConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\xa2\x01\n\x18SetMobilityConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12:\n\x06\x63onfig\x18\x03 \x03(\x0b\x32*.core.SetMobilityConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x19SetMobilityConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"Z\n\x15MobilityActionRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12$\n\x06\x61\x63tion\x18\x03 \x01(\x0e\x32\x14.core.MobilityAction\"(\n\x16MobilityActionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x14\n\x12GetServicesRequest\"6\n\x13GetServicesResponse\x12\x1f\n\x08services\x18\x01 \x03(\x0b\x32\r.core.Service\",\n\x19GetServiceDefaultsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"E\n\x1aGetServiceDefaultsResponse\x12\'\n\x08\x64\x65\x66\x61ults\x18\x01 \x03(\x0b\x32\x15.core.ServiceDefaults\"U\n\x19SetServiceDefaultsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\'\n\x08\x64\x65\x66\x61ults\x18\x02 \x03(\x0b\x32\x15.core.ServiceDefaults\",\n\x1aSetServiceDefaultsResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"E\n\x15GetNodeServiceRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\"@\n\x16GetNodeServiceResponse\x12&\n\x07service\x18\x01 \x01(\x0b\x32\x15.core.NodeServiceData\"W\n\x19GetNodeServiceFileRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\"*\n\x1aGetNodeServiceFileResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"z\n\x15SetNodeServiceRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0f\n\x07startup\x18\x04 \x03(\t\x12\x10\n\x08validate\x18\x05 \x03(\t\x12\x10\n\x08shutdown\x18\x06 \x03(\t\"(\n\x16SetNodeServiceResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"e\n\x19SetNodeServiceFileRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\",\n\x1aSetNodeServiceFileResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"i\n\x14ServiceActionRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12#\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x13.core.ServiceAction\"\'\n\x15ServiceActionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"3\n\x14GetWlanConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\":\n\x15GetWlanConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x9a\x01\n\x14SetWlanConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x36\n\x06\x63onfig\x18\x03 \x03(\x0b\x32&.core.SetWlanConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\'\n\x15SetWlanConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"(\n\x15GetEmaneConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\";\n\x16GetEmaneConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x90\x01\n\x15SetEmaneConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x37\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\'.core.SetEmaneConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16SetEmaneConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"(\n\x15GetEmaneModelsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"(\n\x16GetEmaneModelsResponse\x12\x0e\n\x06models\x18\x01 \x03(\t\"[\n\x1aGetEmaneModelConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x11\n\tinterface\x18\x03 \x01(\x05\x12\r\n\x05model\x18\x04 \x01(\t\"@\n\x1bGetEmaneModelConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\xc8\x01\n\x1aSetEmaneModelConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x11\n\tinterface\x18\x03 \x01(\x05\x12\r\n\x05model\x18\x04 \x01(\t\x12<\n\x06\x63onfig\x18\x05 \x03(\x0b\x32,.core.SetEmaneModelConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"-\n\x1bSetEmaneModelConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\".\n\x1bGetEmaneModelConfigsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\x81\x02\n\x1cGetEmaneModelConfigsResponse\x12@\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32/.core.GetEmaneModelConfigsResponse.ConfigsEntry\x1a?\n\x0bModelConfig\x12\r\n\x05model\x18\x01 \x01(\t\x12!\n\x06groups\x18\x02 \x03(\x0b\x32\x11.core.ConfigGroup\x1a^\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12=\n\x05value\x18\x02 \x01(\x0b\x32..core.GetEmaneModelConfigsResponse.ModelConfig:\x02\x38\x01\"!\n\x0eSaveXmlRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\x1f\n\x0fSaveXmlResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x1e\n\x0eOpenXmlRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"2\n\x0fOpenXmlResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\x12\x0f\n\x07session\x18\x02 \x01(\x05\"E\n\x04Hook\x12!\n\x05state\x18\x01 \x01(\x0e\x32\x12.core.SessionState\x12\x0c\n\x04\x66ile\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"6\n\x0fServiceDefaults\x12\x11\n\tnode_type\x18\x01 \x01(\t\x12\x10\n\x08services\x18\x02 \x03(\t\"&\n\x07Service\x12\r\n\x05group\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xee\x01\n\x0fNodeServiceData\x12\x13\n\x0b\x65xecutables\x18\x01 \x03(\t\x12\x14\n\x0c\x64\x65pendencies\x18\x02 \x03(\t\x12\x0c\n\x04\x64irs\x18\x03 \x03(\t\x12\x0f\n\x07\x63onfigs\x18\x04 \x03(\t\x12\x0f\n\x07startup\x18\x05 \x03(\t\x12\x10\n\x08validate\x18\x06 \x03(\t\x12\x34\n\x0fvalidation_mode\x18\x07 \x01(\x0e\x32\x1b.core.ServiceValidationMode\x12\x18\n\x10validation_timer\x18\x08 \x01(\x05\x12\x10\n\x08shutdown\x18\t \x03(\t\x12\x0c\n\x04meta\x18\n \x01(\t\"@\n\x0b\x43onfigGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x07options\x18\x02 \x03(\x0b\x32\x12.core.ConfigOption\"X\n\x0c\x43onfigOption\x12\r\n\x05label\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x0e\n\x06select\x18\x05 \x03(\t\"n\n\x07Session\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\x12\x19\n\x05nodes\x18\x03 \x03(\x0b\x32\n.core.Node\x12\x19\n\x05links\x18\x04 \x03(\x0b\x32\n.core.Link\"N\n\x0eSessionSummary\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\x12\r\n\x05nodes\x18\x03 \x01(\x05\"\xae\x01\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1c\n\x04type\x18\x03 \x01(\x0e\x32\x0e.core.NodeType\x12\r\n\x05model\x18\x04 \x01(\t\x12 \n\x08position\x18\x05 \x01(\x0b\x32\x0e.core.Position\x12\x10\n\x08services\x18\x06 \x03(\t\x12\r\n\x05\x65mane\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\t\x12\x0e\n\x06opaque\x18\t \x01(\t\"\xbc\x01\n\x04Link\x12\x10\n\x08node_one\x18\x01 \x01(\x05\x12\x10\n\x08node_two\x18\x02 \x01(\x05\x12\x1c\n\x04type\x18\x03 \x01(\x0e\x32\x0e.core.LinkType\x12&\n\rinterface_one\x18\x04 \x01(\x0b\x32\x0f.core.Interface\x12&\n\rinterface_two\x18\x05 \x01(\x0b\x32\x0f.core.Interface\x12\"\n\x07options\x18\x06 \x01(\x0b\x32\x11.core.LinkOptions\"\xba\x01\n\x0bLinkOptions\x12\x0e\n\x06opaque\x18\x01 \x01(\t\x12\x0e\n\x06jitter\x18\x02 \x01(\x02\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0e\n\x06mburst\x18\x04 \x01(\x02\x12\x0b\n\x03mer\x18\x05 \x01(\x02\x12\x0b\n\x03per\x18\x06 \x01(\x02\x12\x11\n\tbandwidth\x18\x07 \x01(\x02\x12\r\n\x05\x62urst\x18\x08 \x01(\x02\x12\r\n\x05\x64\x65lay\x18\t \x01(\x02\x12\x0b\n\x03\x64up\x18\n \x01(\x02\x12\x16\n\x0eunidirectional\x18\x0b \x01(\x08\"\x9a\x01\n\tInterface\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03mac\x18\x03 \x01(\t\x12\x0b\n\x03ip4\x18\x04 \x01(\t\x12\x0f\n\x07ip4mask\x18\x05 \x01(\x05\x12\x0b\n\x03ip6\x18\x06 \x01(\t\x12\x0f\n\x07ip6mask\x18\x07 \x01(\x05\x12\r\n\x05netid\x18\x08 \x01(\x05\x12\x0e\n\x06\x66lowid\x18\t \x01(\x05\x12\x0b\n\x03mtu\x18\n \x01(\x05\"R\n\x08Position\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\x0b\n\x03lat\x18\x04 \x01(\x02\x12\x0b\n\x03lon\x18\x05 \x01(\x02\x12\x0b\n\x03\x61lt\x18\x06 \x01(\x02*\x9f\x01\n\x0bMessageType\x12\x10\n\x0cMESSAGE_NONE\x10\x00\x12\x0f\n\x0bMESSAGE_ADD\x10\x01\x12\x12\n\x0eMESSAGE_DELETE\x10\x02\x12\x0f\n\x0bMESSAGE_CRI\x10\x04\x12\x11\n\rMESSAGE_LOCAL\x10\x08\x12\x12\n\x0eMESSAGE_STRING\x10\x10\x12\x10\n\x0cMESSAGE_TEXT\x10 \x12\x0f\n\x0bMESSAGE_TTY\x10@*-\n\x08LinkType\x12\x11\n\rLINK_WIRELESS\x10\x00\x12\x0e\n\nLINK_WIRED\x10\x01*\xa4\x01\n\x0cSessionState\x12\x0e\n\nSTATE_NONE\x10\x00\x12\x14\n\x10STATE_DEFINITION\x10\x01\x12\x17\n\x13STATE_CONFIGURATION\x10\x02\x12\x17\n\x13STATE_INSTANTIATION\x10\x03\x12\x11\n\rSTATE_RUNTIME\x10\x04\x12\x15\n\x11STATE_DATACOLLECT\x10\x05\x12\x12\n\x0eSTATE_SHUTDOWN\x10\x06*\x8b\x02\n\x08NodeType\x12\x10\n\x0cNODE_DEFAULT\x10\x00\x12\x11\n\rNODE_PHYSICAL\x10\x01\x12\x0c\n\x08NODE_TBD\x10\x03\x12\x0f\n\x0bNODE_SWITCH\x10\x04\x12\x0c\n\x08NODE_HUB\x10\x05\x12\x15\n\x11NODE_WIRELESS_LAN\x10\x06\x12\r\n\tNODE_RJ45\x10\x07\x12\x0f\n\x0bNODE_TUNNEL\x10\x08\x12\x10\n\x0cNODE_KTUNNEL\x10\t\x12\x0e\n\nNODE_EMANE\x10\n\x12\x13\n\x0fNODE_TAP_BRIDGE\x10\x0b\x12\x15\n\x11NODE_PEER_TO_PEER\x10\x0c\x12\x14\n\x10NODE_CONTROL_NET\x10\r\x12\x12\n\x0eNODE_EMANE_NET\x10\x0e*c\n\x15ServiceValidationMode\x12\x17\n\x13VALIDATION_BLOCKING\x10\x00\x12\x1b\n\x17VALIDATION_NON_BLOCKING\x10\x01\x12\x14\n\x10VALIDATION_TIMER\x10\x02*_\n\rServiceAction\x12\x11\n\rSERVICE_START\x10\x00\x12\x10\n\x0cSERVICE_STOP\x10\x01\x12\x13\n\x0fSERVICE_RESTART\x10\x02\x12\x14\n\x10SERVICE_VALIDATE\x10\x03*K\n\x0eMobilityAction\x12\x12\n\x0eMOBILITY_START\x10\x00\x12\x12\n\x0eMOBILITY_PAUSE\x10\x01\x12\x11\n\rMOBILITY_STOP\x10\x02*~\n\x0e\x45xceptionLevel\x12\x15\n\x11\x45XCEPTION_DEFAULT\x10\x00\x12\x13\n\x0f\x45XCEPTION_FATAL\x10\x01\x12\x13\n\x0f\x45XCEPTION_ERROR\x10\x02\x12\x15\n\x11\x45XCEPTION_WARNING\x10\x03\x12\x14\n\x10\x45XCEPTION_NOTICE\x10\x04\x32\xe2\x1b\n\x07\x43oreApi\x12J\n\rCreateSession\x12\x1a.core.CreateSessionRequest\x1a\x1b.core.CreateSessionResponse\"\x00\x12J\n\rDeleteSession\x12\x1a.core.DeleteSessionRequest\x1a\x1b.core.DeleteSessionResponse\"\x00\x12\x44\n\x0bGetSessions\x12\x18.core.GetSessionsRequest\x1a\x19.core.GetSessionsResponse\"\x00\x12\x41\n\nGetSession\x12\x17.core.GetSessionRequest\x1a\x18.core.GetSessionResponse\"\x00\x12V\n\x11GetSessionOptions\x12\x1e.core.GetSessionOptionsRequest\x1a\x1f.core.GetSessionOptionsResponse\"\x00\x12V\n\x11SetSessionOptions\x12\x1e.core.SetSessionOptionsRequest\x1a\x1f.core.SetSessionOptionsResponse\"\x00\x12Y\n\x12GetSessionLocation\x12\x1f.core.GetSessionLocationRequest\x1a .core.GetSessionLocationResponse\"\x00\x12Y\n\x12SetSessionLocation\x12\x1f.core.SetSessionLocationRequest\x1a .core.SetSessionLocationResponse\"\x00\x12P\n\x0fSetSessionState\x12\x1c.core.SetSessionStateRequest\x1a\x1d.core.SetSessionStateResponse\"\x00\x12:\n\nNodeEvents\x12\x17.core.NodeEventsRequest\x1a\x0f.core.NodeEvent\"\x00\x30\x01\x12:\n\nLinkEvents\x12\x17.core.LinkEventsRequest\x1a\x0f.core.LinkEvent\"\x00\x30\x01\x12\x43\n\rSessionEvents\x12\x1a.core.SessionEventsRequest\x1a\x12.core.SessionEvent\"\x00\x30\x01\x12@\n\x0c\x43onfigEvents\x12\x19.core.ConfigEventsRequest\x1a\x11.core.ConfigEvent\"\x00\x30\x01\x12I\n\x0f\x45xceptionEvents\x12\x1c.core.ExceptionEventsRequest\x1a\x14.core.ExceptionEvent\"\x00\x30\x01\x12:\n\nFileEvents\x12\x17.core.FileEventsRequest\x1a\x0f.core.FileEvent\"\x00\x30\x01\x12\x38\n\x07\x41\x64\x64Node\x12\x14.core.AddNodeRequest\x1a\x15.core.AddNodeResponse\"\x00\x12\x38\n\x07GetNode\x12\x14.core.GetNodeRequest\x1a\x15.core.GetNodeResponse\"\x00\x12;\n\x08\x45\x64itNode\x12\x15.core.EditNodeRequest\x1a\x16.core.EditNodeResponse\"\x00\x12\x41\n\nDeleteNode\x12\x17.core.DeleteNodeRequest\x1a\x18.core.DeleteNodeResponse\"\x00\x12G\n\x0cGetNodeLinks\x12\x19.core.GetNodeLinksRequest\x1a\x1a.core.GetNodeLinksResponse\"\x00\x12\x38\n\x07\x41\x64\x64Link\x12\x14.core.AddLinkRequest\x1a\x15.core.AddLinkResponse\"\x00\x12;\n\x08\x45\x64itLink\x12\x15.core.EditLinkRequest\x1a\x16.core.EditLinkResponse\"\x00\x12\x41\n\nDeleteLink\x12\x17.core.DeleteLinkRequest\x1a\x18.core.DeleteLinkResponse\"\x00\x12;\n\x08GetHooks\x12\x15.core.GetHooksRequest\x1a\x16.core.GetHooksResponse\"\x00\x12\x38\n\x07\x41\x64\x64Hook\x12\x14.core.AddHookRequest\x1a\x15.core.AddHookResponse\"\x00\x12Y\n\x12GetMobilityConfigs\x12\x1f.core.GetMobilityConfigsRequest\x1a .core.GetMobilityConfigsResponse\"\x00\x12V\n\x11GetMobilityConfig\x12\x1e.core.GetMobilityConfigRequest\x1a\x1f.core.GetMobilityConfigResponse\"\x00\x12V\n\x11SetMobilityConfig\x12\x1e.core.SetMobilityConfigRequest\x1a\x1f.core.SetMobilityConfigResponse\"\x00\x12M\n\x0eMobilityAction\x12\x1b.core.MobilityActionRequest\x1a\x1c.core.MobilityActionResponse\"\x00\x12\x44\n\x0bGetServices\x12\x18.core.GetServicesRequest\x1a\x19.core.GetServicesResponse\"\x00\x12Y\n\x12GetServiceDefaults\x12\x1f.core.GetServiceDefaultsRequest\x1a .core.GetServiceDefaultsResponse\"\x00\x12Y\n\x12SetServiceDefaults\x12\x1f.core.SetServiceDefaultsRequest\x1a .core.SetServiceDefaultsResponse\"\x00\x12M\n\x0eGetNodeService\x12\x1b.core.GetNodeServiceRequest\x1a\x1c.core.GetNodeServiceResponse\"\x00\x12Y\n\x12GetNodeServiceFile\x12\x1f.core.GetNodeServiceFileRequest\x1a .core.GetNodeServiceFileResponse\"\x00\x12M\n\x0eSetNodeService\x12\x1b.core.SetNodeServiceRequest\x1a\x1c.core.SetNodeServiceResponse\"\x00\x12Y\n\x12SetNodeServiceFile\x12\x1f.core.SetNodeServiceFileRequest\x1a .core.SetNodeServiceFileResponse\"\x00\x12J\n\rServiceAction\x12\x1a.core.ServiceActionRequest\x1a\x1b.core.ServiceActionResponse\"\x00\x12J\n\rGetWlanConfig\x12\x1a.core.GetWlanConfigRequest\x1a\x1b.core.GetWlanConfigResponse\"\x00\x12J\n\rSetWlanConfig\x12\x1a.core.SetWlanConfigRequest\x1a\x1b.core.SetWlanConfigResponse\"\x00\x12M\n\x0eGetEmaneConfig\x12\x1b.core.GetEmaneConfigRequest\x1a\x1c.core.GetEmaneConfigResponse\"\x00\x12M\n\x0eSetEmaneConfig\x12\x1b.core.SetEmaneConfigRequest\x1a\x1c.core.SetEmaneConfigResponse\"\x00\x12M\n\x0eGetEmaneModels\x12\x1b.core.GetEmaneModelsRequest\x1a\x1c.core.GetEmaneModelsResponse\"\x00\x12\\\n\x13GetEmaneModelConfig\x12 .core.GetEmaneModelConfigRequest\x1a!.core.GetEmaneModelConfigResponse\"\x00\x12\\\n\x13SetEmaneModelConfig\x12 .core.SetEmaneModelConfigRequest\x1a!.core.SetEmaneModelConfigResponse\"\x00\x12_\n\x14GetEmaneModelConfigs\x12!.core.GetEmaneModelConfigsRequest\x1a\".core.GetEmaneModelConfigsResponse\"\x00\x12\x38\n\x07SaveXml\x12\x14.core.SaveXmlRequest\x1a\x15.core.SaveXmlResponse\"\x00\x12\x38\n\x07OpenXml\x12\x14.core.OpenXmlRequest\x1a\x15.core.OpenXmlResponse\"\x00\x62\x06proto3')
+  serialized_pb=_b('\n\x18\x63ore/api/grpc/core.proto\x12\x04\x63ore\"\"\n\x14\x43reateSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"F\n\x15\x43reateSessionResponse\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\"\"\n\x14\x44\x65leteSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\'\n\x15\x44\x65leteSessionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x14\n\x12GetSessionsRequest\"=\n\x13GetSessionsResponse\x12&\n\x08sessions\x18\x01 \x03(\x0b\x32\x14.core.SessionSummary\"\x1f\n\x11GetSessionRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"4\n\x12GetSessionResponse\x12\x1e\n\x07session\x18\x01 \x01(\x0b\x32\r.core.Session\"&\n\x18GetSessionOptionsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\">\n\x19GetSessionOptionsResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x91\x01\n\x18SetSessionOptionsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12:\n\x06\x63onfig\x18\x02 \x03(\x0b\x32*.core.SetSessionOptionsRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x19SetSessionOptionsResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\'\n\x19GetSessionLocationRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"M\n\x1aGetSessionLocationResponse\x12 \n\x08position\x18\x01 \x01(\x0b\x32\x0e.core.Position\x12\r\n\x05scale\x18\x02 \x01(\x02\"X\n\x19SetSessionLocationRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12 \n\x08position\x18\x02 \x01(\x0b\x32\x0e.core.Position\x12\r\n\x05scale\x18\x03 \x01(\x02\",\n\x1aSetSessionLocationResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"G\n\x16SetSessionStateRequest\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\")\n\x17SetSessionStateResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x1f\n\x11NodeEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"%\n\tNodeEvent\x12\x18\n\x04node\x18\x01 \x01(\x0b\x32\n.core.Node\"\x1f\n\x11LinkEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"N\n\tLinkEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x18\n\x04link\x18\x02 \x01(\x0b\x32\n.core.Link\"\"\n\x14SessionEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"f\n\x0cSessionEvent\x12\x0c\n\x04node\x18\x01 \x01(\x05\x12\r\n\x05\x65vent\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\x12\x0c\n\x04time\x18\x05 \x01(\x02\x12\x0f\n\x07session\x18\x06 \x01(\x05\"!\n\x13\x43onfigEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\x9e\x02\n\x0b\x43onfigEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x0c\n\x04node\x18\x02 \x01(\x05\x12\x0e\n\x06object\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x12\n\ndata_types\x18\x05 \x03(\x05\x12\x13\n\x0b\x64\x61ta_values\x18\x06 \x01(\t\x12\x10\n\x08\x63\x61ptions\x18\x07 \x01(\t\x12\x0e\n\x06\x62itmap\x18\x08 \x01(\t\x12\x17\n\x0fpossible_values\x18\t \x01(\t\x12\x0e\n\x06groups\x18\n \x01(\t\x12\x0f\n\x07session\x18\x0b \x01(\t\x12\x11\n\tinterface\x18\x0c \x01(\x05\x12\x12\n\nnetwork_id\x18\r \x01(\x05\x12\x0e\n\x06opaque\x18\x0e \x01(\t\"$\n\x16\x45xceptionEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\x90\x01\n\x0e\x45xceptionEvent\x12\x0c\n\x04node\x18\x01 \x01(\x05\x12\x0f\n\x07session\x18\x02 \x01(\x05\x12#\n\x05level\x18\x03 \x01(\x0e\x32\x14.core.ExceptionLevel\x12\x0e\n\x06source\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61te\x18\x05 \x01(\t\x12\x0c\n\x04text\x18\x06 \x01(\t\x12\x0e\n\x06opaque\x18\x07 \x01(\t\"\x1f\n\x11\x46ileEventsRequest\x12\n\n\x02id\x18\x01 \x01(\x05\"\xc4\x01\n\tFileEvent\x12\'\n\x0cmessage_type\x18\x01 \x01(\x0e\x32\x11.core.MessageType\x12\x0c\n\x04node\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0c\n\x04mode\x18\x04 \x01(\t\x12\x0e\n\x06number\x18\x05 \x01(\x05\x12\x0c\n\x04type\x18\x06 \x01(\t\x12\x0e\n\x06source\x18\x07 \x01(\t\x12\x0f\n\x07session\x18\x08 \x01(\x05\x12\x0c\n\x04\x64\x61ta\x18\t \x01(\x0c\x12\x17\n\x0f\x63ompressed_data\x18\n \x01(\x0c\";\n\x0e\x41\x64\x64NodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04node\x18\x02 \x01(\x0b\x32\n.core.Node\"\x1d\n\x0f\x41\x64\x64NodeResponse\x12\n\n\x02id\x18\x01 \x01(\x05\"-\n\x0eGetNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"P\n\x0fGetNodeResponse\x12\x18\n\x04node\x18\x01 \x01(\x0b\x32\n.core.Node\x12#\n\ninterfaces\x18\x02 \x03(\x0b\x32\x0f.core.Interface\"P\n\x0f\x45\x64itNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12 \n\x08position\x18\x03 \x01(\x0b\x32\x0e.core.Position\"\"\n\x10\x45\x64itNodeResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"0\n\x11\x44\x65leteNodeRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"$\n\x12\x44\x65leteNodeResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"2\n\x13GetNodeLinksRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\"1\n\x14GetNodeLinksResponse\x12\x19\n\x05links\x18\x01 \x03(\x0b\x32\n.core.Link\";\n\x0e\x41\x64\x64LinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04link\x18\x02 \x01(\x0b\x32\n.core.Link\"!\n\x0f\x41\x64\x64LinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x98\x01\n\x0f\x45\x64itLinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x10\n\x08node_one\x18\x02 \x01(\x05\x12\x10\n\x08node_two\x18\x03 \x01(\x05\x12\x15\n\rinterface_one\x18\x04 \x01(\x05\x12\x15\n\rinterface_two\x18\x05 \x01(\x05\x12\"\n\x07options\x18\x06 \x01(\x0b\x32\x11.core.LinkOptions\"\"\n\x10\x45\x64itLinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"v\n\x11\x44\x65leteLinkRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x10\n\x08node_one\x18\x02 \x01(\x05\x12\x10\n\x08node_two\x18\x03 \x01(\x05\x12\x15\n\rinterface_one\x18\x04 \x01(\x05\x12\x15\n\rinterface_two\x18\x05 \x01(\x05\"$\n\x12\x44\x65leteLinkResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\"\n\x0fGetHooksRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"-\n\x10GetHooksResponse\x12\x19\n\x05hooks\x18\x01 \x03(\x0b\x32\n.core.Hook\";\n\x0e\x41\x64\x64HookRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x18\n\x04hook\x18\x02 \x01(\x0b\x32\n.core.Hook\"!\n\x0f\x41\x64\x64HookResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\",\n\x19GetMobilityConfigsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\xf2\x01\n\x1aGetMobilityConfigsResponse\x12>\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32-.core.GetMobilityConfigsResponse.ConfigsEntry\x1a\x33\n\x0eMobilityConfig\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\x1a_\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12>\n\x05value\x18\x02 \x01(\x0b\x32/.core.GetMobilityConfigsResponse.MobilityConfig:\x02\x38\x01\"7\n\x18GetMobilityConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\">\n\x19GetMobilityConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\xa2\x01\n\x18SetMobilityConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12:\n\x06\x63onfig\x18\x03 \x03(\x0b\x32*.core.SetMobilityConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"+\n\x19SetMobilityConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"Z\n\x15MobilityActionRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12$\n\x06\x61\x63tion\x18\x03 \x01(\x0e\x32\x14.core.MobilityAction\"(\n\x16MobilityActionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"\x14\n\x12GetServicesRequest\"6\n\x13GetServicesResponse\x12\x1f\n\x08services\x18\x01 \x03(\x0b\x32\r.core.Service\",\n\x19GetServiceDefaultsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"E\n\x1aGetServiceDefaultsResponse\x12\'\n\x08\x64\x65\x66\x61ults\x18\x01 \x03(\x0b\x32\x15.core.ServiceDefaults\"U\n\x19SetServiceDefaultsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\'\n\x08\x64\x65\x66\x61ults\x18\x02 \x03(\x0b\x32\x15.core.ServiceDefaults\",\n\x1aSetServiceDefaultsResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"E\n\x15GetNodeServiceRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\"@\n\x16GetNodeServiceResponse\x12&\n\x07service\x18\x01 \x01(\x0b\x32\x15.core.NodeServiceData\"W\n\x19GetNodeServiceFileRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\"*\n\x1aGetNodeServiceFileResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"z\n\x15SetNodeServiceRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0f\n\x07startup\x18\x04 \x03(\t\x12\x10\n\x08validate\x18\x05 \x03(\t\x12\x10\n\x08shutdown\x18\x06 \x03(\t\"(\n\x16SetNodeServiceResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"e\n\x19SetNodeServiceFileRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12\x0c\n\x04\x66ile\x18\x04 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x05 \x01(\x0c\",\n\x1aSetNodeServiceFileResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"i\n\x14ServiceActionRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x0f\n\x07service\x18\x03 \x01(\t\x12#\n\x06\x61\x63tion\x18\x04 \x01(\x0e\x32\x13.core.ServiceAction\"\'\n\x15ServiceActionResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"3\n\x14GetWlanConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\":\n\x15GetWlanConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x9a\x01\n\x14SetWlanConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x36\n\x06\x63onfig\x18\x03 \x03(\x0b\x32&.core.SetWlanConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"\'\n\x15SetWlanConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"(\n\x15GetEmaneConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\";\n\x16GetEmaneConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\x90\x01\n\x15SetEmaneConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\x37\n\x06\x63onfig\x18\x02 \x03(\x0b\x32\'.core.SetEmaneConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"(\n\x16SetEmaneConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\"(\n\x15GetEmaneModelsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"(\n\x16GetEmaneModelsResponse\x12\x0e\n\x06models\x18\x01 \x03(\t\"[\n\x1aGetEmaneModelConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x11\n\tinterface\x18\x03 \x01(\x05\x12\r\n\x05model\x18\x04 \x01(\t\"@\n\x1bGetEmaneModelConfigResponse\x12!\n\x06groups\x18\x01 \x03(\x0b\x32\x11.core.ConfigGroup\"\xc8\x01\n\x1aSetEmaneModelConfigRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\x12\n\n\x02id\x18\x02 \x01(\x05\x12\x11\n\tinterface\x18\x03 \x01(\x05\x12\r\n\x05model\x18\x04 \x01(\t\x12<\n\x06\x63onfig\x18\x05 \x03(\x0b\x32,.core.SetEmaneModelConfigRequest.ConfigEntry\x1a-\n\x0b\x43onfigEntry\x12\x0b\n\x03key\x18\x01 \x01(\t\x12\r\n\x05value\x18\x02 \x01(\t:\x02\x38\x01\"-\n\x1bSetEmaneModelConfigResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\".\n\x1bGetEmaneModelConfigsRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\x81\x02\n\x1cGetEmaneModelConfigsResponse\x12@\n\x07\x63onfigs\x18\x01 \x03(\x0b\x32/.core.GetEmaneModelConfigsResponse.ConfigsEntry\x1a?\n\x0bModelConfig\x12\r\n\x05model\x18\x01 \x01(\t\x12!\n\x06groups\x18\x02 \x03(\x0b\x32\x11.core.ConfigGroup\x1a^\n\x0c\x43onfigsEntry\x12\x0b\n\x03key\x18\x01 \x01(\x05\x12=\n\x05value\x18\x02 \x01(\x0b\x32..core.GetEmaneModelConfigsResponse.ModelConfig:\x02\x38\x01\"!\n\x0eSaveXmlRequest\x12\x0f\n\x07session\x18\x01 \x01(\x05\"\x1f\n\x0fSaveXmlResponse\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"\x1e\n\x0eOpenXmlRequest\x12\x0c\n\x04\x64\x61ta\x18\x01 \x01(\x0c\"2\n\x0fOpenXmlResponse\x12\x0e\n\x06result\x18\x01 \x01(\x08\x12\x0f\n\x07session\x18\x02 \x01(\x05\"E\n\x04Hook\x12!\n\x05state\x18\x01 \x01(\x0e\x32\x12.core.SessionState\x12\x0c\n\x04\x66ile\x18\x02 \x01(\t\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"6\n\x0fServiceDefaults\x12\x11\n\tnode_type\x18\x01 \x01(\t\x12\x10\n\x08services\x18\x02 \x03(\t\"&\n\x07Service\x12\r\n\x05group\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\"\xee\x01\n\x0fNodeServiceData\x12\x13\n\x0b\x65xecutables\x18\x01 \x03(\t\x12\x14\n\x0c\x64\x65pendencies\x18\x02 \x03(\t\x12\x0c\n\x04\x64irs\x18\x03 \x03(\t\x12\x0f\n\x07\x63onfigs\x18\x04 \x03(\t\x12\x0f\n\x07startup\x18\x05 \x03(\t\x12\x10\n\x08validate\x18\x06 \x03(\t\x12\x34\n\x0fvalidation_mode\x18\x07 \x01(\x0e\x32\x1b.core.ServiceValidationMode\x12\x18\n\x10validation_timer\x18\x08 \x01(\x05\x12\x10\n\x08shutdown\x18\t \x03(\t\x12\x0c\n\x04meta\x18\n \x01(\t\"@\n\x0b\x43onfigGroup\x12\x0c\n\x04name\x18\x01 \x01(\t\x12#\n\x07options\x18\x02 \x03(\x0b\x32\x12.core.ConfigOption\"X\n\x0c\x43onfigOption\x12\r\n\x05label\x18\x01 \x01(\t\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\r\n\x05value\x18\x03 \x01(\t\x12\x0c\n\x04type\x18\x04 \x01(\x05\x12\x0e\n\x06select\x18\x05 \x03(\t\"n\n\x07Session\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\x12\x19\n\x05nodes\x18\x03 \x03(\x0b\x32\n.core.Node\x12\x19\n\x05links\x18\x04 \x03(\x0b\x32\n.core.Link\"N\n\x0eSessionSummary\x12\n\n\x02id\x18\x01 \x01(\x05\x12!\n\x05state\x18\x02 \x01(\x0e\x32\x12.core.SessionState\x12\r\n\x05nodes\x18\x03 \x01(\x05\"\xae\x01\n\x04Node\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x1c\n\x04type\x18\x03 \x01(\x0e\x32\x0e.core.NodeType\x12\r\n\x05model\x18\x04 \x01(\t\x12 \n\x08position\x18\x05 \x01(\x0b\x32\x0e.core.Position\x12\x10\n\x08services\x18\x06 \x03(\t\x12\r\n\x05\x65mane\x18\x07 \x01(\t\x12\x0c\n\x04icon\x18\x08 \x01(\t\x12\x0e\n\x06opaque\x18\t \x01(\t\"\xbc\x01\n\x04Link\x12\x10\n\x08node_one\x18\x01 \x01(\x05\x12\x10\n\x08node_two\x18\x02 \x01(\x05\x12\x1c\n\x04type\x18\x03 \x01(\x0e\x32\x0e.core.LinkType\x12&\n\rinterface_one\x18\x04 \x01(\x0b\x32\x0f.core.Interface\x12&\n\rinterface_two\x18\x05 \x01(\x0b\x32\x0f.core.Interface\x12\"\n\x07options\x18\x06 \x01(\x0b\x32\x11.core.LinkOptions\"\xba\x01\n\x0bLinkOptions\x12\x0e\n\x06opaque\x18\x01 \x01(\t\x12\x0e\n\x06jitter\x18\x02 \x01(\x02\x12\x0b\n\x03key\x18\x03 \x01(\t\x12\x0e\n\x06mburst\x18\x04 \x01(\x02\x12\x0b\n\x03mer\x18\x05 \x01(\x02\x12\x0b\n\x03per\x18\x06 \x01(\x02\x12\x11\n\tbandwidth\x18\x07 \x01(\x02\x12\r\n\x05\x62urst\x18\x08 \x01(\x02\x12\r\n\x05\x64\x65lay\x18\t \x01(\x02\x12\x0b\n\x03\x64up\x18\n \x01(\x02\x12\x16\n\x0eunidirectional\x18\x0b \x01(\x08\"\x9a\x01\n\tInterface\x12\n\n\x02id\x18\x01 \x01(\x05\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0b\n\x03mac\x18\x03 \x01(\t\x12\x0b\n\x03ip4\x18\x04 \x01(\t\x12\x0f\n\x07ip4mask\x18\x05 \x01(\x05\x12\x0b\n\x03ip6\x18\x06 \x01(\t\x12\x0f\n\x07ip6mask\x18\x07 \x01(\x05\x12\r\n\x05netid\x18\x08 \x01(\x05\x12\x0e\n\x06\x66lowid\x18\t \x01(\x05\x12\x0b\n\x03mtu\x18\n \x01(\x05\"R\n\x08Position\x12\t\n\x01x\x18\x01 \x01(\x02\x12\t\n\x01y\x18\x02 \x01(\x02\x12\t\n\x01z\x18\x03 \x01(\x02\x12\x0b\n\x03lat\x18\x04 \x01(\x02\x12\x0b\n\x03lon\x18\x05 \x01(\x02\x12\x0b\n\x03\x61lt\x18\x06 \x01(\x02*\x9f\x01\n\x0bMessageType\x12\x10\n\x0cMESSAGE_NONE\x10\x00\x12\x0f\n\x0bMESSAGE_ADD\x10\x01\x12\x12\n\x0eMESSAGE_DELETE\x10\x02\x12\x0f\n\x0bMESSAGE_CRI\x10\x04\x12\x11\n\rMESSAGE_LOCAL\x10\x08\x12\x12\n\x0eMESSAGE_STRING\x10\x10\x12\x10\n\x0cMESSAGE_TEXT\x10 \x12\x0f\n\x0bMESSAGE_TTY\x10@*-\n\x08LinkType\x12\x11\n\rLINK_WIRELESS\x10\x00\x12\x0e\n\nLINK_WIRED\x10\x01*\xa4\x01\n\x0cSessionState\x12\x0e\n\nSTATE_NONE\x10\x00\x12\x14\n\x10STATE_DEFINITION\x10\x01\x12\x17\n\x13STATE_CONFIGURATION\x10\x02\x12\x17\n\x13STATE_INSTANTIATION\x10\x03\x12\x11\n\rSTATE_RUNTIME\x10\x04\x12\x15\n\x11STATE_DATACOLLECT\x10\x05\x12\x12\n\x0eSTATE_SHUTDOWN\x10\x06*\x8b\x02\n\x08NodeType\x12\x10\n\x0cNODE_DEFAULT\x10\x00\x12\x11\n\rNODE_PHYSICAL\x10\x01\x12\x0c\n\x08NODE_TBD\x10\x03\x12\x0f\n\x0bNODE_SWITCH\x10\x04\x12\x0c\n\x08NODE_HUB\x10\x05\x12\x15\n\x11NODE_WIRELESS_LAN\x10\x06\x12\r\n\tNODE_RJ45\x10\x07\x12\x0f\n\x0bNODE_TUNNEL\x10\x08\x12\x10\n\x0cNODE_KTUNNEL\x10\t\x12\x0e\n\nNODE_EMANE\x10\n\x12\x13\n\x0fNODE_TAP_BRIDGE\x10\x0b\x12\x15\n\x11NODE_PEER_TO_PEER\x10\x0c\x12\x14\n\x10NODE_CONTROL_NET\x10\r\x12\x12\n\x0eNODE_EMANE_NET\x10\x0e*c\n\x15ServiceValidationMode\x12\x17\n\x13VALIDATION_BLOCKING\x10\x00\x12\x1b\n\x17VALIDATION_NON_BLOCKING\x10\x01\x12\x14\n\x10VALIDATION_TIMER\x10\x02*_\n\rServiceAction\x12\x11\n\rSERVICE_START\x10\x00\x12\x10\n\x0cSERVICE_STOP\x10\x01\x12\x13\n\x0fSERVICE_RESTART\x10\x02\x12\x14\n\x10SERVICE_VALIDATE\x10\x03*K\n\x0eMobilityAction\x12\x12\n\x0eMOBILITY_START\x10\x00\x12\x12\n\x0eMOBILITY_PAUSE\x10\x01\x12\x11\n\rMOBILITY_STOP\x10\x02*~\n\x0e\x45xceptionLevel\x12\x15\n\x11\x45XCEPTION_DEFAULT\x10\x00\x12\x13\n\x0f\x45XCEPTION_FATAL\x10\x01\x12\x13\n\x0f\x45XCEPTION_ERROR\x10\x02\x12\x15\n\x11\x45XCEPTION_WARNING\x10\x03\x12\x14\n\x10\x45XCEPTION_NOTICE\x10\x04\x32\xe2\x1b\n\x07\x43oreApi\x12J\n\rCreateSession\x12\x1a.core.CreateSessionRequest\x1a\x1b.core.CreateSessionResponse\"\x00\x12J\n\rDeleteSession\x12\x1a.core.DeleteSessionRequest\x1a\x1b.core.DeleteSessionResponse\"\x00\x12\x44\n\x0bGetSessions\x12\x18.core.GetSessionsRequest\x1a\x19.core.GetSessionsResponse\"\x00\x12\x41\n\nGetSession\x12\x17.core.GetSessionRequest\x1a\x18.core.GetSessionResponse\"\x00\x12V\n\x11GetSessionOptions\x12\x1e.core.GetSessionOptionsRequest\x1a\x1f.core.GetSessionOptionsResponse\"\x00\x12V\n\x11SetSessionOptions\x12\x1e.core.SetSessionOptionsRequest\x1a\x1f.core.SetSessionOptionsResponse\"\x00\x12Y\n\x12GetSessionLocation\x12\x1f.core.GetSessionLocationRequest\x1a .core.GetSessionLocationResponse\"\x00\x12Y\n\x12SetSessionLocation\x12\x1f.core.SetSessionLocationRequest\x1a .core.SetSessionLocationResponse\"\x00\x12P\n\x0fSetSessionState\x12\x1c.core.SetSessionStateRequest\x1a\x1d.core.SetSessionStateResponse\"\x00\x12:\n\nNodeEvents\x12\x17.core.NodeEventsRequest\x1a\x0f.core.NodeEvent\"\x00\x30\x01\x12:\n\nLinkEvents\x12\x17.core.LinkEventsRequest\x1a\x0f.core.LinkEvent\"\x00\x30\x01\x12\x43\n\rSessionEvents\x12\x1a.core.SessionEventsRequest\x1a\x12.core.SessionEvent\"\x00\x30\x01\x12@\n\x0c\x43onfigEvents\x12\x19.core.ConfigEventsRequest\x1a\x11.core.ConfigEvent\"\x00\x30\x01\x12I\n\x0f\x45xceptionEvents\x12\x1c.core.ExceptionEventsRequest\x1a\x14.core.ExceptionEvent\"\x00\x30\x01\x12:\n\nFileEvents\x12\x17.core.FileEventsRequest\x1a\x0f.core.FileEvent\"\x00\x30\x01\x12\x38\n\x07\x41\x64\x64Node\x12\x14.core.AddNodeRequest\x1a\x15.core.AddNodeResponse\"\x00\x12\x38\n\x07GetNode\x12\x14.core.GetNodeRequest\x1a\x15.core.GetNodeResponse\"\x00\x12;\n\x08\x45\x64itNode\x12\x15.core.EditNodeRequest\x1a\x16.core.EditNodeResponse\"\x00\x12\x41\n\nDeleteNode\x12\x17.core.DeleteNodeRequest\x1a\x18.core.DeleteNodeResponse\"\x00\x12G\n\x0cGetNodeLinks\x12\x19.core.GetNodeLinksRequest\x1a\x1a.core.GetNodeLinksResponse\"\x00\x12\x38\n\x07\x41\x64\x64Link\x12\x14.core.AddLinkRequest\x1a\x15.core.AddLinkResponse\"\x00\x12;\n\x08\x45\x64itLink\x12\x15.core.EditLinkRequest\x1a\x16.core.EditLinkResponse\"\x00\x12\x41\n\nDeleteLink\x12\x17.core.DeleteLinkRequest\x1a\x18.core.DeleteLinkResponse\"\x00\x12;\n\x08GetHooks\x12\x15.core.GetHooksRequest\x1a\x16.core.GetHooksResponse\"\x00\x12\x38\n\x07\x41\x64\x64Hook\x12\x14.core.AddHookRequest\x1a\x15.core.AddHookResponse\"\x00\x12Y\n\x12GetMobilityConfigs\x12\x1f.core.GetMobilityConfigsRequest\x1a .core.GetMobilityConfigsResponse\"\x00\x12V\n\x11GetMobilityConfig\x12\x1e.core.GetMobilityConfigRequest\x1a\x1f.core.GetMobilityConfigResponse\"\x00\x12V\n\x11SetMobilityConfig\x12\x1e.core.SetMobilityConfigRequest\x1a\x1f.core.SetMobilityConfigResponse\"\x00\x12M\n\x0eMobilityAction\x12\x1b.core.MobilityActionRequest\x1a\x1c.core.MobilityActionResponse\"\x00\x12\x44\n\x0bGetServices\x12\x18.core.GetServicesRequest\x1a\x19.core.GetServicesResponse\"\x00\x12Y\n\x12GetServiceDefaults\x12\x1f.core.GetServiceDefaultsRequest\x1a .core.GetServiceDefaultsResponse\"\x00\x12Y\n\x12SetServiceDefaults\x12\x1f.core.SetServiceDefaultsRequest\x1a .core.SetServiceDefaultsResponse\"\x00\x12M\n\x0eGetNodeService\x12\x1b.core.GetNodeServiceRequest\x1a\x1c.core.GetNodeServiceResponse\"\x00\x12Y\n\x12GetNodeServiceFile\x12\x1f.core.GetNodeServiceFileRequest\x1a .core.GetNodeServiceFileResponse\"\x00\x12M\n\x0eSetNodeService\x12\x1b.core.SetNodeServiceRequest\x1a\x1c.core.SetNodeServiceResponse\"\x00\x12Y\n\x12SetNodeServiceFile\x12\x1f.core.SetNodeServiceFileRequest\x1a .core.SetNodeServiceFileResponse\"\x00\x12J\n\rServiceAction\x12\x1a.core.ServiceActionRequest\x1a\x1b.core.ServiceActionResponse\"\x00\x12J\n\rGetWlanConfig\x12\x1a.core.GetWlanConfigRequest\x1a\x1b.core.GetWlanConfigResponse\"\x00\x12J\n\rSetWlanConfig\x12\x1a.core.SetWlanConfigRequest\x1a\x1b.core.SetWlanConfigResponse\"\x00\x12M\n\x0eGetEmaneConfig\x12\x1b.core.GetEmaneConfigRequest\x1a\x1c.core.GetEmaneConfigResponse\"\x00\x12M\n\x0eSetEmaneConfig\x12\x1b.core.SetEmaneConfigRequest\x1a\x1c.core.SetEmaneConfigResponse\"\x00\x12M\n\x0eGetEmaneModels\x12\x1b.core.GetEmaneModelsRequest\x1a\x1c.core.GetEmaneModelsResponse\"\x00\x12\\\n\x13GetEmaneModelConfig\x12 .core.GetEmaneModelConfigRequest\x1a!.core.GetEmaneModelConfigResponse\"\x00\x12\\\n\x13SetEmaneModelConfig\x12 .core.SetEmaneModelConfigRequest\x1a!.core.SetEmaneModelConfigResponse\"\x00\x12_\n\x14GetEmaneModelConfigs\x12!.core.GetEmaneModelConfigsRequest\x1a\".core.GetEmaneModelConfigsResponse\"\x00\x12\x38\n\x07SaveXml\x12\x14.core.SaveXmlRequest\x1a\x15.core.SaveXmlResponse\"\x00\x12\x38\n\x07OpenXml\x12\x14.core.OpenXmlRequest\x1a\x15.core.OpenXmlResponse\"\x00\x62\x06proto3')
 )
 
 _MESSAGETYPE = _descriptor.EnumDescriptor(
@@ -64,8 +64,8 @@ _MESSAGETYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8194,
-  serialized_end=8353,
+  serialized_start=8208,
+  serialized_end=8367,
 )
 _sym_db.RegisterEnumDescriptor(_MESSAGETYPE)
 
@@ -87,8 +87,8 @@ _LINKTYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8355,
-  serialized_end=8400,
+  serialized_start=8369,
+  serialized_end=8414,
 )
 _sym_db.RegisterEnumDescriptor(_LINKTYPE)
 
@@ -130,8 +130,8 @@ _SESSIONSTATE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8403,
-  serialized_end=8567,
+  serialized_start=8417,
+  serialized_end=8581,
 )
 _sym_db.RegisterEnumDescriptor(_SESSIONSTATE)
 
@@ -201,8 +201,8 @@ _NODETYPE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8570,
-  serialized_end=8837,
+  serialized_start=8584,
+  serialized_end=8851,
 )
 _sym_db.RegisterEnumDescriptor(_NODETYPE)
 
@@ -228,8 +228,8 @@ _SERVICEVALIDATIONMODE = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8839,
-  serialized_end=8938,
+  serialized_start=8853,
+  serialized_end=8952,
 )
 _sym_db.RegisterEnumDescriptor(_SERVICEVALIDATIONMODE)
 
@@ -259,8 +259,8 @@ _SERVICEACTION = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=8940,
-  serialized_end=9035,
+  serialized_start=8954,
+  serialized_end=9049,
 )
 _sym_db.RegisterEnumDescriptor(_SERVICEACTION)
 
@@ -286,8 +286,8 @@ _MOBILITYACTION = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9037,
-  serialized_end=9112,
+  serialized_start=9051,
+  serialized_end=9126,
 )
 _sym_db.RegisterEnumDescriptor(_MOBILITYACTION)
 
@@ -321,8 +321,8 @@ _EXCEPTIONLEVEL = _descriptor.EnumDescriptor(
   ],
   containing_type=None,
   serialized_options=None,
-  serialized_start=9114,
-  serialized_end=9240,
+  serialized_start=9128,
+  serialized_end=9254,
 )
 _sym_db.RegisterEnumDescriptor(_EXCEPTIONLEVEL)
 
@@ -402,8 +402,8 @@ _CREATESESSIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=20,
-  serialized_end=54,
+  serialized_start=34,
+  serialized_end=68,
 )
 
 
@@ -440,8 +440,8 @@ _CREATESESSIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=56,
-  serialized_end=126,
+  serialized_start=70,
+  serialized_end=140,
 )
 
 
@@ -471,8 +471,8 @@ _DELETESESSIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=128,
-  serialized_end=162,
+  serialized_start=142,
+  serialized_end=176,
 )
 
 
@@ -502,8 +502,8 @@ _DELETESESSIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=164,
-  serialized_end=203,
+  serialized_start=178,
+  serialized_end=217,
 )
 
 
@@ -526,8 +526,8 @@ _GETSESSIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=205,
-  serialized_end=225,
+  serialized_start=219,
+  serialized_end=239,
 )
 
 
@@ -557,8 +557,8 @@ _GETSESSIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=227,
-  serialized_end=288,
+  serialized_start=241,
+  serialized_end=302,
 )
 
 
@@ -588,8 +588,8 @@ _GETSESSIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=290,
-  serialized_end=321,
+  serialized_start=304,
+  serialized_end=335,
 )
 
 
@@ -619,8 +619,8 @@ _GETSESSIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=323,
-  serialized_end=375,
+  serialized_start=337,
+  serialized_end=389,
 )
 
 
@@ -650,8 +650,8 @@ _GETSESSIONOPTIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=377,
-  serialized_end=415,
+  serialized_start=391,
+  serialized_end=429,
 )
 
 
@@ -681,8 +681,8 @@ _GETSESSIONOPTIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=417,
-  serialized_end=479,
+  serialized_start=431,
+  serialized_end=493,
 )
 
 
@@ -719,8 +719,8 @@ _SETSESSIONOPTIONSREQUEST_CONFIGENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=582,
-  serialized_end=627,
+  serialized_start=596,
+  serialized_end=641,
 )
 
 _SETSESSIONOPTIONSREQUEST = _descriptor.Descriptor(
@@ -756,8 +756,8 @@ _SETSESSIONOPTIONSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=482,
-  serialized_end=627,
+  serialized_start=496,
+  serialized_end=641,
 )
 
 
@@ -787,8 +787,8 @@ _SETSESSIONOPTIONSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=629,
-  serialized_end=672,
+  serialized_start=643,
+  serialized_end=686,
 )
 
 
@@ -818,8 +818,8 @@ _GETSESSIONLOCATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=674,
-  serialized_end=713,
+  serialized_start=688,
+  serialized_end=727,
 )
 
 
@@ -856,8 +856,8 @@ _GETSESSIONLOCATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=715,
-  serialized_end=792,
+  serialized_start=729,
+  serialized_end=806,
 )
 
 
@@ -901,8 +901,8 @@ _SETSESSIONLOCATIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=794,
-  serialized_end=882,
+  serialized_start=808,
+  serialized_end=896,
 )
 
 
@@ -932,8 +932,8 @@ _SETSESSIONLOCATIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=884,
-  serialized_end=928,
+  serialized_start=898,
+  serialized_end=942,
 )
 
 
@@ -970,8 +970,8 @@ _SETSESSIONSTATEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=930,
-  serialized_end=1001,
+  serialized_start=944,
+  serialized_end=1015,
 )
 
 
@@ -1001,8 +1001,8 @@ _SETSESSIONSTATERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1003,
-  serialized_end=1044,
+  serialized_start=1017,
+  serialized_end=1058,
 )
 
 
@@ -1032,8 +1032,8 @@ _NODEEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1046,
-  serialized_end=1077,
+  serialized_start=1060,
+  serialized_end=1091,
 )
 
 
@@ -1063,8 +1063,8 @@ _NODEEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1079,
-  serialized_end=1116,
+  serialized_start=1093,
+  serialized_end=1130,
 )
 
 
@@ -1094,8 +1094,8 @@ _LINKEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1118,
-  serialized_end=1149,
+  serialized_start=1132,
+  serialized_end=1163,
 )
 
 
@@ -1132,8 +1132,8 @@ _LINKEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1151,
-  serialized_end=1229,
+  serialized_start=1165,
+  serialized_end=1243,
 )
 
 
@@ -1163,8 +1163,8 @@ _SESSIONEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1231,
-  serialized_end=1265,
+  serialized_start=1245,
+  serialized_end=1279,
 )
 
 
@@ -1229,8 +1229,8 @@ _SESSIONEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1267,
-  serialized_end=1369,
+  serialized_start=1281,
+  serialized_end=1383,
 )
 
 
@@ -1260,8 +1260,8 @@ _CONFIGEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1371,
-  serialized_end=1404,
+  serialized_start=1385,
+  serialized_end=1418,
 )
 
 
@@ -1382,8 +1382,8 @@ _CONFIGEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1407,
-  serialized_end=1693,
+  serialized_start=1421,
+  serialized_end=1707,
 )
 
 
@@ -1413,8 +1413,8 @@ _EXCEPTIONEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1695,
-  serialized_end=1731,
+  serialized_start=1709,
+  serialized_end=1745,
 )
 
 
@@ -1486,8 +1486,8 @@ _EXCEPTIONEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1734,
-  serialized_end=1878,
+  serialized_start=1748,
+  serialized_end=1892,
 )
 
 
@@ -1517,8 +1517,8 @@ _FILEEVENTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1880,
-  serialized_end=1911,
+  serialized_start=1894,
+  serialized_end=1925,
 )
 
 
@@ -1611,8 +1611,8 @@ _FILEEVENT = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=1914,
-  serialized_end=2110,
+  serialized_start=1928,
+  serialized_end=2124,
 )
 
 
@@ -1649,8 +1649,8 @@ _ADDNODEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2112,
-  serialized_end=2171,
+  serialized_start=2126,
+  serialized_end=2185,
 )
 
 
@@ -1680,8 +1680,8 @@ _ADDNODERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2173,
-  serialized_end=2202,
+  serialized_start=2187,
+  serialized_end=2216,
 )
 
 
@@ -1718,8 +1718,8 @@ _GETNODEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2204,
-  serialized_end=2249,
+  serialized_start=2218,
+  serialized_end=2263,
 )
 
 
@@ -1756,8 +1756,8 @@ _GETNODERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2251,
-  serialized_end=2331,
+  serialized_start=2265,
+  serialized_end=2345,
 )
 
 
@@ -1801,8 +1801,8 @@ _EDITNODEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2333,
-  serialized_end=2413,
+  serialized_start=2347,
+  serialized_end=2427,
 )
 
 
@@ -1832,8 +1832,8 @@ _EDITNODERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2415,
-  serialized_end=2449,
+  serialized_start=2429,
+  serialized_end=2463,
 )
 
 
@@ -1870,8 +1870,8 @@ _DELETENODEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2451,
-  serialized_end=2499,
+  serialized_start=2465,
+  serialized_end=2513,
 )
 
 
@@ -1901,8 +1901,8 @@ _DELETENODERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2501,
-  serialized_end=2537,
+  serialized_start=2515,
+  serialized_end=2551,
 )
 
 
@@ -1939,8 +1939,8 @@ _GETNODELINKSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2539,
-  serialized_end=2589,
+  serialized_start=2553,
+  serialized_end=2603,
 )
 
 
@@ -1970,8 +1970,8 @@ _GETNODELINKSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2591,
-  serialized_end=2640,
+  serialized_start=2605,
+  serialized_end=2654,
 )
 
 
@@ -2008,8 +2008,8 @@ _ADDLINKREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2642,
-  serialized_end=2701,
+  serialized_start=2656,
+  serialized_end=2715,
 )
 
 
@@ -2039,8 +2039,8 @@ _ADDLINKRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2703,
-  serialized_end=2736,
+  serialized_start=2717,
+  serialized_end=2750,
 )
 
 
@@ -2105,8 +2105,8 @@ _EDITLINKREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2739,
-  serialized_end=2891,
+  serialized_start=2753,
+  serialized_end=2905,
 )
 
 
@@ -2136,8 +2136,8 @@ _EDITLINKRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2893,
-  serialized_end=2927,
+  serialized_start=2907,
+  serialized_end=2941,
 )
 
 
@@ -2195,8 +2195,8 @@ _DELETELINKREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=2929,
-  serialized_end=3047,
+  serialized_start=2943,
+  serialized_end=3061,
 )
 
 
@@ -2226,8 +2226,8 @@ _DELETELINKRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3049,
-  serialized_end=3085,
+  serialized_start=3063,
+  serialized_end=3099,
 )
 
 
@@ -2257,8 +2257,8 @@ _GETHOOKSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3087,
-  serialized_end=3121,
+  serialized_start=3101,
+  serialized_end=3135,
 )
 
 
@@ -2288,8 +2288,8 @@ _GETHOOKSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3123,
-  serialized_end=3168,
+  serialized_start=3137,
+  serialized_end=3182,
 )
 
 
@@ -2326,8 +2326,8 @@ _ADDHOOKREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3170,
-  serialized_end=3229,
+  serialized_start=3184,
+  serialized_end=3243,
 )
 
 
@@ -2357,8 +2357,8 @@ _ADDHOOKRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3231,
-  serialized_end=3264,
+  serialized_start=3245,
+  serialized_end=3278,
 )
 
 
@@ -2388,8 +2388,8 @@ _GETMOBILITYCONFIGSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3266,
-  serialized_end=3310,
+  serialized_start=3280,
+  serialized_end=3324,
 )
 
 
@@ -2419,8 +2419,8 @@ _GETMOBILITYCONFIGSRESPONSE_MOBILITYCONFIG = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3407,
-  serialized_end=3458,
+  serialized_start=3421,
+  serialized_end=3472,
 )
 
 _GETMOBILITYCONFIGSRESPONSE_CONFIGSENTRY = _descriptor.Descriptor(
@@ -2456,8 +2456,8 @@ _GETMOBILITYCONFIGSRESPONSE_CONFIGSENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3460,
-  serialized_end=3555,
+  serialized_start=3474,
+  serialized_end=3569,
 )
 
 _GETMOBILITYCONFIGSRESPONSE = _descriptor.Descriptor(
@@ -2486,8 +2486,8 @@ _GETMOBILITYCONFIGSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3313,
-  serialized_end=3555,
+  serialized_start=3327,
+  serialized_end=3569,
 )
 
 
@@ -2524,8 +2524,8 @@ _GETMOBILITYCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3557,
-  serialized_end=3612,
+  serialized_start=3571,
+  serialized_end=3626,
 )
 
 
@@ -2555,8 +2555,8 @@ _GETMOBILITYCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3614,
-  serialized_end=3676,
+  serialized_start=3628,
+  serialized_end=3690,
 )
 
 
@@ -2593,8 +2593,8 @@ _SETMOBILITYCONFIGREQUEST_CONFIGENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=582,
-  serialized_end=627,
+  serialized_start=596,
+  serialized_end=641,
 )
 
 _SETMOBILITYCONFIGREQUEST = _descriptor.Descriptor(
@@ -2637,8 +2637,8 @@ _SETMOBILITYCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3679,
-  serialized_end=3841,
+  serialized_start=3693,
+  serialized_end=3855,
 )
 
 
@@ -2668,8 +2668,8 @@ _SETMOBILITYCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3843,
-  serialized_end=3886,
+  serialized_start=3857,
+  serialized_end=3900,
 )
 
 
@@ -2713,8 +2713,8 @@ _MOBILITYACTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3888,
-  serialized_end=3978,
+  serialized_start=3902,
+  serialized_end=3992,
 )
 
 
@@ -2744,8 +2744,8 @@ _MOBILITYACTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=3980,
-  serialized_end=4020,
+  serialized_start=3994,
+  serialized_end=4034,
 )
 
 
@@ -2768,8 +2768,8 @@ _GETSERVICESREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4022,
-  serialized_end=4042,
+  serialized_start=4036,
+  serialized_end=4056,
 )
 
 
@@ -2799,8 +2799,8 @@ _GETSERVICESRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4044,
-  serialized_end=4098,
+  serialized_start=4058,
+  serialized_end=4112,
 )
 
 
@@ -2830,8 +2830,8 @@ _GETSERVICEDEFAULTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4100,
-  serialized_end=4144,
+  serialized_start=4114,
+  serialized_end=4158,
 )
 
 
@@ -2861,8 +2861,8 @@ _GETSERVICEDEFAULTSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4146,
-  serialized_end=4215,
+  serialized_start=4160,
+  serialized_end=4229,
 )
 
 
@@ -2899,8 +2899,8 @@ _SETSERVICEDEFAULTSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4217,
-  serialized_end=4302,
+  serialized_start=4231,
+  serialized_end=4316,
 )
 
 
@@ -2930,8 +2930,8 @@ _SETSERVICEDEFAULTSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4304,
-  serialized_end=4348,
+  serialized_start=4318,
+  serialized_end=4362,
 )
 
 
@@ -2975,8 +2975,8 @@ _GETNODESERVICEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4350,
-  serialized_end=4419,
+  serialized_start=4364,
+  serialized_end=4433,
 )
 
 
@@ -3006,8 +3006,8 @@ _GETNODESERVICERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4421,
-  serialized_end=4485,
+  serialized_start=4435,
+  serialized_end=4499,
 )
 
 
@@ -3058,8 +3058,8 @@ _GETNODESERVICEFILEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4487,
-  serialized_end=4574,
+  serialized_start=4501,
+  serialized_end=4588,
 )
 
 
@@ -3089,8 +3089,8 @@ _GETNODESERVICEFILERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4576,
-  serialized_end=4618,
+  serialized_start=4590,
+  serialized_end=4632,
 )
 
 
@@ -3155,8 +3155,8 @@ _SETNODESERVICEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4620,
-  serialized_end=4742,
+  serialized_start=4634,
+  serialized_end=4756,
 )
 
 
@@ -3186,8 +3186,8 @@ _SETNODESERVICERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4744,
-  serialized_end=4784,
+  serialized_start=4758,
+  serialized_end=4798,
 )
 
 
@@ -3245,8 +3245,8 @@ _SETNODESERVICEFILEREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4786,
-  serialized_end=4887,
+  serialized_start=4800,
+  serialized_end=4901,
 )
 
 
@@ -3276,8 +3276,8 @@ _SETNODESERVICEFILERESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4889,
-  serialized_end=4933,
+  serialized_start=4903,
+  serialized_end=4947,
 )
 
 
@@ -3328,8 +3328,8 @@ _SERVICEACTIONREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=4935,
-  serialized_end=5040,
+  serialized_start=4949,
+  serialized_end=5054,
 )
 
 
@@ -3359,8 +3359,8 @@ _SERVICEACTIONRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5042,
-  serialized_end=5081,
+  serialized_start=5056,
+  serialized_end=5095,
 )
 
 
@@ -3397,8 +3397,8 @@ _GETWLANCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5083,
-  serialized_end=5134,
+  serialized_start=5097,
+  serialized_end=5148,
 )
 
 
@@ -3428,8 +3428,8 @@ _GETWLANCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5136,
-  serialized_end=5194,
+  serialized_start=5150,
+  serialized_end=5208,
 )
 
 
@@ -3466,8 +3466,8 @@ _SETWLANCONFIGREQUEST_CONFIGENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=582,
-  serialized_end=627,
+  serialized_start=596,
+  serialized_end=641,
 )
 
 _SETWLANCONFIGREQUEST = _descriptor.Descriptor(
@@ -3510,8 +3510,8 @@ _SETWLANCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5197,
-  serialized_end=5351,
+  serialized_start=5211,
+  serialized_end=5365,
 )
 
 
@@ -3541,8 +3541,8 @@ _SETWLANCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5353,
-  serialized_end=5392,
+  serialized_start=5367,
+  serialized_end=5406,
 )
 
 
@@ -3572,8 +3572,8 @@ _GETEMANECONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5394,
-  serialized_end=5434,
+  serialized_start=5408,
+  serialized_end=5448,
 )
 
 
@@ -3603,8 +3603,8 @@ _GETEMANECONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5436,
-  serialized_end=5495,
+  serialized_start=5450,
+  serialized_end=5509,
 )
 
 
@@ -3641,8 +3641,8 @@ _SETEMANECONFIGREQUEST_CONFIGENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=582,
-  serialized_end=627,
+  serialized_start=596,
+  serialized_end=641,
 )
 
 _SETEMANECONFIGREQUEST = _descriptor.Descriptor(
@@ -3678,8 +3678,8 @@ _SETEMANECONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5498,
-  serialized_end=5642,
+  serialized_start=5512,
+  serialized_end=5656,
 )
 
 
@@ -3709,8 +3709,8 @@ _SETEMANECONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5644,
-  serialized_end=5684,
+  serialized_start=5658,
+  serialized_end=5698,
 )
 
 
@@ -3740,8 +3740,8 @@ _GETEMANEMODELSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5686,
-  serialized_end=5726,
+  serialized_start=5700,
+  serialized_end=5740,
 )
 
 
@@ -3771,8 +3771,8 @@ _GETEMANEMODELSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5728,
-  serialized_end=5768,
+  serialized_start=5742,
+  serialized_end=5782,
 )
 
 
@@ -3823,8 +3823,8 @@ _GETEMANEMODELCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5770,
-  serialized_end=5861,
+  serialized_start=5784,
+  serialized_end=5875,
 )
 
 
@@ -3854,8 +3854,8 @@ _GETEMANEMODELCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5863,
-  serialized_end=5927,
+  serialized_start=5877,
+  serialized_end=5941,
 )
 
 
@@ -3892,8 +3892,8 @@ _SETEMANEMODELCONFIGREQUEST_CONFIGENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=582,
-  serialized_end=627,
+  serialized_start=596,
+  serialized_end=641,
 )
 
 _SETEMANEMODELCONFIGREQUEST = _descriptor.Descriptor(
@@ -3950,8 +3950,8 @@ _SETEMANEMODELCONFIGREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=5930,
-  serialized_end=6130,
+  serialized_start=5944,
+  serialized_end=6144,
 )
 
 
@@ -3981,8 +3981,8 @@ _SETEMANEMODELCONFIGRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6132,
-  serialized_end=6177,
+  serialized_start=6146,
+  serialized_end=6191,
 )
 
 
@@ -4012,8 +4012,8 @@ _GETEMANEMODELCONFIGSREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6179,
-  serialized_end=6225,
+  serialized_start=6193,
+  serialized_end=6239,
 )
 
 
@@ -4050,8 +4050,8 @@ _GETEMANEMODELCONFIGSRESPONSE_MODELCONFIG = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6326,
-  serialized_end=6389,
+  serialized_start=6340,
+  serialized_end=6403,
 )
 
 _GETEMANEMODELCONFIGSRESPONSE_CONFIGSENTRY = _descriptor.Descriptor(
@@ -4087,8 +4087,8 @@ _GETEMANEMODELCONFIGSRESPONSE_CONFIGSENTRY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6391,
-  serialized_end=6485,
+  serialized_start=6405,
+  serialized_end=6499,
 )
 
 _GETEMANEMODELCONFIGSRESPONSE = _descriptor.Descriptor(
@@ -4117,8 +4117,8 @@ _GETEMANEMODELCONFIGSRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6228,
-  serialized_end=6485,
+  serialized_start=6242,
+  serialized_end=6499,
 )
 
 
@@ -4148,8 +4148,8 @@ _SAVEXMLREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6487,
-  serialized_end=6520,
+  serialized_start=6501,
+  serialized_end=6534,
 )
 
 
@@ -4179,8 +4179,8 @@ _SAVEXMLRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6522,
-  serialized_end=6553,
+  serialized_start=6536,
+  serialized_end=6567,
 )
 
 
@@ -4210,8 +4210,8 @@ _OPENXMLREQUEST = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6555,
-  serialized_end=6585,
+  serialized_start=6569,
+  serialized_end=6599,
 )
 
 
@@ -4248,8 +4248,8 @@ _OPENXMLRESPONSE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6587,
-  serialized_end=6637,
+  serialized_start=6601,
+  serialized_end=6651,
 )
 
 
@@ -4293,8 +4293,8 @@ _HOOK = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6639,
-  serialized_end=6708,
+  serialized_start=6653,
+  serialized_end=6722,
 )
 
 
@@ -4331,8 +4331,8 @@ _SERVICEDEFAULTS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6710,
-  serialized_end=6764,
+  serialized_start=6724,
+  serialized_end=6778,
 )
 
 
@@ -4369,8 +4369,8 @@ _SERVICE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6766,
-  serialized_end=6804,
+  serialized_start=6780,
+  serialized_end=6818,
 )
 
 
@@ -4463,8 +4463,8 @@ _NODESERVICEDATA = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=6807,
-  serialized_end=7045,
+  serialized_start=6821,
+  serialized_end=7059,
 )
 
 
@@ -4501,8 +4501,8 @@ _CONFIGGROUP = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7047,
-  serialized_end=7111,
+  serialized_start=7061,
+  serialized_end=7125,
 )
 
 
@@ -4560,8 +4560,8 @@ _CONFIGOPTION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7113,
-  serialized_end=7201,
+  serialized_start=7127,
+  serialized_end=7215,
 )
 
 
@@ -4612,8 +4612,8 @@ _SESSION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7203,
-  serialized_end=7313,
+  serialized_start=7217,
+  serialized_end=7327,
 )
 
 
@@ -4657,8 +4657,8 @@ _SESSIONSUMMARY = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7315,
-  serialized_end=7393,
+  serialized_start=7329,
+  serialized_end=7407,
 )
 
 
@@ -4744,8 +4744,8 @@ _NODE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7396,
-  serialized_end=7570,
+  serialized_start=7410,
+  serialized_end=7584,
 )
 
 
@@ -4810,8 +4810,8 @@ _LINK = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7573,
-  serialized_end=7761,
+  serialized_start=7587,
+  serialized_end=7775,
 )
 
 
@@ -4911,8 +4911,8 @@ _LINKOPTIONS = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7764,
-  serialized_end=7950,
+  serialized_start=7778,
+  serialized_end=7964,
 )
 
 
@@ -5005,8 +5005,8 @@ _INTERFACE = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=7953,
-  serialized_end=8107,
+  serialized_start=7967,
+  serialized_end=8121,
 )
 
 
@@ -5071,8 +5071,8 @@ _POSITION = _descriptor.Descriptor(
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=8109,
-  serialized_end=8191,
+  serialized_start=8123,
+  serialized_end=8205,
 )
 
 _CREATESESSIONRESPONSE.fields_by_name['state'].enum_type = _SESSIONSTATE
@@ -5259,70 +5259,70 @@ _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 CreateSessionRequest = _reflection.GeneratedProtocolMessageType('CreateSessionRequest', (_message.Message,), dict(
   DESCRIPTOR = _CREATESESSIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.CreateSessionRequest)
   ))
 _sym_db.RegisterMessage(CreateSessionRequest)
 
 CreateSessionResponse = _reflection.GeneratedProtocolMessageType('CreateSessionResponse', (_message.Message,), dict(
   DESCRIPTOR = _CREATESESSIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.CreateSessionResponse)
   ))
 _sym_db.RegisterMessage(CreateSessionResponse)
 
 DeleteSessionRequest = _reflection.GeneratedProtocolMessageType('DeleteSessionRequest', (_message.Message,), dict(
   DESCRIPTOR = _DELETESESSIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteSessionRequest)
   ))
 _sym_db.RegisterMessage(DeleteSessionRequest)
 
 DeleteSessionResponse = _reflection.GeneratedProtocolMessageType('DeleteSessionResponse', (_message.Message,), dict(
   DESCRIPTOR = _DELETESESSIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteSessionResponse)
   ))
 _sym_db.RegisterMessage(DeleteSessionResponse)
 
 GetSessionsRequest = _reflection.GeneratedProtocolMessageType('GetSessionsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionsRequest)
   ))
 _sym_db.RegisterMessage(GetSessionsRequest)
 
 GetSessionsResponse = _reflection.GeneratedProtocolMessageType('GetSessionsResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionsResponse)
   ))
 _sym_db.RegisterMessage(GetSessionsResponse)
 
 GetSessionRequest = _reflection.GeneratedProtocolMessageType('GetSessionRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionRequest)
   ))
 _sym_db.RegisterMessage(GetSessionRequest)
 
 GetSessionResponse = _reflection.GeneratedProtocolMessageType('GetSessionResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionResponse)
   ))
 _sym_db.RegisterMessage(GetSessionResponse)
 
 GetSessionOptionsRequest = _reflection.GeneratedProtocolMessageType('GetSessionOptionsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONOPTIONSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionOptionsRequest)
   ))
 _sym_db.RegisterMessage(GetSessionOptionsRequest)
 
 GetSessionOptionsResponse = _reflection.GeneratedProtocolMessageType('GetSessionOptionsResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONOPTIONSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionOptionsResponse)
   ))
 _sym_db.RegisterMessage(GetSessionOptionsResponse)
@@ -5331,12 +5331,12 @@ SetSessionOptionsRequest = _reflection.GeneratedProtocolMessageType('SetSessionO
 
   ConfigEntry = _reflection.GeneratedProtocolMessageType('ConfigEntry', (_message.Message,), dict(
     DESCRIPTOR = _SETSESSIONOPTIONSREQUEST_CONFIGENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.SetSessionOptionsRequest.ConfigEntry)
     ))
   ,
   DESCRIPTOR = _SETSESSIONOPTIONSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionOptionsRequest)
   ))
 _sym_db.RegisterMessage(SetSessionOptionsRequest)
@@ -5344,280 +5344,280 @@ _sym_db.RegisterMessage(SetSessionOptionsRequest.ConfigEntry)
 
 SetSessionOptionsResponse = _reflection.GeneratedProtocolMessageType('SetSessionOptionsResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETSESSIONOPTIONSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionOptionsResponse)
   ))
 _sym_db.RegisterMessage(SetSessionOptionsResponse)
 
 GetSessionLocationRequest = _reflection.GeneratedProtocolMessageType('GetSessionLocationRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONLOCATIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionLocationRequest)
   ))
 _sym_db.RegisterMessage(GetSessionLocationRequest)
 
 GetSessionLocationResponse = _reflection.GeneratedProtocolMessageType('GetSessionLocationResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSESSIONLOCATIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetSessionLocationResponse)
   ))
 _sym_db.RegisterMessage(GetSessionLocationResponse)
 
 SetSessionLocationRequest = _reflection.GeneratedProtocolMessageType('SetSessionLocationRequest', (_message.Message,), dict(
   DESCRIPTOR = _SETSESSIONLOCATIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionLocationRequest)
   ))
 _sym_db.RegisterMessage(SetSessionLocationRequest)
 
 SetSessionLocationResponse = _reflection.GeneratedProtocolMessageType('SetSessionLocationResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETSESSIONLOCATIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionLocationResponse)
   ))
 _sym_db.RegisterMessage(SetSessionLocationResponse)
 
 SetSessionStateRequest = _reflection.GeneratedProtocolMessageType('SetSessionStateRequest', (_message.Message,), dict(
   DESCRIPTOR = _SETSESSIONSTATEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionStateRequest)
   ))
 _sym_db.RegisterMessage(SetSessionStateRequest)
 
 SetSessionStateResponse = _reflection.GeneratedProtocolMessageType('SetSessionStateResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETSESSIONSTATERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetSessionStateResponse)
   ))
 _sym_db.RegisterMessage(SetSessionStateResponse)
 
 NodeEventsRequest = _reflection.GeneratedProtocolMessageType('NodeEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _NODEEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.NodeEventsRequest)
   ))
 _sym_db.RegisterMessage(NodeEventsRequest)
 
 NodeEvent = _reflection.GeneratedProtocolMessageType('NodeEvent', (_message.Message,), dict(
   DESCRIPTOR = _NODEEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.NodeEvent)
   ))
 _sym_db.RegisterMessage(NodeEvent)
 
 LinkEventsRequest = _reflection.GeneratedProtocolMessageType('LinkEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _LINKEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.LinkEventsRequest)
   ))
 _sym_db.RegisterMessage(LinkEventsRequest)
 
 LinkEvent = _reflection.GeneratedProtocolMessageType('LinkEvent', (_message.Message,), dict(
   DESCRIPTOR = _LINKEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.LinkEvent)
   ))
 _sym_db.RegisterMessage(LinkEvent)
 
 SessionEventsRequest = _reflection.GeneratedProtocolMessageType('SessionEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _SESSIONEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SessionEventsRequest)
   ))
 _sym_db.RegisterMessage(SessionEventsRequest)
 
 SessionEvent = _reflection.GeneratedProtocolMessageType('SessionEvent', (_message.Message,), dict(
   DESCRIPTOR = _SESSIONEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SessionEvent)
   ))
 _sym_db.RegisterMessage(SessionEvent)
 
 ConfigEventsRequest = _reflection.GeneratedProtocolMessageType('ConfigEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _CONFIGEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ConfigEventsRequest)
   ))
 _sym_db.RegisterMessage(ConfigEventsRequest)
 
 ConfigEvent = _reflection.GeneratedProtocolMessageType('ConfigEvent', (_message.Message,), dict(
   DESCRIPTOR = _CONFIGEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ConfigEvent)
   ))
 _sym_db.RegisterMessage(ConfigEvent)
 
 ExceptionEventsRequest = _reflection.GeneratedProtocolMessageType('ExceptionEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _EXCEPTIONEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ExceptionEventsRequest)
   ))
 _sym_db.RegisterMessage(ExceptionEventsRequest)
 
 ExceptionEvent = _reflection.GeneratedProtocolMessageType('ExceptionEvent', (_message.Message,), dict(
   DESCRIPTOR = _EXCEPTIONEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ExceptionEvent)
   ))
 _sym_db.RegisterMessage(ExceptionEvent)
 
 FileEventsRequest = _reflection.GeneratedProtocolMessageType('FileEventsRequest', (_message.Message,), dict(
   DESCRIPTOR = _FILEEVENTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.FileEventsRequest)
   ))
 _sym_db.RegisterMessage(FileEventsRequest)
 
 FileEvent = _reflection.GeneratedProtocolMessageType('FileEvent', (_message.Message,), dict(
   DESCRIPTOR = _FILEEVENT,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.FileEvent)
   ))
 _sym_db.RegisterMessage(FileEvent)
 
 AddNodeRequest = _reflection.GeneratedProtocolMessageType('AddNodeRequest', (_message.Message,), dict(
   DESCRIPTOR = _ADDNODEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddNodeRequest)
   ))
 _sym_db.RegisterMessage(AddNodeRequest)
 
 AddNodeResponse = _reflection.GeneratedProtocolMessageType('AddNodeResponse', (_message.Message,), dict(
   DESCRIPTOR = _ADDNODERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddNodeResponse)
   ))
 _sym_db.RegisterMessage(AddNodeResponse)
 
 GetNodeRequest = _reflection.GeneratedProtocolMessageType('GetNodeRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETNODEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeRequest)
   ))
 _sym_db.RegisterMessage(GetNodeRequest)
 
 GetNodeResponse = _reflection.GeneratedProtocolMessageType('GetNodeResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETNODERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeResponse)
   ))
 _sym_db.RegisterMessage(GetNodeResponse)
 
 EditNodeRequest = _reflection.GeneratedProtocolMessageType('EditNodeRequest', (_message.Message,), dict(
   DESCRIPTOR = _EDITNODEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.EditNodeRequest)
   ))
 _sym_db.RegisterMessage(EditNodeRequest)
 
 EditNodeResponse = _reflection.GeneratedProtocolMessageType('EditNodeResponse', (_message.Message,), dict(
   DESCRIPTOR = _EDITNODERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.EditNodeResponse)
   ))
 _sym_db.RegisterMessage(EditNodeResponse)
 
 DeleteNodeRequest = _reflection.GeneratedProtocolMessageType('DeleteNodeRequest', (_message.Message,), dict(
   DESCRIPTOR = _DELETENODEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteNodeRequest)
   ))
 _sym_db.RegisterMessage(DeleteNodeRequest)
 
 DeleteNodeResponse = _reflection.GeneratedProtocolMessageType('DeleteNodeResponse', (_message.Message,), dict(
   DESCRIPTOR = _DELETENODERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteNodeResponse)
   ))
 _sym_db.RegisterMessage(DeleteNodeResponse)
 
 GetNodeLinksRequest = _reflection.GeneratedProtocolMessageType('GetNodeLinksRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETNODELINKSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeLinksRequest)
   ))
 _sym_db.RegisterMessage(GetNodeLinksRequest)
 
 GetNodeLinksResponse = _reflection.GeneratedProtocolMessageType('GetNodeLinksResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETNODELINKSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeLinksResponse)
   ))
 _sym_db.RegisterMessage(GetNodeLinksResponse)
 
 AddLinkRequest = _reflection.GeneratedProtocolMessageType('AddLinkRequest', (_message.Message,), dict(
   DESCRIPTOR = _ADDLINKREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddLinkRequest)
   ))
 _sym_db.RegisterMessage(AddLinkRequest)
 
 AddLinkResponse = _reflection.GeneratedProtocolMessageType('AddLinkResponse', (_message.Message,), dict(
   DESCRIPTOR = _ADDLINKRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddLinkResponse)
   ))
 _sym_db.RegisterMessage(AddLinkResponse)
 
 EditLinkRequest = _reflection.GeneratedProtocolMessageType('EditLinkRequest', (_message.Message,), dict(
   DESCRIPTOR = _EDITLINKREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.EditLinkRequest)
   ))
 _sym_db.RegisterMessage(EditLinkRequest)
 
 EditLinkResponse = _reflection.GeneratedProtocolMessageType('EditLinkResponse', (_message.Message,), dict(
   DESCRIPTOR = _EDITLINKRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.EditLinkResponse)
   ))
 _sym_db.RegisterMessage(EditLinkResponse)
 
 DeleteLinkRequest = _reflection.GeneratedProtocolMessageType('DeleteLinkRequest', (_message.Message,), dict(
   DESCRIPTOR = _DELETELINKREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteLinkRequest)
   ))
 _sym_db.RegisterMessage(DeleteLinkRequest)
 
 DeleteLinkResponse = _reflection.GeneratedProtocolMessageType('DeleteLinkResponse', (_message.Message,), dict(
   DESCRIPTOR = _DELETELINKRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.DeleteLinkResponse)
   ))
 _sym_db.RegisterMessage(DeleteLinkResponse)
 
 GetHooksRequest = _reflection.GeneratedProtocolMessageType('GetHooksRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETHOOKSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetHooksRequest)
   ))
 _sym_db.RegisterMessage(GetHooksRequest)
 
 GetHooksResponse = _reflection.GeneratedProtocolMessageType('GetHooksResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETHOOKSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetHooksResponse)
   ))
 _sym_db.RegisterMessage(GetHooksResponse)
 
 AddHookRequest = _reflection.GeneratedProtocolMessageType('AddHookRequest', (_message.Message,), dict(
   DESCRIPTOR = _ADDHOOKREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddHookRequest)
   ))
 _sym_db.RegisterMessage(AddHookRequest)
 
 AddHookResponse = _reflection.GeneratedProtocolMessageType('AddHookResponse', (_message.Message,), dict(
   DESCRIPTOR = _ADDHOOKRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.AddHookResponse)
   ))
 _sym_db.RegisterMessage(AddHookResponse)
 
 GetMobilityConfigsRequest = _reflection.GeneratedProtocolMessageType('GetMobilityConfigsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETMOBILITYCONFIGSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetMobilityConfigsRequest)
   ))
 _sym_db.RegisterMessage(GetMobilityConfigsRequest)
@@ -5626,19 +5626,19 @@ GetMobilityConfigsResponse = _reflection.GeneratedProtocolMessageType('GetMobili
 
   MobilityConfig = _reflection.GeneratedProtocolMessageType('MobilityConfig', (_message.Message,), dict(
     DESCRIPTOR = _GETMOBILITYCONFIGSRESPONSE_MOBILITYCONFIG,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.GetMobilityConfigsResponse.MobilityConfig)
     ))
   ,
 
   ConfigsEntry = _reflection.GeneratedProtocolMessageType('ConfigsEntry', (_message.Message,), dict(
     DESCRIPTOR = _GETMOBILITYCONFIGSRESPONSE_CONFIGSENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.GetMobilityConfigsResponse.ConfigsEntry)
     ))
   ,
   DESCRIPTOR = _GETMOBILITYCONFIGSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetMobilityConfigsResponse)
   ))
 _sym_db.RegisterMessage(GetMobilityConfigsResponse)
@@ -5647,14 +5647,14 @@ _sym_db.RegisterMessage(GetMobilityConfigsResponse.ConfigsEntry)
 
 GetMobilityConfigRequest = _reflection.GeneratedProtocolMessageType('GetMobilityConfigRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETMOBILITYCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetMobilityConfigRequest)
   ))
 _sym_db.RegisterMessage(GetMobilityConfigRequest)
 
 GetMobilityConfigResponse = _reflection.GeneratedProtocolMessageType('GetMobilityConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETMOBILITYCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetMobilityConfigResponse)
   ))
 _sym_db.RegisterMessage(GetMobilityConfigResponse)
@@ -5663,12 +5663,12 @@ SetMobilityConfigRequest = _reflection.GeneratedProtocolMessageType('SetMobility
 
   ConfigEntry = _reflection.GeneratedProtocolMessageType('ConfigEntry', (_message.Message,), dict(
     DESCRIPTOR = _SETMOBILITYCONFIGREQUEST_CONFIGENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.SetMobilityConfigRequest.ConfigEntry)
     ))
   ,
   DESCRIPTOR = _SETMOBILITYCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetMobilityConfigRequest)
   ))
 _sym_db.RegisterMessage(SetMobilityConfigRequest)
@@ -5676,147 +5676,147 @@ _sym_db.RegisterMessage(SetMobilityConfigRequest.ConfigEntry)
 
 SetMobilityConfigResponse = _reflection.GeneratedProtocolMessageType('SetMobilityConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETMOBILITYCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetMobilityConfigResponse)
   ))
 _sym_db.RegisterMessage(SetMobilityConfigResponse)
 
 MobilityActionRequest = _reflection.GeneratedProtocolMessageType('MobilityActionRequest', (_message.Message,), dict(
   DESCRIPTOR = _MOBILITYACTIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.MobilityActionRequest)
   ))
 _sym_db.RegisterMessage(MobilityActionRequest)
 
 MobilityActionResponse = _reflection.GeneratedProtocolMessageType('MobilityActionResponse', (_message.Message,), dict(
   DESCRIPTOR = _MOBILITYACTIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.MobilityActionResponse)
   ))
 _sym_db.RegisterMessage(MobilityActionResponse)
 
 GetServicesRequest = _reflection.GeneratedProtocolMessageType('GetServicesRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSERVICESREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetServicesRequest)
   ))
 _sym_db.RegisterMessage(GetServicesRequest)
 
 GetServicesResponse = _reflection.GeneratedProtocolMessageType('GetServicesResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSERVICESRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetServicesResponse)
   ))
 _sym_db.RegisterMessage(GetServicesResponse)
 
 GetServiceDefaultsRequest = _reflection.GeneratedProtocolMessageType('GetServiceDefaultsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETSERVICEDEFAULTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetServiceDefaultsRequest)
   ))
 _sym_db.RegisterMessage(GetServiceDefaultsRequest)
 
 GetServiceDefaultsResponse = _reflection.GeneratedProtocolMessageType('GetServiceDefaultsResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETSERVICEDEFAULTSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetServiceDefaultsResponse)
   ))
 _sym_db.RegisterMessage(GetServiceDefaultsResponse)
 
 SetServiceDefaultsRequest = _reflection.GeneratedProtocolMessageType('SetServiceDefaultsRequest', (_message.Message,), dict(
   DESCRIPTOR = _SETSERVICEDEFAULTSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetServiceDefaultsRequest)
   ))
 _sym_db.RegisterMessage(SetServiceDefaultsRequest)
 
 SetServiceDefaultsResponse = _reflection.GeneratedProtocolMessageType('SetServiceDefaultsResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETSERVICEDEFAULTSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetServiceDefaultsResponse)
   ))
 _sym_db.RegisterMessage(SetServiceDefaultsResponse)
 
 GetNodeServiceRequest = _reflection.GeneratedProtocolMessageType('GetNodeServiceRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETNODESERVICEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeServiceRequest)
   ))
 _sym_db.RegisterMessage(GetNodeServiceRequest)
 
 GetNodeServiceResponse = _reflection.GeneratedProtocolMessageType('GetNodeServiceResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETNODESERVICERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeServiceResponse)
   ))
 _sym_db.RegisterMessage(GetNodeServiceResponse)
 
 GetNodeServiceFileRequest = _reflection.GeneratedProtocolMessageType('GetNodeServiceFileRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETNODESERVICEFILEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeServiceFileRequest)
   ))
 _sym_db.RegisterMessage(GetNodeServiceFileRequest)
 
 GetNodeServiceFileResponse = _reflection.GeneratedProtocolMessageType('GetNodeServiceFileResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETNODESERVICEFILERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetNodeServiceFileResponse)
   ))
 _sym_db.RegisterMessage(GetNodeServiceFileResponse)
 
 SetNodeServiceRequest = _reflection.GeneratedProtocolMessageType('SetNodeServiceRequest', (_message.Message,), dict(
   DESCRIPTOR = _SETNODESERVICEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetNodeServiceRequest)
   ))
 _sym_db.RegisterMessage(SetNodeServiceRequest)
 
 SetNodeServiceResponse = _reflection.GeneratedProtocolMessageType('SetNodeServiceResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETNODESERVICERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetNodeServiceResponse)
   ))
 _sym_db.RegisterMessage(SetNodeServiceResponse)
 
 SetNodeServiceFileRequest = _reflection.GeneratedProtocolMessageType('SetNodeServiceFileRequest', (_message.Message,), dict(
   DESCRIPTOR = _SETNODESERVICEFILEREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetNodeServiceFileRequest)
   ))
 _sym_db.RegisterMessage(SetNodeServiceFileRequest)
 
 SetNodeServiceFileResponse = _reflection.GeneratedProtocolMessageType('SetNodeServiceFileResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETNODESERVICEFILERESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetNodeServiceFileResponse)
   ))
 _sym_db.RegisterMessage(SetNodeServiceFileResponse)
 
 ServiceActionRequest = _reflection.GeneratedProtocolMessageType('ServiceActionRequest', (_message.Message,), dict(
   DESCRIPTOR = _SERVICEACTIONREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ServiceActionRequest)
   ))
 _sym_db.RegisterMessage(ServiceActionRequest)
 
 ServiceActionResponse = _reflection.GeneratedProtocolMessageType('ServiceActionResponse', (_message.Message,), dict(
   DESCRIPTOR = _SERVICEACTIONRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ServiceActionResponse)
   ))
 _sym_db.RegisterMessage(ServiceActionResponse)
 
 GetWlanConfigRequest = _reflection.GeneratedProtocolMessageType('GetWlanConfigRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETWLANCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetWlanConfigRequest)
   ))
 _sym_db.RegisterMessage(GetWlanConfigRequest)
 
 GetWlanConfigResponse = _reflection.GeneratedProtocolMessageType('GetWlanConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETWLANCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetWlanConfigResponse)
   ))
 _sym_db.RegisterMessage(GetWlanConfigResponse)
@@ -5825,12 +5825,12 @@ SetWlanConfigRequest = _reflection.GeneratedProtocolMessageType('SetWlanConfigRe
 
   ConfigEntry = _reflection.GeneratedProtocolMessageType('ConfigEntry', (_message.Message,), dict(
     DESCRIPTOR = _SETWLANCONFIGREQUEST_CONFIGENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.SetWlanConfigRequest.ConfigEntry)
     ))
   ,
   DESCRIPTOR = _SETWLANCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetWlanConfigRequest)
   ))
 _sym_db.RegisterMessage(SetWlanConfigRequest)
@@ -5838,21 +5838,21 @@ _sym_db.RegisterMessage(SetWlanConfigRequest.ConfigEntry)
 
 SetWlanConfigResponse = _reflection.GeneratedProtocolMessageType('SetWlanConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETWLANCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetWlanConfigResponse)
   ))
 _sym_db.RegisterMessage(SetWlanConfigResponse)
 
 GetEmaneConfigRequest = _reflection.GeneratedProtocolMessageType('GetEmaneConfigRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANECONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneConfigRequest)
   ))
 _sym_db.RegisterMessage(GetEmaneConfigRequest)
 
 GetEmaneConfigResponse = _reflection.GeneratedProtocolMessageType('GetEmaneConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANECONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneConfigResponse)
   ))
 _sym_db.RegisterMessage(GetEmaneConfigResponse)
@@ -5861,12 +5861,12 @@ SetEmaneConfigRequest = _reflection.GeneratedProtocolMessageType('SetEmaneConfig
 
   ConfigEntry = _reflection.GeneratedProtocolMessageType('ConfigEntry', (_message.Message,), dict(
     DESCRIPTOR = _SETEMANECONFIGREQUEST_CONFIGENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.SetEmaneConfigRequest.ConfigEntry)
     ))
   ,
   DESCRIPTOR = _SETEMANECONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetEmaneConfigRequest)
   ))
 _sym_db.RegisterMessage(SetEmaneConfigRequest)
@@ -5874,35 +5874,35 @@ _sym_db.RegisterMessage(SetEmaneConfigRequest.ConfigEntry)
 
 SetEmaneConfigResponse = _reflection.GeneratedProtocolMessageType('SetEmaneConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETEMANECONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetEmaneConfigResponse)
   ))
 _sym_db.RegisterMessage(SetEmaneConfigResponse)
 
 GetEmaneModelsRequest = _reflection.GeneratedProtocolMessageType('GetEmaneModelsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANEMODELSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelsRequest)
   ))
 _sym_db.RegisterMessage(GetEmaneModelsRequest)
 
 GetEmaneModelsResponse = _reflection.GeneratedProtocolMessageType('GetEmaneModelsResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANEMODELSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelsResponse)
   ))
 _sym_db.RegisterMessage(GetEmaneModelsResponse)
 
 GetEmaneModelConfigRequest = _reflection.GeneratedProtocolMessageType('GetEmaneModelConfigRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANEMODELCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigRequest)
   ))
 _sym_db.RegisterMessage(GetEmaneModelConfigRequest)
 
 GetEmaneModelConfigResponse = _reflection.GeneratedProtocolMessageType('GetEmaneModelConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANEMODELCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigResponse)
   ))
 _sym_db.RegisterMessage(GetEmaneModelConfigResponse)
@@ -5911,12 +5911,12 @@ SetEmaneModelConfigRequest = _reflection.GeneratedProtocolMessageType('SetEmaneM
 
   ConfigEntry = _reflection.GeneratedProtocolMessageType('ConfigEntry', (_message.Message,), dict(
     DESCRIPTOR = _SETEMANEMODELCONFIGREQUEST_CONFIGENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.SetEmaneModelConfigRequest.ConfigEntry)
     ))
   ,
   DESCRIPTOR = _SETEMANEMODELCONFIGREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetEmaneModelConfigRequest)
   ))
 _sym_db.RegisterMessage(SetEmaneModelConfigRequest)
@@ -5924,14 +5924,14 @@ _sym_db.RegisterMessage(SetEmaneModelConfigRequest.ConfigEntry)
 
 SetEmaneModelConfigResponse = _reflection.GeneratedProtocolMessageType('SetEmaneModelConfigResponse', (_message.Message,), dict(
   DESCRIPTOR = _SETEMANEMODELCONFIGRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SetEmaneModelConfigResponse)
   ))
 _sym_db.RegisterMessage(SetEmaneModelConfigResponse)
 
 GetEmaneModelConfigsRequest = _reflection.GeneratedProtocolMessageType('GetEmaneModelConfigsRequest', (_message.Message,), dict(
   DESCRIPTOR = _GETEMANEMODELCONFIGSREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigsRequest)
   ))
 _sym_db.RegisterMessage(GetEmaneModelConfigsRequest)
@@ -5940,19 +5940,19 @@ GetEmaneModelConfigsResponse = _reflection.GeneratedProtocolMessageType('GetEman
 
   ModelConfig = _reflection.GeneratedProtocolMessageType('ModelConfig', (_message.Message,), dict(
     DESCRIPTOR = _GETEMANEMODELCONFIGSRESPONSE_MODELCONFIG,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigsResponse.ModelConfig)
     ))
   ,
 
   ConfigsEntry = _reflection.GeneratedProtocolMessageType('ConfigsEntry', (_message.Message,), dict(
     DESCRIPTOR = _GETEMANEMODELCONFIGSRESPONSE_CONFIGSENTRY,
-    __module__ = 'core_pb2'
+    __module__ = 'core.api.grpc.core_pb2'
     # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigsResponse.ConfigsEntry)
     ))
   ,
   DESCRIPTOR = _GETEMANEMODELCONFIGSRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.GetEmaneModelConfigsResponse)
   ))
 _sym_db.RegisterMessage(GetEmaneModelConfigsResponse)
@@ -5961,119 +5961,119 @@ _sym_db.RegisterMessage(GetEmaneModelConfigsResponse.ConfigsEntry)
 
 SaveXmlRequest = _reflection.GeneratedProtocolMessageType('SaveXmlRequest', (_message.Message,), dict(
   DESCRIPTOR = _SAVEXMLREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SaveXmlRequest)
   ))
 _sym_db.RegisterMessage(SaveXmlRequest)
 
 SaveXmlResponse = _reflection.GeneratedProtocolMessageType('SaveXmlResponse', (_message.Message,), dict(
   DESCRIPTOR = _SAVEXMLRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SaveXmlResponse)
   ))
 _sym_db.RegisterMessage(SaveXmlResponse)
 
 OpenXmlRequest = _reflection.GeneratedProtocolMessageType('OpenXmlRequest', (_message.Message,), dict(
   DESCRIPTOR = _OPENXMLREQUEST,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.OpenXmlRequest)
   ))
 _sym_db.RegisterMessage(OpenXmlRequest)
 
 OpenXmlResponse = _reflection.GeneratedProtocolMessageType('OpenXmlResponse', (_message.Message,), dict(
   DESCRIPTOR = _OPENXMLRESPONSE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.OpenXmlResponse)
   ))
 _sym_db.RegisterMessage(OpenXmlResponse)
 
 Hook = _reflection.GeneratedProtocolMessageType('Hook', (_message.Message,), dict(
   DESCRIPTOR = _HOOK,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Hook)
   ))
 _sym_db.RegisterMessage(Hook)
 
 ServiceDefaults = _reflection.GeneratedProtocolMessageType('ServiceDefaults', (_message.Message,), dict(
   DESCRIPTOR = _SERVICEDEFAULTS,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ServiceDefaults)
   ))
 _sym_db.RegisterMessage(ServiceDefaults)
 
 Service = _reflection.GeneratedProtocolMessageType('Service', (_message.Message,), dict(
   DESCRIPTOR = _SERVICE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Service)
   ))
 _sym_db.RegisterMessage(Service)
 
 NodeServiceData = _reflection.GeneratedProtocolMessageType('NodeServiceData', (_message.Message,), dict(
   DESCRIPTOR = _NODESERVICEDATA,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.NodeServiceData)
   ))
 _sym_db.RegisterMessage(NodeServiceData)
 
 ConfigGroup = _reflection.GeneratedProtocolMessageType('ConfigGroup', (_message.Message,), dict(
   DESCRIPTOR = _CONFIGGROUP,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ConfigGroup)
   ))
 _sym_db.RegisterMessage(ConfigGroup)
 
 ConfigOption = _reflection.GeneratedProtocolMessageType('ConfigOption', (_message.Message,), dict(
   DESCRIPTOR = _CONFIGOPTION,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.ConfigOption)
   ))
 _sym_db.RegisterMessage(ConfigOption)
 
 Session = _reflection.GeneratedProtocolMessageType('Session', (_message.Message,), dict(
   DESCRIPTOR = _SESSION,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Session)
   ))
 _sym_db.RegisterMessage(Session)
 
 SessionSummary = _reflection.GeneratedProtocolMessageType('SessionSummary', (_message.Message,), dict(
   DESCRIPTOR = _SESSIONSUMMARY,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.SessionSummary)
   ))
 _sym_db.RegisterMessage(SessionSummary)
 
 Node = _reflection.GeneratedProtocolMessageType('Node', (_message.Message,), dict(
   DESCRIPTOR = _NODE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Node)
   ))
 _sym_db.RegisterMessage(Node)
 
 Link = _reflection.GeneratedProtocolMessageType('Link', (_message.Message,), dict(
   DESCRIPTOR = _LINK,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Link)
   ))
 _sym_db.RegisterMessage(Link)
 
 LinkOptions = _reflection.GeneratedProtocolMessageType('LinkOptions', (_message.Message,), dict(
   DESCRIPTOR = _LINKOPTIONS,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.LinkOptions)
   ))
 _sym_db.RegisterMessage(LinkOptions)
 
 Interface = _reflection.GeneratedProtocolMessageType('Interface', (_message.Message,), dict(
   DESCRIPTOR = _INTERFACE,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Interface)
   ))
 _sym_db.RegisterMessage(Interface)
 
 Position = _reflection.GeneratedProtocolMessageType('Position', (_message.Message,), dict(
   DESCRIPTOR = _POSITION,
-  __module__ = 'core_pb2'
+  __module__ = 'core.api.grpc.core_pb2'
   # @@protoc_insertion_point(class_scope:core.Position)
   ))
 _sym_db.RegisterMessage(Position)
@@ -6093,8 +6093,8 @@ _COREAPI = _descriptor.ServiceDescriptor(
   file=DESCRIPTOR,
   index=0,
   serialized_options=None,
-  serialized_start=9243,
-  serialized_end=12797,
+  serialized_start=9257,
+  serialized_end=12811,
   methods=[
   _descriptor.MethodDescriptor(
     name='CreateSession',
diff --git a/daemon/core/api/grpc/core_pb2_grpc.py b/daemon/core/api/grpc/core_pb2_grpc.py
index 5535b32b..fc3a622c 100644
--- a/daemon/core/api/grpc/core_pb2_grpc.py
+++ b/daemon/core/api/grpc/core_pb2_grpc.py
@@ -1,7 +1,7 @@
 # Generated by the gRPC Python protocol compiler plugin. DO NOT EDIT!
 import grpc
 
-import core_pb2 as core__pb2
+from core.api.grpc import core_pb2 as core_dot_api_dot_grpc_dot_core__pb2
 
 
 class CoreApiStub(object):
@@ -16,238 +16,238 @@ class CoreApiStub(object):
     """
     self.CreateSession = channel.unary_unary(
         '/core.CoreApi/CreateSession',
-        request_serializer=core__pb2.CreateSessionRequest.SerializeToString,
-        response_deserializer=core__pb2.CreateSessionResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.CreateSessionRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.CreateSessionResponse.FromString,
         )
     self.DeleteSession = channel.unary_unary(
         '/core.CoreApi/DeleteSession',
-        request_serializer=core__pb2.DeleteSessionRequest.SerializeToString,
-        response_deserializer=core__pb2.DeleteSessionResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteSessionRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteSessionResponse.FromString,
         )
     self.GetSessions = channel.unary_unary(
         '/core.CoreApi/GetSessions',
-        request_serializer=core__pb2.GetSessionsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetSessionsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionsResponse.FromString,
         )
     self.GetSession = channel.unary_unary(
         '/core.CoreApi/GetSession',
-        request_serializer=core__pb2.GetSessionRequest.SerializeToString,
-        response_deserializer=core__pb2.GetSessionResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionResponse.FromString,
         )
     self.GetSessionOptions = channel.unary_unary(
         '/core.CoreApi/GetSessionOptions',
-        request_serializer=core__pb2.GetSessionOptionsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetSessionOptionsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionOptionsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionOptionsResponse.FromString,
         )
     self.SetSessionOptions = channel.unary_unary(
         '/core.CoreApi/SetSessionOptions',
-        request_serializer=core__pb2.SetSessionOptionsRequest.SerializeToString,
-        response_deserializer=core__pb2.SetSessionOptionsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionOptionsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionOptionsResponse.FromString,
         )
     self.GetSessionLocation = channel.unary_unary(
         '/core.CoreApi/GetSessionLocation',
-        request_serializer=core__pb2.GetSessionLocationRequest.SerializeToString,
-        response_deserializer=core__pb2.GetSessionLocationResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionLocationRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionLocationResponse.FromString,
         )
     self.SetSessionLocation = channel.unary_unary(
         '/core.CoreApi/SetSessionLocation',
-        request_serializer=core__pb2.SetSessionLocationRequest.SerializeToString,
-        response_deserializer=core__pb2.SetSessionLocationResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionLocationRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionLocationResponse.FromString,
         )
     self.SetSessionState = channel.unary_unary(
         '/core.CoreApi/SetSessionState',
-        request_serializer=core__pb2.SetSessionStateRequest.SerializeToString,
-        response_deserializer=core__pb2.SetSessionStateResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionStateRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionStateResponse.FromString,
         )
     self.NodeEvents = channel.unary_stream(
         '/core.CoreApi/NodeEvents',
-        request_serializer=core__pb2.NodeEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.NodeEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.NodeEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.NodeEvent.FromString,
         )
     self.LinkEvents = channel.unary_stream(
         '/core.CoreApi/LinkEvents',
-        request_serializer=core__pb2.LinkEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.LinkEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.LinkEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.LinkEvent.FromString,
         )
     self.SessionEvents = channel.unary_stream(
         '/core.CoreApi/SessionEvents',
-        request_serializer=core__pb2.SessionEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.SessionEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SessionEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SessionEvent.FromString,
         )
     self.ConfigEvents = channel.unary_stream(
         '/core.CoreApi/ConfigEvents',
-        request_serializer=core__pb2.ConfigEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.ConfigEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.ConfigEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ConfigEvent.FromString,
         )
     self.ExceptionEvents = channel.unary_stream(
         '/core.CoreApi/ExceptionEvents',
-        request_serializer=core__pb2.ExceptionEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.ExceptionEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.ExceptionEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ExceptionEvent.FromString,
         )
     self.FileEvents = channel.unary_stream(
         '/core.CoreApi/FileEvents',
-        request_serializer=core__pb2.FileEventsRequest.SerializeToString,
-        response_deserializer=core__pb2.FileEvent.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.FileEventsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.FileEvent.FromString,
         )
     self.AddNode = channel.unary_unary(
         '/core.CoreApi/AddNode',
-        request_serializer=core__pb2.AddNodeRequest.SerializeToString,
-        response_deserializer=core__pb2.AddNodeResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddNodeRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddNodeResponse.FromString,
         )
     self.GetNode = channel.unary_unary(
         '/core.CoreApi/GetNode',
-        request_serializer=core__pb2.GetNodeRequest.SerializeToString,
-        response_deserializer=core__pb2.GetNodeResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeResponse.FromString,
         )
     self.EditNode = channel.unary_unary(
         '/core.CoreApi/EditNode',
-        request_serializer=core__pb2.EditNodeRequest.SerializeToString,
-        response_deserializer=core__pb2.EditNodeResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.EditNodeRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.EditNodeResponse.FromString,
         )
     self.DeleteNode = channel.unary_unary(
         '/core.CoreApi/DeleteNode',
-        request_serializer=core__pb2.DeleteNodeRequest.SerializeToString,
-        response_deserializer=core__pb2.DeleteNodeResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteNodeRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteNodeResponse.FromString,
         )
     self.GetNodeLinks = channel.unary_unary(
         '/core.CoreApi/GetNodeLinks',
-        request_serializer=core__pb2.GetNodeLinksRequest.SerializeToString,
-        response_deserializer=core__pb2.GetNodeLinksResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeLinksRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeLinksResponse.FromString,
         )
     self.AddLink = channel.unary_unary(
         '/core.CoreApi/AddLink',
-        request_serializer=core__pb2.AddLinkRequest.SerializeToString,
-        response_deserializer=core__pb2.AddLinkResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddLinkRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddLinkResponse.FromString,
         )
     self.EditLink = channel.unary_unary(
         '/core.CoreApi/EditLink',
-        request_serializer=core__pb2.EditLinkRequest.SerializeToString,
-        response_deserializer=core__pb2.EditLinkResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.EditLinkRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.EditLinkResponse.FromString,
         )
     self.DeleteLink = channel.unary_unary(
         '/core.CoreApi/DeleteLink',
-        request_serializer=core__pb2.DeleteLinkRequest.SerializeToString,
-        response_deserializer=core__pb2.DeleteLinkResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteLinkRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteLinkResponse.FromString,
         )
     self.GetHooks = channel.unary_unary(
         '/core.CoreApi/GetHooks',
-        request_serializer=core__pb2.GetHooksRequest.SerializeToString,
-        response_deserializer=core__pb2.GetHooksResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetHooksRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetHooksResponse.FromString,
         )
     self.AddHook = channel.unary_unary(
         '/core.CoreApi/AddHook',
-        request_serializer=core__pb2.AddHookRequest.SerializeToString,
-        response_deserializer=core__pb2.AddHookResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddHookRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddHookResponse.FromString,
         )
     self.GetMobilityConfigs = channel.unary_unary(
         '/core.CoreApi/GetMobilityConfigs',
-        request_serializer=core__pb2.GetMobilityConfigsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetMobilityConfigsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigsResponse.FromString,
         )
     self.GetMobilityConfig = channel.unary_unary(
         '/core.CoreApi/GetMobilityConfig',
-        request_serializer=core__pb2.GetMobilityConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.GetMobilityConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigResponse.FromString,
         )
     self.SetMobilityConfig = channel.unary_unary(
         '/core.CoreApi/SetMobilityConfig',
-        request_serializer=core__pb2.SetMobilityConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.SetMobilityConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetMobilityConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetMobilityConfigResponse.FromString,
         )
     self.MobilityAction = channel.unary_unary(
         '/core.CoreApi/MobilityAction',
-        request_serializer=core__pb2.MobilityActionRequest.SerializeToString,
-        response_deserializer=core__pb2.MobilityActionResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.MobilityActionRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.MobilityActionResponse.FromString,
         )
     self.GetServices = channel.unary_unary(
         '/core.CoreApi/GetServices',
-        request_serializer=core__pb2.GetServicesRequest.SerializeToString,
-        response_deserializer=core__pb2.GetServicesResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetServicesRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetServicesResponse.FromString,
         )
     self.GetServiceDefaults = channel.unary_unary(
         '/core.CoreApi/GetServiceDefaults',
-        request_serializer=core__pb2.GetServiceDefaultsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetServiceDefaultsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetServiceDefaultsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetServiceDefaultsResponse.FromString,
         )
     self.SetServiceDefaults = channel.unary_unary(
         '/core.CoreApi/SetServiceDefaults',
-        request_serializer=core__pb2.SetServiceDefaultsRequest.SerializeToString,
-        response_deserializer=core__pb2.SetServiceDefaultsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetServiceDefaultsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetServiceDefaultsResponse.FromString,
         )
     self.GetNodeService = channel.unary_unary(
         '/core.CoreApi/GetNodeService',
-        request_serializer=core__pb2.GetNodeServiceRequest.SerializeToString,
-        response_deserializer=core__pb2.GetNodeServiceResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceResponse.FromString,
         )
     self.GetNodeServiceFile = channel.unary_unary(
         '/core.CoreApi/GetNodeServiceFile',
-        request_serializer=core__pb2.GetNodeServiceFileRequest.SerializeToString,
-        response_deserializer=core__pb2.GetNodeServiceFileResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceFileRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceFileResponse.FromString,
         )
     self.SetNodeService = channel.unary_unary(
         '/core.CoreApi/SetNodeService',
-        request_serializer=core__pb2.SetNodeServiceRequest.SerializeToString,
-        response_deserializer=core__pb2.SetNodeServiceResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceResponse.FromString,
         )
     self.SetNodeServiceFile = channel.unary_unary(
         '/core.CoreApi/SetNodeServiceFile',
-        request_serializer=core__pb2.SetNodeServiceFileRequest.SerializeToString,
-        response_deserializer=core__pb2.SetNodeServiceFileResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceFileRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceFileResponse.FromString,
         )
     self.ServiceAction = channel.unary_unary(
         '/core.CoreApi/ServiceAction',
-        request_serializer=core__pb2.ServiceActionRequest.SerializeToString,
-        response_deserializer=core__pb2.ServiceActionResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.ServiceActionRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ServiceActionResponse.FromString,
         )
     self.GetWlanConfig = channel.unary_unary(
         '/core.CoreApi/GetWlanConfig',
-        request_serializer=core__pb2.GetWlanConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.GetWlanConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetWlanConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetWlanConfigResponse.FromString,
         )
     self.SetWlanConfig = channel.unary_unary(
         '/core.CoreApi/SetWlanConfig',
-        request_serializer=core__pb2.SetWlanConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.SetWlanConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetWlanConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetWlanConfigResponse.FromString,
         )
     self.GetEmaneConfig = channel.unary_unary(
         '/core.CoreApi/GetEmaneConfig',
-        request_serializer=core__pb2.GetEmaneConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.GetEmaneConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneConfigResponse.FromString,
         )
     self.SetEmaneConfig = channel.unary_unary(
         '/core.CoreApi/SetEmaneConfig',
-        request_serializer=core__pb2.SetEmaneConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.SetEmaneConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneConfigResponse.FromString,
         )
     self.GetEmaneModels = channel.unary_unary(
         '/core.CoreApi/GetEmaneModels',
-        request_serializer=core__pb2.GetEmaneModelsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetEmaneModelsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelsResponse.FromString,
         )
     self.GetEmaneModelConfig = channel.unary_unary(
         '/core.CoreApi/GetEmaneModelConfig',
-        request_serializer=core__pb2.GetEmaneModelConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.GetEmaneModelConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigResponse.FromString,
         )
     self.SetEmaneModelConfig = channel.unary_unary(
         '/core.CoreApi/SetEmaneModelConfig',
-        request_serializer=core__pb2.SetEmaneModelConfigRequest.SerializeToString,
-        response_deserializer=core__pb2.SetEmaneModelConfigResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneModelConfigRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneModelConfigResponse.FromString,
         )
     self.GetEmaneModelConfigs = channel.unary_unary(
         '/core.CoreApi/GetEmaneModelConfigs',
-        request_serializer=core__pb2.GetEmaneModelConfigsRequest.SerializeToString,
-        response_deserializer=core__pb2.GetEmaneModelConfigsResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigsRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigsResponse.FromString,
         )
     self.SaveXml = channel.unary_unary(
         '/core.CoreApi/SaveXml',
-        request_serializer=core__pb2.SaveXmlRequest.SerializeToString,
-        response_deserializer=core__pb2.SaveXmlResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.SaveXmlRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SaveXmlResponse.FromString,
         )
     self.OpenXml = channel.unary_unary(
         '/core.CoreApi/OpenXml',
-        request_serializer=core__pb2.OpenXmlRequest.SerializeToString,
-        response_deserializer=core__pb2.OpenXmlResponse.FromString,
+        request_serializer=core_dot_api_dot_grpc_dot_core__pb2.OpenXmlRequest.SerializeToString,
+        response_deserializer=core_dot_api_dot_grpc_dot_core__pb2.OpenXmlResponse.FromString,
         )
 
 
@@ -589,238 +589,238 @@ def add_CoreApiServicer_to_server(servicer, server):
   rpc_method_handlers = {
       'CreateSession': grpc.unary_unary_rpc_method_handler(
           servicer.CreateSession,
-          request_deserializer=core__pb2.CreateSessionRequest.FromString,
-          response_serializer=core__pb2.CreateSessionResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.CreateSessionRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.CreateSessionResponse.SerializeToString,
       ),
       'DeleteSession': grpc.unary_unary_rpc_method_handler(
           servicer.DeleteSession,
-          request_deserializer=core__pb2.DeleteSessionRequest.FromString,
-          response_serializer=core__pb2.DeleteSessionResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteSessionRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteSessionResponse.SerializeToString,
       ),
       'GetSessions': grpc.unary_unary_rpc_method_handler(
           servicer.GetSessions,
-          request_deserializer=core__pb2.GetSessionsRequest.FromString,
-          response_serializer=core__pb2.GetSessionsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionsResponse.SerializeToString,
       ),
       'GetSession': grpc.unary_unary_rpc_method_handler(
           servicer.GetSession,
-          request_deserializer=core__pb2.GetSessionRequest.FromString,
-          response_serializer=core__pb2.GetSessionResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionResponse.SerializeToString,
       ),
       'GetSessionOptions': grpc.unary_unary_rpc_method_handler(
           servicer.GetSessionOptions,
-          request_deserializer=core__pb2.GetSessionOptionsRequest.FromString,
-          response_serializer=core__pb2.GetSessionOptionsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionOptionsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionOptionsResponse.SerializeToString,
       ),
       'SetSessionOptions': grpc.unary_unary_rpc_method_handler(
           servicer.SetSessionOptions,
-          request_deserializer=core__pb2.SetSessionOptionsRequest.FromString,
-          response_serializer=core__pb2.SetSessionOptionsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionOptionsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionOptionsResponse.SerializeToString,
       ),
       'GetSessionLocation': grpc.unary_unary_rpc_method_handler(
           servicer.GetSessionLocation,
-          request_deserializer=core__pb2.GetSessionLocationRequest.FromString,
-          response_serializer=core__pb2.GetSessionLocationResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionLocationRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetSessionLocationResponse.SerializeToString,
       ),
       'SetSessionLocation': grpc.unary_unary_rpc_method_handler(
           servicer.SetSessionLocation,
-          request_deserializer=core__pb2.SetSessionLocationRequest.FromString,
-          response_serializer=core__pb2.SetSessionLocationResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionLocationRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionLocationResponse.SerializeToString,
       ),
       'SetSessionState': grpc.unary_unary_rpc_method_handler(
           servicer.SetSessionState,
-          request_deserializer=core__pb2.SetSessionStateRequest.FromString,
-          response_serializer=core__pb2.SetSessionStateResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionStateRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetSessionStateResponse.SerializeToString,
       ),
       'NodeEvents': grpc.unary_stream_rpc_method_handler(
           servicer.NodeEvents,
-          request_deserializer=core__pb2.NodeEventsRequest.FromString,
-          response_serializer=core__pb2.NodeEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.NodeEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.NodeEvent.SerializeToString,
       ),
       'LinkEvents': grpc.unary_stream_rpc_method_handler(
           servicer.LinkEvents,
-          request_deserializer=core__pb2.LinkEventsRequest.FromString,
-          response_serializer=core__pb2.LinkEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.LinkEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.LinkEvent.SerializeToString,
       ),
       'SessionEvents': grpc.unary_stream_rpc_method_handler(
           servicer.SessionEvents,
-          request_deserializer=core__pb2.SessionEventsRequest.FromString,
-          response_serializer=core__pb2.SessionEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SessionEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SessionEvent.SerializeToString,
       ),
       'ConfigEvents': grpc.unary_stream_rpc_method_handler(
           servicer.ConfigEvents,
-          request_deserializer=core__pb2.ConfigEventsRequest.FromString,
-          response_serializer=core__pb2.ConfigEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ConfigEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.ConfigEvent.SerializeToString,
       ),
       'ExceptionEvents': grpc.unary_stream_rpc_method_handler(
           servicer.ExceptionEvents,
-          request_deserializer=core__pb2.ExceptionEventsRequest.FromString,
-          response_serializer=core__pb2.ExceptionEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ExceptionEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.ExceptionEvent.SerializeToString,
       ),
       'FileEvents': grpc.unary_stream_rpc_method_handler(
           servicer.FileEvents,
-          request_deserializer=core__pb2.FileEventsRequest.FromString,
-          response_serializer=core__pb2.FileEvent.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.FileEventsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.FileEvent.SerializeToString,
       ),
       'AddNode': grpc.unary_unary_rpc_method_handler(
           servicer.AddNode,
-          request_deserializer=core__pb2.AddNodeRequest.FromString,
-          response_serializer=core__pb2.AddNodeResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddNodeRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddNodeResponse.SerializeToString,
       ),
       'GetNode': grpc.unary_unary_rpc_method_handler(
           servicer.GetNode,
-          request_deserializer=core__pb2.GetNodeRequest.FromString,
-          response_serializer=core__pb2.GetNodeResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeResponse.SerializeToString,
       ),
       'EditNode': grpc.unary_unary_rpc_method_handler(
           servicer.EditNode,
-          request_deserializer=core__pb2.EditNodeRequest.FromString,
-          response_serializer=core__pb2.EditNodeResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.EditNodeRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.EditNodeResponse.SerializeToString,
       ),
       'DeleteNode': grpc.unary_unary_rpc_method_handler(
           servicer.DeleteNode,
-          request_deserializer=core__pb2.DeleteNodeRequest.FromString,
-          response_serializer=core__pb2.DeleteNodeResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteNodeRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteNodeResponse.SerializeToString,
       ),
       'GetNodeLinks': grpc.unary_unary_rpc_method_handler(
           servicer.GetNodeLinks,
-          request_deserializer=core__pb2.GetNodeLinksRequest.FromString,
-          response_serializer=core__pb2.GetNodeLinksResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeLinksRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeLinksResponse.SerializeToString,
       ),
       'AddLink': grpc.unary_unary_rpc_method_handler(
           servicer.AddLink,
-          request_deserializer=core__pb2.AddLinkRequest.FromString,
-          response_serializer=core__pb2.AddLinkResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddLinkRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddLinkResponse.SerializeToString,
       ),
       'EditLink': grpc.unary_unary_rpc_method_handler(
           servicer.EditLink,
-          request_deserializer=core__pb2.EditLinkRequest.FromString,
-          response_serializer=core__pb2.EditLinkResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.EditLinkRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.EditLinkResponse.SerializeToString,
       ),
       'DeleteLink': grpc.unary_unary_rpc_method_handler(
           servicer.DeleteLink,
-          request_deserializer=core__pb2.DeleteLinkRequest.FromString,
-          response_serializer=core__pb2.DeleteLinkResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteLinkRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.DeleteLinkResponse.SerializeToString,
       ),
       'GetHooks': grpc.unary_unary_rpc_method_handler(
           servicer.GetHooks,
-          request_deserializer=core__pb2.GetHooksRequest.FromString,
-          response_serializer=core__pb2.GetHooksResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetHooksRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetHooksResponse.SerializeToString,
       ),
       'AddHook': grpc.unary_unary_rpc_method_handler(
           servicer.AddHook,
-          request_deserializer=core__pb2.AddHookRequest.FromString,
-          response_serializer=core__pb2.AddHookResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.AddHookRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.AddHookResponse.SerializeToString,
       ),
       'GetMobilityConfigs': grpc.unary_unary_rpc_method_handler(
           servicer.GetMobilityConfigs,
-          request_deserializer=core__pb2.GetMobilityConfigsRequest.FromString,
-          response_serializer=core__pb2.GetMobilityConfigsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigsResponse.SerializeToString,
       ),
       'GetMobilityConfig': grpc.unary_unary_rpc_method_handler(
           servicer.GetMobilityConfig,
-          request_deserializer=core__pb2.GetMobilityConfigRequest.FromString,
-          response_serializer=core__pb2.GetMobilityConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetMobilityConfigResponse.SerializeToString,
       ),
       'SetMobilityConfig': grpc.unary_unary_rpc_method_handler(
           servicer.SetMobilityConfig,
-          request_deserializer=core__pb2.SetMobilityConfigRequest.FromString,
-          response_serializer=core__pb2.SetMobilityConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetMobilityConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetMobilityConfigResponse.SerializeToString,
       ),
       'MobilityAction': grpc.unary_unary_rpc_method_handler(
           servicer.MobilityAction,
-          request_deserializer=core__pb2.MobilityActionRequest.FromString,
-          response_serializer=core__pb2.MobilityActionResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.MobilityActionRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.MobilityActionResponse.SerializeToString,
       ),
       'GetServices': grpc.unary_unary_rpc_method_handler(
           servicer.GetServices,
-          request_deserializer=core__pb2.GetServicesRequest.FromString,
-          response_serializer=core__pb2.GetServicesResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetServicesRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetServicesResponse.SerializeToString,
       ),
       'GetServiceDefaults': grpc.unary_unary_rpc_method_handler(
           servicer.GetServiceDefaults,
-          request_deserializer=core__pb2.GetServiceDefaultsRequest.FromString,
-          response_serializer=core__pb2.GetServiceDefaultsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetServiceDefaultsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetServiceDefaultsResponse.SerializeToString,
       ),
       'SetServiceDefaults': grpc.unary_unary_rpc_method_handler(
           servicer.SetServiceDefaults,
-          request_deserializer=core__pb2.SetServiceDefaultsRequest.FromString,
-          response_serializer=core__pb2.SetServiceDefaultsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetServiceDefaultsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetServiceDefaultsResponse.SerializeToString,
       ),
       'GetNodeService': grpc.unary_unary_rpc_method_handler(
           servicer.GetNodeService,
-          request_deserializer=core__pb2.GetNodeServiceRequest.FromString,
-          response_serializer=core__pb2.GetNodeServiceResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceResponse.SerializeToString,
       ),
       'GetNodeServiceFile': grpc.unary_unary_rpc_method_handler(
           servicer.GetNodeServiceFile,
-          request_deserializer=core__pb2.GetNodeServiceFileRequest.FromString,
-          response_serializer=core__pb2.GetNodeServiceFileResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceFileRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetNodeServiceFileResponse.SerializeToString,
       ),
       'SetNodeService': grpc.unary_unary_rpc_method_handler(
           servicer.SetNodeService,
-          request_deserializer=core__pb2.SetNodeServiceRequest.FromString,
-          response_serializer=core__pb2.SetNodeServiceResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceResponse.SerializeToString,
       ),
       'SetNodeServiceFile': grpc.unary_unary_rpc_method_handler(
           servicer.SetNodeServiceFile,
-          request_deserializer=core__pb2.SetNodeServiceFileRequest.FromString,
-          response_serializer=core__pb2.SetNodeServiceFileResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceFileRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetNodeServiceFileResponse.SerializeToString,
       ),
       'ServiceAction': grpc.unary_unary_rpc_method_handler(
           servicer.ServiceAction,
-          request_deserializer=core__pb2.ServiceActionRequest.FromString,
-          response_serializer=core__pb2.ServiceActionResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.ServiceActionRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.ServiceActionResponse.SerializeToString,
       ),
       'GetWlanConfig': grpc.unary_unary_rpc_method_handler(
           servicer.GetWlanConfig,
-          request_deserializer=core__pb2.GetWlanConfigRequest.FromString,
-          response_serializer=core__pb2.GetWlanConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetWlanConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetWlanConfigResponse.SerializeToString,
       ),
       'SetWlanConfig': grpc.unary_unary_rpc_method_handler(
           servicer.SetWlanConfig,
-          request_deserializer=core__pb2.SetWlanConfigRequest.FromString,
-          response_serializer=core__pb2.SetWlanConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetWlanConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetWlanConfigResponse.SerializeToString,
       ),
       'GetEmaneConfig': grpc.unary_unary_rpc_method_handler(
           servicer.GetEmaneConfig,
-          request_deserializer=core__pb2.GetEmaneConfigRequest.FromString,
-          response_serializer=core__pb2.GetEmaneConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneConfigResponse.SerializeToString,
       ),
       'SetEmaneConfig': grpc.unary_unary_rpc_method_handler(
           servicer.SetEmaneConfig,
-          request_deserializer=core__pb2.SetEmaneConfigRequest.FromString,
-          response_serializer=core__pb2.SetEmaneConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneConfigResponse.SerializeToString,
       ),
       'GetEmaneModels': grpc.unary_unary_rpc_method_handler(
           servicer.GetEmaneModels,
-          request_deserializer=core__pb2.GetEmaneModelsRequest.FromString,
-          response_serializer=core__pb2.GetEmaneModelsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelsResponse.SerializeToString,
       ),
       'GetEmaneModelConfig': grpc.unary_unary_rpc_method_handler(
           servicer.GetEmaneModelConfig,
-          request_deserializer=core__pb2.GetEmaneModelConfigRequest.FromString,
-          response_serializer=core__pb2.GetEmaneModelConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigResponse.SerializeToString,
       ),
       'SetEmaneModelConfig': grpc.unary_unary_rpc_method_handler(
           servicer.SetEmaneModelConfig,
-          request_deserializer=core__pb2.SetEmaneModelConfigRequest.FromString,
-          response_serializer=core__pb2.SetEmaneModelConfigResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneModelConfigRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SetEmaneModelConfigResponse.SerializeToString,
       ),
       'GetEmaneModelConfigs': grpc.unary_unary_rpc_method_handler(
           servicer.GetEmaneModelConfigs,
-          request_deserializer=core__pb2.GetEmaneModelConfigsRequest.FromString,
-          response_serializer=core__pb2.GetEmaneModelConfigsResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigsRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.GetEmaneModelConfigsResponse.SerializeToString,
       ),
       'SaveXml': grpc.unary_unary_rpc_method_handler(
           servicer.SaveXml,
-          request_deserializer=core__pb2.SaveXmlRequest.FromString,
-          response_serializer=core__pb2.SaveXmlResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.SaveXmlRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.SaveXmlResponse.SerializeToString,
       ),
       'OpenXml': grpc.unary_unary_rpc_method_handler(
           servicer.OpenXml,
-          request_deserializer=core__pb2.OpenXmlRequest.FromString,
-          response_serializer=core__pb2.OpenXmlResponse.SerializeToString,
+          request_deserializer=core_dot_api_dot_grpc_dot_core__pb2.OpenXmlRequest.FromString,
+          response_serializer=core_dot_api_dot_grpc_dot_core__pb2.OpenXmlResponse.SerializeToString,
       ),
   }
   generic_handler = grpc.method_handlers_generic_handler(
diff --git a/daemon/core/api/tlv/broker.py b/daemon/core/api/tlv/broker.py
index c168cde4..d7499eaa 100644
--- a/daemon/core/api/tlv/broker.py
+++ b/daemon/core/api/tlv/broker.py
@@ -692,7 +692,7 @@ class CoreBroker(object):
 
         # send a Configuration message for the broker object and inform the
         # server of its local name
-        tlvdata = ""
+        tlvdata = b""
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.OBJECT.value, "broker")
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.TYPE.value, ConfigFlags.UPDATE.value)
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.DATA_TYPES.value, (ConfigDataTypes.STRING.value,))
@@ -722,7 +722,7 @@ class CoreBroker(object):
         cmd = msg.get_tlv(ExecuteTlvs.COMMAND.value)
         res = msg.get_tlv(ExecuteTlvs.RESULT.value)
 
-        tlvdata = ""
+        tlvdata = b""
         tlvdata += coreapi.CoreExecuteTlv.pack(ExecuteTlvs.NODE.value, nodenum)
         tlvdata += coreapi.CoreExecuteTlv.pack(ExecuteTlvs.NUMBER.value, execnum)
         tlvdata += coreapi.CoreExecuteTlv.pack(ExecuteTlvs.COMMAND.value, cmd)
@@ -1029,7 +1029,7 @@ class CoreBroker(object):
                 server.instantiation_complete = True
 
         # broadcast out instantiate complete
-        tlvdata = ""
+        tlvdata = b""
         tlvdata += coreapi.CoreEventTlv.pack(EventTlvs.TYPE.value, EventTypes.INSTANTIATION_COMPLETE.value)
         message = coreapi.CoreEventMessage.pack(0, tlvdata)
         for session_client in self.session_clients:
diff --git a/daemon/core/api/tlv/coreapi.py b/daemon/core/api/tlv/coreapi.py
index ec88ce39..8d2b5ebf 100644
--- a/daemon/core/api/tlv/coreapi.py
+++ b/daemon/core/api/tlv/coreapi.py
@@ -157,7 +157,7 @@ class CoreTlvDataUint64(CoreTlvData):
     Helper class for packing uint64 data.
     """
     data_format = "!2xQ"
-    data_type = long
+    data_type = int
     pad_len = 2
 
 
@@ -178,6 +178,7 @@ class CoreTlvDataString(CoreTlvData):
         """
         if not isinstance(value, str):
             raise ValueError("value not a string: %s" % value)
+        value = value.encode("utf-8")
 
         if len(value) < 256:
             header_len = CoreTlv.header_len
@@ -185,7 +186,7 @@ class CoreTlvDataString(CoreTlvData):
             header_len = CoreTlv.long_header_len
 
         pad_len = -(header_len + len(value)) % 4
-        return len(value), value + "\0" * pad_len
+        return len(value), value + b"\0" * pad_len
 
     @classmethod
     def unpack(cls, data):
@@ -195,7 +196,7 @@ class CoreTlvDataString(CoreTlvData):
         :param str data: unpack string data
         :return: unpacked string data
         """
-        return data.rstrip("\0")
+        return data.rstrip(b"\0").decode("utf-8")
 
 
 class CoreTlvDataUint16List(CoreTlvData):
@@ -266,7 +267,7 @@ class CoreTlvDataIpv4Addr(CoreTlvDataObj):
         return obj.addr
 
     @staticmethod
-    def new_obj(obj):
+    def new_obj(value):
         """
         Retrieve Ipv4 address from a string representation.
 
@@ -274,7 +275,9 @@ class CoreTlvDataIpv4Addr(CoreTlvDataObj):
         :return: Ipv4 address
         :rtype: core.misc.ipaddress.IpAddress
         """
-        return IpAddress(af=socket.AF_INET, address=obj)
+        # value = value.decode("ISO-8859-1")
+        # value = socket.inet_ntoa(value)
+        return IpAddress(af=socket.AF_INET, address=value)
 
 
 class CoreTlvDataIPv6Addr(CoreTlvDataObj):
@@ -304,6 +307,8 @@ class CoreTlvDataIPv6Addr(CoreTlvDataObj):
         :return: Ipv4 address
         :rtype: core.misc.ipaddress.IpAddress
         """
+        # value = value.decode("ISO-8859-1")
+        # value = socket.inet_ntoa(value)
         return IpAddress(af=socket.AF_INET6, address=value)
 
 
@@ -336,6 +341,8 @@ class CoreTlvDataMacAddr(CoreTlvDataObj):
         :rtype: core.misc.ipaddress.MacAddress
         """
         # only use 48 bits
+        # value = value.decode("ISO-8859-1")
+        # value = socket.inet_ntoa(value)
         return MacAddress(address=value[2:])
 
 
@@ -397,12 +404,10 @@ class CoreTlv(object):
         :return: header and packed data
         """
         tlv_len, tlv_data = cls.tlv_data_class_map[tlv_type].pack(value)
-
         if tlv_len < 256:
             hdr = struct.pack(cls.header_format, tlv_type, tlv_len)
         else:
             hdr = struct.pack(cls.long_header_format, tlv_type, 0, tlv_len)
-
         return hdr + tlv_data
 
     @classmethod
diff --git a/daemon/core/api/tlv/corehandlers.py b/daemon/core/api/tlv/corehandlers.py
index f9d505f1..5f123a07 100644
--- a/daemon/core/api/tlv/corehandlers.py
+++ b/daemon/core/api/tlv/corehandlers.py
@@ -190,7 +190,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
         thumbs = "|".join(thumb_list)
 
         if num_sessions > 0:
-            tlv_data = ""
+            tlv_data = b""
             if len(session_ids) > 0:
                 tlv_data += coreapi.CoreSessionTlv.pack(SessionTlvs.NUMBER.value, session_ids)
             if len(names) > 0:
@@ -224,7 +224,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
             (EventTlvs.NAME, event_data.name),
             (EventTlvs.DATA, event_data.data),
             (EventTlvs.TIME, event_data.time),
-            (EventTlvs.TIME, event_data.session)
+            (EventTlvs.SESSION, event_data.session)
         ])
         message = coreapi.CoreEventMessage.pack(0, tlv_data)
 
@@ -373,7 +373,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
         """
         logging.info("GUI has connected to session %d at %s", self.session.id, time.ctime())
 
-        tlv_data = ""
+        tlv_data = b""
         tlv_data += coreapi.CoreRegisterTlv.pack(RegisterTlvs.EXECUTE_SERVER.value, "core-daemon")
         tlv_data += coreapi.CoreRegisterTlv.pack(RegisterTlvs.EMULATION_SERVER.value, "core-daemon")
         tlv_data += coreapi.CoreRegisterTlv.pack(self.session.broker.config_type, self.session.broker.name)
@@ -424,7 +424,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
         if message_len == 0:
             logging.warn("received message with no data")
 
-        data = ""
+        data = b""
         while len(data) < message_len:
             data += self.request.recv(message_len - len(data))
             if len(data) > message_len:
@@ -504,7 +504,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
         :param message: message for replies
         :return: nothing
         """
-        logging.debug("dispatching replies")
+        logging.debug("dispatching replies: %s", replies)
         for reply in replies:
             message_type, message_flags, message_length = coreapi.CoreMessage.unpack_header(reply)
             try:
@@ -682,7 +682,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
 
                 # if we deleted a node broadcast out its removal
                 if result and message.flags & MessageFlags.STRING.value:
-                    tlvdata = ""
+                    tlvdata = b""
                     tlvdata += coreapi.CoreNodeTlv.pack(NodeTlvs.NUMBER.value, node_id)
                     flags = MessageFlags.DELETE.value | MessageFlags.LOCAL.value
                     replies.append(coreapi.CoreNodeMessage.pack(flags, tlvdata))
@@ -779,7 +779,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
             node = self.session.get_node(node_num)
 
             # build common TLV items for reply
-            tlv_data = ""
+            tlv_data = b""
             if node_num is not None:
                 tlv_data += coreapi.CoreExecuteTlv.pack(ExecuteTlvs.NODE.value, node_num)
             tlv_data += coreapi.CoreExecuteTlv.pack(ExecuteTlvs.NUMBER.value, execute_num)
@@ -1667,7 +1667,7 @@ class CoreHandler(socketserver.BaseRequestHandler):
         :return: nothing
         """
         if node_id in self.node_status_request:
-            tlv_data = ""
+            tlv_data = b""
             tlv_data += coreapi.CoreNodeTlv.pack(NodeTlvs.NUMBER.value, node_id)
             tlv_data += coreapi.CoreNodeTlv.pack(NodeTlvs.EMULATION_ID.value, node_id)
             reply = coreapi.CoreNodeMessage.pack(MessageFlags.ADD.value | MessageFlags.LOCAL.value, tlv_data)
diff --git a/daemon/core/api/tlv/structutils.py b/daemon/core/api/tlv/structutils.py
index cfcc7a93..02f46583 100644
--- a/daemon/core/api/tlv/structutils.py
+++ b/daemon/core/api/tlv/structutils.py
@@ -15,7 +15,8 @@ def pack_values(clazz, packers):
     """
 
     # iterate through tuples of values to pack
-    data = ""
+    logging.debug("packing: %s", packers)
+    data = b""
     for packer in packers:
         # check if a transformer was provided for valid values
         transformer = None
@@ -26,10 +27,6 @@ def pack_values(clazz, packers):
         else:
             raise RuntimeError("packer had more than 3 arguments")
 
-        # convert unicode to normal str for packing
-        if isinstance(value, unicode):
-            value = str(value)
-
         # only pack actual values and avoid packing empty strings
         # protobuf defaults to empty strings and does no imply a value to set
         if value is None or (isinstance(value, str) and not value):
diff --git a/daemon/core/emane/emanemanager.py b/daemon/core/emane/emanemanager.py
index 54099a35..9a155231 100644
--- a/daemon/core/emane/emanemanager.py
+++ b/daemon/core/emane/emanemanager.py
@@ -497,7 +497,7 @@ class EmaneManager(ModelManager):
         logging.info("Setting up default controlnet prefixes for distributed (%d configured)" % len(prefixes))
         prefixes = ctrlnet.DEFAULT_PREFIX_LIST[0]
         vals = 'controlnet="%s"' % prefixes
-        tlvdata = ""
+        tlvdata = b""
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.OBJECT.value, "session")
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.TYPE.value, 0)
         tlvdata += coreapi.CoreConfigTlv.pack(ConfigTlvs.VALUES.value, vals)
diff --git a/daemon/core/emulator/session.py b/daemon/core/emulator/session.py
index 0e500d4d..b9d24f94 100644
--- a/daemon/core/emulator/session.py
+++ b/daemon/core/emulator/session.py
@@ -1509,6 +1509,7 @@ class Session(object):
             assign_address = self.master
             prefix = prefixes[0]
 
+        logging.info("controlnet prefix: %s - %s", type(prefix), prefix)
         control_net_class = nodeutils.get_node_class(NodeTypes.CONTROL_NET)
         control_net = self.create_node(cls=control_net_class, _id=_id, prefix=prefix,
                                        assign_address=assign_address,
diff --git a/daemon/core/location/event.py b/daemon/core/location/event.py
index 19ed7ced..2c407286 100644
--- a/daemon/core/location/event.py
+++ b/daemon/core/location/event.py
@@ -5,6 +5,7 @@ event.py: event loop implementation using a heap queue and threads.
 import heapq
 import threading
 import time
+from past.builtins import cmp
 
 
 class Timer(threading.Thread):
diff --git a/daemon/core/location/mobility.py b/daemon/core/location/mobility.py
index c5f786ac..c3192d9e 100644
--- a/daemon/core/location/mobility.py
+++ b/daemon/core/location/mobility.py
@@ -9,6 +9,7 @@ import os
 import threading
 import time
 from builtins import int
+from past.builtins import cmp
 
 from core import utils
 from core.config import ConfigGroup
diff --git a/daemon/core/nodes/base.py b/daemon/core/nodes/base.py
index 9cbd646a..a0410d92 100644
--- a/daemon/core/nodes/base.py
+++ b/daemon/core/nodes/base.py
@@ -687,7 +687,8 @@ class CoreNode(CoreNodeBase):
                 output = output.split("\n")
                 veth.flow_id = int(output[0].strip().split(":")[0]) + 1
                 logging.debug("interface flow index: %s - %s", veth.name, veth.flow_id)
-                veth.hwaddr = MacAddress.from_string(output[1].strip().split()[1])
+                # TODO: mimic packed hwaddr
+                # veth.hwaddr = MacAddress.from_string(output[1].strip().split()[1])
                 logging.debug("interface mac: %s - %s", veth.name, veth.hwaddr)
 
             try:
@@ -1062,11 +1063,13 @@ class CoreNetworkBase(NodeBase):
                 if ipaddress.is_ipv4_address(ip):
                     family = AF_INET
                     ipl = socket.inet_pton(family, ip)
+                    # ipl = ipl.decode("ISO-8859-1")
                     interface2_ip4 = ipaddress.IpAddress(af=family, address=ipl)
                     interface2_ip4_mask = mask
                 else:
                     family = AF_INET6
                     ipl = socket.inet_pton(family, ip)
+                    # ipl = ipl.decode("ISO-8859-1")
                     interface2_ip6 = ipaddress.IpAddress(af=family, address=ipl)
                     interface2_ip6_mask = mask
 
diff --git a/daemon/core/nodes/client.py b/daemon/core/nodes/client.py
index 7ef7a005..b09da1fa 100644
--- a/daemon/core/nodes/client.py
+++ b/daemon/core/nodes/client.py
@@ -8,7 +8,7 @@ by invoking the vcmd shell command.
 import logging
 import os
 
-import vcmd
+from subprocess import Popen, PIPE
 
 from core import CoreCommandError, utils
 from core import constants
@@ -28,7 +28,6 @@ class VnodeClient(object):
         """
         self.name = name
         self.ctrlchnlname = ctrlchnlname
-        self.cmdchnl = vcmd.VCmd(self.ctrlchnlname)
         self._addr = {}
 
     def _verify_connection(self):
@@ -48,7 +47,7 @@ class VnodeClient(object):
         :return: True if connected, False otherwise
         :rtype: bool
         """
-        return self.cmdchnl.connected()
+        return True
 
     def close(self):
         """
@@ -56,7 +55,10 @@ class VnodeClient(object):
 
         :return: nothing
         """
-        self.cmdchnl.close()
+        pass
+
+    def _cmd_args(self):
+        return [constants.VCMD_BIN, "-c", self.ctrlchnlname, "--"]
 
     def cmd(self, args, wait=True):
         """
@@ -71,7 +73,9 @@ class VnodeClient(object):
         args = utils.split_args(args)
 
         # run command, return process when not waiting
-        p = self.cmdchnl.qcmd(args)
+        cmd = self._cmd_args() + args
+        logging.info("cmd wait(%s): %s", wait, cmd)
+        p = Popen(cmd, stdout=PIPE, stderr=PIPE)
         if not wait:
             return 0
 
@@ -94,7 +98,7 @@ class VnodeClient(object):
         stdout.close()
         stderr.close()
         status = p.wait()
-        return status, output.strip()
+        return status, output.decode("utf-8").strip()
 
     def check_cmd(self, args):
         """
@@ -120,7 +124,12 @@ class VnodeClient(object):
         """
         self._verify_connection()
         args = utils.split_args(args)
-        return self.cmdchnl.popen(args)
+        # if isinstance(args, list):
+        #     args = " ".join(args)
+        cmd = self._cmd_args() + args
+        logging.info("popen: %s", cmd)
+        p = Popen(cmd, stdout=PIPE, stderr=PIPE, stdin=PIPE)
+        return p, p.stdin, p.stdout, p.stderr
 
     def icmd(self, args):
         """
@@ -150,7 +159,10 @@ class VnodeClient(object):
 
         # run command, return process when not waiting
         args = utils.split_args(args)
-        p = self.cmdchnl.redircmd(infd, outfd, errfd, args)
+        cmd = self._cmd_args() + args
+        logging.info("redircmd: %s", cmd)
+        p = Popen(cmd, stdin=infd, stdout=outfd, stderr=errfd)
+
         if not wait:
             return p
 
diff --git a/daemon/core/nodes/interface.py b/daemon/core/nodes/interface.py
index 1b628408..56848cba 100644
--- a/daemon/core/nodes/interface.py
+++ b/daemon/core/nodes/interface.py
@@ -31,7 +31,7 @@ class CoreInterface(object):
 
         self.node = node
         self.name = name
-        if not isinstance(mtu, (int, long)):
+        if not isinstance(mtu, int):
             raise ValueError
         self.mtu = mtu
         self.net = None
@@ -142,7 +142,7 @@ class CoreInterface(object):
         """
         # treat None and 0 as unchanged values
         current_value = self._params.get(key)
-        if current_value == value or current_value <= 0 and value <= 0:
+        if current_value is None or current_value == value or current_value <= 0 and value <= 0:
             return False
 
         self._params[key] = value
@@ -174,6 +174,16 @@ class CoreInterface(object):
         """
         self.poshook(self, x, y, z)
 
+    def __lt__(self, other):
+        """
+        Used for comparisons of this object.
+
+        :param other: other interface
+        :return: true if less than, false otherwise
+        :rtype: bool
+        """
+        return id(self) < id(other)
+
 
 class Veth(CoreInterface):
     """
diff --git a/daemon/core/nodes/ipaddress.py b/daemon/core/nodes/ipaddress.py
index 864b0296..23144ce1 100644
--- a/daemon/core/nodes/ipaddress.py
+++ b/daemon/core/nodes/ipaddress.py
@@ -31,7 +31,9 @@ class MacAddress(object):
         :return: string representation
         :rtype: str
         """
-        return ":".join("%02x" % ord(x) for x in self.addr)
+        logging.info("mac addr: %s", type(self.addr))
+        addr = self.addr.decode("ISO-8859-1")
+        return ":".join("%02x" % ord(x) for x in addr)
 
     def to_link_local(self):
         """
@@ -93,7 +95,9 @@ class IpAddress(object):
         :return:
         """
         # check if (af, addr) is valid
+        logging.info("ip address: %s", type(address))
         if not socket.inet_ntop(af, address):
+        # if not socket.inet_ntop(af, address.encode("ISO-8859-1")):
             raise ValueError("invalid af/addr")
         self.af = af
         self.addr = address
@@ -124,6 +128,7 @@ class IpAddress(object):
         :rtype: str
         """
         return socket.inet_ntop(self.af, self.addr)
+        # return socket.inet_ntop(self.af, self.addr.encode("ISO-8859-1"))
 
     def __eq__(self, other):
         """
@@ -231,7 +236,7 @@ class IpPrefix(object):
             self.prefixlen = int(tmp[1])
         else:
             self.prefixlen = self.addrlen
-        self.prefix = socket.inet_pton(self.af, tmp[0])
+        self.prefix = socket.inet_pton(self.af, tmp[0]).decode("ISO-8859-1")
         if self.addrlen > self.prefixlen:
             addrbits = self.addrlen - self.prefixlen
             netmask = ((1 << self.prefixlen) - 1) << addrbits
diff --git a/daemon/core/nodes/network.py b/daemon/core/nodes/network.py
index b76a035a..82e20017 100644
--- a/daemon/core/nodes/network.py
+++ b/daemon/core/nodes/network.py
@@ -855,11 +855,13 @@ class PtpNet(CoreNetwork):
             if ipaddress.is_ipv4_address(ip):
                 family = AF_INET
                 ipl = socket.inet_pton(family, ip)
+                # ipl = ipl.decode("ISO-8859-1")
                 interface1_ip4 = ipaddress.IpAddress(af=family, address=ipl)
                 interface1_ip4_mask = mask
             else:
                 family = AF_INET6
                 ipl = socket.inet_pton(family, ip)
+                # ipl = ipl.decode("ISO-8859-1")
                 interface1_ip6 = ipaddress.IpAddress(af=family, address=ipl)
                 interface1_ip6_mask = mask
 
@@ -873,11 +875,13 @@ class PtpNet(CoreNetwork):
             if ipaddress.is_ipv4_address(ip):
                 family = AF_INET
                 ipl = socket.inet_pton(family, ip)
+                # ipl = ipl.decode("ISO-8859-1")
                 interface2_ip4 = ipaddress.IpAddress(af=family, address=ipl)
                 interface2_ip4_mask = mask
             else:
                 family = AF_INET6
                 ipl = socket.inet_pton(family, ip)
+                # ipl = ipl.decode("ISO-8859-1")
                 interface2_ip6 = ipaddress.IpAddress(af=family, address=ipl)
                 interface2_ip6_mask = mask
 
diff --git a/daemon/core/plugins/sdt.py b/daemon/core/plugins/sdt.py
index dabf3453..0cd200ba 100644
--- a/daemon/core/plugins/sdt.py
+++ b/daemon/core/plugins/sdt.py
@@ -4,7 +4,11 @@ sdt.py: Scripted Display Tool (SDT3D) helper
 
 import logging
 import socket
-from urlparse import urlparse
+
+from future.standard_library import install_aliases
+install_aliases()
+
+from urllib.parse import urlparse
 
 from core import constants
 from core.nodes.base import NodeBase, CoreNetworkBase
diff --git a/daemon/core/utils.py b/daemon/core/utils.py
index e2c0fedc..2a3cfdd3 100644
--- a/daemon/core/utils.py
+++ b/daemon/core/utils.py
@@ -2,6 +2,7 @@
 Miscellaneous utility functions, wrappers around some subprocess procedures.
 """
 
+import fcntl
 import importlib
 import inspect
 import logging
@@ -10,8 +11,6 @@ import shlex
 import subprocess
 import sys
 
-import fcntl
-
 from core import CoreCommandError
 
 DEVNULL = open(os.devnull, "wb")
@@ -126,7 +125,7 @@ def make_tuple_fromstr(s, value_type):
     """
     Create a tuple from a string.
 
-    :param str|unicode s: string to convert to a tuple
+    :param str s: string to convert to a tuple
     :param value_type: type of values to be contained within tuple
     :return: tuple from string
     :rtype: tuple
@@ -148,7 +147,9 @@ def split_args(args):
     :return: shell-like syntax list
     :rtype: list
     """
-    if isinstance(args, basestring):
+    logging.info("split args: %s - %s", args, type(args))
+    if isinstance(args, str):
+        logging.info("splitting args")
         args = shlex.split(args)
     return args
 
@@ -231,7 +232,7 @@ def check_cmd(args, **kwargs):
         status = p.wait()
         if status != 0:
             raise CoreCommandError(status, args, stdout)
-        return stdout.strip()
+        return stdout.decode("utf-8").strip()
     except OSError:
         raise CoreCommandError(-1, args)
 
diff --git a/daemon/data/logging.conf b/daemon/data/logging.conf
index 7f3d496f..46de6e92 100644
--- a/daemon/data/logging.conf
+++ b/daemon/data/logging.conf
@@ -14,7 +14,7 @@
 		}
 	},
 	"root": {
-		"level": "INFO",
+		"level": "DEBUG",
 		"handlers": ["console"]
 	}
 }
diff --git a/daemon/proto/Makefile.am b/daemon/proto/Makefile.am
index 59665a6f..05f2d394 100644
--- a/daemon/proto/Makefile.am
+++ b/daemon/proto/Makefile.am
@@ -1,5 +1,5 @@
 all:
-	$(PYTHON) -m grpc_tools.protoc -I . --python_out=../core/api/grpc --grpc_python_out=../core/api/grpc core.proto
+	$(PYTHON) -m grpc_tools.protoc -I . --python_out=.. --grpc_python_out=.. core/api/grpc/core.proto
 
 clean:
 	-rm -f ../core/api/grpc/core_pb2*
diff --git a/daemon/proto/core.proto b/daemon/proto/core/api/grpc/core.proto
similarity index 100%
rename from daemon/proto/core.proto
rename to daemon/proto/core/api/grpc/core.proto
diff --git a/netns/Makefile.am b/netns/Makefile.am
index d000cb8e..77a8f228 100644
--- a/netns/Makefile.am
+++ b/netns/Makefile.am
@@ -30,38 +30,38 @@ netns_SOURCES = $(SRC_NETNS)
 # this triggers automake to run setup.py for building the Python libraries
 #   actual library names are netns.so and vcmd.so
 #   SOURCES line prevents 'make dist' from looking for a 'libnetns.c' file
-if WANT_PYTHON
-noinst_LIBRARIES = libnetns.a
-libnetns_a_SOURCES = netnsmodule.c vcmdmodule.c
-libnetns.a:
-	LDFLAGS="$(LDFLAGS) @libev_LIBS@" CFLAGS="$(CFLAGS) @libev_CFLAGS@" $(PYTHON) setup.py build_ext
-
-# Python libraries install
-install-exec-local:
-	$(PYTHON) $(SETUPPY) $(SETUPPYFLAGS) install \
-		--root=/$(DESTDIR) \
-		--prefix=$(prefix) \
-		--install-lib=$(pythondir) \
-		--single-version-externally-managed \
-		--no-compile
-
-# Python libraries uninstall
-uninstall-hook:
-	rm -rf core_netns.egg-info
-	rm -rf $(DESTDIR)/$(pythondir)/core_netns-$(PACKAGE_VERSION)-py$(PYTHON_VERSION).egg-info
-	rm -f $(DESTDIR)/$(bindir)/{vnoded,vcmd,netns}
-	rm -f $(DESTDIR)/$(pythondir)/{netns.so,vcmd.so}
-
-# Python libraries cleanup
-clean-local: clean-local-check
-.PHONY: clean-local-check
-clean-local-check:
-	-rm -rf build
-
-distclean-local:
-	-rm -rf core_netns.egg-info
-
-endif
+#if WANT_PYTHON
+#noinst_LIBRARIES = libnetns.a
+#libnetns_a_SOURCES = netnsmodule.c vcmdmodule.c
+#libnetns.a:
+#	LDFLAGS="$(LDFLAGS) @libev_LIBS@" CFLAGS="$(CFLAGS) @libev_CFLAGS@" $(PYTHON) setup.py build_ext
+#
+## Python libraries install
+#install-exec-local:
+#	$(PYTHON) $(SETUPPY) $(SETUPPYFLAGS) install \
+#		--root=/$(DESTDIR) \
+#		--prefix=$(prefix) \
+#		--install-lib=$(pythondir) \
+#		--single-version-externally-managed \
+#		--no-compile
+#
+## Python libraries uninstall
+#uninstall-hook:
+#	rm -rf core_netns.egg-info
+#	rm -rf $(DESTDIR)/$(pythondir)/core_netns-$(PACKAGE_VERSION)-py$(PYTHON_VERSION).egg-info
+#	rm -f $(DESTDIR)/$(bindir)/{vnoded,vcmd,netns}
+#	rm -f $(DESTDIR)/$(pythondir)/{netns.so,vcmd.so}
+#
+## Python libraries cleanup
+#clean-local: clean-local-check
+#.PHONY: clean-local-check
+#clean-local-check:
+#	-rm -rf build
+#
+#distclean-local:
+#	-rm -rf core_netns.egg-info
+#
+#endif
 # endif WANT_PYTHON
 
 # extra cruft to remove