VOL-1460 Implemented a new approach to protos where go stubs are not committed to the repo.
There are new instructions for clients consuming these protos in Go.
Also removed vendor directory and dep, as it isn't really needed at this point.

Implemented a test to check if protos match up with go files. This is run with make test.
This works by generating them and checking this created any more untracked or unstaged changes.
It requires you to commit your changes locally to pass. This process to should be run by
jenkins to validate a commit. A consistent version of protoc must be used, which the Makefile checks for.

Change-Id: I8de28c515a9535e33909cbbd158fa046f96f3b1f
diff --git a/go/openflow_13/openflow_13.pb.go b/go/openflow_13/openflow_13.pb.go
index 91fab9a..4a6bef2 100644
--- a/go/openflow_13/openflow_13.pb.go
+++ b/go/openflow_13/openflow_13.pb.go
@@ -1,13 +1,15 @@
 // Code generated by protoc-gen-go. DO NOT EDIT.
 // source: voltha_protos/openflow_13.proto
 
-package openflow_13 // import "github.com/opencord/voltha-protos/go/openflow_13"
+package openflow_13
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
-import common "github.com/opencord/voltha-protos/go/common"
-import _ "google.golang.org/genproto/googleapis/api/annotations"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	common "github.com/opencord/voltha-protos/go/common"
+	_ "google.golang.org/genproto/googleapis/api/annotations"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -18,7 +20,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 // InlineNode from public import voltha_protos/yang_options.proto
 type InlineNode = common.InlineNode
@@ -35,16 +37,12 @@
 const MessageParserOption_MOVE_TO_PARENT_LEVEL = MessageParserOption(common.MessageParserOption_MOVE_TO_PARENT_LEVEL)
 const MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER = MessageParserOption(common.MessageParserOption_CREATE_BOTH_GROUPING_AND_CONTAINER)
 
-// yang_child_rule from public import voltha_protos/yang_options.proto
 var E_YangChildRule = common.E_YangChildRule
 
-// yang_message_rule from public import voltha_protos/yang_options.proto
 var E_YangMessageRule = common.E_YangMessageRule
 
-// yang_inline_node from public import voltha_protos/yang_options.proto
 var E_YangInlineNode = common.E_YangInlineNode
 
-// yang_xml_tag from public import voltha_protos/yang_options.proto
 var E_YangXmlTag = common.E_YangXmlTag
 
 // Port numbering. Ports are numbered starting from 1.
@@ -77,6 +75,7 @@
 	2147483646: "OFPP_LOCAL",
 	2147483647: "OFPP_ANY",
 }
+
 var OfpPortNo_value = map[string]int32{
 	"OFPP_INVALID":    0,
 	"OFPP_MAX":        2147483392,
@@ -93,8 +92,9 @@
 func (x OfpPortNo) String() string {
 	return proto.EnumName(OfpPortNo_name, int32(x))
 }
+
 func (OfpPortNo) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{0}
+	return fileDescriptor_08e3a4e375aeddc7, []int{0}
 }
 
 type OfpType int32
@@ -174,6 +174,7 @@
 	28: "OFPT_SET_ASYNC",
 	29: "OFPT_METER_MOD",
 }
+
 var OfpType_value = map[string]int32{
 	"OFPT_HELLO":                    0,
 	"OFPT_ERROR":                    1,
@@ -210,8 +211,9 @@
 func (x OfpType) String() string {
 	return proto.EnumName(OfpType_name, int32(x))
 }
+
 func (OfpType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{1}
+	return fileDescriptor_08e3a4e375aeddc7, []int{1}
 }
 
 // Hello elements types.
@@ -226,6 +228,7 @@
 	0: "OFPHET_INVALID",
 	1: "OFPHET_VERSIONBITMAP",
 }
+
 var OfpHelloElemType_value = map[string]int32{
 	"OFPHET_INVALID":       0,
 	"OFPHET_VERSIONBITMAP": 1,
@@ -234,8 +237,9 @@
 func (x OfpHelloElemType) String() string {
 	return proto.EnumName(OfpHelloElemType_name, int32(x))
 }
+
 func (OfpHelloElemType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{2}
+	return fileDescriptor_08e3a4e375aeddc7, []int{2}
 }
 
 type OfpConfigFlags int32
@@ -254,6 +258,7 @@
 	2: "OFPC_FRAG_REASM",
 	3: "OFPC_FRAG_MASK",
 }
+
 var OfpConfigFlags_value = map[string]int32{
 	"OFPC_FRAG_NORMAL": 0,
 	"OFPC_FRAG_DROP":   1,
@@ -264,8 +269,9 @@
 func (x OfpConfigFlags) String() string {
 	return proto.EnumName(OfpConfigFlags_name, int32(x))
 }
+
 func (OfpConfigFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{3}
+	return fileDescriptor_08e3a4e375aeddc7, []int{3}
 }
 
 // Flags to configure the table. Reserved for future use.
@@ -280,6 +286,7 @@
 	0: "OFPTC_INVALID",
 	3: "OFPTC_DEPRECATED_MASK",
 }
+
 var OfpTableConfig_value = map[string]int32{
 	"OFPTC_INVALID":         0,
 	"OFPTC_DEPRECATED_MASK": 3,
@@ -288,8 +295,9 @@
 func (x OfpTableConfig) String() string {
 	return proto.EnumName(OfpTableConfig_name, int32(x))
 }
+
 func (OfpTableConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{4}
+	return fileDescriptor_08e3a4e375aeddc7, []int{4}
 }
 
 // Table numbering. Tables can use any number up to OFPT_MAX.
@@ -308,6 +316,7 @@
 	254: "OFPTT_MAX",
 	255: "OFPTT_ALL",
 }
+
 var OfpTable_value = map[string]int32{
 	"OFPTT_INVALID": 0,
 	"OFPTT_MAX":     254,
@@ -317,8 +326,9 @@
 func (x OfpTable) String() string {
 	return proto.EnumName(OfpTable_name, int32(x))
 }
+
 func (OfpTable) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{5}
+	return fileDescriptor_08e3a4e375aeddc7, []int{5}
 }
 
 // Capabilities supported by the datapath.
@@ -345,6 +355,7 @@
 	64:  "OFPC_QUEUE_STATS",
 	256: "OFPC_PORT_BLOCKED",
 }
+
 var OfpCapabilities_value = map[string]int32{
 	"OFPC_INVALID":      0,
 	"OFPC_FLOW_STATS":   1,
@@ -359,8 +370,9 @@
 func (x OfpCapabilities) String() string {
 	return proto.EnumName(OfpCapabilities_name, int32(x))
 }
+
 func (OfpCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{6}
+	return fileDescriptor_08e3a4e375aeddc7, []int{6}
 }
 
 // Flags to indicate behavior of the physical port.  These flags are
@@ -383,6 +395,7 @@
 	32: "OFPPC_NO_FWD",
 	64: "OFPPC_NO_PACKET_IN",
 }
+
 var OfpPortConfig_value = map[string]int32{
 	"OFPPC_INVALID":      0,
 	"OFPPC_PORT_DOWN":    1,
@@ -394,8 +407,9 @@
 func (x OfpPortConfig) String() string {
 	return proto.EnumName(OfpPortConfig_name, int32(x))
 }
+
 func (OfpPortConfig) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{7}
+	return fileDescriptor_08e3a4e375aeddc7, []int{7}
 }
 
 // Current state of the physical port.  These are not configurable from
@@ -415,6 +429,7 @@
 	2: "OFPPS_BLOCKED",
 	4: "OFPPS_LIVE",
 }
+
 var OfpPortState_value = map[string]int32{
 	"OFPPS_INVALID":   0,
 	"OFPPS_LINK_DOWN": 1,
@@ -425,8 +440,9 @@
 func (x OfpPortState) String() string {
 	return proto.EnumName(OfpPortState_name, int32(x))
 }
+
 func (OfpPortState) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{8}
+	return fileDescriptor_08e3a4e375aeddc7, []int{8}
 }
 
 // Features of ports available in a datapath.
@@ -471,6 +487,7 @@
 	16384: "OFPPF_PAUSE",
 	32768: "OFPPF_PAUSE_ASYM",
 }
+
 var OfpPortFeatures_value = map[string]int32{
 	"OFPPF_INVALID":    0,
 	"OFPPF_10MB_HD":    1,
@@ -494,8 +511,9 @@
 func (x OfpPortFeatures) String() string {
 	return proto.EnumName(OfpPortFeatures_name, int32(x))
 }
+
 func (OfpPortFeatures) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{9}
+	return fileDescriptor_08e3a4e375aeddc7, []int{9}
 }
 
 // What changed about the physical port
@@ -512,6 +530,7 @@
 	1: "OFPPR_DELETE",
 	2: "OFPPR_MODIFY",
 }
+
 var OfpPortReason_value = map[string]int32{
 	"OFPPR_ADD":    0,
 	"OFPPR_DELETE": 1,
@@ -521,8 +540,9 @@
 func (x OfpPortReason) String() string {
 	return proto.EnumName(OfpPortReason_name, int32(x))
 }
+
 func (OfpPortReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{10}
+	return fileDescriptor_08e3a4e375aeddc7, []int{10}
 }
 
 // The match type indicates the match structure (set of fields that compose the
@@ -542,6 +562,7 @@
 	0: "OFPMT_STANDARD",
 	1: "OFPMT_OXM",
 }
+
 var OfpMatchType_value = map[string]int32{
 	"OFPMT_STANDARD": 0,
 	"OFPMT_OXM":      1,
@@ -550,8 +571,9 @@
 func (x OfpMatchType) String() string {
 	return proto.EnumName(OfpMatchType_name, int32(x))
 }
+
 func (OfpMatchType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{11}
+	return fileDescriptor_08e3a4e375aeddc7, []int{11}
 }
 
 // OXM Class IDs.
@@ -573,6 +595,7 @@
 	32768: "OFPXMC_OPENFLOW_BASIC",
 	65535: "OFPXMC_EXPERIMENTER",
 }
+
 var OfpOxmClass_value = map[string]int32{
 	"OFPXMC_NXM_0":          0,
 	"OFPXMC_NXM_1":          1,
@@ -583,8 +606,9 @@
 func (x OfpOxmClass) String() string {
 	return proto.EnumName(OfpOxmClass_name, int32(x))
 }
+
 func (OfpOxmClass) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{12}
+	return fileDescriptor_08e3a4e375aeddc7, []int{12}
 }
 
 // OXM Flow field types for OpenFlow basic class.
@@ -675,6 +699,7 @@
 	38: "OFPXMT_OFB_TUNNEL_ID",
 	39: "OFPXMT_OFB_IPV6_EXTHDR",
 }
+
 var OxmOfbFieldTypes_value = map[string]int32{
 	"OFPXMT_OFB_IN_PORT":        0,
 	"OFPXMT_OFB_IN_PHY_PORT":    1,
@@ -721,8 +746,9 @@
 func (x OxmOfbFieldTypes) String() string {
 	return proto.EnumName(OxmOfbFieldTypes_name, int32(x))
 }
+
 func (OxmOfbFieldTypes) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{13}
+	return fileDescriptor_08e3a4e375aeddc7, []int{13}
 }
 
 // The VLAN id is 12-bits, so we can use the entire 16 bits to indicate
@@ -738,6 +764,7 @@
 	0:    "OFPVID_NONE",
 	4096: "OFPVID_PRESENT",
 }
+
 var OfpVlanId_value = map[string]int32{
 	"OFPVID_NONE":    0,
 	"OFPVID_PRESENT": 4096,
@@ -746,8 +773,9 @@
 func (x OfpVlanId) String() string {
 	return proto.EnumName(OfpVlanId_name, int32(x))
 }
+
 func (OfpVlanId) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{14}
+	return fileDescriptor_08e3a4e375aeddc7, []int{14}
 }
 
 // Bit definitions for IPv6 Extension Header pseudo-field.
@@ -778,6 +806,7 @@
 	128: "OFPIEH_UNREP",
 	256: "OFPIEH_UNSEQ",
 }
+
 var OfpIpv6ExthdrFlags_value = map[string]int32{
 	"OFPIEH_INVALID": 0,
 	"OFPIEH_NONEXT":  1,
@@ -794,8 +823,9 @@
 func (x OfpIpv6ExthdrFlags) String() string {
 	return proto.EnumName(OfpIpv6ExthdrFlags_name, int32(x))
 }
+
 func (OfpIpv6ExthdrFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{15}
+	return fileDescriptor_08e3a4e375aeddc7, []int{15}
 }
 
 type OfpActionType int32
@@ -839,6 +869,7 @@
 	27:    "OFPAT_POP_PBB",
 	65535: "OFPAT_EXPERIMENTER",
 }
+
 var OfpActionType_value = map[string]int32{
 	"OFPAT_OUTPUT":       0,
 	"OFPAT_COPY_TTL_OUT": 11,
@@ -862,8 +893,9 @@
 func (x OfpActionType) String() string {
 	return proto.EnumName(OfpActionType_name, int32(x))
 }
+
 func (OfpActionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{16}
+	return fileDescriptor_08e3a4e375aeddc7, []int{16}
 }
 
 type OfpControllerMaxLen int32
@@ -879,6 +911,7 @@
 	65509: "OFPCML_MAX",
 	65535: "OFPCML_NO_BUFFER",
 }
+
 var OfpControllerMaxLen_value = map[string]int32{
 	"OFPCML_INVALID":   0,
 	"OFPCML_MAX":       65509,
@@ -888,8 +921,9 @@
 func (x OfpControllerMaxLen) String() string {
 	return proto.EnumName(OfpControllerMaxLen_name, int32(x))
 }
+
 func (OfpControllerMaxLen) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{17}
+	return fileDescriptor_08e3a4e375aeddc7, []int{17}
 }
 
 type OfpInstructionType int32
@@ -915,6 +949,7 @@
 	6:     "OFPIT_METER",
 	65535: "OFPIT_EXPERIMENTER",
 }
+
 var OfpInstructionType_value = map[string]int32{
 	"OFPIT_INVALID":        0,
 	"OFPIT_GOTO_TABLE":     1,
@@ -929,8 +964,9 @@
 func (x OfpInstructionType) String() string {
 	return proto.EnumName(OfpInstructionType_name, int32(x))
 }
+
 func (OfpInstructionType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{18}
+	return fileDescriptor_08e3a4e375aeddc7, []int{18}
 }
 
 type OfpFlowModCommand int32
@@ -950,6 +986,7 @@
 	3: "OFPFC_DELETE",
 	4: "OFPFC_DELETE_STRICT",
 }
+
 var OfpFlowModCommand_value = map[string]int32{
 	"OFPFC_ADD":           0,
 	"OFPFC_MODIFY":        1,
@@ -961,8 +998,9 @@
 func (x OfpFlowModCommand) String() string {
 	return proto.EnumName(OfpFlowModCommand_name, int32(x))
 }
+
 func (OfpFlowModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{19}
+	return fileDescriptor_08e3a4e375aeddc7, []int{19}
 }
 
 type OfpFlowModFlags int32
@@ -984,6 +1022,7 @@
 	8:  "OFPFF_NO_PKT_COUNTS",
 	16: "OFPFF_NO_BYT_COUNTS",
 }
+
 var OfpFlowModFlags_value = map[string]int32{
 	"OFPFF_INVALID":       0,
 	"OFPFF_SEND_FLOW_REM": 1,
@@ -996,8 +1035,9 @@
 func (x OfpFlowModFlags) String() string {
 	return proto.EnumName(OfpFlowModFlags_name, int32(x))
 }
+
 func (OfpFlowModFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{20}
+	return fileDescriptor_08e3a4e375aeddc7, []int{20}
 }
 
 // Group numbering. Groups can use any number up to OFPG_MAX.
@@ -1018,6 +1058,7 @@
 	2147483644: "OFPG_ALL",
 	2147483647: "OFPG_ANY",
 }
+
 var OfpGroup_value = map[string]int32{
 	"OFPG_INVALID": 0,
 	"OFPG_MAX":     2147483392,
@@ -1028,8 +1069,9 @@
 func (x OfpGroup) String() string {
 	return proto.EnumName(OfpGroup_name, int32(x))
 }
+
 func (OfpGroup) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{21}
+	return fileDescriptor_08e3a4e375aeddc7, []int{21}
 }
 
 // Group commands
@@ -1046,6 +1088,7 @@
 	1: "OFPGC_MODIFY",
 	2: "OFPGC_DELETE",
 }
+
 var OfpGroupModCommand_value = map[string]int32{
 	"OFPGC_ADD":    0,
 	"OFPGC_MODIFY": 1,
@@ -1055,8 +1098,9 @@
 func (x OfpGroupModCommand) String() string {
 	return proto.EnumName(OfpGroupModCommand_name, int32(x))
 }
+
 func (OfpGroupModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{22}
+	return fileDescriptor_08e3a4e375aeddc7, []int{22}
 }
 
 // Group types.  Values in the range [128; 255] are reserved for experimental
@@ -1076,6 +1120,7 @@
 	2: "OFPGT_INDIRECT",
 	3: "OFPGT_FF",
 }
+
 var OfpGroupType_value = map[string]int32{
 	"OFPGT_ALL":      0,
 	"OFPGT_SELECT":   1,
@@ -1086,8 +1131,9 @@
 func (x OfpGroupType) String() string {
 	return proto.EnumName(OfpGroupType_name, int32(x))
 }
+
 func (OfpGroupType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{23}
+	return fileDescriptor_08e3a4e375aeddc7, []int{23}
 }
 
 // Why is this packet being sent to the controller?
@@ -1104,6 +1150,7 @@
 	1: "OFPR_ACTION",
 	2: "OFPR_INVALID_TTL",
 }
+
 var OfpPacketInReason_value = map[string]int32{
 	"OFPR_NO_MATCH":    0,
 	"OFPR_ACTION":      1,
@@ -1113,8 +1160,9 @@
 func (x OfpPacketInReason) String() string {
 	return proto.EnumName(OfpPacketInReason_name, int32(x))
 }
+
 func (OfpPacketInReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{24}
+	return fileDescriptor_08e3a4e375aeddc7, []int{24}
 }
 
 // Why was this flow removed?
@@ -1135,6 +1183,7 @@
 	3: "OFPRR_GROUP_DELETE",
 	4: "OFPRR_METER_DELETE",
 }
+
 var OfpFlowRemovedReason_value = map[string]int32{
 	"OFPRR_IDLE_TIMEOUT": 0,
 	"OFPRR_HARD_TIMEOUT": 1,
@@ -1146,8 +1195,9 @@
 func (x OfpFlowRemovedReason) String() string {
 	return proto.EnumName(OfpFlowRemovedReason_name, int32(x))
 }
+
 func (OfpFlowRemovedReason) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{25}
+	return fileDescriptor_08e3a4e375aeddc7, []int{25}
 }
 
 // Meter numbering. Flow meters can use any number up to OFPM_MAX.
@@ -1170,6 +1220,7 @@
 	2147483646: "OFPM_CONTROLLER",
 	2147483647: "OFPM_ALL",
 }
+
 var OfpMeter_value = map[string]int32{
 	"OFPM_ZERO":       0,
 	"OFPM_MAX":        2147418112,
@@ -1181,8 +1232,9 @@
 func (x OfpMeter) String() string {
 	return proto.EnumName(OfpMeter_name, int32(x))
 }
+
 func (OfpMeter) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{26}
+	return fileDescriptor_08e3a4e375aeddc7, []int{26}
 }
 
 // Meter band types
