diff --git a/.gitignore b/.gitignore
index 156a805..2b3e6ef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,8 +31,8 @@
 *.swp
 
 # Protobuf output files
-#voltha/**/*.desc
-#voltha/**/*_pb2.py
+voltha/**/*.desc
+ofagent/protos/**/*_pb2.py
 
 # Editors
 *.bak
diff --git a/chameleon/grpc_client/grpc_client.py b/chameleon/grpc_client/grpc_client.py
index 75c78eb..9a95330 100644
--- a/chameleon/grpc_client/grpc_client.py
+++ b/chameleon/grpc_client/grpc_client.py
@@ -16,7 +16,7 @@
 
 """
 gRPC client meant to connect to a gRPC server endpoint, and query the
-end-point's schema by calling SchemaService.Schema(NullMessage) and all of its
+end-point's schema by calling SchemaService.Schema(Empty) and all of its
 semantics are derived from the recovered schema.
 """
 
@@ -34,7 +34,9 @@
 from werkzeug.exceptions import ServiceUnavailable
 
 from common.utils.asleep import asleep
-from chameleon.protos.schema_pb2 import NullMessage, SchemaServiceStub
+from chameleon.protos.schema_pb2 import SchemaServiceStub
+from google.protobuf.empty_pb2 import Empty
+
 
 log = get_logger()
 
@@ -165,7 +167,7 @@
         assert isinstance(self.channel, grpc.Channel)
         stub = SchemaServiceStub(self.channel)
         # try:
-        schemas = stub.GetSchema(NullMessage())
+        schemas = stub.GetSchema(Empty())
         # except _Rendezvous, e:
         #     if e.code == grpc.StatusCode.UNAVAILABLE:
         #
diff --git a/chameleon/protoc_plugins/gw_gen.py b/chameleon/protoc_plugins/gw_gen.py
index 20249c2..4596bef 100755
--- a/chameleon/protoc_plugins/gw_gen.py
+++ b/chameleon/protoc_plugins/gw_gen.py
@@ -35,7 +35,14 @@
 from protobuf_to_dict import protobuf_to_dict, dict_to_protobuf
 
 {% set package = file_name.replace('.proto', '') %}
-import {{ package + '_pb2' }} as {{ package }}
+
+{% for pypackage, module in includes %}
+{% if pypackage %}
+from {{ pypackage }} import {{ module }}
+{% else %}
+import {{ module }}
+{% endif %}
+{% endfor %}
 
 log = get_logger()
 
@@ -44,7 +51,7 @@
     pass  # so that if no endpoints are defined, Python is still happy
 
     {% for method in methods %}
-    {% set method_name = method['service'] + '_' + method['method'] %}
+    {% set method_name = method['service'].rpartition('.')[2] + '_' + method['method'] %}
     {% set path = method['path'].replace('{', '<string:').replace('}', '>') %}
     @app.route('{{ path }}', methods=['{{ method['verb'].upper() }}'])
     def {{ method_name }}(server, request, **kw):
@@ -58,12 +65,12 @@
         riase NotImplementedError('cannot handle specific body field list')
         {% endif %}
         try:
-            req = dict_to_protobuf({{ method['input_type'] }}, data)
+            req = dict_to_protobuf({{ type_map[method['input_type']] }}, data)
         except Exception, e:
             log.error('cannot-convert-to-protobuf', e=e, data=data)
             raise
         res = grpc_client.invoke(
-            {{ '.'.join([package, method['service']]) }}Stub,
+            {{ type_map[method['service']] }}Stub,
             '{{ method['method'] }}', req)
         try:
             out_data = protobuf_to_dict(res, use_enum_labels=True)
@@ -128,7 +135,7 @@
                     data = {
                         'package': package,
                         'filename': proto_file.name,
-                        'service': service.name,
+                        'service': proto_file.package + '.' + service.name,
                         'method': method.name,
                         'input_type': input_type,
                         'output_type': output_type,
@@ -140,30 +147,116 @@
                     yield data
 
 
-def generate_gw_code(file_name, methods):
-    return template.render(file_name=file_name, methods=methods)
+def generate_gw_code(file_name, methods, type_map, includes):
+    return template.render(file_name=file_name, methods=methods,
+                           type_map=type_map, includes=includes)
+
+
+class IncludeManager(object):
+    # need to keep track of what files define what message types and
+    # under what package name. Later, when we analyze the methods, we
+    # need to be able to derive the list of files we need to load and we
+    # also need to replce the <proto-package-name>.<artifact-name> in the
+    # templates with <python-package-name>.<artifact-name> so Python can
+    # resolve these.
+    def __init__(self):
+        self.package_to_localname = {}
+        self.fullname_to_filename = {}
+        self.prefix_table = []  # sorted table of top-level symbols in protos
+        self.type_map = {}  # full name as used in .proto -> python name
+        self.includes_needed = set()  # names of files needed to be included
+        self.filename_to_module = {}  # filename -> (package, module)
+
+    def extend_symbol_tables(self, proto_file):
+        # keep track of what file adds what top-level symbol to what abstract
+        # package name
+        package_name = proto_file.package
+        file_name = proto_file.name
+        self._add_filename(file_name)
+        all_defs = list(proto_file.message_type)
+        all_defs.extend(list(proto_file.enum_type))
+        all_defs.extend(list(proto_file.service))
+        for typedef in all_defs:
+            name = typedef.name
+            fullname = package_name + '.' + name
+            self.fullname_to_filename[fullname] = file_name
+            self.package_to_localname.setdefault(package_name, []).append(name)
+        self._update_prefix_table()
+
+    def _add_filename(self, filename):
+        if filename not in self.filename_to_module:
+            python_path = filename.replace('.proto', '_pb2').replace('/', '.')
+            package_name, _, module_name = python_path.rpartition('.')
+            self.filename_to_module[filename] = (package_name, module_name)
+
+    def _update_prefix_table(self):
+        # make a sorted list symbol prefixes needed to resolv for potential use
+        # of nested symbols
+        self.prefix_table = sorted(self.fullname_to_filename.iterkeys(),
+                                   reverse=True)
+
+    def _find_matching_prefix(self, fullname):
+        for prefix in self.prefix_table:
+            if fullname.startswith(prefix):
+                return prefix
+        # This should never happen
+        raise Exception('No match for type name "{}"'.format(fullname))
+
+    def add_needed_symbol(self, fullname):
+        if fullname in self.type_map:
+            return
+        top_level_symbol = self._find_matching_prefix(fullname)
+        name = top_level_symbol.rpartition('.')[2]
+        nested_name = fullname[len(top_level_symbol):]  # may be empty
+        file_name = self.fullname_to_filename[top_level_symbol]
+        self.includes_needed.add(file_name)
+        module_name = self.filename_to_module[file_name][1]
+        python_name = module_name + '.' + name + nested_name
+        self.type_map[fullname] = python_name
+
+    def get_type_map(self):
+        return self.type_map
+
+    def get_includes(self):
+        return sorted(
+            self.filename_to_module[fn] for fn in self.includes_needed)
 
 
 def generate_code(request, response):
 
     assert isinstance(request, plugin.CodeGeneratorRequest)
+
+    include_manager = IncludeManager()
     for proto_file in request.proto_file:
-        output = []
+
+        include_manager.extend_symbol_tables(proto_file)
+
+        methods = []
 
         for data in traverse_methods(proto_file):
-            output.append(data)
+            methods.append(data)
+            include_manager.add_needed_symbol(data['input_type'])
+            include_manager.add_needed_symbol(data['output_type'])
+            include_manager.add_needed_symbol(data['service'])
+
+        type_map = include_manager.get_type_map()
+        includes = include_manager.get_includes()
 
         # as a nice side-effect, generate a json file capturing the essence
         # of the RPC method entries
         f = response.file.add()
         f.name = proto_file.name + '.json'
-        f.content = dumps(output, indent=4)
+        f.content = dumps(dict(
+            type_rename_map=type_map,
+            includes=includes,
+            methods=methods), indent=4)
 
         # generate the real Python code file
         f = response.file.add()
         assert proto_file.name.endswith('.proto')
         f.name = proto_file.name.replace('.proto', '_gw.py')
-        f.content = generate_gw_code(proto_file.name, output)
+        f.content = generate_gw_code(proto_file.name,
+                                     methods, type_map, includes)
 
 
 if __name__ == '__main__':
@@ -175,6 +268,8 @@
     else:
         # read input from stdin
         data = sys.stdin.read()
+        # with file('/tmp/buf', 'wb') as f:
+        #     f.write(data)
 
     # parse request
     request = plugin.CodeGeneratorRequest()
diff --git a/chameleon/protos/schema.proto b/chameleon/protos/schema.proto
index 2a1ec08..0c06feb 100644
--- a/chameleon/protos/schema.proto
+++ b/chameleon/protos/schema.proto
@@ -2,6 +2,8 @@
 
 package schema;
 
+import "google/protobuf/empty.proto";
+
 // Contains the name and content of a *.proto file
 message ProtoFile {
     string file_name = 1;  // name of proto file
@@ -17,13 +19,10 @@
 
 }
 
-// Empty message
-message NullMessage {}
-
 // Schema services
 service SchemaService {
 
     // Return active grpc schemas
-    rpc GetSchema(NullMessage) returns (Schemas) {}
+    rpc GetSchema(google.protobuf.Empty) returns (Schemas) {}
 
 }
diff --git a/chameleon/protos/schema_pb2.py b/chameleon/protos/schema_pb2.py
index f5f17d2..537ba02 100644
--- a/chameleon/protos/schema_pb2.py
+++ b/chameleon/protos/schema_pb2.py
@@ -13,14 +13,16 @@
 _sym_db = _symbol_database.Default()
 
 
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
   name='schema.proto',
   package='schema',
   syntax='proto3',
-  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile\"\r\n\x0bNullMessage2D\n\rSchemaService\x12\x33\n\tGetSchema\x12\x13.schema.NullMessage\x1a\x0f.schema.Schemas\"\x00\x62\x06proto3')
-)
+  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\x1a\x1bgoogle/protobuf/empty.proto\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile2G\n\rSchemaService\x12\x36\n\tGetSchema\x12\x16.google.protobuf.Empty\x1a\x0f.schema.Schemas\"\x00\x62\x06proto3')
+  ,
+  dependencies=[google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
@@ -66,8 +68,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=24,
-  serialized_end=89,
+  serialized_start=53,
+  serialized_end=118,
 )
 
 
@@ -97,38 +99,13 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=91,
-  serialized_end=135,
-)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='schema.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=137,
-  serialized_end=150,
+  serialized_start=120,
+  serialized_end=164,
 )
 
 _SCHEMAS.fields_by_name['protos'].message_type = _PROTOFILE
 DESCRIPTOR.message_types_by_name['ProtoFile'] = _PROTOFILE
 DESCRIPTOR.message_types_by_name['Schemas'] = _SCHEMAS
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
 
 ProtoFile = _reflection.GeneratedProtocolMessageType('ProtoFile', (_message.Message,), dict(
   DESCRIPTOR = _PROTOFILE,
@@ -144,13 +121,6 @@
   ))
 _sym_db.RegisterMessage(Schemas)
 
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
 
 import grpc
 from grpc.beta import implementations as beta_implementations
@@ -171,7 +141,7 @@
     """
     self.GetSchema = channel.unary_unary(
         '/schema.SchemaService/GetSchema',
-        request_serializer=NullMessage.SerializeToString,
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
         response_deserializer=Schemas.FromString,
         )
 
@@ -192,7 +162,7 @@
   rpc_method_handlers = {
       'GetSchema': grpc.unary_unary_rpc_method_handler(
           servicer.GetSchema,
-          request_deserializer=NullMessage.FromString,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
           response_serializer=Schemas.SerializeToString,
       ),
   }
@@ -222,7 +192,7 @@
 
 def beta_create_SchemaService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
   request_deserializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.FromString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
   }
   response_serializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.SerializeToString,
@@ -236,7 +206,7 @@
 
 def beta_create_SchemaService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
   request_serializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.SerializeToString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
   }
   response_deserializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.FromString,
diff --git a/ofagent/connection_mgr.py b/ofagent/connection_mgr.py
index 0bb2f89..b55d47a 100644
--- a/ofagent/connection_mgr.py
+++ b/ofagent/connection_mgr.py
@@ -23,14 +23,16 @@
 from common.utils.consulhelpers import get_endpoint_from_consul
 from structlog import get_logger
 import grpc
-from ofagent.protos import third_party
+# from ofagent.protos import third_party
 from protos import voltha_pb2
 from grpc_client import GrpcClient
 
 from agent import Agent
+from google.protobuf.empty_pb2 import Empty
+
 
 log = get_logger()
-_ = third_party
+# _ = third_party
 
 class ConnectionManager(object):
 
@@ -121,8 +123,7 @@
             log.info('Retrieve devices from voltha')
             try:
                 stub = voltha_pb2.VolthaLogicalLayerStub(self.channel)
-                devices = stub.ListLogicalDevices(
-                    voltha_pb2.NullMessage()).items
+                devices = stub.ListLogicalDevices(Empty()).items
                 for device in devices:
                     log.info("Devices {} -> {}".format(device.id,
                                                             device.datapath_id))
diff --git a/ofagent/grpc_client.py b/ofagent/grpc_client.py
index 5b6b0a8..a4475b5 100644
--- a/ofagent/grpc_client.py
+++ b/ofagent/grpc_client.py
@@ -27,7 +27,8 @@
 from twisted.internet.defer import inlineCallbacks, returnValue, DeferredQueue
 
 from protos.voltha_pb2 import ID, VolthaLogicalLayerStub, FlowTableUpdate, \
-    GroupTableUpdate, NullMessage, PacketOut
+    GroupTableUpdate, PacketOut
+from google.protobuf import empty_pb2
 
 
 log = get_logger()
@@ -81,7 +82,7 @@
 
         def receive_packet_in_stream():
             streaming_rpc_method = self.logical_stub.ReceivePacketsIn
-            iterator = streaming_rpc_method(NullMessage())
+            iterator = streaming_rpc_method(empty_pb2.Empty())
             for packet_in in iterator:
                 reactor.callFromThread(self.packet_in_queue.put,
                                        packet_in)
diff --git a/ofagent/protos/README b/ofagent/protos/README
new file mode 100644
index 0000000..65c5e93
--- /dev/null
+++ b/ofagent/protos/README
@@ -0,0 +1 @@
+Protoc-generated *.py files are populated here from Voltha via make
diff --git a/ofagent/protos/openflow_13_pb2.py b/ofagent/protos/openflow_13_pb2.py
deleted file mode 100644
index 025e5c9..0000000
--- a/ofagent/protos/openflow_13_pb2.py
+++ /dev/null
@@ -1,8320 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: openflow_13.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf.internal import enum_type_wrapper
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='openflow_13.proto',
-  package='openflow_13',
-  syntax='proto3',
-  serialized_pb=_b('\n\x11openflow_13.proto\x12\x0bopenflow_13\"O\n\nofp_header\x12\x0f\n\x07version\x18\x01 \x01(\r\x12#\n\x04type\x18\x02 \x01(\x0e\x32\x15.openflow_13.ofp_type\x12\x0b\n\x03xid\x18\x03 \x01(\r\"\x96\x01\n\x15ofp_hello_elem_header\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .openflow_13.ofp_hello_elem_type\x12\x42\n\rversionbitmap\x18\x02 \x01(\x0b\x32).openflow_13.ofp_hello_elem_versionbitmapH\x00\x42\t\n\x07\x65lement\"/\n\x1cofp_hello_elem_versionbitmap\x12\x0f\n\x07\x62itmaps\x18\x02 \x03(\r\"A\n\tofp_hello\x12\x34\n\x08\x65lements\x18\x01 \x03(\x0b\x32\".openflow_13.ofp_hello_elem_header\"9\n\x11ofp_switch_config\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x15\n\rmiss_send_len\x18\x02 \x01(\r\"1\n\rofp_table_mod\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x0e\n\x06\x63onfig\x18\x02 \x01(\r\"\xc3\x01\n\x08ofp_port\x12\x0f\n\x07port_no\x18\x01 \x01(\r\x12\x0f\n\x07hw_addr\x18\x02 \x03(\r\x12\x0c\n\x04name\x18\x03 \x01(\t\x12\x0e\n\x06\x63onfig\x18\x04 \x01(\r\x12\r\n\x05state\x18\x05 \x01(\r\x12\x0c\n\x04\x63urr\x18\x06 \x01(\r\x12\x12\n\nadvertised\x18\x07 \x01(\r\x12\x11\n\tsupported\x18\x08 \x01(\r\x12\x0c\n\x04peer\x18\t \x01(\r\x12\x12\n\ncurr_speed\x18\n \x01(\r\x12\x11\n\tmax_speed\x18\x0b \x01(\r\"{\n\x13ofp_switch_features\x12\x13\n\x0b\x64\x61tapath_id\x18\x01 \x01(\x04\x12\x11\n\tn_buffers\x18\x02 \x01(\r\x12\x10\n\x08n_tables\x18\x03 \x01(\r\x12\x14\n\x0c\x61uxiliary_id\x18\x04 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x05 \x01(\r\"d\n\x0fofp_port_status\x12,\n\x06reason\x18\x01 \x01(\x0e\x32\x1c.openflow_13.ofp_port_reason\x12#\n\x04\x64\x65sc\x18\x02 \x01(\x0b\x32\x15.openflow_13.ofp_port\"a\n\x0cofp_port_mod\x12\x0f\n\x07port_no\x18\x01 \x01(\r\x12\x0f\n\x07hw_addr\x18\x02 \x03(\r\x12\x0e\n\x06\x63onfig\x18\x03 \x01(\r\x12\x0c\n\x04mask\x18\x04 \x01(\r\x12\x11\n\tadvertise\x18\x05 \x01(\r\"f\n\tofp_match\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openflow_13.ofp_match_type\x12.\n\noxm_fields\x18\x02 \x03(\x0b\x32\x1a.openflow_13.ofp_oxm_field\"\xc3\x01\n\rofp_oxm_field\x12-\n\toxm_class\x18\x01 \x01(\x0e\x32\x1a.openflow_13.ofp_oxm_class\x12\x33\n\tofb_field\x18\x04 \x01(\x0b\x32\x1e.openflow_13.ofp_oxm_ofb_fieldH\x00\x12\x45\n\x12\x65xperimenter_field\x18\x05 \x01(\x0b\x32\'.openflow_13.ofp_oxm_experimenter_fieldH\x00\x42\x07\n\x05\x66ield\"\x8b\n\n\x11ofp_oxm_ofb_field\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .openflow_13.oxm_ofb_field_types\x12\x10\n\x08has_mask\x18\x02 \x01(\x08\x12\x0e\n\x04port\x18\x03 \x01(\rH\x00\x12\x17\n\rphysical_port\x18\x04 \x01(\rH\x00\x12\x18\n\x0etable_metadata\x18\x05 \x01(\x04H\x00\x12\x11\n\x07\x65th_dst\x18\x06 \x01(\x0cH\x00\x12\x11\n\x07\x65th_src\x18\x07 \x01(\x0cH\x00\x12\x12\n\x08\x65th_type\x18\x08 \x01(\rH\x00\x12\x12\n\x08vlan_vid\x18\t \x01(\rH\x00\x12\x12\n\x08vlan_pcp\x18\n \x01(\rH\x00\x12\x11\n\x07ip_dscp\x18\x0b \x01(\rH\x00\x12\x10\n\x06ip_ecn\x18\x0c \x01(\rH\x00\x12\x12\n\x08ip_proto\x18\r \x01(\rH\x00\x12\x12\n\x08ipv4_src\x18\x0e \x01(\rH\x00\x12\x12\n\x08ipv4_dst\x18\x0f \x01(\rH\x00\x12\x11\n\x07tcp_src\x18\x10 \x01(\rH\x00\x12\x11\n\x07tcp_dst\x18\x11 \x01(\rH\x00\x12\x11\n\x07udp_src\x18\x12 \x01(\rH\x00\x12\x11\n\x07udp_dst\x18\x13 \x01(\rH\x00\x12\x12\n\x08sctp_src\x18\x14 \x01(\rH\x00\x12\x12\n\x08sctp_dst\x18\x15 \x01(\rH\x00\x12\x15\n\x0bicmpv4_type\x18\x16 \x01(\rH\x00\x12\x15\n\x0bicmpv4_code\x18\x17 \x01(\rH\x00\x12\x10\n\x06\x61rp_op\x18\x18 \x01(\rH\x00\x12\x11\n\x07\x61rp_spa\x18\x19 \x01(\rH\x00\x12\x11\n\x07\x61rp_tpa\x18\x1a \x01(\rH\x00\x12\x11\n\x07\x61rp_sha\x18\x1b \x01(\x0cH\x00\x12\x11\n\x07\x61rp_tha\x18\x1c \x01(\x0cH\x00\x12\x12\n\x08ipv6_src\x18\x1d \x01(\x0cH\x00\x12\x12\n\x08ipv6_dst\x18\x1e \x01(\x0cH\x00\x12\x15\n\x0bipv6_flabel\x18\x1f \x01(\rH\x00\x12\x15\n\x0bicmpv6_type\x18  \x01(\rH\x00\x12\x15\n\x0bicmpv6_code\x18! \x01(\rH\x00\x12\x18\n\x0eipv6_nd_target\x18\" \x01(\x0cH\x00\x12\x15\n\x0bipv6_nd_ssl\x18# \x01(\x0cH\x00\x12\x15\n\x0bipv6_nd_tll\x18$ \x01(\x0cH\x00\x12\x14\n\nmpls_label\x18% \x01(\rH\x00\x12\x11\n\x07mpls_tc\x18& \x01(\rH\x00\x12\x12\n\x08mpls_bos\x18\' \x01(\rH\x00\x12\x12\n\x08pbb_isid\x18( \x01(\rH\x00\x12\x13\n\ttunnel_id\x18) \x01(\x04H\x00\x12\x15\n\x0bipv6_exthdr\x18* \x01(\rH\x00\x12\x1d\n\x13table_metadata_mask\x18i \x01(\x04H\x01\x12\x16\n\x0c\x65th_dst_mask\x18j \x01(\x0cH\x01\x12\x16\n\x0c\x65th_src_mask\x18k \x01(\x0cH\x01\x12\x17\n\rvlan_vid_mask\x18m \x01(\rH\x01\x12\x17\n\ripv4_src_mask\x18r \x01(\rH\x01\x12\x17\n\ripv4_dst_mask\x18s \x01(\rH\x01\x12\x16\n\x0c\x61rp_spa_mask\x18} \x01(\rH\x01\x12\x16\n\x0c\x61rp_tpa_mask\x18~ \x01(\rH\x01\x12\x18\n\ripv6_src_mask\x18\x81\x01 \x01(\x0cH\x01\x12\x18\n\ripv6_dst_mask\x18\x82\x01 \x01(\x0cH\x01\x12\x1b\n\x10ipv6_flabel_mask\x18\x83\x01 \x01(\rH\x01\x12\x18\n\rpbb_isid_mask\x18\x8c\x01 \x01(\rH\x01\x12\x19\n\x0etunnel_id_mask\x18\x8d\x01 \x01(\x04H\x01\x12\x1b\n\x10ipv6_exthdr_mask\x18\x8e\x01 \x01(\rH\x01\x42\x07\n\x05valueB\x06\n\x04mask\"F\n\x1aofp_oxm_experimenter_field\x12\x12\n\noxm_header\x18\x01 \x01(\r\x12\x14\n\x0c\x65xperimenter\x18\x02 \x01(\r\"\xe6\x03\n\nofp_action\x12*\n\x04type\x18\x01 \x01(\x0e\x32\x1c.openflow_13.ofp_action_type\x12\x30\n\x06output\x18\x02 \x01(\x0b\x32\x1e.openflow_13.ofp_action_outputH\x00\x12\x34\n\x08mpls_ttl\x18\x03 \x01(\x0b\x32 .openflow_13.ofp_action_mpls_ttlH\x00\x12,\n\x04push\x18\x04 \x01(\x0b\x32\x1c.openflow_13.ofp_action_pushH\x00\x12\x34\n\x08pop_mpls\x18\x05 \x01(\x0b\x32 .openflow_13.ofp_action_pop_mplsH\x00\x12.\n\x05group\x18\x06 \x01(\x0b\x32\x1d.openflow_13.ofp_action_groupH\x00\x12\x30\n\x06nw_ttl\x18\x07 \x01(\x0b\x32\x1e.openflow_13.ofp_action_nw_ttlH\x00\x12\x36\n\tset_field\x18\x08 \x01(\x0b\x32!.openflow_13.ofp_action_set_fieldH\x00\x12<\n\x0c\x65xperimenter\x18\t \x01(\x0b\x32$.openflow_13.ofp_action_experimenterH\x00\x42\x08\n\x06\x61\x63tion\"2\n\x11ofp_action_output\x12\x0c\n\x04port\x18\x01 \x01(\r\x12\x0f\n\x07max_len\x18\x02 \x01(\r\"\'\n\x13ofp_action_mpls_ttl\x12\x10\n\x08mpls_ttl\x18\x01 \x01(\r\"$\n\x0fofp_action_push\x12\x11\n\tethertype\x18\x01 \x01(\r\"(\n\x13ofp_action_pop_mpls\x12\x11\n\tethertype\x18\x01 \x01(\r\"$\n\x10ofp_action_group\x12\x10\n\x08group_id\x18\x01 \x01(\r\"#\n\x11ofp_action_nw_ttl\x12\x0e\n\x06nw_ttl\x18\x01 \x01(\r\"A\n\x14ofp_action_set_field\x12)\n\x05\x66ield\x18\x01 \x01(\x0b\x32\x1a.openflow_13.ofp_oxm_field\"=\n\x17ofp_action_experimenter\x12\x14\n\x0c\x65xperimenter\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\xde\x02\n\x0fofp_instruction\x12\x0c\n\x04type\x18\x01 \x01(\r\x12=\n\ngoto_table\x18\x02 \x01(\x0b\x32\'.openflow_13.ofp_instruction_goto_tableH\x00\x12\x45\n\x0ewrite_metadata\x18\x03 \x01(\x0b\x32+.openflow_13.ofp_instruction_write_metadataH\x00\x12\x37\n\x07\x61\x63tions\x18\x04 \x01(\x0b\x32$.openflow_13.ofp_instruction_actionsH\x00\x12\x33\n\x05meter\x18\x05 \x01(\x0b\x32\".openflow_13.ofp_instruction_meterH\x00\x12\x41\n\x0c\x65xperimenter\x18\x06 \x01(\x0b\x32).openflow_13.ofp_instruction_experimenterH\x00\x42\x06\n\x04\x64\x61ta\".\n\x1aofp_instruction_goto_table\x12\x10\n\x08table_id\x18\x01 \x01(\r\"I\n\x1eofp_instruction_write_metadata\x12\x10\n\x08metadata\x18\x01 \x01(\x04\x12\x15\n\rmetadata_mask\x18\x02 \x01(\x04\"C\n\x17ofp_instruction_actions\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x17.openflow_13.ofp_action\")\n\x15ofp_instruction_meter\x12\x10\n\x08meter_id\x18\x01 \x01(\r\"B\n\x1cofp_instruction_experimenter\x12\x14\n\x0c\x65xperimenter\x18\x01 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x01(\x0c\"\xd9\x02\n\x0cofp_flow_mod\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\x04\x12\x13\n\x0b\x63ookie_mask\x18\x02 \x01(\x04\x12\x10\n\x08table_id\x18\x03 \x01(\r\x12\x32\n\x07\x63ommand\x18\x04 \x01(\x0e\x32!.openflow_13.ofp_flow_mod_command\x12\x14\n\x0cidle_timeout\x18\x05 \x01(\r\x12\x14\n\x0chard_timeout\x18\x06 \x01(\r\x12\x10\n\x08priority\x18\x07 \x01(\r\x12\x11\n\tbuffer_id\x18\x08 \x01(\r\x12\x10\n\x08out_port\x18\t \x01(\r\x12\x11\n\tout_group\x18\n \x01(\r\x12\r\n\x05\x66lags\x18\x0b \x01(\r\x12%\n\x05match\x18\x0c \x01(\x0b\x32\x16.openflow_13.ofp_match\x12\x32\n\x0cinstructions\x18\r \x03(\x0b\x32\x1c.openflow_13.ofp_instruction\"o\n\nofp_bucket\x12\x0e\n\x06weight\x18\x01 \x01(\r\x12\x12\n\nwatch_port\x18\x02 \x01(\r\x12\x13\n\x0bwatch_group\x18\x03 \x01(\r\x12(\n\x07\x61\x63tions\x18\x04 \x03(\x0b\x32\x17.openflow_13.ofp_action\"\xab\x01\n\rofp_group_mod\x12\x33\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\".openflow_13.ofp_group_mod_command\x12)\n\x04type\x18\x02 \x01(\x0e\x32\x1b.openflow_13.ofp_group_type\x12\x10\n\x08group_id\x18\x03 \x01(\r\x12(\n\x07\x62uckets\x18\x04 \x03(\x0b\x32\x17.openflow_13.ofp_bucket\"l\n\x0eofp_packet_out\x12\x11\n\tbuffer_id\x18\x01 \x01(\r\x12\x0f\n\x07in_port\x18\x02 \x01(\r\x12(\n\x07\x61\x63tions\x18\x03 \x03(\x0b\x32\x17.openflow_13.ofp_action\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"\xbf\x01\n\rofp_packet_in\x12\x11\n\tbuffer_id\x18\x01 \x01(\r\x12\x11\n\ttotal_len\x18\x02 \x01(\r\x12\x31\n\x06reason\x18\x03 \x01(\x0e\x32!.openflow_13.ofp_packet_in_reason\x12\x10\n\x08table_id\x18\x04 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x05 \x01(\x04\x12%\n\x05match\x18\x06 \x01(\x0b\x32\x16.openflow_13.ofp_match\x12\x0c\n\x04\x64\x61ta\x18\x07 \x01(\x0c\"\xa6\x02\n\x10ofp_flow_removed\x12\x0e\n\x06\x63ookie\x18\x01 \x01(\x04\x12\x10\n\x08priority\x18\x02 \x01(\r\x12\x34\n\x06reason\x18\x03 \x01(\x0e\x32$.openflow_13.ofp_flow_removed_reason\x12\x10\n\x08table_id\x18\x04 \x01(\r\x12\x14\n\x0c\x64uration_sec\x18\x05 \x01(\r\x12\x15\n\rduration_nsec\x18\x06 \x01(\r\x12\x14\n\x0cidle_timeout\x18\x07 \x01(\r\x12\x14\n\x0chard_timeout\x18\x08 \x01(\r\x12\x14\n\x0cpacket_count\x18\t \x01(\x04\x12\x12\n\nbyte_count\x18\n \x01(\x04\x12%\n\x05match\x18y \x01(\x0b\x32\x16.openflow_13.ofp_match\"v\n\x15ofp_meter_band_header\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .openflow_13.ofp_meter_band_type\x12\x0b\n\x03len\x18\x02 \x01(\r\x12\x0c\n\x04rate\x18\x03 \x01(\r\x12\x12\n\nburst_size\x18\x04 \x01(\r\"R\n\x13ofp_meter_band_drop\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0b\n\x03len\x18\x02 \x01(\r\x12\x0c\n\x04rate\x18\x03 \x01(\r\x12\x12\n\nburst_size\x18\x04 \x01(\r\"m\n\x1aofp_meter_band_dscp_remark\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0b\n\x03len\x18\x02 \x01(\r\x12\x0c\n\x04rate\x18\x03 \x01(\r\x12\x12\n\nburst_size\x18\x04 \x01(\r\x12\x12\n\nprec_level\x18\x05 \x01(\r\"\x92\x01\n\x1bofp_meter_band_experimenter\x12.\n\x04type\x18\x01 \x01(\x0e\x32 .openflow_13.ofp_meter_band_type\x12\x0b\n\x03len\x18\x02 \x01(\r\x12\x0c\n\x04rate\x18\x03 \x01(\r\x12\x12\n\nburst_size\x18\x04 \x01(\r\x12\x14\n\x0c\x65xperimenter\x18\x05 \x01(\r\"\x98\x01\n\rofp_meter_mod\x12\x33\n\x07\x63ommand\x18\x01 \x01(\x0e\x32\".openflow_13.ofp_meter_mod_command\x12\r\n\x05\x66lags\x18\x02 \x01(\r\x12\x10\n\x08meter_id\x18\x03 \x01(\r\x12\x31\n\x05\x62\x61nds\x18\x04 \x03(\x0b\x32\".openflow_13.ofp_meter_band_header\"9\n\rofp_error_msg\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x0c\n\x04\x63ode\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"`\n\x1aofp_error_experimenter_msg\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x10\n\x08\x65xp_type\x18\x02 \x01(\r\x12\x14\n\x0c\x65xperimenter\x18\x03 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x04 \x01(\x0c\"c\n\x15ofp_multipart_request\x12-\n\x04type\x18\x01 \x01(\x0e\x32\x1f.openflow_13.ofp_multipart_type\x12\r\n\x05\x66lags\x18\x02 \x01(\r\x12\x0c\n\x04\x62ody\x18\x03 \x01(\x0c\"a\n\x13ofp_multipart_reply\x12-\n\x04type\x18\x01 \x01(\x0e\x32\x1f.openflow_13.ofp_multipart_type\x12\r\n\x05\x66lags\x18\x02 \x01(\r\x12\x0c\n\x04\x62ody\x18\x03 \x01(\x0c\"c\n\x08ofp_desc\x12\x10\n\x08mfr_desc\x18\x01 \x01(\t\x12\x0f\n\x07hw_desc\x18\x02 \x01(\t\x12\x0f\n\x07sw_desc\x18\x03 \x01(\t\x12\x12\n\nserial_num\x18\x04 \x01(\t\x12\x0f\n\x07\x64p_desc\x18\x05 \x01(\t\"\x9b\x01\n\x16ofp_flow_stats_request\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x10\n\x08out_port\x18\x02 \x01(\r\x12\x11\n\tout_group\x18\x03 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\x04\x12\x13\n\x0b\x63ookie_mask\x18\x05 \x01(\x04\x12%\n\x05match\x18\x06 \x01(\x0b\x32\x16.openflow_13.ofp_match\"\xb1\x02\n\x0eofp_flow_stats\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x14\n\x0c\x64uration_sec\x18\x02 \x01(\r\x12\x15\n\rduration_nsec\x18\x03 \x01(\r\x12\x10\n\x08priority\x18\x04 \x01(\r\x12\x14\n\x0cidle_timeout\x18\x05 \x01(\r\x12\x14\n\x0chard_timeout\x18\x06 \x01(\r\x12\r\n\x05\x66lags\x18\x07 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x08 \x01(\x04\x12\x14\n\x0cpacket_count\x18\t \x01(\x04\x12\x12\n\nbyte_count\x18\n \x01(\x04\x12%\n\x05match\x18\x0c \x01(\x0b\x32\x16.openflow_13.ofp_match\x12\x32\n\x0cinstructions\x18\r \x03(\x0b\x32\x1c.openflow_13.ofp_instruction\"\xa0\x01\n\x1bofp_aggregate_stats_request\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x10\n\x08out_port\x18\x02 \x01(\r\x12\x11\n\tout_group\x18\x03 \x01(\r\x12\x0e\n\x06\x63ookie\x18\x04 \x01(\x04\x12\x13\n\x0b\x63ookie_mask\x18\x05 \x01(\x04\x12%\n\x05match\x18\x06 \x01(\x0b\x32\x16.openflow_13.ofp_match\"Y\n\x19ofp_aggregate_stats_reply\x12\x14\n\x0cpacket_count\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x04\x12\x12\n\nflow_count\x18\x03 \x01(\r\"\xb1\x03\n\x1aofp_table_feature_property\x12\x36\n\x04type\x18\x01 \x01(\x0e\x32(.openflow_13.ofp_table_feature_prop_type\x12H\n\x0cinstructions\x18\x02 \x01(\x0b\x32\x30.openflow_13.ofp_table_feature_prop_instructionsH\x00\x12\x46\n\x0bnext_tables\x18\x03 \x01(\x0b\x32/.openflow_13.ofp_table_feature_prop_next_tablesH\x00\x12>\n\x07\x61\x63tions\x18\x04 \x01(\x0b\x32+.openflow_13.ofp_table_feature_prop_actionsH\x00\x12\x36\n\x03oxm\x18\x05 \x01(\x0b\x32\'.openflow_13.ofp_table_feature_prop_oxmH\x00\x12H\n\x0c\x65xperimenter\x18\x06 \x01(\x0b\x32\x30.openflow_13.ofp_table_feature_prop_experimenterH\x00\x42\x07\n\x05value\"Y\n#ofp_table_feature_prop_instructions\x12\x32\n\x0cinstructions\x18\x01 \x03(\x0b\x32\x1c.openflow_13.ofp_instruction\"<\n\"ofp_table_feature_prop_next_tables\x12\x16\n\x0enext_table_ids\x18\x01 \x03(\r\"J\n\x1eofp_table_feature_prop_actions\x12(\n\x07\x61\x63tions\x18\x01 \x03(\x0b\x32\x17.openflow_13.ofp_action\"-\n\x1aofp_table_feature_prop_oxm\x12\x0f\n\x07oxm_ids\x18\x03 \x03(\r\"h\n#ofp_table_feature_prop_experimenter\x12\x14\n\x0c\x65xperimenter\x18\x02 \x01(\r\x12\x10\n\x08\x65xp_type\x18\x03 \x01(\r\x12\x19\n\x11\x65xperimenter_data\x18\x04 \x03(\r\"\xc6\x01\n\x12ofp_table_features\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x16\n\x0emetadata_match\x18\x03 \x01(\x04\x12\x16\n\x0emetadata_write\x18\x04 \x01(\x04\x12\x0e\n\x06\x63onfig\x18\x05 \x01(\r\x12\x13\n\x0bmax_entries\x18\x06 \x01(\r\x12;\n\nproperties\x18\x07 \x03(\x0b\x32\'.openflow_13.ofp_table_feature_property\"f\n\x0fofp_table_stats\x12\x10\n\x08table_id\x18\x01 \x01(\r\x12\x14\n\x0c\x61\x63tive_count\x18\x02 \x01(\r\x12\x14\n\x0clookup_count\x18\x03 \x01(\x04\x12\x15\n\rmatched_count\x18\x04 \x01(\x04\")\n\x16ofp_port_stats_request\x12\x0f\n\x07port_no\x18\x01 \x01(\r\"\xbb\x02\n\x0eofp_port_stats\x12\x0f\n\x07port_no\x18\x01 \x01(\r\x12\x12\n\nrx_packets\x18\x02 \x01(\x04\x12\x12\n\ntx_packets\x18\x03 \x01(\x04\x12\x10\n\x08rx_bytes\x18\x04 \x01(\x04\x12\x10\n\x08tx_bytes\x18\x05 \x01(\x04\x12\x12\n\nrx_dropped\x18\x06 \x01(\x04\x12\x12\n\ntx_dropped\x18\x07 \x01(\x04\x12\x11\n\trx_errors\x18\x08 \x01(\x04\x12\x11\n\ttx_errors\x18\t \x01(\x04\x12\x14\n\x0crx_frame_err\x18\n \x01(\x04\x12\x13\n\x0brx_over_err\x18\x0b \x01(\x04\x12\x12\n\nrx_crc_err\x18\x0c \x01(\x04\x12\x12\n\ncollisions\x18\r \x01(\x04\x12\x14\n\x0c\x64uration_sec\x18\x0e \x01(\r\x12\x15\n\rduration_nsec\x18\x0f \x01(\r\"+\n\x17ofp_group_stats_request\x12\x10\n\x08group_id\x18\x01 \x01(\r\">\n\x12ofp_bucket_counter\x12\x14\n\x0cpacket_count\x18\x01 \x01(\x04\x12\x12\n\nbyte_count\x18\x02 \x01(\x04\"\xc4\x01\n\x0fofp_group_stats\x12\x10\n\x08group_id\x18\x01 \x01(\r\x12\x11\n\tref_count\x18\x02 \x01(\r\x12\x14\n\x0cpacket_count\x18\x03 \x01(\x04\x12\x12\n\nbyte_count\x18\x04 \x01(\x04\x12\x14\n\x0c\x64uration_sec\x18\x05 \x01(\r\x12\x15\n\rduration_nsec\x18\x06 \x01(\r\x12\x35\n\x0c\x62ucket_stats\x18\x07 \x03(\x0b\x32\x1f.openflow_13.ofp_bucket_counter\"w\n\x0eofp_group_desc\x12)\n\x04type\x18\x01 \x01(\x0e\x32\x1b.openflow_13.ofp_group_type\x12\x10\n\x08group_id\x18\x02 \x01(\r\x12(\n\x07\x62uckets\x18\x03 \x03(\x0b\x32\x17.openflow_13.ofp_bucket\"i\n\x0fofp_group_entry\x12)\n\x04\x64\x65sc\x18\x01 \x01(\x0b\x32\x1b.openflow_13.ofp_group_desc\x12+\n\x05stats\x18\x02 \x01(\x0b\x32\x1c.openflow_13.ofp_group_stats\"^\n\x12ofp_group_features\x12\r\n\x05types\x18\x01 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x02 \x01(\r\x12\x12\n\nmax_groups\x18\x03 \x03(\r\x12\x0f\n\x07\x61\x63tions\x18\x04 \x03(\r\"/\n\x1bofp_meter_multipart_request\x12\x10\n\x08meter_id\x18\x01 \x01(\r\"J\n\x14ofp_meter_band_stats\x12\x19\n\x11packet_band_count\x18\x01 \x01(\x04\x12\x17\n\x0f\x62yte_band_count\x18\x02 \x01(\x04\"\xcb\x01\n\x0fofp_meter_stats\x12\x10\n\x08meter_id\x18\x01 \x01(\r\x12\x12\n\nflow_count\x18\x02 \x01(\r\x12\x17\n\x0fpacket_in_count\x18\x03 \x01(\x04\x12\x15\n\rbyte_in_count\x18\x04 \x01(\x04\x12\x14\n\x0c\x64uration_sec\x18\x05 \x01(\r\x12\x15\n\rduration_nsec\x18\x06 \x01(\r\x12\x35\n\nband_stats\x18\x07 \x03(\x0b\x32!.openflow_13.ofp_meter_band_stats\"f\n\x10ofp_meter_config\x12\r\n\x05\x66lags\x18\x01 \x01(\r\x12\x10\n\x08meter_id\x18\x02 \x01(\r\x12\x31\n\x05\x62\x61nds\x18\x03 \x03(\x0b\x32\".openflow_13.ofp_meter_band_header\"w\n\x12ofp_meter_features\x12\x11\n\tmax_meter\x18\x01 \x01(\r\x12\x12\n\nband_types\x18\x02 \x01(\r\x12\x14\n\x0c\x63\x61pabilities\x18\x03 \x01(\r\x12\x11\n\tmax_bands\x18\x04 \x01(\r\x12\x11\n\tmax_color\x18\x05 \x01(\r\"Y\n!ofp_experimenter_multipart_header\x12\x14\n\x0c\x65xperimenter\x18\x01 \x01(\r\x12\x10\n\x08\x65xp_type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"O\n\x17ofp_experimenter_header\x12\x14\n\x0c\x65xperimenter\x18\x01 \x01(\r\x12\x10\n\x08\x65xp_type\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"6\n\x15ofp_queue_prop_header\x12\x10\n\x08property\x18\x01 \x01(\r\x12\x0b\n\x03len\x18\x02 \x01(\r\"`\n\x17ofp_queue_prop_min_rate\x12\x37\n\x0bprop_header\x18\x01 \x01(\x0b\x32\".openflow_13.ofp_queue_prop_header\x12\x0c\n\x04rate\x18\x02 \x01(\r\"`\n\x17ofp_queue_prop_max_rate\x12\x37\n\x0bprop_header\x18\x01 \x01(\x0b\x32\".openflow_13.ofp_queue_prop_header\x12\x0c\n\x04rate\x18\x02 \x01(\r\"z\n\x1bofp_queue_prop_experimenter\x12\x37\n\x0bprop_header\x18\x01 \x01(\x0b\x32\".openflow_13.ofp_queue_prop_header\x12\x14\n\x0c\x65xperimenter\x18\x02 \x01(\r\x12\x0c\n\x04\x64\x61ta\x18\x03 \x01(\x0c\"j\n\x10ofp_packet_queue\x12\x10\n\x08queue_id\x18\x01 \x01(\r\x12\x0c\n\x04port\x18\x02 \x01(\r\x12\x36\n\nproperties\x18\x04 \x03(\x0b\x32\".openflow_13.ofp_queue_prop_header\",\n\x1cofp_queue_get_config_request\x12\x0c\n\x04port\x18\x01 \x01(\r\"Y\n\x1aofp_queue_get_config_reply\x12\x0c\n\x04port\x18\x01 \x01(\r\x12-\n\x06queues\x18\x02 \x03(\x0b\x32\x1d.openflow_13.ofp_packet_queue\"6\n\x14ofp_action_set_queue\x12\x0c\n\x04type\x18\x01 \x01(\r\x12\x10\n\x08queue_id\x18\x03 \x01(\r\"<\n\x17ofp_queue_stats_request\x12\x0f\n\x07port_no\x18\x01 \x01(\r\x12\x10\n\x08queue_id\x18\x02 \x01(\r\"\x9a\x01\n\x0fofp_queue_stats\x12\x0f\n\x07port_no\x18\x01 \x01(\r\x12\x10\n\x08queue_id\x18\x02 \x01(\r\x12\x10\n\x08tx_bytes\x18\x03 \x01(\x04\x12\x12\n\ntx_packets\x18\x04 \x01(\x04\x12\x11\n\ttx_errors\x18\x05 \x01(\x04\x12\x14\n\x0c\x64uration_sec\x18\x06 \x01(\r\x12\x15\n\rduration_nsec\x18\x07 \x01(\r\"Y\n\x10ofp_role_request\x12.\n\x04role\x18\x01 \x01(\x0e\x32 .openflow_13.ofp_controller_role\x12\x15\n\rgeneration_id\x18\x02 \x01(\x04\"_\n\x10ofp_async_config\x12\x16\n\x0epacket_in_mask\x18\x01 \x03(\r\x12\x18\n\x10port_status_mask\x18\x02 \x03(\r\x12\x19\n\x11\x66low_removed_mask\x18\x03 \x03(\r*\xd5\x01\n\x0bofp_port_no\x12\x10\n\x0cOFPP_INVALID\x10\x00\x12\x10\n\x08OFPP_MAX\x10\x80\xfe\xff\xff\x07\x12\x14\n\x0cOFPP_IN_PORT\x10\xf8\xff\xff\xff\x07\x12\x12\n\nOFPP_TABLE\x10\xf9\xff\xff\xff\x07\x12\x13\n\x0bOFPP_NORMAL\x10\xfa\xff\xff\xff\x07\x12\x12\n\nOFPP_FLOOD\x10\xfb\xff\xff\xff\x07\x12\x10\n\x08OFPP_ALL\x10\xfc\xff\xff\xff\x07\x12\x17\n\x0fOFPP_CONTROLLER\x10\xfd\xff\xff\xff\x07\x12\x12\n\nOFPP_LOCAL\x10\xfe\xff\xff\xff\x07\x12\x10\n\x08OFPP_ANY\x10\xff\xff\xff\xff\x07*\xc8\x05\n\x08ofp_type\x12\x0e\n\nOFPT_HELLO\x10\x00\x12\x0e\n\nOFPT_ERROR\x10\x01\x12\x15\n\x11OFPT_ECHO_REQUEST\x10\x02\x12\x13\n\x0fOFPT_ECHO_REPLY\x10\x03\x12\x15\n\x11OFPT_EXPERIMENTER\x10\x04\x12\x19\n\x15OFPT_FEATURES_REQUEST\x10\x05\x12\x17\n\x13OFPT_FEATURES_REPLY\x10\x06\x12\x1b\n\x17OFPT_GET_CONFIG_REQUEST\x10\x07\x12\x19\n\x15OFPT_GET_CONFIG_REPLY\x10\x08\x12\x13\n\x0fOFPT_SET_CONFIG\x10\t\x12\x12\n\x0eOFPT_PACKET_IN\x10\n\x12\x15\n\x11OFPT_FLOW_REMOVED\x10\x0b\x12\x14\n\x10OFPT_PORT_STATUS\x10\x0c\x12\x13\n\x0fOFPT_PACKET_OUT\x10\r\x12\x11\n\rOFPT_FLOW_MOD\x10\x0e\x12\x12\n\x0eOFPT_GROUP_MOD\x10\x0f\x12\x11\n\rOFPT_PORT_MOD\x10\x10\x12\x12\n\x0eOFPT_TABLE_MOD\x10\x11\x12\x1a\n\x16OFPT_MULTIPART_REQUEST\x10\x12\x12\x18\n\x14OFPT_MULTIPART_REPLY\x10\x13\x12\x18\n\x14OFPT_BARRIER_REQUEST\x10\x14\x12\x16\n\x12OFPT_BARRIER_REPLY\x10\x15\x12!\n\x1dOFPT_QUEUE_GET_CONFIG_REQUEST\x10\x16\x12\x1f\n\x1bOFPT_QUEUE_GET_CONFIG_REPLY\x10\x17\x12\x15\n\x11OFPT_ROLE_REQUEST\x10\x18\x12\x13\n\x0fOFPT_ROLE_REPLY\x10\x19\x12\x1a\n\x16OFPT_GET_ASYNC_REQUEST\x10\x1a\x12\x18\n\x14OFPT_GET_ASYNC_REPLY\x10\x1b\x12\x12\n\x0eOFPT_SET_ASYNC\x10\x1c\x12\x12\n\x0eOFPT_METER_MOD\x10\x1d*C\n\x13ofp_hello_elem_type\x12\x12\n\x0eOFPHET_INVALID\x10\x00\x12\x18\n\x14OFPHET_VERSIONBITMAP\x10\x01*e\n\x10ofp_config_flags\x12\x14\n\x10OFPC_FRAG_NORMAL\x10\x00\x12\x12\n\x0eOFPC_FRAG_DROP\x10\x01\x12\x13\n\x0fOFPC_FRAG_REASM\x10\x02\x12\x12\n\x0eOFPC_FRAG_MASK\x10\x03*@\n\x10ofp_table_config\x12\x11\n\rOFPTC_INVALID\x10\x00\x12\x19\n\x15OFPTC_DEPRECATED_MASK\x10\x03*>\n\tofp_table\x12\x11\n\rOFPTT_INVALID\x10\x00\x12\x0e\n\tOFPTT_MAX\x10\xfe\x01\x12\x0e\n\tOFPTT_ALL\x10\xff\x01*\xbb\x01\n\x10ofp_capabilities\x12\x10\n\x0cOFPC_INVALID\x10\x00\x12\x13\n\x0fOFPC_FLOW_STATS\x10\x01\x12\x14\n\x10OFPC_TABLE_STATS\x10\x02\x12\x13\n\x0fOFPC_PORT_STATS\x10\x04\x12\x14\n\x10OFPC_GROUP_STATS\x10\x08\x12\x11\n\rOFPC_IP_REASM\x10 \x12\x14\n\x10OFPC_QUEUE_STATS\x10@\x12\x16\n\x11OFPC_PORT_BLOCKED\x10\x80\x02*v\n\x0fofp_port_config\x12\x11\n\rOFPPC_INVALID\x10\x00\x12\x13\n\x0fOFPPC_PORT_DOWN\x10\x01\x12\x11\n\rOFPPC_NO_RECV\x10\x04\x12\x10\n\x0cOFPPC_NO_FWD\x10 \x12\x16\n\x12OFPPC_NO_PACKET_IN\x10@*[\n\x0eofp_port_state\x12\x11\n\rOFPPS_INVALID\x10\x00\x12\x13\n\x0fOFPPS_LINK_DOWN\x10\x01\x12\x11\n\rOFPPS_BLOCKED\x10\x02\x12\x0e\n\nOFPPS_LIVE\x10\x04*\xdd\x02\n\x11ofp_port_features\x12\x11\n\rOFPPF_INVALID\x10\x00\x12\x11\n\rOFPPF_10MB_HD\x10\x01\x12\x11\n\rOFPPF_10MB_FD\x10\x02\x12\x12\n\x0eOFPPF_100MB_HD\x10\x04\x12\x12\n\x0eOFPPF_100MB_FD\x10\x08\x12\x10\n\x0cOFPPF_1GB_HD\x10\x10\x12\x10\n\x0cOFPPF_1GB_FD\x10 \x12\x11\n\rOFPPF_10GB_FD\x10@\x12\x12\n\rOFPPF_40GB_FD\x10\x80\x01\x12\x13\n\x0eOFPPF_100GB_FD\x10\x80\x02\x12\x11\n\x0cOFPPF_1TB_FD\x10\x80\x04\x12\x10\n\x0bOFPPF_OTHER\x10\x80\x08\x12\x11\n\x0cOFPPF_COPPER\x10\x80\x10\x12\x10\n\x0bOFPPF_FIBER\x10\x80 \x12\x12\n\rOFPPF_AUTONEG\x10\x80@\x12\x11\n\x0bOFPPF_PAUSE\x10\x80\x80\x01\x12\x16\n\x10OFPPF_PAUSE_ASYM\x10\x80\x80\x02*D\n\x0fofp_port_reason\x12\r\n\tOFPPR_ADD\x10\x00\x12\x10\n\x0cOFPPR_DELETE\x10\x01\x12\x10\n\x0cOFPPR_MODIFY\x10\x02*3\n\x0eofp_match_type\x12\x12\n\x0eOFPMT_STANDARD\x10\x00\x12\r\n\tOFPMT_OXM\x10\x01*k\n\rofp_oxm_class\x12\x10\n\x0cOFPXMC_NXM_0\x10\x00\x12\x10\n\x0cOFPXMC_NXM_1\x10\x01\x12\x1b\n\x15OFPXMC_OPENFLOW_BASIC\x10\x80\x80\x02\x12\x19\n\x13OFPXMC_EXPERIMENTER\x10\xff\xff\x03*\x90\x08\n\x13oxm_ofb_field_types\x12\x16\n\x12OFPXMT_OFB_IN_PORT\x10\x00\x12\x1a\n\x16OFPXMT_OFB_IN_PHY_PORT\x10\x01\x12\x17\n\x13OFPXMT_OFB_METADATA\x10\x02\x12\x16\n\x12OFPXMT_OFB_ETH_DST\x10\x03\x12\x16\n\x12OFPXMT_OFB_ETH_SRC\x10\x04\x12\x17\n\x13OFPXMT_OFB_ETH_TYPE\x10\x05\x12\x17\n\x13OFPXMT_OFB_VLAN_VID\x10\x06\x12\x17\n\x13OFPXMT_OFB_VLAN_PCP\x10\x07\x12\x16\n\x12OFPXMT_OFB_IP_DSCP\x10\x08\x12\x15\n\x11OFPXMT_OFB_IP_ECN\x10\t\x12\x17\n\x13OFPXMT_OFB_IP_PROTO\x10\n\x12\x17\n\x13OFPXMT_OFB_IPV4_SRC\x10\x0b\x12\x17\n\x13OFPXMT_OFB_IPV4_DST\x10\x0c\x12\x16\n\x12OFPXMT_OFB_TCP_SRC\x10\r\x12\x16\n\x12OFPXMT_OFB_TCP_DST\x10\x0e\x12\x16\n\x12OFPXMT_OFB_UDP_SRC\x10\x0f\x12\x16\n\x12OFPXMT_OFB_UDP_DST\x10\x10\x12\x17\n\x13OFPXMT_OFB_SCTP_SRC\x10\x11\x12\x17\n\x13OFPXMT_OFB_SCTP_DST\x10\x12\x12\x1a\n\x16OFPXMT_OFB_ICMPV4_TYPE\x10\x13\x12\x1a\n\x16OFPXMT_OFB_ICMPV4_CODE\x10\x14\x12\x15\n\x11OFPXMT_OFB_ARP_OP\x10\x15\x12\x16\n\x12OFPXMT_OFB_ARP_SPA\x10\x16\x12\x16\n\x12OFPXMT_OFB_ARP_TPA\x10\x17\x12\x16\n\x12OFPXMT_OFB_ARP_SHA\x10\x18\x12\x16\n\x12OFPXMT_OFB_ARP_THA\x10\x19\x12\x17\n\x13OFPXMT_OFB_IPV6_SRC\x10\x1a\x12\x17\n\x13OFPXMT_OFB_IPV6_DST\x10\x1b\x12\x1a\n\x16OFPXMT_OFB_IPV6_FLABEL\x10\x1c\x12\x1a\n\x16OFPXMT_OFB_ICMPV6_TYPE\x10\x1d\x12\x1a\n\x16OFPXMT_OFB_ICMPV6_CODE\x10\x1e\x12\x1d\n\x19OFPXMT_OFB_IPV6_ND_TARGET\x10\x1f\x12\x1a\n\x16OFPXMT_OFB_IPV6_ND_SLL\x10 \x12\x1a\n\x16OFPXMT_OFB_IPV6_ND_TLL\x10!\x12\x19\n\x15OFPXMT_OFB_MPLS_LABEL\x10\"\x12\x16\n\x12OFPXMT_OFB_MPLS_TC\x10#\x12\x17\n\x13OFPXMT_OFB_MPLS_BOS\x10$\x12\x17\n\x13OFPXMT_OFB_PBB_ISID\x10%\x12\x18\n\x14OFPXMT_OFB_TUNNEL_ID\x10&\x12\x1a\n\x16OFPXMT_OFB_IPV6_EXTHDR\x10\'*3\n\x0bofp_vlan_id\x12\x0f\n\x0bOFPVID_NONE\x10\x00\x12\x13\n\x0eOFPVID_PRESENT\x10\x80 *\xc9\x01\n\x14ofp_ipv6exthdr_flags\x12\x12\n\x0eOFPIEH_INVALID\x10\x00\x12\x11\n\rOFPIEH_NONEXT\x10\x01\x12\x0e\n\nOFPIEH_ESP\x10\x02\x12\x0f\n\x0bOFPIEH_AUTH\x10\x04\x12\x0f\n\x0bOFPIEH_DEST\x10\x08\x12\x0f\n\x0bOFPIEH_FRAG\x10\x10\x12\x11\n\rOFPIEH_ROUTER\x10 \x12\x0e\n\nOFPIEH_HOP\x10@\x12\x11\n\x0cOFPIEH_UNREP\x10\x80\x01\x12\x11\n\x0cOFPIEH_UNSEQ\x10\x80\x02*\xfc\x02\n\x0fofp_action_type\x12\x10\n\x0cOFPAT_OUTPUT\x10\x00\x12\x16\n\x12OFPAT_COPY_TTL_OUT\x10\x0b\x12\x15\n\x11OFPAT_COPY_TTL_IN\x10\x0c\x12\x16\n\x12OFPAT_SET_MPLS_TTL\x10\x0f\x12\x16\n\x12OFPAT_DEC_MPLS_TTL\x10\x10\x12\x13\n\x0fOFPAT_PUSH_VLAN\x10\x11\x12\x12\n\x0eOFPAT_POP_VLAN\x10\x12\x12\x13\n\x0fOFPAT_PUSH_MPLS\x10\x13\x12\x12\n\x0eOFPAT_POP_MPLS\x10\x14\x12\x13\n\x0fOFPAT_SET_QUEUE\x10\x15\x12\x0f\n\x0bOFPAT_GROUP\x10\x16\x12\x14\n\x10OFPAT_SET_NW_TTL\x10\x17\x12\x14\n\x10OFPAT_DEC_NW_TTL\x10\x18\x12\x13\n\x0fOFPAT_SET_FIELD\x10\x19\x12\x12\n\x0eOFPAT_PUSH_PBB\x10\x1a\x12\x11\n\rOFPAT_POP_PBB\x10\x1b\x12\x18\n\x12OFPAT_EXPERIMENTER\x10\xff\xff\x03*V\n\x16ofp_controller_max_len\x12\x12\n\x0eOFPCML_INVALID\x10\x00\x12\x10\n\nOFPCML_MAX\x10\xe5\xff\x03\x12\x16\n\x10OFPCML_NO_BUFFER\x10\xff\xff\x03*\xcf\x01\n\x14ofp_instruction_type\x12\x11\n\rOFPIT_INVALID\x10\x00\x12\x14\n\x10OFPIT_GOTO_TABLE\x10\x01\x12\x18\n\x14OFPIT_WRITE_METADATA\x10\x02\x12\x17\n\x13OFPIT_WRITE_ACTIONS\x10\x03\x12\x17\n\x13OFPIT_APPLY_ACTIONS\x10\x04\x12\x17\n\x13OFPIT_CLEAR_ACTIONS\x10\x05\x12\x0f\n\x0bOFPIT_METER\x10\x06\x12\x18\n\x12OFPIT_EXPERIMENTER\x10\xff\xff\x03*{\n\x14ofp_flow_mod_command\x12\r\n\tOFPFC_ADD\x10\x00\x12\x10\n\x0cOFPFC_MODIFY\x10\x01\x12\x17\n\x13OFPFC_MODIFY_STRICT\x10\x02\x12\x10\n\x0cOFPFC_DELETE\x10\x03\x12\x17\n\x13OFPFC_DELETE_STRICT\x10\x04*\xa3\x01\n\x12ofp_flow_mod_flags\x12\x11\n\rOFPFF_INVALID\x10\x00\x12\x17\n\x13OFPFF_SEND_FLOW_REM\x10\x01\x12\x17\n\x13OFPFF_CHECK_OVERLAP\x10\x02\x12\x16\n\x12OFPFF_RESET_COUNTS\x10\x04\x12\x17\n\x13OFPFF_NO_PKT_COUNTS\x10\x08\x12\x17\n\x13OFPFF_NO_BYT_COUNTS\x10\x10*S\n\tofp_group\x12\x10\n\x0cOFPG_INVALID\x10\x00\x12\x10\n\x08OFPG_MAX\x10\x80\xfe\xff\xff\x07\x12\x10\n\x08OFPG_ALL\x10\xfc\xff\xff\xff\x07\x12\x10\n\x08OFPG_ANY\x10\xff\xff\xff\xff\x07*J\n\x15ofp_group_mod_command\x12\r\n\tOFPGC_ADD\x10\x00\x12\x10\n\x0cOFPGC_MODIFY\x10\x01\x12\x10\n\x0cOFPGC_DELETE\x10\x02*S\n\x0eofp_group_type\x12\r\n\tOFPGT_ALL\x10\x00\x12\x10\n\x0cOFPGT_SELECT\x10\x01\x12\x12\n\x0eOFPGT_INDIRECT\x10\x02\x12\x0c\n\x08OFPGT_FF\x10\x03*P\n\x14ofp_packet_in_reason\x12\x11\n\rOFPR_NO_MATCH\x10\x00\x12\x0f\n\x0bOFPR_ACTION\x10\x01\x12\x14\n\x10OFPR_INVALID_TTL\x10\x02*\x8b\x01\n\x17ofp_flow_removed_reason\x12\x16\n\x12OFPRR_IDLE_TIMEOUT\x10\x00\x12\x16\n\x12OFPRR_HARD_TIMEOUT\x10\x01\x12\x10\n\x0cOFPRR_DELETE\x10\x02\x12\x16\n\x12OFPRR_GROUP_DELETE\x10\x03\x12\x16\n\x12OFPRR_METER_DELETE\x10\x04*n\n\tofp_meter\x12\r\n\tOFPM_ZERO\x10\x00\x12\x10\n\x08OFPM_MAX\x10\x80\x80\xfc\xff\x07\x12\x15\n\rOFPM_SLOWPATH\x10\xfd\xff\xff\xff\x07\x12\x17\n\x0fOFPM_CONTROLLER\x10\xfe\xff\xff\xff\x07\x12\x10\n\x08OFPM_ALL\x10\xff\xff\xff\xff\x07*m\n\x13ofp_meter_band_type\x12\x12\n\x0eOFPMBT_INVALID\x10\x00\x12\x0f\n\x0bOFPMBT_DROP\x10\x01\x12\x16\n\x12OFPMBT_DSCP_REMARK\x10\x02\x12\x19\n\x13OFPMBT_EXPERIMENTER\x10\xff\xff\x03*J\n\x15ofp_meter_mod_command\x12\r\n\tOFPMC_ADD\x10\x00\x12\x10\n\x0cOFPMC_MODIFY\x10\x01\x12\x10\n\x0cOFPMC_DELETE\x10\x02*g\n\x0fofp_meter_flags\x12\x11\n\rOFPMF_INVALID\x10\x00\x12\x0e\n\nOFPMF_KBPS\x10\x01\x12\x0f\n\x0bOFPMF_PKTPS\x10\x02\x12\x0f\n\x0bOFPMF_BURST\x10\x04\x12\x0f\n\x0bOFPMF_STATS\x10\x08*\xa4\x03\n\x0eofp_error_type\x12\x16\n\x12OFPET_HELLO_FAILED\x10\x00\x12\x15\n\x11OFPET_BAD_REQUEST\x10\x01\x12\x14\n\x10OFPET_BAD_ACTION\x10\x02\x12\x19\n\x15OFPET_BAD_INSTRUCTION\x10\x03\x12\x13\n\x0fOFPET_BAD_MATCH\x10\x04\x12\x19\n\x15OFPET_FLOW_MOD_FAILED\x10\x05\x12\x1a\n\x16OFPET_GROUP_MOD_FAILED\x10\x06\x12\x19\n\x15OFPET_PORT_MOD_FAILED\x10\x07\x12\x1a\n\x16OFPET_TABLE_MOD_FAILED\x10\x08\x12\x19\n\x15OFPET_QUEUE_OP_FAILED\x10\t\x12\x1e\n\x1aOFPET_SWITCH_CONFIG_FAILED\x10\n\x12\x1d\n\x19OFPET_ROLE_REQUEST_FAILED\x10\x0b\x12\x1a\n\x16OFPET_METER_MOD_FAILED\x10\x0c\x12\x1f\n\x1bOFPET_TABLE_FEATURES_FAILED\x10\r\x12\x18\n\x12OFPET_EXPERIMENTER\x10\xff\xff\x03*B\n\x15ofp_hello_failed_code\x12\x17\n\x13OFPHFC_INCOMPATIBLE\x10\x00\x12\x10\n\x0cOFPHFC_EPERM\x10\x01*\xed\x02\n\x14ofp_bad_request_code\x12\x16\n\x12OFPBRC_BAD_VERSION\x10\x00\x12\x13\n\x0fOFPBRC_BAD_TYPE\x10\x01\x12\x18\n\x14OFPBRC_BAD_MULTIPART\x10\x02\x12\x1b\n\x17OFPBRC_BAD_EXPERIMENTER\x10\x03\x12\x17\n\x13OFPBRC_BAD_EXP_TYPE\x10\x04\x12\x10\n\x0cOFPBRC_EPERM\x10\x05\x12\x12\n\x0eOFPBRC_BAD_LEN\x10\x06\x12\x17\n\x13OFPBRC_BUFFER_EMPTY\x10\x07\x12\x19\n\x15OFPBRC_BUFFER_UNKNOWN\x10\x08\x12\x17\n\x13OFPBRC_BAD_TABLE_ID\x10\t\x12\x13\n\x0fOFPBRC_IS_SLAVE\x10\n\x12\x13\n\x0fOFPBRC_BAD_PORT\x10\x0b\x12\x15\n\x11OFPBRC_BAD_PACKET\x10\x0c\x12$\n OFPBRC_MULTIPART_BUFFER_OVERFLOW\x10\r*\x9c\x03\n\x13ofp_bad_action_code\x12\x13\n\x0fOFPBAC_BAD_TYPE\x10\x00\x12\x12\n\x0eOFPBAC_BAD_LEN\x10\x01\x12\x1b\n\x17OFPBAC_BAD_EXPERIMENTER\x10\x02\x12\x17\n\x13OFPBAC_BAD_EXP_TYPE\x10\x03\x12\x17\n\x13OFPBAC_BAD_OUT_PORT\x10\x04\x12\x17\n\x13OFPBAC_BAD_ARGUMENT\x10\x05\x12\x10\n\x0cOFPBAC_EPERM\x10\x06\x12\x13\n\x0fOFPBAC_TOO_MANY\x10\x07\x12\x14\n\x10OFPBAC_BAD_QUEUE\x10\x08\x12\x18\n\x14OFPBAC_BAD_OUT_GROUP\x10\t\x12\x1d\n\x19OFPBAC_MATCH_INCONSISTENT\x10\n\x12\x1c\n\x18OFPBAC_UNSUPPORTED_ORDER\x10\x0b\x12\x12\n\x0eOFPBAC_BAD_TAG\x10\x0c\x12\x17\n\x13OFPBAC_BAD_SET_TYPE\x10\r\x12\x16\n\x12OFPBAC_BAD_SET_LEN\x10\x0e\x12\x1b\n\x17OFPBAC_BAD_SET_ARGUMENT\x10\x0f*\xfa\x01\n\x18ofp_bad_instruction_code\x12\x17\n\x13OFPBIC_UNKNOWN_INST\x10\x00\x12\x15\n\x11OFPBIC_UNSUP_INST\x10\x01\x12\x17\n\x13OFPBIC_BAD_TABLE_ID\x10\x02\x12\x19\n\x15OFPBIC_UNSUP_METADATA\x10\x03\x12\x1e\n\x1aOFPBIC_UNSUP_METADATA_MASK\x10\x04\x12\x1b\n\x17OFPBIC_BAD_EXPERIMENTER\x10\x05\x12\x17\n\x13OFPBIC_BAD_EXP_TYPE\x10\x06\x12\x12\n\x0eOFPBIC_BAD_LEN\x10\x07\x12\x10\n\x0cOFPBIC_EPERM\x10\x08*\xa5\x02\n\x12ofp_bad_match_code\x12\x13\n\x0fOFPBMC_BAD_TYPE\x10\x00\x12\x12\n\x0eOFPBMC_BAD_LEN\x10\x01\x12\x12\n\x0eOFPBMC_BAD_TAG\x10\x02\x12\x1b\n\x17OFPBMC_BAD_DL_ADDR_MASK\x10\x03\x12\x1b\n\x17OFPBMC_BAD_NW_ADDR_MASK\x10\x04\x12\x18\n\x14OFPBMC_BAD_WILDCARDS\x10\x05\x12\x14\n\x10OFPBMC_BAD_FIELD\x10\x06\x12\x14\n\x10OFPBMC_BAD_VALUE\x10\x07\x12\x13\n\x0fOFPBMC_BAD_MASK\x10\x08\x12\x15\n\x11OFPBMC_BAD_PREREQ\x10\t\x12\x14\n\x10OFPBMC_DUP_FIELD\x10\n\x12\x10\n\x0cOFPBMC_EPERM\x10\x0b*\xd2\x01\n\x18ofp_flow_mod_failed_code\x12\x13\n\x0fOFPFMFC_UNKNOWN\x10\x00\x12\x16\n\x12OFPFMFC_TABLE_FULL\x10\x01\x12\x18\n\x14OFPFMFC_BAD_TABLE_ID\x10\x02\x12\x13\n\x0fOFPFMFC_OVERLAP\x10\x03\x12\x11\n\rOFPFMFC_EPERM\x10\x04\x12\x17\n\x13OFPFMFC_BAD_TIMEOUT\x10\x05\x12\x17\n\x13OFPFMFC_BAD_COMMAND\x10\x06\x12\x15\n\x11OFPFMFC_BAD_FLAGS\x10\x07*\xa1\x03\n\x19ofp_group_mod_failed_code\x12\x18\n\x14OFPGMFC_GROUP_EXISTS\x10\x00\x12\x19\n\x15OFPGMFC_INVALID_GROUP\x10\x01\x12\x1e\n\x1aOFPGMFC_WEIGHT_UNSUPPORTED\x10\x02\x12\x19\n\x15OFPGMFC_OUT_OF_GROUPS\x10\x03\x12\x1a\n\x16OFPGMFC_OUT_OF_BUCKETS\x10\x04\x12 \n\x1cOFPGMFC_CHAINING_UNSUPPORTED\x10\x05\x12\x1d\n\x19OFPGMFC_WATCH_UNSUPPORTED\x10\x06\x12\x10\n\x0cOFPGMFC_LOOP\x10\x07\x12\x19\n\x15OFPGMFC_UNKNOWN_GROUP\x10\x08\x12\x19\n\x15OFPGMFC_CHAINED_GROUP\x10\t\x12\x14\n\x10OFPGMFC_BAD_TYPE\x10\n\x12\x17\n\x13OFPGMFC_BAD_COMMAND\x10\x0b\x12\x16\n\x12OFPGMFC_BAD_BUCKET\x10\x0c\x12\x15\n\x11OFPGMFC_BAD_WATCH\x10\r\x12\x11\n\rOFPGMFC_EPERM\x10\x0e*\x8f\x01\n\x18ofp_port_mod_failed_code\x12\x14\n\x10OFPPMFC_BAD_PORT\x10\x00\x12\x17\n\x13OFPPMFC_BAD_HW_ADDR\x10\x01\x12\x16\n\x12OFPPMFC_BAD_CONFIG\x10\x02\x12\x19\n\x15OFPPMFC_BAD_ADVERTISE\x10\x03\x12\x11\n\rOFPPMFC_EPERM\x10\x04*]\n\x19ofp_table_mod_failed_code\x12\x15\n\x11OFPTMFC_BAD_TABLE\x10\x00\x12\x16\n\x12OFPTMFC_BAD_CONFIG\x10\x01\x12\x11\n\rOFPTMFC_EPERM\x10\x02*Z\n\x18ofp_queue_op_failed_code\x12\x14\n\x10OFPQOFC_BAD_PORT\x10\x00\x12\x15\n\x11OFPQOFC_BAD_QUEUE\x10\x01\x12\x11\n\rOFPQOFC_EPERM\x10\x02*^\n\x1dofp_switch_config_failed_code\x12\x15\n\x11OFPSCFC_BAD_FLAGS\x10\x00\x12\x13\n\x0fOFPSCFC_BAD_LEN\x10\x01\x12\x11\n\rOFPSCFC_EPERM\x10\x02*Z\n\x1cofp_role_request_failed_code\x12\x11\n\rOFPRRFC_STALE\x10\x00\x12\x11\n\rOFPRRFC_UNSUP\x10\x01\x12\x14\n\x10OFPRRFC_BAD_ROLE\x10\x02*\xc4\x02\n\x19ofp_meter_mod_failed_code\x12\x13\n\x0fOFPMMFC_UNKNOWN\x10\x00\x12\x18\n\x14OFPMMFC_METER_EXISTS\x10\x01\x12\x19\n\x15OFPMMFC_INVALID_METER\x10\x02\x12\x19\n\x15OFPMMFC_UNKNOWN_METER\x10\x03\x12\x17\n\x13OFPMMFC_BAD_COMMAND\x10\x04\x12\x15\n\x11OFPMMFC_BAD_FLAGS\x10\x05\x12\x14\n\x10OFPMMFC_BAD_RATE\x10\x06\x12\x15\n\x11OFPMMFC_BAD_BURST\x10\x07\x12\x14\n\x10OFPMMFC_BAD_BAND\x10\x08\x12\x1a\n\x16OFPMMFC_BAD_BAND_VALUE\x10\t\x12\x19\n\x15OFPMMFC_OUT_OF_METERS\x10\n\x12\x18\n\x14OFPMMFC_OUT_OF_BANDS\x10\x0b*\xa9\x01\n\x1eofp_table_features_failed_code\x12\x15\n\x11OFPTFFC_BAD_TABLE\x10\x00\x12\x18\n\x14OFPTFFC_BAD_METADATA\x10\x01\x12\x14\n\x10OFPTFFC_BAD_TYPE\x10\x02\x12\x13\n\x0fOFPTFFC_BAD_LEN\x10\x03\x12\x18\n\x14OFPTFFC_BAD_ARGUMENT\x10\x04\x12\x11\n\rOFPTFFC_EPERM\x10\x05*\xce\x02\n\x12ofp_multipart_type\x12\x0e\n\nOFPMP_DESC\x10\x00\x12\x0e\n\nOFPMP_FLOW\x10\x01\x12\x13\n\x0fOFPMP_AGGREGATE\x10\x02\x12\x0f\n\x0bOFPMP_TABLE\x10\x03\x12\x14\n\x10OFPMP_PORT_STATS\x10\x04\x12\x0f\n\x0bOFPMP_QUEUE\x10\x05\x12\x0f\n\x0bOFPMP_GROUP\x10\x06\x12\x14\n\x10OFPMP_GROUP_DESC\x10\x07\x12\x18\n\x14OFPMP_GROUP_FEATURES\x10\x08\x12\x0f\n\x0bOFPMP_METER\x10\t\x12\x16\n\x12OFPMP_METER_CONFIG\x10\n\x12\x18\n\x14OFPMP_METER_FEATURES\x10\x0b\x12\x18\n\x14OFPMP_TABLE_FEATURES\x10\x0c\x12\x13\n\x0fOFPMP_PORT_DESC\x10\r\x12\x18\n\x12OFPMP_EXPERIMENTER\x10\xff\xff\x03*J\n\x1bofp_multipart_request_flags\x12\x16\n\x12OFPMPF_REQ_INVALID\x10\x00\x12\x13\n\x0fOFPMPF_REQ_MORE\x10\x01*L\n\x19ofp_multipart_reply_flags\x12\x18\n\x14OFPMPF_REPLY_INVALID\x10\x00\x12\x15\n\x11OFPMPF_REPLY_MORE\x10\x01*\xe4\x03\n\x1bofp_table_feature_prop_type\x12\x18\n\x14OFPTFPT_INSTRUCTIONS\x10\x00\x12\x1d\n\x19OFPTFPT_INSTRUCTIONS_MISS\x10\x01\x12\x17\n\x13OFPTFPT_NEXT_TABLES\x10\x02\x12\x1c\n\x18OFPTFPT_NEXT_TABLES_MISS\x10\x03\x12\x19\n\x15OFPTFPT_WRITE_ACTIONS\x10\x04\x12\x1e\n\x1aOFPTFPT_WRITE_ACTIONS_MISS\x10\x05\x12\x19\n\x15OFPTFPT_APPLY_ACTIONS\x10\x06\x12\x1e\n\x1aOFPTFPT_APPLY_ACTIONS_MISS\x10\x07\x12\x11\n\rOFPTFPT_MATCH\x10\x08\x12\x15\n\x11OFPTFPT_WILDCARDS\x10\n\x12\x1a\n\x16OFPTFPT_WRITE_SETFIELD\x10\x0c\x12\x1f\n\x1bOFPTFPT_WRITE_SETFIELD_MISS\x10\r\x12\x1a\n\x16OFPTFPT_APPLY_SETFIELD\x10\x0e\x12\x1f\n\x1bOFPTFPT_APPLY_SETFIELD_MISS\x10\x0f\x12\x1a\n\x14OFPTFPT_EXPERIMENTER\x10\xfe\xff\x03\x12\x1f\n\x19OFPTFPT_EXPERIMENTER_MISS\x10\xff\xff\x03*\x93\x01\n\x16ofp_group_capabilities\x12\x12\n\x0eOFPGFC_INVALID\x10\x00\x12\x18\n\x14OFPGFC_SELECT_WEIGHT\x10\x01\x12\x1a\n\x16OFPGFC_SELECT_LIVENESS\x10\x02\x12\x13\n\x0fOFPGFC_CHAINING\x10\x04\x12\x1a\n\x16OFPGFC_CHAINING_CHECKS\x10\x08*k\n\x14ofp_queue_properties\x12\x11\n\rOFPQT_INVALID\x10\x00\x12\x12\n\x0eOFPQT_MIN_RATE\x10\x01\x12\x12\n\x0eOFPQT_MAX_RATE\x10\x02\x12\x18\n\x12OFPQT_EXPERIMENTER\x10\xff\xff\x03*q\n\x13ofp_controller_role\x12\x17\n\x13OFPCR_ROLE_NOCHANGE\x10\x00\x12\x14\n\x10OFPCR_ROLE_EQUAL\x10\x01\x12\x15\n\x11OFPCR_ROLE_MASTER\x10\x02\x12\x14\n\x10OFPCR_ROLE_SLAVE\x10\x03\x62\x06proto3')
-)
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-_OFP_PORT_NO = _descriptor.EnumDescriptor(
-  name='ofp_port_no',
-  full_name='openflow_13.ofp_port_no',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_MAX', index=1, number=2147483392,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_IN_PORT', index=2, number=2147483640,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_TABLE', index=3, number=2147483641,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_NORMAL', index=4, number=2147483642,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_FLOOD', index=5, number=2147483643,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_ALL', index=6, number=2147483644,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_CONTROLLER', index=7, number=2147483645,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_LOCAL', index=8, number=2147483646,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPP_ANY', index=9, number=2147483647,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=11171,
-  serialized_end=11384,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_NO)
-
-ofp_port_no = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_NO)
-_OFP_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_type',
-  full_name='openflow_13.ofp_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_HELLO', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_ERROR', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_ECHO_REQUEST', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_ECHO_REPLY', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_EXPERIMENTER', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_FEATURES_REQUEST', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_FEATURES_REPLY', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_GET_CONFIG_REQUEST', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_GET_CONFIG_REPLY', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_SET_CONFIG', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_PACKET_IN', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_FLOW_REMOVED', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_PORT_STATUS', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_PACKET_OUT', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_FLOW_MOD', index=14, number=14,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_GROUP_MOD', index=15, number=15,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_PORT_MOD', index=16, number=16,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_TABLE_MOD', index=17, number=17,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_MULTIPART_REQUEST', index=18, number=18,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_MULTIPART_REPLY', index=19, number=19,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_BARRIER_REQUEST', index=20, number=20,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_BARRIER_REPLY', index=21, number=21,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_QUEUE_GET_CONFIG_REQUEST', index=22, number=22,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_QUEUE_GET_CONFIG_REPLY', index=23, number=23,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_ROLE_REQUEST', index=24, number=24,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_ROLE_REPLY', index=25, number=25,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_GET_ASYNC_REQUEST', index=26, number=26,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_GET_ASYNC_REPLY', index=27, number=27,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_SET_ASYNC', index=28, number=28,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPT_METER_MOD', index=29, number=29,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=11387,
-  serialized_end=12099,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TYPE)
-
-ofp_type = enum_type_wrapper.EnumTypeWrapper(_OFP_TYPE)
-_OFP_HELLO_ELEM_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_hello_elem_type',
-  full_name='openflow_13.ofp_hello_elem_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPHET_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPHET_VERSIONBITMAP', index=1, number=1,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12101,
-  serialized_end=12168,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_HELLO_ELEM_TYPE)
-
-ofp_hello_elem_type = enum_type_wrapper.EnumTypeWrapper(_OFP_HELLO_ELEM_TYPE)
-_OFP_CONFIG_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_config_flags',
-  full_name='openflow_13.ofp_config_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_FRAG_NORMAL', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_FRAG_DROP', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_FRAG_REASM', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_FRAG_MASK', index=3, number=3,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12170,
-  serialized_end=12271,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_CONFIG_FLAGS)
-
-ofp_config_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_CONFIG_FLAGS)
-_OFP_TABLE_CONFIG = _descriptor.EnumDescriptor(
-  name='ofp_table_config',
-  full_name='openflow_13.ofp_table_config',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPTC_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTC_DEPRECATED_MASK', index=1, number=3,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12273,
-  serialized_end=12337,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TABLE_CONFIG)
-
-ofp_table_config = enum_type_wrapper.EnumTypeWrapper(_OFP_TABLE_CONFIG)
-_OFP_TABLE = _descriptor.EnumDescriptor(
-  name='ofp_table',
-  full_name='openflow_13.ofp_table',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPTT_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTT_MAX', index=1, number=254,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTT_ALL', index=2, number=255,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12339,
-  serialized_end=12401,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TABLE)
-
-ofp_table = enum_type_wrapper.EnumTypeWrapper(_OFP_TABLE)
-_OFP_CAPABILITIES = _descriptor.EnumDescriptor(
-  name='ofp_capabilities',
-  full_name='openflow_13.ofp_capabilities',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_FLOW_STATS', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_TABLE_STATS', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_PORT_STATS', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_GROUP_STATS', index=4, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_IP_REASM', index=5, number=32,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_QUEUE_STATS', index=6, number=64,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPC_PORT_BLOCKED', index=7, number=256,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12404,
-  serialized_end=12591,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_CAPABILITIES)
-
-ofp_capabilities = enum_type_wrapper.EnumTypeWrapper(_OFP_CAPABILITIES)
-_OFP_PORT_CONFIG = _descriptor.EnumDescriptor(
-  name='ofp_port_config',
-  full_name='openflow_13.ofp_port_config',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPPC_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPC_PORT_DOWN', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPC_NO_RECV', index=2, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPC_NO_FWD', index=3, number=32,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPC_NO_PACKET_IN', index=4, number=64,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12593,
-  serialized_end=12711,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_CONFIG)
-
-ofp_port_config = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_CONFIG)
-_OFP_PORT_STATE = _descriptor.EnumDescriptor(
-  name='ofp_port_state',
-  full_name='openflow_13.ofp_port_state',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPPS_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPS_LINK_DOWN', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPS_BLOCKED', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPS_LIVE', index=3, number=4,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12713,
-  serialized_end=12804,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_STATE)
-
-ofp_port_state = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_STATE)
-_OFP_PORT_FEATURES = _descriptor.EnumDescriptor(
-  name='ofp_port_features',
-  full_name='openflow_13.ofp_port_features',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_10MB_HD', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_10MB_FD', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_100MB_HD', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_100MB_FD', index=4, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_1GB_HD', index=5, number=16,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_1GB_FD', index=6, number=32,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_10GB_FD', index=7, number=64,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_40GB_FD', index=8, number=128,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_100GB_FD', index=9, number=256,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_1TB_FD', index=10, number=512,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_OTHER', index=11, number=1024,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_COPPER', index=12, number=2048,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_FIBER', index=13, number=4096,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_AUTONEG', index=14, number=8192,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_PAUSE', index=15, number=16384,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPF_PAUSE_ASYM', index=16, number=32768,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=12807,
-  serialized_end=13156,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_FEATURES)
-
-ofp_port_features = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_FEATURES)
-_OFP_PORT_REASON = _descriptor.EnumDescriptor(
-  name='ofp_port_reason',
-  full_name='openflow_13.ofp_port_reason',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPPR_ADD', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPR_DELETE', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPR_MODIFY', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=13158,
-  serialized_end=13226,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_REASON)
-
-ofp_port_reason = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_REASON)
-_OFP_MATCH_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_match_type',
-  full_name='openflow_13.ofp_match_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMT_STANDARD', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMT_OXM', index=1, number=1,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=13228,
-  serialized_end=13279,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_MATCH_TYPE)
-
-ofp_match_type = enum_type_wrapper.EnumTypeWrapper(_OFP_MATCH_TYPE)
-_OFP_OXM_CLASS = _descriptor.EnumDescriptor(
-  name='ofp_oxm_class',
-  full_name='openflow_13.ofp_oxm_class',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMC_NXM_0', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMC_NXM_1', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMC_OPENFLOW_BASIC', index=2, number=32768,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMC_EXPERIMENTER', index=3, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=13281,
-  serialized_end=13388,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_OXM_CLASS)
-
-ofp_oxm_class = enum_type_wrapper.EnumTypeWrapper(_OFP_OXM_CLASS)
-_OXM_OFB_FIELD_TYPES = _descriptor.EnumDescriptor(
-  name='oxm_ofb_field_types',
-  full_name='openflow_13.oxm_ofb_field_types',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IN_PORT', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IN_PHY_PORT', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_METADATA', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ETH_DST', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ETH_SRC', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ETH_TYPE', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_VLAN_VID', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_VLAN_PCP', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IP_DSCP', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IP_ECN', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IP_PROTO', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV4_SRC', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV4_DST', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_TCP_SRC', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_TCP_DST', index=14, number=14,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_UDP_SRC', index=15, number=15,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_UDP_DST', index=16, number=16,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_SCTP_SRC', index=17, number=17,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_SCTP_DST', index=18, number=18,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ICMPV4_TYPE', index=19, number=19,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ICMPV4_CODE', index=20, number=20,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ARP_OP', index=21, number=21,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ARP_SPA', index=22, number=22,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ARP_TPA', index=23, number=23,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ARP_SHA', index=24, number=24,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ARP_THA', index=25, number=25,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_SRC', index=26, number=26,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_DST', index=27, number=27,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_FLABEL', index=28, number=28,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ICMPV6_TYPE', index=29, number=29,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_ICMPV6_CODE', index=30, number=30,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_ND_TARGET', index=31, number=31,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_ND_SLL', index=32, number=32,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_ND_TLL', index=33, number=33,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_MPLS_LABEL', index=34, number=34,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_MPLS_TC', index=35, number=35,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_MPLS_BOS', index=36, number=36,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_PBB_ISID', index=37, number=37,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_TUNNEL_ID', index=38, number=38,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPXMT_OFB_IPV6_EXTHDR', index=39, number=39,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=13391,
-  serialized_end=14431,
-)
-_sym_db.RegisterEnumDescriptor(_OXM_OFB_FIELD_TYPES)
-
-oxm_ofb_field_types = enum_type_wrapper.EnumTypeWrapper(_OXM_OFB_FIELD_TYPES)
-_OFP_VLAN_ID = _descriptor.EnumDescriptor(
-  name='ofp_vlan_id',
-  full_name='openflow_13.ofp_vlan_id',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPVID_NONE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPVID_PRESENT', index=1, number=4096,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=14433,
-  serialized_end=14484,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_VLAN_ID)
-
-ofp_vlan_id = enum_type_wrapper.EnumTypeWrapper(_OFP_VLAN_ID)
-_OFP_IPV6EXTHDR_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_ipv6exthdr_flags',
-  full_name='openflow_13.ofp_ipv6exthdr_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_NONEXT', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_ESP', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_AUTH', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_DEST', index=4, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_FRAG', index=5, number=16,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_ROUTER', index=6, number=32,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_HOP', index=7, number=64,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_UNREP', index=8, number=128,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIEH_UNSEQ', index=9, number=256,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=14487,
-  serialized_end=14688,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_IPV6EXTHDR_FLAGS)
-
-ofp_ipv6exthdr_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_IPV6EXTHDR_FLAGS)
-_OFP_ACTION_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_action_type',
-  full_name='openflow_13.ofp_action_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_OUTPUT', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_COPY_TTL_OUT', index=1, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_COPY_TTL_IN', index=2, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_SET_MPLS_TTL', index=3, number=15,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_DEC_MPLS_TTL', index=4, number=16,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_PUSH_VLAN', index=5, number=17,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_POP_VLAN', index=6, number=18,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_PUSH_MPLS', index=7, number=19,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_POP_MPLS', index=8, number=20,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_SET_QUEUE', index=9, number=21,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_GROUP', index=10, number=22,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_SET_NW_TTL', index=11, number=23,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_DEC_NW_TTL', index=12, number=24,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_SET_FIELD', index=13, number=25,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_PUSH_PBB', index=14, number=26,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_POP_PBB', index=15, number=27,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPAT_EXPERIMENTER', index=16, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=14691,
-  serialized_end=15071,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_ACTION_TYPE)
-
-ofp_action_type = enum_type_wrapper.EnumTypeWrapper(_OFP_ACTION_TYPE)
-_OFP_CONTROLLER_MAX_LEN = _descriptor.EnumDescriptor(
-  name='ofp_controller_max_len',
-  full_name='openflow_13.ofp_controller_max_len',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPCML_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPCML_MAX', index=1, number=65509,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPCML_NO_BUFFER', index=2, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15073,
-  serialized_end=15159,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_CONTROLLER_MAX_LEN)
-
-ofp_controller_max_len = enum_type_wrapper.EnumTypeWrapper(_OFP_CONTROLLER_MAX_LEN)
-_OFP_INSTRUCTION_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_instruction_type',
-  full_name='openflow_13.ofp_instruction_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_GOTO_TABLE', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_WRITE_METADATA', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_WRITE_ACTIONS', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_APPLY_ACTIONS', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_CLEAR_ACTIONS', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_METER', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPIT_EXPERIMENTER', index=7, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15162,
-  serialized_end=15369,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_INSTRUCTION_TYPE)
-
-ofp_instruction_type = enum_type_wrapper.EnumTypeWrapper(_OFP_INSTRUCTION_TYPE)
-_OFP_FLOW_MOD_COMMAND = _descriptor.EnumDescriptor(
-  name='ofp_flow_mod_command',
-  full_name='openflow_13.ofp_flow_mod_command',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPFC_ADD', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFC_MODIFY', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFC_MODIFY_STRICT', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFC_DELETE', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFC_DELETE_STRICT', index=4, number=4,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15371,
-  serialized_end=15494,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_FLOW_MOD_COMMAND)
-
-ofp_flow_mod_command = enum_type_wrapper.EnumTypeWrapper(_OFP_FLOW_MOD_COMMAND)
-_OFP_FLOW_MOD_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_flow_mod_flags',
-  full_name='openflow_13.ofp_flow_mod_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_SEND_FLOW_REM', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_CHECK_OVERLAP', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_RESET_COUNTS', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_NO_PKT_COUNTS', index=4, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFF_NO_BYT_COUNTS', index=5, number=16,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15497,
-  serialized_end=15660,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_FLOW_MOD_FLAGS)
-
-ofp_flow_mod_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_FLOW_MOD_FLAGS)
-_OFP_GROUP = _descriptor.EnumDescriptor(
-  name='ofp_group',
-  full_name='openflow_13.ofp_group',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPG_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPG_MAX', index=1, number=2147483392,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPG_ALL', index=2, number=2147483644,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPG_ANY', index=3, number=2147483647,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15662,
-  serialized_end=15745,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_GROUP)
-
-ofp_group = enum_type_wrapper.EnumTypeWrapper(_OFP_GROUP)
-_OFP_GROUP_MOD_COMMAND = _descriptor.EnumDescriptor(
-  name='ofp_group_mod_command',
-  full_name='openflow_13.ofp_group_mod_command',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPGC_ADD', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGC_MODIFY', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGC_DELETE', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15747,
-  serialized_end=15821,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_GROUP_MOD_COMMAND)
-
-ofp_group_mod_command = enum_type_wrapper.EnumTypeWrapper(_OFP_GROUP_MOD_COMMAND)
-_OFP_GROUP_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_group_type',
-  full_name='openflow_13.ofp_group_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPGT_ALL', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGT_SELECT', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGT_INDIRECT', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGT_FF', index=3, number=3,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15823,
-  serialized_end=15906,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_GROUP_TYPE)
-
-ofp_group_type = enum_type_wrapper.EnumTypeWrapper(_OFP_GROUP_TYPE)
-_OFP_PACKET_IN_REASON = _descriptor.EnumDescriptor(
-  name='ofp_packet_in_reason',
-  full_name='openflow_13.ofp_packet_in_reason',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPR_NO_MATCH', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPR_ACTION', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPR_INVALID_TTL', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15908,
-  serialized_end=15988,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PACKET_IN_REASON)
-
-ofp_packet_in_reason = enum_type_wrapper.EnumTypeWrapper(_OFP_PACKET_IN_REASON)
-_OFP_FLOW_REMOVED_REASON = _descriptor.EnumDescriptor(
-  name='ofp_flow_removed_reason',
-  full_name='openflow_13.ofp_flow_removed_reason',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPRR_IDLE_TIMEOUT', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRR_HARD_TIMEOUT', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRR_DELETE', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRR_GROUP_DELETE', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRR_METER_DELETE', index=4, number=4,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=15991,
-  serialized_end=16130,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_FLOW_REMOVED_REASON)
-
-ofp_flow_removed_reason = enum_type_wrapper.EnumTypeWrapper(_OFP_FLOW_REMOVED_REASON)
-_OFP_METER = _descriptor.EnumDescriptor(
-  name='ofp_meter',
-  full_name='openflow_13.ofp_meter',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPM_ZERO', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPM_MAX', index=1, number=2147418112,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPM_SLOWPATH', index=2, number=2147483645,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPM_CONTROLLER', index=3, number=2147483646,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPM_ALL', index=4, number=2147483647,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16132,
-  serialized_end=16242,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_METER)
-
-ofp_meter = enum_type_wrapper.EnumTypeWrapper(_OFP_METER)
-_OFP_METER_BAND_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_meter_band_type',
-  full_name='openflow_13.ofp_meter_band_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMBT_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMBT_DROP', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMBT_DSCP_REMARK', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMBT_EXPERIMENTER', index=3, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16244,
-  serialized_end=16353,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_METER_BAND_TYPE)
-
-ofp_meter_band_type = enum_type_wrapper.EnumTypeWrapper(_OFP_METER_BAND_TYPE)
-_OFP_METER_MOD_COMMAND = _descriptor.EnumDescriptor(
-  name='ofp_meter_mod_command',
-  full_name='openflow_13.ofp_meter_mod_command',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMC_ADD', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMC_MODIFY', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMC_DELETE', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16355,
-  serialized_end=16429,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_METER_MOD_COMMAND)
-
-ofp_meter_mod_command = enum_type_wrapper.EnumTypeWrapper(_OFP_METER_MOD_COMMAND)
-_OFP_METER_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_meter_flags',
-  full_name='openflow_13.ofp_meter_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMF_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMF_KBPS', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMF_PKTPS', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMF_BURST', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMF_STATS', index=4, number=8,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16431,
-  serialized_end=16534,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_METER_FLAGS)
-
-ofp_meter_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_METER_FLAGS)
-_OFP_ERROR_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_error_type',
-  full_name='openflow_13.ofp_error_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_HELLO_FAILED', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_BAD_REQUEST', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_BAD_ACTION', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_BAD_INSTRUCTION', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_BAD_MATCH', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_FLOW_MOD_FAILED', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_GROUP_MOD_FAILED', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_PORT_MOD_FAILED', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_TABLE_MOD_FAILED', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_QUEUE_OP_FAILED', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_SWITCH_CONFIG_FAILED', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_ROLE_REQUEST_FAILED', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_METER_MOD_FAILED', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_TABLE_FEATURES_FAILED', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPET_EXPERIMENTER', index=14, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16537,
-  serialized_end=16957,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_ERROR_TYPE)
-
-ofp_error_type = enum_type_wrapper.EnumTypeWrapper(_OFP_ERROR_TYPE)
-_OFP_HELLO_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_hello_failed_code',
-  full_name='openflow_13.ofp_hello_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPHFC_INCOMPATIBLE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPHFC_EPERM', index=1, number=1,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=16959,
-  serialized_end=17025,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_HELLO_FAILED_CODE)
-
-ofp_hello_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_HELLO_FAILED_CODE)
-_OFP_BAD_REQUEST_CODE = _descriptor.EnumDescriptor(
-  name='ofp_bad_request_code',
-  full_name='openflow_13.ofp_bad_request_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_VERSION', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_TYPE', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_MULTIPART', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_EXPERIMENTER', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_EXP_TYPE', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_EPERM', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_LEN', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BUFFER_EMPTY', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BUFFER_UNKNOWN', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_TABLE_ID', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_IS_SLAVE', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_PORT', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_BAD_PACKET', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBRC_MULTIPART_BUFFER_OVERFLOW', index=13, number=13,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=17028,
-  serialized_end=17393,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_BAD_REQUEST_CODE)
-
-ofp_bad_request_code = enum_type_wrapper.EnumTypeWrapper(_OFP_BAD_REQUEST_CODE)
-_OFP_BAD_ACTION_CODE = _descriptor.EnumDescriptor(
-  name='ofp_bad_action_code',
-  full_name='openflow_13.ofp_bad_action_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_TYPE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_LEN', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_EXPERIMENTER', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_EXP_TYPE', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_OUT_PORT', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_ARGUMENT', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_EPERM', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_TOO_MANY', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_QUEUE', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_OUT_GROUP', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_MATCH_INCONSISTENT', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_UNSUPPORTED_ORDER', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_TAG', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_SET_TYPE', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_SET_LEN', index=14, number=14,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBAC_BAD_SET_ARGUMENT', index=15, number=15,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=17396,
-  serialized_end=17808,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_BAD_ACTION_CODE)
-
-ofp_bad_action_code = enum_type_wrapper.EnumTypeWrapper(_OFP_BAD_ACTION_CODE)
-_OFP_BAD_INSTRUCTION_CODE = _descriptor.EnumDescriptor(
-  name='ofp_bad_instruction_code',
-  full_name='openflow_13.ofp_bad_instruction_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_UNKNOWN_INST', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_UNSUP_INST', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_BAD_TABLE_ID', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_UNSUP_METADATA', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_UNSUP_METADATA_MASK', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_BAD_EXPERIMENTER', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_BAD_EXP_TYPE', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_BAD_LEN', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBIC_EPERM', index=8, number=8,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=17811,
-  serialized_end=18061,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_BAD_INSTRUCTION_CODE)
-
-ofp_bad_instruction_code = enum_type_wrapper.EnumTypeWrapper(_OFP_BAD_INSTRUCTION_CODE)
-_OFP_BAD_MATCH_CODE = _descriptor.EnumDescriptor(
-  name='ofp_bad_match_code',
-  full_name='openflow_13.ofp_bad_match_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_TYPE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_LEN', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_TAG', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_DL_ADDR_MASK', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_NW_ADDR_MASK', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_WILDCARDS', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_FIELD', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_VALUE', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_MASK', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_BAD_PREREQ', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_DUP_FIELD', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPBMC_EPERM', index=11, number=11,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=18064,
-  serialized_end=18357,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_BAD_MATCH_CODE)
-
-ofp_bad_match_code = enum_type_wrapper.EnumTypeWrapper(_OFP_BAD_MATCH_CODE)
-_OFP_FLOW_MOD_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_flow_mod_failed_code',
-  full_name='openflow_13.ofp_flow_mod_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_UNKNOWN', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_TABLE_FULL', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_BAD_TABLE_ID', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_OVERLAP', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_EPERM', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_BAD_TIMEOUT', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_BAD_COMMAND', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPFMFC_BAD_FLAGS', index=7, number=7,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=18360,
-  serialized_end=18570,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_FLOW_MOD_FAILED_CODE)
-
-ofp_flow_mod_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_FLOW_MOD_FAILED_CODE)
-_OFP_GROUP_MOD_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_group_mod_failed_code',
-  full_name='openflow_13.ofp_group_mod_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_GROUP_EXISTS', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_INVALID_GROUP', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_WEIGHT_UNSUPPORTED', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_OUT_OF_GROUPS', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_OUT_OF_BUCKETS', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_CHAINING_UNSUPPORTED', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_WATCH_UNSUPPORTED', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_LOOP', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_UNKNOWN_GROUP', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_CHAINED_GROUP', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_BAD_TYPE', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_BAD_COMMAND', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_BAD_BUCKET', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_BAD_WATCH', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGMFC_EPERM', index=14, number=14,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=18573,
-  serialized_end=18990,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_GROUP_MOD_FAILED_CODE)
-
-ofp_group_mod_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_GROUP_MOD_FAILED_CODE)
-_OFP_PORT_MOD_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_port_mod_failed_code',
-  full_name='openflow_13.ofp_port_mod_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPPMFC_BAD_PORT', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPMFC_BAD_HW_ADDR', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPMFC_BAD_CONFIG', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPMFC_BAD_ADVERTISE', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPPMFC_EPERM', index=4, number=4,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=18993,
-  serialized_end=19136,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_PORT_MOD_FAILED_CODE)
-
-ofp_port_mod_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_PORT_MOD_FAILED_CODE)
-_OFP_TABLE_MOD_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_table_mod_failed_code',
-  full_name='openflow_13.ofp_table_mod_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPTMFC_BAD_TABLE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTMFC_BAD_CONFIG', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTMFC_EPERM', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19138,
-  serialized_end=19231,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TABLE_MOD_FAILED_CODE)
-
-ofp_table_mod_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_TABLE_MOD_FAILED_CODE)
-_OFP_QUEUE_OP_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_queue_op_failed_code',
-  full_name='openflow_13.ofp_queue_op_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPQOFC_BAD_PORT', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPQOFC_BAD_QUEUE', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPQOFC_EPERM', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19233,
-  serialized_end=19323,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_QUEUE_OP_FAILED_CODE)
-
-ofp_queue_op_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_QUEUE_OP_FAILED_CODE)
-_OFP_SWITCH_CONFIG_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_switch_config_failed_code',
-  full_name='openflow_13.ofp_switch_config_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPSCFC_BAD_FLAGS', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPSCFC_BAD_LEN', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPSCFC_EPERM', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19325,
-  serialized_end=19419,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_SWITCH_CONFIG_FAILED_CODE)
-
-ofp_switch_config_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_SWITCH_CONFIG_FAILED_CODE)
-_OFP_ROLE_REQUEST_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_role_request_failed_code',
-  full_name='openflow_13.ofp_role_request_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPRRFC_STALE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRRFC_UNSUP', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPRRFC_BAD_ROLE', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19421,
-  serialized_end=19511,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_ROLE_REQUEST_FAILED_CODE)
-
-ofp_role_request_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_ROLE_REQUEST_FAILED_CODE)
-_OFP_METER_MOD_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_meter_mod_failed_code',
-  full_name='openflow_13.ofp_meter_mod_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_UNKNOWN', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_METER_EXISTS', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_INVALID_METER', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_UNKNOWN_METER', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_COMMAND', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_FLAGS', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_RATE', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_BURST', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_BAND', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_BAD_BAND_VALUE', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_OUT_OF_METERS', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMMFC_OUT_OF_BANDS', index=11, number=11,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19514,
-  serialized_end=19838,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_METER_MOD_FAILED_CODE)
-
-ofp_meter_mod_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_METER_MOD_FAILED_CODE)
-_OFP_TABLE_FEATURES_FAILED_CODE = _descriptor.EnumDescriptor(
-  name='ofp_table_features_failed_code',
-  full_name='openflow_13.ofp_table_features_failed_code',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_BAD_TABLE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_BAD_METADATA', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_BAD_TYPE', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_BAD_LEN', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_BAD_ARGUMENT', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFFC_EPERM', index=5, number=5,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=19841,
-  serialized_end=20010,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TABLE_FEATURES_FAILED_CODE)
-
-ofp_table_features_failed_code = enum_type_wrapper.EnumTypeWrapper(_OFP_TABLE_FEATURES_FAILED_CODE)
-_OFP_MULTIPART_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_multipart_type',
-  full_name='openflow_13.ofp_multipart_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_DESC', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_FLOW', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_AGGREGATE', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_TABLE', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_PORT_STATS', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_QUEUE', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_GROUP', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_GROUP_DESC', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_GROUP_FEATURES', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_METER', index=9, number=9,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_METER_CONFIG', index=10, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_METER_FEATURES', index=11, number=11,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_TABLE_FEATURES', index=12, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_PORT_DESC', index=13, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMP_EXPERIMENTER', index=14, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=20013,
-  serialized_end=20347,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_MULTIPART_TYPE)
-
-ofp_multipart_type = enum_type_wrapper.EnumTypeWrapper(_OFP_MULTIPART_TYPE)
-_OFP_MULTIPART_REQUEST_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_multipart_request_flags',
-  full_name='openflow_13.ofp_multipart_request_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMPF_REQ_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMPF_REQ_MORE', index=1, number=1,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=20349,
-  serialized_end=20423,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_MULTIPART_REQUEST_FLAGS)
-
-ofp_multipart_request_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_MULTIPART_REQUEST_FLAGS)
-_OFP_MULTIPART_REPLY_FLAGS = _descriptor.EnumDescriptor(
-  name='ofp_multipart_reply_flags',
-  full_name='openflow_13.ofp_multipart_reply_flags',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPMPF_REPLY_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPMPF_REPLY_MORE', index=1, number=1,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=20425,
-  serialized_end=20501,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_MULTIPART_REPLY_FLAGS)
-
-ofp_multipart_reply_flags = enum_type_wrapper.EnumTypeWrapper(_OFP_MULTIPART_REPLY_FLAGS)
-_OFP_TABLE_FEATURE_PROP_TYPE = _descriptor.EnumDescriptor(
-  name='ofp_table_feature_prop_type',
-  full_name='openflow_13.ofp_table_feature_prop_type',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_INSTRUCTIONS', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_INSTRUCTIONS_MISS', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_NEXT_TABLES', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_NEXT_TABLES_MISS', index=3, number=3,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_WRITE_ACTIONS', index=4, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_WRITE_ACTIONS_MISS', index=5, number=5,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_APPLY_ACTIONS', index=6, number=6,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_APPLY_ACTIONS_MISS', index=7, number=7,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_MATCH', index=8, number=8,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_WILDCARDS', index=9, number=10,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_WRITE_SETFIELD', index=10, number=12,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_WRITE_SETFIELD_MISS', index=11, number=13,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_APPLY_SETFIELD', index=12, number=14,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_APPLY_SETFIELD_MISS', index=13, number=15,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_EXPERIMENTER', index=14, number=65534,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPTFPT_EXPERIMENTER_MISS', index=15, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=20504,
-  serialized_end=20988,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_TABLE_FEATURE_PROP_TYPE)
-
-ofp_table_feature_prop_type = enum_type_wrapper.EnumTypeWrapper(_OFP_TABLE_FEATURE_PROP_TYPE)
-_OFP_GROUP_CAPABILITIES = _descriptor.EnumDescriptor(
-  name='ofp_group_capabilities',
-  full_name='openflow_13.ofp_group_capabilities',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPGFC_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGFC_SELECT_WEIGHT', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGFC_SELECT_LIVENESS', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGFC_CHAINING', index=3, number=4,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPGFC_CHAINING_CHECKS', index=4, number=8,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=20991,
-  serialized_end=21138,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_GROUP_CAPABILITIES)
-
-ofp_group_capabilities = enum_type_wrapper.EnumTypeWrapper(_OFP_GROUP_CAPABILITIES)
-_OFP_QUEUE_PROPERTIES = _descriptor.EnumDescriptor(
-  name='ofp_queue_properties',
-  full_name='openflow_13.ofp_queue_properties',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPQT_INVALID', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPQT_MIN_RATE', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPQT_MAX_RATE', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPQT_EXPERIMENTER', index=3, number=65535,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=21140,
-  serialized_end=21247,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_QUEUE_PROPERTIES)
-
-ofp_queue_properties = enum_type_wrapper.EnumTypeWrapper(_OFP_QUEUE_PROPERTIES)
-_OFP_CONTROLLER_ROLE = _descriptor.EnumDescriptor(
-  name='ofp_controller_role',
-  full_name='openflow_13.ofp_controller_role',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='OFPCR_ROLE_NOCHANGE', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPCR_ROLE_EQUAL', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPCR_ROLE_MASTER', index=2, number=2,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OFPCR_ROLE_SLAVE', index=3, number=3,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=21249,
-  serialized_end=21362,
-)
-_sym_db.RegisterEnumDescriptor(_OFP_CONTROLLER_ROLE)
-
-ofp_controller_role = enum_type_wrapper.EnumTypeWrapper(_OFP_CONTROLLER_ROLE)
-OFPP_INVALID = 0
-OFPP_MAX = 2147483392
-OFPP_IN_PORT = 2147483640
-OFPP_TABLE = 2147483641
-OFPP_NORMAL = 2147483642
-OFPP_FLOOD = 2147483643
-OFPP_ALL = 2147483644
-OFPP_CONTROLLER = 2147483645
-OFPP_LOCAL = 2147483646
-OFPP_ANY = 2147483647
-OFPT_HELLO = 0
-OFPT_ERROR = 1
-OFPT_ECHO_REQUEST = 2
-OFPT_ECHO_REPLY = 3
-OFPT_EXPERIMENTER = 4
-OFPT_FEATURES_REQUEST = 5
-OFPT_FEATURES_REPLY = 6
-OFPT_GET_CONFIG_REQUEST = 7
-OFPT_GET_CONFIG_REPLY = 8
-OFPT_SET_CONFIG = 9
-OFPT_PACKET_IN = 10
-OFPT_FLOW_REMOVED = 11
-OFPT_PORT_STATUS = 12
-OFPT_PACKET_OUT = 13
-OFPT_FLOW_MOD = 14
-OFPT_GROUP_MOD = 15
-OFPT_PORT_MOD = 16
-OFPT_TABLE_MOD = 17
-OFPT_MULTIPART_REQUEST = 18
-OFPT_MULTIPART_REPLY = 19
-OFPT_BARRIER_REQUEST = 20
-OFPT_BARRIER_REPLY = 21
-OFPT_QUEUE_GET_CONFIG_REQUEST = 22
-OFPT_QUEUE_GET_CONFIG_REPLY = 23
-OFPT_ROLE_REQUEST = 24
-OFPT_ROLE_REPLY = 25
-OFPT_GET_ASYNC_REQUEST = 26
-OFPT_GET_ASYNC_REPLY = 27
-OFPT_SET_ASYNC = 28
-OFPT_METER_MOD = 29
-OFPHET_INVALID = 0
-OFPHET_VERSIONBITMAP = 1
-OFPC_FRAG_NORMAL = 0
-OFPC_FRAG_DROP = 1
-OFPC_FRAG_REASM = 2
-OFPC_FRAG_MASK = 3
-OFPTC_INVALID = 0
-OFPTC_DEPRECATED_MASK = 3
-OFPTT_INVALID = 0
-OFPTT_MAX = 254
-OFPTT_ALL = 255
-OFPC_INVALID = 0
-OFPC_FLOW_STATS = 1
-OFPC_TABLE_STATS = 2
-OFPC_PORT_STATS = 4
-OFPC_GROUP_STATS = 8
-OFPC_IP_REASM = 32
-OFPC_QUEUE_STATS = 64
-OFPC_PORT_BLOCKED = 256
-OFPPC_INVALID = 0
-OFPPC_PORT_DOWN = 1
-OFPPC_NO_RECV = 4
-OFPPC_NO_FWD = 32
-OFPPC_NO_PACKET_IN = 64
-OFPPS_INVALID = 0
-OFPPS_LINK_DOWN = 1
-OFPPS_BLOCKED = 2
-OFPPS_LIVE = 4
-OFPPF_INVALID = 0
-OFPPF_10MB_HD = 1
-OFPPF_10MB_FD = 2
-OFPPF_100MB_HD = 4
-OFPPF_100MB_FD = 8
-OFPPF_1GB_HD = 16
-OFPPF_1GB_FD = 32
-OFPPF_10GB_FD = 64
-OFPPF_40GB_FD = 128
-OFPPF_100GB_FD = 256
-OFPPF_1TB_FD = 512
-OFPPF_OTHER = 1024
-OFPPF_COPPER = 2048
-OFPPF_FIBER = 4096
-OFPPF_AUTONEG = 8192
-OFPPF_PAUSE = 16384
-OFPPF_PAUSE_ASYM = 32768
-OFPPR_ADD = 0
-OFPPR_DELETE = 1
-OFPPR_MODIFY = 2
-OFPMT_STANDARD = 0
-OFPMT_OXM = 1
-OFPXMC_NXM_0 = 0
-OFPXMC_NXM_1 = 1
-OFPXMC_OPENFLOW_BASIC = 32768
-OFPXMC_EXPERIMENTER = 65535
-OFPXMT_OFB_IN_PORT = 0
-OFPXMT_OFB_IN_PHY_PORT = 1
-OFPXMT_OFB_METADATA = 2
-OFPXMT_OFB_ETH_DST = 3
-OFPXMT_OFB_ETH_SRC = 4
-OFPXMT_OFB_ETH_TYPE = 5
-OFPXMT_OFB_VLAN_VID = 6
-OFPXMT_OFB_VLAN_PCP = 7
-OFPXMT_OFB_IP_DSCP = 8
-OFPXMT_OFB_IP_ECN = 9
-OFPXMT_OFB_IP_PROTO = 10
-OFPXMT_OFB_IPV4_SRC = 11
-OFPXMT_OFB_IPV4_DST = 12
-OFPXMT_OFB_TCP_SRC = 13
-OFPXMT_OFB_TCP_DST = 14
-OFPXMT_OFB_UDP_SRC = 15
-OFPXMT_OFB_UDP_DST = 16
-OFPXMT_OFB_SCTP_SRC = 17
-OFPXMT_OFB_SCTP_DST = 18
-OFPXMT_OFB_ICMPV4_TYPE = 19
-OFPXMT_OFB_ICMPV4_CODE = 20
-OFPXMT_OFB_ARP_OP = 21
-OFPXMT_OFB_ARP_SPA = 22
-OFPXMT_OFB_ARP_TPA = 23
-OFPXMT_OFB_ARP_SHA = 24
-OFPXMT_OFB_ARP_THA = 25
-OFPXMT_OFB_IPV6_SRC = 26
-OFPXMT_OFB_IPV6_DST = 27
-OFPXMT_OFB_IPV6_FLABEL = 28
-OFPXMT_OFB_ICMPV6_TYPE = 29
-OFPXMT_OFB_ICMPV6_CODE = 30
-OFPXMT_OFB_IPV6_ND_TARGET = 31
-OFPXMT_OFB_IPV6_ND_SLL = 32
-OFPXMT_OFB_IPV6_ND_TLL = 33
-OFPXMT_OFB_MPLS_LABEL = 34
-OFPXMT_OFB_MPLS_TC = 35
-OFPXMT_OFB_MPLS_BOS = 36
-OFPXMT_OFB_PBB_ISID = 37
-OFPXMT_OFB_TUNNEL_ID = 38
-OFPXMT_OFB_IPV6_EXTHDR = 39
-OFPVID_NONE = 0
-OFPVID_PRESENT = 4096
-OFPIEH_INVALID = 0
-OFPIEH_NONEXT = 1
-OFPIEH_ESP = 2
-OFPIEH_AUTH = 4
-OFPIEH_DEST = 8
-OFPIEH_FRAG = 16
-OFPIEH_ROUTER = 32
-OFPIEH_HOP = 64
-OFPIEH_UNREP = 128
-OFPIEH_UNSEQ = 256
-OFPAT_OUTPUT = 0
-OFPAT_COPY_TTL_OUT = 11
-OFPAT_COPY_TTL_IN = 12
-OFPAT_SET_MPLS_TTL = 15
-OFPAT_DEC_MPLS_TTL = 16
-OFPAT_PUSH_VLAN = 17
-OFPAT_POP_VLAN = 18
-OFPAT_PUSH_MPLS = 19
-OFPAT_POP_MPLS = 20
-OFPAT_SET_QUEUE = 21
-OFPAT_GROUP = 22
-OFPAT_SET_NW_TTL = 23
-OFPAT_DEC_NW_TTL = 24
-OFPAT_SET_FIELD = 25
-OFPAT_PUSH_PBB = 26
-OFPAT_POP_PBB = 27
-OFPAT_EXPERIMENTER = 65535
-OFPCML_INVALID = 0
-OFPCML_MAX = 65509
-OFPCML_NO_BUFFER = 65535
-OFPIT_INVALID = 0
-OFPIT_GOTO_TABLE = 1
-OFPIT_WRITE_METADATA = 2
-OFPIT_WRITE_ACTIONS = 3
-OFPIT_APPLY_ACTIONS = 4
-OFPIT_CLEAR_ACTIONS = 5
-OFPIT_METER = 6
-OFPIT_EXPERIMENTER = 65535
-OFPFC_ADD = 0
-OFPFC_MODIFY = 1
-OFPFC_MODIFY_STRICT = 2
-OFPFC_DELETE = 3
-OFPFC_DELETE_STRICT = 4
-OFPFF_INVALID = 0
-OFPFF_SEND_FLOW_REM = 1
-OFPFF_CHECK_OVERLAP = 2
-OFPFF_RESET_COUNTS = 4
-OFPFF_NO_PKT_COUNTS = 8
-OFPFF_NO_BYT_COUNTS = 16
-OFPG_INVALID = 0
-OFPG_MAX = 2147483392
-OFPG_ALL = 2147483644
-OFPG_ANY = 2147483647
-OFPGC_ADD = 0
-OFPGC_MODIFY = 1
-OFPGC_DELETE = 2
-OFPGT_ALL = 0
-OFPGT_SELECT = 1
-OFPGT_INDIRECT = 2
-OFPGT_FF = 3
-OFPR_NO_MATCH = 0
-OFPR_ACTION = 1
-OFPR_INVALID_TTL = 2
-OFPRR_IDLE_TIMEOUT = 0
-OFPRR_HARD_TIMEOUT = 1
-OFPRR_DELETE = 2
-OFPRR_GROUP_DELETE = 3
-OFPRR_METER_DELETE = 4
-OFPM_ZERO = 0
-OFPM_MAX = 2147418112
-OFPM_SLOWPATH = 2147483645
-OFPM_CONTROLLER = 2147483646
-OFPM_ALL = 2147483647
-OFPMBT_INVALID = 0
-OFPMBT_DROP = 1
-OFPMBT_DSCP_REMARK = 2
-OFPMBT_EXPERIMENTER = 65535
-OFPMC_ADD = 0
-OFPMC_MODIFY = 1
-OFPMC_DELETE = 2
-OFPMF_INVALID = 0
-OFPMF_KBPS = 1
-OFPMF_PKTPS = 2
-OFPMF_BURST = 4
-OFPMF_STATS = 8
-OFPET_HELLO_FAILED = 0
-OFPET_BAD_REQUEST = 1
-OFPET_BAD_ACTION = 2
-OFPET_BAD_INSTRUCTION = 3
-OFPET_BAD_MATCH = 4
-OFPET_FLOW_MOD_FAILED = 5
-OFPET_GROUP_MOD_FAILED = 6
-OFPET_PORT_MOD_FAILED = 7
-OFPET_TABLE_MOD_FAILED = 8
-OFPET_QUEUE_OP_FAILED = 9
-OFPET_SWITCH_CONFIG_FAILED = 10
-OFPET_ROLE_REQUEST_FAILED = 11
-OFPET_METER_MOD_FAILED = 12
-OFPET_TABLE_FEATURES_FAILED = 13
-OFPET_EXPERIMENTER = 65535
-OFPHFC_INCOMPATIBLE = 0
-OFPHFC_EPERM = 1
-OFPBRC_BAD_VERSION = 0
-OFPBRC_BAD_TYPE = 1
-OFPBRC_BAD_MULTIPART = 2
-OFPBRC_BAD_EXPERIMENTER = 3
-OFPBRC_BAD_EXP_TYPE = 4
-OFPBRC_EPERM = 5
-OFPBRC_BAD_LEN = 6
-OFPBRC_BUFFER_EMPTY = 7
-OFPBRC_BUFFER_UNKNOWN = 8
-OFPBRC_BAD_TABLE_ID = 9
-OFPBRC_IS_SLAVE = 10
-OFPBRC_BAD_PORT = 11
-OFPBRC_BAD_PACKET = 12
-OFPBRC_MULTIPART_BUFFER_OVERFLOW = 13
-OFPBAC_BAD_TYPE = 0
-OFPBAC_BAD_LEN = 1
-OFPBAC_BAD_EXPERIMENTER = 2
-OFPBAC_BAD_EXP_TYPE = 3
-OFPBAC_BAD_OUT_PORT = 4
-OFPBAC_BAD_ARGUMENT = 5
-OFPBAC_EPERM = 6
-OFPBAC_TOO_MANY = 7
-OFPBAC_BAD_QUEUE = 8
-OFPBAC_BAD_OUT_GROUP = 9
-OFPBAC_MATCH_INCONSISTENT = 10
-OFPBAC_UNSUPPORTED_ORDER = 11
-OFPBAC_BAD_TAG = 12
-OFPBAC_BAD_SET_TYPE = 13
-OFPBAC_BAD_SET_LEN = 14
-OFPBAC_BAD_SET_ARGUMENT = 15
-OFPBIC_UNKNOWN_INST = 0
-OFPBIC_UNSUP_INST = 1
-OFPBIC_BAD_TABLE_ID = 2
-OFPBIC_UNSUP_METADATA = 3
-OFPBIC_UNSUP_METADATA_MASK = 4
-OFPBIC_BAD_EXPERIMENTER = 5
-OFPBIC_BAD_EXP_TYPE = 6
-OFPBIC_BAD_LEN = 7
-OFPBIC_EPERM = 8
-OFPBMC_BAD_TYPE = 0
-OFPBMC_BAD_LEN = 1
-OFPBMC_BAD_TAG = 2
-OFPBMC_BAD_DL_ADDR_MASK = 3
-OFPBMC_BAD_NW_ADDR_MASK = 4
-OFPBMC_BAD_WILDCARDS = 5
-OFPBMC_BAD_FIELD = 6
-OFPBMC_BAD_VALUE = 7
-OFPBMC_BAD_MASK = 8
-OFPBMC_BAD_PREREQ = 9
-OFPBMC_DUP_FIELD = 10
-OFPBMC_EPERM = 11
-OFPFMFC_UNKNOWN = 0
-OFPFMFC_TABLE_FULL = 1
-OFPFMFC_BAD_TABLE_ID = 2
-OFPFMFC_OVERLAP = 3
-OFPFMFC_EPERM = 4
-OFPFMFC_BAD_TIMEOUT = 5
-OFPFMFC_BAD_COMMAND = 6
-OFPFMFC_BAD_FLAGS = 7
-OFPGMFC_GROUP_EXISTS = 0
-OFPGMFC_INVALID_GROUP = 1
-OFPGMFC_WEIGHT_UNSUPPORTED = 2
-OFPGMFC_OUT_OF_GROUPS = 3
-OFPGMFC_OUT_OF_BUCKETS = 4
-OFPGMFC_CHAINING_UNSUPPORTED = 5
-OFPGMFC_WATCH_UNSUPPORTED = 6
-OFPGMFC_LOOP = 7
-OFPGMFC_UNKNOWN_GROUP = 8
-OFPGMFC_CHAINED_GROUP = 9
-OFPGMFC_BAD_TYPE = 10
-OFPGMFC_BAD_COMMAND = 11
-OFPGMFC_BAD_BUCKET = 12
-OFPGMFC_BAD_WATCH = 13
-OFPGMFC_EPERM = 14
-OFPPMFC_BAD_PORT = 0
-OFPPMFC_BAD_HW_ADDR = 1
-OFPPMFC_BAD_CONFIG = 2
-OFPPMFC_BAD_ADVERTISE = 3
-OFPPMFC_EPERM = 4
-OFPTMFC_BAD_TABLE = 0
-OFPTMFC_BAD_CONFIG = 1
-OFPTMFC_EPERM = 2
-OFPQOFC_BAD_PORT = 0
-OFPQOFC_BAD_QUEUE = 1
-OFPQOFC_EPERM = 2
-OFPSCFC_BAD_FLAGS = 0
-OFPSCFC_BAD_LEN = 1
-OFPSCFC_EPERM = 2
-OFPRRFC_STALE = 0
-OFPRRFC_UNSUP = 1
-OFPRRFC_BAD_ROLE = 2
-OFPMMFC_UNKNOWN = 0
-OFPMMFC_METER_EXISTS = 1
-OFPMMFC_INVALID_METER = 2
-OFPMMFC_UNKNOWN_METER = 3
-OFPMMFC_BAD_COMMAND = 4
-OFPMMFC_BAD_FLAGS = 5
-OFPMMFC_BAD_RATE = 6
-OFPMMFC_BAD_BURST = 7
-OFPMMFC_BAD_BAND = 8
-OFPMMFC_BAD_BAND_VALUE = 9
-OFPMMFC_OUT_OF_METERS = 10
-OFPMMFC_OUT_OF_BANDS = 11
-OFPTFFC_BAD_TABLE = 0
-OFPTFFC_BAD_METADATA = 1
-OFPTFFC_BAD_TYPE = 2
-OFPTFFC_BAD_LEN = 3
-OFPTFFC_BAD_ARGUMENT = 4
-OFPTFFC_EPERM = 5
-OFPMP_DESC = 0
-OFPMP_FLOW = 1
-OFPMP_AGGREGATE = 2
-OFPMP_TABLE = 3
-OFPMP_PORT_STATS = 4
-OFPMP_QUEUE = 5
-OFPMP_GROUP = 6
-OFPMP_GROUP_DESC = 7
-OFPMP_GROUP_FEATURES = 8
-OFPMP_METER = 9
-OFPMP_METER_CONFIG = 10
-OFPMP_METER_FEATURES = 11
-OFPMP_TABLE_FEATURES = 12
-OFPMP_PORT_DESC = 13
-OFPMP_EXPERIMENTER = 65535
-OFPMPF_REQ_INVALID = 0
-OFPMPF_REQ_MORE = 1
-OFPMPF_REPLY_INVALID = 0
-OFPMPF_REPLY_MORE = 1
-OFPTFPT_INSTRUCTIONS = 0
-OFPTFPT_INSTRUCTIONS_MISS = 1
-OFPTFPT_NEXT_TABLES = 2
-OFPTFPT_NEXT_TABLES_MISS = 3
-OFPTFPT_WRITE_ACTIONS = 4
-OFPTFPT_WRITE_ACTIONS_MISS = 5
-OFPTFPT_APPLY_ACTIONS = 6
-OFPTFPT_APPLY_ACTIONS_MISS = 7
-OFPTFPT_MATCH = 8
-OFPTFPT_WILDCARDS = 10
-OFPTFPT_WRITE_SETFIELD = 12
-OFPTFPT_WRITE_SETFIELD_MISS = 13
-OFPTFPT_APPLY_SETFIELD = 14
-OFPTFPT_APPLY_SETFIELD_MISS = 15
-OFPTFPT_EXPERIMENTER = 65534
-OFPTFPT_EXPERIMENTER_MISS = 65535
-OFPGFC_INVALID = 0
-OFPGFC_SELECT_WEIGHT = 1
-OFPGFC_SELECT_LIVENESS = 2
-OFPGFC_CHAINING = 4
-OFPGFC_CHAINING_CHECKS = 8
-OFPQT_INVALID = 0
-OFPQT_MIN_RATE = 1
-OFPQT_MAX_RATE = 2
-OFPQT_EXPERIMENTER = 65535
-OFPCR_ROLE_NOCHANGE = 0
-OFPCR_ROLE_EQUAL = 1
-OFPCR_ROLE_MASTER = 2
-OFPCR_ROLE_SLAVE = 3
-
-
-
-_OFP_HEADER = _descriptor.Descriptor(
-  name='ofp_header',
-  full_name='openflow_13.ofp_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='version', full_name='openflow_13.ofp_header.version', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_header.type', index=1,
-      number=2, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='xid', full_name='openflow_13.ofp_header.xid', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=34,
-  serialized_end=113,
-)
-
-
-_OFP_HELLO_ELEM_HEADER = _descriptor.Descriptor(
-  name='ofp_hello_elem_header',
-  full_name='openflow_13.ofp_hello_elem_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_hello_elem_header.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='versionbitmap', full_name='openflow_13.ofp_hello_elem_header.versionbitmap', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='element', full_name='openflow_13.ofp_hello_elem_header.element',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=116,
-  serialized_end=266,
-)
-
-
-_OFP_HELLO_ELEM_VERSIONBITMAP = _descriptor.Descriptor(
-  name='ofp_hello_elem_versionbitmap',
-  full_name='openflow_13.ofp_hello_elem_versionbitmap',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='bitmaps', full_name='openflow_13.ofp_hello_elem_versionbitmap.bitmaps', index=0,
-      number=2, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=268,
-  serialized_end=315,
-)
-
-
-_OFP_HELLO = _descriptor.Descriptor(
-  name='ofp_hello',
-  full_name='openflow_13.ofp_hello',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='elements', full_name='openflow_13.ofp_hello.elements', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=317,
-  serialized_end=382,
-)
-
-
-_OFP_SWITCH_CONFIG = _descriptor.Descriptor(
-  name='ofp_switch_config',
-  full_name='openflow_13.ofp_switch_config',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_switch_config.flags', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='miss_send_len', full_name='openflow_13.ofp_switch_config.miss_send_len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=384,
-  serialized_end=441,
-)
-
-
-_OFP_TABLE_MOD = _descriptor.Descriptor(
-  name='ofp_table_mod',
-  full_name='openflow_13.ofp_table_mod',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_table_mod.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='openflow_13.ofp_table_mod.config', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=443,
-  serialized_end=492,
-)
-
-
-_OFP_PORT = _descriptor.Descriptor(
-  name='ofp_port',
-  full_name='openflow_13.ofp_port',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_port.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hw_addr', full_name='openflow_13.ofp_port.hw_addr', index=1,
-      number=2, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='openflow_13.ofp_port.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='openflow_13.ofp_port.config', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='openflow_13.ofp_port.state', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='curr', full_name='openflow_13.ofp_port.curr', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='advertised', full_name='openflow_13.ofp_port.advertised', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='supported', full_name='openflow_13.ofp_port.supported', index=7,
-      number=8, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='peer', full_name='openflow_13.ofp_port.peer', index=8,
-      number=9, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='curr_speed', full_name='openflow_13.ofp_port.curr_speed', index=9,
-      number=10, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_speed', full_name='openflow_13.ofp_port.max_speed', index=10,
-      number=11, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=495,
-  serialized_end=690,
-)
-
-
-_OFP_SWITCH_FEATURES = _descriptor.Descriptor(
-  name='ofp_switch_features',
-  full_name='openflow_13.ofp_switch_features',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='datapath_id', full_name='openflow_13.ofp_switch_features.datapath_id', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='n_buffers', full_name='openflow_13.ofp_switch_features.n_buffers', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='n_tables', full_name='openflow_13.ofp_switch_features.n_tables', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='auxiliary_id', full_name='openflow_13.ofp_switch_features.auxiliary_id', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='capabilities', full_name='openflow_13.ofp_switch_features.capabilities', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=692,
-  serialized_end=815,
-)
-
-
-_OFP_PORT_STATUS = _descriptor.Descriptor(
-  name='ofp_port_status',
-  full_name='openflow_13.ofp_port_status',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='reason', full_name='openflow_13.ofp_port_status.reason', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='openflow_13.ofp_port_status.desc', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=817,
-  serialized_end=917,
-)
-
-
-_OFP_PORT_MOD = _descriptor.Descriptor(
-  name='ofp_port_mod',
-  full_name='openflow_13.ofp_port_mod',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_port_mod.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hw_addr', full_name='openflow_13.ofp_port_mod.hw_addr', index=1,
-      number=2, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='openflow_13.ofp_port_mod.config', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='mask', full_name='openflow_13.ofp_port_mod.mask', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='advertise', full_name='openflow_13.ofp_port_mod.advertise', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=919,
-  serialized_end=1016,
-)
-
-
-_OFP_MATCH = _descriptor.Descriptor(
-  name='ofp_match',
-  full_name='openflow_13.ofp_match',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_match.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='oxm_fields', full_name='openflow_13.ofp_match.oxm_fields', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1018,
-  serialized_end=1120,
-)
-
-
-_OFP_OXM_FIELD = _descriptor.Descriptor(
-  name='ofp_oxm_field',
-  full_name='openflow_13.ofp_oxm_field',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='oxm_class', full_name='openflow_13.ofp_oxm_field.oxm_class', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ofb_field', full_name='openflow_13.ofp_oxm_field.ofb_field', index=1,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter_field', full_name='openflow_13.ofp_oxm_field.experimenter_field', index=2,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='field', full_name='openflow_13.ofp_oxm_field.field',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=1123,
-  serialized_end=1318,
-)
-
-
-_OFP_OXM_OFB_FIELD = _descriptor.Descriptor(
-  name='ofp_oxm_ofb_field',
-  full_name='openflow_13.ofp_oxm_ofb_field',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_oxm_ofb_field.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='has_mask', full_name='openflow_13.ofp_oxm_ofb_field.has_mask', index=1,
-      number=2, type=8, cpp_type=7, label=1,
-      has_default_value=False, default_value=False,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='port', full_name='openflow_13.ofp_oxm_ofb_field.port', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='physical_port', full_name='openflow_13.ofp_oxm_ofb_field.physical_port', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='table_metadata', full_name='openflow_13.ofp_oxm_ofb_field.table_metadata', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='eth_dst', full_name='openflow_13.ofp_oxm_ofb_field.eth_dst', index=5,
-      number=6, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='eth_src', full_name='openflow_13.ofp_oxm_ofb_field.eth_src', index=6,
-      number=7, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='eth_type', full_name='openflow_13.ofp_oxm_ofb_field.eth_type', index=7,
-      number=8, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='vlan_vid', full_name='openflow_13.ofp_oxm_ofb_field.vlan_vid', index=8,
-      number=9, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='vlan_pcp', full_name='openflow_13.ofp_oxm_ofb_field.vlan_pcp', index=9,
-      number=10, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ip_dscp', full_name='openflow_13.ofp_oxm_ofb_field.ip_dscp', index=10,
-      number=11, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ip_ecn', full_name='openflow_13.ofp_oxm_ofb_field.ip_ecn', index=11,
-      number=12, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ip_proto', full_name='openflow_13.ofp_oxm_ofb_field.ip_proto', index=12,
-      number=13, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv4_src', full_name='openflow_13.ofp_oxm_ofb_field.ipv4_src', index=13,
-      number=14, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv4_dst', full_name='openflow_13.ofp_oxm_ofb_field.ipv4_dst', index=14,
-      number=15, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tcp_src', full_name='openflow_13.ofp_oxm_ofb_field.tcp_src', index=15,
-      number=16, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tcp_dst', full_name='openflow_13.ofp_oxm_ofb_field.tcp_dst', index=16,
-      number=17, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='udp_src', full_name='openflow_13.ofp_oxm_ofb_field.udp_src', index=17,
-      number=18, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='udp_dst', full_name='openflow_13.ofp_oxm_ofb_field.udp_dst', index=18,
-      number=19, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='sctp_src', full_name='openflow_13.ofp_oxm_ofb_field.sctp_src', index=19,
-      number=20, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='sctp_dst', full_name='openflow_13.ofp_oxm_ofb_field.sctp_dst', index=20,
-      number=21, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='icmpv4_type', full_name='openflow_13.ofp_oxm_ofb_field.icmpv4_type', index=21,
-      number=22, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='icmpv4_code', full_name='openflow_13.ofp_oxm_ofb_field.icmpv4_code', index=22,
-      number=23, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_op', full_name='openflow_13.ofp_oxm_ofb_field.arp_op', index=23,
-      number=24, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_spa', full_name='openflow_13.ofp_oxm_ofb_field.arp_spa', index=24,
-      number=25, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_tpa', full_name='openflow_13.ofp_oxm_ofb_field.arp_tpa', index=25,
-      number=26, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_sha', full_name='openflow_13.ofp_oxm_ofb_field.arp_sha', index=26,
-      number=27, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_tha', full_name='openflow_13.ofp_oxm_ofb_field.arp_tha', index=27,
-      number=28, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_src', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_src', index=28,
-      number=29, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_dst', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_dst', index=29,
-      number=30, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_flabel', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_flabel', index=30,
-      number=31, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='icmpv6_type', full_name='openflow_13.ofp_oxm_ofb_field.icmpv6_type', index=31,
-      number=32, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='icmpv6_code', full_name='openflow_13.ofp_oxm_ofb_field.icmpv6_code', index=32,
-      number=33, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_nd_target', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_nd_target', index=33,
-      number=34, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_nd_ssl', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_nd_ssl', index=34,
-      number=35, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_nd_tll', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_nd_tll', index=35,
-      number=36, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='mpls_label', full_name='openflow_13.ofp_oxm_ofb_field.mpls_label', index=36,
-      number=37, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='mpls_tc', full_name='openflow_13.ofp_oxm_ofb_field.mpls_tc', index=37,
-      number=38, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='mpls_bos', full_name='openflow_13.ofp_oxm_ofb_field.mpls_bos', index=38,
-      number=39, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='pbb_isid', full_name='openflow_13.ofp_oxm_ofb_field.pbb_isid', index=39,
-      number=40, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tunnel_id', full_name='openflow_13.ofp_oxm_ofb_field.tunnel_id', index=40,
-      number=41, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_exthdr', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_exthdr', index=41,
-      number=42, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='table_metadata_mask', full_name='openflow_13.ofp_oxm_ofb_field.table_metadata_mask', index=42,
-      number=105, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='eth_dst_mask', full_name='openflow_13.ofp_oxm_ofb_field.eth_dst_mask', index=43,
-      number=106, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='eth_src_mask', full_name='openflow_13.ofp_oxm_ofb_field.eth_src_mask', index=44,
-      number=107, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='vlan_vid_mask', full_name='openflow_13.ofp_oxm_ofb_field.vlan_vid_mask', index=45,
-      number=109, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv4_src_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv4_src_mask', index=46,
-      number=114, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv4_dst_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv4_dst_mask', index=47,
-      number=115, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_spa_mask', full_name='openflow_13.ofp_oxm_ofb_field.arp_spa_mask', index=48,
-      number=125, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='arp_tpa_mask', full_name='openflow_13.ofp_oxm_ofb_field.arp_tpa_mask', index=49,
-      number=126, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_src_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_src_mask', index=50,
-      number=129, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_dst_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_dst_mask', index=51,
-      number=130, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_flabel_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_flabel_mask', index=52,
-      number=131, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='pbb_isid_mask', full_name='openflow_13.ofp_oxm_ofb_field.pbb_isid_mask', index=53,
-      number=140, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tunnel_id_mask', full_name='openflow_13.ofp_oxm_ofb_field.tunnel_id_mask', index=54,
-      number=141, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ipv6_exthdr_mask', full_name='openflow_13.ofp_oxm_ofb_field.ipv6_exthdr_mask', index=55,
-      number=142, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='value', full_name='openflow_13.ofp_oxm_ofb_field.value',
-      index=0, containing_type=None, fields=[]),
-    _descriptor.OneofDescriptor(
-      name='mask', full_name='openflow_13.ofp_oxm_ofb_field.mask',
-      index=1, containing_type=None, fields=[]),
-  ],
-  serialized_start=1321,
-  serialized_end=2612,
-)
-
-
-_OFP_OXM_EXPERIMENTER_FIELD = _descriptor.Descriptor(
-  name='ofp_oxm_experimenter_field',
-  full_name='openflow_13.ofp_oxm_experimenter_field',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='oxm_header', full_name='openflow_13.ofp_oxm_experimenter_field.oxm_header', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_oxm_experimenter_field.experimenter', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2614,
-  serialized_end=2684,
-)
-
-
-_OFP_ACTION = _descriptor.Descriptor(
-  name='ofp_action',
-  full_name='openflow_13.ofp_action',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_action.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='output', full_name='openflow_13.ofp_action.output', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='mpls_ttl', full_name='openflow_13.ofp_action.mpls_ttl', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='push', full_name='openflow_13.ofp_action.push', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='pop_mpls', full_name='openflow_13.ofp_action.pop_mpls', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='group', full_name='openflow_13.ofp_action.group', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='nw_ttl', full_name='openflow_13.ofp_action.nw_ttl', index=6,
-      number=7, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='set_field', full_name='openflow_13.ofp_action.set_field', index=7,
-      number=8, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_action.experimenter', index=8,
-      number=9, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='action', full_name='openflow_13.ofp_action.action',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=2687,
-  serialized_end=3173,
-)
-
-
-_OFP_ACTION_OUTPUT = _descriptor.Descriptor(
-  name='ofp_action_output',
-  full_name='openflow_13.ofp_action_output',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port', full_name='openflow_13.ofp_action_output.port', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_len', full_name='openflow_13.ofp_action_output.max_len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3175,
-  serialized_end=3225,
-)
-
-
-_OFP_ACTION_MPLS_TTL = _descriptor.Descriptor(
-  name='ofp_action_mpls_ttl',
-  full_name='openflow_13.ofp_action_mpls_ttl',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='mpls_ttl', full_name='openflow_13.ofp_action_mpls_ttl.mpls_ttl', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3227,
-  serialized_end=3266,
-)
-
-
-_OFP_ACTION_PUSH = _descriptor.Descriptor(
-  name='ofp_action_push',
-  full_name='openflow_13.ofp_action_push',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='ethertype', full_name='openflow_13.ofp_action_push.ethertype', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3268,
-  serialized_end=3304,
-)
-
-
-_OFP_ACTION_POP_MPLS = _descriptor.Descriptor(
-  name='ofp_action_pop_mpls',
-  full_name='openflow_13.ofp_action_pop_mpls',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='ethertype', full_name='openflow_13.ofp_action_pop_mpls.ethertype', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3306,
-  serialized_end=3346,
-)
-
-
-_OFP_ACTION_GROUP = _descriptor.Descriptor(
-  name='ofp_action_group',
-  full_name='openflow_13.ofp_action_group',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='group_id', full_name='openflow_13.ofp_action_group.group_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3348,
-  serialized_end=3384,
-)
-
-
-_OFP_ACTION_NW_TTL = _descriptor.Descriptor(
-  name='ofp_action_nw_ttl',
-  full_name='openflow_13.ofp_action_nw_ttl',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='nw_ttl', full_name='openflow_13.ofp_action_nw_ttl.nw_ttl', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3386,
-  serialized_end=3421,
-)
-
-
-_OFP_ACTION_SET_FIELD = _descriptor.Descriptor(
-  name='ofp_action_set_field',
-  full_name='openflow_13.ofp_action_set_field',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='field', full_name='openflow_13.ofp_action_set_field.field', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3423,
-  serialized_end=3488,
-)
-
-
-_OFP_ACTION_EXPERIMENTER = _descriptor.Descriptor(
-  name='ofp_action_experimenter',
-  full_name='openflow_13.ofp_action_experimenter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_action_experimenter.experimenter', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_action_experimenter.data', index=1,
-      number=2, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3490,
-  serialized_end=3551,
-)
-
-
-_OFP_INSTRUCTION = _descriptor.Descriptor(
-  name='ofp_instruction',
-  full_name='openflow_13.ofp_instruction',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_instruction.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='goto_table', full_name='openflow_13.ofp_instruction.goto_table', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='write_metadata', full_name='openflow_13.ofp_instruction.write_metadata', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_instruction.actions', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='meter', full_name='openflow_13.ofp_instruction.meter', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_instruction.experimenter', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='data', full_name='openflow_13.ofp_instruction.data',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=3554,
-  serialized_end=3904,
-)
-
-
-_OFP_INSTRUCTION_GOTO_TABLE = _descriptor.Descriptor(
-  name='ofp_instruction_goto_table',
-  full_name='openflow_13.ofp_instruction_goto_table',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_instruction_goto_table.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3906,
-  serialized_end=3952,
-)
-
-
-_OFP_INSTRUCTION_WRITE_METADATA = _descriptor.Descriptor(
-  name='ofp_instruction_write_metadata',
-  full_name='openflow_13.ofp_instruction_write_metadata',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='metadata', full_name='openflow_13.ofp_instruction_write_metadata.metadata', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='metadata_mask', full_name='openflow_13.ofp_instruction_write_metadata.metadata_mask', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=3954,
-  serialized_end=4027,
-)
-
-
-_OFP_INSTRUCTION_ACTIONS = _descriptor.Descriptor(
-  name='ofp_instruction_actions',
-  full_name='openflow_13.ofp_instruction_actions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_instruction_actions.actions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4029,
-  serialized_end=4096,
-)
-
-
-_OFP_INSTRUCTION_METER = _descriptor.Descriptor(
-  name='ofp_instruction_meter',
-  full_name='openflow_13.ofp_instruction_meter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='meter_id', full_name='openflow_13.ofp_instruction_meter.meter_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4098,
-  serialized_end=4139,
-)
-
-
-_OFP_INSTRUCTION_EXPERIMENTER = _descriptor.Descriptor(
-  name='ofp_instruction_experimenter',
-  full_name='openflow_13.ofp_instruction_experimenter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_instruction_experimenter.experimenter', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_instruction_experimenter.data', index=1,
-      number=2, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4141,
-  serialized_end=4207,
-)
-
-
-_OFP_FLOW_MOD = _descriptor.Descriptor(
-  name='ofp_flow_mod',
-  full_name='openflow_13.ofp_flow_mod',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_flow_mod.cookie', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie_mask', full_name='openflow_13.ofp_flow_mod.cookie_mask', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_flow_mod.table_id', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='command', full_name='openflow_13.ofp_flow_mod.command', index=3,
-      number=4, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='idle_timeout', full_name='openflow_13.ofp_flow_mod.idle_timeout', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hard_timeout', full_name='openflow_13.ofp_flow_mod.hard_timeout', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='priority', full_name='openflow_13.ofp_flow_mod.priority', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='buffer_id', full_name='openflow_13.ofp_flow_mod.buffer_id', index=7,
-      number=8, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_port', full_name='openflow_13.ofp_flow_mod.out_port', index=8,
-      number=9, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_group', full_name='openflow_13.ofp_flow_mod.out_group', index=9,
-      number=10, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_flow_mod.flags', index=10,
-      number=11, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_flow_mod.match', index=11,
-      number=12, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='instructions', full_name='openflow_13.ofp_flow_mod.instructions', index=12,
-      number=13, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4210,
-  serialized_end=4555,
-)
-
-
-_OFP_BUCKET = _descriptor.Descriptor(
-  name='ofp_bucket',
-  full_name='openflow_13.ofp_bucket',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='weight', full_name='openflow_13.ofp_bucket.weight', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='watch_port', full_name='openflow_13.ofp_bucket.watch_port', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='watch_group', full_name='openflow_13.ofp_bucket.watch_group', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_bucket.actions', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4557,
-  serialized_end=4668,
-)
-
-
-_OFP_GROUP_MOD = _descriptor.Descriptor(
-  name='ofp_group_mod',
-  full_name='openflow_13.ofp_group_mod',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='command', full_name='openflow_13.ofp_group_mod.command', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_group_mod.type', index=1,
-      number=2, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='group_id', full_name='openflow_13.ofp_group_mod.group_id', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='buckets', full_name='openflow_13.ofp_group_mod.buckets', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4671,
-  serialized_end=4842,
-)
-
-
-_OFP_PACKET_OUT = _descriptor.Descriptor(
-  name='ofp_packet_out',
-  full_name='openflow_13.ofp_packet_out',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='buffer_id', full_name='openflow_13.ofp_packet_out.buffer_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='in_port', full_name='openflow_13.ofp_packet_out.in_port', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_packet_out.actions', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_packet_out.data', index=3,
-      number=4, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4844,
-  serialized_end=4952,
-)
-
-
-_OFP_PACKET_IN = _descriptor.Descriptor(
-  name='ofp_packet_in',
-  full_name='openflow_13.ofp_packet_in',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='buffer_id', full_name='openflow_13.ofp_packet_in.buffer_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='total_len', full_name='openflow_13.ofp_packet_in.total_len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='reason', full_name='openflow_13.ofp_packet_in.reason', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_packet_in.table_id', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_packet_in.cookie', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_packet_in.match', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_packet_in.data', index=6,
-      number=7, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=4955,
-  serialized_end=5146,
-)
-
-
-_OFP_FLOW_REMOVED = _descriptor.Descriptor(
-  name='ofp_flow_removed',
-  full_name='openflow_13.ofp_flow_removed',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_flow_removed.cookie', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='priority', full_name='openflow_13.ofp_flow_removed.priority', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='reason', full_name='openflow_13.ofp_flow_removed.reason', index=2,
-      number=3, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_flow_removed.table_id', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_flow_removed.duration_sec', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_flow_removed.duration_nsec', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='idle_timeout', full_name='openflow_13.ofp_flow_removed.idle_timeout', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hard_timeout', full_name='openflow_13.ofp_flow_removed.hard_timeout', index=7,
-      number=8, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_count', full_name='openflow_13.ofp_flow_removed.packet_count', index=8,
-      number=9, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_count', full_name='openflow_13.ofp_flow_removed.byte_count', index=9,
-      number=10, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_flow_removed.match', index=10,
-      number=121, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5149,
-  serialized_end=5443,
-)
-
-
-_OFP_METER_BAND_HEADER = _descriptor.Descriptor(
-  name='ofp_meter_band_header',
-  full_name='openflow_13.ofp_meter_band_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_meter_band_header.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='len', full_name='openflow_13.ofp_meter_band_header.len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_meter_band_header.rate', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='burst_size', full_name='openflow_13.ofp_meter_band_header.burst_size', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5445,
-  serialized_end=5563,
-)
-
-
-_OFP_METER_BAND_DROP = _descriptor.Descriptor(
-  name='ofp_meter_band_drop',
-  full_name='openflow_13.ofp_meter_band_drop',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_meter_band_drop.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='len', full_name='openflow_13.ofp_meter_band_drop.len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_meter_band_drop.rate', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='burst_size', full_name='openflow_13.ofp_meter_band_drop.burst_size', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5565,
-  serialized_end=5647,
-)
-
-
-_OFP_METER_BAND_DSCP_REMARK = _descriptor.Descriptor(
-  name='ofp_meter_band_dscp_remark',
-  full_name='openflow_13.ofp_meter_band_dscp_remark',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_meter_band_dscp_remark.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='len', full_name='openflow_13.ofp_meter_band_dscp_remark.len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_meter_band_dscp_remark.rate', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='burst_size', full_name='openflow_13.ofp_meter_band_dscp_remark.burst_size', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='prec_level', full_name='openflow_13.ofp_meter_band_dscp_remark.prec_level', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5649,
-  serialized_end=5758,
-)
-
-
-_OFP_METER_BAND_EXPERIMENTER = _descriptor.Descriptor(
-  name='ofp_meter_band_experimenter',
-  full_name='openflow_13.ofp_meter_band_experimenter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_meter_band_experimenter.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='len', full_name='openflow_13.ofp_meter_band_experimenter.len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_meter_band_experimenter.rate', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='burst_size', full_name='openflow_13.ofp_meter_band_experimenter.burst_size', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_meter_band_experimenter.experimenter', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5761,
-  serialized_end=5907,
-)
-
-
-_OFP_METER_MOD = _descriptor.Descriptor(
-  name='ofp_meter_mod',
-  full_name='openflow_13.ofp_meter_mod',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='command', full_name='openflow_13.ofp_meter_mod.command', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_meter_mod.flags', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='meter_id', full_name='openflow_13.ofp_meter_mod.meter_id', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='bands', full_name='openflow_13.ofp_meter_mod.bands', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=5910,
-  serialized_end=6062,
-)
-
-
-_OFP_ERROR_MSG = _descriptor.Descriptor(
-  name='ofp_error_msg',
-  full_name='openflow_13.ofp_error_msg',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_error_msg.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='code', full_name='openflow_13.ofp_error_msg.code', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_error_msg.data', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6064,
-  serialized_end=6121,
-)
-
-
-_OFP_ERROR_EXPERIMENTER_MSG = _descriptor.Descriptor(
-  name='ofp_error_experimenter_msg',
-  full_name='openflow_13.ofp_error_experimenter_msg',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_error_experimenter_msg.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='exp_type', full_name='openflow_13.ofp_error_experimenter_msg.exp_type', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_error_experimenter_msg.experimenter', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_error_experimenter_msg.data', index=3,
-      number=4, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6123,
-  serialized_end=6219,
-)
-
-
-_OFP_MULTIPART_REQUEST = _descriptor.Descriptor(
-  name='ofp_multipart_request',
-  full_name='openflow_13.ofp_multipart_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_multipart_request.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_multipart_request.flags', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='body', full_name='openflow_13.ofp_multipart_request.body', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6221,
-  serialized_end=6320,
-)
-
-
-_OFP_MULTIPART_REPLY = _descriptor.Descriptor(
-  name='ofp_multipart_reply',
-  full_name='openflow_13.ofp_multipart_reply',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_multipart_reply.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_multipart_reply.flags', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='body', full_name='openflow_13.ofp_multipart_reply.body', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6322,
-  serialized_end=6419,
-)
-
-
-_OFP_DESC = _descriptor.Descriptor(
-  name='ofp_desc',
-  full_name='openflow_13.ofp_desc',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='mfr_desc', full_name='openflow_13.ofp_desc.mfr_desc', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hw_desc', full_name='openflow_13.ofp_desc.hw_desc', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='sw_desc', full_name='openflow_13.ofp_desc.sw_desc', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='serial_num', full_name='openflow_13.ofp_desc.serial_num', index=3,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='dp_desc', full_name='openflow_13.ofp_desc.dp_desc', index=4,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6421,
-  serialized_end=6520,
-)
-
-
-_OFP_FLOW_STATS_REQUEST = _descriptor.Descriptor(
-  name='ofp_flow_stats_request',
-  full_name='openflow_13.ofp_flow_stats_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_flow_stats_request.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_port', full_name='openflow_13.ofp_flow_stats_request.out_port', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_group', full_name='openflow_13.ofp_flow_stats_request.out_group', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_flow_stats_request.cookie', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie_mask', full_name='openflow_13.ofp_flow_stats_request.cookie_mask', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_flow_stats_request.match', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6523,
-  serialized_end=6678,
-)
-
-
-_OFP_FLOW_STATS = _descriptor.Descriptor(
-  name='ofp_flow_stats',
-  full_name='openflow_13.ofp_flow_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_flow_stats.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_flow_stats.duration_sec', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_flow_stats.duration_nsec', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='priority', full_name='openflow_13.ofp_flow_stats.priority', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='idle_timeout', full_name='openflow_13.ofp_flow_stats.idle_timeout', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='hard_timeout', full_name='openflow_13.ofp_flow_stats.hard_timeout', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_flow_stats.flags', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_flow_stats.cookie', index=7,
-      number=8, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_count', full_name='openflow_13.ofp_flow_stats.packet_count', index=8,
-      number=9, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_count', full_name='openflow_13.ofp_flow_stats.byte_count', index=9,
-      number=10, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_flow_stats.match', index=10,
-      number=12, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='instructions', full_name='openflow_13.ofp_flow_stats.instructions', index=11,
-      number=13, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6681,
-  serialized_end=6986,
-)
-
-
-_OFP_AGGREGATE_STATS_REQUEST = _descriptor.Descriptor(
-  name='ofp_aggregate_stats_request',
-  full_name='openflow_13.ofp_aggregate_stats_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_aggregate_stats_request.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_port', full_name='openflow_13.ofp_aggregate_stats_request.out_port', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='out_group', full_name='openflow_13.ofp_aggregate_stats_request.out_group', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie', full_name='openflow_13.ofp_aggregate_stats_request.cookie', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='cookie_mask', full_name='openflow_13.ofp_aggregate_stats_request.cookie_mask', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='match', full_name='openflow_13.ofp_aggregate_stats_request.match', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=6989,
-  serialized_end=7149,
-)
-
-
-_OFP_AGGREGATE_STATS_REPLY = _descriptor.Descriptor(
-  name='ofp_aggregate_stats_reply',
-  full_name='openflow_13.ofp_aggregate_stats_reply',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='packet_count', full_name='openflow_13.ofp_aggregate_stats_reply.packet_count', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_count', full_name='openflow_13.ofp_aggregate_stats_reply.byte_count', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flow_count', full_name='openflow_13.ofp_aggregate_stats_reply.flow_count', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7151,
-  serialized_end=7240,
-)
-
-
-_OFP_TABLE_FEATURE_PROPERTY = _descriptor.Descriptor(
-  name='ofp_table_feature_property',
-  full_name='openflow_13.ofp_table_feature_property',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_table_feature_property.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='instructions', full_name='openflow_13.ofp_table_feature_property.instructions', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='next_tables', full_name='openflow_13.ofp_table_feature_property.next_tables', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_table_feature_property.actions', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='oxm', full_name='openflow_13.ofp_table_feature_property.oxm', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_table_feature_property.experimenter', index=5,
-      number=6, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='value', full_name='openflow_13.ofp_table_feature_property.value',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=7243,
-  serialized_end=7676,
-)
-
-
-_OFP_TABLE_FEATURE_PROP_INSTRUCTIONS = _descriptor.Descriptor(
-  name='ofp_table_feature_prop_instructions',
-  full_name='openflow_13.ofp_table_feature_prop_instructions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='instructions', full_name='openflow_13.ofp_table_feature_prop_instructions.instructions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7678,
-  serialized_end=7767,
-)
-
-
-_OFP_TABLE_FEATURE_PROP_NEXT_TABLES = _descriptor.Descriptor(
-  name='ofp_table_feature_prop_next_tables',
-  full_name='openflow_13.ofp_table_feature_prop_next_tables',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='next_table_ids', full_name='openflow_13.ofp_table_feature_prop_next_tables.next_table_ids', index=0,
-      number=1, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7769,
-  serialized_end=7829,
-)
-
-
-_OFP_TABLE_FEATURE_PROP_ACTIONS = _descriptor.Descriptor(
-  name='ofp_table_feature_prop_actions',
-  full_name='openflow_13.ofp_table_feature_prop_actions',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_table_feature_prop_actions.actions', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7831,
-  serialized_end=7905,
-)
-
-
-_OFP_TABLE_FEATURE_PROP_OXM = _descriptor.Descriptor(
-  name='ofp_table_feature_prop_oxm',
-  full_name='openflow_13.ofp_table_feature_prop_oxm',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='oxm_ids', full_name='openflow_13.ofp_table_feature_prop_oxm.oxm_ids', index=0,
-      number=3, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7907,
-  serialized_end=7952,
-)
-
-
-_OFP_TABLE_FEATURE_PROP_EXPERIMENTER = _descriptor.Descriptor(
-  name='ofp_table_feature_prop_experimenter',
-  full_name='openflow_13.ofp_table_feature_prop_experimenter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_table_feature_prop_experimenter.experimenter', index=0,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='exp_type', full_name='openflow_13.ofp_table_feature_prop_experimenter.exp_type', index=1,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter_data', full_name='openflow_13.ofp_table_feature_prop_experimenter.experimenter_data', index=2,
-      number=4, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=7954,
-  serialized_end=8058,
-)
-
-
-_OFP_TABLE_FEATURES = _descriptor.Descriptor(
-  name='ofp_table_features',
-  full_name='openflow_13.ofp_table_features',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_table_features.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='openflow_13.ofp_table_features.name', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='metadata_match', full_name='openflow_13.ofp_table_features.metadata_match', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='metadata_write', full_name='openflow_13.ofp_table_features.metadata_write', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='config', full_name='openflow_13.ofp_table_features.config', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_entries', full_name='openflow_13.ofp_table_features.max_entries', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='properties', full_name='openflow_13.ofp_table_features.properties', index=6,
-      number=7, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8061,
-  serialized_end=8259,
-)
-
-
-_OFP_TABLE_STATS = _descriptor.Descriptor(
-  name='ofp_table_stats',
-  full_name='openflow_13.ofp_table_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='table_id', full_name='openflow_13.ofp_table_stats.table_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='active_count', full_name='openflow_13.ofp_table_stats.active_count', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='lookup_count', full_name='openflow_13.ofp_table_stats.lookup_count', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='matched_count', full_name='openflow_13.ofp_table_stats.matched_count', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8261,
-  serialized_end=8363,
-)
-
-
-_OFP_PORT_STATS_REQUEST = _descriptor.Descriptor(
-  name='ofp_port_stats_request',
-  full_name='openflow_13.ofp_port_stats_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_port_stats_request.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8365,
-  serialized_end=8406,
-)
-
-
-_OFP_PORT_STATS = _descriptor.Descriptor(
-  name='ofp_port_stats',
-  full_name='openflow_13.ofp_port_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_port_stats.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_packets', full_name='openflow_13.ofp_port_stats.rx_packets', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_packets', full_name='openflow_13.ofp_port_stats.tx_packets', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_bytes', full_name='openflow_13.ofp_port_stats.rx_bytes', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_bytes', full_name='openflow_13.ofp_port_stats.tx_bytes', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_dropped', full_name='openflow_13.ofp_port_stats.rx_dropped', index=5,
-      number=6, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_dropped', full_name='openflow_13.ofp_port_stats.tx_dropped', index=6,
-      number=7, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_errors', full_name='openflow_13.ofp_port_stats.rx_errors', index=7,
-      number=8, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_errors', full_name='openflow_13.ofp_port_stats.tx_errors', index=8,
-      number=9, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_frame_err', full_name='openflow_13.ofp_port_stats.rx_frame_err', index=9,
-      number=10, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_over_err', full_name='openflow_13.ofp_port_stats.rx_over_err', index=10,
-      number=11, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rx_crc_err', full_name='openflow_13.ofp_port_stats.rx_crc_err', index=11,
-      number=12, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='collisions', full_name='openflow_13.ofp_port_stats.collisions', index=12,
-      number=13, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_port_stats.duration_sec', index=13,
-      number=14, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_port_stats.duration_nsec', index=14,
-      number=15, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8409,
-  serialized_end=8724,
-)
-
-
-_OFP_GROUP_STATS_REQUEST = _descriptor.Descriptor(
-  name='ofp_group_stats_request',
-  full_name='openflow_13.ofp_group_stats_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='group_id', full_name='openflow_13.ofp_group_stats_request.group_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8726,
-  serialized_end=8769,
-)
-
-
-_OFP_BUCKET_COUNTER = _descriptor.Descriptor(
-  name='ofp_bucket_counter',
-  full_name='openflow_13.ofp_bucket_counter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='packet_count', full_name='openflow_13.ofp_bucket_counter.packet_count', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_count', full_name='openflow_13.ofp_bucket_counter.byte_count', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8771,
-  serialized_end=8833,
-)
-
-
-_OFP_GROUP_STATS = _descriptor.Descriptor(
-  name='ofp_group_stats',
-  full_name='openflow_13.ofp_group_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='group_id', full_name='openflow_13.ofp_group_stats.group_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='ref_count', full_name='openflow_13.ofp_group_stats.ref_count', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_count', full_name='openflow_13.ofp_group_stats.packet_count', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_count', full_name='openflow_13.ofp_group_stats.byte_count', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_group_stats.duration_sec', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_group_stats.duration_nsec', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='bucket_stats', full_name='openflow_13.ofp_group_stats.bucket_stats', index=6,
-      number=7, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=8836,
-  serialized_end=9032,
-)
-
-
-_OFP_GROUP_DESC = _descriptor.Descriptor(
-  name='ofp_group_desc',
-  full_name='openflow_13.ofp_group_desc',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_group_desc.type', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='group_id', full_name='openflow_13.ofp_group_desc.group_id', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='buckets', full_name='openflow_13.ofp_group_desc.buckets', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9034,
-  serialized_end=9153,
-)
-
-
-_OFP_GROUP_ENTRY = _descriptor.Descriptor(
-  name='ofp_group_entry',
-  full_name='openflow_13.ofp_group_entry',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='openflow_13.ofp_group_entry.desc', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='stats', full_name='openflow_13.ofp_group_entry.stats', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9155,
-  serialized_end=9260,
-)
-
-
-_OFP_GROUP_FEATURES = _descriptor.Descriptor(
-  name='ofp_group_features',
-  full_name='openflow_13.ofp_group_features',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='types', full_name='openflow_13.ofp_group_features.types', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='capabilities', full_name='openflow_13.ofp_group_features.capabilities', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_groups', full_name='openflow_13.ofp_group_features.max_groups', index=2,
-      number=3, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='actions', full_name='openflow_13.ofp_group_features.actions', index=3,
-      number=4, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9262,
-  serialized_end=9356,
-)
-
-
-_OFP_METER_MULTIPART_REQUEST = _descriptor.Descriptor(
-  name='ofp_meter_multipart_request',
-  full_name='openflow_13.ofp_meter_multipart_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='meter_id', full_name='openflow_13.ofp_meter_multipart_request.meter_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9358,
-  serialized_end=9405,
-)
-
-
-_OFP_METER_BAND_STATS = _descriptor.Descriptor(
-  name='ofp_meter_band_stats',
-  full_name='openflow_13.ofp_meter_band_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='packet_band_count', full_name='openflow_13.ofp_meter_band_stats.packet_band_count', index=0,
-      number=1, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_band_count', full_name='openflow_13.ofp_meter_band_stats.byte_band_count', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9407,
-  serialized_end=9481,
-)
-
-
-_OFP_METER_STATS = _descriptor.Descriptor(
-  name='ofp_meter_stats',
-  full_name='openflow_13.ofp_meter_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='meter_id', full_name='openflow_13.ofp_meter_stats.meter_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flow_count', full_name='openflow_13.ofp_meter_stats.flow_count', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_in_count', full_name='openflow_13.ofp_meter_stats.packet_in_count', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='byte_in_count', full_name='openflow_13.ofp_meter_stats.byte_in_count', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_meter_stats.duration_sec', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_meter_stats.duration_nsec', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='band_stats', full_name='openflow_13.ofp_meter_stats.band_stats', index=6,
-      number=7, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9484,
-  serialized_end=9687,
-)
-
-
-_OFP_METER_CONFIG = _descriptor.Descriptor(
-  name='ofp_meter_config',
-  full_name='openflow_13.ofp_meter_config',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='flags', full_name='openflow_13.ofp_meter_config.flags', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='meter_id', full_name='openflow_13.ofp_meter_config.meter_id', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='bands', full_name='openflow_13.ofp_meter_config.bands', index=2,
-      number=3, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9689,
-  serialized_end=9791,
-)
-
-
-_OFP_METER_FEATURES = _descriptor.Descriptor(
-  name='ofp_meter_features',
-  full_name='openflow_13.ofp_meter_features',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='max_meter', full_name='openflow_13.ofp_meter_features.max_meter', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='band_types', full_name='openflow_13.ofp_meter_features.band_types', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='capabilities', full_name='openflow_13.ofp_meter_features.capabilities', index=2,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_bands', full_name='openflow_13.ofp_meter_features.max_bands', index=3,
-      number=4, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='max_color', full_name='openflow_13.ofp_meter_features.max_color', index=4,
-      number=5, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9793,
-  serialized_end=9912,
-)
-
-
-_OFP_EXPERIMENTER_MULTIPART_HEADER = _descriptor.Descriptor(
-  name='ofp_experimenter_multipart_header',
-  full_name='openflow_13.ofp_experimenter_multipart_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_experimenter_multipart_header.experimenter', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='exp_type', full_name='openflow_13.ofp_experimenter_multipart_header.exp_type', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_experimenter_multipart_header.data', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=9914,
-  serialized_end=10003,
-)
-
-
-_OFP_EXPERIMENTER_HEADER = _descriptor.Descriptor(
-  name='ofp_experimenter_header',
-  full_name='openflow_13.ofp_experimenter_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_experimenter_header.experimenter', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='exp_type', full_name='openflow_13.ofp_experimenter_header.exp_type', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_experimenter_header.data', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10005,
-  serialized_end=10084,
-)
-
-
-_OFP_QUEUE_PROP_HEADER = _descriptor.Descriptor(
-  name='ofp_queue_prop_header',
-  full_name='openflow_13.ofp_queue_prop_header',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='property', full_name='openflow_13.ofp_queue_prop_header.property', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='len', full_name='openflow_13.ofp_queue_prop_header.len', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10086,
-  serialized_end=10140,
-)
-
-
-_OFP_QUEUE_PROP_MIN_RATE = _descriptor.Descriptor(
-  name='ofp_queue_prop_min_rate',
-  full_name='openflow_13.ofp_queue_prop_min_rate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='prop_header', full_name='openflow_13.ofp_queue_prop_min_rate.prop_header', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_queue_prop_min_rate.rate', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10142,
-  serialized_end=10238,
-)
-
-
-_OFP_QUEUE_PROP_MAX_RATE = _descriptor.Descriptor(
-  name='ofp_queue_prop_max_rate',
-  full_name='openflow_13.ofp_queue_prop_max_rate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='prop_header', full_name='openflow_13.ofp_queue_prop_max_rate.prop_header', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='rate', full_name='openflow_13.ofp_queue_prop_max_rate.rate', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10240,
-  serialized_end=10336,
-)
-
-
-_OFP_QUEUE_PROP_EXPERIMENTER = _descriptor.Descriptor(
-  name='ofp_queue_prop_experimenter',
-  full_name='openflow_13.ofp_queue_prop_experimenter',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='prop_header', full_name='openflow_13.ofp_queue_prop_experimenter.prop_header', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='experimenter', full_name='openflow_13.ofp_queue_prop_experimenter.experimenter', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='data', full_name='openflow_13.ofp_queue_prop_experimenter.data', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10338,
-  serialized_end=10460,
-)
-
-
-_OFP_PACKET_QUEUE = _descriptor.Descriptor(
-  name='ofp_packet_queue',
-  full_name='openflow_13.ofp_packet_queue',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='queue_id', full_name='openflow_13.ofp_packet_queue.queue_id', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='port', full_name='openflow_13.ofp_packet_queue.port', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='properties', full_name='openflow_13.ofp_packet_queue.properties', index=2,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10462,
-  serialized_end=10568,
-)
-
-
-_OFP_QUEUE_GET_CONFIG_REQUEST = _descriptor.Descriptor(
-  name='ofp_queue_get_config_request',
-  full_name='openflow_13.ofp_queue_get_config_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port', full_name='openflow_13.ofp_queue_get_config_request.port', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10570,
-  serialized_end=10614,
-)
-
-
-_OFP_QUEUE_GET_CONFIG_REPLY = _descriptor.Descriptor(
-  name='ofp_queue_get_config_reply',
-  full_name='openflow_13.ofp_queue_get_config_reply',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port', full_name='openflow_13.ofp_queue_get_config_reply.port', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='queues', full_name='openflow_13.ofp_queue_get_config_reply.queues', index=1,
-      number=2, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10616,
-  serialized_end=10705,
-)
-
-
-_OFP_ACTION_SET_QUEUE = _descriptor.Descriptor(
-  name='ofp_action_set_queue',
-  full_name='openflow_13.ofp_action_set_queue',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='type', full_name='openflow_13.ofp_action_set_queue.type', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='queue_id', full_name='openflow_13.ofp_action_set_queue.queue_id', index=1,
-      number=3, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10707,
-  serialized_end=10761,
-)
-
-
-_OFP_QUEUE_STATS_REQUEST = _descriptor.Descriptor(
-  name='ofp_queue_stats_request',
-  full_name='openflow_13.ofp_queue_stats_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_queue_stats_request.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='queue_id', full_name='openflow_13.ofp_queue_stats_request.queue_id', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10763,
-  serialized_end=10823,
-)
-
-
-_OFP_QUEUE_STATS = _descriptor.Descriptor(
-  name='ofp_queue_stats',
-  full_name='openflow_13.ofp_queue_stats',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='port_no', full_name='openflow_13.ofp_queue_stats.port_no', index=0,
-      number=1, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='queue_id', full_name='openflow_13.ofp_queue_stats.queue_id', index=1,
-      number=2, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_bytes', full_name='openflow_13.ofp_queue_stats.tx_bytes', index=2,
-      number=3, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_packets', full_name='openflow_13.ofp_queue_stats.tx_packets', index=3,
-      number=4, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='tx_errors', full_name='openflow_13.ofp_queue_stats.tx_errors', index=4,
-      number=5, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_sec', full_name='openflow_13.ofp_queue_stats.duration_sec', index=5,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='duration_nsec', full_name='openflow_13.ofp_queue_stats.duration_nsec', index=6,
-      number=7, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10826,
-  serialized_end=10980,
-)
-
-
-_OFP_ROLE_REQUEST = _descriptor.Descriptor(
-  name='ofp_role_request',
-  full_name='openflow_13.ofp_role_request',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='role', full_name='openflow_13.ofp_role_request.role', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='generation_id', full_name='openflow_13.ofp_role_request.generation_id', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=10982,
-  serialized_end=11071,
-)
-
-
-_OFP_ASYNC_CONFIG = _descriptor.Descriptor(
-  name='ofp_async_config',
-  full_name='openflow_13.ofp_async_config',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='packet_in_mask', full_name='openflow_13.ofp_async_config.packet_in_mask', index=0,
-      number=1, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='port_status_mask', full_name='openflow_13.ofp_async_config.port_status_mask', index=1,
-      number=2, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flow_removed_mask', full_name='openflow_13.ofp_async_config.flow_removed_mask', index=2,
-      number=3, type=13, cpp_type=3, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=11073,
-  serialized_end=11168,
-)
-
-_OFP_HEADER.fields_by_name['type'].enum_type = _OFP_TYPE
-_OFP_HELLO_ELEM_HEADER.fields_by_name['type'].enum_type = _OFP_HELLO_ELEM_TYPE
-_OFP_HELLO_ELEM_HEADER.fields_by_name['versionbitmap'].message_type = _OFP_HELLO_ELEM_VERSIONBITMAP
-_OFP_HELLO_ELEM_HEADER.oneofs_by_name['element'].fields.append(
-  _OFP_HELLO_ELEM_HEADER.fields_by_name['versionbitmap'])
-_OFP_HELLO_ELEM_HEADER.fields_by_name['versionbitmap'].containing_oneof = _OFP_HELLO_ELEM_HEADER.oneofs_by_name['element']
-_OFP_HELLO.fields_by_name['elements'].message_type = _OFP_HELLO_ELEM_HEADER
-_OFP_PORT_STATUS.fields_by_name['reason'].enum_type = _OFP_PORT_REASON
-_OFP_PORT_STATUS.fields_by_name['desc'].message_type = _OFP_PORT
-_OFP_MATCH.fields_by_name['type'].enum_type = _OFP_MATCH_TYPE
-_OFP_MATCH.fields_by_name['oxm_fields'].message_type = _OFP_OXM_FIELD
-_OFP_OXM_FIELD.fields_by_name['oxm_class'].enum_type = _OFP_OXM_CLASS
-_OFP_OXM_FIELD.fields_by_name['ofb_field'].message_type = _OFP_OXM_OFB_FIELD
-_OFP_OXM_FIELD.fields_by_name['experimenter_field'].message_type = _OFP_OXM_EXPERIMENTER_FIELD
-_OFP_OXM_FIELD.oneofs_by_name['field'].fields.append(
-  _OFP_OXM_FIELD.fields_by_name['ofb_field'])
-_OFP_OXM_FIELD.fields_by_name['ofb_field'].containing_oneof = _OFP_OXM_FIELD.oneofs_by_name['field']
-_OFP_OXM_FIELD.oneofs_by_name['field'].fields.append(
-  _OFP_OXM_FIELD.fields_by_name['experimenter_field'])
-_OFP_OXM_FIELD.fields_by_name['experimenter_field'].containing_oneof = _OFP_OXM_FIELD.oneofs_by_name['field']
-_OFP_OXM_OFB_FIELD.fields_by_name['type'].enum_type = _OXM_OFB_FIELD_TYPES
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['port'])
-_OFP_OXM_OFB_FIELD.fields_by_name['port'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['physical_port'])
-_OFP_OXM_OFB_FIELD.fields_by_name['physical_port'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['table_metadata'])
-_OFP_OXM_OFB_FIELD.fields_by_name['table_metadata'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['eth_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['eth_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['eth_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['eth_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['eth_type'])
-_OFP_OXM_OFB_FIELD.fields_by_name['eth_type'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['vlan_vid'])
-_OFP_OXM_OFB_FIELD.fields_by_name['vlan_vid'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['vlan_pcp'])
-_OFP_OXM_OFB_FIELD.fields_by_name['vlan_pcp'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ip_dscp'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ip_dscp'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ip_ecn'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ip_ecn'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ip_proto'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ip_proto'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv4_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv4_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv4_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv4_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['tcp_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['tcp_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['tcp_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['tcp_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['udp_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['udp_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['udp_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['udp_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['sctp_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['sctp_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['sctp_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['sctp_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['icmpv4_type'])
-_OFP_OXM_OFB_FIELD.fields_by_name['icmpv4_type'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['icmpv4_code'])
-_OFP_OXM_OFB_FIELD.fields_by_name['icmpv4_code'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_op'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_op'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_spa'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_spa'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_tpa'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_tpa'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_sha'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_sha'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_tha'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_tha'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_src'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_src'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_dst'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_dst'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_flabel'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_flabel'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['icmpv6_type'])
-_OFP_OXM_OFB_FIELD.fields_by_name['icmpv6_type'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['icmpv6_code'])
-_OFP_OXM_OFB_FIELD.fields_by_name['icmpv6_code'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_target'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_target'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_ssl'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_ssl'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_tll'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_nd_tll'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['mpls_label'])
-_OFP_OXM_OFB_FIELD.fields_by_name['mpls_label'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['mpls_tc'])
-_OFP_OXM_OFB_FIELD.fields_by_name['mpls_tc'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['mpls_bos'])
-_OFP_OXM_OFB_FIELD.fields_by_name['mpls_bos'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['pbb_isid'])
-_OFP_OXM_OFB_FIELD.fields_by_name['pbb_isid'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['tunnel_id'])
-_OFP_OXM_OFB_FIELD.fields_by_name['tunnel_id'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['value'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_exthdr'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_exthdr'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['value']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['table_metadata_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['table_metadata_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['eth_dst_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['eth_dst_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['eth_src_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['eth_src_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['vlan_vid_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['vlan_vid_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv4_src_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv4_src_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv4_dst_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv4_dst_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_spa_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_spa_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['arp_tpa_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['arp_tpa_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_src_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_src_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_dst_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_dst_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_flabel_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_flabel_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['pbb_isid_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['pbb_isid_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['tunnel_id_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['tunnel_id_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_OXM_OFB_FIELD.oneofs_by_name['mask'].fields.append(
-  _OFP_OXM_OFB_FIELD.fields_by_name['ipv6_exthdr_mask'])
-_OFP_OXM_OFB_FIELD.fields_by_name['ipv6_exthdr_mask'].containing_oneof = _OFP_OXM_OFB_FIELD.oneofs_by_name['mask']
-_OFP_ACTION.fields_by_name['type'].enum_type = _OFP_ACTION_TYPE
-_OFP_ACTION.fields_by_name['output'].message_type = _OFP_ACTION_OUTPUT
-_OFP_ACTION.fields_by_name['mpls_ttl'].message_type = _OFP_ACTION_MPLS_TTL
-_OFP_ACTION.fields_by_name['push'].message_type = _OFP_ACTION_PUSH
-_OFP_ACTION.fields_by_name['pop_mpls'].message_type = _OFP_ACTION_POP_MPLS
-_OFP_ACTION.fields_by_name['group'].message_type = _OFP_ACTION_GROUP
-_OFP_ACTION.fields_by_name['nw_ttl'].message_type = _OFP_ACTION_NW_TTL
-_OFP_ACTION.fields_by_name['set_field'].message_type = _OFP_ACTION_SET_FIELD
-_OFP_ACTION.fields_by_name['experimenter'].message_type = _OFP_ACTION_EXPERIMENTER
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['output'])
-_OFP_ACTION.fields_by_name['output'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['mpls_ttl'])
-_OFP_ACTION.fields_by_name['mpls_ttl'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['push'])
-_OFP_ACTION.fields_by_name['push'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['pop_mpls'])
-_OFP_ACTION.fields_by_name['pop_mpls'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['group'])
-_OFP_ACTION.fields_by_name['group'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['nw_ttl'])
-_OFP_ACTION.fields_by_name['nw_ttl'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['set_field'])
-_OFP_ACTION.fields_by_name['set_field'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION.oneofs_by_name['action'].fields.append(
-  _OFP_ACTION.fields_by_name['experimenter'])
-_OFP_ACTION.fields_by_name['experimenter'].containing_oneof = _OFP_ACTION.oneofs_by_name['action']
-_OFP_ACTION_SET_FIELD.fields_by_name['field'].message_type = _OFP_OXM_FIELD
-_OFP_INSTRUCTION.fields_by_name['goto_table'].message_type = _OFP_INSTRUCTION_GOTO_TABLE
-_OFP_INSTRUCTION.fields_by_name['write_metadata'].message_type = _OFP_INSTRUCTION_WRITE_METADATA
-_OFP_INSTRUCTION.fields_by_name['actions'].message_type = _OFP_INSTRUCTION_ACTIONS
-_OFP_INSTRUCTION.fields_by_name['meter'].message_type = _OFP_INSTRUCTION_METER
-_OFP_INSTRUCTION.fields_by_name['experimenter'].message_type = _OFP_INSTRUCTION_EXPERIMENTER
-_OFP_INSTRUCTION.oneofs_by_name['data'].fields.append(
-  _OFP_INSTRUCTION.fields_by_name['goto_table'])
-_OFP_INSTRUCTION.fields_by_name['goto_table'].containing_oneof = _OFP_INSTRUCTION.oneofs_by_name['data']
-_OFP_INSTRUCTION.oneofs_by_name['data'].fields.append(
-  _OFP_INSTRUCTION.fields_by_name['write_metadata'])
-_OFP_INSTRUCTION.fields_by_name['write_metadata'].containing_oneof = _OFP_INSTRUCTION.oneofs_by_name['data']
-_OFP_INSTRUCTION.oneofs_by_name['data'].fields.append(
-  _OFP_INSTRUCTION.fields_by_name['actions'])
-_OFP_INSTRUCTION.fields_by_name['actions'].containing_oneof = _OFP_INSTRUCTION.oneofs_by_name['data']
-_OFP_INSTRUCTION.oneofs_by_name['data'].fields.append(
-  _OFP_INSTRUCTION.fields_by_name['meter'])
-_OFP_INSTRUCTION.fields_by_name['meter'].containing_oneof = _OFP_INSTRUCTION.oneofs_by_name['data']
-_OFP_INSTRUCTION.oneofs_by_name['data'].fields.append(
-  _OFP_INSTRUCTION.fields_by_name['experimenter'])
-_OFP_INSTRUCTION.fields_by_name['experimenter'].containing_oneof = _OFP_INSTRUCTION.oneofs_by_name['data']
-_OFP_INSTRUCTION_ACTIONS.fields_by_name['actions'].message_type = _OFP_ACTION
-_OFP_FLOW_MOD.fields_by_name['command'].enum_type = _OFP_FLOW_MOD_COMMAND
-_OFP_FLOW_MOD.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_FLOW_MOD.fields_by_name['instructions'].message_type = _OFP_INSTRUCTION
-_OFP_BUCKET.fields_by_name['actions'].message_type = _OFP_ACTION
-_OFP_GROUP_MOD.fields_by_name['command'].enum_type = _OFP_GROUP_MOD_COMMAND
-_OFP_GROUP_MOD.fields_by_name['type'].enum_type = _OFP_GROUP_TYPE
-_OFP_GROUP_MOD.fields_by_name['buckets'].message_type = _OFP_BUCKET
-_OFP_PACKET_OUT.fields_by_name['actions'].message_type = _OFP_ACTION
-_OFP_PACKET_IN.fields_by_name['reason'].enum_type = _OFP_PACKET_IN_REASON
-_OFP_PACKET_IN.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_FLOW_REMOVED.fields_by_name['reason'].enum_type = _OFP_FLOW_REMOVED_REASON
-_OFP_FLOW_REMOVED.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_METER_BAND_HEADER.fields_by_name['type'].enum_type = _OFP_METER_BAND_TYPE
-_OFP_METER_BAND_EXPERIMENTER.fields_by_name['type'].enum_type = _OFP_METER_BAND_TYPE
-_OFP_METER_MOD.fields_by_name['command'].enum_type = _OFP_METER_MOD_COMMAND
-_OFP_METER_MOD.fields_by_name['bands'].message_type = _OFP_METER_BAND_HEADER
-_OFP_MULTIPART_REQUEST.fields_by_name['type'].enum_type = _OFP_MULTIPART_TYPE
-_OFP_MULTIPART_REPLY.fields_by_name['type'].enum_type = _OFP_MULTIPART_TYPE
-_OFP_FLOW_STATS_REQUEST.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_FLOW_STATS.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_FLOW_STATS.fields_by_name['instructions'].message_type = _OFP_INSTRUCTION
-_OFP_AGGREGATE_STATS_REQUEST.fields_by_name['match'].message_type = _OFP_MATCH
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['type'].enum_type = _OFP_TABLE_FEATURE_PROP_TYPE
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['instructions'].message_type = _OFP_TABLE_FEATURE_PROP_INSTRUCTIONS
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['next_tables'].message_type = _OFP_TABLE_FEATURE_PROP_NEXT_TABLES
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['actions'].message_type = _OFP_TABLE_FEATURE_PROP_ACTIONS
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['oxm'].message_type = _OFP_TABLE_FEATURE_PROP_OXM
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['experimenter'].message_type = _OFP_TABLE_FEATURE_PROP_EXPERIMENTER
-_OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value'].fields.append(
-  _OFP_TABLE_FEATURE_PROPERTY.fields_by_name['instructions'])
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['instructions'].containing_oneof = _OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value']
-_OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value'].fields.append(
-  _OFP_TABLE_FEATURE_PROPERTY.fields_by_name['next_tables'])
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['next_tables'].containing_oneof = _OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value']
-_OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value'].fields.append(
-  _OFP_TABLE_FEATURE_PROPERTY.fields_by_name['actions'])
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['actions'].containing_oneof = _OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value']
-_OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value'].fields.append(
-  _OFP_TABLE_FEATURE_PROPERTY.fields_by_name['oxm'])
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['oxm'].containing_oneof = _OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value']
-_OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value'].fields.append(
-  _OFP_TABLE_FEATURE_PROPERTY.fields_by_name['experimenter'])
-_OFP_TABLE_FEATURE_PROPERTY.fields_by_name['experimenter'].containing_oneof = _OFP_TABLE_FEATURE_PROPERTY.oneofs_by_name['value']
-_OFP_TABLE_FEATURE_PROP_INSTRUCTIONS.fields_by_name['instructions'].message_type = _OFP_INSTRUCTION
-_OFP_TABLE_FEATURE_PROP_ACTIONS.fields_by_name['actions'].message_type = _OFP_ACTION
-_OFP_TABLE_FEATURES.fields_by_name['properties'].message_type = _OFP_TABLE_FEATURE_PROPERTY
-_OFP_GROUP_STATS.fields_by_name['bucket_stats'].message_type = _OFP_BUCKET_COUNTER
-_OFP_GROUP_DESC.fields_by_name['type'].enum_type = _OFP_GROUP_TYPE
-_OFP_GROUP_DESC.fields_by_name['buckets'].message_type = _OFP_BUCKET
-_OFP_GROUP_ENTRY.fields_by_name['desc'].message_type = _OFP_GROUP_DESC
-_OFP_GROUP_ENTRY.fields_by_name['stats'].message_type = _OFP_GROUP_STATS
-_OFP_METER_STATS.fields_by_name['band_stats'].message_type = _OFP_METER_BAND_STATS
-_OFP_METER_CONFIG.fields_by_name['bands'].message_type = _OFP_METER_BAND_HEADER
-_OFP_QUEUE_PROP_MIN_RATE.fields_by_name['prop_header'].message_type = _OFP_QUEUE_PROP_HEADER
-_OFP_QUEUE_PROP_MAX_RATE.fields_by_name['prop_header'].message_type = _OFP_QUEUE_PROP_HEADER
-_OFP_QUEUE_PROP_EXPERIMENTER.fields_by_name['prop_header'].message_type = _OFP_QUEUE_PROP_HEADER
-_OFP_PACKET_QUEUE.fields_by_name['properties'].message_type = _OFP_QUEUE_PROP_HEADER
-_OFP_QUEUE_GET_CONFIG_REPLY.fields_by_name['queues'].message_type = _OFP_PACKET_QUEUE
-_OFP_ROLE_REQUEST.fields_by_name['role'].enum_type = _OFP_CONTROLLER_ROLE
-DESCRIPTOR.message_types_by_name['ofp_header'] = _OFP_HEADER
-DESCRIPTOR.message_types_by_name['ofp_hello_elem_header'] = _OFP_HELLO_ELEM_HEADER
-DESCRIPTOR.message_types_by_name['ofp_hello_elem_versionbitmap'] = _OFP_HELLO_ELEM_VERSIONBITMAP
-DESCRIPTOR.message_types_by_name['ofp_hello'] = _OFP_HELLO
-DESCRIPTOR.message_types_by_name['ofp_switch_config'] = _OFP_SWITCH_CONFIG
-DESCRIPTOR.message_types_by_name['ofp_table_mod'] = _OFP_TABLE_MOD
-DESCRIPTOR.message_types_by_name['ofp_port'] = _OFP_PORT
-DESCRIPTOR.message_types_by_name['ofp_switch_features'] = _OFP_SWITCH_FEATURES
-DESCRIPTOR.message_types_by_name['ofp_port_status'] = _OFP_PORT_STATUS
-DESCRIPTOR.message_types_by_name['ofp_port_mod'] = _OFP_PORT_MOD
-DESCRIPTOR.message_types_by_name['ofp_match'] = _OFP_MATCH
-DESCRIPTOR.message_types_by_name['ofp_oxm_field'] = _OFP_OXM_FIELD
-DESCRIPTOR.message_types_by_name['ofp_oxm_ofb_field'] = _OFP_OXM_OFB_FIELD
-DESCRIPTOR.message_types_by_name['ofp_oxm_experimenter_field'] = _OFP_OXM_EXPERIMENTER_FIELD
-DESCRIPTOR.message_types_by_name['ofp_action'] = _OFP_ACTION
-DESCRIPTOR.message_types_by_name['ofp_action_output'] = _OFP_ACTION_OUTPUT
-DESCRIPTOR.message_types_by_name['ofp_action_mpls_ttl'] = _OFP_ACTION_MPLS_TTL
-DESCRIPTOR.message_types_by_name['ofp_action_push'] = _OFP_ACTION_PUSH
-DESCRIPTOR.message_types_by_name['ofp_action_pop_mpls'] = _OFP_ACTION_POP_MPLS
-DESCRIPTOR.message_types_by_name['ofp_action_group'] = _OFP_ACTION_GROUP
-DESCRIPTOR.message_types_by_name['ofp_action_nw_ttl'] = _OFP_ACTION_NW_TTL
-DESCRIPTOR.message_types_by_name['ofp_action_set_field'] = _OFP_ACTION_SET_FIELD
-DESCRIPTOR.message_types_by_name['ofp_action_experimenter'] = _OFP_ACTION_EXPERIMENTER
-DESCRIPTOR.message_types_by_name['ofp_instruction'] = _OFP_INSTRUCTION
-DESCRIPTOR.message_types_by_name['ofp_instruction_goto_table'] = _OFP_INSTRUCTION_GOTO_TABLE
-DESCRIPTOR.message_types_by_name['ofp_instruction_write_metadata'] = _OFP_INSTRUCTION_WRITE_METADATA
-DESCRIPTOR.message_types_by_name['ofp_instruction_actions'] = _OFP_INSTRUCTION_ACTIONS
-DESCRIPTOR.message_types_by_name['ofp_instruction_meter'] = _OFP_INSTRUCTION_METER
-DESCRIPTOR.message_types_by_name['ofp_instruction_experimenter'] = _OFP_INSTRUCTION_EXPERIMENTER
-DESCRIPTOR.message_types_by_name['ofp_flow_mod'] = _OFP_FLOW_MOD
-DESCRIPTOR.message_types_by_name['ofp_bucket'] = _OFP_BUCKET
-DESCRIPTOR.message_types_by_name['ofp_group_mod'] = _OFP_GROUP_MOD
-DESCRIPTOR.message_types_by_name['ofp_packet_out'] = _OFP_PACKET_OUT
-DESCRIPTOR.message_types_by_name['ofp_packet_in'] = _OFP_PACKET_IN
-DESCRIPTOR.message_types_by_name['ofp_flow_removed'] = _OFP_FLOW_REMOVED
-DESCRIPTOR.message_types_by_name['ofp_meter_band_header'] = _OFP_METER_BAND_HEADER
-DESCRIPTOR.message_types_by_name['ofp_meter_band_drop'] = _OFP_METER_BAND_DROP
-DESCRIPTOR.message_types_by_name['ofp_meter_band_dscp_remark'] = _OFP_METER_BAND_DSCP_REMARK
-DESCRIPTOR.message_types_by_name['ofp_meter_band_experimenter'] = _OFP_METER_BAND_EXPERIMENTER
-DESCRIPTOR.message_types_by_name['ofp_meter_mod'] = _OFP_METER_MOD
-DESCRIPTOR.message_types_by_name['ofp_error_msg'] = _OFP_ERROR_MSG
-DESCRIPTOR.message_types_by_name['ofp_error_experimenter_msg'] = _OFP_ERROR_EXPERIMENTER_MSG
-DESCRIPTOR.message_types_by_name['ofp_multipart_request'] = _OFP_MULTIPART_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_multipart_reply'] = _OFP_MULTIPART_REPLY
-DESCRIPTOR.message_types_by_name['ofp_desc'] = _OFP_DESC
-DESCRIPTOR.message_types_by_name['ofp_flow_stats_request'] = _OFP_FLOW_STATS_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_flow_stats'] = _OFP_FLOW_STATS
-DESCRIPTOR.message_types_by_name['ofp_aggregate_stats_request'] = _OFP_AGGREGATE_STATS_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_aggregate_stats_reply'] = _OFP_AGGREGATE_STATS_REPLY
-DESCRIPTOR.message_types_by_name['ofp_table_feature_property'] = _OFP_TABLE_FEATURE_PROPERTY
-DESCRIPTOR.message_types_by_name['ofp_table_feature_prop_instructions'] = _OFP_TABLE_FEATURE_PROP_INSTRUCTIONS
-DESCRIPTOR.message_types_by_name['ofp_table_feature_prop_next_tables'] = _OFP_TABLE_FEATURE_PROP_NEXT_TABLES
-DESCRIPTOR.message_types_by_name['ofp_table_feature_prop_actions'] = _OFP_TABLE_FEATURE_PROP_ACTIONS
-DESCRIPTOR.message_types_by_name['ofp_table_feature_prop_oxm'] = _OFP_TABLE_FEATURE_PROP_OXM
-DESCRIPTOR.message_types_by_name['ofp_table_feature_prop_experimenter'] = _OFP_TABLE_FEATURE_PROP_EXPERIMENTER
-DESCRIPTOR.message_types_by_name['ofp_table_features'] = _OFP_TABLE_FEATURES
-DESCRIPTOR.message_types_by_name['ofp_table_stats'] = _OFP_TABLE_STATS
-DESCRIPTOR.message_types_by_name['ofp_port_stats_request'] = _OFP_PORT_STATS_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_port_stats'] = _OFP_PORT_STATS
-DESCRIPTOR.message_types_by_name['ofp_group_stats_request'] = _OFP_GROUP_STATS_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_bucket_counter'] = _OFP_BUCKET_COUNTER
-DESCRIPTOR.message_types_by_name['ofp_group_stats'] = _OFP_GROUP_STATS
-DESCRIPTOR.message_types_by_name['ofp_group_desc'] = _OFP_GROUP_DESC
-DESCRIPTOR.message_types_by_name['ofp_group_entry'] = _OFP_GROUP_ENTRY
-DESCRIPTOR.message_types_by_name['ofp_group_features'] = _OFP_GROUP_FEATURES
-DESCRIPTOR.message_types_by_name['ofp_meter_multipart_request'] = _OFP_METER_MULTIPART_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_meter_band_stats'] = _OFP_METER_BAND_STATS
-DESCRIPTOR.message_types_by_name['ofp_meter_stats'] = _OFP_METER_STATS
-DESCRIPTOR.message_types_by_name['ofp_meter_config'] = _OFP_METER_CONFIG
-DESCRIPTOR.message_types_by_name['ofp_meter_features'] = _OFP_METER_FEATURES
-DESCRIPTOR.message_types_by_name['ofp_experimenter_multipart_header'] = _OFP_EXPERIMENTER_MULTIPART_HEADER
-DESCRIPTOR.message_types_by_name['ofp_experimenter_header'] = _OFP_EXPERIMENTER_HEADER
-DESCRIPTOR.message_types_by_name['ofp_queue_prop_header'] = _OFP_QUEUE_PROP_HEADER
-DESCRIPTOR.message_types_by_name['ofp_queue_prop_min_rate'] = _OFP_QUEUE_PROP_MIN_RATE
-DESCRIPTOR.message_types_by_name['ofp_queue_prop_max_rate'] = _OFP_QUEUE_PROP_MAX_RATE
-DESCRIPTOR.message_types_by_name['ofp_queue_prop_experimenter'] = _OFP_QUEUE_PROP_EXPERIMENTER
-DESCRIPTOR.message_types_by_name['ofp_packet_queue'] = _OFP_PACKET_QUEUE
-DESCRIPTOR.message_types_by_name['ofp_queue_get_config_request'] = _OFP_QUEUE_GET_CONFIG_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_queue_get_config_reply'] = _OFP_QUEUE_GET_CONFIG_REPLY
-DESCRIPTOR.message_types_by_name['ofp_action_set_queue'] = _OFP_ACTION_SET_QUEUE
-DESCRIPTOR.message_types_by_name['ofp_queue_stats_request'] = _OFP_QUEUE_STATS_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_queue_stats'] = _OFP_QUEUE_STATS
-DESCRIPTOR.message_types_by_name['ofp_role_request'] = _OFP_ROLE_REQUEST
-DESCRIPTOR.message_types_by_name['ofp_async_config'] = _OFP_ASYNC_CONFIG
-DESCRIPTOR.enum_types_by_name['ofp_port_no'] = _OFP_PORT_NO
-DESCRIPTOR.enum_types_by_name['ofp_type'] = _OFP_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_hello_elem_type'] = _OFP_HELLO_ELEM_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_config_flags'] = _OFP_CONFIG_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_table_config'] = _OFP_TABLE_CONFIG
-DESCRIPTOR.enum_types_by_name['ofp_table'] = _OFP_TABLE
-DESCRIPTOR.enum_types_by_name['ofp_capabilities'] = _OFP_CAPABILITIES
-DESCRIPTOR.enum_types_by_name['ofp_port_config'] = _OFP_PORT_CONFIG
-DESCRIPTOR.enum_types_by_name['ofp_port_state'] = _OFP_PORT_STATE
-DESCRIPTOR.enum_types_by_name['ofp_port_features'] = _OFP_PORT_FEATURES
-DESCRIPTOR.enum_types_by_name['ofp_port_reason'] = _OFP_PORT_REASON
-DESCRIPTOR.enum_types_by_name['ofp_match_type'] = _OFP_MATCH_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_oxm_class'] = _OFP_OXM_CLASS
-DESCRIPTOR.enum_types_by_name['oxm_ofb_field_types'] = _OXM_OFB_FIELD_TYPES
-DESCRIPTOR.enum_types_by_name['ofp_vlan_id'] = _OFP_VLAN_ID
-DESCRIPTOR.enum_types_by_name['ofp_ipv6exthdr_flags'] = _OFP_IPV6EXTHDR_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_action_type'] = _OFP_ACTION_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_controller_max_len'] = _OFP_CONTROLLER_MAX_LEN
-DESCRIPTOR.enum_types_by_name['ofp_instruction_type'] = _OFP_INSTRUCTION_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_flow_mod_command'] = _OFP_FLOW_MOD_COMMAND
-DESCRIPTOR.enum_types_by_name['ofp_flow_mod_flags'] = _OFP_FLOW_MOD_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_group'] = _OFP_GROUP
-DESCRIPTOR.enum_types_by_name['ofp_group_mod_command'] = _OFP_GROUP_MOD_COMMAND
-DESCRIPTOR.enum_types_by_name['ofp_group_type'] = _OFP_GROUP_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_packet_in_reason'] = _OFP_PACKET_IN_REASON
-DESCRIPTOR.enum_types_by_name['ofp_flow_removed_reason'] = _OFP_FLOW_REMOVED_REASON
-DESCRIPTOR.enum_types_by_name['ofp_meter'] = _OFP_METER
-DESCRIPTOR.enum_types_by_name['ofp_meter_band_type'] = _OFP_METER_BAND_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_meter_mod_command'] = _OFP_METER_MOD_COMMAND
-DESCRIPTOR.enum_types_by_name['ofp_meter_flags'] = _OFP_METER_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_error_type'] = _OFP_ERROR_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_hello_failed_code'] = _OFP_HELLO_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_bad_request_code'] = _OFP_BAD_REQUEST_CODE
-DESCRIPTOR.enum_types_by_name['ofp_bad_action_code'] = _OFP_BAD_ACTION_CODE
-DESCRIPTOR.enum_types_by_name['ofp_bad_instruction_code'] = _OFP_BAD_INSTRUCTION_CODE
-DESCRIPTOR.enum_types_by_name['ofp_bad_match_code'] = _OFP_BAD_MATCH_CODE
-DESCRIPTOR.enum_types_by_name['ofp_flow_mod_failed_code'] = _OFP_FLOW_MOD_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_group_mod_failed_code'] = _OFP_GROUP_MOD_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_port_mod_failed_code'] = _OFP_PORT_MOD_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_table_mod_failed_code'] = _OFP_TABLE_MOD_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_queue_op_failed_code'] = _OFP_QUEUE_OP_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_switch_config_failed_code'] = _OFP_SWITCH_CONFIG_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_role_request_failed_code'] = _OFP_ROLE_REQUEST_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_meter_mod_failed_code'] = _OFP_METER_MOD_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_table_features_failed_code'] = _OFP_TABLE_FEATURES_FAILED_CODE
-DESCRIPTOR.enum_types_by_name['ofp_multipart_type'] = _OFP_MULTIPART_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_multipart_request_flags'] = _OFP_MULTIPART_REQUEST_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_multipart_reply_flags'] = _OFP_MULTIPART_REPLY_FLAGS
-DESCRIPTOR.enum_types_by_name['ofp_table_feature_prop_type'] = _OFP_TABLE_FEATURE_PROP_TYPE
-DESCRIPTOR.enum_types_by_name['ofp_group_capabilities'] = _OFP_GROUP_CAPABILITIES
-DESCRIPTOR.enum_types_by_name['ofp_queue_properties'] = _OFP_QUEUE_PROPERTIES
-DESCRIPTOR.enum_types_by_name['ofp_controller_role'] = _OFP_CONTROLLER_ROLE
-
-ofp_header = _reflection.GeneratedProtocolMessageType('ofp_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_header)
-  ))
-_sym_db.RegisterMessage(ofp_header)
-
-ofp_hello_elem_header = _reflection.GeneratedProtocolMessageType('ofp_hello_elem_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_HELLO_ELEM_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_hello_elem_header)
-  ))
-_sym_db.RegisterMessage(ofp_hello_elem_header)
-
-ofp_hello_elem_versionbitmap = _reflection.GeneratedProtocolMessageType('ofp_hello_elem_versionbitmap', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_HELLO_ELEM_VERSIONBITMAP,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_hello_elem_versionbitmap)
-  ))
-_sym_db.RegisterMessage(ofp_hello_elem_versionbitmap)
-
-ofp_hello = _reflection.GeneratedProtocolMessageType('ofp_hello', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_HELLO,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_hello)
-  ))
-_sym_db.RegisterMessage(ofp_hello)
-
-ofp_switch_config = _reflection.GeneratedProtocolMessageType('ofp_switch_config', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_SWITCH_CONFIG,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_switch_config)
-  ))
-_sym_db.RegisterMessage(ofp_switch_config)
-
-ofp_table_mod = _reflection.GeneratedProtocolMessageType('ofp_table_mod', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_MOD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_mod)
-  ))
-_sym_db.RegisterMessage(ofp_table_mod)
-
-ofp_port = _reflection.GeneratedProtocolMessageType('ofp_port', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PORT,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_port)
-  ))
-_sym_db.RegisterMessage(ofp_port)
-
-ofp_switch_features = _reflection.GeneratedProtocolMessageType('ofp_switch_features', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_SWITCH_FEATURES,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_switch_features)
-  ))
-_sym_db.RegisterMessage(ofp_switch_features)
-
-ofp_port_status = _reflection.GeneratedProtocolMessageType('ofp_port_status', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PORT_STATUS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_port_status)
-  ))
-_sym_db.RegisterMessage(ofp_port_status)
-
-ofp_port_mod = _reflection.GeneratedProtocolMessageType('ofp_port_mod', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PORT_MOD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_port_mod)
-  ))
-_sym_db.RegisterMessage(ofp_port_mod)
-
-ofp_match = _reflection.GeneratedProtocolMessageType('ofp_match', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_MATCH,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_match)
-  ))
-_sym_db.RegisterMessage(ofp_match)
-
-ofp_oxm_field = _reflection.GeneratedProtocolMessageType('ofp_oxm_field', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_OXM_FIELD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_oxm_field)
-  ))
-_sym_db.RegisterMessage(ofp_oxm_field)
-
-ofp_oxm_ofb_field = _reflection.GeneratedProtocolMessageType('ofp_oxm_ofb_field', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_OXM_OFB_FIELD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_oxm_ofb_field)
-  ))
-_sym_db.RegisterMessage(ofp_oxm_ofb_field)
-
-ofp_oxm_experimenter_field = _reflection.GeneratedProtocolMessageType('ofp_oxm_experimenter_field', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_OXM_EXPERIMENTER_FIELD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_oxm_experimenter_field)
-  ))
-_sym_db.RegisterMessage(ofp_oxm_experimenter_field)
-
-ofp_action = _reflection.GeneratedProtocolMessageType('ofp_action', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action)
-  ))
-_sym_db.RegisterMessage(ofp_action)
-
-ofp_action_output = _reflection.GeneratedProtocolMessageType('ofp_action_output', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_OUTPUT,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_output)
-  ))
-_sym_db.RegisterMessage(ofp_action_output)
-
-ofp_action_mpls_ttl = _reflection.GeneratedProtocolMessageType('ofp_action_mpls_ttl', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_MPLS_TTL,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_mpls_ttl)
-  ))
-_sym_db.RegisterMessage(ofp_action_mpls_ttl)
-
-ofp_action_push = _reflection.GeneratedProtocolMessageType('ofp_action_push', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_PUSH,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_push)
-  ))
-_sym_db.RegisterMessage(ofp_action_push)
-
-ofp_action_pop_mpls = _reflection.GeneratedProtocolMessageType('ofp_action_pop_mpls', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_POP_MPLS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_pop_mpls)
-  ))
-_sym_db.RegisterMessage(ofp_action_pop_mpls)
-
-ofp_action_group = _reflection.GeneratedProtocolMessageType('ofp_action_group', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_GROUP,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_group)
-  ))
-_sym_db.RegisterMessage(ofp_action_group)
-
-ofp_action_nw_ttl = _reflection.GeneratedProtocolMessageType('ofp_action_nw_ttl', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_NW_TTL,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_nw_ttl)
-  ))
-_sym_db.RegisterMessage(ofp_action_nw_ttl)
-
-ofp_action_set_field = _reflection.GeneratedProtocolMessageType('ofp_action_set_field', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_SET_FIELD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_set_field)
-  ))
-_sym_db.RegisterMessage(ofp_action_set_field)
-
-ofp_action_experimenter = _reflection.GeneratedProtocolMessageType('ofp_action_experimenter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_EXPERIMENTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_experimenter)
-  ))
-_sym_db.RegisterMessage(ofp_action_experimenter)
-
-ofp_instruction = _reflection.GeneratedProtocolMessageType('ofp_instruction', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction)
-  ))
-_sym_db.RegisterMessage(ofp_instruction)
-
-ofp_instruction_goto_table = _reflection.GeneratedProtocolMessageType('ofp_instruction_goto_table', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION_GOTO_TABLE,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction_goto_table)
-  ))
-_sym_db.RegisterMessage(ofp_instruction_goto_table)
-
-ofp_instruction_write_metadata = _reflection.GeneratedProtocolMessageType('ofp_instruction_write_metadata', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION_WRITE_METADATA,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction_write_metadata)
-  ))
-_sym_db.RegisterMessage(ofp_instruction_write_metadata)
-
-ofp_instruction_actions = _reflection.GeneratedProtocolMessageType('ofp_instruction_actions', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION_ACTIONS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction_actions)
-  ))
-_sym_db.RegisterMessage(ofp_instruction_actions)
-
-ofp_instruction_meter = _reflection.GeneratedProtocolMessageType('ofp_instruction_meter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION_METER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction_meter)
-  ))
-_sym_db.RegisterMessage(ofp_instruction_meter)
-
-ofp_instruction_experimenter = _reflection.GeneratedProtocolMessageType('ofp_instruction_experimenter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_INSTRUCTION_EXPERIMENTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_instruction_experimenter)
-  ))
-_sym_db.RegisterMessage(ofp_instruction_experimenter)
-
-ofp_flow_mod = _reflection.GeneratedProtocolMessageType('ofp_flow_mod', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_FLOW_MOD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_flow_mod)
-  ))
-_sym_db.RegisterMessage(ofp_flow_mod)
-
-ofp_bucket = _reflection.GeneratedProtocolMessageType('ofp_bucket', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_BUCKET,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_bucket)
-  ))
-_sym_db.RegisterMessage(ofp_bucket)
-
-ofp_group_mod = _reflection.GeneratedProtocolMessageType('ofp_group_mod', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_MOD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_mod)
-  ))
-_sym_db.RegisterMessage(ofp_group_mod)
-
-ofp_packet_out = _reflection.GeneratedProtocolMessageType('ofp_packet_out', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PACKET_OUT,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_packet_out)
-  ))
-_sym_db.RegisterMessage(ofp_packet_out)
-
-ofp_packet_in = _reflection.GeneratedProtocolMessageType('ofp_packet_in', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PACKET_IN,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_packet_in)
-  ))
-_sym_db.RegisterMessage(ofp_packet_in)
-
-ofp_flow_removed = _reflection.GeneratedProtocolMessageType('ofp_flow_removed', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_FLOW_REMOVED,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_flow_removed)
-  ))
-_sym_db.RegisterMessage(ofp_flow_removed)
-
-ofp_meter_band_header = _reflection.GeneratedProtocolMessageType('ofp_meter_band_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_BAND_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_band_header)
-  ))
-_sym_db.RegisterMessage(ofp_meter_band_header)
-
-ofp_meter_band_drop = _reflection.GeneratedProtocolMessageType('ofp_meter_band_drop', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_BAND_DROP,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_band_drop)
-  ))
-_sym_db.RegisterMessage(ofp_meter_band_drop)
-
-ofp_meter_band_dscp_remark = _reflection.GeneratedProtocolMessageType('ofp_meter_band_dscp_remark', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_BAND_DSCP_REMARK,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_band_dscp_remark)
-  ))
-_sym_db.RegisterMessage(ofp_meter_band_dscp_remark)
-
-ofp_meter_band_experimenter = _reflection.GeneratedProtocolMessageType('ofp_meter_band_experimenter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_BAND_EXPERIMENTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_band_experimenter)
-  ))
-_sym_db.RegisterMessage(ofp_meter_band_experimenter)
-
-ofp_meter_mod = _reflection.GeneratedProtocolMessageType('ofp_meter_mod', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_MOD,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_mod)
-  ))
-_sym_db.RegisterMessage(ofp_meter_mod)
-
-ofp_error_msg = _reflection.GeneratedProtocolMessageType('ofp_error_msg', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ERROR_MSG,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_error_msg)
-  ))
-_sym_db.RegisterMessage(ofp_error_msg)
-
-ofp_error_experimenter_msg = _reflection.GeneratedProtocolMessageType('ofp_error_experimenter_msg', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ERROR_EXPERIMENTER_MSG,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_error_experimenter_msg)
-  ))
-_sym_db.RegisterMessage(ofp_error_experimenter_msg)
-
-ofp_multipart_request = _reflection.GeneratedProtocolMessageType('ofp_multipart_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_MULTIPART_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_multipart_request)
-  ))
-_sym_db.RegisterMessage(ofp_multipart_request)
-
-ofp_multipart_reply = _reflection.GeneratedProtocolMessageType('ofp_multipart_reply', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_MULTIPART_REPLY,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_multipart_reply)
-  ))
-_sym_db.RegisterMessage(ofp_multipart_reply)
-
-ofp_desc = _reflection.GeneratedProtocolMessageType('ofp_desc', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_DESC,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_desc)
-  ))
-_sym_db.RegisterMessage(ofp_desc)
-
-ofp_flow_stats_request = _reflection.GeneratedProtocolMessageType('ofp_flow_stats_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_FLOW_STATS_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_flow_stats_request)
-  ))
-_sym_db.RegisterMessage(ofp_flow_stats_request)
-
-ofp_flow_stats = _reflection.GeneratedProtocolMessageType('ofp_flow_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_FLOW_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_flow_stats)
-  ))
-_sym_db.RegisterMessage(ofp_flow_stats)
-
-ofp_aggregate_stats_request = _reflection.GeneratedProtocolMessageType('ofp_aggregate_stats_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_AGGREGATE_STATS_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_aggregate_stats_request)
-  ))
-_sym_db.RegisterMessage(ofp_aggregate_stats_request)
-
-ofp_aggregate_stats_reply = _reflection.GeneratedProtocolMessageType('ofp_aggregate_stats_reply', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_AGGREGATE_STATS_REPLY,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_aggregate_stats_reply)
-  ))
-_sym_db.RegisterMessage(ofp_aggregate_stats_reply)
-
-ofp_table_feature_property = _reflection.GeneratedProtocolMessageType('ofp_table_feature_property', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROPERTY,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_property)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_property)
-
-ofp_table_feature_prop_instructions = _reflection.GeneratedProtocolMessageType('ofp_table_feature_prop_instructions', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROP_INSTRUCTIONS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_prop_instructions)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_prop_instructions)
-
-ofp_table_feature_prop_next_tables = _reflection.GeneratedProtocolMessageType('ofp_table_feature_prop_next_tables', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROP_NEXT_TABLES,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_prop_next_tables)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_prop_next_tables)
-
-ofp_table_feature_prop_actions = _reflection.GeneratedProtocolMessageType('ofp_table_feature_prop_actions', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROP_ACTIONS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_prop_actions)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_prop_actions)
-
-ofp_table_feature_prop_oxm = _reflection.GeneratedProtocolMessageType('ofp_table_feature_prop_oxm', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROP_OXM,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_prop_oxm)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_prop_oxm)
-
-ofp_table_feature_prop_experimenter = _reflection.GeneratedProtocolMessageType('ofp_table_feature_prop_experimenter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURE_PROP_EXPERIMENTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_feature_prop_experimenter)
-  ))
-_sym_db.RegisterMessage(ofp_table_feature_prop_experimenter)
-
-ofp_table_features = _reflection.GeneratedProtocolMessageType('ofp_table_features', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_FEATURES,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_features)
-  ))
-_sym_db.RegisterMessage(ofp_table_features)
-
-ofp_table_stats = _reflection.GeneratedProtocolMessageType('ofp_table_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_TABLE_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_table_stats)
-  ))
-_sym_db.RegisterMessage(ofp_table_stats)
-
-ofp_port_stats_request = _reflection.GeneratedProtocolMessageType('ofp_port_stats_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PORT_STATS_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_port_stats_request)
-  ))
-_sym_db.RegisterMessage(ofp_port_stats_request)
-
-ofp_port_stats = _reflection.GeneratedProtocolMessageType('ofp_port_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PORT_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_port_stats)
-  ))
-_sym_db.RegisterMessage(ofp_port_stats)
-
-ofp_group_stats_request = _reflection.GeneratedProtocolMessageType('ofp_group_stats_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_STATS_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_stats_request)
-  ))
-_sym_db.RegisterMessage(ofp_group_stats_request)
-
-ofp_bucket_counter = _reflection.GeneratedProtocolMessageType('ofp_bucket_counter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_BUCKET_COUNTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_bucket_counter)
-  ))
-_sym_db.RegisterMessage(ofp_bucket_counter)
-
-ofp_group_stats = _reflection.GeneratedProtocolMessageType('ofp_group_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_stats)
-  ))
-_sym_db.RegisterMessage(ofp_group_stats)
-
-ofp_group_desc = _reflection.GeneratedProtocolMessageType('ofp_group_desc', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_DESC,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_desc)
-  ))
-_sym_db.RegisterMessage(ofp_group_desc)
-
-ofp_group_entry = _reflection.GeneratedProtocolMessageType('ofp_group_entry', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_ENTRY,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_entry)
-  ))
-_sym_db.RegisterMessage(ofp_group_entry)
-
-ofp_group_features = _reflection.GeneratedProtocolMessageType('ofp_group_features', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_GROUP_FEATURES,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_group_features)
-  ))
-_sym_db.RegisterMessage(ofp_group_features)
-
-ofp_meter_multipart_request = _reflection.GeneratedProtocolMessageType('ofp_meter_multipart_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_MULTIPART_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_multipart_request)
-  ))
-_sym_db.RegisterMessage(ofp_meter_multipart_request)
-
-ofp_meter_band_stats = _reflection.GeneratedProtocolMessageType('ofp_meter_band_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_BAND_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_band_stats)
-  ))
-_sym_db.RegisterMessage(ofp_meter_band_stats)
-
-ofp_meter_stats = _reflection.GeneratedProtocolMessageType('ofp_meter_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_stats)
-  ))
-_sym_db.RegisterMessage(ofp_meter_stats)
-
-ofp_meter_config = _reflection.GeneratedProtocolMessageType('ofp_meter_config', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_CONFIG,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_config)
-  ))
-_sym_db.RegisterMessage(ofp_meter_config)
-
-ofp_meter_features = _reflection.GeneratedProtocolMessageType('ofp_meter_features', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_METER_FEATURES,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_meter_features)
-  ))
-_sym_db.RegisterMessage(ofp_meter_features)
-
-ofp_experimenter_multipart_header = _reflection.GeneratedProtocolMessageType('ofp_experimenter_multipart_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_EXPERIMENTER_MULTIPART_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_experimenter_multipart_header)
-  ))
-_sym_db.RegisterMessage(ofp_experimenter_multipart_header)
-
-ofp_experimenter_header = _reflection.GeneratedProtocolMessageType('ofp_experimenter_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_EXPERIMENTER_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_experimenter_header)
-  ))
-_sym_db.RegisterMessage(ofp_experimenter_header)
-
-ofp_queue_prop_header = _reflection.GeneratedProtocolMessageType('ofp_queue_prop_header', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_PROP_HEADER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_prop_header)
-  ))
-_sym_db.RegisterMessage(ofp_queue_prop_header)
-
-ofp_queue_prop_min_rate = _reflection.GeneratedProtocolMessageType('ofp_queue_prop_min_rate', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_PROP_MIN_RATE,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_prop_min_rate)
-  ))
-_sym_db.RegisterMessage(ofp_queue_prop_min_rate)
-
-ofp_queue_prop_max_rate = _reflection.GeneratedProtocolMessageType('ofp_queue_prop_max_rate', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_PROP_MAX_RATE,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_prop_max_rate)
-  ))
-_sym_db.RegisterMessage(ofp_queue_prop_max_rate)
-
-ofp_queue_prop_experimenter = _reflection.GeneratedProtocolMessageType('ofp_queue_prop_experimenter', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_PROP_EXPERIMENTER,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_prop_experimenter)
-  ))
-_sym_db.RegisterMessage(ofp_queue_prop_experimenter)
-
-ofp_packet_queue = _reflection.GeneratedProtocolMessageType('ofp_packet_queue', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_PACKET_QUEUE,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_packet_queue)
-  ))
-_sym_db.RegisterMessage(ofp_packet_queue)
-
-ofp_queue_get_config_request = _reflection.GeneratedProtocolMessageType('ofp_queue_get_config_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_GET_CONFIG_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_get_config_request)
-  ))
-_sym_db.RegisterMessage(ofp_queue_get_config_request)
-
-ofp_queue_get_config_reply = _reflection.GeneratedProtocolMessageType('ofp_queue_get_config_reply', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_GET_CONFIG_REPLY,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_get_config_reply)
-  ))
-_sym_db.RegisterMessage(ofp_queue_get_config_reply)
-
-ofp_action_set_queue = _reflection.GeneratedProtocolMessageType('ofp_action_set_queue', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ACTION_SET_QUEUE,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_action_set_queue)
-  ))
-_sym_db.RegisterMessage(ofp_action_set_queue)
-
-ofp_queue_stats_request = _reflection.GeneratedProtocolMessageType('ofp_queue_stats_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_STATS_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_stats_request)
-  ))
-_sym_db.RegisterMessage(ofp_queue_stats_request)
-
-ofp_queue_stats = _reflection.GeneratedProtocolMessageType('ofp_queue_stats', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_QUEUE_STATS,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_queue_stats)
-  ))
-_sym_db.RegisterMessage(ofp_queue_stats)
-
-ofp_role_request = _reflection.GeneratedProtocolMessageType('ofp_role_request', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ROLE_REQUEST,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_role_request)
-  ))
-_sym_db.RegisterMessage(ofp_role_request)
-
-ofp_async_config = _reflection.GeneratedProtocolMessageType('ofp_async_config', (_message.Message,), dict(
-  DESCRIPTOR = _OFP_ASYNC_CONFIG,
-  __module__ = 'openflow_13_pb2'
-  # @@protoc_insertion_point(class_scope:openflow_13.ofp_async_config)
-  ))
-_sym_db.RegisterMessage(ofp_async_config)
-
-
-import grpc
-from grpc.beta import implementations as beta_implementations
-from grpc.beta import interfaces as beta_interfaces
-from grpc.framework.common import cardinality
-from grpc.framework.interfaces.face import utilities as face_utilities
-# @@protoc_insertion_point(module_scope)
diff --git a/ofagent/protos/schema_pb2.py b/ofagent/protos/schema_pb2.py
deleted file mode 100644
index 9f54c3a..0000000
--- a/ofagent/protos/schema_pb2.py
+++ /dev/null
@@ -1,251 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: schema.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='schema.proto',
-  package='schema',
-  syntax='proto3',
-  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\x1a\x1cgoogle/api/annotations.proto\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile\"\r\n\x0bNullMessage2S\n\rSchemaService\x12\x42\n\tGetSchema\x12\x13.schema.NullMessage\x1a\x0f.schema.Schemas\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/schemab\x06proto3')
-  ,
-  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-
-
-_PROTOFILE = _descriptor.Descriptor(
-  name='ProtoFile',
-  full_name='schema.ProtoFile',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='file_name', full_name='schema.ProtoFile.file_name', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='proto', full_name='schema.ProtoFile.proto', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='descriptor', full_name='schema.ProtoFile.descriptor', index=2,
-      number=3, type=12, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b(""),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=54,
-  serialized_end=119,
-)
-
-
-_SCHEMAS = _descriptor.Descriptor(
-  name='Schemas',
-  full_name='schema.Schemas',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='protos', full_name='schema.Schemas.protos', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=121,
-  serialized_end=165,
-)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='schema.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=167,
-  serialized_end=180,
-)
-
-_SCHEMAS.fields_by_name['protos'].message_type = _PROTOFILE
-DESCRIPTOR.message_types_by_name['ProtoFile'] = _PROTOFILE
-DESCRIPTOR.message_types_by_name['Schemas'] = _SCHEMAS
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
-
-ProtoFile = _reflection.GeneratedProtocolMessageType('ProtoFile', (_message.Message,), dict(
-  DESCRIPTOR = _PROTOFILE,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.ProtoFile)
-  ))
-_sym_db.RegisterMessage(ProtoFile)
-
-Schemas = _reflection.GeneratedProtocolMessageType('Schemas', (_message.Message,), dict(
-  DESCRIPTOR = _SCHEMAS,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.Schemas)
-  ))
-_sym_db.RegisterMessage(Schemas)
-
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
-
-import grpc
-from grpc.beta import implementations as beta_implementations
-from grpc.beta import interfaces as beta_interfaces
-from grpc.framework.common import cardinality
-from grpc.framework.interfaces.face import utilities as face_utilities
-
-
-class SchemaServiceStub(object):
-  """Schema services
-  """
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.GetSchema = channel.unary_unary(
-        '/schema.SchemaService/GetSchema',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=Schemas.FromString,
-        )
-
-
-class SchemaServiceServicer(object):
-  """Schema services
-  """
-
-  def GetSchema(self, request, context):
-    """Return active grpc schemas
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_SchemaServiceServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'GetSchema': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSchema,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=Schemas.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'schema.SchemaService', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaSchemaServiceServicer(object):
-  """Schema services
-  """
-  def GetSchema(self, request, context):
-    """Return active grpc schemas
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaSchemaServiceStub(object):
-  """Schema services
-  """
-  def GetSchema(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return active grpc schemas
-    """
-    raise NotImplementedError()
-  GetSchema.future = None
-
-
-def beta_create_SchemaService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.FromString,
-  }
-  response_serializers = {
-    ('schema.SchemaService', 'GetSchema'): Schemas.SerializeToString,
-  }
-  method_implementations = {
-    ('schema.SchemaService', 'GetSchema'): face_utilities.unary_unary_inline(servicer.GetSchema),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_SchemaService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.SerializeToString,
-  }
-  response_deserializers = {
-    ('schema.SchemaService', 'GetSchema'): Schemas.FromString,
-  }
-  cardinalities = {
-    'GetSchema': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'schema.SchemaService', cardinalities, options=stub_options)
-# @@protoc_insertion_point(module_scope)
diff --git a/ofagent/protos/third_party/__init__.py b/ofagent/protos/third_party/__init__.py
deleted file mode 100644
index 0608e8c..0000000
--- a/ofagent/protos/third_party/__init__.py
+++ /dev/null
@@ -1,50 +0,0 @@
-#
-# Copyright 2016 the original author or authors.
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-"""
-This helps loading http_pb2 and annotations_pb2.
-Without this, the Python importer will not be able to process the lines:
-from google.api import http_pb2 or
-from google.api import annotations_pb2
-(Without importing these, the protobuf loader will not recognize http options
-in the protobuf definitions.)
-"""
-
-from importlib import import_module
-import os
-import sys
-
-
-class GoogleApiImporter(object):
-
-    def find_module(self, full_name, path=None):
-        if full_name == 'google.api':
-            self.path = [os.path.dirname(__file__)]
-            return self
-
-    def load_module(self, name):
-        if name in sys.modules:
-            return sys.modules[name]
-        full_name = 'voltha.protos.third_party.' + name
-        import_module(full_name)
-        module = sys.modules[full_name]
-        sys.modules[name] = module
-        return module
-
-
-sys.meta_path.append(GoogleApiImporter())
-from google.api import http_pb2, annotations_pb2
-_ = http_pb2, annotations_pb2
diff --git a/ofagent/protos/third_party/google/__init__.py b/ofagent/protos/third_party/google/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/ofagent/protos/third_party/google/__init__.py
+++ /dev/null
diff --git a/ofagent/protos/third_party/google/api/__init__.py b/ofagent/protos/third_party/google/api/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/ofagent/protos/third_party/google/api/__init__.py
+++ /dev/null
diff --git a/ofagent/protos/third_party/google/api/annotations_pb2.py b/ofagent/protos/third_party/google/api/annotations_pb2.py
deleted file mode 100644
index 2121854..0000000
--- a/ofagent/protos/third_party/google/api/annotations_pb2.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: third_party/google/api/annotations.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.api import http_pb2 as google_dot_api_dot_http__pb2
-from google.protobuf import descriptor_pb2 as google_dot_protobuf_dot_descriptor__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='third_party/google/api/annotations.proto',
-  package='google.api',
-  syntax='proto3',
-  serialized_pb=_b('\n(third_party/google/api/annotations.proto\x12\ngoogle.api\x1a\x15google/api/http.proto\x1a google/protobuf/descriptor.proto:E\n\x04http\x12\x1e.google.protobuf.MethodOptions\x18\xb0\xca\xbc\" \x01(\x0b\x32\x14.google.api.HttpRuleB$\n\x0e\x63om.google.apiB\x10\x41nnotationsProtoP\x01\x62\x06proto3')
-  ,
-  dependencies=[google_dot_api_dot_http__pb2.DESCRIPTOR,google_dot_protobuf_dot_descriptor__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-HTTP_FIELD_NUMBER = 72295728
-http = _descriptor.FieldDescriptor(
-  name='http', full_name='google.api.http', index=0,
-  number=72295728, type=11, cpp_type=10, label=1,
-  has_default_value=False, default_value=None,
-  message_type=None, enum_type=None, containing_type=None,
-  is_extension=True, extension_scope=None,
-  options=None)
-
-DESCRIPTOR.extensions_by_name['http'] = http
-
-http.message_type = google_dot_api_dot_http__pb2._HTTPRULE
-google_dot_protobuf_dot_descriptor__pb2.MethodOptions.RegisterExtension(http)
-
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\016com.google.apiB\020AnnotationsProtoP\001'))
-import grpc
-from grpc.beta import implementations as beta_implementations
-from grpc.beta import interfaces as beta_interfaces
-from grpc.framework.common import cardinality
-from grpc.framework.interfaces.face import utilities as face_utilities
-# @@protoc_insertion_point(module_scope)
diff --git a/ofagent/protos/third_party/google/api/http_pb2.py b/ofagent/protos/third_party/google/api/http_pb2.py
deleted file mode 100644
index b3abb3f..0000000
--- a/ofagent/protos/third_party/google/api/http_pb2.py
+++ /dev/null
@@ -1,194 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: third_party/google/api/http.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='third_party/google/api/http.proto',
-  package='google.api',
-  syntax='proto3',
-  serialized_pb=_b('\n!third_party/google/api/http.proto\x12\ngoogle.api\"\xd8\x01\n\x08HttpRule\x12\r\n\x03get\x18\x02 \x01(\tH\x00\x12\r\n\x03put\x18\x03 \x01(\tH\x00\x12\x0e\n\x04post\x18\x04 \x01(\tH\x00\x12\x10\n\x06\x64\x65lete\x18\x05 \x01(\tH\x00\x12\x0f\n\x05patch\x18\x06 \x01(\tH\x00\x12/\n\x06\x63ustom\x18\x08 \x01(\x0b\x32\x1d.google.api.CustomHttpPatternH\x00\x12\x0c\n\x04\x62ody\x18\x07 \x01(\t\x12\x31\n\x13\x61\x64\x64itional_bindings\x18\x0b \x03(\x0b\x32\x14.google.api.HttpRuleB\t\n\x07pattern\"/\n\x11\x43ustomHttpPattern\x12\x0c\n\x04kind\x18\x01 \x01(\t\x12\x0c\n\x04path\x18\x02 \x01(\tB\x1d\n\x0e\x63om.google.apiB\tHttpProtoP\x01\x62\x06proto3')
-)
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-
-
-_HTTPRULE = _descriptor.Descriptor(
-  name='HttpRule',
-  full_name='google.api.HttpRule',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='get', full_name='google.api.HttpRule.get', index=0,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='put', full_name='google.api.HttpRule.put', index=1,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='post', full_name='google.api.HttpRule.post', index=2,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='delete', full_name='google.api.HttpRule.delete', index=3,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='patch', full_name='google.api.HttpRule.patch', index=4,
-      number=6, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='custom', full_name='google.api.HttpRule.custom', index=5,
-      number=8, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='body', full_name='google.api.HttpRule.body', index=6,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='additional_bindings', full_name='google.api.HttpRule.additional_bindings', index=7,
-      number=11, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-    _descriptor.OneofDescriptor(
-      name='pattern', full_name='google.api.HttpRule.pattern',
-      index=0, containing_type=None, fields=[]),
-  ],
-  serialized_start=50,
-  serialized_end=266,
-)
-
-
-_CUSTOMHTTPPATTERN = _descriptor.Descriptor(
-  name='CustomHttpPattern',
-  full_name='google.api.CustomHttpPattern',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='kind', full_name='google.api.CustomHttpPattern.kind', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='path', full_name='google.api.CustomHttpPattern.path', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=268,
-  serialized_end=315,
-)
-
-_HTTPRULE.fields_by_name['custom'].message_type = _CUSTOMHTTPPATTERN
-_HTTPRULE.fields_by_name['additional_bindings'].message_type = _HTTPRULE
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['get'])
-_HTTPRULE.fields_by_name['get'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['put'])
-_HTTPRULE.fields_by_name['put'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['post'])
-_HTTPRULE.fields_by_name['post'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['delete'])
-_HTTPRULE.fields_by_name['delete'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['patch'])
-_HTTPRULE.fields_by_name['patch'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-_HTTPRULE.oneofs_by_name['pattern'].fields.append(
-  _HTTPRULE.fields_by_name['custom'])
-_HTTPRULE.fields_by_name['custom'].containing_oneof = _HTTPRULE.oneofs_by_name['pattern']
-DESCRIPTOR.message_types_by_name['HttpRule'] = _HTTPRULE
-DESCRIPTOR.message_types_by_name['CustomHttpPattern'] = _CUSTOMHTTPPATTERN
-
-HttpRule = _reflection.GeneratedProtocolMessageType('HttpRule', (_message.Message,), dict(
-  DESCRIPTOR = _HTTPRULE,
-  __module__ = 'third_party.google.api.http_pb2'
-  # @@protoc_insertion_point(class_scope:google.api.HttpRule)
-  ))
-_sym_db.RegisterMessage(HttpRule)
-
-CustomHttpPattern = _reflection.GeneratedProtocolMessageType('CustomHttpPattern', (_message.Message,), dict(
-  DESCRIPTOR = _CUSTOMHTTPPATTERN,
-  __module__ = 'third_party.google.api.http_pb2'
-  # @@protoc_insertion_point(class_scope:google.api.CustomHttpPattern)
-  ))
-_sym_db.RegisterMessage(CustomHttpPattern)
-
-
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\016com.google.apiB\tHttpProtoP\001'))
-import grpc
-from grpc.beta import implementations as beta_implementations
-from grpc.beta import interfaces as beta_interfaces
-from grpc.framework.common import cardinality
-from grpc.framework.interfaces.face import utilities as face_utilities
-# @@protoc_insertion_point(module_scope)
diff --git a/ofagent/protos/voltha_pb2.py b/ofagent/protos/voltha_pb2.py
deleted file mode 100644
index 3135e84..0000000
--- a/ofagent/protos/voltha_pb2.py
+++ /dev/null
@@ -1,2073 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: voltha.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-from google.protobuf import descriptor_pb2
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-import openflow_13_pb2 as openflow__13__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='voltha.proto',
-  package='voltha',
-  syntax='proto3',
-  serialized_pb=_b('\n\x0cvoltha.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x11openflow_13.proto\"\r\n\x0bNullMessage\"v\n\x0cHealthStatus\x12/\n\x05state\x18\x01 \x01(\x0e\x32 .voltha.HealthStatus.HealthState\"5\n\x0bHealthState\x12\x0b\n\x07HEALTHY\x10\x00\x12\x0e\n\nOVERLOADED\x10\x01\x12\t\n\x05\x44YING\x10\x02\"q\n\x07\x41\x64\x64ress\x12\n\n\x02id\x18\x07 \x01(\t\x12\x0e\n\x06street\x18\x01 \x01(\t\x12\x0f\n\x07street2\x18\x02 \x01(\t\x12\x0f\n\x07street3\x18\x03 \x01(\t\x12\x0c\n\x04\x63ity\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x0b\n\x03zip\x18\x06 \x01(\r\"/\n\tAddresses\x12\"\n\taddresses\x18\x01 \x03(\x0b\x32\x0f.voltha.Address\"\x9f\x01\n\x0bMoreComplex\x12$\n\x06health\x18\x01 \x01(\x0b\x32\x14.voltha.HealthStatus\x12\x13\n\x0b\x66oo_counter\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12%\n\x08\x63hildren\x18\x04 \x03(\x0b\x32\x13.voltha.MoreComplex\x12 \n\x07\x61\x64\x64ress\x18\x05 \x01(\x0b\x32\x0f.voltha.Address\"\x10\n\x02ID\x12\n\n\x02id\x18\x01 \x01(\t\"\x18\n\nSubscriber\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x0bSubscribers\x12!\n\x05items\x18\x01 \x03(\x0b\x32\x12.voltha.Subscriber\"U\n\rLogicalDevice\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\"6\n\x0eLogicalDevices\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.voltha.LogicalDevice\"4\n\x0cLogicalPorts\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.openflow_13.ofp_port\"\x97\x01\n\x14LogicalDeviceDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\x12\x39\n\x0fswitch_features\x18\x04 \x01(\x0b\x32 .openflow_13.ofp_switch_features\"J\n\x0f\x46lowTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x08\x66low_mod\x18\x02 \x01(\x0b\x32\x19.openflow_13.ofp_flow_mod\"M\n\x10GroupTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tgroup_mod\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_group_mod\"3\n\x05\x46lows\x12*\n\x05items\x18\x01 \x03(\x0b\x32\x1b.openflow_13.ofp_flow_stats\"9\n\nFlowGroups\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.openflow_13.ofp_group_entry\"E\n\x08PacketIn\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tpacket_in\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_packet_in\"H\n\tPacketOut\x12\n\n\x02id\x18\x01 \x01(\t\x12/\n\npacket_out\x18\x02 \x01(\x0b\x32\x1b.openflow_13.ofp_packet_out2^\n\rHealthService\x12M\n\x0fGetHealthStatus\x12\x13.voltha.NullMessage\x1a\x14.voltha.HealthStatus\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/health2\xc4\t\n\x12VolthaLogicalLayer\x12Y\n\x12ListLogicalDevices\x12\x13.voltha.NullMessage\x1a\x16.voltha.LogicalDevices\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/local/devices\x12Y\n\x10GetLogicalDevice\x12\n.voltha.ID\x1a\x1c.voltha.LogicalDeviceDetails\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/local/devices/{id}\x12]\n\x16ListLogicalDevicePorts\x12\n.voltha.ID\x1a\x14.voltha.LogicalPorts\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/ports\x12\x65\n\x0fUpdateFlowTable\x12\x17.voltha.FlowTableUpdate\x1a\x13.voltha.NullMessage\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/local/devices/{id}/flows:\x01*\x12O\n\x0fListDeviceFlows\x12\n.voltha.ID\x1a\r.voltha.Flows\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/flows\x12h\n\x10UpdateGroupTable\x12\x18.voltha.GroupTableUpdate\x1a\x13.voltha.NullMessage\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/local/devices/{id}/groups:\x01*\x12Z\n\x14ListDeviceFlowGroups\x12\n.voltha.ID\x1a\x12.voltha.FlowGroups\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/local/devices/{id}/groups\x12>\n\x10StreamPacketsOut\x12\x11.voltha.PacketOut\x1a\x13.voltha.NullMessage\"\x00(\x01\x12=\n\x10ReceivePacketsIn\x12\x13.voltha.NullMessage\x1a\x10.voltha.PacketIn\"\x00\x30\x01\x12S\n\x10\x43reateSubscriber\x12\x12.voltha.Subscriber\x1a\x12.voltha.Subscriber\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/subscribers:\x01*\x12J\n\rGetSubscriber\x12\n.voltha.ID\x1a\x12.voltha.Subscriber\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/subscribers/{id}\x12X\n\x10UpdateSubscriber\x12\x12.voltha.Subscriber\x1a\x12.voltha.Subscriber\"\x1c\x82\xd3\xe4\x93\x02\x16\x32\x11/subscribers/{id}:\x01*\x12N\n\x10\x44\x65leteSubscriber\x12\n.voltha.ID\x1a\x13.voltha.NullMessage\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/subscribers/{id}\x12Q\n\x0fListSubscribers\x12\x13.voltha.NullMessage\x1a\x13.voltha.Subscribers\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/subscribers2\x85\x03\n\x0e\x45xampleService\x12H\n\rCreateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x15\x82\xd3\xe4\x93\x02\x0f\"\n/addresses:\x01*\x12\x42\n\nGetAddress\x12\n.voltha.ID\x1a\x0f.voltha.Address\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/addresses/{id}\x12M\n\rUpdateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x1a\x82\xd3\xe4\x93\x02\x14\x32\x0f/addresses/{id}:\x01*\x12I\n\rDeleteAddress\x12\n.voltha.ID\x1a\x13.voltha.NullMessage\"\x17\x82\xd3\xe4\x93\x02\x11*\x0f/addresses/{id}\x12K\n\rListAddresses\x12\x13.voltha.NullMessage\x1a\x11.voltha.Addresses\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/addresses2\xfd\x04\n\x08OpenFlow\x12<\n\x08GetHello\x12\x16.openflow_13.ofp_hello\x1a\x16.openflow_13.ofp_hello\"\x00\x12\x41\n\x0b\x45\x63hoRequest\x12\x17.openflow_13.ofp_header\x1a\x17.openflow_13.ofp_header\"\x00\x12\x63\n\x13\x45xperimenterRequest\x12$.openflow_13.ofp_experimenter_header\x1a$.openflow_13.ofp_experimenter_header\"\x00\x12P\n\x11GetSwitchFeatures\x12\x17.openflow_13.ofp_header\x1a .openflow_13.ofp_switch_features\"\x00\x12L\n\x0fGetSwitchConfig\x12\x17.openflow_13.ofp_header\x1a\x1e.openflow_13.ofp_switch_config\"\x00\x12\x46\n\tSetConfig\x12\x1e.openflow_13.ofp_switch_config\x1a\x17.openflow_13.ofp_header\"\x00\x12R\n\x17ReceivePacketInMessages\x12\x17.openflow_13.ofp_header\x1a\x1a.openflow_13.ofp_packet_in\"\x00\x30\x01\x12O\n\x15SendPacketOutMessages\x12\x1b.openflow_13.ofp_packet_out\x1a\x17.openflow_13.ofp_header\"\x00\x42<\n\x13org.opencord.volthaB\x0cVolthaProtos\xaa\x02\x16Opencord.Voltha.Volthab\x06proto3')
-  ,
-  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,openflow__13__pb2.DESCRIPTOR,])
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-
-
-_HEALTHSTATUS_HEALTHSTATE = _descriptor.EnumDescriptor(
-  name='HealthState',
-  full_name='voltha.HealthStatus.HealthState',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='HEALTHY', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OVERLOADED', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='DYING', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=153,
-  serialized_end=206,
-)
-_sym_db.RegisterEnumDescriptor(_HEALTHSTATUS_HEALTHSTATE)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='voltha.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=73,
-  serialized_end=86,
-)
-
-
-_HEALTHSTATUS = _descriptor.Descriptor(
-  name='HealthStatus',
-  full_name='voltha.HealthStatus',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='state', full_name='voltha.HealthStatus.state', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _HEALTHSTATUS_HEALTHSTATE,
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=88,
-  serialized_end=206,
-)
-
-
-_ADDRESS = _descriptor.Descriptor(
-  name='Address',
-  full_name='voltha.Address',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.Address.id', index=0,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street', full_name='voltha.Address.street', index=1,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street2', full_name='voltha.Address.street2', index=2,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street3', full_name='voltha.Address.street3', index=3,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='city', full_name='voltha.Address.city', index=4,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='voltha.Address.state', index=5,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='zip', full_name='voltha.Address.zip', index=6,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=208,
-  serialized_end=321,
-)
-
-
-_ADDRESSES = _descriptor.Descriptor(
-  name='Addresses',
-  full_name='voltha.Addresses',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='addresses', full_name='voltha.Addresses.addresses', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=323,
-  serialized_end=370,
-)
-
-
-_MORECOMPLEX = _descriptor.Descriptor(
-  name='MoreComplex',
-  full_name='voltha.MoreComplex',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='health', full_name='voltha.MoreComplex.health', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='foo_counter', full_name='voltha.MoreComplex.foo_counter', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='voltha.MoreComplex.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='children', full_name='voltha.MoreComplex.children', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='address', full_name='voltha.MoreComplex.address', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=373,
-  serialized_end=532,
-)
-
-
-_ID = _descriptor.Descriptor(
-  name='ID',
-  full_name='voltha.ID',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.ID.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=534,
-  serialized_end=550,
-)
-
-
-_SUBSCRIBER = _descriptor.Descriptor(
-  name='Subscriber',
-  full_name='voltha.Subscriber',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.Subscriber.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=552,
-  serialized_end=576,
-)
-
-
-_SUBSCRIBERS = _descriptor.Descriptor(
-  name='Subscribers',
-  full_name='voltha.Subscribers',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.Subscribers.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=578,
-  serialized_end=626,
-)
-
-
-_LOGICALDEVICE = _descriptor.Descriptor(
-  name='LogicalDevice',
-  full_name='voltha.LogicalDevice',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.LogicalDevice.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='datapath_id', full_name='voltha.LogicalDevice.datapath_id', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='voltha.LogicalDevice.desc', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=628,
-  serialized_end=713,
-)
-
-
-_LOGICALDEVICES = _descriptor.Descriptor(
-  name='LogicalDevices',
-  full_name='voltha.LogicalDevices',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.LogicalDevices.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=715,
-  serialized_end=769,
-)
-
-
-_LOGICALPORTS = _descriptor.Descriptor(
-  name='LogicalPorts',
-  full_name='voltha.LogicalPorts',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.LogicalPorts.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=771,
-  serialized_end=823,
-)
-
-
-_LOGICALDEVICEDETAILS = _descriptor.Descriptor(
-  name='LogicalDeviceDetails',
-  full_name='voltha.LogicalDeviceDetails',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.LogicalDeviceDetails.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='datapath_id', full_name='voltha.LogicalDeviceDetails.datapath_id', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='voltha.LogicalDeviceDetails.desc', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='switch_features', full_name='voltha.LogicalDeviceDetails.switch_features', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=826,
-  serialized_end=977,
-)
-
-
-_FLOWTABLEUPDATE = _descriptor.Descriptor(
-  name='FlowTableUpdate',
-  full_name='voltha.FlowTableUpdate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.FlowTableUpdate.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flow_mod', full_name='voltha.FlowTableUpdate.flow_mod', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=979,
-  serialized_end=1053,
-)
-
-
-_GROUPTABLEUPDATE = _descriptor.Descriptor(
-  name='GroupTableUpdate',
-  full_name='voltha.GroupTableUpdate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.GroupTableUpdate.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='group_mod', full_name='voltha.GroupTableUpdate.group_mod', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1055,
-  serialized_end=1132,
-)
-
-
-_FLOWS = _descriptor.Descriptor(
-  name='Flows',
-  full_name='voltha.Flows',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.Flows.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1134,
-  serialized_end=1185,
-)
-
-
-_FLOWGROUPS = _descriptor.Descriptor(
-  name='FlowGroups',
-  full_name='voltha.FlowGroups',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.FlowGroups.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1187,
-  serialized_end=1244,
-)
-
-
-_PACKETIN = _descriptor.Descriptor(
-  name='PacketIn',
-  full_name='voltha.PacketIn',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.PacketIn.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_in', full_name='voltha.PacketIn.packet_in', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1246,
-  serialized_end=1315,
-)
-
-
-_PACKETOUT = _descriptor.Descriptor(
-  name='PacketOut',
-  full_name='voltha.PacketOut',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.PacketOut.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_out', full_name='voltha.PacketOut.packet_out', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1317,
-  serialized_end=1389,
-)
-
-_HEALTHSTATUS.fields_by_name['state'].enum_type = _HEALTHSTATUS_HEALTHSTATE
-_HEALTHSTATUS_HEALTHSTATE.containing_type = _HEALTHSTATUS
-_ADDRESSES.fields_by_name['addresses'].message_type = _ADDRESS
-_MORECOMPLEX.fields_by_name['health'].message_type = _HEALTHSTATUS
-_MORECOMPLEX.fields_by_name['children'].message_type = _MORECOMPLEX
-_MORECOMPLEX.fields_by_name['address'].message_type = _ADDRESS
-_SUBSCRIBERS.fields_by_name['items'].message_type = _SUBSCRIBER
-_LOGICALDEVICE.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
-_LOGICALDEVICES.fields_by_name['items'].message_type = _LOGICALDEVICE
-_LOGICALPORTS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_PORT
-_LOGICALDEVICEDETAILS.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
-_LOGICALDEVICEDETAILS.fields_by_name['switch_features'].message_type = openflow__13__pb2._OFP_SWITCH_FEATURES
-_FLOWTABLEUPDATE.fields_by_name['flow_mod'].message_type = openflow__13__pb2._OFP_FLOW_MOD
-_GROUPTABLEUPDATE.fields_by_name['group_mod'].message_type = openflow__13__pb2._OFP_GROUP_MOD
-_FLOWS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_FLOW_STATS
-_FLOWGROUPS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_GROUP_ENTRY
-_PACKETIN.fields_by_name['packet_in'].message_type = openflow__13__pb2._OFP_PACKET_IN
-_PACKETOUT.fields_by_name['packet_out'].message_type = openflow__13__pb2._OFP_PACKET_OUT
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
-DESCRIPTOR.message_types_by_name['HealthStatus'] = _HEALTHSTATUS
-DESCRIPTOR.message_types_by_name['Address'] = _ADDRESS
-DESCRIPTOR.message_types_by_name['Addresses'] = _ADDRESSES
-DESCRIPTOR.message_types_by_name['MoreComplex'] = _MORECOMPLEX
-DESCRIPTOR.message_types_by_name['ID'] = _ID
-DESCRIPTOR.message_types_by_name['Subscriber'] = _SUBSCRIBER
-DESCRIPTOR.message_types_by_name['Subscribers'] = _SUBSCRIBERS
-DESCRIPTOR.message_types_by_name['LogicalDevice'] = _LOGICALDEVICE
-DESCRIPTOR.message_types_by_name['LogicalDevices'] = _LOGICALDEVICES
-DESCRIPTOR.message_types_by_name['LogicalPorts'] = _LOGICALPORTS
-DESCRIPTOR.message_types_by_name['LogicalDeviceDetails'] = _LOGICALDEVICEDETAILS
-DESCRIPTOR.message_types_by_name['FlowTableUpdate'] = _FLOWTABLEUPDATE
-DESCRIPTOR.message_types_by_name['GroupTableUpdate'] = _GROUPTABLEUPDATE
-DESCRIPTOR.message_types_by_name['Flows'] = _FLOWS
-DESCRIPTOR.message_types_by_name['FlowGroups'] = _FLOWGROUPS
-DESCRIPTOR.message_types_by_name['PacketIn'] = _PACKETIN
-DESCRIPTOR.message_types_by_name['PacketOut'] = _PACKETOUT
-
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
-HealthStatus = _reflection.GeneratedProtocolMessageType('HealthStatus', (_message.Message,), dict(
-  DESCRIPTOR = _HEALTHSTATUS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.HealthStatus)
-  ))
-_sym_db.RegisterMessage(HealthStatus)
-
-Address = _reflection.GeneratedProtocolMessageType('Address', (_message.Message,), dict(
-  DESCRIPTOR = _ADDRESS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Address)
-  ))
-_sym_db.RegisterMessage(Address)
-
-Addresses = _reflection.GeneratedProtocolMessageType('Addresses', (_message.Message,), dict(
-  DESCRIPTOR = _ADDRESSES,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Addresses)
-  ))
-_sym_db.RegisterMessage(Addresses)
-
-MoreComplex = _reflection.GeneratedProtocolMessageType('MoreComplex', (_message.Message,), dict(
-  DESCRIPTOR = _MORECOMPLEX,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.MoreComplex)
-  ))
-_sym_db.RegisterMessage(MoreComplex)
-
-ID = _reflection.GeneratedProtocolMessageType('ID', (_message.Message,), dict(
-  DESCRIPTOR = _ID,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.ID)
-  ))
-_sym_db.RegisterMessage(ID)
-
-Subscriber = _reflection.GeneratedProtocolMessageType('Subscriber', (_message.Message,), dict(
-  DESCRIPTOR = _SUBSCRIBER,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Subscriber)
-  ))
-_sym_db.RegisterMessage(Subscriber)
-
-Subscribers = _reflection.GeneratedProtocolMessageType('Subscribers', (_message.Message,), dict(
-  DESCRIPTOR = _SUBSCRIBERS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Subscribers)
-  ))
-_sym_db.RegisterMessage(Subscribers)
-
-LogicalDevice = _reflection.GeneratedProtocolMessageType('LogicalDevice', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDevice)
-  ))
-_sym_db.RegisterMessage(LogicalDevice)
-
-LogicalDevices = _reflection.GeneratedProtocolMessageType('LogicalDevices', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICES,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDevices)
-  ))
-_sym_db.RegisterMessage(LogicalDevices)
-
-LogicalPorts = _reflection.GeneratedProtocolMessageType('LogicalPorts', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALPORTS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalPorts)
-  ))
-_sym_db.RegisterMessage(LogicalPorts)
-
-LogicalDeviceDetails = _reflection.GeneratedProtocolMessageType('LogicalDeviceDetails', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICEDETAILS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDeviceDetails)
-  ))
-_sym_db.RegisterMessage(LogicalDeviceDetails)
-
-FlowTableUpdate = _reflection.GeneratedProtocolMessageType('FlowTableUpdate', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWTABLEUPDATE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.FlowTableUpdate)
-  ))
-_sym_db.RegisterMessage(FlowTableUpdate)
-
-GroupTableUpdate = _reflection.GeneratedProtocolMessageType('GroupTableUpdate', (_message.Message,), dict(
-  DESCRIPTOR = _GROUPTABLEUPDATE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.GroupTableUpdate)
-  ))
-_sym_db.RegisterMessage(GroupTableUpdate)
-
-Flows = _reflection.GeneratedProtocolMessageType('Flows', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Flows)
-  ))
-_sym_db.RegisterMessage(Flows)
-
-FlowGroups = _reflection.GeneratedProtocolMessageType('FlowGroups', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWGROUPS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.FlowGroups)
-  ))
-_sym_db.RegisterMessage(FlowGroups)
-
-PacketIn = _reflection.GeneratedProtocolMessageType('PacketIn', (_message.Message,), dict(
-  DESCRIPTOR = _PACKETIN,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.PacketIn)
-  ))
-_sym_db.RegisterMessage(PacketIn)
-
-PacketOut = _reflection.GeneratedProtocolMessageType('PacketOut', (_message.Message,), dict(
-  DESCRIPTOR = _PACKETOUT,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.PacketOut)
-  ))
-_sym_db.RegisterMessage(PacketOut)
-
-
-DESCRIPTOR.has_options = True
-DESCRIPTOR._options = _descriptor._ParseOptions(descriptor_pb2.FileOptions(), _b('\n\023org.opencord.volthaB\014VolthaProtos\252\002\026Opencord.Voltha.Voltha'))
-import grpc
-from grpc.beta import implementations as beta_implementations
-from grpc.beta import interfaces as beta_interfaces
-from grpc.framework.common import cardinality
-from grpc.framework.interfaces.face import utilities as face_utilities
-
-
-class HealthServiceStub(object):
-  """Health related services
-  """
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.GetHealthStatus = channel.unary_unary(
-        '/voltha.HealthService/GetHealthStatus',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=HealthStatus.FromString,
-        )
-
-
-class HealthServiceServicer(object):
-  """Health related services
-  """
-
-  def GetHealthStatus(self, request, context):
-    """Return current health status of a Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_HealthServiceServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'GetHealthStatus': grpc.unary_unary_rpc_method_handler(
-          servicer.GetHealthStatus,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=HealthStatus.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.HealthService', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaHealthServiceServicer(object):
-  """Health related services
-  """
-  def GetHealthStatus(self, request, context):
-    """Return current health status of a Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaHealthServiceStub(object):
-  """Health related services
-  """
-  def GetHealthStatus(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return current health status of a Voltha instance
-    """
-    raise NotImplementedError()
-  GetHealthStatus.future = None
-
-
-def beta_create_HealthService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): NullMessage.FromString,
-  }
-  response_serializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.HealthService', 'GetHealthStatus'): face_utilities.unary_unary_inline(servicer.GetHealthStatus),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_HealthService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): NullMessage.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.FromString,
-  }
-  cardinalities = {
-    'GetHealthStatus': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.HealthService', cardinalities, options=stub_options)
-
-
-class VolthaLogicalLayerStub(object):
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.ListLogicalDevices = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListLogicalDevices',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=LogicalDevices.FromString,
-        )
-    self.GetLogicalDevice = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/GetLogicalDevice',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=LogicalDeviceDetails.FromString,
-        )
-    self.ListLogicalDevicePorts = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListLogicalDevicePorts',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=LogicalPorts.FromString,
-        )
-    self.UpdateFlowTable = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateFlowTable',
-        request_serializer=FlowTableUpdate.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListDeviceFlows = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListDeviceFlows',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Flows.FromString,
-        )
-    self.UpdateGroupTable = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateGroupTable',
-        request_serializer=GroupTableUpdate.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListDeviceFlowGroups = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListDeviceFlowGroups',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=FlowGroups.FromString,
-        )
-    self.StreamPacketsOut = channel.stream_unary(
-        '/voltha.VolthaLogicalLayer/StreamPacketsOut',
-        request_serializer=PacketOut.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ReceivePacketsIn = channel.unary_stream(
-        '/voltha.VolthaLogicalLayer/ReceivePacketsIn',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=PacketIn.FromString,
-        )
-    self.CreateSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/CreateSubscriber',
-        request_serializer=Subscriber.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.GetSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/GetSubscriber',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.UpdateSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateSubscriber',
-        request_serializer=Subscriber.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.DeleteSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/DeleteSubscriber',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListSubscribers = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListSubscribers',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=Subscribers.FromString,
-        )
-
-
-class VolthaLogicalLayerServicer(object):
-
-  def ListLogicalDevices(self, request, context):
-    """List logical devices owned by this Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetLogicalDevice(self, request, context):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListLogicalDevicePorts(self, request, context):
-    """List ports of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateFlowTable(self, request, context):
-    """Update flow table for device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListDeviceFlows(self, request, context):
-    """List all flows of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateGroupTable(self, request, context):
-    """Update group tabel for device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListDeviceFlowGroups(self, request, context):
-    """List all flow groups of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def StreamPacketsOut(self, request_iterator, context):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ReceivePacketsIn(self, request, context):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def CreateSubscriber(self, request, context):
-    """Create a subscriber record
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSubscriber(self, request, context):
-    """Return an subscriber by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateSubscriber(self, request, context):
-    """Update an existing subscriber record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def DeleteSubscriber(self, request, context):
-    """Delete a subscriber record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListSubscribers(self, request, context):
-    """List subscribers
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_VolthaLogicalLayerServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'ListLogicalDevices': grpc.unary_unary_rpc_method_handler(
-          servicer.ListLogicalDevices,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=LogicalDevices.SerializeToString,
-      ),
-      'GetLogicalDevice': grpc.unary_unary_rpc_method_handler(
-          servicer.GetLogicalDevice,
-          request_deserializer=ID.FromString,
-          response_serializer=LogicalDeviceDetails.SerializeToString,
-      ),
-      'ListLogicalDevicePorts': grpc.unary_unary_rpc_method_handler(
-          servicer.ListLogicalDevicePorts,
-          request_deserializer=ID.FromString,
-          response_serializer=LogicalPorts.SerializeToString,
-      ),
-      'UpdateFlowTable': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateFlowTable,
-          request_deserializer=FlowTableUpdate.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListDeviceFlows': grpc.unary_unary_rpc_method_handler(
-          servicer.ListDeviceFlows,
-          request_deserializer=ID.FromString,
-          response_serializer=Flows.SerializeToString,
-      ),
-      'UpdateGroupTable': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateGroupTable,
-          request_deserializer=GroupTableUpdate.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListDeviceFlowGroups': grpc.unary_unary_rpc_method_handler(
-          servicer.ListDeviceFlowGroups,
-          request_deserializer=ID.FromString,
-          response_serializer=FlowGroups.SerializeToString,
-      ),
-      'StreamPacketsOut': grpc.stream_unary_rpc_method_handler(
-          servicer.StreamPacketsOut,
-          request_deserializer=PacketOut.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ReceivePacketsIn': grpc.unary_stream_rpc_method_handler(
-          servicer.ReceivePacketsIn,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=PacketIn.SerializeToString,
-      ),
-      'CreateSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.CreateSubscriber,
-          request_deserializer=Subscriber.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'GetSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSubscriber,
-          request_deserializer=ID.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'UpdateSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateSubscriber,
-          request_deserializer=Subscriber.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'DeleteSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.DeleteSubscriber,
-          request_deserializer=ID.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListSubscribers': grpc.unary_unary_rpc_method_handler(
-          servicer.ListSubscribers,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=Subscribers.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.VolthaLogicalLayer', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaVolthaLogicalLayerServicer(object):
-  def ListLogicalDevices(self, request, context):
-    """List logical devices owned by this Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetLogicalDevice(self, request, context):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListLogicalDevicePorts(self, request, context):
-    """List ports of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateFlowTable(self, request, context):
-    """Update flow table for device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListDeviceFlows(self, request, context):
-    """List all flows of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateGroupTable(self, request, context):
-    """Update group tabel for device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListDeviceFlowGroups(self, request, context):
-    """List all flow groups of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def StreamPacketsOut(self, request_iterator, context):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ReceivePacketsIn(self, request, context):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def CreateSubscriber(self, request, context):
-    """Create a subscriber record
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSubscriber(self, request, context):
-    """Return an subscriber by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateSubscriber(self, request, context):
-    """Update an existing subscriber record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def DeleteSubscriber(self, request, context):
-    """Delete a subscriber record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListSubscribers(self, request, context):
-    """List subscribers
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaVolthaLogicalLayerStub(object):
-  def ListLogicalDevices(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List logical devices owned by this Voltha instance
-    """
-    raise NotImplementedError()
-  ListLogicalDevices.future = None
-  def GetLogicalDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    raise NotImplementedError()
-  GetLogicalDevice.future = None
-  def ListLogicalDevicePorts(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List ports of a logical device
-    """
-    raise NotImplementedError()
-  ListLogicalDevicePorts.future = None
-  def UpdateFlowTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update flow table for device
-    """
-    raise NotImplementedError()
-  UpdateFlowTable.future = None
-  def ListDeviceFlows(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List all flows of a logical device
-    """
-    raise NotImplementedError()
-  ListDeviceFlows.future = None
-  def UpdateGroupTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update group tabel for device
-    """
-    raise NotImplementedError()
-  UpdateGroupTable.future = None
-  def ListDeviceFlowGroups(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List all flow groups of a logical device
-    """
-    raise NotImplementedError()
-  ListDeviceFlowGroups.future = None
-  def StreamPacketsOut(self, request_iterator, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    raise NotImplementedError()
-  StreamPacketsOut.future = None
-  def ReceivePacketsIn(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    raise NotImplementedError()
-  def CreateSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Create a subscriber record
-    """
-    raise NotImplementedError()
-  CreateSubscriber.future = None
-  def GetSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return an subscriber by ID
-    """
-    raise NotImplementedError()
-  GetSubscriber.future = None
-  def UpdateSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update an existing subscriber record by ID
-    """
-    raise NotImplementedError()
-  UpdateSubscriber.future = None
-  def DeleteSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Delete a subscriber record by ID
-    """
-    raise NotImplementedError()
-  DeleteSubscriber.future = None
-  def ListSubscribers(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List subscribers
-    """
-    raise NotImplementedError()
-  ListSubscribers.future = None
-
-
-def beta_create_VolthaLogicalLayer_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.FromString,
-  }
-  response_serializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): Subscribers.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): face_utilities.unary_unary_inline(servicer.CreateSubscriber),
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): face_utilities.unary_unary_inline(servicer.DeleteSubscriber),
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): face_utilities.unary_unary_inline(servicer.GetLogicalDevice),
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): face_utilities.unary_unary_inline(servicer.GetSubscriber),
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): face_utilities.unary_unary_inline(servicer.ListDeviceFlowGroups),
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): face_utilities.unary_unary_inline(servicer.ListDeviceFlows),
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): face_utilities.unary_unary_inline(servicer.ListLogicalDevicePorts),
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): face_utilities.unary_unary_inline(servicer.ListLogicalDevices),
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): face_utilities.unary_unary_inline(servicer.ListSubscribers),
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): face_utilities.unary_stream_inline(servicer.ReceivePacketsIn),
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): face_utilities.stream_unary_inline(servicer.StreamPacketsOut),
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): face_utilities.unary_unary_inline(servicer.UpdateFlowTable),
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): face_utilities.unary_unary_inline(servicer.UpdateGroupTable),
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): face_utilities.unary_unary_inline(servicer.UpdateSubscriber),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_VolthaLogicalLayer_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): Subscribers.FromString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.FromString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.FromString,
-  }
-  cardinalities = {
-    'CreateSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'DeleteSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'GetLogicalDevice': cardinality.Cardinality.UNARY_UNARY,
-    'GetSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'ListDeviceFlowGroups': cardinality.Cardinality.UNARY_UNARY,
-    'ListDeviceFlows': cardinality.Cardinality.UNARY_UNARY,
-    'ListLogicalDevicePorts': cardinality.Cardinality.UNARY_UNARY,
-    'ListLogicalDevices': cardinality.Cardinality.UNARY_UNARY,
-    'ListSubscribers': cardinality.Cardinality.UNARY_UNARY,
-    'ReceivePacketsIn': cardinality.Cardinality.UNARY_STREAM,
-    'StreamPacketsOut': cardinality.Cardinality.STREAM_UNARY,
-    'UpdateFlowTable': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateGroupTable': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateSubscriber': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.VolthaLogicalLayer', cardinalities, options=stub_options)
-
-
-class ExampleServiceStub(object):
-  """(placeholder) This is an example service
-  """
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.CreateAddress = channel.unary_unary(
-        '/voltha.ExampleService/CreateAddress',
-        request_serializer=Address.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.GetAddress = channel.unary_unary(
-        '/voltha.ExampleService/GetAddress',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.UpdateAddress = channel.unary_unary(
-        '/voltha.ExampleService/UpdateAddress',
-        request_serializer=Address.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.DeleteAddress = channel.unary_unary(
-        '/voltha.ExampleService/DeleteAddress',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListAddresses = channel.unary_unary(
-        '/voltha.ExampleService/ListAddresses',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=Addresses.FromString,
-        )
-
-
-class ExampleServiceServicer(object):
-  """(placeholder) This is an example service
-  """
-
-  def CreateAddress(self, request, context):
-    """Create an address record
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetAddress(self, request, context):
-    """Return an address by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateAddress(self, request, context):
-    """Update an existing address record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def DeleteAddress(self, request, context):
-    """Delete an address record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListAddresses(self, request, context):
-    """Return a bit more complex objects
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_ExampleServiceServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'CreateAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.CreateAddress,
-          request_deserializer=Address.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'GetAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.GetAddress,
-          request_deserializer=ID.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'UpdateAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateAddress,
-          request_deserializer=Address.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'DeleteAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.DeleteAddress,
-          request_deserializer=ID.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListAddresses': grpc.unary_unary_rpc_method_handler(
-          servicer.ListAddresses,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=Addresses.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.ExampleService', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaExampleServiceServicer(object):
-  """(placeholder) This is an example service
-  """
-  def CreateAddress(self, request, context):
-    """Create an address record
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetAddress(self, request, context):
-    """Return an address by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateAddress(self, request, context):
-    """Update an existing address record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def DeleteAddress(self, request, context):
-    """Delete an address record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListAddresses(self, request, context):
-    """Return a bit more complex objects
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaExampleServiceStub(object):
-  """(placeholder) This is an example service
-  """
-  def CreateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Create an address record
-    """
-    raise NotImplementedError()
-  CreateAddress.future = None
-  def GetAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return an address by ID
-    """
-    raise NotImplementedError()
-  GetAddress.future = None
-  def UpdateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update an existing address record by ID
-    """
-    raise NotImplementedError()
-  UpdateAddress.future = None
-  def DeleteAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Delete an address record by ID
-    """
-    raise NotImplementedError()
-  DeleteAddress.future = None
-  def ListAddresses(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return a bit more complex objects
-    """
-    raise NotImplementedError()
-  ListAddresses.future = None
-
-
-def beta_create_ExampleService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
-    ('voltha.ExampleService', 'DeleteAddress'): ID.FromString,
-    ('voltha.ExampleService', 'GetAddress'): ID.FromString,
-    ('voltha.ExampleService', 'ListAddresses'): NullMessage.FromString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
-  }
-  response_serializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'DeleteAddress'): NullMessage.SerializeToString,
-    ('voltha.ExampleService', 'GetAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'ListAddresses'): Addresses.SerializeToString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.ExampleService', 'CreateAddress'): face_utilities.unary_unary_inline(servicer.CreateAddress),
-    ('voltha.ExampleService', 'DeleteAddress'): face_utilities.unary_unary_inline(servicer.DeleteAddress),
-    ('voltha.ExampleService', 'GetAddress'): face_utilities.unary_unary_inline(servicer.GetAddress),
-    ('voltha.ExampleService', 'ListAddresses'): face_utilities.unary_unary_inline(servicer.ListAddresses),
-    ('voltha.ExampleService', 'UpdateAddress'): face_utilities.unary_unary_inline(servicer.UpdateAddress),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_ExampleService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'DeleteAddress'): ID.SerializeToString,
-    ('voltha.ExampleService', 'GetAddress'): ID.SerializeToString,
-    ('voltha.ExampleService', 'ListAddresses'): NullMessage.SerializeToString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
-    ('voltha.ExampleService', 'DeleteAddress'): NullMessage.FromString,
-    ('voltha.ExampleService', 'GetAddress'): Address.FromString,
-    ('voltha.ExampleService', 'ListAddresses'): Addresses.FromString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
-  }
-  cardinalities = {
-    'CreateAddress': cardinality.Cardinality.UNARY_UNARY,
-    'DeleteAddress': cardinality.Cardinality.UNARY_UNARY,
-    'GetAddress': cardinality.Cardinality.UNARY_UNARY,
-    'ListAddresses': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateAddress': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.ExampleService', cardinalities, options=stub_options)
-
-
-class OpenFlowStub(object):
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.GetHello = channel.unary_unary(
-        '/voltha.OpenFlow/GetHello',
-        request_serializer=openflow__13__pb2.ofp_hello.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_hello.FromString,
-        )
-    self.EchoRequest = channel.unary_unary(
-        '/voltha.OpenFlow/EchoRequest',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-    self.ExperimenterRequest = channel.unary_unary(
-        '/voltha.OpenFlow/ExperimenterRequest',
-        request_serializer=openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_experimenter_header.FromString,
-        )
-    self.GetSwitchFeatures = channel.unary_unary(
-        '/voltha.OpenFlow/GetSwitchFeatures',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_switch_features.FromString,
-        )
-    self.GetSwitchConfig = channel.unary_unary(
-        '/voltha.OpenFlow/GetSwitchConfig',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_switch_config.FromString,
-        )
-    self.SetConfig = channel.unary_unary(
-        '/voltha.OpenFlow/SetConfig',
-        request_serializer=openflow__13__pb2.ofp_switch_config.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-    self.ReceivePacketInMessages = channel.unary_stream(
-        '/voltha.OpenFlow/ReceivePacketInMessages',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_packet_in.FromString,
-        )
-    self.SendPacketOutMessages = channel.unary_unary(
-        '/voltha.OpenFlow/SendPacketOutMessages',
-        request_serializer=openflow__13__pb2.ofp_packet_out.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-
-
-class OpenFlowServicer(object):
-
-  def GetHello(self, request, context):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def EchoRequest(self, request, context):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ExperimenterRequest(self, request, context):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSwitchFeatures(self, request, context):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSwitchConfig(self, request, context):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def SetConfig(self, request, context):
-    """
-    Set Config
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ReceivePacketInMessages(self, request, context):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def SendPacketOutMessages(self, request, context):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_OpenFlowServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'GetHello': grpc.unary_unary_rpc_method_handler(
-          servicer.GetHello,
-          request_deserializer=openflow__13__pb2.ofp_hello.FromString,
-          response_serializer=openflow__13__pb2.ofp_hello.SerializeToString,
-      ),
-      'EchoRequest': grpc.unary_unary_rpc_method_handler(
-          servicer.EchoRequest,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-      'ExperimenterRequest': grpc.unary_unary_rpc_method_handler(
-          servicer.ExperimenterRequest,
-          request_deserializer=openflow__13__pb2.ofp_experimenter_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-      ),
-      'GetSwitchFeatures': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSwitchFeatures,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_switch_features.SerializeToString,
-      ),
-      'GetSwitchConfig': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSwitchConfig,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_switch_config.SerializeToString,
-      ),
-      'SetConfig': grpc.unary_unary_rpc_method_handler(
-          servicer.SetConfig,
-          request_deserializer=openflow__13__pb2.ofp_switch_config.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-      'ReceivePacketInMessages': grpc.unary_stream_rpc_method_handler(
-          servicer.ReceivePacketInMessages,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_packet_in.SerializeToString,
-      ),
-      'SendPacketOutMessages': grpc.unary_unary_rpc_method_handler(
-          servicer.SendPacketOutMessages,
-          request_deserializer=openflow__13__pb2.ofp_packet_out.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.OpenFlow', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaOpenFlowServicer(object):
-  def GetHello(self, request, context):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def EchoRequest(self, request, context):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ExperimenterRequest(self, request, context):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSwitchFeatures(self, request, context):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSwitchConfig(self, request, context):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def SetConfig(self, request, context):
-    """
-    Set Config
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ReceivePacketInMessages(self, request, context):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def SendPacketOutMessages(self, request, context):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaOpenFlowStub(object):
-  def GetHello(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetHello.future = None
-  def EchoRequest(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    raise NotImplementedError()
-  EchoRequest.future = None
-  def ExperimenterRequest(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    raise NotImplementedError()
-  ExperimenterRequest.future = None
-  def GetSwitchFeatures(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetSwitchFeatures.future = None
-  def GetSwitchConfig(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetSwitchConfig.future = None
-  def SetConfig(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Set Config
-    TODO http option
-    """
-    raise NotImplementedError()
-  SetConfig.future = None
-  def ReceivePacketInMessages(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    raise NotImplementedError()
-  def SendPacketOutMessages(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    raise NotImplementedError()
-  SendPacketOutMessages.future = None
-
-
-def beta_create_OpenFlow_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.FromString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.FromString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_packet_out.FromString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_switch_config.FromString,
-  }
-  response_serializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_switch_config.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_switch_features.SerializeToString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_packet_in.SerializeToString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_header.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.OpenFlow', 'EchoRequest'): face_utilities.unary_unary_inline(servicer.EchoRequest),
-    ('voltha.OpenFlow', 'ExperimenterRequest'): face_utilities.unary_unary_inline(servicer.ExperimenterRequest),
-    ('voltha.OpenFlow', 'GetHello'): face_utilities.unary_unary_inline(servicer.GetHello),
-    ('voltha.OpenFlow', 'GetSwitchConfig'): face_utilities.unary_unary_inline(servicer.GetSwitchConfig),
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): face_utilities.unary_unary_inline(servicer.GetSwitchFeatures),
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): face_utilities.unary_stream_inline(servicer.ReceivePacketInMessages),
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): face_utilities.unary_unary_inline(servicer.SendPacketOutMessages),
-    ('voltha.OpenFlow', 'SetConfig'): face_utilities.unary_unary_inline(servicer.SetConfig),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_OpenFlow_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_packet_out.SerializeToString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_switch_config.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.FromString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.FromString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_switch_config.FromString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_switch_features.FromString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_packet_in.FromString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_header.FromString,
-  }
-  cardinalities = {
-    'EchoRequest': cardinality.Cardinality.UNARY_UNARY,
-    'ExperimenterRequest': cardinality.Cardinality.UNARY_UNARY,
-    'GetHello': cardinality.Cardinality.UNARY_UNARY,
-    'GetSwitchConfig': cardinality.Cardinality.UNARY_UNARY,
-    'GetSwitchFeatures': cardinality.Cardinality.UNARY_UNARY,
-    'ReceivePacketInMessages': cardinality.Cardinality.UNARY_STREAM,
-    'SendPacketOutMessages': cardinality.Cardinality.UNARY_UNARY,
-    'SetConfig': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.OpenFlow', cardinalities, options=stub_options)
-# @@protoc_insertion_point(module_scope)
diff --git a/voltha/adapters/interface.py b/voltha/adapters/interface.py
new file mode 100644
index 0000000..e28b59c
--- /dev/null
+++ b/voltha/adapters/interface.py
@@ -0,0 +1,99 @@
+#
+# Copyright 2016 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""
+Interface definition for Voltha Adapters
+"""
+from zope.interface import Interface
+
+
+class IAdapterInterface(Interface):
+    """
+    A Voltha adapter
+    """
+
+    def start():
+        """
+        Called once after adapter instance is laoded. Can be used to async
+        initialization.
+        :return: (None or Deferred)
+        """
+
+    def stop():
+        """
+        Called once before adapter is unloaded. It can be used to perform
+        any cleanup after the adapter.
+        :return: (None or Deferred)
+        """
+
+    def adapter_descriptor():
+        """
+        Return the adapter descriptor object for this adapter.
+        :return: voltha.Adapter grpc object (see voltha/protos/adapter.proto),
+        with adapter-specific information and config extensions.
+        """
+
+    def device_types():
+        """
+        Return list of device types supported by the adapter.
+        :return: voltha.DeviceTypes protobuf object, with optional type
+        specific extensions.
+        """
+
+    def health():
+        """
+        Return a 3-state health status using the voltha.HealthStatus message.
+        :return: Deferred or direct return with voltha.HealthStatus message
+        """
+
+    def change_master_state(master):
+        """
+        Called to indicate if plugin shall assume or lose master role. The
+        master role can be used to perform functions that must be performed
+        from a single point in the cluster. In single-node deployments of
+        Voltha, the plugins are always in master role.
+        :param master: (bool) True to indicate the mastership needs to be
+         assumed; False to indicate that mastership needs to be abandoned.
+        :return: (Deferred) which is fired by the adapter when mastership is
+         assumed/dropped, respectively.
+        """
+
+    def adopt_device(device):
+        """
+        Make sure the adapter looks after given device. Called when a device
+        is provisioned top-down and needs to be activated by the adapter.
+        :param device: A voltha.Device object, with possible device-type
+        specific extensions. Such extensions shall be described as part of
+        the device type specification returned by device_types().
+        :return: (Deferred) Shall be fired to acknowledge device ownership.
+        """
+
+    def abandon_device(device):
+        """
+        Make sur ethe adapter no longer looks after device. This is called
+        if device ownership is taken over by another Voltha instance.
+        :param device: A Voltha.Device object.
+        :return: (Deferred) Shall be fired to acknowledge abandonment.
+        """
+
+    def deactivate_device(device):
+        """
+        Called if the device is to be deactivate based on a NBI call.
+        :return: (Deferred) Shall be fired to acknowledge deactivation.
+        """
+
+    # TODO work in progress
+    # ...
diff --git a/voltha/adapters/loader.py b/voltha/adapters/loader.py
new file mode 100644
index 0000000..2222f62
--- /dev/null
+++ b/voltha/adapters/loader.py
@@ -0,0 +1,103 @@
+#
+# Copyright 2016 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""
+Loader to load each adapter.
+In this initial simple implementation we scan all subdirs in this directory,
+look for a python module with the same name as the subdir, and if module
+has a class that implements the IAdapterInterface, instantiate class and
+add it to plugins.
+"""
+import os
+
+import structlog
+from twisted.internet.defer import inlineCallbacks, returnValue
+from zope.interface.verify import verifyClass
+
+from voltha.adapters.interface import IAdapterInterface
+from voltha.northbound.grpc.grpc_server import get_nbi_server
+from voltha.protos.adapter_pb2 import add_AdapterServiceServicer_to_server, \
+    AdapterServiceServicer, Adapters
+
+log = structlog.get_logger()
+
+
+mydir = os.path.abspath(os.path.dirname(__file__))
+
+
+class AdapterLoader(AdapterServiceServicer):
+
+    def __init__(self, config):
+        self.config = config
+        self.adapters = {}  # adapter-name -> adapter instance
+        get_nbi_server().register(add_AdapterServiceServicer_to_server, self)
+
+    @inlineCallbacks
+    def start(self):
+        log.debug('starting')
+        for adapter_name, adapter_class in self.find_adapters():
+            config = self.load_adapter_config(adapter_name)
+            adapter = adapter_class(config)
+            yield adapter.start()
+            self.adapters[adapter_name] = adapter
+        log.info('started')
+        returnValue(self)
+
+    @inlineCallbacks
+    def stop(self):
+        log.debug('stopping')
+        for adapter in self.adapters.values():
+            yield adapter.stop()
+        self.adapters = {}
+        log.info('stopped')
+
+    def find_adapters(self):
+        subdirs = os.walk(mydir).next()[1]
+        for subdir in subdirs:
+            adapter_name = subdir
+            py_file = os.path.join(mydir, subdir, subdir + '.py')
+            if os.path.isfile(py_file):
+                try:
+                    package_name = __package__ + '.' + subdir
+                    pkg = __import__(package_name, None, None, [adapter_name])
+                    module = getattr(pkg, adapter_name)
+                except ImportError, e:
+                    log.warn('cannot-load', file=py_file, e=e)
+                    continue
+
+                for attr_name in dir(module):
+                    cls = getattr(module, attr_name)
+                    if isinstance(cls, type) and \
+                            IAdapterInterface.implementedBy(cls):
+                        verifyClass(IAdapterInterface, cls)
+                        yield adapter_name, cls
+
+
+    def load_adapter_config(self, adapter_name):
+        """
+        Opportunistically load persisted adapter configuration
+        :param adapter_name: name of adapter
+        :return: AdapterConfig
+        """
+        # TODO
+
+    # gRPC service method implementations. BE CAREFUL; THESE ARE CALLED ON
+    # the gRPC threadpool threads.
+
+    def ListAdapters(self, request, context):
+        log.info('list-adapters', request=request)
+        items = [a.adapter_descriptor() for a in self.adapters.itervalues()]
+        return Adapters(items=items)
diff --git a/voltha/adapters/mock/README.md b/voltha/adapters/maple/README.md
similarity index 100%
rename from voltha/adapters/mock/README.md
rename to voltha/adapters/maple/README.md
diff --git a/voltha/adapters/tibit/__init__.py b/voltha/adapters/maple/__init__.py
similarity index 100%
copy from voltha/adapters/tibit/__init__.py
copy to voltha/adapters/maple/__init__.py
diff --git a/voltha/adapters/tibit/__init__.py b/voltha/adapters/maple/maple.py
similarity index 100%
copy from voltha/adapters/tibit/__init__.py
copy to voltha/adapters/maple/maple.py
diff --git a/voltha/adapters/broadcom/README.md b/voltha/adapters/simulated/README.md
similarity index 100%
rename from voltha/adapters/broadcom/README.md
rename to voltha/adapters/simulated/README.md
diff --git a/voltha/adapters/tibit/__init__.py b/voltha/adapters/simulated/__init__.py
similarity index 100%
copy from voltha/adapters/tibit/__init__.py
copy to voltha/adapters/simulated/__init__.py
diff --git a/voltha/adapters/simulated/simulated.py b/voltha/adapters/simulated/simulated.py
new file mode 100644
index 0000000..aa71da1
--- /dev/null
+++ b/voltha/adapters/simulated/simulated.py
@@ -0,0 +1,72 @@
+#
+# Copyright 2016 the original author or authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+"""
+Mock device adapter for testing.
+"""
+import structlog
+from zope.interface import implementer
+
+from voltha.adapters.interface import IAdapterInterface
+from voltha.protos.adapter_pb2 import Adapter, DeviceTypes, AdapterConfig
+from voltha.protos.health_pb2 import HealthStatus
+
+log = structlog.get_logger()
+
+
+@implementer(IAdapterInterface)
+class SimulatedAdapter(object):
+
+    def __init__(self, config):
+        self.config = config
+        self.descriptor = Adapter(
+            id='simulated',
+            config=AdapterConfig()
+            # TODO
+        )
+
+    def start(self):
+        log.debug('starting')
+        # pass
+        log.info('started')
+
+    def stop(self):
+        log.debug('stopping')
+        log.info('stopped')
+
+    def adapter_descriptor(self):
+        return self.descriptor
+
+    def device_types(self):
+        return DeviceTypes(
+            items=[]  # TODO
+        )
+
+    def health(self):
+        return HealthStatus(state=HealthStatus.HealthState.HEALTHY)
+
+    def change_master_state(self, master):
+        raise NotImplementedError()
+
+    def adopt_device(self, device):
+        raise NotImplementedError()
+
+    def abandon_device(self, device):
+        raise NotImplementedError(0
+                                  )
+    def deactivate_device(self, device):
+        raise NotImplementedError()
+
diff --git a/voltha/adapters/tibit/EOAM.py b/voltha/adapters/tibit_olt/EOAM.py
similarity index 100%
rename from voltha/adapters/tibit/EOAM.py
rename to voltha/adapters/tibit_olt/EOAM.py
diff --git a/voltha/adapters/tibit/EOAM_TLV.py b/voltha/adapters/tibit_olt/EOAM_TLV.py
similarity index 100%
rename from voltha/adapters/tibit/EOAM_TLV.py
rename to voltha/adapters/tibit_olt/EOAM_TLV.py
diff --git a/voltha/adapters/tibit/README.md b/voltha/adapters/tibit_olt/README.md
similarity index 100%
rename from voltha/adapters/tibit/README.md
rename to voltha/adapters/tibit_olt/README.md
diff --git a/voltha/adapters/tibit/__init__.py b/voltha/adapters/tibit_olt/__init__.py
similarity index 100%
rename from voltha/adapters/tibit/__init__.py
rename to voltha/adapters/tibit_olt/__init__.py
diff --git a/voltha/adapters/tibit/__init__.py b/voltha/adapters/tibit_olt/tibit_olt.py
similarity index 100%
copy from voltha/adapters/tibit/__init__.py
copy to voltha/adapters/tibit_olt/tibit_olt.py
diff --git a/voltha/main.py b/voltha/main.py
index c4ed67b..f28cdbe 100755
--- a/voltha/main.py
+++ b/voltha/main.py
@@ -28,6 +28,7 @@
 from common.utils.dockerhelpers import get_my_containers_name
 from common.utils.nethelpers import get_my_primary_interface, \
     get_my_primary_local_ipv4
+from voltha.adapters.loader import AdapterLoader
 from voltha.coordinator import Coordinator
 from voltha.northbound.grpc.grpc_server import VolthaGrpcServer
 from voltha.northbound.kafka.kafka_proxy import KafkaProxy, get_kafka_proxy
@@ -217,6 +218,7 @@
         self.coordinator = None
         self.grpc_server = None
         self.kafka_proxy = None
+        self.adapter_loader = None
 
         if not args.no_banner:
             print_banner(self.log)
@@ -230,9 +232,10 @@
     def start(self):
         self.start_reactor()  # will not return except Keyboard interrupt
 
+    @inlineCallbacks
     def startup_components(self):
         self.log.info('starting-internal-components')
-        self.coordinator = Coordinator(
+        self.coordinator = yield Coordinator(
             internal_host_address=self.args.internal_host_address,
             external_host_address=self.args.external_host_address,
             rest_port=self.args.rest_port,
@@ -241,10 +244,14 @@
             consul=self.args.consul).start()
         init_rest_service(self.args.rest_port)
 
-        self.grpc_server = VolthaGrpcServer(self.args.grpc_port).start()
+        self.grpc_server = yield VolthaGrpcServer(self.args.grpc_port).start()
 
         # initialize kafka proxy singleton
-        self.kafka_proxy = KafkaProxy(self.args.consul, self.args.kafka)
+        self.kafka_proxy = yield KafkaProxy(self.args.consul, self.args.kafka)
+
+        # adapter loader
+        self.adapter_loader = yield AdapterLoader(
+            config=self.config.get('adapter_loader', {})).start()
 
         self.log.info('started-internal-services')
 
@@ -252,6 +259,8 @@
     def shutdown_components(self):
         """Execute before the reactor is shut down"""
         self.log.info('exiting-on-keyboard-interrupt')
+        if self.adapter_loader is not None:
+            yield self.adapter_loader.stop()
         if self.coordinator is not None:
             yield self.coordinator.stop()
         if self.grpc_server is not None:
diff --git a/voltha/northbound/grpc/grpc_client.py b/voltha/northbound/grpc/grpc_client.py
index a9d2d55..b182620 100644
--- a/voltha/northbound/grpc/grpc_client.py
+++ b/voltha/northbound/grpc/grpc_client.py
@@ -20,6 +20,7 @@
 
 from voltha.protos import schema_pb2
 from voltha.protos import voltha_pb2
+from google.protobuf.empty_pb2 import Empty
 
 
 def run():
@@ -28,7 +29,7 @@
 
     # Test fetch the schema
     stub = schema_pb2.SchemaServiceStub(channel)
-    res = stub.GetSchema(schema_pb2.NullMessage())
+    res = stub.GetSchema(Empty())
     print '\nSchema:\n'
     for key in res.protos:
         print '%s %s file begins %s\n' % (30 * '~', key, (35 - len(key)) * '~')
@@ -39,12 +40,12 @@
 
     # Ping health state as an example
     stub = voltha_pb2.HealthServiceStub(channel)
-    res = stub.GetHealthStatus(voltha_pb2.NullMessage())
+    res = stub.GetHealthStatus(Empty())
     print '\nHealth state:', res.state
 
     # Try another API
     stub = voltha_pb2.ExampleServiceStub(channel)
-    res = stub.ListAddresses(voltha_pb2.NullMessage())
+    res = stub.ListAddresses(Empty())
     print '\nExample objects returned:\n', res.addresses
 
 if __name__ == '__main__':
diff --git a/voltha/northbound/grpc/grpc_server.py b/voltha/northbound/grpc/grpc_server.py
index 9c0417f..04eda7b 100644
--- a/voltha/northbound/grpc/grpc_server.py
+++ b/voltha/northbound/grpc/grpc_server.py
@@ -28,10 +28,17 @@
 from common.utils.grpc_utils import twisted_async
 from voltha.core.device_model import DeviceModel
 from voltha.protos import voltha_pb2, schema_pb2
+from google.protobuf.empty_pb2 import Empty
+
 
 log = get_logger()
 
 
+_nbi_server = None  # this will become the default server instance
+
+def get_nbi_server(): return _nbi_server
+
+
 class SchemaService(schema_pb2.SchemaServiceServicer):
 
     def __init__(self, thread_pool):
@@ -93,7 +100,7 @@
         """
         log.info('get-health-status', request=request)
         res = voltha_pb2.HealthStatus(
-            state=voltha_pb2.HealthStatus.OVERLOADED  # HEALTHY
+            state=voltha_pb2.HealthStatus.HEALTHY
         )
         return res
 
@@ -136,7 +143,7 @@
     def DeleteAddress(self, request, context):
         log.info('delete-address', request=request)
         del self.db[request.id]
-        return voltha_pb2.NullMessage()
+        return Empty()
 
     def UpdateAddress(self, request, context):
         log.info('update-address', request=request)
@@ -188,7 +195,7 @@
     def UpdateFlowTable(self, request, context):
         device_model = self.devices_map[request.id]
         device_model.update_flow_table(request.flow_mod)
-        return voltha_pb2.NullMessage()
+        return Empty()
 
     @twisted_async
     def ListDeviceFlows(self, request, context):
@@ -200,7 +207,7 @@
     def UpdateGroupTable(self, request, context):
         device_model = self.devices_map[request.id]
         device_model.update_group_table(request.group_mod)
-        return voltha_pb2.NullMessage()
+        return Empty()
 
     @twisted_async
     def ListDeviceFlowGroups(self, request, context):
@@ -218,7 +225,7 @@
         for request in request_iterator:
             forward_packet_out(packet_out=request)
 
-        return voltha_pb2.NullMessage()
+        return Empty()
 
     def ReceivePacketsIn(self, request, context):
         while 1:
@@ -234,12 +241,19 @@
 class VolthaGrpcServer(object):
 
     def __init__(self, port=50055):
+        self._register_singleton()
         self.port = port
         log.info('init-grpc-server', port=self.port)
         self.thread_pool = futures.ThreadPoolExecutor(max_workers=10)
         self.server = grpc.server(self.thread_pool)
         self.services = []
 
+    def _register_singleton(self):
+        global _nbi_server
+        if _nbi_server is not None:
+            raise RuntimeError('cannot-run-two-servers')
+        _nbi_server = self
+
     def start(self):
         log.debug('starting')
 
@@ -251,8 +265,7 @@
             (voltha_pb2.add_VolthaLogicalLayerServicer_to_server, VolthaLogicalLayer)
         ):
             service = service_class(self.thread_pool)
-            self.services.append(service)
-            activator_func(service, self.server)
+            self.register(activator_func, service)
 
         # open port
         self.server.add_insecure_port('[::]:%s' % self.port)
@@ -270,6 +283,17 @@
         self.server.stop(grace)
         log.debug('stopped')
 
+    def register(self, activator_func, service):
+        """
+        Allow late registration of gRPC servicers
+        :param activator_func: The gRPC "add_XYZServicer_to_server method
+        autogenerated by protoc.
+        :param service: The object implementing the service.
+        :return: None
+        """
+        self.services.append(service)
+        activator_func(service, self.server)
+
 
 # This is to allow running the GRPC server in stand-alone mode
 
diff --git a/voltha/protos/adapter.proto b/voltha/protos/adapter.proto
new file mode 100644
index 0000000..5c53f76
--- /dev/null
+++ b/voltha/protos/adapter.proto
@@ -0,0 +1,101 @@
+syntax = "proto3";
+
+package voltha;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/any.proto";
+import "common.proto";
+
+
+message AdapterConfig {
+    // Common adapter config attributes here
+
+    google.protobuf.Any additional_config = 64;
+
+}
+
+// Adapter (software plugin)
+message Adapter {
+
+    // Unique name of adapter, matching the python packate name under
+    // voltha/adapters.
+    string id = 1;
+
+    // TODO
+    // ...
+
+    // Adapter configuration
+    AdapterConfig config = 16;
+
+    // Custom descriptors and custom configuration
+    google.protobuf.Any additional_description = 64;
+
+}
+
+message Adapters {
+    repeated Adapter items = 1;
+}
+
+// A Device Type
+message DeviceType {
+
+    // Unique name for the device type
+    string id = 1;
+
+    // Name of the adapter that handles device type
+    string adapter = 2;
+
+    // TODO
+    // ...
+
+}
+
+// A plurality of device types
+message DeviceTypes {
+    repeated DeviceType items = 1;
+}
+
+// A Physical Device instance
+message Device {
+
+    // Voltha's device identifier
+    string id = 1;
+
+    // Device type, refers to one of the registered device types
+    string type = 2;
+
+    // Is this device a root device. Each logical switch has one root
+    // device that is associated with the logical flow switch.
+    bool root = 3;
+
+    // Parent device id, in the device tree
+    string parent_id = 4;
+
+    // Vendor, version, serial number, etc.
+    string vendor = 5;
+    string model = 6;
+    string hardware_version = 7;
+    string firmware_version = 8;
+    string software_version = 9;
+    string serial_number = 10;
+
+    // Addapter that takes care of device
+    string adapter = 11;
+
+    // TODO additional common attribute here
+    // ...
+
+    // Device type specific attributes
+    google.protobuf.Any custom = 64;
+
+}
+
+service AdapterService {
+
+    rpc ListAdapters(google.protobuf.Empty) returns(Adapters) {
+        option (google.api.http) = {
+            get: "/local/adapters"
+        };
+    }
+}
diff --git a/voltha/protos/adapter_pb2.py b/voltha/protos/adapter_pb2.py
new file mode 100644
index 0000000..fe871c1
--- /dev/null
+++ b/voltha/protos/adapter_pb2.py
@@ -0,0 +1,453 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: adapter.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+from google.protobuf import any_pb2 as google_dot_protobuf_dot_any__pb2
+import common_pb2 as common__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='adapter.proto',
+  package='voltha',
+  syntax='proto3',
+  serialized_pb=_b('\n\radapter.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x19google/protobuf/any.proto\x1a\x0c\x63ommon.proto\"@\n\rAdapterConfig\x12/\n\x11\x61\x64\x64itional_config\x18@ \x01(\x0b\x32\x14.google.protobuf.Any\"r\n\x07\x41\x64\x61pter\x12\n\n\x02id\x18\x01 \x01(\t\x12%\n\x06\x63onfig\x18\x10 \x01(\x0b\x32\x15.voltha.AdapterConfig\x12\x34\n\x16\x61\x64\x64itional_description\x18@ \x01(\x0b\x32\x14.google.protobuf.Any\"*\n\x08\x41\x64\x61pters\x12\x1e\n\x05items\x18\x01 \x03(\x0b\x32\x0f.voltha.Adapter\")\n\nDeviceType\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x02 \x01(\t\"0\n\x0b\x44\x65viceTypes\x12!\n\x05items\x18\x01 \x03(\x0b\x32\x12.voltha.DeviceType\"\xfe\x01\n\x06\x44\x65vice\x12\n\n\x02id\x18\x01 \x01(\t\x12\x0c\n\x04type\x18\x02 \x01(\t\x12\x0c\n\x04root\x18\x03 \x01(\x08\x12\x11\n\tparent_id\x18\x04 \x01(\t\x12\x0e\n\x06vendor\x18\x05 \x01(\t\x12\r\n\x05model\x18\x06 \x01(\t\x12\x18\n\x10hardware_version\x18\x07 \x01(\t\x12\x18\n\x10\x66irmware_version\x18\x08 \x01(\t\x12\x18\n\x10software_version\x18\t \x01(\t\x12\x15\n\rserial_number\x18\n \x01(\t\x12\x0f\n\x07\x61\x64\x61pter\x18\x0b \x01(\t\x12$\n\x06\x63ustom\x18@ \x01(\x0b\x32\x14.google.protobuf.Any2c\n\x0e\x41\x64\x61pterService\x12Q\n\x0cListAdapters\x12\x16.google.protobuf.Empty\x1a\x10.voltha.Adapters\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/local/adaptersb\x06proto3')
+  ,
+  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,google_dot_protobuf_dot_any__pb2.DESCRIPTOR,common__pb2.DESCRIPTOR,])
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+
+_ADAPTERCONFIG = _descriptor.Descriptor(
+  name='AdapterConfig',
+  full_name='voltha.AdapterConfig',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='additional_config', full_name='voltha.AdapterConfig.additional_config', index=0,
+      number=64, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=125,
+  serialized_end=189,
+)
+
+
+_ADAPTER = _descriptor.Descriptor(
+  name='Adapter',
+  full_name='voltha.Adapter',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.Adapter.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='config', full_name='voltha.Adapter.config', index=1,
+      number=16, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='additional_description', full_name='voltha.Adapter.additional_description', index=2,
+      number=64, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=191,
+  serialized_end=305,
+)
+
+
+_ADAPTERS = _descriptor.Descriptor(
+  name='Adapters',
+  full_name='voltha.Adapters',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.Adapters.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=307,
+  serialized_end=349,
+)
+
+
+_DEVICETYPE = _descriptor.Descriptor(
+  name='DeviceType',
+  full_name='voltha.DeviceType',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.DeviceType.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='adapter', full_name='voltha.DeviceType.adapter', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=351,
+  serialized_end=392,
+)
+
+
+_DEVICETYPES = _descriptor.Descriptor(
+  name='DeviceTypes',
+  full_name='voltha.DeviceTypes',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.DeviceTypes.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=394,
+  serialized_end=442,
+)
+
+
+_DEVICE = _descriptor.Descriptor(
+  name='Device',
+  full_name='voltha.Device',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.Device.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='type', full_name='voltha.Device.type', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='root', full_name='voltha.Device.root', index=2,
+      number=3, type=8, cpp_type=7, label=1,
+      has_default_value=False, default_value=False,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='parent_id', full_name='voltha.Device.parent_id', index=3,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='vendor', full_name='voltha.Device.vendor', index=4,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='model', full_name='voltha.Device.model', index=5,
+      number=6, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='hardware_version', full_name='voltha.Device.hardware_version', index=6,
+      number=7, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='firmware_version', full_name='voltha.Device.firmware_version', index=7,
+      number=8, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='software_version', full_name='voltha.Device.software_version', index=8,
+      number=9, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='serial_number', full_name='voltha.Device.serial_number', index=9,
+      number=10, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='adapter', full_name='voltha.Device.adapter', index=10,
+      number=11, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='custom', full_name='voltha.Device.custom', index=11,
+      number=64, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=445,
+  serialized_end=699,
+)
+
+_ADAPTERCONFIG.fields_by_name['additional_config'].message_type = google_dot_protobuf_dot_any__pb2._ANY
+_ADAPTER.fields_by_name['config'].message_type = _ADAPTERCONFIG
+_ADAPTER.fields_by_name['additional_description'].message_type = google_dot_protobuf_dot_any__pb2._ANY
+_ADAPTERS.fields_by_name['items'].message_type = _ADAPTER
+_DEVICETYPES.fields_by_name['items'].message_type = _DEVICETYPE
+_DEVICE.fields_by_name['custom'].message_type = google_dot_protobuf_dot_any__pb2._ANY
+DESCRIPTOR.message_types_by_name['AdapterConfig'] = _ADAPTERCONFIG
+DESCRIPTOR.message_types_by_name['Adapter'] = _ADAPTER
+DESCRIPTOR.message_types_by_name['Adapters'] = _ADAPTERS
+DESCRIPTOR.message_types_by_name['DeviceType'] = _DEVICETYPE
+DESCRIPTOR.message_types_by_name['DeviceTypes'] = _DEVICETYPES
+DESCRIPTOR.message_types_by_name['Device'] = _DEVICE
+
+AdapterConfig = _reflection.GeneratedProtocolMessageType('AdapterConfig', (_message.Message,), dict(
+  DESCRIPTOR = _ADAPTERCONFIG,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.AdapterConfig)
+  ))
+_sym_db.RegisterMessage(AdapterConfig)
+
+Adapter = _reflection.GeneratedProtocolMessageType('Adapter', (_message.Message,), dict(
+  DESCRIPTOR = _ADAPTER,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Adapter)
+  ))
+_sym_db.RegisterMessage(Adapter)
+
+Adapters = _reflection.GeneratedProtocolMessageType('Adapters', (_message.Message,), dict(
+  DESCRIPTOR = _ADAPTERS,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Adapters)
+  ))
+_sym_db.RegisterMessage(Adapters)
+
+DeviceType = _reflection.GeneratedProtocolMessageType('DeviceType', (_message.Message,), dict(
+  DESCRIPTOR = _DEVICETYPE,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.DeviceType)
+  ))
+_sym_db.RegisterMessage(DeviceType)
+
+DeviceTypes = _reflection.GeneratedProtocolMessageType('DeviceTypes', (_message.Message,), dict(
+  DESCRIPTOR = _DEVICETYPES,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.DeviceTypes)
+  ))
+_sym_db.RegisterMessage(DeviceTypes)
+
+Device = _reflection.GeneratedProtocolMessageType('Device', (_message.Message,), dict(
+  DESCRIPTOR = _DEVICE,
+  __module__ = 'adapter_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Device)
+  ))
+_sym_db.RegisterMessage(Device)
+
+
+import grpc
+from grpc.beta import implementations as beta_implementations
+from grpc.beta import interfaces as beta_interfaces
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+
+
+class AdapterServiceStub(object):
+
+  def __init__(self, channel):
+    """Constructor.
+
+    Args:
+      channel: A grpc.Channel.
+    """
+    self.ListAdapters = channel.unary_unary(
+        '/voltha.AdapterService/ListAdapters',
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+        response_deserializer=Adapters.FromString,
+        )
+
+
+class AdapterServiceServicer(object):
+
+  def ListAdapters(self, request, context):
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+
+def add_AdapterServiceServicer_to_server(servicer, server):
+  rpc_method_handlers = {
+      'ListAdapters': grpc.unary_unary_rpc_method_handler(
+          servicer.ListAdapters,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+          response_serializer=Adapters.SerializeToString,
+      ),
+  }
+  generic_handler = grpc.method_handlers_generic_handler(
+      'voltha.AdapterService', rpc_method_handlers)
+  server.add_generic_rpc_handlers((generic_handler,))
+
+
+class BetaAdapterServiceServicer(object):
+  def ListAdapters(self, request, context):
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+
+
+class BetaAdapterServiceStub(object):
+  def ListAdapters(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    raise NotImplementedError()
+  ListAdapters.future = None
+
+
+def beta_create_AdapterService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
+  request_deserializers = {
+    ('voltha.AdapterService', 'ListAdapters'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+  }
+  response_serializers = {
+    ('voltha.AdapterService', 'ListAdapters'): Adapters.SerializeToString,
+  }
+  method_implementations = {
+    ('voltha.AdapterService', 'ListAdapters'): face_utilities.unary_unary_inline(servicer.ListAdapters),
+  }
+  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
+  return beta_implementations.server(method_implementations, options=server_options)
+
+
+def beta_create_AdapterService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
+  request_serializers = {
+    ('voltha.AdapterService', 'ListAdapters'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+  }
+  response_deserializers = {
+    ('voltha.AdapterService', 'ListAdapters'): Adapters.FromString,
+  }
+  cardinalities = {
+    'ListAdapters': cardinality.Cardinality.UNARY_UNARY,
+  }
+  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
+  return beta_implementations.dynamic_stub(channel, 'voltha.AdapterService', cardinalities, options=stub_options)
+# @@protoc_insertion_point(module_scope)
diff --git a/voltha/protos/common.proto b/voltha/protos/common.proto
new file mode 100644
index 0000000..64e8a3e
--- /dev/null
+++ b/voltha/protos/common.proto
@@ -0,0 +1,10 @@
+syntax = "proto3";
+
+package voltha;
+
+// Convey a resource identifier
+message ID {
+    string id = 1;
+}
+
+
diff --git a/voltha/protos/common_pb2.py b/voltha/protos/common_pb2.py
new file mode 100644
index 0000000..1eceb2d
--- /dev/null
+++ b/voltha/protos/common_pb2.py
@@ -0,0 +1,74 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: common.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='common.proto',
+  package='voltha',
+  syntax='proto3',
+  serialized_pb=_b('\n\x0c\x63ommon.proto\x12\x06voltha\"\x10\n\x02ID\x12\n\n\x02id\x18\x01 \x01(\tb\x06proto3')
+)
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+
+_ID = _descriptor.Descriptor(
+  name='ID',
+  full_name='voltha.ID',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.ID.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=24,
+  serialized_end=40,
+)
+
+DESCRIPTOR.message_types_by_name['ID'] = _ID
+
+ID = _reflection.GeneratedProtocolMessageType('ID', (_message.Message,), dict(
+  DESCRIPTOR = _ID,
+  __module__ = 'common_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.ID)
+  ))
+_sym_db.RegisterMessage(ID)
+
+
+import grpc
+from grpc.beta import implementations as beta_implementations
+from grpc.beta import interfaces as beta_interfaces
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+# @@protoc_insertion_point(module_scope)
diff --git a/voltha/protos/example_service.proto b/voltha/protos/example_service.proto
new file mode 100644
index 0000000..aac8efc
--- /dev/null
+++ b/voltha/protos/example_service.proto
@@ -0,0 +1,77 @@
+//
+// This is a temporary service to illustrate the generic approach to defining
+// Voltha's top level service APIs usign gRPC
+//
+// To add a new service, the following steps shall be followed
+//
+// Step 1: Define a proto file like this
+// Step 2: Include proto file in voltha.proto as public
+// Step 3: Implement the backend in grpc_server.py
+//
+
+syntax = "proto3";
+
+package voltha;
+
+import "common.proto";
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+
+
+// (placeholder) Address as example message
+message Address {
+    string id = 7;  // ID of address record
+    string street = 1;  // Street address
+    string street2 = 2;  // Apartment, suite, building, etc.
+    string street3 = 3;  // Apartment, suite, building, etc.
+    string city = 4;  // City
+    string state = 5;  // State
+    uint32 zip = 6;   // Zip code
+}
+
+message Addresses {
+    repeated Address addresses = 1;
+}
+
+// (placeholder) This is an example service
+service ExampleService {
+
+    // Create an address record
+    rpc CreateAddress(Address) returns (Address) {
+        option (google.api.http) = {
+            post: "/addresses"
+            body: "*"
+        };
+    }
+
+    // Return an address by ID
+    rpc GetAddress(ID) returns (Address) {
+        option (google.api.http) = {
+            get: "/addresses/{id}"
+        };
+    }
+
+    // Update an existing address record by ID
+    rpc UpdateAddress(Address) returns (Address) {
+        option (google.api.http) = {
+            patch: "/addresses/{id}"
+            body: "*"
+        };
+    }
+
+    // Delete an address record by ID
+    rpc DeleteAddress(ID) returns (google.protobuf.Empty) {
+        option (google.api.http) = {
+            delete: "/addresses/{id}"
+        };
+    }
+
+    // Return a bit more complex objects
+    rpc ListAddresses(google.protobuf.Empty) returns (Addresses) {
+        option (google.api.http) = {
+            get: "/addresses"
+        };
+    }
+
+}
diff --git a/voltha/protos/example_service_pb2.py b/voltha/protos/example_service_pb2.py
new file mode 100644
index 0000000..f2decd3
--- /dev/null
+++ b/voltha/protos/example_service_pb2.py
@@ -0,0 +1,377 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: example_service.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+import common_pb2 as common__pb2
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='example_service.proto',
+  package='voltha',
+  syntax='proto3',
+  serialized_pb=_b('\n\x15\x65xample_service.proto\x12\x06voltha\x1a\x0c\x63ommon.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\"q\n\x07\x41\x64\x64ress\x12\n\n\x02id\x18\x07 \x01(\t\x12\x0e\n\x06street\x18\x01 \x01(\t\x12\x0f\n\x07street2\x18\x02 \x01(\t\x12\x0f\n\x07street3\x18\x03 \x01(\t\x12\x0c\n\x04\x63ity\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x0b\n\x03zip\x18\x06 \x01(\r\"/\n\tAddresses\x12\"\n\taddresses\x18\x01 \x03(\x0b\x32\x0f.voltha.Address2\x8b\x03\n\x0e\x45xampleService\x12H\n\rCreateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x15\x82\xd3\xe4\x93\x02\x0f\"\n/addresses:\x01*\x12\x42\n\nGetAddress\x12\n.voltha.ID\x1a\x0f.voltha.Address\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/addresses/{id}\x12M\n\rUpdateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x1a\x82\xd3\xe4\x93\x02\x14\x32\x0f/addresses/{id}:\x01*\x12L\n\rDeleteAddress\x12\n.voltha.ID\x1a\x16.google.protobuf.Empty\"\x17\x82\xd3\xe4\x93\x02\x11*\x0f/addresses/{id}\x12N\n\rListAddresses\x12\x16.google.protobuf.Empty\x1a\x11.voltha.Addresses\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/addressesb\x06proto3')
+  ,
+  dependencies=[common__pb2.DESCRIPTOR,google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+
+_ADDRESS = _descriptor.Descriptor(
+  name='Address',
+  full_name='voltha.Address',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.Address.id', index=0,
+      number=7, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='street', full_name='voltha.Address.street', index=1,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='street2', full_name='voltha.Address.street2', index=2,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='street3', full_name='voltha.Address.street3', index=3,
+      number=3, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='city', full_name='voltha.Address.city', index=4,
+      number=4, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='state', full_name='voltha.Address.state', index=5,
+      number=5, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='zip', full_name='voltha.Address.zip', index=6,
+      number=6, type=13, cpp_type=3, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=106,
+  serialized_end=219,
+)
+
+
+_ADDRESSES = _descriptor.Descriptor(
+  name='Addresses',
+  full_name='voltha.Addresses',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='addresses', full_name='voltha.Addresses.addresses', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=221,
+  serialized_end=268,
+)
+
+_ADDRESSES.fields_by_name['addresses'].message_type = _ADDRESS
+DESCRIPTOR.message_types_by_name['Address'] = _ADDRESS
+DESCRIPTOR.message_types_by_name['Addresses'] = _ADDRESSES
+
+Address = _reflection.GeneratedProtocolMessageType('Address', (_message.Message,), dict(
+  DESCRIPTOR = _ADDRESS,
+  __module__ = 'example_service_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Address)
+  ))
+_sym_db.RegisterMessage(Address)
+
+Addresses = _reflection.GeneratedProtocolMessageType('Addresses', (_message.Message,), dict(
+  DESCRIPTOR = _ADDRESSES,
+  __module__ = 'example_service_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Addresses)
+  ))
+_sym_db.RegisterMessage(Addresses)
+
+
+import grpc
+from grpc.beta import implementations as beta_implementations
+from grpc.beta import interfaces as beta_interfaces
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+
+
+class ExampleServiceStub(object):
+  """(placeholder) This is an example service
+  """
+
+  def __init__(self, channel):
+    """Constructor.
+
+    Args:
+      channel: A grpc.Channel.
+    """
+    self.CreateAddress = channel.unary_unary(
+        '/voltha.ExampleService/CreateAddress',
+        request_serializer=Address.SerializeToString,
+        response_deserializer=Address.FromString,
+        )
+    self.GetAddress = channel.unary_unary(
+        '/voltha.ExampleService/GetAddress',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=Address.FromString,
+        )
+    self.UpdateAddress = channel.unary_unary(
+        '/voltha.ExampleService/UpdateAddress',
+        request_serializer=Address.SerializeToString,
+        response_deserializer=Address.FromString,
+        )
+    self.DeleteAddress = channel.unary_unary(
+        '/voltha.ExampleService/DeleteAddress',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+        )
+    self.ListAddresses = channel.unary_unary(
+        '/voltha.ExampleService/ListAddresses',
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+        response_deserializer=Addresses.FromString,
+        )
+
+
+class ExampleServiceServicer(object):
+  """(placeholder) This is an example service
+  """
+
+  def CreateAddress(self, request, context):
+    """Create an address record
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def GetAddress(self, request, context):
+    """Return an address by ID
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def UpdateAddress(self, request, context):
+    """Update an existing address record by ID
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def DeleteAddress(self, request, context):
+    """Delete an address record by ID
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def ListAddresses(self, request, context):
+    """Return a bit more complex objects
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+
+def add_ExampleServiceServicer_to_server(servicer, server):
+  rpc_method_handlers = {
+      'CreateAddress': grpc.unary_unary_rpc_method_handler(
+          servicer.CreateAddress,
+          request_deserializer=Address.FromString,
+          response_serializer=Address.SerializeToString,
+      ),
+      'GetAddress': grpc.unary_unary_rpc_method_handler(
+          servicer.GetAddress,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=Address.SerializeToString,
+      ),
+      'UpdateAddress': grpc.unary_unary_rpc_method_handler(
+          servicer.UpdateAddress,
+          request_deserializer=Address.FromString,
+          response_serializer=Address.SerializeToString,
+      ),
+      'DeleteAddress': grpc.unary_unary_rpc_method_handler(
+          servicer.DeleteAddress,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+      ),
+      'ListAddresses': grpc.unary_unary_rpc_method_handler(
+          servicer.ListAddresses,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+          response_serializer=Addresses.SerializeToString,
+      ),
+  }
+  generic_handler = grpc.method_handlers_generic_handler(
+      'voltha.ExampleService', rpc_method_handlers)
+  server.add_generic_rpc_handlers((generic_handler,))
+
+
+class BetaExampleServiceServicer(object):
+  """(placeholder) This is an example service
+  """
+  def CreateAddress(self, request, context):
+    """Create an address record
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def GetAddress(self, request, context):
+    """Return an address by ID
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def UpdateAddress(self, request, context):
+    """Update an existing address record by ID
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def DeleteAddress(self, request, context):
+    """Delete an address record by ID
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def ListAddresses(self, request, context):
+    """Return a bit more complex objects
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+
+
+class BetaExampleServiceStub(object):
+  """(placeholder) This is an example service
+  """
+  def CreateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Create an address record
+    """
+    raise NotImplementedError()
+  CreateAddress.future = None
+  def GetAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Return an address by ID
+    """
+    raise NotImplementedError()
+  GetAddress.future = None
+  def UpdateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Update an existing address record by ID
+    """
+    raise NotImplementedError()
+  UpdateAddress.future = None
+  def DeleteAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Delete an address record by ID
+    """
+    raise NotImplementedError()
+  DeleteAddress.future = None
+  def ListAddresses(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Return a bit more complex objects
+    """
+    raise NotImplementedError()
+  ListAddresses.future = None
+
+
+def beta_create_ExampleService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
+  request_deserializers = {
+    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
+    ('voltha.ExampleService', 'DeleteAddress'): common__pb2.ID.FromString,
+    ('voltha.ExampleService', 'GetAddress'): common__pb2.ID.FromString,
+    ('voltha.ExampleService', 'ListAddresses'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
+  }
+  response_serializers = {
+    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
+    ('voltha.ExampleService', 'DeleteAddress'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.ExampleService', 'GetAddress'): Address.SerializeToString,
+    ('voltha.ExampleService', 'ListAddresses'): Addresses.SerializeToString,
+    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
+  }
+  method_implementations = {
+    ('voltha.ExampleService', 'CreateAddress'): face_utilities.unary_unary_inline(servicer.CreateAddress),
+    ('voltha.ExampleService', 'DeleteAddress'): face_utilities.unary_unary_inline(servicer.DeleteAddress),
+    ('voltha.ExampleService', 'GetAddress'): face_utilities.unary_unary_inline(servicer.GetAddress),
+    ('voltha.ExampleService', 'ListAddresses'): face_utilities.unary_unary_inline(servicer.ListAddresses),
+    ('voltha.ExampleService', 'UpdateAddress'): face_utilities.unary_unary_inline(servicer.UpdateAddress),
+  }
+  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
+  return beta_implementations.server(method_implementations, options=server_options)
+
+
+def beta_create_ExampleService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
+  request_serializers = {
+    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
+    ('voltha.ExampleService', 'DeleteAddress'): common__pb2.ID.SerializeToString,
+    ('voltha.ExampleService', 'GetAddress'): common__pb2.ID.SerializeToString,
+    ('voltha.ExampleService', 'ListAddresses'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
+  }
+  response_deserializers = {
+    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
+    ('voltha.ExampleService', 'DeleteAddress'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.ExampleService', 'GetAddress'): Address.FromString,
+    ('voltha.ExampleService', 'ListAddresses'): Addresses.FromString,
+    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
+  }
+  cardinalities = {
+    'CreateAddress': cardinality.Cardinality.UNARY_UNARY,
+    'DeleteAddress': cardinality.Cardinality.UNARY_UNARY,
+    'GetAddress': cardinality.Cardinality.UNARY_UNARY,
+    'ListAddresses': cardinality.Cardinality.UNARY_UNARY,
+    'UpdateAddress': cardinality.Cardinality.UNARY_UNARY,
+  }
+  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
+  return beta_implementations.dynamic_stub(channel, 'voltha.ExampleService', cardinalities, options=stub_options)
+# @@protoc_insertion_point(module_scope)
diff --git a/voltha/protos/health.proto b/voltha/protos/health.proto
new file mode 100644
index 0000000..c4d2198
--- /dev/null
+++ b/voltha/protos/health.proto
@@ -0,0 +1,30 @@
+syntax = "proto3";
+
+package voltha;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+
+// Encode health status of a Voltha instance
+message HealthStatus {
+    // Health states
+    enum HealthState {
+        HEALTHY = 0;  // The instance is healthy
+        OVERLOADED = 1;  // The instance is overloaded, decrease query rate
+        DYING = 2;  // The instance is in a critical condition, do not use it
+    }
+
+    // Current state of health of this Voltha instance
+    HealthState state = 1;
+}
+
+// Health related services
+service HealthService {
+    // Return current health status of a Voltha instance
+    rpc GetHealthStatus(google.protobuf.Empty) returns (HealthStatus) {
+        option (google.api.http) = {
+            get: "/health"
+        };
+    }
+}
+
diff --git a/voltha/protos/health_pb2.py b/voltha/protos/health_pb2.py
new file mode 100644
index 0000000..85448bf
--- /dev/null
+++ b/voltha/protos/health_pb2.py
@@ -0,0 +1,195 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: health.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='health.proto',
+  package='voltha',
+  syntax='proto3',
+  serialized_pb=_b('\n\x0chealth.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\"v\n\x0cHealthStatus\x12/\n\x05state\x18\x01 \x01(\x0e\x32 .voltha.HealthStatus.HealthState\"5\n\x0bHealthState\x12\x0b\n\x07HEALTHY\x10\x00\x12\x0e\n\nOVERLOADED\x10\x01\x12\t\n\x05\x44YING\x10\x02\x32\x61\n\rHealthService\x12P\n\x0fGetHealthStatus\x12\x16.google.protobuf.Empty\x1a\x14.voltha.HealthStatus\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/healthb\x06proto3')
+  ,
+  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+_HEALTHSTATUS_HEALTHSTATE = _descriptor.EnumDescriptor(
+  name='HealthState',
+  full_name='voltha.HealthStatus.HealthState',
+  filename=None,
+  file=DESCRIPTOR,
+  values=[
+    _descriptor.EnumValueDescriptor(
+      name='HEALTHY', index=0, number=0,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='OVERLOADED', index=1, number=1,
+      options=None,
+      type=None),
+    _descriptor.EnumValueDescriptor(
+      name='DYING', index=2, number=2,
+      options=None,
+      type=None),
+  ],
+  containing_type=None,
+  options=None,
+  serialized_start=148,
+  serialized_end=201,
+)
+_sym_db.RegisterEnumDescriptor(_HEALTHSTATUS_HEALTHSTATE)
+
+
+_HEALTHSTATUS = _descriptor.Descriptor(
+  name='HealthStatus',
+  full_name='voltha.HealthStatus',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='state', full_name='voltha.HealthStatus.state', index=0,
+      number=1, type=14, cpp_type=8, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+    _HEALTHSTATUS_HEALTHSTATE,
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=83,
+  serialized_end=201,
+)
+
+_HEALTHSTATUS.fields_by_name['state'].enum_type = _HEALTHSTATUS_HEALTHSTATE
+_HEALTHSTATUS_HEALTHSTATE.containing_type = _HEALTHSTATUS
+DESCRIPTOR.message_types_by_name['HealthStatus'] = _HEALTHSTATUS
+
+HealthStatus = _reflection.GeneratedProtocolMessageType('HealthStatus', (_message.Message,), dict(
+  DESCRIPTOR = _HEALTHSTATUS,
+  __module__ = 'health_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.HealthStatus)
+  ))
+_sym_db.RegisterMessage(HealthStatus)
+
+
+import grpc
+from grpc.beta import implementations as beta_implementations
+from grpc.beta import interfaces as beta_interfaces
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+
+
+class HealthServiceStub(object):
+  """Health related services
+  """
+
+  def __init__(self, channel):
+    """Constructor.
+
+    Args:
+      channel: A grpc.Channel.
+    """
+    self.GetHealthStatus = channel.unary_unary(
+        '/voltha.HealthService/GetHealthStatus',
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+        response_deserializer=HealthStatus.FromString,
+        )
+
+
+class HealthServiceServicer(object):
+  """Health related services
+  """
+
+  def GetHealthStatus(self, request, context):
+    """Return current health status of a Voltha instance
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+
+def add_HealthServiceServicer_to_server(servicer, server):
+  rpc_method_handlers = {
+      'GetHealthStatus': grpc.unary_unary_rpc_method_handler(
+          servicer.GetHealthStatus,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+          response_serializer=HealthStatus.SerializeToString,
+      ),
+  }
+  generic_handler = grpc.method_handlers_generic_handler(
+      'voltha.HealthService', rpc_method_handlers)
+  server.add_generic_rpc_handlers((generic_handler,))
+
+
+class BetaHealthServiceServicer(object):
+  """Health related services
+  """
+  def GetHealthStatus(self, request, context):
+    """Return current health status of a Voltha instance
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+
+
+class BetaHealthServiceStub(object):
+  """Health related services
+  """
+  def GetHealthStatus(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Return current health status of a Voltha instance
+    """
+    raise NotImplementedError()
+  GetHealthStatus.future = None
+
+
+def beta_create_HealthService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
+  request_deserializers = {
+    ('voltha.HealthService', 'GetHealthStatus'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+  }
+  response_serializers = {
+    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.SerializeToString,
+  }
+  method_implementations = {
+    ('voltha.HealthService', 'GetHealthStatus'): face_utilities.unary_unary_inline(servicer.GetHealthStatus),
+  }
+  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
+  return beta_implementations.server(method_implementations, options=server_options)
+
+
+def beta_create_HealthService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
+  request_serializers = {
+    ('voltha.HealthService', 'GetHealthStatus'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+  }
+  response_deserializers = {
+    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.FromString,
+  }
+  cardinalities = {
+    'GetHealthStatus': cardinality.Cardinality.UNARY_UNARY,
+  }
+  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
+  return beta_implementations.dynamic_stub(channel, 'voltha.HealthService', cardinalities, options=stub_options)
+# @@protoc_insertion_point(module_scope)
diff --git a/voltha/protos/logical_layer.proto b/voltha/protos/logical_layer.proto
new file mode 100644
index 0000000..16b5b46
--- /dev/null
+++ b/voltha/protos/logical_layer.proto
@@ -0,0 +1,122 @@
+syntax = "proto3";
+
+package voltha;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "common.proto";
+import "openflow_13.proto";
+
+message LogicalDevice {
+    string id = 1;
+    uint64 datapath_id = 2;
+    openflow_13.ofp_desc desc = 3;
+}
+
+message LogicalDevices {
+    repeated LogicalDevice items = 1;
+}
+
+message LogicalPorts {
+    repeated openflow_13.ofp_port items = 1;
+}
+
+message LogicalDeviceDetails {
+    string id = 1;
+    uint64 datapath_id = 2;
+    openflow_13.ofp_desc desc = 3;
+    openflow_13.ofp_switch_features switch_features = 4;
+}
+
+message FlowTableUpdate {
+    string id = 1; // device id
+    openflow_13.ofp_flow_mod flow_mod = 2;
+}
+
+message GroupTableUpdate {
+    string id = 1; // device id
+    openflow_13.ofp_group_mod group_mod = 2;
+}
+
+message Flows {
+    repeated openflow_13.ofp_flow_stats items = 1;
+}
+
+message FlowGroups {
+    repeated openflow_13.ofp_group_entry items = 1;
+}
+
+message PacketIn {
+    string id = 1; // device id
+    openflow_13.ofp_packet_in packet_in = 2;
+}
+
+message PacketOut {
+    string id = 1; // device id
+    openflow_13.ofp_packet_out packet_out = 2;
+}
+
+service VolthaLogicalLayer {
+
+    // List logical devices owned by this Voltha instance
+    rpc ListLogicalDevices(google.protobuf.Empty) returns(LogicalDevices) {
+        option (google.api.http) = {
+            get: "/local/devices"
+        };
+    }
+
+    // Get detailed info on logical device owned by this Voltha instance
+    rpc GetLogicalDevice(ID) returns(LogicalDeviceDetails) {
+        option (google.api.http) = {
+            get: "/local/devices/{id}"
+        };
+    }
+
+    // List ports of a logical device
+    rpc ListLogicalDevicePorts(ID) returns(LogicalPorts) {
+        option (google.api.http) = {
+            get: "/local/devices/{id}/ports"
+        };
+    }
+
+    // Update flow table for device
+    rpc UpdateFlowTable(FlowTableUpdate) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/local/devices/{id}/flows"
+            body: "*"
+        };
+    }
+
+    // List all flows of a logical device
+    rpc ListDeviceFlows(ID) returns(Flows) {
+        option (google.api.http) = {
+            get: "/local/devices/{id}/flows"
+        };
+    }
+
+    // Update group tabel for device
+    rpc UpdateGroupTable(GroupTableUpdate) returns(google.protobuf.Empty) {
+        option (google.api.http) = {
+            post: "/local/devices/{id}/groups"
+            body: "*"
+        };
+    }
+
+    // List all flow groups of a logical device
+    rpc ListDeviceFlowGroups(ID) returns(FlowGroups) {
+        option (google.api.http) = {
+            get: "/local/devices/{id}/groups"
+        };
+    }
+
+    // Stream control packets to the dataplane
+    rpc StreamPacketsOut(stream PacketOut) returns(google.protobuf.Empty) {
+        // This does not have an HTTP representation
+    }
+
+    // Receive control packet stream
+    rpc ReceivePacketsIn(google.protobuf.Empty) returns(stream PacketIn) {
+        // This does not have an HTTP representation
+    }
+
+}
diff --git a/voltha/protos/logical_layer_pb2.py b/voltha/protos/logical_layer_pb2.py
new file mode 100644
index 0000000..3484e20
--- /dev/null
+++ b/voltha/protos/logical_layer_pb2.py
@@ -0,0 +1,846 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: logical_layer.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+from google.protobuf import descriptor_pb2
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
+import common_pb2 as common__pb2
+import openflow_13_pb2 as openflow__13__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='logical_layer.proto',
+  package='voltha',
+  syntax='proto3',
+  serialized_pb=_b('\n\x13logical_layer.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\x1a\x0c\x63ommon.proto\x1a\x11openflow_13.proto\"U\n\rLogicalDevice\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\"6\n\x0eLogicalDevices\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.voltha.LogicalDevice\"4\n\x0cLogicalPorts\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.openflow_13.ofp_port\"\x97\x01\n\x14LogicalDeviceDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\x12\x39\n\x0fswitch_features\x18\x04 \x01(\x0b\x32 .openflow_13.ofp_switch_features\"J\n\x0f\x46lowTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x08\x66low_mod\x18\x02 \x01(\x0b\x32\x19.openflow_13.ofp_flow_mod\"M\n\x10GroupTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tgroup_mod\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_group_mod\"3\n\x05\x46lows\x12*\n\x05items\x18\x01 \x03(\x0b\x32\x1b.openflow_13.ofp_flow_stats\"9\n\nFlowGroups\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.openflow_13.ofp_group_entry\"E\n\x08PacketIn\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tpacket_in\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_packet_in\"H\n\tPacketOut\x12\n\n\x02id\x18\x01 \x01(\t\x12/\n\npacket_out\x18\x02 \x01(\x0b\x32\x1b.openflow_13.ofp_packet_out2\xb5\x06\n\x12VolthaLogicalLayer\x12\\\n\x12ListLogicalDevices\x12\x16.google.protobuf.Empty\x1a\x16.voltha.LogicalDevices\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/local/devices\x12Y\n\x10GetLogicalDevice\x12\n.voltha.ID\x1a\x1c.voltha.LogicalDeviceDetails\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/local/devices/{id}\x12]\n\x16ListLogicalDevicePorts\x12\n.voltha.ID\x1a\x14.voltha.LogicalPorts\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/ports\x12h\n\x0fUpdateFlowTable\x12\x17.voltha.FlowTableUpdate\x1a\x16.google.protobuf.Empty\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/local/devices/{id}/flows:\x01*\x12O\n\x0fListDeviceFlows\x12\n.voltha.ID\x1a\r.voltha.Flows\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/flows\x12k\n\x10UpdateGroupTable\x12\x18.voltha.GroupTableUpdate\x1a\x16.google.protobuf.Empty\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/local/devices/{id}/groups:\x01*\x12Z\n\x14ListDeviceFlowGroups\x12\n.voltha.ID\x1a\x12.voltha.FlowGroups\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/local/devices/{id}/groups\x12\x41\n\x10StreamPacketsOut\x12\x11.voltha.PacketOut\x1a\x16.google.protobuf.Empty\"\x00(\x01\x12@\n\x10ReceivePacketsIn\x12\x16.google.protobuf.Empty\x1a\x10.voltha.PacketIn\"\x00\x30\x01\x62\x06proto3')
+  ,
+  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,common__pb2.DESCRIPTOR,openflow__13__pb2.DESCRIPTOR,])
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+
+
+
+_LOGICALDEVICE = _descriptor.Descriptor(
+  name='LogicalDevice',
+  full_name='voltha.LogicalDevice',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.LogicalDevice.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='datapath_id', full_name='voltha.LogicalDevice.datapath_id', index=1,
+      number=2, type=4, cpp_type=4, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='desc', full_name='voltha.LogicalDevice.desc', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=123,
+  serialized_end=208,
+)
+
+
+_LOGICALDEVICES = _descriptor.Descriptor(
+  name='LogicalDevices',
+  full_name='voltha.LogicalDevices',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.LogicalDevices.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=210,
+  serialized_end=264,
+)
+
+
+_LOGICALPORTS = _descriptor.Descriptor(
+  name='LogicalPorts',
+  full_name='voltha.LogicalPorts',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.LogicalPorts.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=266,
+  serialized_end=318,
+)
+
+
+_LOGICALDEVICEDETAILS = _descriptor.Descriptor(
+  name='LogicalDeviceDetails',
+  full_name='voltha.LogicalDeviceDetails',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.LogicalDeviceDetails.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='datapath_id', full_name='voltha.LogicalDeviceDetails.datapath_id', index=1,
+      number=2, type=4, cpp_type=4, label=1,
+      has_default_value=False, default_value=0,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='desc', full_name='voltha.LogicalDeviceDetails.desc', index=2,
+      number=3, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='switch_features', full_name='voltha.LogicalDeviceDetails.switch_features', index=3,
+      number=4, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=321,
+  serialized_end=472,
+)
+
+
+_FLOWTABLEUPDATE = _descriptor.Descriptor(
+  name='FlowTableUpdate',
+  full_name='voltha.FlowTableUpdate',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.FlowTableUpdate.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='flow_mod', full_name='voltha.FlowTableUpdate.flow_mod', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=474,
+  serialized_end=548,
+)
+
+
+_GROUPTABLEUPDATE = _descriptor.Descriptor(
+  name='GroupTableUpdate',
+  full_name='voltha.GroupTableUpdate',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.GroupTableUpdate.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='group_mod', full_name='voltha.GroupTableUpdate.group_mod', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=550,
+  serialized_end=627,
+)
+
+
+_FLOWS = _descriptor.Descriptor(
+  name='Flows',
+  full_name='voltha.Flows',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.Flows.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=629,
+  serialized_end=680,
+)
+
+
+_FLOWGROUPS = _descriptor.Descriptor(
+  name='FlowGroups',
+  full_name='voltha.FlowGroups',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='items', full_name='voltha.FlowGroups.items', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=682,
+  serialized_end=739,
+)
+
+
+_PACKETIN = _descriptor.Descriptor(
+  name='PacketIn',
+  full_name='voltha.PacketIn',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.PacketIn.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='packet_in', full_name='voltha.PacketIn.packet_in', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=741,
+  serialized_end=810,
+)
+
+
+_PACKETOUT = _descriptor.Descriptor(
+  name='PacketOut',
+  full_name='voltha.PacketOut',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='id', full_name='voltha.PacketOut.id', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+    _descriptor.FieldDescriptor(
+      name='packet_out', full_name='voltha.PacketOut.packet_out', index=1,
+      number=2, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      options=None),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=812,
+  serialized_end=884,
+)
+
+_LOGICALDEVICE.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
+_LOGICALDEVICES.fields_by_name['items'].message_type = _LOGICALDEVICE
+_LOGICALPORTS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_PORT
+_LOGICALDEVICEDETAILS.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
+_LOGICALDEVICEDETAILS.fields_by_name['switch_features'].message_type = openflow__13__pb2._OFP_SWITCH_FEATURES
+_FLOWTABLEUPDATE.fields_by_name['flow_mod'].message_type = openflow__13__pb2._OFP_FLOW_MOD
+_GROUPTABLEUPDATE.fields_by_name['group_mod'].message_type = openflow__13__pb2._OFP_GROUP_MOD
+_FLOWS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_FLOW_STATS
+_FLOWGROUPS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_GROUP_ENTRY
+_PACKETIN.fields_by_name['packet_in'].message_type = openflow__13__pb2._OFP_PACKET_IN
+_PACKETOUT.fields_by_name['packet_out'].message_type = openflow__13__pb2._OFP_PACKET_OUT
+DESCRIPTOR.message_types_by_name['LogicalDevice'] = _LOGICALDEVICE
+DESCRIPTOR.message_types_by_name['LogicalDevices'] = _LOGICALDEVICES
+DESCRIPTOR.message_types_by_name['LogicalPorts'] = _LOGICALPORTS
+DESCRIPTOR.message_types_by_name['LogicalDeviceDetails'] = _LOGICALDEVICEDETAILS
+DESCRIPTOR.message_types_by_name['FlowTableUpdate'] = _FLOWTABLEUPDATE
+DESCRIPTOR.message_types_by_name['GroupTableUpdate'] = _GROUPTABLEUPDATE
+DESCRIPTOR.message_types_by_name['Flows'] = _FLOWS
+DESCRIPTOR.message_types_by_name['FlowGroups'] = _FLOWGROUPS
+DESCRIPTOR.message_types_by_name['PacketIn'] = _PACKETIN
+DESCRIPTOR.message_types_by_name['PacketOut'] = _PACKETOUT
+
+LogicalDevice = _reflection.GeneratedProtocolMessageType('LogicalDevice', (_message.Message,), dict(
+  DESCRIPTOR = _LOGICALDEVICE,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.LogicalDevice)
+  ))
+_sym_db.RegisterMessage(LogicalDevice)
+
+LogicalDevices = _reflection.GeneratedProtocolMessageType('LogicalDevices', (_message.Message,), dict(
+  DESCRIPTOR = _LOGICALDEVICES,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.LogicalDevices)
+  ))
+_sym_db.RegisterMessage(LogicalDevices)
+
+LogicalPorts = _reflection.GeneratedProtocolMessageType('LogicalPorts', (_message.Message,), dict(
+  DESCRIPTOR = _LOGICALPORTS,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.LogicalPorts)
+  ))
+_sym_db.RegisterMessage(LogicalPorts)
+
+LogicalDeviceDetails = _reflection.GeneratedProtocolMessageType('LogicalDeviceDetails', (_message.Message,), dict(
+  DESCRIPTOR = _LOGICALDEVICEDETAILS,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.LogicalDeviceDetails)
+  ))
+_sym_db.RegisterMessage(LogicalDeviceDetails)
+
+FlowTableUpdate = _reflection.GeneratedProtocolMessageType('FlowTableUpdate', (_message.Message,), dict(
+  DESCRIPTOR = _FLOWTABLEUPDATE,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.FlowTableUpdate)
+  ))
+_sym_db.RegisterMessage(FlowTableUpdate)
+
+GroupTableUpdate = _reflection.GeneratedProtocolMessageType('GroupTableUpdate', (_message.Message,), dict(
+  DESCRIPTOR = _GROUPTABLEUPDATE,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.GroupTableUpdate)
+  ))
+_sym_db.RegisterMessage(GroupTableUpdate)
+
+Flows = _reflection.GeneratedProtocolMessageType('Flows', (_message.Message,), dict(
+  DESCRIPTOR = _FLOWS,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.Flows)
+  ))
+_sym_db.RegisterMessage(Flows)
+
+FlowGroups = _reflection.GeneratedProtocolMessageType('FlowGroups', (_message.Message,), dict(
+  DESCRIPTOR = _FLOWGROUPS,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.FlowGroups)
+  ))
+_sym_db.RegisterMessage(FlowGroups)
+
+PacketIn = _reflection.GeneratedProtocolMessageType('PacketIn', (_message.Message,), dict(
+  DESCRIPTOR = _PACKETIN,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.PacketIn)
+  ))
+_sym_db.RegisterMessage(PacketIn)
+
+PacketOut = _reflection.GeneratedProtocolMessageType('PacketOut', (_message.Message,), dict(
+  DESCRIPTOR = _PACKETOUT,
+  __module__ = 'logical_layer_pb2'
+  # @@protoc_insertion_point(class_scope:voltha.PacketOut)
+  ))
+_sym_db.RegisterMessage(PacketOut)
+
+
+import grpc
+from grpc.beta import implementations as beta_implementations
+from grpc.beta import interfaces as beta_interfaces
+from grpc.framework.common import cardinality
+from grpc.framework.interfaces.face import utilities as face_utilities
+
+
+class VolthaLogicalLayerStub(object):
+
+  def __init__(self, channel):
+    """Constructor.
+
+    Args:
+      channel: A grpc.Channel.
+    """
+    self.ListLogicalDevices = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/ListLogicalDevices',
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+        response_deserializer=LogicalDevices.FromString,
+        )
+    self.GetLogicalDevice = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/GetLogicalDevice',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=LogicalDeviceDetails.FromString,
+        )
+    self.ListLogicalDevicePorts = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/ListLogicalDevicePorts',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=LogicalPorts.FromString,
+        )
+    self.UpdateFlowTable = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/UpdateFlowTable',
+        request_serializer=FlowTableUpdate.SerializeToString,
+        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+        )
+    self.ListDeviceFlows = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/ListDeviceFlows',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=Flows.FromString,
+        )
+    self.UpdateGroupTable = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/UpdateGroupTable',
+        request_serializer=GroupTableUpdate.SerializeToString,
+        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+        )
+    self.ListDeviceFlowGroups = channel.unary_unary(
+        '/voltha.VolthaLogicalLayer/ListDeviceFlowGroups',
+        request_serializer=common__pb2.ID.SerializeToString,
+        response_deserializer=FlowGroups.FromString,
+        )
+    self.StreamPacketsOut = channel.stream_unary(
+        '/voltha.VolthaLogicalLayer/StreamPacketsOut',
+        request_serializer=PacketOut.SerializeToString,
+        response_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+        )
+    self.ReceivePacketsIn = channel.unary_stream(
+        '/voltha.VolthaLogicalLayer/ReceivePacketsIn',
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+        response_deserializer=PacketIn.FromString,
+        )
+
+
+class VolthaLogicalLayerServicer(object):
+
+  def ListLogicalDevices(self, request, context):
+    """List logical devices owned by this Voltha instance
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def GetLogicalDevice(self, request, context):
+    """Get detailed info on logical device owned by this Voltha instance
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def ListLogicalDevicePorts(self, request, context):
+    """List ports of a logical device
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def UpdateFlowTable(self, request, context):
+    """Update flow table for device
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def ListDeviceFlows(self, request, context):
+    """List all flows of a logical device
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def UpdateGroupTable(self, request, context):
+    """Update group tabel for device
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def ListDeviceFlowGroups(self, request, context):
+    """List all flow groups of a logical device
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def StreamPacketsOut(self, request_iterator, context):
+    """Stream control packets to the dataplane
+    This does not have an HTTP representation
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+  def ReceivePacketsIn(self, request, context):
+    """Receive control packet stream
+    This does not have an HTTP representation
+    """
+    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
+    context.set_details('Method not implemented!')
+    raise NotImplementedError('Method not implemented!')
+
+
+def add_VolthaLogicalLayerServicer_to_server(servicer, server):
+  rpc_method_handlers = {
+      'ListLogicalDevices': grpc.unary_unary_rpc_method_handler(
+          servicer.ListLogicalDevices,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+          response_serializer=LogicalDevices.SerializeToString,
+      ),
+      'GetLogicalDevice': grpc.unary_unary_rpc_method_handler(
+          servicer.GetLogicalDevice,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=LogicalDeviceDetails.SerializeToString,
+      ),
+      'ListLogicalDevicePorts': grpc.unary_unary_rpc_method_handler(
+          servicer.ListLogicalDevicePorts,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=LogicalPorts.SerializeToString,
+      ),
+      'UpdateFlowTable': grpc.unary_unary_rpc_method_handler(
+          servicer.UpdateFlowTable,
+          request_deserializer=FlowTableUpdate.FromString,
+          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+      ),
+      'ListDeviceFlows': grpc.unary_unary_rpc_method_handler(
+          servicer.ListDeviceFlows,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=Flows.SerializeToString,
+      ),
+      'UpdateGroupTable': grpc.unary_unary_rpc_method_handler(
+          servicer.UpdateGroupTable,
+          request_deserializer=GroupTableUpdate.FromString,
+          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+      ),
+      'ListDeviceFlowGroups': grpc.unary_unary_rpc_method_handler(
+          servicer.ListDeviceFlowGroups,
+          request_deserializer=common__pb2.ID.FromString,
+          response_serializer=FlowGroups.SerializeToString,
+      ),
+      'StreamPacketsOut': grpc.stream_unary_rpc_method_handler(
+          servicer.StreamPacketsOut,
+          request_deserializer=PacketOut.FromString,
+          response_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+      ),
+      'ReceivePacketsIn': grpc.unary_stream_rpc_method_handler(
+          servicer.ReceivePacketsIn,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+          response_serializer=PacketIn.SerializeToString,
+      ),
+  }
+  generic_handler = grpc.method_handlers_generic_handler(
+      'voltha.VolthaLogicalLayer', rpc_method_handlers)
+  server.add_generic_rpc_handlers((generic_handler,))
+
+
+class BetaVolthaLogicalLayerServicer(object):
+  def ListLogicalDevices(self, request, context):
+    """List logical devices owned by this Voltha instance
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def GetLogicalDevice(self, request, context):
+    """Get detailed info on logical device owned by this Voltha instance
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def ListLogicalDevicePorts(self, request, context):
+    """List ports of a logical device
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def UpdateFlowTable(self, request, context):
+    """Update flow table for device
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def ListDeviceFlows(self, request, context):
+    """List all flows of a logical device
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def UpdateGroupTable(self, request, context):
+    """Update group tabel for device
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def ListDeviceFlowGroups(self, request, context):
+    """List all flow groups of a logical device
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def StreamPacketsOut(self, request_iterator, context):
+    """Stream control packets to the dataplane
+    This does not have an HTTP representation
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+  def ReceivePacketsIn(self, request, context):
+    """Receive control packet stream
+    This does not have an HTTP representation
+    """
+    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
+
+
+class BetaVolthaLogicalLayerStub(object):
+  def ListLogicalDevices(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """List logical devices owned by this Voltha instance
+    """
+    raise NotImplementedError()
+  ListLogicalDevices.future = None
+  def GetLogicalDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Get detailed info on logical device owned by this Voltha instance
+    """
+    raise NotImplementedError()
+  GetLogicalDevice.future = None
+  def ListLogicalDevicePorts(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """List ports of a logical device
+    """
+    raise NotImplementedError()
+  ListLogicalDevicePorts.future = None
+  def UpdateFlowTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Update flow table for device
+    """
+    raise NotImplementedError()
+  UpdateFlowTable.future = None
+  def ListDeviceFlows(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """List all flows of a logical device
+    """
+    raise NotImplementedError()
+  ListDeviceFlows.future = None
+  def UpdateGroupTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Update group tabel for device
+    """
+    raise NotImplementedError()
+  UpdateGroupTable.future = None
+  def ListDeviceFlowGroups(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """List all flow groups of a logical device
+    """
+    raise NotImplementedError()
+  ListDeviceFlowGroups.future = None
+  def StreamPacketsOut(self, request_iterator, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Stream control packets to the dataplane
+    This does not have an HTTP representation
+    """
+    raise NotImplementedError()
+  StreamPacketsOut.future = None
+  def ReceivePacketsIn(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
+    """Receive control packet stream
+    This does not have an HTTP representation
+    """
+    raise NotImplementedError()
+
+
+def beta_create_VolthaLogicalLayer_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
+  request_deserializers = {
+    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): common__pb2.ID.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): common__pb2.ID.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): common__pb2.ID.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): common__pb2.ID.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.FromString,
+    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.FromString,
+    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.FromString,
+  }
+  response_serializers = {
+    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+  }
+  method_implementations = {
+    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): face_utilities.unary_unary_inline(servicer.GetLogicalDevice),
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): face_utilities.unary_unary_inline(servicer.ListDeviceFlowGroups),
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): face_utilities.unary_unary_inline(servicer.ListDeviceFlows),
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): face_utilities.unary_unary_inline(servicer.ListLogicalDevicePorts),
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): face_utilities.unary_unary_inline(servicer.ListLogicalDevices),
+    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): face_utilities.unary_stream_inline(servicer.ReceivePacketsIn),
+    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): face_utilities.stream_unary_inline(servicer.StreamPacketsOut),
+    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): face_utilities.unary_unary_inline(servicer.UpdateFlowTable),
+    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): face_utilities.unary_unary_inline(servicer.UpdateGroupTable),
+  }
+  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
+  return beta_implementations.server(method_implementations, options=server_options)
+
+
+def beta_create_VolthaLogicalLayer_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
+  request_serializers = {
+    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): common__pb2.ID.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): common__pb2.ID.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): common__pb2.ID.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): common__pb2.ID.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.SerializeToString,
+    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.SerializeToString,
+  }
+  response_deserializers = {
+    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.FromString,
+    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.FromString,
+    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.FromString,
+    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
+  }
+  cardinalities = {
+    'GetLogicalDevice': cardinality.Cardinality.UNARY_UNARY,
+    'ListDeviceFlowGroups': cardinality.Cardinality.UNARY_UNARY,
+    'ListDeviceFlows': cardinality.Cardinality.UNARY_UNARY,
+    'ListLogicalDevicePorts': cardinality.Cardinality.UNARY_UNARY,
+    'ListLogicalDevices': cardinality.Cardinality.UNARY_UNARY,
+    'ReceivePacketsIn': cardinality.Cardinality.UNARY_STREAM,
+    'StreamPacketsOut': cardinality.Cardinality.STREAM_UNARY,
+    'UpdateFlowTable': cardinality.Cardinality.UNARY_UNARY,
+    'UpdateGroupTable': cardinality.Cardinality.UNARY_UNARY,
+  }
+  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
+  return beta_implementations.dynamic_stub(channel, 'voltha.VolthaLogicalLayer', cardinalities, options=stub_options)
+# @@protoc_insertion_point(module_scope)
diff --git a/voltha/protos/schema.desc b/voltha/protos/schema.desc
index bb16d0d..1f15f1f 100644
--- a/voltha/protos/schema.desc
+++ b/voltha/protos/schema.desc
Binary files differ
diff --git a/voltha/protos/schema.proto b/voltha/protos/schema.proto
index 9e97c7f..5dc0eb8 100644
--- a/voltha/protos/schema.proto
+++ b/voltha/protos/schema.proto
@@ -3,6 +3,7 @@
 package schema;
 
 import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
 
 // Contains the name and content of a *.proto file
 message ProtoFile {
@@ -19,14 +20,11 @@
 
 }
 
-// Empty message
-message NullMessage {}
-
 // Schema services
 service SchemaService {
 
     // Return active grpc schemas
-    rpc GetSchema(NullMessage) returns (Schemas) {
+    rpc GetSchema(google.protobuf.Empty) returns (Schemas) {
         option (google.api.http) = {
             get: "/schema"
         };
diff --git a/voltha/protos/schema_pb2.py b/voltha/protos/schema_pb2.py
index 9f54c3a..266b463 100644
--- a/voltha/protos/schema_pb2.py
+++ b/voltha/protos/schema_pb2.py
@@ -14,15 +14,16 @@
 
 
 from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
+from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
 DESCRIPTOR = _descriptor.FileDescriptor(
   name='schema.proto',
   package='schema',
   syntax='proto3',
-  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\x1a\x1cgoogle/api/annotations.proto\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile\"\r\n\x0bNullMessage2S\n\rSchemaService\x12\x42\n\tGetSchema\x12\x13.schema.NullMessage\x1a\x0f.schema.Schemas\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/schemab\x06proto3')
+  serialized_pb=_b('\n\x0cschema.proto\x12\x06schema\x1a\x1cgoogle/api/annotations.proto\x1a\x1bgoogle/protobuf/empty.proto\"A\n\tProtoFile\x12\x11\n\tfile_name\x18\x01 \x01(\t\x12\r\n\x05proto\x18\x02 \x01(\t\x12\x12\n\ndescriptor\x18\x03 \x01(\x0c\",\n\x07Schemas\x12!\n\x06protos\x18\x01 \x03(\x0b\x32\x11.schema.ProtoFile2V\n\rSchemaService\x12\x45\n\tGetSchema\x12\x16.google.protobuf.Empty\x1a\x0f.schema.Schemas\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/schemab\x06proto3')
   ,
-  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,])
+  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,google_dot_protobuf_dot_empty__pb2.DESCRIPTOR,])
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
@@ -68,8 +69,8 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=54,
-  serialized_end=119,
+  serialized_start=83,
+  serialized_end=148,
 )
 
 
@@ -99,38 +100,13 @@
   extension_ranges=[],
   oneofs=[
   ],
-  serialized_start=121,
-  serialized_end=165,
-)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='schema.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=167,
-  serialized_end=180,
+  serialized_start=150,
+  serialized_end=194,
 )
 
 _SCHEMAS.fields_by_name['protos'].message_type = _PROTOFILE
 DESCRIPTOR.message_types_by_name['ProtoFile'] = _PROTOFILE
 DESCRIPTOR.message_types_by_name['Schemas'] = _SCHEMAS
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
 
 ProtoFile = _reflection.GeneratedProtocolMessageType('ProtoFile', (_message.Message,), dict(
   DESCRIPTOR = _PROTOFILE,
@@ -146,13 +122,6 @@
   ))
 _sym_db.RegisterMessage(Schemas)
 
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'schema_pb2'
-  # @@protoc_insertion_point(class_scope:schema.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
 
 import grpc
 from grpc.beta import implementations as beta_implementations
@@ -173,7 +142,7 @@
     """
     self.GetSchema = channel.unary_unary(
         '/schema.SchemaService/GetSchema',
-        request_serializer=NullMessage.SerializeToString,
+        request_serializer=google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
         response_deserializer=Schemas.FromString,
         )
 
@@ -194,7 +163,7 @@
   rpc_method_handlers = {
       'GetSchema': grpc.unary_unary_rpc_method_handler(
           servicer.GetSchema,
-          request_deserializer=NullMessage.FromString,
+          request_deserializer=google_dot_protobuf_dot_empty__pb2.Empty.FromString,
           response_serializer=Schemas.SerializeToString,
       ),
   }
@@ -224,7 +193,7 @@
 
 def beta_create_SchemaService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
   request_deserializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.FromString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.FromString,
   }
   response_serializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.SerializeToString,
@@ -238,7 +207,7 @@
 
 def beta_create_SchemaService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
   request_serializers = {
-    ('schema.SchemaService', 'GetSchema'): NullMessage.SerializeToString,
+    ('schema.SchemaService', 'GetSchema'): google_dot_protobuf_dot_empty__pb2.Empty.SerializeToString,
   }
   response_deserializers = {
     ('schema.SchemaService', 'GetSchema'): Schemas.FromString,
diff --git a/voltha/protos/voltha.desc b/voltha/protos/voltha.desc
index 55eeda7..c870956 100644
--- a/voltha/protos/voltha.desc
+++ b/voltha/protos/voltha.desc
Binary files differ
diff --git a/voltha/protos/voltha.proto b/voltha/protos/voltha.proto
index 573c982..d707780 100644
--- a/voltha/protos/voltha.proto
+++ b/voltha/protos/voltha.proto
@@ -1,364 +1,19 @@
+/*
+ * Top-level Voltha API definition
+ *
+ * For details, see individual definition files.
+ */
+
 syntax = "proto3";
 
 package voltha;
 
-import "google/api/annotations.proto";
-import "openflow_13.proto";
+import public "common.proto";
+import public "health.proto";
+import public "logical_layer.proto";
+import public "adapter.proto";
+import public "example_service.proto";
 
 option java_package = "org.opencord.voltha";
 option java_outer_classname = "VolthaProtos";
 option csharp_namespace = "Opencord.Voltha.Voltha";
-
-message NullMessage {}
-
-// Encode health status of a Voltha instance
-message HealthStatus {
-    // Health states
-    enum HealthState {
-        HEALTHY = 0;  // The instance is healthy
-        OVERLOADED = 1;  // The instance is overloaded, decrease query rate
-        DYING = 2;  // The instance is in a critical condition, do not use it
-    }
-
-    // Current state of health of this Voltha instance
-    HealthState state = 1;
-}
-
-// Health related services
-service HealthService {
-    // Return current health status of a Voltha instance
-    rpc GetHealthStatus(NullMessage) returns (HealthStatus) {
-        option (google.api.http) = {
-            get: "/health"
-        };
-    }
-}
-
-// (placeholder) Address as example message
-message Address {
-    string id = 7;  // ID of address record
-    string street = 1;  // Street address
-    string street2 = 2;  // Apartment, suite, building, etc.
-    string street3 = 3;  // Apartment, suite, building, etc.
-    string city = 4;  // City
-    string state = 5;  // State
-    uint32 zip = 6;   // Zip code
-}
-
-message Addresses {
-    repeated Address addresses = 1;
-}
-
-// (placeholder) A more complex message type for testing purposes
-message MoreComplex {
-    HealthStatus health = 1; // Embedded health status
-    int32 foo_counter = 2; // Counting foos
-    string name = 3;  // Name of this thing
-    repeated MoreComplex children = 4;  // Nested object to test recursion type
-    Address address = 5;
-}
-
-// (placeholder) Convey an identifier
-message ID {
-    string id = 1;
-}
-
-// Subscriber
-message Subscriber {
-    string id = 1;
-    // TODO add meat here
-}
-
-message Subscribers {
-    repeated Subscriber items = 1;
-}
-
-message LogicalDevice {
-    string id = 1;
-    uint64 datapath_id = 2;
-    openflow_13.ofp_desc desc = 3;
-}
-
-message LogicalDevices {
-    repeated LogicalDevice items = 1;  // List of logical device identifiers
-}
-
-message LogicalPorts {
-    repeated openflow_13.ofp_port items = 1;
-}
-
-message LogicalDeviceDetails {
-    string id = 1;
-    uint64 datapath_id = 2;
-    openflow_13.ofp_desc desc = 3;
-    openflow_13.ofp_switch_features switch_features = 4;
-}
-
-message FlowTableUpdate {
-    string id = 1; // device id
-    openflow_13.ofp_flow_mod flow_mod = 2;
-}
-
-message GroupTableUpdate {
-    string id = 1; // device id
-    openflow_13.ofp_group_mod group_mod = 2;
-}
-
-message Flows {
-    repeated openflow_13.ofp_flow_stats items = 1;
-}
-
-message FlowGroups {
-    repeated openflow_13.ofp_group_entry items = 1;
-}
-
-message PacketIn {
-    string id = 1; // device id
-    openflow_13.ofp_packet_in packet_in = 2;
-}
-
-message PacketOut {
-    string id = 1; // device id
-    openflow_13.ofp_packet_out packet_out = 2;
-}
-
-service VolthaLogicalLayer {
-
-    // List logical devices owned by this Voltha instance
-    rpc ListLogicalDevices(NullMessage) returns(LogicalDevices) {
-        option (google.api.http) = {
-            get: "/local/devices"
-        };
-    }
-
-    // Get detailed info on logical device owned by this Voltha instance
-    rpc GetLogicalDevice(ID) returns(LogicalDeviceDetails) {
-        option (google.api.http) = {
-            get: "/local/devices/{id}"
-        };
-    }
-
-    // List ports of a logical device
-    rpc ListLogicalDevicePorts(ID) returns(LogicalPorts) {
-        option (google.api.http) = {
-            get: "/local/devices/{id}/ports"
-        };
-    }
-
-    // Update flow table for device
-    rpc UpdateFlowTable(FlowTableUpdate) returns(NullMessage) {
-        option (google.api.http) = {
-            post: "/local/devices/{id}/flows"
-            body: "*"
-        };
-    }
-
-    // List all flows of a logical device
-    rpc ListDeviceFlows(ID) returns(Flows) {
-        option (google.api.http) = {
-            get: "/local/devices/{id}/flows"
-        };
-    }
-
-    // Update group tabel for device
-    rpc UpdateGroupTable(GroupTableUpdate) returns(NullMessage) {
-        option (google.api.http) = {
-            post: "/local/devices/{id}/groups"
-            body: "*"
-        };
-    }
-
-    // List all flow groups of a logical device
-    rpc ListDeviceFlowGroups(ID) returns(FlowGroups) {
-        option (google.api.http) = {
-            get: "/local/devices/{id}/groups"
-        };
-    }
-
-    // Stream control packets to the dataplane
-    rpc StreamPacketsOut(stream PacketOut) returns(NullMessage) {
-        // This does not have an HTTP representation
-    }
-
-    // Receive control packet stream
-    rpc ReceivePacketsIn(NullMessage) returns(stream PacketIn) {
-        // This does not have an HTTP representation
-    }
-
-    // Create a subscriber record
-    rpc CreateSubscriber(Subscriber) returns (Subscriber) {
-        option (google.api.http) = {
-            post: "/subscribers"
-            body: "*"
-        };
-    }
-
-    // Return an subscriber by ID
-    rpc GetSubscriber(ID) returns (Subscriber) {
-        option (google.api.http) = {
-            get: "/subscribers/{id}"
-        };
-    }
-
-    // Update an existing subscriber record by ID
-    rpc UpdateSubscriber(Subscriber) returns (Subscriber) {
-        option (google.api.http) = {
-            patch: "/subscribers/{id}"
-            body: "*"
-        };
-    }
-
-    // Delete a subscriber record by ID
-    rpc DeleteSubscriber(ID) returns (NullMessage) {
-        option (google.api.http) = {
-            delete: "/subscribers/{id}"
-        };
-    }
-
-    // List subscribers
-    rpc ListSubscribers(NullMessage) returns (Subscribers) {
-        option (google.api.http) = {
-            get: "/subscribers"
-        };
-    }
-}
-
-// (placeholder) This is an example service
-service ExampleService {
-
-    // Create an address record
-    rpc CreateAddress(Address) returns (Address) {
-        option (google.api.http) = {
-            post: "/addresses"
-            body: "*"
-        };
-    }
-
-    // Return an address by ID
-    rpc GetAddress(ID) returns (Address) {
-        option (google.api.http) = {
-            get: "/addresses/{id}"
-        };
-    }
-
-    // Update an existing address record by ID
-    rpc UpdateAddress(Address) returns (Address) {
-        option (google.api.http) = {
-            patch: "/addresses/{id}"
-            body: "*"
-        };
-    }
-
-    // Delete an address record by ID
-    rpc DeleteAddress(ID) returns (NullMessage) {
-        option (google.api.http) = {
-            delete: "/addresses/{id}"
-        };
-    }
-
-    // Return a bit more complex objects
-    rpc ListAddresses(NullMessage) returns (Addresses) {
-        option (google.api.http) = {
-            get: "/addresses"
-        };
-    }
-
-}
-
-service OpenFlow {
-
-    /*
-     * Hello message handshake, initiated by the client (controller)
-     */
-    rpc GetHello(openflow_13.ofp_hello)
-        returns(openflow_13.ofp_hello) {
-        // TODO http option
-    }
-
-    /*
-     * Echo request / reply, initiated by the client (controller)
-     */
-    rpc EchoRequest(openflow_13.ofp_header)
-        returns(openflow_13.ofp_header) {
-        // TODO http option
-    }
-
-    /*
-     * Experimental (extension) RPC
-     */
-    rpc ExperimenterRequest(openflow_13.ofp_experimenter_header)
-        returns(openflow_13.ofp_experimenter_header) {
-        // TODO http option
-    }
-
-    /*
-     * Get Switch Features
-     */
-    rpc GetSwitchFeatures(openflow_13.ofp_header)
-        returns(openflow_13.ofp_switch_features) {
-        // TODO http option
-    }
-
-    /*
-     * Get Switch Config
-     */
-    rpc GetSwitchConfig(openflow_13.ofp_header)
-        returns(openflow_13.ofp_switch_config) {
-        // TODO http option
-    }
-
-    /*
-     * Set Config
-     */
-    rpc SetConfig(openflow_13.ofp_switch_config)
-        returns(openflow_13.ofp_header) {
-        // TODO http option
-    }
-
-    /*
-     * Receive Packet-In messages
-     */
-    rpc ReceivePacketInMessages(openflow_13.ofp_header)
-        returns(stream openflow_13.ofp_packet_in) {
-        // TODO http option
-    }
-
-    /*
-     * Send Packet-Out messages
-     */
-    rpc SendPacketOutMessages(openflow_13.ofp_packet_out)
-        returns(openflow_13.ofp_header) {
-        // TODO http option
-    }
-
-    // TODO continue
-
-}
-
-/*
-message FlowSwitch {
-    string id = 1;
-    string name = 2;
-    uint64 device_id = 3;
-    repeated FlowPort ports = 4;
-}
-
-enum PortSpeed {
-    // TODO
-}
-
-enum PortType {
-    // TODO
-}
-
-message FlowPort {
-    string id = 1;
-    string name = 2;
-    uint32 number = 3;
-    string mac_address = 4;
-    PortSpeed speed = 5;
-    PortType type = 6;
-    string flow_switch_id = 7;
-}
-*/
-
diff --git a/voltha/protos/voltha_pb2.py b/voltha/protos/voltha_pb2.py
index 3135e84..1bae7aa 100644
--- a/voltha/protos/voltha_pb2.py
+++ b/voltha/protos/voltha_pb2.py
@@ -13,894 +13,29 @@
 _sym_db = _symbol_database.Default()
 
 
-from google.api import annotations_pb2 as google_dot_api_dot_annotations__pb2
-import openflow_13_pb2 as openflow__13__pb2
+import common_pb2 as common__pb2
+import health_pb2 as health__pb2
+import logical_layer_pb2 as logical__layer__pb2
+import adapter_pb2 as adapter__pb2
+import example_service_pb2 as example__service__pb2
 
+from common_pb2 import *
+from health_pb2 import *
+from logical_layer_pb2 import *
+from adapter_pb2 import *
+from example_service_pb2 import *
 
 DESCRIPTOR = _descriptor.FileDescriptor(
   name='voltha.proto',
   package='voltha',
   syntax='proto3',
-  serialized_pb=_b('\n\x0cvoltha.proto\x12\x06voltha\x1a\x1cgoogle/api/annotations.proto\x1a\x11openflow_13.proto\"\r\n\x0bNullMessage\"v\n\x0cHealthStatus\x12/\n\x05state\x18\x01 \x01(\x0e\x32 .voltha.HealthStatus.HealthState\"5\n\x0bHealthState\x12\x0b\n\x07HEALTHY\x10\x00\x12\x0e\n\nOVERLOADED\x10\x01\x12\t\n\x05\x44YING\x10\x02\"q\n\x07\x41\x64\x64ress\x12\n\n\x02id\x18\x07 \x01(\t\x12\x0e\n\x06street\x18\x01 \x01(\t\x12\x0f\n\x07street2\x18\x02 \x01(\t\x12\x0f\n\x07street3\x18\x03 \x01(\t\x12\x0c\n\x04\x63ity\x18\x04 \x01(\t\x12\r\n\x05state\x18\x05 \x01(\t\x12\x0b\n\x03zip\x18\x06 \x01(\r\"/\n\tAddresses\x12\"\n\taddresses\x18\x01 \x03(\x0b\x32\x0f.voltha.Address\"\x9f\x01\n\x0bMoreComplex\x12$\n\x06health\x18\x01 \x01(\x0b\x32\x14.voltha.HealthStatus\x12\x13\n\x0b\x66oo_counter\x18\x02 \x01(\x05\x12\x0c\n\x04name\x18\x03 \x01(\t\x12%\n\x08\x63hildren\x18\x04 \x03(\x0b\x32\x13.voltha.MoreComplex\x12 \n\x07\x61\x64\x64ress\x18\x05 \x01(\x0b\x32\x0f.voltha.Address\"\x10\n\x02ID\x12\n\n\x02id\x18\x01 \x01(\t\"\x18\n\nSubscriber\x12\n\n\x02id\x18\x01 \x01(\t\"0\n\x0bSubscribers\x12!\n\x05items\x18\x01 \x03(\x0b\x32\x12.voltha.Subscriber\"U\n\rLogicalDevice\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\"6\n\x0eLogicalDevices\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.voltha.LogicalDevice\"4\n\x0cLogicalPorts\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.openflow_13.ofp_port\"\x97\x01\n\x14LogicalDeviceDetails\x12\n\n\x02id\x18\x01 \x01(\t\x12\x13\n\x0b\x64\x61tapath_id\x18\x02 \x01(\x04\x12#\n\x04\x64\x65sc\x18\x03 \x01(\x0b\x32\x15.openflow_13.ofp_desc\x12\x39\n\x0fswitch_features\x18\x04 \x01(\x0b\x32 .openflow_13.ofp_switch_features\"J\n\x0f\x46lowTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12+\n\x08\x66low_mod\x18\x02 \x01(\x0b\x32\x19.openflow_13.ofp_flow_mod\"M\n\x10GroupTableUpdate\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tgroup_mod\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_group_mod\"3\n\x05\x46lows\x12*\n\x05items\x18\x01 \x03(\x0b\x32\x1b.openflow_13.ofp_flow_stats\"9\n\nFlowGroups\x12+\n\x05items\x18\x01 \x03(\x0b\x32\x1c.openflow_13.ofp_group_entry\"E\n\x08PacketIn\x12\n\n\x02id\x18\x01 \x01(\t\x12-\n\tpacket_in\x18\x02 \x01(\x0b\x32\x1a.openflow_13.ofp_packet_in\"H\n\tPacketOut\x12\n\n\x02id\x18\x01 \x01(\t\x12/\n\npacket_out\x18\x02 \x01(\x0b\x32\x1b.openflow_13.ofp_packet_out2^\n\rHealthService\x12M\n\x0fGetHealthStatus\x12\x13.voltha.NullMessage\x1a\x14.voltha.HealthStatus\"\x0f\x82\xd3\xe4\x93\x02\t\x12\x07/health2\xc4\t\n\x12VolthaLogicalLayer\x12Y\n\x12ListLogicalDevices\x12\x13.voltha.NullMessage\x1a\x16.voltha.LogicalDevices\"\x16\x82\xd3\xe4\x93\x02\x10\x12\x0e/local/devices\x12Y\n\x10GetLogicalDevice\x12\n.voltha.ID\x1a\x1c.voltha.LogicalDeviceDetails\"\x1b\x82\xd3\xe4\x93\x02\x15\x12\x13/local/devices/{id}\x12]\n\x16ListLogicalDevicePorts\x12\n.voltha.ID\x1a\x14.voltha.LogicalPorts\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/ports\x12\x65\n\x0fUpdateFlowTable\x12\x17.voltha.FlowTableUpdate\x1a\x13.voltha.NullMessage\"$\x82\xd3\xe4\x93\x02\x1e\"\x19/local/devices/{id}/flows:\x01*\x12O\n\x0fListDeviceFlows\x12\n.voltha.ID\x1a\r.voltha.Flows\"!\x82\xd3\xe4\x93\x02\x1b\x12\x19/local/devices/{id}/flows\x12h\n\x10UpdateGroupTable\x12\x18.voltha.GroupTableUpdate\x1a\x13.voltha.NullMessage\"%\x82\xd3\xe4\x93\x02\x1f\"\x1a/local/devices/{id}/groups:\x01*\x12Z\n\x14ListDeviceFlowGroups\x12\n.voltha.ID\x1a\x12.voltha.FlowGroups\"\"\x82\xd3\xe4\x93\x02\x1c\x12\x1a/local/devices/{id}/groups\x12>\n\x10StreamPacketsOut\x12\x11.voltha.PacketOut\x1a\x13.voltha.NullMessage\"\x00(\x01\x12=\n\x10ReceivePacketsIn\x12\x13.voltha.NullMessage\x1a\x10.voltha.PacketIn\"\x00\x30\x01\x12S\n\x10\x43reateSubscriber\x12\x12.voltha.Subscriber\x1a\x12.voltha.Subscriber\"\x17\x82\xd3\xe4\x93\x02\x11\"\x0c/subscribers:\x01*\x12J\n\rGetSubscriber\x12\n.voltha.ID\x1a\x12.voltha.Subscriber\"\x19\x82\xd3\xe4\x93\x02\x13\x12\x11/subscribers/{id}\x12X\n\x10UpdateSubscriber\x12\x12.voltha.Subscriber\x1a\x12.voltha.Subscriber\"\x1c\x82\xd3\xe4\x93\x02\x16\x32\x11/subscribers/{id}:\x01*\x12N\n\x10\x44\x65leteSubscriber\x12\n.voltha.ID\x1a\x13.voltha.NullMessage\"\x19\x82\xd3\xe4\x93\x02\x13*\x11/subscribers/{id}\x12Q\n\x0fListSubscribers\x12\x13.voltha.NullMessage\x1a\x13.voltha.Subscribers\"\x14\x82\xd3\xe4\x93\x02\x0e\x12\x0c/subscribers2\x85\x03\n\x0e\x45xampleService\x12H\n\rCreateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x15\x82\xd3\xe4\x93\x02\x0f\"\n/addresses:\x01*\x12\x42\n\nGetAddress\x12\n.voltha.ID\x1a\x0f.voltha.Address\"\x17\x82\xd3\xe4\x93\x02\x11\x12\x0f/addresses/{id}\x12M\n\rUpdateAddress\x12\x0f.voltha.Address\x1a\x0f.voltha.Address\"\x1a\x82\xd3\xe4\x93\x02\x14\x32\x0f/addresses/{id}:\x01*\x12I\n\rDeleteAddress\x12\n.voltha.ID\x1a\x13.voltha.NullMessage\"\x17\x82\xd3\xe4\x93\x02\x11*\x0f/addresses/{id}\x12K\n\rListAddresses\x12\x13.voltha.NullMessage\x1a\x11.voltha.Addresses\"\x12\x82\xd3\xe4\x93\x02\x0c\x12\n/addresses2\xfd\x04\n\x08OpenFlow\x12<\n\x08GetHello\x12\x16.openflow_13.ofp_hello\x1a\x16.openflow_13.ofp_hello\"\x00\x12\x41\n\x0b\x45\x63hoRequest\x12\x17.openflow_13.ofp_header\x1a\x17.openflow_13.ofp_header\"\x00\x12\x63\n\x13\x45xperimenterRequest\x12$.openflow_13.ofp_experimenter_header\x1a$.openflow_13.ofp_experimenter_header\"\x00\x12P\n\x11GetSwitchFeatures\x12\x17.openflow_13.ofp_header\x1a .openflow_13.ofp_switch_features\"\x00\x12L\n\x0fGetSwitchConfig\x12\x17.openflow_13.ofp_header\x1a\x1e.openflow_13.ofp_switch_config\"\x00\x12\x46\n\tSetConfig\x12\x1e.openflow_13.ofp_switch_config\x1a\x17.openflow_13.ofp_header\"\x00\x12R\n\x17ReceivePacketInMessages\x12\x17.openflow_13.ofp_header\x1a\x1a.openflow_13.ofp_packet_in\"\x00\x30\x01\x12O\n\x15SendPacketOutMessages\x12\x1b.openflow_13.ofp_packet_out\x1a\x17.openflow_13.ofp_header\"\x00\x42<\n\x13org.opencord.volthaB\x0cVolthaProtos\xaa\x02\x16Opencord.Voltha.Volthab\x06proto3')
+  serialized_pb=_b('\n\x0cvoltha.proto\x12\x06voltha\x1a\x0c\x63ommon.proto\x1a\x0chealth.proto\x1a\x13logical_layer.proto\x1a\radapter.proto\x1a\x15\x65xample_service.protoB<\n\x13org.opencord.volthaB\x0cVolthaProtos\xaa\x02\x16Opencord.Voltha.VolthaP\x00P\x01P\x02P\x03P\x04\x62\x06proto3')
   ,
-  dependencies=[google_dot_api_dot_annotations__pb2.DESCRIPTOR,openflow__13__pb2.DESCRIPTOR,])
+  dependencies=[common__pb2.DESCRIPTOR,health__pb2.DESCRIPTOR,logical__layer__pb2.DESCRIPTOR,adapter__pb2.DESCRIPTOR,example__service__pb2.DESCRIPTOR,])
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
 
 
-_HEALTHSTATUS_HEALTHSTATE = _descriptor.EnumDescriptor(
-  name='HealthState',
-  full_name='voltha.HealthStatus.HealthState',
-  filename=None,
-  file=DESCRIPTOR,
-  values=[
-    _descriptor.EnumValueDescriptor(
-      name='HEALTHY', index=0, number=0,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='OVERLOADED', index=1, number=1,
-      options=None,
-      type=None),
-    _descriptor.EnumValueDescriptor(
-      name='DYING', index=2, number=2,
-      options=None,
-      type=None),
-  ],
-  containing_type=None,
-  options=None,
-  serialized_start=153,
-  serialized_end=206,
-)
-_sym_db.RegisterEnumDescriptor(_HEALTHSTATUS_HEALTHSTATE)
-
-
-_NULLMESSAGE = _descriptor.Descriptor(
-  name='NullMessage',
-  full_name='voltha.NullMessage',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=73,
-  serialized_end=86,
-)
-
-
-_HEALTHSTATUS = _descriptor.Descriptor(
-  name='HealthStatus',
-  full_name='voltha.HealthStatus',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='state', full_name='voltha.HealthStatus.state', index=0,
-      number=1, type=14, cpp_type=8, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-    _HEALTHSTATUS_HEALTHSTATE,
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=88,
-  serialized_end=206,
-)
-
-
-_ADDRESS = _descriptor.Descriptor(
-  name='Address',
-  full_name='voltha.Address',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.Address.id', index=0,
-      number=7, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street', full_name='voltha.Address.street', index=1,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street2', full_name='voltha.Address.street2', index=2,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='street3', full_name='voltha.Address.street3', index=3,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='city', full_name='voltha.Address.city', index=4,
-      number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='state', full_name='voltha.Address.state', index=5,
-      number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='zip', full_name='voltha.Address.zip', index=6,
-      number=6, type=13, cpp_type=3, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=208,
-  serialized_end=321,
-)
-
-
-_ADDRESSES = _descriptor.Descriptor(
-  name='Addresses',
-  full_name='voltha.Addresses',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='addresses', full_name='voltha.Addresses.addresses', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=323,
-  serialized_end=370,
-)
-
-
-_MORECOMPLEX = _descriptor.Descriptor(
-  name='MoreComplex',
-  full_name='voltha.MoreComplex',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='health', full_name='voltha.MoreComplex.health', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='foo_counter', full_name='voltha.MoreComplex.foo_counter', index=1,
-      number=2, type=5, cpp_type=1, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='name', full_name='voltha.MoreComplex.name', index=2,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='children', full_name='voltha.MoreComplex.children', index=3,
-      number=4, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='address', full_name='voltha.MoreComplex.address', index=4,
-      number=5, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=373,
-  serialized_end=532,
-)
-
-
-_ID = _descriptor.Descriptor(
-  name='ID',
-  full_name='voltha.ID',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.ID.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=534,
-  serialized_end=550,
-)
-
-
-_SUBSCRIBER = _descriptor.Descriptor(
-  name='Subscriber',
-  full_name='voltha.Subscriber',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.Subscriber.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=552,
-  serialized_end=576,
-)
-
-
-_SUBSCRIBERS = _descriptor.Descriptor(
-  name='Subscribers',
-  full_name='voltha.Subscribers',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.Subscribers.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=578,
-  serialized_end=626,
-)
-
-
-_LOGICALDEVICE = _descriptor.Descriptor(
-  name='LogicalDevice',
-  full_name='voltha.LogicalDevice',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.LogicalDevice.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='datapath_id', full_name='voltha.LogicalDevice.datapath_id', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='voltha.LogicalDevice.desc', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=628,
-  serialized_end=713,
-)
-
-
-_LOGICALDEVICES = _descriptor.Descriptor(
-  name='LogicalDevices',
-  full_name='voltha.LogicalDevices',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.LogicalDevices.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=715,
-  serialized_end=769,
-)
-
-
-_LOGICALPORTS = _descriptor.Descriptor(
-  name='LogicalPorts',
-  full_name='voltha.LogicalPorts',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.LogicalPorts.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=771,
-  serialized_end=823,
-)
-
-
-_LOGICALDEVICEDETAILS = _descriptor.Descriptor(
-  name='LogicalDeviceDetails',
-  full_name='voltha.LogicalDeviceDetails',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.LogicalDeviceDetails.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='datapath_id', full_name='voltha.LogicalDeviceDetails.datapath_id', index=1,
-      number=2, type=4, cpp_type=4, label=1,
-      has_default_value=False, default_value=0,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='desc', full_name='voltha.LogicalDeviceDetails.desc', index=2,
-      number=3, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='switch_features', full_name='voltha.LogicalDeviceDetails.switch_features', index=3,
-      number=4, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=826,
-  serialized_end=977,
-)
-
-
-_FLOWTABLEUPDATE = _descriptor.Descriptor(
-  name='FlowTableUpdate',
-  full_name='voltha.FlowTableUpdate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.FlowTableUpdate.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='flow_mod', full_name='voltha.FlowTableUpdate.flow_mod', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=979,
-  serialized_end=1053,
-)
-
-
-_GROUPTABLEUPDATE = _descriptor.Descriptor(
-  name='GroupTableUpdate',
-  full_name='voltha.GroupTableUpdate',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.GroupTableUpdate.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='group_mod', full_name='voltha.GroupTableUpdate.group_mod', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1055,
-  serialized_end=1132,
-)
-
-
-_FLOWS = _descriptor.Descriptor(
-  name='Flows',
-  full_name='voltha.Flows',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.Flows.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1134,
-  serialized_end=1185,
-)
-
-
-_FLOWGROUPS = _descriptor.Descriptor(
-  name='FlowGroups',
-  full_name='voltha.FlowGroups',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='items', full_name='voltha.FlowGroups.items', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1187,
-  serialized_end=1244,
-)
-
-
-_PACKETIN = _descriptor.Descriptor(
-  name='PacketIn',
-  full_name='voltha.PacketIn',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.PacketIn.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_in', full_name='voltha.PacketIn.packet_in', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1246,
-  serialized_end=1315,
-)
-
-
-_PACKETOUT = _descriptor.Descriptor(
-  name='PacketOut',
-  full_name='voltha.PacketOut',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='id', full_name='voltha.PacketOut.id', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-    _descriptor.FieldDescriptor(
-      name='packet_out', full_name='voltha.PacketOut.packet_out', index=1,
-      number=2, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      options=None),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=1317,
-  serialized_end=1389,
-)
-
-_HEALTHSTATUS.fields_by_name['state'].enum_type = _HEALTHSTATUS_HEALTHSTATE
-_HEALTHSTATUS_HEALTHSTATE.containing_type = _HEALTHSTATUS
-_ADDRESSES.fields_by_name['addresses'].message_type = _ADDRESS
-_MORECOMPLEX.fields_by_name['health'].message_type = _HEALTHSTATUS
-_MORECOMPLEX.fields_by_name['children'].message_type = _MORECOMPLEX
-_MORECOMPLEX.fields_by_name['address'].message_type = _ADDRESS
-_SUBSCRIBERS.fields_by_name['items'].message_type = _SUBSCRIBER
-_LOGICALDEVICE.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
-_LOGICALDEVICES.fields_by_name['items'].message_type = _LOGICALDEVICE
-_LOGICALPORTS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_PORT
-_LOGICALDEVICEDETAILS.fields_by_name['desc'].message_type = openflow__13__pb2._OFP_DESC
-_LOGICALDEVICEDETAILS.fields_by_name['switch_features'].message_type = openflow__13__pb2._OFP_SWITCH_FEATURES
-_FLOWTABLEUPDATE.fields_by_name['flow_mod'].message_type = openflow__13__pb2._OFP_FLOW_MOD
-_GROUPTABLEUPDATE.fields_by_name['group_mod'].message_type = openflow__13__pb2._OFP_GROUP_MOD
-_FLOWS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_FLOW_STATS
-_FLOWGROUPS.fields_by_name['items'].message_type = openflow__13__pb2._OFP_GROUP_ENTRY
-_PACKETIN.fields_by_name['packet_in'].message_type = openflow__13__pb2._OFP_PACKET_IN
-_PACKETOUT.fields_by_name['packet_out'].message_type = openflow__13__pb2._OFP_PACKET_OUT
-DESCRIPTOR.message_types_by_name['NullMessage'] = _NULLMESSAGE
-DESCRIPTOR.message_types_by_name['HealthStatus'] = _HEALTHSTATUS
-DESCRIPTOR.message_types_by_name['Address'] = _ADDRESS
-DESCRIPTOR.message_types_by_name['Addresses'] = _ADDRESSES
-DESCRIPTOR.message_types_by_name['MoreComplex'] = _MORECOMPLEX
-DESCRIPTOR.message_types_by_name['ID'] = _ID
-DESCRIPTOR.message_types_by_name['Subscriber'] = _SUBSCRIBER
-DESCRIPTOR.message_types_by_name['Subscribers'] = _SUBSCRIBERS
-DESCRIPTOR.message_types_by_name['LogicalDevice'] = _LOGICALDEVICE
-DESCRIPTOR.message_types_by_name['LogicalDevices'] = _LOGICALDEVICES
-DESCRIPTOR.message_types_by_name['LogicalPorts'] = _LOGICALPORTS
-DESCRIPTOR.message_types_by_name['LogicalDeviceDetails'] = _LOGICALDEVICEDETAILS
-DESCRIPTOR.message_types_by_name['FlowTableUpdate'] = _FLOWTABLEUPDATE
-DESCRIPTOR.message_types_by_name['GroupTableUpdate'] = _GROUPTABLEUPDATE
-DESCRIPTOR.message_types_by_name['Flows'] = _FLOWS
-DESCRIPTOR.message_types_by_name['FlowGroups'] = _FLOWGROUPS
-DESCRIPTOR.message_types_by_name['PacketIn'] = _PACKETIN
-DESCRIPTOR.message_types_by_name['PacketOut'] = _PACKETOUT
-
-NullMessage = _reflection.GeneratedProtocolMessageType('NullMessage', (_message.Message,), dict(
-  DESCRIPTOR = _NULLMESSAGE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.NullMessage)
-  ))
-_sym_db.RegisterMessage(NullMessage)
-
-HealthStatus = _reflection.GeneratedProtocolMessageType('HealthStatus', (_message.Message,), dict(
-  DESCRIPTOR = _HEALTHSTATUS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.HealthStatus)
-  ))
-_sym_db.RegisterMessage(HealthStatus)
-
-Address = _reflection.GeneratedProtocolMessageType('Address', (_message.Message,), dict(
-  DESCRIPTOR = _ADDRESS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Address)
-  ))
-_sym_db.RegisterMessage(Address)
-
-Addresses = _reflection.GeneratedProtocolMessageType('Addresses', (_message.Message,), dict(
-  DESCRIPTOR = _ADDRESSES,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Addresses)
-  ))
-_sym_db.RegisterMessage(Addresses)
-
-MoreComplex = _reflection.GeneratedProtocolMessageType('MoreComplex', (_message.Message,), dict(
-  DESCRIPTOR = _MORECOMPLEX,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.MoreComplex)
-  ))
-_sym_db.RegisterMessage(MoreComplex)
-
-ID = _reflection.GeneratedProtocolMessageType('ID', (_message.Message,), dict(
-  DESCRIPTOR = _ID,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.ID)
-  ))
-_sym_db.RegisterMessage(ID)
-
-Subscriber = _reflection.GeneratedProtocolMessageType('Subscriber', (_message.Message,), dict(
-  DESCRIPTOR = _SUBSCRIBER,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Subscriber)
-  ))
-_sym_db.RegisterMessage(Subscriber)
-
-Subscribers = _reflection.GeneratedProtocolMessageType('Subscribers', (_message.Message,), dict(
-  DESCRIPTOR = _SUBSCRIBERS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Subscribers)
-  ))
-_sym_db.RegisterMessage(Subscribers)
-
-LogicalDevice = _reflection.GeneratedProtocolMessageType('LogicalDevice', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDevice)
-  ))
-_sym_db.RegisterMessage(LogicalDevice)
-
-LogicalDevices = _reflection.GeneratedProtocolMessageType('LogicalDevices', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICES,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDevices)
-  ))
-_sym_db.RegisterMessage(LogicalDevices)
-
-LogicalPorts = _reflection.GeneratedProtocolMessageType('LogicalPorts', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALPORTS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalPorts)
-  ))
-_sym_db.RegisterMessage(LogicalPorts)
-
-LogicalDeviceDetails = _reflection.GeneratedProtocolMessageType('LogicalDeviceDetails', (_message.Message,), dict(
-  DESCRIPTOR = _LOGICALDEVICEDETAILS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.LogicalDeviceDetails)
-  ))
-_sym_db.RegisterMessage(LogicalDeviceDetails)
-
-FlowTableUpdate = _reflection.GeneratedProtocolMessageType('FlowTableUpdate', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWTABLEUPDATE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.FlowTableUpdate)
-  ))
-_sym_db.RegisterMessage(FlowTableUpdate)
-
-GroupTableUpdate = _reflection.GeneratedProtocolMessageType('GroupTableUpdate', (_message.Message,), dict(
-  DESCRIPTOR = _GROUPTABLEUPDATE,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.GroupTableUpdate)
-  ))
-_sym_db.RegisterMessage(GroupTableUpdate)
-
-Flows = _reflection.GeneratedProtocolMessageType('Flows', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.Flows)
-  ))
-_sym_db.RegisterMessage(Flows)
-
-FlowGroups = _reflection.GeneratedProtocolMessageType('FlowGroups', (_message.Message,), dict(
-  DESCRIPTOR = _FLOWGROUPS,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.FlowGroups)
-  ))
-_sym_db.RegisterMessage(FlowGroups)
-
-PacketIn = _reflection.GeneratedProtocolMessageType('PacketIn', (_message.Message,), dict(
-  DESCRIPTOR = _PACKETIN,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.PacketIn)
-  ))
-_sym_db.RegisterMessage(PacketIn)
-
-PacketOut = _reflection.GeneratedProtocolMessageType('PacketOut', (_message.Message,), dict(
-  DESCRIPTOR = _PACKETOUT,
-  __module__ = 'voltha_pb2'
-  # @@protoc_insertion_point(class_scope:voltha.PacketOut)
-  ))
-_sym_db.RegisterMessage(PacketOut)
 
 
 DESCRIPTOR.has_options = True
@@ -910,1164 +45,4 @@
 from grpc.beta import interfaces as beta_interfaces
 from grpc.framework.common import cardinality
 from grpc.framework.interfaces.face import utilities as face_utilities
-
-
-class HealthServiceStub(object):
-  """Health related services
-  """
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.GetHealthStatus = channel.unary_unary(
-        '/voltha.HealthService/GetHealthStatus',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=HealthStatus.FromString,
-        )
-
-
-class HealthServiceServicer(object):
-  """Health related services
-  """
-
-  def GetHealthStatus(self, request, context):
-    """Return current health status of a Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_HealthServiceServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'GetHealthStatus': grpc.unary_unary_rpc_method_handler(
-          servicer.GetHealthStatus,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=HealthStatus.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.HealthService', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaHealthServiceServicer(object):
-  """Health related services
-  """
-  def GetHealthStatus(self, request, context):
-    """Return current health status of a Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaHealthServiceStub(object):
-  """Health related services
-  """
-  def GetHealthStatus(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return current health status of a Voltha instance
-    """
-    raise NotImplementedError()
-  GetHealthStatus.future = None
-
-
-def beta_create_HealthService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): NullMessage.FromString,
-  }
-  response_serializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.HealthService', 'GetHealthStatus'): face_utilities.unary_unary_inline(servicer.GetHealthStatus),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_HealthService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): NullMessage.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.HealthService', 'GetHealthStatus'): HealthStatus.FromString,
-  }
-  cardinalities = {
-    'GetHealthStatus': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.HealthService', cardinalities, options=stub_options)
-
-
-class VolthaLogicalLayerStub(object):
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.ListLogicalDevices = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListLogicalDevices',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=LogicalDevices.FromString,
-        )
-    self.GetLogicalDevice = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/GetLogicalDevice',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=LogicalDeviceDetails.FromString,
-        )
-    self.ListLogicalDevicePorts = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListLogicalDevicePorts',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=LogicalPorts.FromString,
-        )
-    self.UpdateFlowTable = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateFlowTable',
-        request_serializer=FlowTableUpdate.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListDeviceFlows = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListDeviceFlows',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Flows.FromString,
-        )
-    self.UpdateGroupTable = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateGroupTable',
-        request_serializer=GroupTableUpdate.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListDeviceFlowGroups = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListDeviceFlowGroups',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=FlowGroups.FromString,
-        )
-    self.StreamPacketsOut = channel.stream_unary(
-        '/voltha.VolthaLogicalLayer/StreamPacketsOut',
-        request_serializer=PacketOut.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ReceivePacketsIn = channel.unary_stream(
-        '/voltha.VolthaLogicalLayer/ReceivePacketsIn',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=PacketIn.FromString,
-        )
-    self.CreateSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/CreateSubscriber',
-        request_serializer=Subscriber.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.GetSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/GetSubscriber',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.UpdateSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/UpdateSubscriber',
-        request_serializer=Subscriber.SerializeToString,
-        response_deserializer=Subscriber.FromString,
-        )
-    self.DeleteSubscriber = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/DeleteSubscriber',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListSubscribers = channel.unary_unary(
-        '/voltha.VolthaLogicalLayer/ListSubscribers',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=Subscribers.FromString,
-        )
-
-
-class VolthaLogicalLayerServicer(object):
-
-  def ListLogicalDevices(self, request, context):
-    """List logical devices owned by this Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetLogicalDevice(self, request, context):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListLogicalDevicePorts(self, request, context):
-    """List ports of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateFlowTable(self, request, context):
-    """Update flow table for device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListDeviceFlows(self, request, context):
-    """List all flows of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateGroupTable(self, request, context):
-    """Update group tabel for device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListDeviceFlowGroups(self, request, context):
-    """List all flow groups of a logical device
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def StreamPacketsOut(self, request_iterator, context):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ReceivePacketsIn(self, request, context):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def CreateSubscriber(self, request, context):
-    """Create a subscriber record
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSubscriber(self, request, context):
-    """Return an subscriber by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateSubscriber(self, request, context):
-    """Update an existing subscriber record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def DeleteSubscriber(self, request, context):
-    """Delete a subscriber record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListSubscribers(self, request, context):
-    """List subscribers
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_VolthaLogicalLayerServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'ListLogicalDevices': grpc.unary_unary_rpc_method_handler(
-          servicer.ListLogicalDevices,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=LogicalDevices.SerializeToString,
-      ),
-      'GetLogicalDevice': grpc.unary_unary_rpc_method_handler(
-          servicer.GetLogicalDevice,
-          request_deserializer=ID.FromString,
-          response_serializer=LogicalDeviceDetails.SerializeToString,
-      ),
-      'ListLogicalDevicePorts': grpc.unary_unary_rpc_method_handler(
-          servicer.ListLogicalDevicePorts,
-          request_deserializer=ID.FromString,
-          response_serializer=LogicalPorts.SerializeToString,
-      ),
-      'UpdateFlowTable': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateFlowTable,
-          request_deserializer=FlowTableUpdate.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListDeviceFlows': grpc.unary_unary_rpc_method_handler(
-          servicer.ListDeviceFlows,
-          request_deserializer=ID.FromString,
-          response_serializer=Flows.SerializeToString,
-      ),
-      'UpdateGroupTable': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateGroupTable,
-          request_deserializer=GroupTableUpdate.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListDeviceFlowGroups': grpc.unary_unary_rpc_method_handler(
-          servicer.ListDeviceFlowGroups,
-          request_deserializer=ID.FromString,
-          response_serializer=FlowGroups.SerializeToString,
-      ),
-      'StreamPacketsOut': grpc.stream_unary_rpc_method_handler(
-          servicer.StreamPacketsOut,
-          request_deserializer=PacketOut.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ReceivePacketsIn': grpc.unary_stream_rpc_method_handler(
-          servicer.ReceivePacketsIn,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=PacketIn.SerializeToString,
-      ),
-      'CreateSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.CreateSubscriber,
-          request_deserializer=Subscriber.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'GetSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSubscriber,
-          request_deserializer=ID.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'UpdateSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateSubscriber,
-          request_deserializer=Subscriber.FromString,
-          response_serializer=Subscriber.SerializeToString,
-      ),
-      'DeleteSubscriber': grpc.unary_unary_rpc_method_handler(
-          servicer.DeleteSubscriber,
-          request_deserializer=ID.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListSubscribers': grpc.unary_unary_rpc_method_handler(
-          servicer.ListSubscribers,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=Subscribers.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.VolthaLogicalLayer', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaVolthaLogicalLayerServicer(object):
-  def ListLogicalDevices(self, request, context):
-    """List logical devices owned by this Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetLogicalDevice(self, request, context):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListLogicalDevicePorts(self, request, context):
-    """List ports of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateFlowTable(self, request, context):
-    """Update flow table for device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListDeviceFlows(self, request, context):
-    """List all flows of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateGroupTable(self, request, context):
-    """Update group tabel for device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListDeviceFlowGroups(self, request, context):
-    """List all flow groups of a logical device
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def StreamPacketsOut(self, request_iterator, context):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ReceivePacketsIn(self, request, context):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def CreateSubscriber(self, request, context):
-    """Create a subscriber record
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSubscriber(self, request, context):
-    """Return an subscriber by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateSubscriber(self, request, context):
-    """Update an existing subscriber record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def DeleteSubscriber(self, request, context):
-    """Delete a subscriber record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListSubscribers(self, request, context):
-    """List subscribers
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaVolthaLogicalLayerStub(object):
-  def ListLogicalDevices(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List logical devices owned by this Voltha instance
-    """
-    raise NotImplementedError()
-  ListLogicalDevices.future = None
-  def GetLogicalDevice(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Get detailed info on logical device owned by this Voltha instance
-    """
-    raise NotImplementedError()
-  GetLogicalDevice.future = None
-  def ListLogicalDevicePorts(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List ports of a logical device
-    """
-    raise NotImplementedError()
-  ListLogicalDevicePorts.future = None
-  def UpdateFlowTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update flow table for device
-    """
-    raise NotImplementedError()
-  UpdateFlowTable.future = None
-  def ListDeviceFlows(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List all flows of a logical device
-    """
-    raise NotImplementedError()
-  ListDeviceFlows.future = None
-  def UpdateGroupTable(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update group tabel for device
-    """
-    raise NotImplementedError()
-  UpdateGroupTable.future = None
-  def ListDeviceFlowGroups(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List all flow groups of a logical device
-    """
-    raise NotImplementedError()
-  ListDeviceFlowGroups.future = None
-  def StreamPacketsOut(self, request_iterator, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Stream control packets to the dataplane
-    This does not have an HTTP representation
-    """
-    raise NotImplementedError()
-  StreamPacketsOut.future = None
-  def ReceivePacketsIn(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Receive control packet stream
-    This does not have an HTTP representation
-    """
-    raise NotImplementedError()
-  def CreateSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Create a subscriber record
-    """
-    raise NotImplementedError()
-  CreateSubscriber.future = None
-  def GetSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return an subscriber by ID
-    """
-    raise NotImplementedError()
-  GetSubscriber.future = None
-  def UpdateSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update an existing subscriber record by ID
-    """
-    raise NotImplementedError()
-  UpdateSubscriber.future = None
-  def DeleteSubscriber(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Delete a subscriber record by ID
-    """
-    raise NotImplementedError()
-  DeleteSubscriber.future = None
-  def ListSubscribers(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """List subscribers
-    """
-    raise NotImplementedError()
-  ListSubscribers.future = None
-
-
-def beta_create_VolthaLogicalLayer_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): ID.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.FromString,
-  }
-  response_serializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): Subscribers.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): face_utilities.unary_unary_inline(servicer.CreateSubscriber),
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): face_utilities.unary_unary_inline(servicer.DeleteSubscriber),
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): face_utilities.unary_unary_inline(servicer.GetLogicalDevice),
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): face_utilities.unary_unary_inline(servicer.GetSubscriber),
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): face_utilities.unary_unary_inline(servicer.ListDeviceFlowGroups),
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): face_utilities.unary_unary_inline(servicer.ListDeviceFlows),
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): face_utilities.unary_unary_inline(servicer.ListLogicalDevicePorts),
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): face_utilities.unary_unary_inline(servicer.ListLogicalDevices),
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): face_utilities.unary_unary_inline(servicer.ListSubscribers),
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): face_utilities.unary_stream_inline(servicer.ReceivePacketsIn),
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): face_utilities.stream_unary_inline(servicer.StreamPacketsOut),
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): face_utilities.unary_unary_inline(servicer.UpdateFlowTable),
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): face_utilities.unary_unary_inline(servicer.UpdateGroupTable),
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): face_utilities.unary_unary_inline(servicer.UpdateSubscriber),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_VolthaLogicalLayer_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): ID.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): NullMessage.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): PacketOut.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): FlowTableUpdate.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): GroupTableUpdate.SerializeToString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.VolthaLogicalLayer', 'CreateSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'DeleteSubscriber'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetLogicalDevice'): LogicalDeviceDetails.FromString,
-    ('voltha.VolthaLogicalLayer', 'GetSubscriber'): Subscriber.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlowGroups'): FlowGroups.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListDeviceFlows'): Flows.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevicePorts'): LogicalPorts.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListLogicalDevices'): LogicalDevices.FromString,
-    ('voltha.VolthaLogicalLayer', 'ListSubscribers'): Subscribers.FromString,
-    ('voltha.VolthaLogicalLayer', 'ReceivePacketsIn'): PacketIn.FromString,
-    ('voltha.VolthaLogicalLayer', 'StreamPacketsOut'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateFlowTable'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateGroupTable'): NullMessage.FromString,
-    ('voltha.VolthaLogicalLayer', 'UpdateSubscriber'): Subscriber.FromString,
-  }
-  cardinalities = {
-    'CreateSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'DeleteSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'GetLogicalDevice': cardinality.Cardinality.UNARY_UNARY,
-    'GetSubscriber': cardinality.Cardinality.UNARY_UNARY,
-    'ListDeviceFlowGroups': cardinality.Cardinality.UNARY_UNARY,
-    'ListDeviceFlows': cardinality.Cardinality.UNARY_UNARY,
-    'ListLogicalDevicePorts': cardinality.Cardinality.UNARY_UNARY,
-    'ListLogicalDevices': cardinality.Cardinality.UNARY_UNARY,
-    'ListSubscribers': cardinality.Cardinality.UNARY_UNARY,
-    'ReceivePacketsIn': cardinality.Cardinality.UNARY_STREAM,
-    'StreamPacketsOut': cardinality.Cardinality.STREAM_UNARY,
-    'UpdateFlowTable': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateGroupTable': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateSubscriber': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.VolthaLogicalLayer', cardinalities, options=stub_options)
-
-
-class ExampleServiceStub(object):
-  """(placeholder) This is an example service
-  """
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.CreateAddress = channel.unary_unary(
-        '/voltha.ExampleService/CreateAddress',
-        request_serializer=Address.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.GetAddress = channel.unary_unary(
-        '/voltha.ExampleService/GetAddress',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.UpdateAddress = channel.unary_unary(
-        '/voltha.ExampleService/UpdateAddress',
-        request_serializer=Address.SerializeToString,
-        response_deserializer=Address.FromString,
-        )
-    self.DeleteAddress = channel.unary_unary(
-        '/voltha.ExampleService/DeleteAddress',
-        request_serializer=ID.SerializeToString,
-        response_deserializer=NullMessage.FromString,
-        )
-    self.ListAddresses = channel.unary_unary(
-        '/voltha.ExampleService/ListAddresses',
-        request_serializer=NullMessage.SerializeToString,
-        response_deserializer=Addresses.FromString,
-        )
-
-
-class ExampleServiceServicer(object):
-  """(placeholder) This is an example service
-  """
-
-  def CreateAddress(self, request, context):
-    """Create an address record
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetAddress(self, request, context):
-    """Return an address by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def UpdateAddress(self, request, context):
-    """Update an existing address record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def DeleteAddress(self, request, context):
-    """Delete an address record by ID
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ListAddresses(self, request, context):
-    """Return a bit more complex objects
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_ExampleServiceServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'CreateAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.CreateAddress,
-          request_deserializer=Address.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'GetAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.GetAddress,
-          request_deserializer=ID.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'UpdateAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.UpdateAddress,
-          request_deserializer=Address.FromString,
-          response_serializer=Address.SerializeToString,
-      ),
-      'DeleteAddress': grpc.unary_unary_rpc_method_handler(
-          servicer.DeleteAddress,
-          request_deserializer=ID.FromString,
-          response_serializer=NullMessage.SerializeToString,
-      ),
-      'ListAddresses': grpc.unary_unary_rpc_method_handler(
-          servicer.ListAddresses,
-          request_deserializer=NullMessage.FromString,
-          response_serializer=Addresses.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.ExampleService', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaExampleServiceServicer(object):
-  """(placeholder) This is an example service
-  """
-  def CreateAddress(self, request, context):
-    """Create an address record
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetAddress(self, request, context):
-    """Return an address by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def UpdateAddress(self, request, context):
-    """Update an existing address record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def DeleteAddress(self, request, context):
-    """Delete an address record by ID
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ListAddresses(self, request, context):
-    """Return a bit more complex objects
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaExampleServiceStub(object):
-  """(placeholder) This is an example service
-  """
-  def CreateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Create an address record
-    """
-    raise NotImplementedError()
-  CreateAddress.future = None
-  def GetAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return an address by ID
-    """
-    raise NotImplementedError()
-  GetAddress.future = None
-  def UpdateAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Update an existing address record by ID
-    """
-    raise NotImplementedError()
-  UpdateAddress.future = None
-  def DeleteAddress(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Delete an address record by ID
-    """
-    raise NotImplementedError()
-  DeleteAddress.future = None
-  def ListAddresses(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """Return a bit more complex objects
-    """
-    raise NotImplementedError()
-  ListAddresses.future = None
-
-
-def beta_create_ExampleService_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
-    ('voltha.ExampleService', 'DeleteAddress'): ID.FromString,
-    ('voltha.ExampleService', 'GetAddress'): ID.FromString,
-    ('voltha.ExampleService', 'ListAddresses'): NullMessage.FromString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
-  }
-  response_serializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'DeleteAddress'): NullMessage.SerializeToString,
-    ('voltha.ExampleService', 'GetAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'ListAddresses'): Addresses.SerializeToString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.ExampleService', 'CreateAddress'): face_utilities.unary_unary_inline(servicer.CreateAddress),
-    ('voltha.ExampleService', 'DeleteAddress'): face_utilities.unary_unary_inline(servicer.DeleteAddress),
-    ('voltha.ExampleService', 'GetAddress'): face_utilities.unary_unary_inline(servicer.GetAddress),
-    ('voltha.ExampleService', 'ListAddresses'): face_utilities.unary_unary_inline(servicer.ListAddresses),
-    ('voltha.ExampleService', 'UpdateAddress'): face_utilities.unary_unary_inline(servicer.UpdateAddress),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_ExampleService_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.SerializeToString,
-    ('voltha.ExampleService', 'DeleteAddress'): ID.SerializeToString,
-    ('voltha.ExampleService', 'GetAddress'): ID.SerializeToString,
-    ('voltha.ExampleService', 'ListAddresses'): NullMessage.SerializeToString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.ExampleService', 'CreateAddress'): Address.FromString,
-    ('voltha.ExampleService', 'DeleteAddress'): NullMessage.FromString,
-    ('voltha.ExampleService', 'GetAddress'): Address.FromString,
-    ('voltha.ExampleService', 'ListAddresses'): Addresses.FromString,
-    ('voltha.ExampleService', 'UpdateAddress'): Address.FromString,
-  }
-  cardinalities = {
-    'CreateAddress': cardinality.Cardinality.UNARY_UNARY,
-    'DeleteAddress': cardinality.Cardinality.UNARY_UNARY,
-    'GetAddress': cardinality.Cardinality.UNARY_UNARY,
-    'ListAddresses': cardinality.Cardinality.UNARY_UNARY,
-    'UpdateAddress': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.ExampleService', cardinalities, options=stub_options)
-
-
-class OpenFlowStub(object):
-
-  def __init__(self, channel):
-    """Constructor.
-
-    Args:
-      channel: A grpc.Channel.
-    """
-    self.GetHello = channel.unary_unary(
-        '/voltha.OpenFlow/GetHello',
-        request_serializer=openflow__13__pb2.ofp_hello.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_hello.FromString,
-        )
-    self.EchoRequest = channel.unary_unary(
-        '/voltha.OpenFlow/EchoRequest',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-    self.ExperimenterRequest = channel.unary_unary(
-        '/voltha.OpenFlow/ExperimenterRequest',
-        request_serializer=openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_experimenter_header.FromString,
-        )
-    self.GetSwitchFeatures = channel.unary_unary(
-        '/voltha.OpenFlow/GetSwitchFeatures',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_switch_features.FromString,
-        )
-    self.GetSwitchConfig = channel.unary_unary(
-        '/voltha.OpenFlow/GetSwitchConfig',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_switch_config.FromString,
-        )
-    self.SetConfig = channel.unary_unary(
-        '/voltha.OpenFlow/SetConfig',
-        request_serializer=openflow__13__pb2.ofp_switch_config.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-    self.ReceivePacketInMessages = channel.unary_stream(
-        '/voltha.OpenFlow/ReceivePacketInMessages',
-        request_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_packet_in.FromString,
-        )
-    self.SendPacketOutMessages = channel.unary_unary(
-        '/voltha.OpenFlow/SendPacketOutMessages',
-        request_serializer=openflow__13__pb2.ofp_packet_out.SerializeToString,
-        response_deserializer=openflow__13__pb2.ofp_header.FromString,
-        )
-
-
-class OpenFlowServicer(object):
-
-  def GetHello(self, request, context):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def EchoRequest(self, request, context):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ExperimenterRequest(self, request, context):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSwitchFeatures(self, request, context):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def GetSwitchConfig(self, request, context):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def SetConfig(self, request, context):
-    """
-    Set Config
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def ReceivePacketInMessages(self, request, context):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-  def SendPacketOutMessages(self, request, context):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    context.set_code(grpc.StatusCode.UNIMPLEMENTED)
-    context.set_details('Method not implemented!')
-    raise NotImplementedError('Method not implemented!')
-
-
-def add_OpenFlowServicer_to_server(servicer, server):
-  rpc_method_handlers = {
-      'GetHello': grpc.unary_unary_rpc_method_handler(
-          servicer.GetHello,
-          request_deserializer=openflow__13__pb2.ofp_hello.FromString,
-          response_serializer=openflow__13__pb2.ofp_hello.SerializeToString,
-      ),
-      'EchoRequest': grpc.unary_unary_rpc_method_handler(
-          servicer.EchoRequest,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-      'ExperimenterRequest': grpc.unary_unary_rpc_method_handler(
-          servicer.ExperimenterRequest,
-          request_deserializer=openflow__13__pb2.ofp_experimenter_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-      ),
-      'GetSwitchFeatures': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSwitchFeatures,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_switch_features.SerializeToString,
-      ),
-      'GetSwitchConfig': grpc.unary_unary_rpc_method_handler(
-          servicer.GetSwitchConfig,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_switch_config.SerializeToString,
-      ),
-      'SetConfig': grpc.unary_unary_rpc_method_handler(
-          servicer.SetConfig,
-          request_deserializer=openflow__13__pb2.ofp_switch_config.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-      'ReceivePacketInMessages': grpc.unary_stream_rpc_method_handler(
-          servicer.ReceivePacketInMessages,
-          request_deserializer=openflow__13__pb2.ofp_header.FromString,
-          response_serializer=openflow__13__pb2.ofp_packet_in.SerializeToString,
-      ),
-      'SendPacketOutMessages': grpc.unary_unary_rpc_method_handler(
-          servicer.SendPacketOutMessages,
-          request_deserializer=openflow__13__pb2.ofp_packet_out.FromString,
-          response_serializer=openflow__13__pb2.ofp_header.SerializeToString,
-      ),
-  }
-  generic_handler = grpc.method_handlers_generic_handler(
-      'voltha.OpenFlow', rpc_method_handlers)
-  server.add_generic_rpc_handlers((generic_handler,))
-
-
-class BetaOpenFlowServicer(object):
-  def GetHello(self, request, context):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def EchoRequest(self, request, context):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ExperimenterRequest(self, request, context):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSwitchFeatures(self, request, context):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def GetSwitchConfig(self, request, context):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def SetConfig(self, request, context):
-    """
-    Set Config
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def ReceivePacketInMessages(self, request, context):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-  def SendPacketOutMessages(self, request, context):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    context.code(beta_interfaces.StatusCode.UNIMPLEMENTED)
-
-
-class BetaOpenFlowStub(object):
-  def GetHello(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Hello message handshake, initiated by the client (controller)
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetHello.future = None
-  def EchoRequest(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Echo request / reply, initiated by the client (controller)
-    TODO http option
-    """
-    raise NotImplementedError()
-  EchoRequest.future = None
-  def ExperimenterRequest(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Experimental (extension) RPC
-    TODO http option
-    """
-    raise NotImplementedError()
-  ExperimenterRequest.future = None
-  def GetSwitchFeatures(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Get Switch Features
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetSwitchFeatures.future = None
-  def GetSwitchConfig(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Get Switch Config
-    TODO http option
-    """
-    raise NotImplementedError()
-  GetSwitchConfig.future = None
-  def SetConfig(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Set Config
-    TODO http option
-    """
-    raise NotImplementedError()
-  SetConfig.future = None
-  def ReceivePacketInMessages(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Receive Packet-In messages
-    TODO http option
-    """
-    raise NotImplementedError()
-  def SendPacketOutMessages(self, request, timeout, metadata=None, with_call=False, protocol_options=None):
-    """
-    Send Packet-Out messages
-    TODO http option
-    """
-    raise NotImplementedError()
-  SendPacketOutMessages.future = None
-
-
-def beta_create_OpenFlow_server(servicer, pool=None, pool_size=None, default_timeout=None, maximum_timeout=None):
-  request_deserializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.FromString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.FromString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_packet_out.FromString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_switch_config.FromString,
-  }
-  response_serializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_switch_config.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_switch_features.SerializeToString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_packet_in.SerializeToString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_header.SerializeToString,
-  }
-  method_implementations = {
-    ('voltha.OpenFlow', 'EchoRequest'): face_utilities.unary_unary_inline(servicer.EchoRequest),
-    ('voltha.OpenFlow', 'ExperimenterRequest'): face_utilities.unary_unary_inline(servicer.ExperimenterRequest),
-    ('voltha.OpenFlow', 'GetHello'): face_utilities.unary_unary_inline(servicer.GetHello),
-    ('voltha.OpenFlow', 'GetSwitchConfig'): face_utilities.unary_unary_inline(servicer.GetSwitchConfig),
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): face_utilities.unary_unary_inline(servicer.GetSwitchFeatures),
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): face_utilities.unary_stream_inline(servicer.ReceivePacketInMessages),
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): face_utilities.unary_unary_inline(servicer.SendPacketOutMessages),
-    ('voltha.OpenFlow', 'SetConfig'): face_utilities.unary_unary_inline(servicer.SetConfig),
-  }
-  server_options = beta_implementations.server_options(request_deserializers=request_deserializers, response_serializers=response_serializers, thread_pool=pool, thread_pool_size=pool_size, default_timeout=default_timeout, maximum_timeout=maximum_timeout)
-  return beta_implementations.server(method_implementations, options=server_options)
-
-
-def beta_create_OpenFlow_stub(channel, host=None, metadata_transformer=None, pool=None, pool_size=None):
-  request_serializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_header.SerializeToString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_packet_out.SerializeToString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_switch_config.SerializeToString,
-  }
-  response_deserializers = {
-    ('voltha.OpenFlow', 'EchoRequest'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'ExperimenterRequest'): openflow__13__pb2.ofp_experimenter_header.FromString,
-    ('voltha.OpenFlow', 'GetHello'): openflow__13__pb2.ofp_hello.FromString,
-    ('voltha.OpenFlow', 'GetSwitchConfig'): openflow__13__pb2.ofp_switch_config.FromString,
-    ('voltha.OpenFlow', 'GetSwitchFeatures'): openflow__13__pb2.ofp_switch_features.FromString,
-    ('voltha.OpenFlow', 'ReceivePacketInMessages'): openflow__13__pb2.ofp_packet_in.FromString,
-    ('voltha.OpenFlow', 'SendPacketOutMessages'): openflow__13__pb2.ofp_header.FromString,
-    ('voltha.OpenFlow', 'SetConfig'): openflow__13__pb2.ofp_header.FromString,
-  }
-  cardinalities = {
-    'EchoRequest': cardinality.Cardinality.UNARY_UNARY,
-    'ExperimenterRequest': cardinality.Cardinality.UNARY_UNARY,
-    'GetHello': cardinality.Cardinality.UNARY_UNARY,
-    'GetSwitchConfig': cardinality.Cardinality.UNARY_UNARY,
-    'GetSwitchFeatures': cardinality.Cardinality.UNARY_UNARY,
-    'ReceivePacketInMessages': cardinality.Cardinality.UNARY_STREAM,
-    'SendPacketOutMessages': cardinality.Cardinality.UNARY_UNARY,
-    'SetConfig': cardinality.Cardinality.UNARY_UNARY,
-  }
-  stub_options = beta_implementations.stub_options(host=host, metadata_transformer=metadata_transformer, request_serializers=request_serializers, response_deserializers=response_deserializers, thread_pool=pool, thread_pool_size=pool_size)
-  return beta_implementations.dynamic_stub(channel, 'voltha.OpenFlow', cardinalities, options=stub_options)
 # @@protoc_insertion_point(module_scope)