@@ -1201,6 +1253,7 @@
 	2:     "OFPMBT_DSCP_REMARK",
 	65535: "OFPMBT_EXPERIMENTER",
 }
+
 var OfpMeterBandType_value = map[string]int32{
 	"OFPMBT_INVALID":      0,
 	"OFPMBT_DROP":         1,
@@ -1211,8 +1264,9 @@
 func (x OfpMeterBandType) String() string {
 	return proto.EnumName(OfpMeterBandType_name, int32(x))
 }
+
 func (OfpMeterBandType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{27}
+	return fileDescriptor_08e3a4e375aeddc7, []int{27}
 }
 
 // Meter commands
@@ -1229,6 +1283,7 @@
 	1: "OFPMC_MODIFY",
 	2: "OFPMC_DELETE",
 }
+
 var OfpMeterModCommand_value = map[string]int32{
 	"OFPMC_ADD":    0,
 	"OFPMC_MODIFY": 1,
@@ -1238,8 +1293,9 @@
 func (x OfpMeterModCommand) String() string {
 	return proto.EnumName(OfpMeterModCommand_name, int32(x))
 }
+
 func (OfpMeterModCommand) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{28}
+	return fileDescriptor_08e3a4e375aeddc7, []int{28}
 }
 
 // Meter configuration flags
@@ -1260,6 +1316,7 @@
 	4: "OFPMF_BURST",
 	8: "OFPMF_STATS",
 }
+
 var OfpMeterFlags_value = map[string]int32{
 	"OFPMF_INVALID": 0,
 	"OFPMF_KBPS":    1,
@@ -1271,8 +1328,9 @@
 func (x OfpMeterFlags) String() string {
 	return proto.EnumName(OfpMeterFlags_name, int32(x))
 }
+
 func (OfpMeterFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{29}
+	return fileDescriptor_08e3a4e375aeddc7, []int{29}
 }
 
 // Values for 'type' in ofp_error_message.  These values are immutable: they
@@ -1315,6 +1373,7 @@
 	13:    "OFPET_TABLE_FEATURES_FAILED",
 	65535: "OFPET_EXPERIMENTER",
 }
+
 var OfpErrorType_value = map[string]int32{
 	"OFPET_HELLO_FAILED":          0,
 	"OFPET_BAD_REQUEST":           1,
@@ -1336,8 +1395,9 @@
 func (x OfpErrorType) String() string {
 	return proto.EnumName(OfpErrorType_name, int32(x))
 }
+
 func (OfpErrorType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{30}
+	return fileDescriptor_08e3a4e375aeddc7, []int{30}
 }
 
 // ofp_error_msg 'code' values for OFPET_HELLO_FAILED.  'data' contains an
@@ -1353,6 +1413,7 @@
 	0: "OFPHFC_INCOMPATIBLE",
 	1: "OFPHFC_EPERM",
 }
+
 var OfpHelloFailedCode_value = map[string]int32{
 	"OFPHFC_INCOMPATIBLE": 0,
 	"OFPHFC_EPERM":        1,
@@ -1361,8 +1422,9 @@
 func (x OfpHelloFailedCode) String() string {
 	return proto.EnumName(OfpHelloFailedCode_name, int32(x))
 }
+
 func (OfpHelloFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{31}
+	return fileDescriptor_08e3a4e375aeddc7, []int{31}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_REQUEST.  'data' contains at least
@@ -1402,6 +1464,7 @@
 	12: "OFPBRC_BAD_PACKET",
 	13: "OFPBRC_MULTIPART_BUFFER_OVERFLOW",
 }
+
 var OfpBadRequestCode_value = map[string]int32{
 	"OFPBRC_BAD_VERSION":               0,
 	"OFPBRC_BAD_TYPE":                  1,
@@ -1422,8 +1485,9 @@
 func (x OfpBadRequestCode) String() string {
 	return proto.EnumName(OfpBadRequestCode_name, int32(x))
 }
+
 func (OfpBadRequestCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{32}
+	return fileDescriptor_08e3a4e375aeddc7, []int{32}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_ACTION.  'data' contains at least
@@ -1467,6 +1531,7 @@
 	14: "OFPBAC_BAD_SET_LEN",
 	15: "OFPBAC_BAD_SET_ARGUMENT",
 }
+
 var OfpBadActionCode_value = map[string]int32{
 	"OFPBAC_BAD_TYPE":           0,
 	"OFPBAC_BAD_LEN":            1,
@@ -1489,8 +1554,9 @@
 func (x OfpBadActionCode) String() string {
 	return proto.EnumName(OfpBadActionCode_name, int32(x))
 }
+
 func (OfpBadActionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{33}
+	return fileDescriptor_08e3a4e375aeddc7, []int{33}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_INSTRUCTION.  'data' contains at
@@ -1520,6 +1586,7 @@
 	7: "OFPBIC_BAD_LEN",
 	8: "OFPBIC_EPERM",
 }
+
 var OfpBadInstructionCode_value = map[string]int32{
 	"OFPBIC_UNKNOWN_INST":        0,
 	"OFPBIC_UNSUP_INST":          1,
@@ -1535,8 +1602,9 @@
 func (x OfpBadInstructionCode) String() string {
 	return proto.EnumName(OfpBadInstructionCode_name, int32(x))
 }
+
 func (OfpBadInstructionCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{34}
+	return fileDescriptor_08e3a4e375aeddc7, []int{34}
 }
 
 // ofp_error_msg 'code' values for OFPET_BAD_MATCH.  'data' contains at least
@@ -1572,6 +1640,7 @@
 	10: "OFPBMC_DUP_FIELD",
 	11: "OFPBMC_EPERM",
 }
+
 var OfpBadMatchCode_value = map[string]int32{
 	"OFPBMC_BAD_TYPE":         0,
 	"OFPBMC_BAD_LEN":          1,
@@ -1590,8 +1659,9 @@
 func (x OfpBadMatchCode) String() string {
 	return proto.EnumName(OfpBadMatchCode_name, int32(x))
 }
+
 func (OfpBadMatchCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{35}
+	return fileDescriptor_08e3a4e375aeddc7, []int{35}
 }
 
 // ofp_error_msg 'code' values for OFPET_FLOW_MOD_FAILED.  'data' contains
@@ -1619,6 +1689,7 @@
 	6: "OFPFMFC_BAD_COMMAND",
 	7: "OFPFMFC_BAD_FLAGS",
 }
+
 var OfpFlowModFailedCode_value = map[string]int32{
 	"OFPFMFC_UNKNOWN":      0,
 	"OFPFMFC_TABLE_FULL":   1,
@@ -1633,8 +1704,9 @@
 func (x OfpFlowModFailedCode) String() string {
 	return proto.EnumName(OfpFlowModFailedCode_name, int32(x))
 }
+
 func (OfpFlowModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{36}
+	return fileDescriptor_08e3a4e375aeddc7, []int{36}
 }
 
 // ofp_error_msg 'code' values for OFPET_GROUP_MOD_FAILED.  'data' contains
@@ -1676,6 +1748,7 @@
 	13: "OFPGMFC_BAD_WATCH",
 	14: "OFPGMFC_EPERM",
 }
+
 var OfpGroupModFailedCode_value = map[string]int32{
 	"OFPGMFC_GROUP_EXISTS":         0,
 	"OFPGMFC_INVALID_GROUP":        1,
@@ -1697,8 +1770,9 @@
 func (x OfpGroupModFailedCode) String() string {
 	return proto.EnumName(OfpGroupModFailedCode_name, int32(x))
 }
+
 func (OfpGroupModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{37}
+	return fileDescriptor_08e3a4e375aeddc7, []int{37}
 }
 
 // ofp_error_msg 'code' values for OFPET_PORT_MOD_FAILED.  'data' contains
@@ -1720,6 +1794,7 @@
 	3: "OFPPMFC_BAD_ADVERTISE",
 	4: "OFPPMFC_EPERM",
 }
+
 var OfpPortModFailedCode_value = map[string]int32{
 	"OFPPMFC_BAD_PORT":      0,
 	"OFPPMFC_BAD_HW_ADDR":   1,
@@ -1731,8 +1806,9 @@
 func (x OfpPortModFailedCode) String() string {
 	return proto.EnumName(OfpPortModFailedCode_name, int32(x))
 }
+
 func (OfpPortModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{38}
+	return fileDescriptor_08e3a4e375aeddc7, []int{38}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_MOD_FAILED.  'data' contains
@@ -1750,6 +1826,7 @@
 	1: "OFPTMFC_BAD_CONFIG",
 	2: "OFPTMFC_EPERM",
 }
+
 var OfpTableModFailedCode_value = map[string]int32{
 	"OFPTMFC_BAD_TABLE":  0,
 	"OFPTMFC_BAD_CONFIG": 1,
@@ -1759,8 +1836,9 @@
 func (x OfpTableModFailedCode) String() string {
 	return proto.EnumName(OfpTableModFailedCode_name, int32(x))
 }
+
 func (OfpTableModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{39}
+	return fileDescriptor_08e3a4e375aeddc7, []int{39}
 }
 
 // ofp_error msg 'code' values for OFPET_QUEUE_OP_FAILED. 'data' contains
@@ -1778,6 +1856,7 @@
 	1: "OFPQOFC_BAD_QUEUE",
 	2: "OFPQOFC_EPERM",
 }
+
 var OfpQueueOpFailedCode_value = map[string]int32{
 	"OFPQOFC_BAD_PORT":  0,
 	"OFPQOFC_BAD_QUEUE": 1,
@@ -1787,8 +1866,9 @@
 func (x OfpQueueOpFailedCode) String() string {
 	return proto.EnumName(OfpQueueOpFailedCode_name, int32(x))
 }
+
 func (OfpQueueOpFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{40}
+	return fileDescriptor_08e3a4e375aeddc7, []int{40}
 }
 
 // ofp_error_msg 'code' values for OFPET_SWITCH_CONFIG_FAILED. 'data' contains
@@ -1806,6 +1886,7 @@
 	1: "OFPSCFC_BAD_LEN",
 	2: "OFPSCFC_EPERM",
 }
+
 var OfpSwitchConfigFailedCode_value = map[string]int32{
 	"OFPSCFC_BAD_FLAGS": 0,
 	"OFPSCFC_BAD_LEN":   1,
@@ -1815,8 +1896,9 @@
 func (x OfpSwitchConfigFailedCode) String() string {
 	return proto.EnumName(OfpSwitchConfigFailedCode_name, int32(x))
 }
+
 func (OfpSwitchConfigFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{41}
+	return fileDescriptor_08e3a4e375aeddc7, []int{41}
 }
 
 // ofp_error_msg 'code' values for OFPET_ROLE_REQUEST_FAILED. 'data' contains
@@ -1834,6 +1916,7 @@
 	1: "OFPRRFC_UNSUP",
 	2: "OFPRRFC_BAD_ROLE",
 }
+
 var OfpRoleRequestFailedCode_value = map[string]int32{
 	"OFPRRFC_STALE":    0,
 	"OFPRRFC_UNSUP":    1,
@@ -1843,8 +1926,9 @@
 func (x OfpRoleRequestFailedCode) String() string {
 	return proto.EnumName(OfpRoleRequestFailedCode_name, int32(x))
 }
+
 func (OfpRoleRequestFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{42}
+	return fileDescriptor_08e3a4e375aeddc7, []int{42}
 }
 
 // ofp_error_msg 'code' values for OFPET_METER_MOD_FAILED.  'data' contains
@@ -1880,6 +1964,7 @@
 	10: "OFPMMFC_OUT_OF_METERS",
 	11: "OFPMMFC_OUT_OF_BANDS",
 }
+
 var OfpMeterModFailedCode_value = map[string]int32{
 	"OFPMMFC_UNKNOWN":        0,
 	"OFPMMFC_METER_EXISTS":   1,
@@ -1898,8 +1983,9 @@
 func (x OfpMeterModFailedCode) String() string {
 	return proto.EnumName(OfpMeterModFailedCode_name, int32(x))
 }
+
 func (OfpMeterModFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{43}
+	return fileDescriptor_08e3a4e375aeddc7, []int{43}
 }
 
 // ofp_error_msg 'code' values for OFPET_TABLE_FEATURES_FAILED. 'data' contains
@@ -1923,6 +2009,7 @@
 	4: "OFPTFFC_BAD_ARGUMENT",
 	5: "OFPTFFC_EPERM",
 }
+
 var OfpTableFeaturesFailedCode_value = map[string]int32{
 	"OFPTFFC_BAD_TABLE":    0,
 	"OFPTFFC_BAD_METADATA": 1,
@@ -1935,8 +2022,9 @@
 func (x OfpTableFeaturesFailedCode) String() string {
 	return proto.EnumName(OfpTableFeaturesFailedCode_name, int32(x))
 }
+
 func (OfpTableFeaturesFailedCode) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{44}
+	return fileDescriptor_08e3a4e375aeddc7, []int{44}
 }
 
 type OfpMultipartType int32
@@ -2025,6 +2113,7 @@
 	13:    "OFPMP_PORT_DESC",
 	65535: "OFPMP_EXPERIMENTER",
 }
+
 var OfpMultipartType_value = map[string]int32{
 	"OFPMP_DESC":           0,
 	"OFPMP_FLOW":           1,
@@ -2046,8 +2135,9 @@
 func (x OfpMultipartType) String() string {
 	return proto.EnumName(OfpMultipartType_name, int32(x))
 }
+
 func (OfpMultipartType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{45}
+	return fileDescriptor_08e3a4e375aeddc7, []int{45}
 }
 
 type OfpMultipartRequestFlags int32
@@ -2061,6 +2151,7 @@
 	0: "OFPMPF_REQ_INVALID",
 	1: "OFPMPF_REQ_MORE",
 }
+
 var OfpMultipartRequestFlags_value = map[string]int32{
 	"OFPMPF_REQ_INVALID": 0,
 	"OFPMPF_REQ_MORE":    1,
@@ -2069,8 +2160,9 @@
 func (x OfpMultipartRequestFlags) String() string {
 	return proto.EnumName(OfpMultipartRequestFlags_name, int32(x))
 }
+
 func (OfpMultipartRequestFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{46}
+	return fileDescriptor_08e3a4e375aeddc7, []int{46}
 }
 
 type OfpMultipartReplyFlags int32
@@ -2084,6 +2176,7 @@
 	0: "OFPMPF_REPLY_INVALID",
 	1: "OFPMPF_REPLY_MORE",
 }
+
 var OfpMultipartReplyFlags_value = map[string]int32{
 	"OFPMPF_REPLY_INVALID": 0,
 	"OFPMPF_REPLY_MORE":    1,
@@ -2092,8 +2185,9 @@
 func (x OfpMultipartReplyFlags) String() string {
 	return proto.EnumName(OfpMultipartReplyFlags_name, int32(x))
 }
+
 func (OfpMultipartReplyFlags) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{47}
+	return fileDescriptor_08e3a4e375aeddc7, []int{47}
 }
 
 // Table Feature property types.
@@ -2138,6 +2232,7 @@
 	65534: "OFPTFPT_EXPERIMENTER",
 	65535: "OFPTFPT_EXPERIMENTER_MISS",
 }
+
 var OfpTableFeaturePropType_value = map[string]int32{
 	"OFPTFPT_INSTRUCTIONS":        0,
 	"OFPTFPT_INSTRUCTIONS_MISS":   1,
@@ -2160,8 +2255,9 @@
 func (x OfpTableFeaturePropType) String() string {
 	return proto.EnumName(OfpTableFeaturePropType_name, int32(x))
 }
+
 func (OfpTableFeaturePropType) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{48}
+	return fileDescriptor_08e3a4e375aeddc7, []int{48}
 }
 
 // Group configuration flags
@@ -2182,6 +2278,7 @@
 	4: "OFPGFC_CHAINING",
 	8: "OFPGFC_CHAINING_CHECKS",
 }
+
 var OfpGroupCapabilities_value = map[string]int32{
 	"OFPGFC_INVALID":         0,
 	"OFPGFC_SELECT_WEIGHT":   1,
@@ -2193,8 +2290,9 @@
 func (x OfpGroupCapabilities) String() string {
 	return proto.EnumName(OfpGroupCapabilities_name, int32(x))
 }
+
 func (OfpGroupCapabilities) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{49}
+	return fileDescriptor_08e3a4e375aeddc7, []int{49}
 }
 
 type OfpQueueProperties int32
@@ -2212,6 +2310,7 @@
 	2:     "OFPQT_MAX_RATE",
 	65535: "OFPQT_EXPERIMENTER",
 }
+
 var OfpQueueProperties_value = map[string]int32{
 	"OFPQT_INVALID":      0,
 	"OFPQT_MIN_RATE":     1,
@@ -2222,8 +2321,9 @@
 func (x OfpQueueProperties) String() string {
 	return proto.EnumName(OfpQueueProperties_name, int32(x))
 }
+
 func (OfpQueueProperties) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{50}
+	return fileDescriptor_08e3a4e375aeddc7, []int{50}
 }
 
 // Controller roles.
@@ -2242,6 +2342,7 @@
 	2: "OFPCR_ROLE_MASTER",
 	3: "OFPCR_ROLE_SLAVE",
 }
+
 var OfpControllerRole_value = map[string]int32{
 	"OFPCR_ROLE_NOCHANGE": 0,
 	"OFPCR_ROLE_EQUAL":    1,
@@ -2252,8 +2353,9 @@
 func (x OfpControllerRole) String() string {
 	return proto.EnumName(OfpControllerRole_name, int32(x))
 }
+
 func (OfpControllerRole) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{51}
+	return fileDescriptor_08e3a4e375aeddc7, []int{51}
 }
 
 // Header on all OpenFlow packets.
@@ -2270,16 +2372,17 @@
 func (m *OfpHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpHeader) ProtoMessage()    {}
 func (*OfpHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{0}
+	return fileDescriptor_08e3a4e375aeddc7, []int{0}
 }
+
 func (m *OfpHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpHeader.Unmarshal(m, b)
 }
 func (m *OfpHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHeader.Merge(dst, src)
+func (m *OfpHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpHeader.Merge(m, src)
 }
 func (m *OfpHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpHeader.Size(m)
@@ -2326,16 +2429,17 @@
 func (m *OfpHelloElemHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpHelloElemHeader) ProtoMessage()    {}
 func (*OfpHelloElemHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{1}
+	return fileDescriptor_08e3a4e375aeddc7, []int{1}
 }
+
 func (m *OfpHelloElemHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpHelloElemHeader.Unmarshal(m, b)
 }
 func (m *OfpHelloElemHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpHelloElemHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemHeader.Merge(dst, src)
+func (m *OfpHelloElemHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpHelloElemHeader.Merge(m, src)
 }
 func (m *OfpHelloElemHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpHelloElemHeader.Size(m)
@@ -2377,61 +2481,13 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpHelloElemHeader) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpHelloElemHeader_OneofMarshaler, _OfpHelloElemHeader_OneofUnmarshaler, _OfpHelloElemHeader_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpHelloElemHeader) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpHelloElemHeader_Versionbitmap)(nil),
 	}
 }
 
-func _OfpHelloElemHeader_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpHelloElemHeader)
-	// element
-	switch x := m.Element.(type) {
-	case *OfpHelloElemHeader_Versionbitmap:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Versionbitmap); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpHelloElemHeader.Element has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpHelloElemHeader_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpHelloElemHeader)
-	switch tag {
-	case 2: // element.versionbitmap
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpHelloElemVersionbitmap)
-		err := b.DecodeMessage(msg)
-		m.Element = &OfpHelloElemHeader_Versionbitmap{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpHelloElemHeader_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpHelloElemHeader)
-	// element
-	switch x := m.Element.(type) {
-	case *OfpHelloElemHeader_Versionbitmap:
-		s := proto.Size(x.Versionbitmap)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Version bitmap Hello Element
 type OfpHelloElemVersionbitmap struct {
 	Bitmaps              []uint32 `protobuf:"varint,2,rep,packed,name=bitmaps,proto3" json:"bitmaps,omitempty"`
@@ -2444,16 +2500,17 @@
 func (m *OfpHelloElemVersionbitmap) String() string { return proto.CompactTextString(m) }
 func (*OfpHelloElemVersionbitmap) ProtoMessage()    {}
 func (*OfpHelloElemVersionbitmap) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{2}
+	return fileDescriptor_08e3a4e375aeddc7, []int{2}
 }
+
 func (m *OfpHelloElemVersionbitmap) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpHelloElemVersionbitmap.Unmarshal(m, b)
 }
 func (m *OfpHelloElemVersionbitmap) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpHelloElemVersionbitmap.Marshal(b, m, deterministic)
 }
-func (dst *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(dst, src)
+func (m *OfpHelloElemVersionbitmap) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpHelloElemVersionbitmap.Merge(m, src)
 }
 func (m *OfpHelloElemVersionbitmap) XXX_Size() int {
 	return xxx_messageInfo_OfpHelloElemVersionbitmap.Size(m)
@@ -2486,16 +2543,17 @@
 func (m *OfpHello) String() string { return proto.CompactTextString(m) }
 func (*OfpHello) ProtoMessage()    {}
 func (*OfpHello) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{3}
+	return fileDescriptor_08e3a4e375aeddc7, []int{3}
 }
+
 func (m *OfpHello) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpHello.Unmarshal(m, b)
 }
 func (m *OfpHello) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpHello.Marshal(b, m, deterministic)
 }
-func (dst *OfpHello) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpHello.Merge(dst, src)
+func (m *OfpHello) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpHello.Merge(m, src)
 }
 func (m *OfpHello) XXX_Size() int {
 	return xxx_messageInfo_OfpHello.Size(m)
@@ -2515,7 +2573,7 @@
 
 // Switch configuration.
 type OfpSwitchConfig struct {
-	// ofp_header header;
+	//ofp_header header;
 	Flags                uint32   `protobuf:"varint,1,opt,name=flags,proto3" json:"flags,omitempty"`
 	MissSendLen          uint32   `protobuf:"varint,2,opt,name=miss_send_len,json=missSendLen,proto3" json:"miss_send_len,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -2527,16 +2585,17 @@
 func (m *OfpSwitchConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpSwitchConfig) ProtoMessage()    {}
 func (*OfpSwitchConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{4}
+	return fileDescriptor_08e3a4e375aeddc7, []int{4}
 }
+
 func (m *OfpSwitchConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpSwitchConfig.Unmarshal(m, b)
 }
 func (m *OfpSwitchConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpSwitchConfig.Marshal(b, m, deterministic)
 }
-func (dst *OfpSwitchConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchConfig.Merge(dst, src)
+func (m *OfpSwitchConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpSwitchConfig.Merge(m, src)
 }
 func (m *OfpSwitchConfig) XXX_Size() int {
 	return xxx_messageInfo_OfpSwitchConfig.Size(m)
@@ -2563,7 +2622,7 @@
 
 // Configure/Modify behavior of a flow table
 type OfpTableMod struct {
-	// ofp_header header;
+	//ofp_header header;
 	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
 	Config               uint32   `protobuf:"varint,2,opt,name=config,proto3" json:"config,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -2575,16 +2634,17 @@
 func (m *OfpTableMod) String() string { return proto.CompactTextString(m) }
 func (*OfpTableMod) ProtoMessage()    {}
 func (*OfpTableMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{5}
+	return fileDescriptor_08e3a4e375aeddc7, []int{5}
 }
+
 func (m *OfpTableMod) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableMod.Unmarshal(m, b)
 }
 func (m *OfpTableMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableMod.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableMod.Merge(dst, src)
+func (m *OfpTableMod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableMod.Merge(m, src)
 }
 func (m *OfpTableMod) XXX_Size() int {
 	return xxx_messageInfo_OfpTableMod.Size(m)
@@ -2633,16 +2693,17 @@
 func (m *OfpPort) String() string { return proto.CompactTextString(m) }
 func (*OfpPort) ProtoMessage()    {}
 func (*OfpPort) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{6}
+	return fileDescriptor_08e3a4e375aeddc7, []int{6}
 }
+
 func (m *OfpPort) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPort.Unmarshal(m, b)
 }
 func (m *OfpPort) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPort.Marshal(b, m, deterministic)
 }
-func (dst *OfpPort) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPort.Merge(dst, src)
+func (m *OfpPort) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPort.Merge(m, src)
 }
 func (m *OfpPort) XXX_Size() int {
 	return xxx_messageInfo_OfpPort.Size(m)
@@ -2732,7 +2793,7 @@
 
 // Switch features.
 type OfpSwitchFeatures struct {
-	// ofp_header header;
+	//ofp_header header;
 	DatapathId  uint64 `protobuf:"varint,1,opt,name=datapath_id,json=datapathId,proto3" json:"datapath_id,omitempty"`
 	NBuffers    uint32 `protobuf:"varint,2,opt,name=n_buffers,json=nBuffers,proto3" json:"n_buffers,omitempty"`
 	NTables     uint32 `protobuf:"varint,3,opt,name=n_tables,json=nTables,proto3" json:"n_tables,omitempty"`
@@ -2748,16 +2809,17 @@
 func (m *OfpSwitchFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpSwitchFeatures) ProtoMessage()    {}
 func (*OfpSwitchFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{7}
+	return fileDescriptor_08e3a4e375aeddc7, []int{7}
 }
+
 func (m *OfpSwitchFeatures) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpSwitchFeatures.Unmarshal(m, b)
 }
 func (m *OfpSwitchFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpSwitchFeatures.Marshal(b, m, deterministic)
 }
-func (dst *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpSwitchFeatures.Merge(dst, src)
+func (m *OfpSwitchFeatures) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpSwitchFeatures.Merge(m, src)
 }
 func (m *OfpSwitchFeatures) XXX_Size() int {
 	return xxx_messageInfo_OfpSwitchFeatures.Size(m)
@@ -2805,7 +2867,7 @@
 
 // A physical port has changed in the datapath
 type OfpPortStatus struct {
-	// ofp_header header;
+	//ofp_header header;
 	Reason               OfpPortReason `protobuf:"varint,1,opt,name=reason,proto3,enum=openflow_13.OfpPortReason" json:"reason,omitempty"`
 	Desc                 *OfpPort      `protobuf:"bytes,2,opt,name=desc,proto3" json:"desc,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}      `json:"-"`
@@ -2817,16 +2879,17 @@
 func (m *OfpPortStatus) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStatus) ProtoMessage()    {}
 func (*OfpPortStatus) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{8}
+	return fileDescriptor_08e3a4e375aeddc7, []int{8}
 }
+
 func (m *OfpPortStatus) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPortStatus.Unmarshal(m, b)
 }
 func (m *OfpPortStatus) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPortStatus.Marshal(b, m, deterministic)
 }
-func (dst *OfpPortStatus) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatus.Merge(dst, src)
+func (m *OfpPortStatus) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPortStatus.Merge(m, src)
 }
 func (m *OfpPortStatus) XXX_Size() int {
 	return xxx_messageInfo_OfpPortStatus.Size(m)
@@ -2853,14 +2916,14 @@
 
 // Modify behavior of the physical port
 type OfpPortMod struct {
-	// ofp_header header;
+	//ofp_header header;
 	PortNo uint32   `protobuf:"varint,1,opt,name=port_no,json=portNo,proto3" json:"port_no,omitempty"`
 	HwAddr []uint32 `protobuf:"varint,2,rep,packed,name=hw_addr,json=hwAddr,proto3" json:"hw_addr,omitempty"`
 	// The hardware address is not
-	// configurable.  This is used to
-	// sanity-check the request, so it must
-	// be the same as returned in an
-	// ofp_port struct.
+	//configurable.  This is used to
+	//sanity-check the request, so it must
+	//be the same as returned in an
+	//ofp_port struct.
 	Config               uint32   `protobuf:"varint,3,opt,name=config,proto3" json:"config,omitempty"`
 	Mask                 uint32   `protobuf:"varint,4,opt,name=mask,proto3" json:"mask,omitempty"`
 	Advertise            uint32   `protobuf:"varint,5,opt,name=advertise,proto3" json:"advertise,omitempty"`
@@ -2873,16 +2936,17 @@
 func (m *OfpPortMod) String() string { return proto.CompactTextString(m) }
 func (*OfpPortMod) ProtoMessage()    {}
 func (*OfpPortMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{9}
+	return fileDescriptor_08e3a4e375aeddc7, []int{9}
 }
+
 func (m *OfpPortMod) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPortMod.Unmarshal(m, b)
 }
 func (m *OfpPortMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPortMod.Marshal(b, m, deterministic)
 }
-func (dst *OfpPortMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortMod.Merge(dst, src)
+func (m *OfpPortMod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPortMod.Merge(m, src)
 }
 func (m *OfpPortMod) XXX_Size() int {
 	return xxx_messageInfo_OfpPortMod.Size(m)
@@ -2941,16 +3005,17 @@
 func (m *OfpMatch) String() string { return proto.CompactTextString(m) }
 func (*OfpMatch) ProtoMessage()    {}
 func (*OfpMatch) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{10}
+	return fileDescriptor_08e3a4e375aeddc7, []int{10}
 }
+
 func (m *OfpMatch) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMatch.Unmarshal(m, b)
 }
 func (m *OfpMatch) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMatch.Marshal(b, m, deterministic)
 }
-func (dst *OfpMatch) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMatch.Merge(dst, src)
+func (m *OfpMatch) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMatch.Merge(m, src)
 }
 func (m *OfpMatch) XXX_Size() int {
 	return xxx_messageInfo_OfpMatch.Size(m)
@@ -2991,16 +3056,17 @@
 func (m *OfpOxmField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmField) ProtoMessage()    {}
 func (*OfpOxmField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{11}
+	return fileDescriptor_08e3a4e375aeddc7, []int{11}
 }
+
 func (m *OfpOxmField) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpOxmField.Unmarshal(m, b)
 }
 func (m *OfpOxmField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpOxmField.Marshal(b, m, deterministic)
 }
-func (dst *OfpOxmField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmField.Merge(dst, src)
+func (m *OfpOxmField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpOxmField.Merge(m, src)
 }
 func (m *OfpOxmField) XXX_Size() int {
 	return xxx_messageInfo_OfpOxmField.Size(m)
@@ -3055,80 +3121,14 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpOxmField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpOxmField_OneofMarshaler, _OfpOxmField_OneofUnmarshaler, _OfpOxmField_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmField) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpOxmField_OfbField)(nil),
 		(*OfpOxmField_ExperimenterField)(nil),
 	}
 }
 
-func _OfpOxmField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpOxmField)
-	// field
-	switch x := m.Field.(type) {
-	case *OfpOxmField_OfbField:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.OfbField); err != nil {
-			return err
-		}
-	case *OfpOxmField_ExperimenterField:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.ExperimenterField); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmField.Field has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpOxmField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpOxmField)
-	switch tag {
-	case 4: // field.ofb_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpOxmOfbField)
-		err := b.DecodeMessage(msg)
-		m.Field = &OfpOxmField_OfbField{msg}
-		return true, err
-	case 5: // field.experimenter_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpOxmExperimenterField)
-		err := b.DecodeMessage(msg)
-		m.Field = &OfpOxmField_ExperimenterField{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpOxmField_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpOxmField)
-	// field
-	switch x := m.Field.(type) {
-	case *OfpOxmField_OfbField:
-		s := proto.Size(x.OfbField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpOxmField_ExperimenterField:
-		s := proto.Size(x.ExperimenterField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // OXM OpenFlow Basic Match Field
 type OfpOxmOfbField struct {
 	Type    OxmOfbFieldTypes `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OxmOfbFieldTypes" json:"type,omitempty"`
@@ -3202,16 +3202,17 @@
 func (m *OfpOxmOfbField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmOfbField) ProtoMessage()    {}
 func (*OfpOxmOfbField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{12}
+	return fileDescriptor_08e3a4e375aeddc7, []int{12}
 }
+
 func (m *OfpOxmOfbField) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpOxmOfbField.Unmarshal(m, b)
 }
 func (m *OfpOxmOfbField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpOxmOfbField.Marshal(b, m, deterministic)
 }
-func (dst *OfpOxmOfbField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmOfbField.Merge(dst, src)
+func (m *OfpOxmOfbField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpOxmOfbField.Merge(m, src)
 }
 func (m *OfpOxmOfbField) XXX_Size() int {
 	return xxx_messageInfo_OfpOxmOfbField.Size(m)
@@ -3960,9 +3961,9 @@
 	return 0
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpOxmOfbField) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpOxmOfbField_OneofMarshaler, _OfpOxmOfbField_OneofUnmarshaler, _OfpOxmOfbField_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpOxmOfbField) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpOxmOfbField_Port)(nil),
 		(*OfpOxmOfbField_PhysicalPort)(nil),
 		(*OfpOxmOfbField_TableMetadata)(nil),
@@ -4020,763 +4021,6 @@
 	}
 }
 
-func _OfpOxmOfbField_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpOxmOfbField)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpOxmOfbField_Port:
-		b.EncodeVarint(3<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Port))
-	case *OfpOxmOfbField_PhysicalPort:
-		b.EncodeVarint(4<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PhysicalPort))
-	case *OfpOxmOfbField_TableMetadata:
-		b.EncodeVarint(5<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TableMetadata))
-	case *OfpOxmOfbField_EthDst:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthDst)
-	case *OfpOxmOfbField_EthSrc:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthSrc)
-	case *OfpOxmOfbField_EthType:
-		b.EncodeVarint(8<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.EthType))
-	case *OfpOxmOfbField_VlanVid:
-		b.EncodeVarint(9<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanVid))
-	case *OfpOxmOfbField_VlanPcp:
-		b.EncodeVarint(10<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanPcp))
-	case *OfpOxmOfbField_IpDscp:
-		b.EncodeVarint(11<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpDscp))
-	case *OfpOxmOfbField_IpEcn:
-		b.EncodeVarint(12<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpEcn))
-	case *OfpOxmOfbField_IpProto:
-		b.EncodeVarint(13<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.IpProto))
-	case *OfpOxmOfbField_Ipv4Src:
-		b.EncodeVarint(14<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4Src))
-	case *OfpOxmOfbField_Ipv4Dst:
-		b.EncodeVarint(15<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4Dst))
-	case *OfpOxmOfbField_TcpSrc:
-		b.EncodeVarint(16<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TcpSrc))
-	case *OfpOxmOfbField_TcpDst:
-		b.EncodeVarint(17<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TcpDst))
-	case *OfpOxmOfbField_UdpSrc:
-		b.EncodeVarint(18<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.UdpSrc))
-	case *OfpOxmOfbField_UdpDst:
-		b.EncodeVarint(19<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.UdpDst))
-	case *OfpOxmOfbField_SctpSrc:
-		b.EncodeVarint(20<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.SctpSrc))
-	case *OfpOxmOfbField_SctpDst:
-		b.EncodeVarint(21<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.SctpDst))
-	case *OfpOxmOfbField_Icmpv4Type:
-		b.EncodeVarint(22<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv4Type))
-	case *OfpOxmOfbField_Icmpv4Code:
-		b.EncodeVarint(23<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv4Code))
-	case *OfpOxmOfbField_ArpOp:
-		b.EncodeVarint(24<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpOp))
-	case *OfpOxmOfbField_ArpSpa:
-		b.EncodeVarint(25<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpSpa))
-	case *OfpOxmOfbField_ArpTpa:
-		b.EncodeVarint(26<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpTpa))
-	case *OfpOxmOfbField_ArpSha:
-		b.EncodeVarint(27<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.ArpSha)
-	case *OfpOxmOfbField_ArpTha:
-		b.EncodeVarint(28<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.ArpTha)
-	case *OfpOxmOfbField_Ipv6Src:
-		b.EncodeVarint(29<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6Src)
-	case *OfpOxmOfbField_Ipv6Dst:
-		b.EncodeVarint(30<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6Dst)
-	case *OfpOxmOfbField_Ipv6Flabel:
-		b.EncodeVarint(31<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6Flabel))
-	case *OfpOxmOfbField_Icmpv6Type:
-		b.EncodeVarint(32<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv6Type))
-	case *OfpOxmOfbField_Icmpv6Code:
-		b.EncodeVarint(33<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Icmpv6Code))
-	case *OfpOxmOfbField_Ipv6NdTarget:
-		b.EncodeVarint(34<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdTarget)
-	case *OfpOxmOfbField_Ipv6NdSsl:
-		b.EncodeVarint(35<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdSsl)
-	case *OfpOxmOfbField_Ipv6NdTll:
-		b.EncodeVarint(36<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6NdTll)
-	case *OfpOxmOfbField_MplsLabel:
-		b.EncodeVarint(37<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsLabel))
-	case *OfpOxmOfbField_MplsTc:
-		b.EncodeVarint(38<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsTc))
-	case *OfpOxmOfbField_MplsBos:
-		b.EncodeVarint(39<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.MplsBos))
-	case *OfpOxmOfbField_PbbIsid:
-		b.EncodeVarint(40<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PbbIsid))
-	case *OfpOxmOfbField_TunnelId:
-		b.EncodeVarint(41<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TunnelId))
-	case *OfpOxmOfbField_Ipv6Exthdr:
-		b.EncodeVarint(42<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6Exthdr))
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmOfbField.Value has unexpected type %T", x)
-	}
-	// mask
-	switch x := m.Mask.(type) {
-	case *OfpOxmOfbField_TableMetadataMask:
-		b.EncodeVarint(105<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TableMetadataMask))
-	case *OfpOxmOfbField_EthDstMask:
-		b.EncodeVarint(106<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthDstMask)
-	case *OfpOxmOfbField_EthSrcMask:
-		b.EncodeVarint(107<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.EthSrcMask)
-	case *OfpOxmOfbField_VlanVidMask:
-		b.EncodeVarint(109<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.VlanVidMask))
-	case *OfpOxmOfbField_Ipv4SrcMask:
-		b.EncodeVarint(114<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4SrcMask))
-	case *OfpOxmOfbField_Ipv4DstMask:
-		b.EncodeVarint(115<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv4DstMask))
-	case *OfpOxmOfbField_ArpSpaMask:
-		b.EncodeVarint(125<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpSpaMask))
-	case *OfpOxmOfbField_ArpTpaMask:
-		b.EncodeVarint(126<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.ArpTpaMask))
-	case *OfpOxmOfbField_Ipv6SrcMask:
-		b.EncodeVarint(129<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6SrcMask)
-	case *OfpOxmOfbField_Ipv6DstMask:
-		b.EncodeVarint(130<<3 | proto.WireBytes)
-		b.EncodeRawBytes(x.Ipv6DstMask)
-	case *OfpOxmOfbField_Ipv6FlabelMask:
-		b.EncodeVarint(131<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6FlabelMask))
-	case *OfpOxmOfbField_PbbIsidMask:
-		b.EncodeVarint(140<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.PbbIsidMask))
-	case *OfpOxmOfbField_TunnelIdMask:
-		b.EncodeVarint(141<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.TunnelIdMask))
-	case *OfpOxmOfbField_Ipv6ExthdrMask:
-		b.EncodeVarint(142<<3 | proto.WireVarint)
-		b.EncodeVarint(uint64(x.Ipv6ExthdrMask))
-	case nil:
-	default:
-		return fmt.Errorf("OfpOxmOfbField.Mask has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpOxmOfbField_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpOxmOfbField)
-	switch tag {
-	case 3: // value.port
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Port{uint32(x)}
-		return true, err
-	case 4: // value.physical_port
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_PhysicalPort{uint32(x)}
-		return true, err
-	case 5: // value.table_metadata
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TableMetadata{x}
-		return true, err
-	case 6: // value.eth_dst
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_EthDst{x}
-		return true, err
-	case 7: // value.eth_src
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_EthSrc{x}
-		return true, err
-	case 8: // value.eth_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_EthType{uint32(x)}
-		return true, err
-	case 9: // value.vlan_vid
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_VlanVid{uint32(x)}
-		return true, err
-	case 10: // value.vlan_pcp
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_VlanPcp{uint32(x)}
-		return true, err
-	case 11: // value.ip_dscp
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpDscp{uint32(x)}
-		return true, err
-	case 12: // value.ip_ecn
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpEcn{uint32(x)}
-		return true, err
-	case 13: // value.ip_proto
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_IpProto{uint32(x)}
-		return true, err
-	case 14: // value.ipv4_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv4Src{uint32(x)}
-		return true, err
-	case 15: // value.ipv4_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv4Dst{uint32(x)}
-		return true, err
-	case 16: // value.tcp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TcpSrc{uint32(x)}
-		return true, err
-	case 17: // value.tcp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TcpDst{uint32(x)}
-		return true, err
-	case 18: // value.udp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_UdpSrc{uint32(x)}
-		return true, err
-	case 19: // value.udp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_UdpDst{uint32(x)}
-		return true, err
-	case 20: // value.sctp_src
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_SctpSrc{uint32(x)}
-		return true, err
-	case 21: // value.sctp_dst
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_SctpDst{uint32(x)}
-		return true, err
-	case 22: // value.icmpv4_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv4Type{uint32(x)}
-		return true, err
-	case 23: // value.icmpv4_code
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv4Code{uint32(x)}
-		return true, err
-	case 24: // value.arp_op
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpOp{uint32(x)}
-		return true, err
-	case 25: // value.arp_spa
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpSpa{uint32(x)}
-		return true, err
-	case 26: // value.arp_tpa
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_ArpTpa{uint32(x)}
-		return true, err
-	case 27: // value.arp_sha
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_ArpSha{x}
-		return true, err
-	case 28: // value.arp_tha
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_ArpTha{x}
-		return true, err
-	case 29: // value.ipv6_src
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6Src{x}
-		return true, err
-	case 30: // value.ipv6_dst
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6Dst{x}
-		return true, err
-	case 31: // value.ipv6_flabel
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv6Flabel{uint32(x)}
-		return true, err
-	case 32: // value.icmpv6_type
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv6Type{uint32(x)}
-		return true, err
-	case 33: // value.icmpv6_code
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Icmpv6Code{uint32(x)}
-		return true, err
-	case 34: // value.ipv6_nd_target
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdTarget{x}
-		return true, err
-	case 35: // value.ipv6_nd_ssl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdSsl{x}
-		return true, err
-	case 36: // value.ipv6_nd_tll
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Value = &OfpOxmOfbField_Ipv6NdTll{x}
-		return true, err
-	case 37: // value.mpls_label
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsLabel{uint32(x)}
-		return true, err
-	case 38: // value.mpls_tc
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsTc{uint32(x)}
-		return true, err
-	case 39: // value.mpls_bos
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_MplsBos{uint32(x)}
-		return true, err
-	case 40: // value.pbb_isid
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_PbbIsid{uint32(x)}
-		return true, err
-	case 41: // value.tunnel_id
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_TunnelId{x}
-		return true, err
-	case 42: // value.ipv6_exthdr
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Value = &OfpOxmOfbField_Ipv6Exthdr{uint32(x)}
-		return true, err
-	case 105: // mask.table_metadata_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_TableMetadataMask{x}
-		return true, err
-	case 106: // mask.eth_dst_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_EthDstMask{x}
-		return true, err
-	case 107: // mask.eth_src_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_EthSrcMask{x}
-		return true, err
-	case 109: // mask.vlan_vid_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_VlanVidMask{uint32(x)}
-		return true, err
-	case 114: // mask.ipv4_src_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv4SrcMask{uint32(x)}
-		return true, err
-	case 115: // mask.ipv4_dst_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv4DstMask{uint32(x)}
-		return true, err
-	case 125: // mask.arp_spa_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_ArpSpaMask{uint32(x)}
-		return true, err
-	case 126: // mask.arp_tpa_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_ArpTpaMask{uint32(x)}
-		return true, err
-	case 129: // mask.ipv6_src_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_Ipv6SrcMask{x}
-		return true, err
-	case 130: // mask.ipv6_dst_mask
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeRawBytes(true)
-		m.Mask = &OfpOxmOfbField_Ipv6DstMask{x}
-		return true, err
-	case 131: // mask.ipv6_flabel_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv6FlabelMask{uint32(x)}
-		return true, err
-	case 140: // mask.pbb_isid_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_PbbIsidMask{uint32(x)}
-		return true, err
-	case 141: // mask.tunnel_id_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_TunnelIdMask{x}
-		return true, err
-	case 142: // mask.ipv6_exthdr_mask
-		if wire != proto.WireVarint {
-			return true, proto.ErrInternalBadWireType
-		}
-		x, err := b.DecodeVarint()
-		m.Mask = &OfpOxmOfbField_Ipv6ExthdrMask{uint32(x)}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpOxmOfbField_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpOxmOfbField)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpOxmOfbField_Port:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Port))
-	case *OfpOxmOfbField_PhysicalPort:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.PhysicalPort))
-	case *OfpOxmOfbField_TableMetadata:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.TableMetadata))
-	case *OfpOxmOfbField_EthDst:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthDst)))
-		n += len(x.EthDst)
-	case *OfpOxmOfbField_EthSrc:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthSrc)))
-		n += len(x.EthSrc)
-	case *OfpOxmOfbField_EthType:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.EthType))
-	case *OfpOxmOfbField_VlanVid:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanVid))
-	case *OfpOxmOfbField_VlanPcp:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanPcp))
-	case *OfpOxmOfbField_IpDscp:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpDscp))
-	case *OfpOxmOfbField_IpEcn:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpEcn))
-	case *OfpOxmOfbField_IpProto:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.IpProto))
-	case *OfpOxmOfbField_Ipv4Src:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4Src))
-	case *OfpOxmOfbField_Ipv4Dst:
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4Dst))
-	case *OfpOxmOfbField_TcpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TcpSrc))
-	case *OfpOxmOfbField_TcpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TcpDst))
-	case *OfpOxmOfbField_UdpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.UdpSrc))
-	case *OfpOxmOfbField_UdpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.UdpDst))
-	case *OfpOxmOfbField_SctpSrc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.SctpSrc))
-	case *OfpOxmOfbField_SctpDst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.SctpDst))
-	case *OfpOxmOfbField_Icmpv4Type:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv4Type))
-	case *OfpOxmOfbField_Icmpv4Code:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv4Code))
-	case *OfpOxmOfbField_ArpOp:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpOp))
-	case *OfpOxmOfbField_ArpSpa:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpSpa))
-	case *OfpOxmOfbField_ArpTpa:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpTpa))
-	case *OfpOxmOfbField_ArpSha:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.ArpSha)))
-		n += len(x.ArpSha)
-	case *OfpOxmOfbField_ArpTha:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.ArpTha)))
-		n += len(x.ArpTha)
-	case *OfpOxmOfbField_Ipv6Src:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6Src)))
-		n += len(x.Ipv6Src)
-	case *OfpOxmOfbField_Ipv6Dst:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6Dst)))
-		n += len(x.Ipv6Dst)
-	case *OfpOxmOfbField_Ipv6Flabel:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6Flabel))
-	case *OfpOxmOfbField_Icmpv6Type:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv6Type))
-	case *OfpOxmOfbField_Icmpv6Code:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Icmpv6Code))
-	case *OfpOxmOfbField_Ipv6NdTarget:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdTarget)))
-		n += len(x.Ipv6NdTarget)
-	case *OfpOxmOfbField_Ipv6NdSsl:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdSsl)))
-		n += len(x.Ipv6NdSsl)
-	case *OfpOxmOfbField_Ipv6NdTll:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6NdTll)))
-		n += len(x.Ipv6NdTll)
-	case *OfpOxmOfbField_MplsLabel:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsLabel))
-	case *OfpOxmOfbField_MplsTc:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsTc))
-	case *OfpOxmOfbField_MplsBos:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.MplsBos))
-	case *OfpOxmOfbField_PbbIsid:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.PbbIsid))
-	case *OfpOxmOfbField_TunnelId:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TunnelId))
-	case *OfpOxmOfbField_Ipv6Exthdr:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6Exthdr))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	// mask
-	switch x := m.Mask.(type) {
-	case *OfpOxmOfbField_TableMetadataMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TableMetadataMask))
-	case *OfpOxmOfbField_EthDstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthDstMask)))
-		n += len(x.EthDstMask)
-	case *OfpOxmOfbField_EthSrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.EthSrcMask)))
-		n += len(x.EthSrcMask)
-	case *OfpOxmOfbField_VlanVidMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.VlanVidMask))
-	case *OfpOxmOfbField_Ipv4SrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4SrcMask))
-	case *OfpOxmOfbField_Ipv4DstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv4DstMask))
-	case *OfpOxmOfbField_ArpSpaMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpSpaMask))
-	case *OfpOxmOfbField_ArpTpaMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.ArpTpaMask))
-	case *OfpOxmOfbField_Ipv6SrcMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6SrcMask)))
-		n += len(x.Ipv6SrcMask)
-	case *OfpOxmOfbField_Ipv6DstMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(len(x.Ipv6DstMask)))
-		n += len(x.Ipv6DstMask)
-	case *OfpOxmOfbField_Ipv6FlabelMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6FlabelMask))
-	case *OfpOxmOfbField_PbbIsidMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.PbbIsidMask))
-	case *OfpOxmOfbField_TunnelIdMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.TunnelIdMask))
-	case *OfpOxmOfbField_Ipv6ExthdrMask:
-		n += 2 // tag and wire
-		n += proto.SizeVarint(uint64(x.Ipv6ExthdrMask))
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Header for OXM experimenter match fields.
 // The experimenter class should not use OXM_HEADER() macros for defining
 // fields due to this extra header.
@@ -4792,16 +4036,17 @@
 func (m *OfpOxmExperimenterField) String() string { return proto.CompactTextString(m) }
 func (*OfpOxmExperimenterField) ProtoMessage()    {}
 func (*OfpOxmExperimenterField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{13}
+	return fileDescriptor_08e3a4e375aeddc7, []int{13}
 }
+
 func (m *OfpOxmExperimenterField) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpOxmExperimenterField.Unmarshal(m, b)
 }
 func (m *OfpOxmExperimenterField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpOxmExperimenterField.Marshal(b, m, deterministic)
 }
-func (dst *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpOxmExperimenterField.Merge(dst, src)
+func (m *OfpOxmExperimenterField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpOxmExperimenterField.Merge(m, src)
 }
 func (m *OfpOxmExperimenterField) XXX_Size() int {
 	return xxx_messageInfo_OfpOxmExperimenterField.Size(m)
@@ -4850,16 +4095,17 @@
 func (m *OfpAction) String() string { return proto.CompactTextString(m) }
 func (*OfpAction) ProtoMessage()    {}
 func (*OfpAction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{14}
+	return fileDescriptor_08e3a4e375aeddc7, []int{14}
 }
+
 func (m *OfpAction) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpAction.Unmarshal(m, b)
 }
 func (m *OfpAction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpAction.Marshal(b, m, deterministic)
 }
-func (dst *OfpAction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAction.Merge(dst, src)
+func (m *OfpAction) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpAction.Merge(m, src)
 }
 func (m *OfpAction) XXX_Size() int {
 	return xxx_messageInfo_OfpAction.Size(m)
@@ -4992,9 +4238,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpAction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpAction_OneofMarshaler, _OfpAction_OneofUnmarshaler, _OfpAction_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpAction) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpAction_Output)(nil),
 		(*OfpAction_MplsTtl)(nil),
 		(*OfpAction_Push)(nil),
@@ -5006,180 +4252,6 @@
 	}
 }
 
-func _OfpAction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpAction)
-	// action
-	switch x := m.Action.(type) {
-	case *OfpAction_Output:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Output); err != nil {
-			return err
-		}
-	case *OfpAction_MplsTtl:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.MplsTtl); err != nil {
-			return err
-		}
-	case *OfpAction_Push:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Push); err != nil {
-			return err
-		}
-	case *OfpAction_PopMpls:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.PopMpls); err != nil {
-			return err
-		}
-	case *OfpAction_Group:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Group); err != nil {
-			return err
-		}
-	case *OfpAction_NwTtl:
-		b.EncodeVarint(7<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.NwTtl); err != nil {
-			return err
-		}
-	case *OfpAction_SetField:
-		b.EncodeVarint(8<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.SetField); err != nil {
-			return err
-		}
-	case *OfpAction_Experimenter:
-		b.EncodeVarint(9<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpAction.Action has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpAction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpAction)
-	switch tag {
-	case 2: // action.output
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionOutput)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Output{msg}
-		return true, err
-	case 3: // action.mpls_ttl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionMplsTtl)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_MplsTtl{msg}
-		return true, err
-	case 4: // action.push
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionPush)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Push{msg}
-		return true, err
-	case 5: // action.pop_mpls
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionPopMpls)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_PopMpls{msg}
-		return true, err
-	case 6: // action.group
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionGroup)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Group{msg}
-		return true, err
-	case 7: // action.nw_ttl
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionNwTtl)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_NwTtl{msg}
-		return true, err
-	case 8: // action.set_field
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionSetField)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_SetField{msg}
-		return true, err
-	case 9: // action.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpActionExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Action = &OfpAction_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpAction_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpAction)
-	// action
-	switch x := m.Action.(type) {
-	case *OfpAction_Output:
-		s := proto.Size(x.Output)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_MplsTtl:
-		s := proto.Size(x.MplsTtl)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Push:
-		s := proto.Size(x.Push)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_PopMpls:
-		s := proto.Size(x.PopMpls)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Group:
-		s := proto.Size(x.Group)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_NwTtl:
-		s := proto.Size(x.NwTtl)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_SetField:
-		s := proto.Size(x.SetField)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpAction_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
 // When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
 // number of bytes to send.  A 'max_len' of zero means no bytes of the
@@ -5198,16 +4270,17 @@
 func (m *OfpActionOutput) String() string { return proto.CompactTextString(m) }
 func (*OfpActionOutput) ProtoMessage()    {}
 func (*OfpActionOutput) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{15}
+	return fileDescriptor_08e3a4e375aeddc7, []int{15}
 }
+
 func (m *OfpActionOutput) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionOutput.Unmarshal(m, b)
 }
 func (m *OfpActionOutput) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionOutput.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionOutput) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionOutput.Merge(dst, src)
+func (m *OfpActionOutput) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionOutput.Merge(m, src)
 }
 func (m *OfpActionOutput) XXX_Size() int {
 	return xxx_messageInfo_OfpActionOutput.Size(m)
@@ -5244,16 +4317,17 @@
 func (m *OfpActionMplsTtl) String() string { return proto.CompactTextString(m) }
 func (*OfpActionMplsTtl) ProtoMessage()    {}
 func (*OfpActionMplsTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{16}
+	return fileDescriptor_08e3a4e375aeddc7, []int{16}
 }
+
 func (m *OfpActionMplsTtl) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionMplsTtl.Unmarshal(m, b)
 }
 func (m *OfpActionMplsTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionMplsTtl.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionMplsTtl.Merge(dst, src)
+func (m *OfpActionMplsTtl) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionMplsTtl.Merge(m, src)
 }
 func (m *OfpActionMplsTtl) XXX_Size() int {
 	return xxx_messageInfo_OfpActionMplsTtl.Size(m)
@@ -5283,16 +4357,17 @@
 func (m *OfpActionPush) String() string { return proto.CompactTextString(m) }
 func (*OfpActionPush) ProtoMessage()    {}
 func (*OfpActionPush) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{17}
+	return fileDescriptor_08e3a4e375aeddc7, []int{17}
 }
+
 func (m *OfpActionPush) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionPush.Unmarshal(m, b)
 }
 func (m *OfpActionPush) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionPush.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionPush) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPush.Merge(dst, src)
+func (m *OfpActionPush) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionPush.Merge(m, src)
 }
 func (m *OfpActionPush) XXX_Size() int {
 	return xxx_messageInfo_OfpActionPush.Size(m)
@@ -5322,16 +4397,17 @@
 func (m *OfpActionPopMpls) String() string { return proto.CompactTextString(m) }
 func (*OfpActionPopMpls) ProtoMessage()    {}
 func (*OfpActionPopMpls) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{18}
+	return fileDescriptor_08e3a4e375aeddc7, []int{18}
 }
+
 func (m *OfpActionPopMpls) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionPopMpls.Unmarshal(m, b)
 }
 func (m *OfpActionPopMpls) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionPopMpls.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionPopMpls) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionPopMpls.Merge(dst, src)
+func (m *OfpActionPopMpls) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionPopMpls.Merge(m, src)
 }
 func (m *OfpActionPopMpls) XXX_Size() int {
 	return xxx_messageInfo_OfpActionPopMpls.Size(m)
@@ -5361,16 +4437,17 @@
 func (m *OfpActionGroup) String() string { return proto.CompactTextString(m) }
 func (*OfpActionGroup) ProtoMessage()    {}
 func (*OfpActionGroup) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{19}
+	return fileDescriptor_08e3a4e375aeddc7, []int{19}
 }
+
 func (m *OfpActionGroup) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionGroup.Unmarshal(m, b)
 }
 func (m *OfpActionGroup) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionGroup.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionGroup) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionGroup.Merge(dst, src)
+func (m *OfpActionGroup) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionGroup.Merge(m, src)
 }
 func (m *OfpActionGroup) XXX_Size() int {
 	return xxx_messageInfo_OfpActionGroup.Size(m)
@@ -5400,16 +4477,17 @@
 func (m *OfpActionNwTtl) String() string { return proto.CompactTextString(m) }
 func (*OfpActionNwTtl) ProtoMessage()    {}
 func (*OfpActionNwTtl) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{20}
+	return fileDescriptor_08e3a4e375aeddc7, []int{20}
 }
+
 func (m *OfpActionNwTtl) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionNwTtl.Unmarshal(m, b)
 }
 func (m *OfpActionNwTtl) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionNwTtl.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionNwTtl) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionNwTtl.Merge(dst, src)
+func (m *OfpActionNwTtl) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionNwTtl.Merge(m, src)
 }
 func (m *OfpActionNwTtl) XXX_Size() int {
 	return xxx_messageInfo_OfpActionNwTtl.Size(m)
@@ -5439,16 +4517,17 @@
 func (m *OfpActionSetField) String() string { return proto.CompactTextString(m) }
 func (*OfpActionSetField) ProtoMessage()    {}
 func (*OfpActionSetField) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{21}
+	return fileDescriptor_08e3a4e375aeddc7, []int{21}
 }
+
 func (m *OfpActionSetField) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionSetField.Unmarshal(m, b)
 }
 func (m *OfpActionSetField) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionSetField.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionSetField) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetField.Merge(dst, src)
+func (m *OfpActionSetField) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionSetField.Merge(m, src)
 }
 func (m *OfpActionSetField) XXX_Size() int {
 	return xxx_messageInfo_OfpActionSetField.Size(m)
@@ -5480,16 +4559,17 @@
 func (m *OfpActionExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpActionExperimenter) ProtoMessage()    {}
 func (*OfpActionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{22}
+	return fileDescriptor_08e3a4e375aeddc7, []int{22}
 }
+
 func (m *OfpActionExperimenter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionExperimenter.Unmarshal(m, b)
 }
 func (m *OfpActionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionExperimenter.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionExperimenter.Merge(dst, src)
+func (m *OfpActionExperimenter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionExperimenter.Merge(m, src)
 }
 func (m *OfpActionExperimenter) XXX_Size() int {
 	return xxx_messageInfo_OfpActionExperimenter.Size(m)
@@ -5535,16 +4615,17 @@
 func (m *OfpInstruction) String() string { return proto.CompactTextString(m) }
 func (*OfpInstruction) ProtoMessage()    {}
 func (*OfpInstruction) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{23}
+	return fileDescriptor_08e3a4e375aeddc7, []int{23}
 }
+
 func (m *OfpInstruction) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstruction.Unmarshal(m, b)
 }
 func (m *OfpInstruction) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstruction.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstruction) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstruction.Merge(dst, src)
+func (m *OfpInstruction) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstruction.Merge(m, src)
 }
 func (m *OfpInstruction) XXX_Size() int {
 	return xxx_messageInfo_OfpInstruction.Size(m)
@@ -5638,9 +4719,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpInstruction) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpInstruction_OneofMarshaler, _OfpInstruction_OneofUnmarshaler, _OfpInstruction_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpInstruction) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpInstruction_GotoTable)(nil),
 		(*OfpInstruction_WriteMetadata)(nil),
 		(*OfpInstruction_Actions)(nil),
@@ -5649,126 +4730,6 @@
 	}
 }
 
-func _OfpInstruction_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpInstruction)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpInstruction_GotoTable:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.GotoTable); err != nil {
-			return err
-		}
-	case *OfpInstruction_WriteMetadata:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.WriteMetadata); err != nil {
-			return err
-		}
-	case *OfpInstruction_Actions:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Actions); err != nil {
-			return err
-		}
-	case *OfpInstruction_Meter:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Meter); err != nil {
-			return err
-		}
-	case *OfpInstruction_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpInstruction.Data has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpInstruction_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpInstruction)
-	switch tag {
-	case 2: // data.goto_table
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionGotoTable)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_GotoTable{msg}
-		return true, err
-	case 3: // data.write_metadata
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionWriteMetadata)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_WriteMetadata{msg}
-		return true, err
-	case 4: // data.actions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionActions)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Actions{msg}
-		return true, err
-	case 5: // data.meter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionMeter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Meter{msg}
-		return true, err
-	case 6: // data.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpInstructionExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpInstruction_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpInstruction_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpInstruction)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpInstruction_GotoTable:
-		s := proto.Size(x.GotoTable)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_WriteMetadata:
-		s := proto.Size(x.WriteMetadata)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Actions:
-		s := proto.Size(x.Actions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Meter:
-		s := proto.Size(x.Meter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpInstruction_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Instruction structure for OFPIT_GOTO_TABLE
 type OfpInstructionGotoTable struct {
 	TableId              uint32   `protobuf:"varint,1,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
@@ -5781,16 +4742,17 @@
 func (m *OfpInstructionGotoTable) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionGotoTable) ProtoMessage()    {}
 func (*OfpInstructionGotoTable) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{24}
+	return fileDescriptor_08e3a4e375aeddc7, []int{24}
 }
+
 func (m *OfpInstructionGotoTable) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstructionGotoTable.Unmarshal(m, b)
 }
 func (m *OfpInstructionGotoTable) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstructionGotoTable.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionGotoTable.Merge(dst, src)
+func (m *OfpInstructionGotoTable) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstructionGotoTable.Merge(m, src)
 }
 func (m *OfpInstructionGotoTable) XXX_Size() int {
 	return xxx_messageInfo_OfpInstructionGotoTable.Size(m)
@@ -5821,16 +4783,17 @@
 func (m *OfpInstructionWriteMetadata) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionWriteMetadata) ProtoMessage()    {}
 func (*OfpInstructionWriteMetadata) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{25}
+	return fileDescriptor_08e3a4e375aeddc7, []int{25}
 }
+
 func (m *OfpInstructionWriteMetadata) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstructionWriteMetadata.Unmarshal(m, b)
 }
 func (m *OfpInstructionWriteMetadata) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstructionWriteMetadata.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(dst, src)
+func (m *OfpInstructionWriteMetadata) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstructionWriteMetadata.Merge(m, src)
 }
 func (m *OfpInstructionWriteMetadata) XXX_Size() int {
 	return xxx_messageInfo_OfpInstructionWriteMetadata.Size(m)
@@ -5867,16 +4830,17 @@
 func (m *OfpInstructionActions) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionActions) ProtoMessage()    {}
 func (*OfpInstructionActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{26}
+	return fileDescriptor_08e3a4e375aeddc7, []int{26}
 }
+
 func (m *OfpInstructionActions) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstructionActions.Unmarshal(m, b)
 }
 func (m *OfpInstructionActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstructionActions.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstructionActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionActions.Merge(dst, src)
+func (m *OfpInstructionActions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstructionActions.Merge(m, src)
 }
 func (m *OfpInstructionActions) XXX_Size() int {
 	return xxx_messageInfo_OfpInstructionActions.Size(m)
@@ -5906,16 +4870,17 @@
 func (m *OfpInstructionMeter) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionMeter) ProtoMessage()    {}
 func (*OfpInstructionMeter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{27}
+	return fileDescriptor_08e3a4e375aeddc7, []int{27}
 }
+
 func (m *OfpInstructionMeter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstructionMeter.Unmarshal(m, b)
 }
 func (m *OfpInstructionMeter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstructionMeter.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstructionMeter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionMeter.Merge(dst, src)
+func (m *OfpInstructionMeter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstructionMeter.Merge(m, src)
 }
 func (m *OfpInstructionMeter) XXX_Size() int {
 	return xxx_messageInfo_OfpInstructionMeter.Size(m)
@@ -5947,16 +4912,17 @@
 func (m *OfpInstructionExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpInstructionExperimenter) ProtoMessage()    {}
 func (*OfpInstructionExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{28}
+	return fileDescriptor_08e3a4e375aeddc7, []int{28}
 }
+
 func (m *OfpInstructionExperimenter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpInstructionExperimenter.Unmarshal(m, b)
 }
 func (m *OfpInstructionExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpInstructionExperimenter.Marshal(b, m, deterministic)
 }
-func (dst *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpInstructionExperimenter.Merge(dst, src)
+func (m *OfpInstructionExperimenter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpInstructionExperimenter.Merge(m, src)
 }
 func (m *OfpInstructionExperimenter) XXX_Size() int {
 	return xxx_messageInfo_OfpInstructionExperimenter.Size(m)
@@ -5983,7 +4949,7 @@
 
 // Flow setup and teardown (controller -> datapath).
 type OfpFlowMod struct {
-	// ofp_header header;
+	//ofp_header header;
 	Cookie               uint64            `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
 	CookieMask           uint64            `protobuf:"varint,2,opt,name=cookie_mask,json=cookieMask,proto3" json:"cookie_mask,omitempty"`
 	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
@@ -6006,16 +4972,17 @@
 func (m *OfpFlowMod) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowMod) ProtoMessage()    {}
 func (*OfpFlowMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{29}
+	return fileDescriptor_08e3a4e375aeddc7, []int{29}
 }
+
 func (m *OfpFlowMod) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpFlowMod.Unmarshal(m, b)
 }
 func (m *OfpFlowMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpFlowMod.Marshal(b, m, deterministic)
 }
-func (dst *OfpFlowMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowMod.Merge(dst, src)
+func (m *OfpFlowMod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpFlowMod.Merge(m, src)
 }
 func (m *OfpFlowMod) XXX_Size() int {
 	return xxx_messageInfo_OfpFlowMod.Size(m)
@@ -6132,16 +5099,17 @@
 func (m *OfpBucket) String() string { return proto.CompactTextString(m) }
 func (*OfpBucket) ProtoMessage()    {}
 func (*OfpBucket) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{30}
+	return fileDescriptor_08e3a4e375aeddc7, []int{30}
 }
+
 func (m *OfpBucket) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpBucket.Unmarshal(m, b)
 }
 func (m *OfpBucket) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpBucket.Marshal(b, m, deterministic)
 }
-func (dst *OfpBucket) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucket.Merge(dst, src)
+func (m *OfpBucket) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpBucket.Merge(m, src)
 }
 func (m *OfpBucket) XXX_Size() int {
 	return xxx_messageInfo_OfpBucket.Size(m)
@@ -6182,7 +5150,7 @@
 
 // Group setup and teardown (controller -> datapath).
 type OfpGroupMod struct {
-	// ofp_header header;
+	//ofp_header header;
 	Command              OfpGroupModCommand `protobuf:"varint,1,opt,name=command,proto3,enum=openflow_13.OfpGroupModCommand" json:"command,omitempty"`
 	Type                 OfpGroupType       `protobuf:"varint,2,opt,name=type,proto3,enum=openflow_13.OfpGroupType" json:"type,omitempty"`
 	GroupId              uint32             `protobuf:"varint,3,opt,name=group_id,json=groupId,proto3" json:"group_id,omitempty"`
@@ -6196,16 +5164,17 @@
 func (m *OfpGroupMod) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupMod) ProtoMessage()    {}
 func (*OfpGroupMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{31}
+	return fileDescriptor_08e3a4e375aeddc7, []int{31}
 }
+
 func (m *OfpGroupMod) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupMod.Unmarshal(m, b)
 }
 func (m *OfpGroupMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupMod.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupMod.Merge(dst, src)
+func (m *OfpGroupMod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupMod.Merge(m, src)
 }
 func (m *OfpGroupMod) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupMod.Size(m)
@@ -6246,7 +5215,7 @@
 
 // Send packet (controller -> datapath).
 type OfpPacketOut struct {
-	// ofp_header header;
+	//ofp_header header;
 	BufferId uint32       `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
 	InPort   uint32       `protobuf:"varint,2,opt,name=in_port,json=inPort,proto3" json:"in_port,omitempty"`
 	Actions  []*OfpAction `protobuf:"bytes,3,rep,name=actions,proto3" json:"actions,omitempty"`
@@ -6262,16 +5231,17 @@
 func (m *OfpPacketOut) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketOut) ProtoMessage()    {}
 func (*OfpPacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{32}
+	return fileDescriptor_08e3a4e375aeddc7, []int{32}
 }
+
 func (m *OfpPacketOut) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPacketOut.Unmarshal(m, b)
 }
 func (m *OfpPacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPacketOut.Marshal(b, m, deterministic)
 }
-func (dst *OfpPacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketOut.Merge(dst, src)
+func (m *OfpPacketOut) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPacketOut.Merge(m, src)
 }
 func (m *OfpPacketOut) XXX_Size() int {
 	return xxx_messageInfo_OfpPacketOut.Size(m)
@@ -6312,7 +5282,7 @@
 
 // Packet received on port (datapath -> controller).
 type OfpPacketIn struct {
-	// ofp_header header;
+	//ofp_header header;
 	BufferId             uint32            `protobuf:"varint,1,opt,name=buffer_id,json=bufferId,proto3" json:"buffer_id,omitempty"`
 	Reason               OfpPacketInReason `protobuf:"varint,2,opt,name=reason,proto3,enum=openflow_13.OfpPacketInReason" json:"reason,omitempty"`
 	TableId              uint32            `protobuf:"varint,3,opt,name=table_id,json=tableId,proto3" json:"table_id,omitempty"`
@@ -6328,16 +5298,17 @@
 func (m *OfpPacketIn) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketIn) ProtoMessage()    {}
 func (*OfpPacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{33}
+	return fileDescriptor_08e3a4e375aeddc7, []int{33}
 }
+
 func (m *OfpPacketIn) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPacketIn.Unmarshal(m, b)
 }
 func (m *OfpPacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPacketIn.Marshal(b, m, deterministic)
 }
-func (dst *OfpPacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketIn.Merge(dst, src)
+func (m *OfpPacketIn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPacketIn.Merge(m, src)
 }
 func (m *OfpPacketIn) XXX_Size() int {
 	return xxx_messageInfo_OfpPacketIn.Size(m)
@@ -6392,7 +5363,7 @@
 
 // Flow removed (datapath -> controller).
 type OfpFlowRemoved struct {
-	// ofp_header header;
+	//ofp_header header;
 	Cookie               uint64               `protobuf:"varint,1,opt,name=cookie,proto3" json:"cookie,omitempty"`
 	Priority             uint32               `protobuf:"varint,2,opt,name=priority,proto3" json:"priority,omitempty"`
 	Reason               OfpFlowRemovedReason `protobuf:"varint,3,opt,name=reason,proto3,enum=openflow_13.OfpFlowRemovedReason" json:"reason,omitempty"`
@@ -6413,16 +5384,17 @@
 func (m *OfpFlowRemoved) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowRemoved) ProtoMessage()    {}
 func (*OfpFlowRemoved) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{34}
+	return fileDescriptor_08e3a4e375aeddc7, []int{34}
 }
+
 func (m *OfpFlowRemoved) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpFlowRemoved.Unmarshal(m, b)
 }
 func (m *OfpFlowRemoved) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpFlowRemoved.Marshal(b, m, deterministic)
 }
-func (dst *OfpFlowRemoved) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowRemoved.Merge(dst, src)
+func (m *OfpFlowRemoved) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpFlowRemoved.Merge(m, src)
 }
 func (m *OfpFlowRemoved) XXX_Size() int {
 	return xxx_messageInfo_OfpFlowRemoved.Size(m)
@@ -6529,16 +5501,17 @@
 func (m *OfpMeterBandHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandHeader) ProtoMessage()    {}
 func (*OfpMeterBandHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{35}
+	return fileDescriptor_08e3a4e375aeddc7, []int{35}
 }
+
 func (m *OfpMeterBandHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterBandHeader.Unmarshal(m, b)
 }
 func (m *OfpMeterBandHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterBandHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandHeader.Merge(dst, src)
+func (m *OfpMeterBandHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterBandHeader.Merge(m, src)
 }
 func (m *OfpMeterBandHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterBandHeader.Size(m)
@@ -6620,99 +5593,15 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpMeterBandHeader) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpMeterBandHeader_OneofMarshaler, _OfpMeterBandHeader_OneofUnmarshaler, _OfpMeterBandHeader_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpMeterBandHeader) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpMeterBandHeader_Drop)(nil),
 		(*OfpMeterBandHeader_DscpRemark)(nil),
 		(*OfpMeterBandHeader_Experimenter)(nil),
 	}
 }
 
-func _OfpMeterBandHeader_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpMeterBandHeader)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpMeterBandHeader_Drop:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Drop); err != nil {
-			return err
-		}
-	case *OfpMeterBandHeader_DscpRemark:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.DscpRemark); err != nil {
-			return err
-		}
-	case *OfpMeterBandHeader_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpMeterBandHeader.Data has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpMeterBandHeader_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpMeterBandHeader)
-	switch tag {
-	case 4: // data.drop
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandDrop)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_Drop{msg}
-		return true, err
-	case 5: // data.dscp_remark
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandDscpRemark)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_DscpRemark{msg}
-		return true, err
-	case 6: // data.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpMeterBandExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Data = &OfpMeterBandHeader_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpMeterBandHeader_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpMeterBandHeader)
-	// data
-	switch x := m.Data.(type) {
-	case *OfpMeterBandHeader_Drop:
-		s := proto.Size(x.Drop)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpMeterBandHeader_DscpRemark:
-		s := proto.Size(x.DscpRemark)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpMeterBandHeader_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // OFPMBT_DROP band - drop packets
 type OfpMeterBandDrop struct {
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
@@ -6724,16 +5613,17 @@
 func (m *OfpMeterBandDrop) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandDrop) ProtoMessage()    {}
 func (*OfpMeterBandDrop) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{36}
+	return fileDescriptor_08e3a4e375aeddc7, []int{36}
 }
+
 func (m *OfpMeterBandDrop) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterBandDrop.Unmarshal(m, b)
 }
 func (m *OfpMeterBandDrop) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterBandDrop.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDrop.Merge(dst, src)
+func (m *OfpMeterBandDrop) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterBandDrop.Merge(m, src)
 }
 func (m *OfpMeterBandDrop) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterBandDrop.Size(m)
@@ -6756,16 +5646,17 @@
 func (m *OfpMeterBandDscpRemark) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandDscpRemark) ProtoMessage()    {}
 func (*OfpMeterBandDscpRemark) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{37}
+	return fileDescriptor_08e3a4e375aeddc7, []int{37}
 }
+
 func (m *OfpMeterBandDscpRemark) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterBandDscpRemark.Unmarshal(m, b)
 }
 func (m *OfpMeterBandDscpRemark) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterBandDscpRemark.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(dst, src)
+func (m *OfpMeterBandDscpRemark) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterBandDscpRemark.Merge(m, src)
 }
 func (m *OfpMeterBandDscpRemark) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterBandDscpRemark.Size(m)
@@ -6796,16 +5687,17 @@
 func (m *OfpMeterBandExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandExperimenter) ProtoMessage()    {}
 func (*OfpMeterBandExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{38}
+	return fileDescriptor_08e3a4e375aeddc7, []int{38}
 }
+
 func (m *OfpMeterBandExperimenter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterBandExperimenter.Unmarshal(m, b)
 }
 func (m *OfpMeterBandExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterBandExperimenter.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandExperimenter.Merge(dst, src)
+func (m *OfpMeterBandExperimenter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterBandExperimenter.Merge(m, src)
 }
 func (m *OfpMeterBandExperimenter) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterBandExperimenter.Size(m)
@@ -6838,16 +5730,17 @@
 func (m *OfpMeterMod) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterMod) ProtoMessage()    {}
 func (*OfpMeterMod) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{39}
+	return fileDescriptor_08e3a4e375aeddc7, []int{39}
 }
+
 func (m *OfpMeterMod) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterMod.Unmarshal(m, b)
 }
 func (m *OfpMeterMod) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterMod.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterMod) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMod.Merge(dst, src)
+func (m *OfpMeterMod) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterMod.Merge(m, src)
 }
 func (m *OfpMeterMod) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterMod.Size(m)
@@ -6888,7 +5781,7 @@
 
 // OFPT_ERROR: Error message (datapath -> controller).
 type OfpErrorMsg struct {
-	// ofp_header header;
+	//ofp_header header;
 	Type                 uint32   `protobuf:"varint,1,opt,name=type,proto3" json:"type,omitempty"`
 	Code                 uint32   `protobuf:"varint,2,opt,name=code,proto3" json:"code,omitempty"`
 	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
@@ -6901,16 +5794,17 @@
 func (m *OfpErrorMsg) String() string { return proto.CompactTextString(m) }
 func (*OfpErrorMsg) ProtoMessage()    {}
 func (*OfpErrorMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{40}
+	return fileDescriptor_08e3a4e375aeddc7, []int{40}
 }
+
 func (m *OfpErrorMsg) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpErrorMsg.Unmarshal(m, b)
 }
 func (m *OfpErrorMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpErrorMsg.Marshal(b, m, deterministic)
 }
-func (dst *OfpErrorMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorMsg.Merge(dst, src)
+func (m *OfpErrorMsg) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpErrorMsg.Merge(m, src)
 }
 func (m *OfpErrorMsg) XXX_Size() int {
 	return xxx_messageInfo_OfpErrorMsg.Size(m)
@@ -6957,16 +5851,17 @@
 func (m *OfpErrorExperimenterMsg) String() string { return proto.CompactTextString(m) }
 func (*OfpErrorExperimenterMsg) ProtoMessage()    {}
 func (*OfpErrorExperimenterMsg) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{41}
+	return fileDescriptor_08e3a4e375aeddc7, []int{41}
 }
+
 func (m *OfpErrorExperimenterMsg) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpErrorExperimenterMsg.Unmarshal(m, b)
 }
 func (m *OfpErrorExperimenterMsg) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpErrorExperimenterMsg.Marshal(b, m, deterministic)
 }
-func (dst *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(dst, src)
+func (m *OfpErrorExperimenterMsg) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpErrorExperimenterMsg.Merge(m, src)
 }
 func (m *OfpErrorExperimenterMsg) XXX_Size() int {
 	return xxx_messageInfo_OfpErrorExperimenterMsg.Size(m)
@@ -7006,7 +5901,7 @@
 }
 
 type OfpMultipartRequest struct {
-	// ofp_header header;
+	//ofp_header header;
 	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
 	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
 	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
@@ -7019,16 +5914,17 @@
 func (m *OfpMultipartRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpMultipartRequest) ProtoMessage()    {}
 func (*OfpMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{42}
+	return fileDescriptor_08e3a4e375aeddc7, []int{42}
 }
+
 func (m *OfpMultipartRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMultipartRequest.Unmarshal(m, b)
 }
 func (m *OfpMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMultipartRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartRequest.Merge(dst, src)
+func (m *OfpMultipartRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMultipartRequest.Merge(m, src)
 }
 func (m *OfpMultipartRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpMultipartRequest.Size(m)
@@ -7061,7 +5957,7 @@
 }
 
 type OfpMultipartReply struct {
-	// ofp_header header;
+	//ofp_header header;
 	Type                 OfpMultipartType `protobuf:"varint,1,opt,name=type,proto3,enum=openflow_13.OfpMultipartType" json:"type,omitempty"`
 	Flags                uint32           `protobuf:"varint,2,opt,name=flags,proto3" json:"flags,omitempty"`
 	Body                 []byte           `protobuf:"bytes,3,opt,name=body,proto3" json:"body,omitempty"`
@@ -7074,16 +5970,17 @@
 func (m *OfpMultipartReply) String() string { return proto.CompactTextString(m) }
 func (*OfpMultipartReply) ProtoMessage()    {}
 func (*OfpMultipartReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{43}
+	return fileDescriptor_08e3a4e375aeddc7, []int{43}
 }
+
 func (m *OfpMultipartReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMultipartReply.Unmarshal(m, b)
 }
 func (m *OfpMultipartReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMultipartReply.Marshal(b, m, deterministic)
 }
-func (dst *OfpMultipartReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMultipartReply.Merge(dst, src)
+func (m *OfpMultipartReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMultipartReply.Merge(m, src)
 }
 func (m *OfpMultipartReply) XXX_Size() int {
 	return xxx_messageInfo_OfpMultipartReply.Size(m)
@@ -7132,16 +6029,17 @@
 func (m *OfpDesc) String() string { return proto.CompactTextString(m) }
 func (*OfpDesc) ProtoMessage()    {}
 func (*OfpDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{44}
+	return fileDescriptor_08e3a4e375aeddc7, []int{44}
 }
+
 func (m *OfpDesc) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpDesc.Unmarshal(m, b)
 }
 func (m *OfpDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpDesc.Marshal(b, m, deterministic)
 }
-func (dst *OfpDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpDesc.Merge(dst, src)
+func (m *OfpDesc) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpDesc.Merge(m, src)
 }
 func (m *OfpDesc) XXX_Size() int {
 	return xxx_messageInfo_OfpDesc.Size(m)
@@ -7204,16 +6102,17 @@
 func (m *OfpFlowStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowStatsRequest) ProtoMessage()    {}
 func (*OfpFlowStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{45}
+	return fileDescriptor_08e3a4e375aeddc7, []int{45}
 }
+
 func (m *OfpFlowStatsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpFlowStatsRequest.Unmarshal(m, b)
 }
 func (m *OfpFlowStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpFlowStatsRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStatsRequest.Merge(dst, src)
+func (m *OfpFlowStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpFlowStatsRequest.Merge(m, src)
 }
 func (m *OfpFlowStatsRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpFlowStatsRequest.Size(m)
@@ -7290,16 +6189,17 @@
 func (m *OfpFlowStats) String() string { return proto.CompactTextString(m) }
 func (*OfpFlowStats) ProtoMessage()    {}
 func (*OfpFlowStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{46}
+	return fileDescriptor_08e3a4e375aeddc7, []int{46}
 }
+
 func (m *OfpFlowStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpFlowStats.Unmarshal(m, b)
 }
 func (m *OfpFlowStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpFlowStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpFlowStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpFlowStats.Merge(dst, src)
+func (m *OfpFlowStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpFlowStats.Merge(m, src)
 }
 func (m *OfpFlowStats) XXX_Size() int {
 	return xxx_messageInfo_OfpFlowStats.Size(m)
@@ -7418,16 +6318,17 @@
 func (m *OfpAggregateStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpAggregateStatsRequest) ProtoMessage()    {}
 func (*OfpAggregateStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{47}
+	return fileDescriptor_08e3a4e375aeddc7, []int{47}
 }
+
 func (m *OfpAggregateStatsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpAggregateStatsRequest.Unmarshal(m, b)
 }
 func (m *OfpAggregateStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpAggregateStatsRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsRequest.Merge(dst, src)
+func (m *OfpAggregateStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpAggregateStatsRequest.Merge(m, src)
 }
 func (m *OfpAggregateStatsRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpAggregateStatsRequest.Size(m)
@@ -7494,16 +6395,17 @@
 func (m *OfpAggregateStatsReply) String() string { return proto.CompactTextString(m) }
 func (*OfpAggregateStatsReply) ProtoMessage()    {}
 func (*OfpAggregateStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{48}
+	return fileDescriptor_08e3a4e375aeddc7, []int{48}
 }
+
 func (m *OfpAggregateStatsReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpAggregateStatsReply.Unmarshal(m, b)
 }
 func (m *OfpAggregateStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpAggregateStatsReply.Marshal(b, m, deterministic)
 }
-func (dst *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAggregateStatsReply.Merge(dst, src)
+func (m *OfpAggregateStatsReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpAggregateStatsReply.Merge(m, src)
 }
 func (m *OfpAggregateStatsReply) XXX_Size() int {
 	return xxx_messageInfo_OfpAggregateStatsReply.Size(m)
@@ -7554,16 +6456,17 @@
 func (m *OfpTableFeatureProperty) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeatureProperty) ProtoMessage()    {}
 func (*OfpTableFeatureProperty) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{49}
+	return fileDescriptor_08e3a4e375aeddc7, []int{49}
 }
+
 func (m *OfpTableFeatureProperty) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeatureProperty.Unmarshal(m, b)
 }
 func (m *OfpTableFeatureProperty) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeatureProperty.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatureProperty.Merge(dst, src)
+func (m *OfpTableFeatureProperty) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeatureProperty.Merge(m, src)
 }
 func (m *OfpTableFeatureProperty) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeatureProperty.Size(m)
@@ -7657,9 +6560,9 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*OfpTableFeatureProperty) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _OfpTableFeatureProperty_OneofMarshaler, _OfpTableFeatureProperty_OneofUnmarshaler, _OfpTableFeatureProperty_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*OfpTableFeatureProperty) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*OfpTableFeatureProperty_Instructions)(nil),
 		(*OfpTableFeatureProperty_NextTables)(nil),
 		(*OfpTableFeatureProperty_Actions)(nil),
@@ -7668,130 +6571,10 @@
 	}
 }
 
-func _OfpTableFeatureProperty_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*OfpTableFeatureProperty)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpTableFeatureProperty_Instructions:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Instructions); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_NextTables:
-		b.EncodeVarint(3<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.NextTables); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Actions:
-		b.EncodeVarint(4<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Actions); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Oxm:
-		b.EncodeVarint(5<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Oxm); err != nil {
-			return err
-		}
-	case *OfpTableFeatureProperty_Experimenter:
-		b.EncodeVarint(6<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.Experimenter); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("OfpTableFeatureProperty.Value has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _OfpTableFeatureProperty_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*OfpTableFeatureProperty)
-	switch tag {
-	case 2: // value.instructions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropInstructions)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Instructions{msg}
-		return true, err
-	case 3: // value.next_tables
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropNextTables)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_NextTables{msg}
-		return true, err
-	case 4: // value.actions
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropActions)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Actions{msg}
-		return true, err
-	case 5: // value.oxm
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropOxm)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Oxm{msg}
-		return true, err
-	case 6: // value.experimenter
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpTableFeaturePropExperimenter)
-		err := b.DecodeMessage(msg)
-		m.Value = &OfpTableFeatureProperty_Experimenter{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _OfpTableFeatureProperty_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*OfpTableFeatureProperty)
-	// value
-	switch x := m.Value.(type) {
-	case *OfpTableFeatureProperty_Instructions:
-		s := proto.Size(x.Instructions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_NextTables:
-		s := proto.Size(x.NextTables)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Actions:
-		s := proto.Size(x.Actions)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Oxm:
-		s := proto.Size(x.Oxm)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case *OfpTableFeatureProperty_Experimenter:
-		s := proto.Size(x.Experimenter)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 // Instructions property
 type OfpTableFeaturePropInstructions struct {
 	// One of OFPTFPT_INSTRUCTIONS,
-	// OFPTFPT_INSTRUCTIONS_MISS.
+	//OFPTFPT_INSTRUCTIONS_MISS.
 	Instructions         []*OfpInstruction `protobuf:"bytes,1,rep,name=instructions,proto3" json:"instructions,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
 	XXX_unrecognized     []byte            `json:"-"`
@@ -7802,16 +6585,17 @@
 func (m *OfpTableFeaturePropInstructions) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropInstructions) ProtoMessage()    {}
 func (*OfpTableFeaturePropInstructions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{50}
+	return fileDescriptor_08e3a4e375aeddc7, []int{50}
 }
+
 func (m *OfpTableFeaturePropInstructions) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeaturePropInstructions.Unmarshal(m, b)
 }
 func (m *OfpTableFeaturePropInstructions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeaturePropInstructions.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(dst, src)
+func (m *OfpTableFeaturePropInstructions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeaturePropInstructions.Merge(m, src)
 }
 func (m *OfpTableFeaturePropInstructions) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeaturePropInstructions.Size(m)
@@ -7832,7 +6616,7 @@
 // Next Tables property
 type OfpTableFeaturePropNextTables struct {
 	// One of OFPTFPT_NEXT_TABLES,
-	// OFPTFPT_NEXT_TABLES_MISS.
+	//OFPTFPT_NEXT_TABLES_MISS.
 	NextTableIds         []uint32 `protobuf:"varint,1,rep,packed,name=next_table_ids,json=nextTableIds,proto3" json:"next_table_ids,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -7843,16 +6627,17 @@
 func (m *OfpTableFeaturePropNextTables) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropNextTables) ProtoMessage()    {}
 func (*OfpTableFeaturePropNextTables) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{51}
+	return fileDescriptor_08e3a4e375aeddc7, []int{51}
 }
+
 func (m *OfpTableFeaturePropNextTables) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeaturePropNextTables.Unmarshal(m, b)
 }
 func (m *OfpTableFeaturePropNextTables) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeaturePropNextTables.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(dst, src)
+func (m *OfpTableFeaturePropNextTables) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeaturePropNextTables.Merge(m, src)
 }
 func (m *OfpTableFeaturePropNextTables) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeaturePropNextTables.Size(m)
@@ -7873,9 +6658,9 @@
 // Actions property
 type OfpTableFeaturePropActions struct {
 	// One of OFPTFPT_WRITE_ACTIONS,
-	// OFPTFPT_WRITE_ACTIONS_MISS,
-	// OFPTFPT_APPLY_ACTIONS,
-	// OFPTFPT_APPLY_ACTIONS_MISS.
+	//OFPTFPT_WRITE_ACTIONS_MISS,
+	//OFPTFPT_APPLY_ACTIONS,
+	//OFPTFPT_APPLY_ACTIONS_MISS.
 	Actions              []*OfpAction `protobuf:"bytes,1,rep,name=actions,proto3" json:"actions,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
 	XXX_unrecognized     []byte       `json:"-"`
@@ -7886,16 +6671,17 @@
 func (m *OfpTableFeaturePropActions) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropActions) ProtoMessage()    {}
 func (*OfpTableFeaturePropActions) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{52}
+	return fileDescriptor_08e3a4e375aeddc7, []int{52}
 }
+
 func (m *OfpTableFeaturePropActions) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeaturePropActions.Unmarshal(m, b)
 }
 func (m *OfpTableFeaturePropActions) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeaturePropActions.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropActions.Merge(dst, src)
+func (m *OfpTableFeaturePropActions) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeaturePropActions.Merge(m, src)
 }
 func (m *OfpTableFeaturePropActions) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeaturePropActions.Size(m)
@@ -7926,16 +6712,17 @@
 func (m *OfpTableFeaturePropOxm) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropOxm) ProtoMessage()    {}
 func (*OfpTableFeaturePropOxm) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{53}
+	return fileDescriptor_08e3a4e375aeddc7, []int{53}
 }
+
 func (m *OfpTableFeaturePropOxm) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeaturePropOxm.Unmarshal(m, b)
 }
 func (m *OfpTableFeaturePropOxm) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeaturePropOxm.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(dst, src)
+func (m *OfpTableFeaturePropOxm) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeaturePropOxm.Merge(m, src)
 }
 func (m *OfpTableFeaturePropOxm) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeaturePropOxm.Size(m)
@@ -7956,7 +6743,7 @@
 // Experimenter table feature property
 type OfpTableFeaturePropExperimenter struct {
 	// One of OFPTFPT_EXPERIMENTER,
-	// OFPTFPT_EXPERIMENTER_MISS.
+	//OFPTFPT_EXPERIMENTER_MISS.
 	Experimenter         uint32   `protobuf:"varint,2,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
 	ExpType              uint32   `protobuf:"varint,3,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
 	ExperimenterData     []uint32 `protobuf:"varint,4,rep,packed,name=experimenter_data,json=experimenterData,proto3" json:"experimenter_data,omitempty"`
@@ -7969,16 +6756,17 @@
 func (m *OfpTableFeaturePropExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeaturePropExperimenter) ProtoMessage()    {}
 func (*OfpTableFeaturePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{54}
+	return fileDescriptor_08e3a4e375aeddc7, []int{54}
 }
+
 func (m *OfpTableFeaturePropExperimenter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Unmarshal(m, b)
 }
 func (m *OfpTableFeaturePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(dst, src)
+func (m *OfpTableFeaturePropExperimenter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeaturePropExperimenter.Merge(m, src)
 }
 func (m *OfpTableFeaturePropExperimenter) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeaturePropExperimenter.Size(m)
@@ -8030,16 +6818,17 @@
 func (m *OfpTableFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpTableFeatures) ProtoMessage()    {}
 func (*OfpTableFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{55}
+	return fileDescriptor_08e3a4e375aeddc7, []int{55}
 }
+
 func (m *OfpTableFeatures) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableFeatures.Unmarshal(m, b)
 }
 func (m *OfpTableFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableFeatures.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableFeatures.Merge(dst, src)
+func (m *OfpTableFeatures) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableFeatures.Merge(m, src)
 }
 func (m *OfpTableFeatures) XXX_Size() int {
 	return xxx_messageInfo_OfpTableFeatures.Size(m)
@@ -8114,16 +6903,17 @@
 func (m *OfpTableStats) String() string { return proto.CompactTextString(m) }
 func (*OfpTableStats) ProtoMessage()    {}
 func (*OfpTableStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{56}
+	return fileDescriptor_08e3a4e375aeddc7, []int{56}
 }
+
 func (m *OfpTableStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpTableStats.Unmarshal(m, b)
 }
 func (m *OfpTableStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpTableStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpTableStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpTableStats.Merge(dst, src)
+func (m *OfpTableStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpTableStats.Merge(m, src)
 }
 func (m *OfpTableStats) XXX_Size() int {
 	return xxx_messageInfo_OfpTableStats.Size(m)
@@ -8174,16 +6964,17 @@
 func (m *OfpPortStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStatsRequest) ProtoMessage()    {}
 func (*OfpPortStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{57}
+	return fileDescriptor_08e3a4e375aeddc7, []int{57}
 }
+
 func (m *OfpPortStatsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPortStatsRequest.Unmarshal(m, b)
 }
 func (m *OfpPortStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPortStatsRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStatsRequest.Merge(dst, src)
+func (m *OfpPortStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPortStatsRequest.Merge(m, src)
 }
 func (m *OfpPortStatsRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpPortStatsRequest.Size(m)
@@ -8228,16 +7019,17 @@
 func (m *OfpPortStats) String() string { return proto.CompactTextString(m) }
 func (*OfpPortStats) ProtoMessage()    {}
 func (*OfpPortStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{58}
+	return fileDescriptor_08e3a4e375aeddc7, []int{58}
 }
+
 func (m *OfpPortStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPortStats.Unmarshal(m, b)
 }
 func (m *OfpPortStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPortStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpPortStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPortStats.Merge(dst, src)
+func (m *OfpPortStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPortStats.Merge(m, src)
 }
 func (m *OfpPortStats) XXX_Size() int {
 	return xxx_messageInfo_OfpPortStats.Size(m)
@@ -8365,16 +7157,17 @@
 func (m *OfpGroupStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupStatsRequest) ProtoMessage()    {}
 func (*OfpGroupStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{59}
+	return fileDescriptor_08e3a4e375aeddc7, []int{59}
 }
+
 func (m *OfpGroupStatsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupStatsRequest.Unmarshal(m, b)
 }
 func (m *OfpGroupStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupStatsRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStatsRequest.Merge(dst, src)
+func (m *OfpGroupStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupStatsRequest.Merge(m, src)
 }
 func (m *OfpGroupStatsRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupStatsRequest.Size(m)
@@ -8405,16 +7198,17 @@
 func (m *OfpBucketCounter) String() string { return proto.CompactTextString(m) }
 func (*OfpBucketCounter) ProtoMessage()    {}
 func (*OfpBucketCounter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{60}
+	return fileDescriptor_08e3a4e375aeddc7, []int{60}
 }
+
 func (m *OfpBucketCounter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpBucketCounter.Unmarshal(m, b)
 }
 func (m *OfpBucketCounter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpBucketCounter.Marshal(b, m, deterministic)
 }
-func (dst *OfpBucketCounter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpBucketCounter.Merge(dst, src)
+func (m *OfpBucketCounter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpBucketCounter.Merge(m, src)
 }
 func (m *OfpBucketCounter) XXX_Size() int {
 	return xxx_messageInfo_OfpBucketCounter.Size(m)
@@ -8457,16 +7251,17 @@
 func (m *OfpGroupStats) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupStats) ProtoMessage()    {}
 func (*OfpGroupStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{61}
+	return fileDescriptor_08e3a4e375aeddc7, []int{61}
 }
+
 func (m *OfpGroupStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupStats.Unmarshal(m, b)
 }
 func (m *OfpGroupStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupStats.Merge(dst, src)
+func (m *OfpGroupStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupStats.Merge(m, src)
 }
 func (m *OfpGroupStats) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupStats.Size(m)
@@ -8540,16 +7335,17 @@
 func (m *OfpGroupDesc) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupDesc) ProtoMessage()    {}
 func (*OfpGroupDesc) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{62}
+	return fileDescriptor_08e3a4e375aeddc7, []int{62}
 }
+
 func (m *OfpGroupDesc) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupDesc.Unmarshal(m, b)
 }
 func (m *OfpGroupDesc) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupDesc.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupDesc) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupDesc.Merge(dst, src)
+func (m *OfpGroupDesc) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupDesc.Merge(m, src)
 }
 func (m *OfpGroupDesc) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupDesc.Size(m)
@@ -8593,16 +7389,17 @@
 func (m *OfpGroupEntry) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupEntry) ProtoMessage()    {}
 func (*OfpGroupEntry) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{63}
+	return fileDescriptor_08e3a4e375aeddc7, []int{63}
 }
+
 func (m *OfpGroupEntry) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupEntry.Unmarshal(m, b)
 }
 func (m *OfpGroupEntry) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupEntry.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupEntry) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupEntry.Merge(dst, src)
+func (m *OfpGroupEntry) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupEntry.Merge(m, src)
 }
 func (m *OfpGroupEntry) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupEntry.Size(m)
@@ -8642,16 +7439,17 @@
 func (m *OfpGroupFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpGroupFeatures) ProtoMessage()    {}
 func (*OfpGroupFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{64}
+	return fileDescriptor_08e3a4e375aeddc7, []int{64}
 }
+
 func (m *OfpGroupFeatures) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpGroupFeatures.Unmarshal(m, b)
 }
 func (m *OfpGroupFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpGroupFeatures.Marshal(b, m, deterministic)
 }
-func (dst *OfpGroupFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpGroupFeatures.Merge(dst, src)
+func (m *OfpGroupFeatures) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpGroupFeatures.Merge(m, src)
 }
 func (m *OfpGroupFeatures) XXX_Size() int {
 	return xxx_messageInfo_OfpGroupFeatures.Size(m)
@@ -8702,16 +7500,17 @@
 func (m *OfpMeterMultipartRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterMultipartRequest) ProtoMessage()    {}
 func (*OfpMeterMultipartRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{65}
+	return fileDescriptor_08e3a4e375aeddc7, []int{65}
 }
+
 func (m *OfpMeterMultipartRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterMultipartRequest.Unmarshal(m, b)
 }
 func (m *OfpMeterMultipartRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterMultipartRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterMultipartRequest.Merge(dst, src)
+func (m *OfpMeterMultipartRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterMultipartRequest.Merge(m, src)
 }
 func (m *OfpMeterMultipartRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterMultipartRequest.Size(m)
@@ -8742,16 +7541,17 @@
 func (m *OfpMeterBandStats) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterBandStats) ProtoMessage()    {}
 func (*OfpMeterBandStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{66}
+	return fileDescriptor_08e3a4e375aeddc7, []int{66}
 }
+
 func (m *OfpMeterBandStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterBandStats.Unmarshal(m, b)
 }
 func (m *OfpMeterBandStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterBandStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterBandStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterBandStats.Merge(dst, src)
+func (m *OfpMeterBandStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterBandStats.Merge(m, src)
 }
 func (m *OfpMeterBandStats) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterBandStats.Size(m)
@@ -8794,16 +7594,17 @@
 func (m *OfpMeterStats) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterStats) ProtoMessage()    {}
 func (*OfpMeterStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{67}
+	return fileDescriptor_08e3a4e375aeddc7, []int{67}
 }
+
 func (m *OfpMeterStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterStats.Unmarshal(m, b)
 }
 func (m *OfpMeterStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterStats.Merge(dst, src)
+func (m *OfpMeterStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterStats.Merge(m, src)
 }
 func (m *OfpMeterStats) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterStats.Size(m)
@@ -8877,16 +7678,17 @@
 func (m *OfpMeterConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterConfig) ProtoMessage()    {}
 func (*OfpMeterConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{68}
+	return fileDescriptor_08e3a4e375aeddc7, []int{68}
 }
+
 func (m *OfpMeterConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterConfig.Unmarshal(m, b)
 }
 func (m *OfpMeterConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterConfig.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterConfig.Merge(dst, src)
+func (m *OfpMeterConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterConfig.Merge(m, src)
 }
 func (m *OfpMeterConfig) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterConfig.Size(m)
@@ -8934,16 +7736,17 @@
 func (m *OfpMeterFeatures) String() string { return proto.CompactTextString(m) }
 func (*OfpMeterFeatures) ProtoMessage()    {}
 func (*OfpMeterFeatures) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{69}
+	return fileDescriptor_08e3a4e375aeddc7, []int{69}
 }
+
 func (m *OfpMeterFeatures) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpMeterFeatures.Unmarshal(m, b)
 }
 func (m *OfpMeterFeatures) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpMeterFeatures.Marshal(b, m, deterministic)
 }
-func (dst *OfpMeterFeatures) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpMeterFeatures.Merge(dst, src)
+func (m *OfpMeterFeatures) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpMeterFeatures.Merge(m, src)
 }
 func (m *OfpMeterFeatures) XXX_Size() int {
 	return xxx_messageInfo_OfpMeterFeatures.Size(m)
@@ -9003,16 +7806,17 @@
 func (m *OfpExperimenterMultipartHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpExperimenterMultipartHeader) ProtoMessage()    {}
 func (*OfpExperimenterMultipartHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{70}
+	return fileDescriptor_08e3a4e375aeddc7, []int{70}
 }
+
 func (m *OfpExperimenterMultipartHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpExperimenterMultipartHeader.Unmarshal(m, b)
 }
 func (m *OfpExperimenterMultipartHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpExperimenterMultipartHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(dst, src)
+func (m *OfpExperimenterMultipartHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpExperimenterMultipartHeader.Merge(m, src)
 }
 func (m *OfpExperimenterMultipartHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpExperimenterMultipartHeader.Size(m)
@@ -9046,7 +7850,7 @@
 
 // Experimenter extension.
 type OfpExperimenterHeader struct {
-	// ofp_header header;  /* Type OFPT_EXPERIMENTER. */
+	//ofp_header header;  /* Type OFPT_EXPERIMENTER. */
 	Experimenter         uint32   `protobuf:"varint,1,opt,name=experimenter,proto3" json:"experimenter,omitempty"`
 	ExpType              uint32   `protobuf:"varint,2,opt,name=exp_type,json=expType,proto3" json:"exp_type,omitempty"`
 	Data                 []byte   `protobuf:"bytes,3,opt,name=data,proto3" json:"data,omitempty"`
@@ -9059,16 +7863,17 @@
 func (m *OfpExperimenterHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpExperimenterHeader) ProtoMessage()    {}
 func (*OfpExperimenterHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{71}
+	return fileDescriptor_08e3a4e375aeddc7, []int{71}
 }
+
 func (m *OfpExperimenterHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpExperimenterHeader.Unmarshal(m, b)
 }
 func (m *OfpExperimenterHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpExperimenterHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpExperimenterHeader.Merge(dst, src)
+func (m *OfpExperimenterHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpExperimenterHeader.Merge(m, src)
 }
 func (m *OfpExperimenterHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpExperimenterHeader.Size(m)
@@ -9113,16 +7918,17 @@
 func (m *OfpQueuePropHeader) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropHeader) ProtoMessage()    {}
 func (*OfpQueuePropHeader) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{72}
+	return fileDescriptor_08e3a4e375aeddc7, []int{72}
 }
+
 func (m *OfpQueuePropHeader) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueuePropHeader.Unmarshal(m, b)
 }
 func (m *OfpQueuePropHeader) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueuePropHeader.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropHeader.Merge(dst, src)
+func (m *OfpQueuePropHeader) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueuePropHeader.Merge(m, src)
 }
 func (m *OfpQueuePropHeader) XXX_Size() int {
 	return xxx_messageInfo_OfpQueuePropHeader.Size(m)
@@ -9160,16 +7966,17 @@
 func (m *OfpQueuePropMinRate) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropMinRate) ProtoMessage()    {}
 func (*OfpQueuePropMinRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{73}
+	return fileDescriptor_08e3a4e375aeddc7, []int{73}
 }
+
 func (m *OfpQueuePropMinRate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueuePropMinRate.Unmarshal(m, b)
 }
 func (m *OfpQueuePropMinRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueuePropMinRate.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMinRate.Merge(dst, src)
+func (m *OfpQueuePropMinRate) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueuePropMinRate.Merge(m, src)
 }
 func (m *OfpQueuePropMinRate) XXX_Size() int {
 	return xxx_messageInfo_OfpQueuePropMinRate.Size(m)
@@ -9207,16 +8014,17 @@
 func (m *OfpQueuePropMaxRate) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropMaxRate) ProtoMessage()    {}
 func (*OfpQueuePropMaxRate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{74}
+	return fileDescriptor_08e3a4e375aeddc7, []int{74}
 }
+
 func (m *OfpQueuePropMaxRate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueuePropMaxRate.Unmarshal(m, b)
 }
 func (m *OfpQueuePropMaxRate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueuePropMaxRate.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropMaxRate.Merge(dst, src)
+func (m *OfpQueuePropMaxRate) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueuePropMaxRate.Merge(m, src)
 }
 func (m *OfpQueuePropMaxRate) XXX_Size() int {
 	return xxx_messageInfo_OfpQueuePropMaxRate.Size(m)
@@ -9255,16 +8063,17 @@
 func (m *OfpQueuePropExperimenter) String() string { return proto.CompactTextString(m) }
 func (*OfpQueuePropExperimenter) ProtoMessage()    {}
 func (*OfpQueuePropExperimenter) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{75}
+	return fileDescriptor_08e3a4e375aeddc7, []int{75}
 }
+
 func (m *OfpQueuePropExperimenter) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueuePropExperimenter.Unmarshal(m, b)
 }
 func (m *OfpQueuePropExperimenter) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueuePropExperimenter.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueuePropExperimenter.Merge(dst, src)
+func (m *OfpQueuePropExperimenter) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueuePropExperimenter.Merge(m, src)
 }
 func (m *OfpQueuePropExperimenter) XXX_Size() int {
 	return xxx_messageInfo_OfpQueuePropExperimenter.Size(m)
@@ -9310,16 +8119,17 @@
 func (m *OfpPacketQueue) String() string { return proto.CompactTextString(m) }
 func (*OfpPacketQueue) ProtoMessage()    {}
 func (*OfpPacketQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{76}
+	return fileDescriptor_08e3a4e375aeddc7, []int{76}
 }
+
 func (m *OfpPacketQueue) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpPacketQueue.Unmarshal(m, b)
 }
 func (m *OfpPacketQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpPacketQueue.Marshal(b, m, deterministic)
 }
-func (dst *OfpPacketQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpPacketQueue.Merge(dst, src)
+func (m *OfpPacketQueue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpPacketQueue.Merge(m, src)
 }
 func (m *OfpPacketQueue) XXX_Size() int {
 	return xxx_messageInfo_OfpPacketQueue.Size(m)
@@ -9353,7 +8163,7 @@
 
 // Query for port queue configuration.
 type OfpQueueGetConfigRequest struct {
-	// ofp_header header;
+	//ofp_header header;
 	Port                 uint32   `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
 	XXX_NoUnkeyedLiteral struct{} `json:"-"`
 	XXX_unrecognized     []byte   `json:"-"`
@@ -9364,16 +8174,17 @@
 func (m *OfpQueueGetConfigRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueGetConfigRequest) ProtoMessage()    {}
 func (*OfpQueueGetConfigRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{77}
+	return fileDescriptor_08e3a4e375aeddc7, []int{77}
 }
+
 func (m *OfpQueueGetConfigRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueueGetConfigRequest.Unmarshal(m, b)
 }
 func (m *OfpQueueGetConfigRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueueGetConfigRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(dst, src)
+func (m *OfpQueueGetConfigRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueueGetConfigRequest.Merge(m, src)
 }
 func (m *OfpQueueGetConfigRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpQueueGetConfigRequest.Size(m)
@@ -9393,7 +8204,7 @@
 
 // Queue configuration for a given port.
 type OfpQueueGetConfigReply struct {
-	// ofp_header header;
+	//ofp_header header;
 	Port                 uint32            `protobuf:"varint,1,opt,name=port,proto3" json:"port,omitempty"`
 	Queues               []*OfpPacketQueue `protobuf:"bytes,2,rep,name=queues,proto3" json:"queues,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
@@ -9405,16 +8216,17 @@
 func (m *OfpQueueGetConfigReply) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueGetConfigReply) ProtoMessage()    {}
 func (*OfpQueueGetConfigReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{78}
+	return fileDescriptor_08e3a4e375aeddc7, []int{78}
 }
+
 func (m *OfpQueueGetConfigReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueueGetConfigReply.Unmarshal(m, b)
 }
 func (m *OfpQueueGetConfigReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueueGetConfigReply.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueGetConfigReply.Merge(dst, src)
+func (m *OfpQueueGetConfigReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueueGetConfigReply.Merge(m, src)
 }
 func (m *OfpQueueGetConfigReply) XXX_Size() int {
 	return xxx_messageInfo_OfpQueueGetConfigReply.Size(m)
@@ -9452,16 +8264,17 @@
 func (m *OfpActionSetQueue) String() string { return proto.CompactTextString(m) }
 func (*OfpActionSetQueue) ProtoMessage()    {}
 func (*OfpActionSetQueue) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{79}
+	return fileDescriptor_08e3a4e375aeddc7, []int{79}
 }
+
 func (m *OfpActionSetQueue) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpActionSetQueue.Unmarshal(m, b)
 }
 func (m *OfpActionSetQueue) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpActionSetQueue.Marshal(b, m, deterministic)
 }
-func (dst *OfpActionSetQueue) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpActionSetQueue.Merge(dst, src)
+func (m *OfpActionSetQueue) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpActionSetQueue.Merge(m, src)
 }
 func (m *OfpActionSetQueue) XXX_Size() int {
 	return xxx_messageInfo_OfpActionSetQueue.Size(m)
@@ -9498,16 +8311,17 @@
 func (m *OfpQueueStatsRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueStatsRequest) ProtoMessage()    {}
 func (*OfpQueueStatsRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{80}
+	return fileDescriptor_08e3a4e375aeddc7, []int{80}
 }
+
 func (m *OfpQueueStatsRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueueStatsRequest.Unmarshal(m, b)
 }
 func (m *OfpQueueStatsRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueueStatsRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStatsRequest.Merge(dst, src)
+func (m *OfpQueueStatsRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueueStatsRequest.Merge(m, src)
 }
 func (m *OfpQueueStatsRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpQueueStatsRequest.Size(m)
@@ -9549,16 +8363,17 @@
 func (m *OfpQueueStats) String() string { return proto.CompactTextString(m) }
 func (*OfpQueueStats) ProtoMessage()    {}
 func (*OfpQueueStats) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{81}
+	return fileDescriptor_08e3a4e375aeddc7, []int{81}
 }
+
 func (m *OfpQueueStats) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpQueueStats.Unmarshal(m, b)
 }
 func (m *OfpQueueStats) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpQueueStats.Marshal(b, m, deterministic)
 }
-func (dst *OfpQueueStats) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpQueueStats.Merge(dst, src)
+func (m *OfpQueueStats) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpQueueStats.Merge(m, src)
 }
 func (m *OfpQueueStats) XXX_Size() int {
 	return xxx_messageInfo_OfpQueueStats.Size(m)
@@ -9620,7 +8435,7 @@
 
 // Role request and reply message.
 type OfpRoleRequest struct {
-	// ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
+	//ofp_header header;        /* Type OFPT_ROLE_REQUEST/OFPT_ROLE_REPLY. */
 	Role                 OfpControllerRole `protobuf:"varint,1,opt,name=role,proto3,enum=openflow_13.OfpControllerRole" json:"role,omitempty"`
 	GenerationId         uint64            `protobuf:"varint,2,opt,name=generation_id,json=generationId,proto3" json:"generation_id,omitempty"`
 	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
@@ -9632,16 +8447,17 @@
 func (m *OfpRoleRequest) String() string { return proto.CompactTextString(m) }
 func (*OfpRoleRequest) ProtoMessage()    {}
 func (*OfpRoleRequest) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{82}
+	return fileDescriptor_08e3a4e375aeddc7, []int{82}
 }
+
 func (m *OfpRoleRequest) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpRoleRequest.Unmarshal(m, b)
 }
 func (m *OfpRoleRequest) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpRoleRequest.Marshal(b, m, deterministic)
 }
-func (dst *OfpRoleRequest) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpRoleRequest.Merge(dst, src)
+func (m *OfpRoleRequest) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpRoleRequest.Merge(m, src)
 }
 func (m *OfpRoleRequest) XXX_Size() int {
 	return xxx_messageInfo_OfpRoleRequest.Size(m)
@@ -9668,7 +8484,7 @@
 
 // Asynchronous message configuration.
 type OfpAsyncConfig struct {
-	// ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
+	//ofp_header header;    /* OFPT_GET_ASYNC_REPLY or OFPT_SET_ASYNC. */
 	PacketInMask         []uint32 `protobuf:"varint,1,rep,packed,name=packet_in_mask,json=packetInMask,proto3" json:"packet_in_mask,omitempty"`
 	PortStatusMask       []uint32 `protobuf:"varint,2,rep,packed,name=port_status_mask,json=portStatusMask,proto3" json:"port_status_mask,omitempty"`
 	FlowRemovedMask      []uint32 `protobuf:"varint,3,rep,packed,name=flow_removed_mask,json=flowRemovedMask,proto3" json:"flow_removed_mask,omitempty"`
@@ -9681,16 +8497,17 @@
 func (m *OfpAsyncConfig) String() string { return proto.CompactTextString(m) }
 func (*OfpAsyncConfig) ProtoMessage()    {}
 func (*OfpAsyncConfig) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{83}
+	return fileDescriptor_08e3a4e375aeddc7, []int{83}
 }
+
 func (m *OfpAsyncConfig) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_OfpAsyncConfig.Unmarshal(m, b)
 }
 func (m *OfpAsyncConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_OfpAsyncConfig.Marshal(b, m, deterministic)
 }
-func (dst *OfpAsyncConfig) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_OfpAsyncConfig.Merge(dst, src)
+func (m *OfpAsyncConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_OfpAsyncConfig.Merge(m, src)
 }
 func (m *OfpAsyncConfig) XXX_Size() int {
 	return xxx_messageInfo_OfpAsyncConfig.Size(m)
@@ -9734,16 +8551,17 @@
 func (m *MeterModUpdate) String() string { return proto.CompactTextString(m) }
 func (*MeterModUpdate) ProtoMessage()    {}
 func (*MeterModUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{84}
+	return fileDescriptor_08e3a4e375aeddc7, []int{84}
 }
+
 func (m *MeterModUpdate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MeterModUpdate.Unmarshal(m, b)
 }
 func (m *MeterModUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MeterModUpdate.Marshal(b, m, deterministic)
 }
-func (dst *MeterModUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterModUpdate.Merge(dst, src)
+func (m *MeterModUpdate) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeterModUpdate.Merge(m, src)
 }
 func (m *MeterModUpdate) XXX_Size() int {
 	return xxx_messageInfo_MeterModUpdate.Size(m)
@@ -9779,16 +8597,17 @@
 func (m *MeterStatsReply) String() string { return proto.CompactTextString(m) }
 func (*MeterStatsReply) ProtoMessage()    {}
 func (*MeterStatsReply) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{85}
+	return fileDescriptor_08e3a4e375aeddc7, []int{85}
 }
+
 func (m *MeterStatsReply) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MeterStatsReply.Unmarshal(m, b)
 }
 func (m *MeterStatsReply) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MeterStatsReply.Marshal(b, m, deterministic)
 }
-func (dst *MeterStatsReply) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MeterStatsReply.Merge(dst, src)
+func (m *MeterStatsReply) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MeterStatsReply.Merge(m, src)
 }
 func (m *MeterStatsReply) XXX_Size() int {
 	return xxx_messageInfo_MeterStatsReply.Size(m)
@@ -9818,16 +8637,17 @@
 func (m *FlowTableUpdate) String() string { return proto.CompactTextString(m) }
 func (*FlowTableUpdate) ProtoMessage()    {}
 func (*FlowTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{86}
+	return fileDescriptor_08e3a4e375aeddc7, []int{86}
 }
+
 func (m *FlowTableUpdate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowTableUpdate.Unmarshal(m, b)
 }
 func (m *FlowTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowTableUpdate.Marshal(b, m, deterministic)
 }
-func (dst *FlowTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowTableUpdate.Merge(dst, src)
+func (m *FlowTableUpdate) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowTableUpdate.Merge(m, src)
 }
 func (m *FlowTableUpdate) XXX_Size() int {
 	return xxx_messageInfo_FlowTableUpdate.Size(m)
@@ -9864,16 +8684,17 @@
 func (m *FlowGroupTableUpdate) String() string { return proto.CompactTextString(m) }
 func (*FlowGroupTableUpdate) ProtoMessage()    {}
 func (*FlowGroupTableUpdate) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{87}
+	return fileDescriptor_08e3a4e375aeddc7, []int{87}
 }
+
 func (m *FlowGroupTableUpdate) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowGroupTableUpdate.Unmarshal(m, b)
 }
 func (m *FlowGroupTableUpdate) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowGroupTableUpdate.Marshal(b, m, deterministic)
 }
-func (dst *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupTableUpdate.Merge(dst, src)
+func (m *FlowGroupTableUpdate) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowGroupTableUpdate.Merge(m, src)
 }
 func (m *FlowGroupTableUpdate) XXX_Size() int {
 	return xxx_messageInfo_FlowGroupTableUpdate.Size(m)
@@ -9909,16 +8730,17 @@
 func (m *Flows) String() string { return proto.CompactTextString(m) }
 func (*Flows) ProtoMessage()    {}
 func (*Flows) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{88}
+	return fileDescriptor_08e3a4e375aeddc7, []int{88}
 }
+
 func (m *Flows) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Flows.Unmarshal(m, b)
 }
 func (m *Flows) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Flows.Marshal(b, m, deterministic)
 }
-func (dst *Flows) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Flows.Merge(dst, src)
+func (m *Flows) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Flows.Merge(m, src)
 }
 func (m *Flows) XXX_Size() int {
 	return xxx_messageInfo_Flows.Size(m)
@@ -9947,16 +8769,17 @@
 func (m *Meters) String() string { return proto.CompactTextString(m) }
 func (*Meters) ProtoMessage()    {}
 func (*Meters) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{89}
+	return fileDescriptor_08e3a4e375aeddc7, []int{89}
 }
+
 func (m *Meters) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_Meters.Unmarshal(m, b)
 }
 func (m *Meters) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_Meters.Marshal(b, m, deterministic)
 }
-func (dst *Meters) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Meters.Merge(dst, src)
+func (m *Meters) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Meters.Merge(m, src)
 }
 func (m *Meters) XXX_Size() int {
 	return xxx_messageInfo_Meters.Size(m)
@@ -9985,16 +8808,17 @@
 func (m *FlowGroups) String() string { return proto.CompactTextString(m) }
 func (*FlowGroups) ProtoMessage()    {}
 func (*FlowGroups) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{90}
+	return fileDescriptor_08e3a4e375aeddc7, []int{90}
 }
+
 func (m *FlowGroups) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowGroups.Unmarshal(m, b)
 }
 func (m *FlowGroups) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowGroups.Marshal(b, m, deterministic)
 }
-func (dst *FlowGroups) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroups.Merge(dst, src)
+func (m *FlowGroups) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowGroups.Merge(m, src)
 }
 func (m *FlowGroups) XXX_Size() int {
 	return xxx_messageInfo_FlowGroups.Size(m)
@@ -10024,16 +8848,17 @@
 func (m *FlowChanges) String() string { return proto.CompactTextString(m) }
 func (*FlowChanges) ProtoMessage()    {}
 func (*FlowChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{91}
+	return fileDescriptor_08e3a4e375aeddc7, []int{91}
 }
+
 func (m *FlowChanges) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowChanges.Unmarshal(m, b)
 }
 func (m *FlowChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowChanges.Marshal(b, m, deterministic)
 }
-func (dst *FlowChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowChanges.Merge(dst, src)
+func (m *FlowChanges) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowChanges.Merge(m, src)
 }
 func (m *FlowChanges) XXX_Size() int {
 	return xxx_messageInfo_FlowChanges.Size(m)
@@ -10071,16 +8896,17 @@
 func (m *FlowGroupChanges) String() string { return proto.CompactTextString(m) }
 func (*FlowGroupChanges) ProtoMessage()    {}
 func (*FlowGroupChanges) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{92}
+	return fileDescriptor_08e3a4e375aeddc7, []int{92}
 }
+
 func (m *FlowGroupChanges) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_FlowGroupChanges.Unmarshal(m, b)
 }
 func (m *FlowGroupChanges) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_FlowGroupChanges.Marshal(b, m, deterministic)
 }
-func (dst *FlowGroupChanges) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_FlowGroupChanges.Merge(dst, src)
+func (m *FlowGroupChanges) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_FlowGroupChanges.Merge(m, src)
 }
 func (m *FlowGroupChanges) XXX_Size() int {
 	return xxx_messageInfo_FlowGroupChanges.Size(m)
@@ -10124,16 +8950,17 @@
 func (m *PacketIn) String() string { return proto.CompactTextString(m) }
 func (*PacketIn) ProtoMessage()    {}
 func (*PacketIn) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{93}
+	return fileDescriptor_08e3a4e375aeddc7, []int{93}
 }
+
 func (m *PacketIn) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PacketIn.Unmarshal(m, b)
 }
 func (m *PacketIn) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PacketIn.Marshal(b, m, deterministic)
 }
-func (dst *PacketIn) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketIn.Merge(dst, src)
+func (m *PacketIn) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PacketIn.Merge(m, src)
 }
 func (m *PacketIn) XXX_Size() int {
 	return xxx_messageInfo_PacketIn.Size(m)
@@ -10170,16 +8997,17 @@
 func (m *PacketOut) String() string { return proto.CompactTextString(m) }
 func (*PacketOut) ProtoMessage()    {}
 func (*PacketOut) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{94}
+	return fileDescriptor_08e3a4e375aeddc7, []int{94}
 }
+
 func (m *PacketOut) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PacketOut.Unmarshal(m, b)
 }
 func (m *PacketOut) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PacketOut.Marshal(b, m, deterministic)
 }
-func (dst *PacketOut) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PacketOut.Merge(dst, src)
+func (m *PacketOut) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PacketOut.Merge(m, src)
 }
 func (m *PacketOut) XXX_Size() int {
 	return xxx_messageInfo_PacketOut.Size(m)
@@ -10218,16 +9046,17 @@
 func (m *ChangeEvent) String() string { return proto.CompactTextString(m) }
 func (*ChangeEvent) ProtoMessage()    {}
 func (*ChangeEvent) Descriptor() ([]byte, []int) {
-	return fileDescriptor_openflow_13_2cee8de507cb270a, []int{95}
+	return fileDescriptor_08e3a4e375aeddc7, []int{95}
 }
+
 func (m *ChangeEvent) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ChangeEvent.Unmarshal(m, b)
 }
 func (m *ChangeEvent) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ChangeEvent.Marshal(b, m, deterministic)
 }
-func (dst *ChangeEvent) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ChangeEvent.Merge(dst, src)
+func (m *ChangeEvent) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ChangeEvent.Merge(m, src)
 }
 func (m *ChangeEvent) XXX_Size() int {
 	return xxx_messageInfo_ChangeEvent.Size(m)
@@ -10269,62 +9098,66 @@
 	return nil
 }
 
-// XXX_OneofFuncs is for the internal use of the proto package.
-func (*ChangeEvent) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
-	return _ChangeEvent_OneofMarshaler, _ChangeEvent_OneofUnmarshaler, _ChangeEvent_OneofSizer, []interface{}{
+// XXX_OneofWrappers is for the internal use of the proto package.
+func (*ChangeEvent) XXX_OneofWrappers() []interface{} {
+	return []interface{}{
 		(*ChangeEvent_PortStatus)(nil),
 	}
 }
 
-func _ChangeEvent_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
-	m := msg.(*ChangeEvent)
-	// event
-	switch x := m.Event.(type) {
-	case *ChangeEvent_PortStatus:
-		b.EncodeVarint(2<<3 | proto.WireBytes)
-		if err := b.EncodeMessage(x.PortStatus); err != nil {
-			return err
-		}
-	case nil:
-	default:
-		return fmt.Errorf("ChangeEvent.Event has unexpected type %T", x)
-	}
-	return nil
-}
-
-func _ChangeEvent_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
-	m := msg.(*ChangeEvent)
-	switch tag {
-	case 2: // event.port_status
-		if wire != proto.WireBytes {
-			return true, proto.ErrInternalBadWireType
-		}
-		msg := new(OfpPortStatus)
-		err := b.DecodeMessage(msg)
-		m.Event = &ChangeEvent_PortStatus{msg}
-		return true, err
-	default:
-		return false, nil
-	}
-}
-
-func _ChangeEvent_OneofSizer(msg proto.Message) (n int) {
-	m := msg.(*ChangeEvent)
-	// event
-	switch x := m.Event.(type) {
-	case *ChangeEvent_PortStatus:
-		s := proto.Size(x.PortStatus)
-		n += 1 // tag and wire
-		n += proto.SizeVarint(uint64(s))
-		n += s
-	case nil:
-	default:
-		panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
-	}
-	return n
-}
-
 func init() {
+	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
+	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
+	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
+	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
+	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
+	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
+	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
+	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
+	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
+	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
+	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
+	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
+	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
+	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
+	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
+	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
+	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
+	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
+	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
+	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
+	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
+	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
+	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
+	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
+	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
+	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
+	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
+	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
+	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
+	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
+	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
+	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
+	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
+	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
+	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
+	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
 	proto.RegisterType((*OfpHeader)(nil), "openflow_13.ofp_header")
 	proto.RegisterType((*OfpHelloElemHeader)(nil), "openflow_13.ofp_hello_elem_header")
 	proto.RegisterType((*OfpHelloElemVersionbitmap)(nil), "openflow_13.ofp_hello_elem_versionbitmap")
@@ -10421,65 +9254,11 @@
 	proto.RegisterType((*PacketIn)(nil), "openflow_13.PacketIn")
 	proto.RegisterType((*PacketOut)(nil), "openflow_13.PacketOut")
 	proto.RegisterType((*ChangeEvent)(nil), "openflow_13.ChangeEvent")
-	proto.RegisterEnum("openflow_13.OfpPortNo", OfpPortNo_name, OfpPortNo_value)
-	proto.RegisterEnum("openflow_13.OfpType", OfpType_name, OfpType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloElemType", OfpHelloElemType_name, OfpHelloElemType_value)
-	proto.RegisterEnum("openflow_13.OfpConfigFlags", OfpConfigFlags_name, OfpConfigFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableConfig", OfpTableConfig_name, OfpTableConfig_value)
-	proto.RegisterEnum("openflow_13.OfpTable", OfpTable_name, OfpTable_value)
-	proto.RegisterEnum("openflow_13.OfpCapabilities", OfpCapabilities_name, OfpCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpPortConfig", OfpPortConfig_name, OfpPortConfig_value)
-	proto.RegisterEnum("openflow_13.OfpPortState", OfpPortState_name, OfpPortState_value)
-	proto.RegisterEnum("openflow_13.OfpPortFeatures", OfpPortFeatures_name, OfpPortFeatures_value)
-	proto.RegisterEnum("openflow_13.OfpPortReason", OfpPortReason_name, OfpPortReason_value)
-	proto.RegisterEnum("openflow_13.OfpMatchType", OfpMatchType_name, OfpMatchType_value)
-	proto.RegisterEnum("openflow_13.OfpOxmClass", OfpOxmClass_name, OfpOxmClass_value)
-	proto.RegisterEnum("openflow_13.OxmOfbFieldTypes", OxmOfbFieldTypes_name, OxmOfbFieldTypes_value)
-	proto.RegisterEnum("openflow_13.OfpVlanId", OfpVlanId_name, OfpVlanId_value)
-	proto.RegisterEnum("openflow_13.OfpIpv6ExthdrFlags", OfpIpv6ExthdrFlags_name, OfpIpv6ExthdrFlags_value)
-	proto.RegisterEnum("openflow_13.OfpActionType", OfpActionType_name, OfpActionType_value)
-	proto.RegisterEnum("openflow_13.OfpControllerMaxLen", OfpControllerMaxLen_name, OfpControllerMaxLen_value)
-	proto.RegisterEnum("openflow_13.OfpInstructionType", OfpInstructionType_name, OfpInstructionType_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModCommand", OfpFlowModCommand_name, OfpFlowModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFlags", OfpFlowModFlags_name, OfpFlowModFlags_value)
-	proto.RegisterEnum("openflow_13.OfpGroup", OfpGroup_name, OfpGroup_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModCommand", OfpGroupModCommand_name, OfpGroupModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpGroupType", OfpGroupType_name, OfpGroupType_value)
-	proto.RegisterEnum("openflow_13.OfpPacketInReason", OfpPacketInReason_name, OfpPacketInReason_value)
-	proto.RegisterEnum("openflow_13.OfpFlowRemovedReason", OfpFlowRemovedReason_name, OfpFlowRemovedReason_value)
-	proto.RegisterEnum("openflow_13.OfpMeter", OfpMeter_name, OfpMeter_value)
-	proto.RegisterEnum("openflow_13.OfpMeterBandType", OfpMeterBandType_name, OfpMeterBandType_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModCommand", OfpMeterModCommand_name, OfpMeterModCommand_value)
-	proto.RegisterEnum("openflow_13.OfpMeterFlags", OfpMeterFlags_name, OfpMeterFlags_value)
-	proto.RegisterEnum("openflow_13.OfpErrorType", OfpErrorType_name, OfpErrorType_value)
-	proto.RegisterEnum("openflow_13.OfpHelloFailedCode", OfpHelloFailedCode_name, OfpHelloFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadRequestCode", OfpBadRequestCode_name, OfpBadRequestCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadActionCode", OfpBadActionCode_name, OfpBadActionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadInstructionCode", OfpBadInstructionCode_name, OfpBadInstructionCode_value)
-	proto.RegisterEnum("openflow_13.OfpBadMatchCode", OfpBadMatchCode_name, OfpBadMatchCode_value)
-	proto.RegisterEnum("openflow_13.OfpFlowModFailedCode", OfpFlowModFailedCode_name, OfpFlowModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpGroupModFailedCode", OfpGroupModFailedCode_name, OfpGroupModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpPortModFailedCode", OfpPortModFailedCode_name, OfpPortModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableModFailedCode", OfpTableModFailedCode_name, OfpTableModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpQueueOpFailedCode", OfpQueueOpFailedCode_name, OfpQueueOpFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpSwitchConfigFailedCode", OfpSwitchConfigFailedCode_name, OfpSwitchConfigFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpRoleRequestFailedCode", OfpRoleRequestFailedCode_name, OfpRoleRequestFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMeterModFailedCode", OfpMeterModFailedCode_name, OfpMeterModFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturesFailedCode", OfpTableFeaturesFailedCode_name, OfpTableFeaturesFailedCode_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartType", OfpMultipartType_name, OfpMultipartType_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartRequestFlags", OfpMultipartRequestFlags_name, OfpMultipartRequestFlags_value)
-	proto.RegisterEnum("openflow_13.OfpMultipartReplyFlags", OfpMultipartReplyFlags_name, OfpMultipartReplyFlags_value)
-	proto.RegisterEnum("openflow_13.OfpTableFeaturePropType", OfpTableFeaturePropType_name, OfpTableFeaturePropType_value)
-	proto.RegisterEnum("openflow_13.OfpGroupCapabilities", OfpGroupCapabilities_name, OfpGroupCapabilities_value)
-	proto.RegisterEnum("openflow_13.OfpQueueProperties", OfpQueueProperties_name, OfpQueueProperties_value)
-	proto.RegisterEnum("openflow_13.OfpControllerRole", OfpControllerRole_name, OfpControllerRole_value)
 }
 
-func init() {
-	proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_openflow_13_2cee8de507cb270a)
-}
+func init() { proto.RegisterFile("voltha_protos/openflow_13.proto", fileDescriptor_08e3a4e375aeddc7) }
 
-var fileDescriptor_openflow_13_2cee8de507cb270a = []byte{
+var fileDescriptor_08e3a4e375aeddc7 = []byte{
 	// 8420 bytes of a gzipped FileDescriptorProto
 	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xdc, 0x7d, 0x5b, 0x8c, 0x1b, 0x59,
 	0x76, 0x98, 0xf8, 0xe8, 0x6e, 0xf2, 0xb2, 0xbb, 0x55, 0x2a, 0xbd, 0x28, 0xb5, 0x34, 0x92, 0xb8,