github.com/edwarnicke/govpp@v0.0.0-20230130211138-14ef5d20b1d0/binapi/flow_types/flow_types.ba.go (about)

     1  // Code generated by GoVPP's binapi-generator. DO NOT EDIT.
     2  // versions:
     3  //  binapi-generator: v0.4.0-dev
     4  //  VPP:              23.02-rc0~189-g57127b32a
     5  // source: /usr/share/vpp/api/core/flow_types.api.json
     6  
     7  // Package flow_types contains generated bindings for API file flow_types.api.
     8  //
     9  // Contents:
    10  //   5 enums
    11  //  20 structs
    12  //   2 unions
    13  //
    14  package flow_types
    15  
    16  import (
    17  	"strconv"
    18  
    19  	api "git.fd.io/govpp.git/api"
    20  	codec "git.fd.io/govpp.git/codec"
    21  	ethernet_types "github.com/edwarnicke/govpp/binapi/ethernet_types"
    22  	ip_types "github.com/edwarnicke/govpp/binapi/ip_types"
    23  )
    24  
    25  // This is a compile-time assertion to ensure that this generated file
    26  // is compatible with the GoVPP api package it is being compiled against.
    27  // A compilation error at this line likely means your copy of the
    28  // GoVPP api package needs to be updated.
    29  const _ = api.GoVppAPIPackageIsVersion2
    30  
    31  // FlowAction defines enum 'flow_action'.
    32  type FlowAction uint32
    33  
    34  const (
    35  	FLOW_ACTION_COUNT             FlowAction = 1
    36  	FLOW_ACTION_MARK              FlowAction = 2
    37  	FLOW_ACTION_BUFFER_ADVANCE    FlowAction = 4
    38  	FLOW_ACTION_REDIRECT_TO_NODE  FlowAction = 8
    39  	FLOW_ACTION_REDIRECT_TO_QUEUE FlowAction = 16
    40  	FLOW_ACTION_DROP              FlowAction = 64
    41  )
    42  
    43  var (
    44  	FlowAction_name = map[uint32]string{
    45  		1:  "FLOW_ACTION_COUNT",
    46  		2:  "FLOW_ACTION_MARK",
    47  		4:  "FLOW_ACTION_BUFFER_ADVANCE",
    48  		8:  "FLOW_ACTION_REDIRECT_TO_NODE",
    49  		16: "FLOW_ACTION_REDIRECT_TO_QUEUE",
    50  		64: "FLOW_ACTION_DROP",
    51  	}
    52  	FlowAction_value = map[string]uint32{
    53  		"FLOW_ACTION_COUNT":             1,
    54  		"FLOW_ACTION_MARK":              2,
    55  		"FLOW_ACTION_BUFFER_ADVANCE":    4,
    56  		"FLOW_ACTION_REDIRECT_TO_NODE":  8,
    57  		"FLOW_ACTION_REDIRECT_TO_QUEUE": 16,
    58  		"FLOW_ACTION_DROP":              64,
    59  	}
    60  )
    61  
    62  func (x FlowAction) String() string {
    63  	s, ok := FlowAction_name[uint32(x)]
    64  	if ok {
    65  		return s
    66  	}
    67  	return "FlowAction(" + strconv.Itoa(int(x)) + ")"
    68  }
    69  
    70  // FlowActionV2 defines enum 'flow_action_v2'.
    71  type FlowActionV2 uint32
    72  
    73  const (
    74  	FLOW_ACTION_COUNT_V2             FlowActionV2 = 1
    75  	FLOW_ACTION_MARK_V2              FlowActionV2 = 2
    76  	FLOW_ACTION_BUFFER_ADVANCE_V2    FlowActionV2 = 4
    77  	FLOW_ACTION_REDIRECT_TO_NODE_V2  FlowActionV2 = 8
    78  	FLOW_ACTION_REDIRECT_TO_QUEUE_V2 FlowActionV2 = 16
    79  	FLOW_ACTION_RSS_V2               FlowActionV2 = 32
    80  	FLOW_ACTION_DROP_V2              FlowActionV2 = 64
    81  )
    82  
    83  var (
    84  	FlowActionV2_name = map[uint32]string{
    85  		1:  "FLOW_ACTION_COUNT_V2",
    86  		2:  "FLOW_ACTION_MARK_V2",
    87  		4:  "FLOW_ACTION_BUFFER_ADVANCE_V2",
    88  		8:  "FLOW_ACTION_REDIRECT_TO_NODE_V2",
    89  		16: "FLOW_ACTION_REDIRECT_TO_QUEUE_V2",
    90  		32: "FLOW_ACTION_RSS_V2",
    91  		64: "FLOW_ACTION_DROP_V2",
    92  	}
    93  	FlowActionV2_value = map[string]uint32{
    94  		"FLOW_ACTION_COUNT_V2":             1,
    95  		"FLOW_ACTION_MARK_V2":              2,
    96  		"FLOW_ACTION_BUFFER_ADVANCE_V2":    4,
    97  		"FLOW_ACTION_REDIRECT_TO_NODE_V2":  8,
    98  		"FLOW_ACTION_REDIRECT_TO_QUEUE_V2": 16,
    99  		"FLOW_ACTION_RSS_V2":               32,
   100  		"FLOW_ACTION_DROP_V2":              64,
   101  	}
   102  )
   103  
   104  func (x FlowActionV2) String() string {
   105  	s, ok := FlowActionV2_name[uint32(x)]
   106  	if ok {
   107  		return s
   108  	}
   109  	return "FlowActionV2(" + strconv.Itoa(int(x)) + ")"
   110  }
   111  
   112  // FlowType defines enum 'flow_type'.
   113  type FlowType uint32
   114  
   115  const (
   116  	FLOW_TYPE_ETHERNET           FlowType = 1
   117  	FLOW_TYPE_IP4                FlowType = 2
   118  	FLOW_TYPE_IP6                FlowType = 3
   119  	FLOW_TYPE_IP4_L2TPV3OIP      FlowType = 4
   120  	FLOW_TYPE_IP4_IPSEC_ESP      FlowType = 5
   121  	FLOW_TYPE_IP4_IPSEC_AH       FlowType = 6
   122  	FLOW_TYPE_IP4_N_TUPLE        FlowType = 7
   123  	FLOW_TYPE_IP6_N_TUPLE        FlowType = 8
   124  	FLOW_TYPE_IP4_N_TUPLE_TAGGED FlowType = 9
   125  	FLOW_TYPE_IP6_N_TUPLE_TAGGED FlowType = 10
   126  	FLOW_TYPE_IP4_VXLAN          FlowType = 11
   127  	FLOW_TYPE_IP6_VXLAN          FlowType = 12
   128  	FLOW_TYPE_IP4_GTPC           FlowType = 13
   129  	FLOW_TYPE_IP4_GTPU           FlowType = 14
   130  )
   131  
   132  var (
   133  	FlowType_name = map[uint32]string{
   134  		1:  "FLOW_TYPE_ETHERNET",
   135  		2:  "FLOW_TYPE_IP4",
   136  		3:  "FLOW_TYPE_IP6",
   137  		4:  "FLOW_TYPE_IP4_L2TPV3OIP",
   138  		5:  "FLOW_TYPE_IP4_IPSEC_ESP",
   139  		6:  "FLOW_TYPE_IP4_IPSEC_AH",
   140  		7:  "FLOW_TYPE_IP4_N_TUPLE",
   141  		8:  "FLOW_TYPE_IP6_N_TUPLE",
   142  		9:  "FLOW_TYPE_IP4_N_TUPLE_TAGGED",
   143  		10: "FLOW_TYPE_IP6_N_TUPLE_TAGGED",
   144  		11: "FLOW_TYPE_IP4_VXLAN",
   145  		12: "FLOW_TYPE_IP6_VXLAN",
   146  		13: "FLOW_TYPE_IP4_GTPC",
   147  		14: "FLOW_TYPE_IP4_GTPU",
   148  	}
   149  	FlowType_value = map[string]uint32{
   150  		"FLOW_TYPE_ETHERNET":           1,
   151  		"FLOW_TYPE_IP4":                2,
   152  		"FLOW_TYPE_IP6":                3,
   153  		"FLOW_TYPE_IP4_L2TPV3OIP":      4,
   154  		"FLOW_TYPE_IP4_IPSEC_ESP":      5,
   155  		"FLOW_TYPE_IP4_IPSEC_AH":       6,
   156  		"FLOW_TYPE_IP4_N_TUPLE":        7,
   157  		"FLOW_TYPE_IP6_N_TUPLE":        8,
   158  		"FLOW_TYPE_IP4_N_TUPLE_TAGGED": 9,
   159  		"FLOW_TYPE_IP6_N_TUPLE_TAGGED": 10,
   160  		"FLOW_TYPE_IP4_VXLAN":          11,
   161  		"FLOW_TYPE_IP6_VXLAN":          12,
   162  		"FLOW_TYPE_IP4_GTPC":           13,
   163  		"FLOW_TYPE_IP4_GTPU":           14,
   164  	}
   165  )
   166  
   167  func (x FlowType) String() string {
   168  	s, ok := FlowType_name[uint32(x)]
   169  	if ok {
   170  		return s
   171  	}
   172  	return "FlowType(" + strconv.Itoa(int(x)) + ")"
   173  }
   174  
   175  // FlowTypeV2 defines enum 'flow_type_v2'.
   176  type FlowTypeV2 uint32
   177  
   178  const (
   179  	FLOW_TYPE_ETHERNET_V2           FlowTypeV2 = 1
   180  	FLOW_TYPE_IP4_V2                FlowTypeV2 = 2
   181  	FLOW_TYPE_IP6_V2                FlowTypeV2 = 3
   182  	FLOW_TYPE_IP4_L2TPV3OIP_V2      FlowTypeV2 = 4
   183  	FLOW_TYPE_IP4_IPSEC_ESP_V2      FlowTypeV2 = 5
   184  	FLOW_TYPE_IP4_IPSEC_AH_V2       FlowTypeV2 = 6
   185  	FLOW_TYPE_IP4_N_TUPLE_V2        FlowTypeV2 = 7
   186  	FLOW_TYPE_IP6_N_TUPLE_V2        FlowTypeV2 = 8
   187  	FLOW_TYPE_IP4_N_TUPLE_TAGGED_V2 FlowTypeV2 = 9
   188  	FLOW_TYPE_IP6_N_TUPLE_TAGGED_V2 FlowTypeV2 = 10
   189  	FLOW_TYPE_IP4_VXLAN_V2          FlowTypeV2 = 11
   190  	FLOW_TYPE_IP6_VXLAN_V2          FlowTypeV2 = 12
   191  	FLOW_TYPE_IP4_GTPC_V2           FlowTypeV2 = 13
   192  	FLOW_TYPE_IP4_GTPU_V2           FlowTypeV2 = 14
   193  	FLOW_TYPE_GENERIC_V2            FlowTypeV2 = 15
   194  )
   195  
   196  var (
   197  	FlowTypeV2_name = map[uint32]string{
   198  		1:  "FLOW_TYPE_ETHERNET_V2",
   199  		2:  "FLOW_TYPE_IP4_V2",
   200  		3:  "FLOW_TYPE_IP6_V2",
   201  		4:  "FLOW_TYPE_IP4_L2TPV3OIP_V2",
   202  		5:  "FLOW_TYPE_IP4_IPSEC_ESP_V2",
   203  		6:  "FLOW_TYPE_IP4_IPSEC_AH_V2",
   204  		7:  "FLOW_TYPE_IP4_N_TUPLE_V2",
   205  		8:  "FLOW_TYPE_IP6_N_TUPLE_V2",
   206  		9:  "FLOW_TYPE_IP4_N_TUPLE_TAGGED_V2",
   207  		10: "FLOW_TYPE_IP6_N_TUPLE_TAGGED_V2",
   208  		11: "FLOW_TYPE_IP4_VXLAN_V2",
   209  		12: "FLOW_TYPE_IP6_VXLAN_V2",
   210  		13: "FLOW_TYPE_IP4_GTPC_V2",
   211  		14: "FLOW_TYPE_IP4_GTPU_V2",
   212  		15: "FLOW_TYPE_GENERIC_V2",
   213  	}
   214  	FlowTypeV2_value = map[string]uint32{
   215  		"FLOW_TYPE_ETHERNET_V2":           1,
   216  		"FLOW_TYPE_IP4_V2":                2,
   217  		"FLOW_TYPE_IP6_V2":                3,
   218  		"FLOW_TYPE_IP4_L2TPV3OIP_V2":      4,
   219  		"FLOW_TYPE_IP4_IPSEC_ESP_V2":      5,
   220  		"FLOW_TYPE_IP4_IPSEC_AH_V2":       6,
   221  		"FLOW_TYPE_IP4_N_TUPLE_V2":        7,
   222  		"FLOW_TYPE_IP6_N_TUPLE_V2":        8,
   223  		"FLOW_TYPE_IP4_N_TUPLE_TAGGED_V2": 9,
   224  		"FLOW_TYPE_IP6_N_TUPLE_TAGGED_V2": 10,
   225  		"FLOW_TYPE_IP4_VXLAN_V2":          11,
   226  		"FLOW_TYPE_IP6_VXLAN_V2":          12,
   227  		"FLOW_TYPE_IP4_GTPC_V2":           13,
   228  		"FLOW_TYPE_IP4_GTPU_V2":           14,
   229  		"FLOW_TYPE_GENERIC_V2":            15,
   230  	}
   231  )
   232  
   233  func (x FlowTypeV2) String() string {
   234  	s, ok := FlowTypeV2_name[uint32(x)]
   235  	if ok {
   236  		return s
   237  	}
   238  	return "FlowTypeV2(" + strconv.Itoa(int(x)) + ")"
   239  }
   240  
   241  // RssFunction defines enum 'rss_function'.
   242  type RssFunction uint32
   243  
   244  const (
   245  	RSS_FUNC_DEFAULT            RssFunction = 0
   246  	RSS_FUNC_TOEPLITZ           RssFunction = 1
   247  	RSS_FUNC_SIMPLE_XOR         RssFunction = 2
   248  	RSS_FUNC_SYMMETRIC_TOEPLITZ RssFunction = 3
   249  )
   250  
   251  var (
   252  	RssFunction_name = map[uint32]string{
   253  		0: "RSS_FUNC_DEFAULT",
   254  		1: "RSS_FUNC_TOEPLITZ",
   255  		2: "RSS_FUNC_SIMPLE_XOR",
   256  		3: "RSS_FUNC_SYMMETRIC_TOEPLITZ",
   257  	}
   258  	RssFunction_value = map[string]uint32{
   259  		"RSS_FUNC_DEFAULT":            0,
   260  		"RSS_FUNC_TOEPLITZ":           1,
   261  		"RSS_FUNC_SIMPLE_XOR":         2,
   262  		"RSS_FUNC_SYMMETRIC_TOEPLITZ": 3,
   263  	}
   264  )
   265  
   266  func (x RssFunction) String() string {
   267  	s, ok := RssFunction_name[uint32(x)]
   268  	if ok {
   269  		return s
   270  	}
   271  	return "RssFunction(" + strconv.Itoa(int(x)) + ")"
   272  }
   273  
   274  // FlowEthernet defines type 'flow_ethernet'.
   275  type FlowEthernet struct {
   276  	Foo     int32                     `binapi:"i32,name=foo" json:"foo,omitempty"`
   277  	SrcAddr ethernet_types.MacAddress `binapi:"mac_address,name=src_addr" json:"src_addr,omitempty"`
   278  	DstAddr ethernet_types.MacAddress `binapi:"mac_address,name=dst_addr" json:"dst_addr,omitempty"`
   279  	Type    uint16                    `binapi:"u16,name=type" json:"type,omitempty"`
   280  }
   281  
   282  // FlowGeneric defines type 'flow_generic'.
   283  type FlowGeneric struct {
   284  	Foo     int32          `binapi:"i32,name=foo" json:"foo,omitempty"`
   285  	Pattern GenericPattern `binapi:"generic_pattern,name=pattern" json:"pattern,omitempty"`
   286  }
   287  
   288  // FlowIP4 defines type 'flow_ip4'.
   289  type FlowIP4 struct {
   290  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   291  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   292  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   293  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   294  }
   295  
   296  // FlowIP4Gtpc defines type 'flow_ip4_gtpc'.
   297  type FlowIP4Gtpc struct {
   298  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   299  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   300  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   301  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   302  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   303  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   304  	Teid     uint32                     `binapi:"u32,name=teid" json:"teid,omitempty"`
   305  }
   306  
   307  // FlowIP4Gtpu defines type 'flow_ip4_gtpu'.
   308  type FlowIP4Gtpu struct {
   309  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   310  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   311  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   312  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   313  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   314  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   315  	Teid     uint32                     `binapi:"u32,name=teid" json:"teid,omitempty"`
   316  }
   317  
   318  // FlowIP4IpsecAh defines type 'flow_ip4_ipsec_ah'.
   319  type FlowIP4IpsecAh struct {
   320  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   321  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   322  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   323  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   324  	Spi      uint32                     `binapi:"u32,name=spi" json:"spi,omitempty"`
   325  }
   326  
   327  // FlowIP4IpsecEsp defines type 'flow_ip4_ipsec_esp'.
   328  type FlowIP4IpsecEsp struct {
   329  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   330  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   331  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   332  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   333  	Spi      uint32                     `binapi:"u32,name=spi" json:"spi,omitempty"`
   334  }
   335  
   336  // FlowIP4L2tpv3oip defines type 'flow_ip4_l2tpv3oip'.
   337  type FlowIP4L2tpv3oip struct {
   338  	Foo       int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   339  	SrcAddr   ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   340  	DstAddr   ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   341  	Protocol  IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   342  	SessionID uint32                     `binapi:"u32,name=session_id" json:"session_id,omitempty"`
   343  }
   344  
   345  // FlowIP4NTuple defines type 'flow_ip4_n_tuple'.
   346  type FlowIP4NTuple struct {
   347  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   348  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   349  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   350  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   351  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   352  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   353  }
   354  
   355  // FlowIP4NTupleTagged defines type 'flow_ip4_n_tuple_tagged'.
   356  type FlowIP4NTupleTagged struct {
   357  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   358  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   359  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   360  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   361  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   362  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   363  }
   364  
   365  // FlowIP4Vxlan defines type 'flow_ip4_vxlan'.
   366  type FlowIP4Vxlan struct {
   367  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   368  	SrcAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   369  	DstAddr  ip_types.IP4AddressAndMask `binapi:"ip4_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   370  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   371  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   372  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   373  	Vni      uint32                     `binapi:"u32,name=vni" json:"vni,omitempty"`
   374  }
   375  
   376  // FlowIP6 defines type 'flow_ip6'.
   377  type FlowIP6 struct {
   378  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   379  	SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   380  	DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   381  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   382  }
   383  
   384  // FlowIP6NTuple defines type 'flow_ip6_n_tuple'.
   385  type FlowIP6NTuple struct {
   386  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   387  	SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   388  	DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   389  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   390  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   391  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   392  }
   393  
   394  // FlowIP6NTupleTagged defines type 'flow_ip6_n_tuple_tagged'.
   395  type FlowIP6NTupleTagged struct {
   396  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   397  	SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   398  	DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   399  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   400  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   401  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   402  }
   403  
   404  // FlowIP6Vxlan defines type 'flow_ip6_vxlan'.
   405  type FlowIP6Vxlan struct {
   406  	Foo      int32                      `binapi:"i32,name=foo" json:"foo,omitempty"`
   407  	SrcAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=src_addr" json:"src_addr,omitempty"`
   408  	DstAddr  ip_types.IP6AddressAndMask `binapi:"ip6_address_and_mask,name=dst_addr" json:"dst_addr,omitempty"`
   409  	Protocol IPProtAndMask              `binapi:"ip_prot_and_mask,name=protocol" json:"protocol,omitempty"`
   410  	SrcPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=src_port" json:"src_port,omitempty"`
   411  	DstPort  IPPortAndMask              `binapi:"ip_port_and_mask,name=dst_port" json:"dst_port,omitempty"`
   412  	Vni      uint32                     `binapi:"u32,name=vni" json:"vni,omitempty"`
   413  }
   414  
   415  // FlowRule defines type 'flow_rule'.
   416  type FlowRule struct {
   417  	Type                         FlowType   `binapi:"flow_type,name=type" json:"type,omitempty"`
   418  	Index                        uint32     `binapi:"u32,name=index" json:"index,omitempty"`
   419  	Actions                      FlowAction `binapi:"flow_action,name=actions" json:"actions,omitempty"`
   420  	MarkFlowID                   uint32     `binapi:"u32,name=mark_flow_id" json:"mark_flow_id,omitempty"`
   421  	RedirectNodeIndex            uint32     `binapi:"u32,name=redirect_node_index" json:"redirect_node_index,omitempty"`
   422  	RedirectDeviceInputNextIndex uint32     `binapi:"u32,name=redirect_device_input_next_index" json:"redirect_device_input_next_index,omitempty"`
   423  	RedirectQueue                uint32     `binapi:"u32,name=redirect_queue" json:"redirect_queue,omitempty"`
   424  	BufferAdvance                int32      `binapi:"i32,name=buffer_advance" json:"buffer_advance,omitempty"`
   425  	Flow                         FlowUnion  `binapi:"flow,name=flow" json:"flow,omitempty"`
   426  }
   427  
   428  // FlowRuleV2 defines type 'flow_rule_v2'.
   429  type FlowRuleV2 struct {
   430  	Type                         FlowTypeV2   `binapi:"flow_type_v2,name=type" json:"type,omitempty"`
   431  	Index                        uint32       `binapi:"u32,name=index" json:"index,omitempty"`
   432  	Actions                      FlowActionV2 `binapi:"flow_action_v2,name=actions" json:"actions,omitempty"`
   433  	MarkFlowID                   uint32       `binapi:"u32,name=mark_flow_id" json:"mark_flow_id,omitempty"`
   434  	RedirectNodeIndex            uint32       `binapi:"u32,name=redirect_node_index" json:"redirect_node_index,omitempty"`
   435  	RedirectDeviceInputNextIndex uint32       `binapi:"u32,name=redirect_device_input_next_index" json:"redirect_device_input_next_index,omitempty"`
   436  	RedirectQueue                uint32       `binapi:"u32,name=redirect_queue" json:"redirect_queue,omitempty"`
   437  	QueueIndex                   uint32       `binapi:"u32,name=queue_index" json:"queue_index,omitempty"`
   438  	QueueNum                     uint32       `binapi:"u32,name=queue_num" json:"queue_num,omitempty"`
   439  	BufferAdvance                int32        `binapi:"i32,name=buffer_advance" json:"buffer_advance,omitempty"`
   440  	RssTypes                     uint64       `binapi:"u64,name=rss_types" json:"rss_types,omitempty"`
   441  	RssFun                       RssFunction  `binapi:"rss_function,name=rss_fun" json:"rss_fun,omitempty"`
   442  	Flow                         FlowV2Union  `binapi:"flow_v2,name=flow" json:"flow,omitempty"`
   443  }
   444  
   445  // GenericPattern defines type 'generic_pattern'.
   446  type GenericPattern struct {
   447  	Spec []byte `binapi:"u8[1024],name=spec" json:"spec,omitempty"`
   448  	Mask []byte `binapi:"u8[1024],name=mask" json:"mask,omitempty"`
   449  }
   450  
   451  // IPPortAndMask defines type 'ip_port_and_mask'.
   452  type IPPortAndMask struct {
   453  	Port uint16 `binapi:"u16,name=port" json:"port,omitempty"`
   454  	Mask uint16 `binapi:"u16,name=mask" json:"mask,omitempty"`
   455  }
   456  
   457  // IPProtAndMask defines type 'ip_prot_and_mask'.
   458  type IPProtAndMask struct {
   459  	Prot ip_types.IPProto `binapi:"ip_proto,name=prot" json:"prot,omitempty"`
   460  	Mask uint8            `binapi:"u8,name=mask" json:"mask,omitempty"`
   461  }
   462  
   463  // FlowUnion defines union 'flow'.
   464  type FlowUnion struct {
   465  	// FlowUnion can be one of:
   466  	// - Ethernet *FlowEthernet
   467  	// - IP4 *FlowIP4
   468  	// - IP6 *FlowIP6
   469  	// - IP4L2tpv3oip *FlowIP4L2tpv3oip
   470  	// - IP4IpsecEsp *FlowIP4IpsecEsp
   471  	// - IP4IpsecAh *FlowIP4IpsecAh
   472  	// - IP4NTuple *FlowIP4NTuple
   473  	// - IP6NTuple *FlowIP6NTuple
   474  	// - IP4NTupleTagged *FlowIP4NTupleTagged
   475  	// - IP6NTupleTagged *FlowIP6NTupleTagged
   476  	// - IP4Vxlan *FlowIP4Vxlan
   477  	// - IP6Vxlan *FlowIP6Vxlan
   478  	// - IP4Gtpc *FlowIP4Gtpc
   479  	// - IP4Gtpu *FlowIP4Gtpu
   480  	XXX_UnionData [82]byte
   481  }
   482  
   483  func FlowUnionEthernet(a FlowEthernet) (u FlowUnion) {
   484  	u.SetEthernet(a)
   485  	return
   486  }
   487  func (u *FlowUnion) SetEthernet(a FlowEthernet) {
   488  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   489  	buf.EncodeInt32(a.Foo)
   490  	buf.EncodeBytes(a.SrcAddr[:], 6)
   491  	buf.EncodeBytes(a.DstAddr[:], 6)
   492  	buf.EncodeUint16(a.Type)
   493  }
   494  func (u *FlowUnion) GetEthernet() (a FlowEthernet) {
   495  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   496  	a.Foo = buf.DecodeInt32()
   497  	copy(a.SrcAddr[:], buf.DecodeBytes(6))
   498  	copy(a.DstAddr[:], buf.DecodeBytes(6))
   499  	a.Type = buf.DecodeUint16()
   500  	return
   501  }
   502  
   503  func FlowUnionIP4(a FlowIP4) (u FlowUnion) {
   504  	u.SetIP4(a)
   505  	return
   506  }
   507  func (u *FlowUnion) SetIP4(a FlowIP4) {
   508  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   509  	buf.EncodeInt32(a.Foo)
   510  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   511  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   512  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   513  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   514  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   515  	buf.EncodeUint8(a.Protocol.Mask)
   516  }
   517  func (u *FlowUnion) GetIP4() (a FlowIP4) {
   518  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   519  	a.Foo = buf.DecodeInt32()
   520  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   521  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   522  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   523  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   524  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   525  	a.Protocol.Mask = buf.DecodeUint8()
   526  	return
   527  }
   528  
   529  func FlowUnionIP6(a FlowIP6) (u FlowUnion) {
   530  	u.SetIP6(a)
   531  	return
   532  }
   533  func (u *FlowUnion) SetIP6(a FlowIP6) {
   534  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   535  	buf.EncodeInt32(a.Foo)
   536  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
   537  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
   538  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
   539  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
   540  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   541  	buf.EncodeUint8(a.Protocol.Mask)
   542  }
   543  func (u *FlowUnion) GetIP6() (a FlowIP6) {
   544  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   545  	a.Foo = buf.DecodeInt32()
   546  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
   547  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
   548  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
   549  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
   550  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   551  	a.Protocol.Mask = buf.DecodeUint8()
   552  	return
   553  }
   554  
   555  func FlowUnionIP4L2tpv3oip(a FlowIP4L2tpv3oip) (u FlowUnion) {
   556  	u.SetIP4L2tpv3oip(a)
   557  	return
   558  }
   559  func (u *FlowUnion) SetIP4L2tpv3oip(a FlowIP4L2tpv3oip) {
   560  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   561  	buf.EncodeInt32(a.Foo)
   562  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   563  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   564  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   565  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   566  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   567  	buf.EncodeUint8(a.Protocol.Mask)
   568  	buf.EncodeUint32(a.SessionID)
   569  }
   570  func (u *FlowUnion) GetIP4L2tpv3oip() (a FlowIP4L2tpv3oip) {
   571  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   572  	a.Foo = buf.DecodeInt32()
   573  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   574  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   575  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   576  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   577  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   578  	a.Protocol.Mask = buf.DecodeUint8()
   579  	a.SessionID = buf.DecodeUint32()
   580  	return
   581  }
   582  
   583  func FlowUnionIP4IpsecEsp(a FlowIP4IpsecEsp) (u FlowUnion) {
   584  	u.SetIP4IpsecEsp(a)
   585  	return
   586  }
   587  func (u *FlowUnion) SetIP4IpsecEsp(a FlowIP4IpsecEsp) {
   588  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   589  	buf.EncodeInt32(a.Foo)
   590  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   591  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   592  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   593  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   594  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   595  	buf.EncodeUint8(a.Protocol.Mask)
   596  	buf.EncodeUint32(a.Spi)
   597  }
   598  func (u *FlowUnion) GetIP4IpsecEsp() (a FlowIP4IpsecEsp) {
   599  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   600  	a.Foo = buf.DecodeInt32()
   601  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   602  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   603  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   604  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   605  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   606  	a.Protocol.Mask = buf.DecodeUint8()
   607  	a.Spi = buf.DecodeUint32()
   608  	return
   609  }
   610  
   611  func FlowUnionIP4IpsecAh(a FlowIP4IpsecAh) (u FlowUnion) {
   612  	u.SetIP4IpsecAh(a)
   613  	return
   614  }
   615  func (u *FlowUnion) SetIP4IpsecAh(a FlowIP4IpsecAh) {
   616  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   617  	buf.EncodeInt32(a.Foo)
   618  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   619  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   620  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   621  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   622  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   623  	buf.EncodeUint8(a.Protocol.Mask)
   624  	buf.EncodeUint32(a.Spi)
   625  }
   626  func (u *FlowUnion) GetIP4IpsecAh() (a FlowIP4IpsecAh) {
   627  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   628  	a.Foo = buf.DecodeInt32()
   629  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   630  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   631  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   632  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   633  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   634  	a.Protocol.Mask = buf.DecodeUint8()
   635  	a.Spi = buf.DecodeUint32()
   636  	return
   637  }
   638  
   639  func FlowUnionIP4NTuple(a FlowIP4NTuple) (u FlowUnion) {
   640  	u.SetIP4NTuple(a)
   641  	return
   642  }
   643  func (u *FlowUnion) SetIP4NTuple(a FlowIP4NTuple) {
   644  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   645  	buf.EncodeInt32(a.Foo)
   646  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   647  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   648  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   649  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   650  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   651  	buf.EncodeUint8(a.Protocol.Mask)
   652  	buf.EncodeUint16(a.SrcPort.Port)
   653  	buf.EncodeUint16(a.SrcPort.Mask)
   654  	buf.EncodeUint16(a.DstPort.Port)
   655  	buf.EncodeUint16(a.DstPort.Mask)
   656  }
   657  func (u *FlowUnion) GetIP4NTuple() (a FlowIP4NTuple) {
   658  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   659  	a.Foo = buf.DecodeInt32()
   660  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   661  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   662  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   663  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   664  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   665  	a.Protocol.Mask = buf.DecodeUint8()
   666  	a.SrcPort.Port = buf.DecodeUint16()
   667  	a.SrcPort.Mask = buf.DecodeUint16()
   668  	a.DstPort.Port = buf.DecodeUint16()
   669  	a.DstPort.Mask = buf.DecodeUint16()
   670  	return
   671  }
   672  
   673  func FlowUnionIP6NTuple(a FlowIP6NTuple) (u FlowUnion) {
   674  	u.SetIP6NTuple(a)
   675  	return
   676  }
   677  func (u *FlowUnion) SetIP6NTuple(a FlowIP6NTuple) {
   678  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   679  	buf.EncodeInt32(a.Foo)
   680  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
   681  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
   682  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
   683  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
   684  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   685  	buf.EncodeUint8(a.Protocol.Mask)
   686  	buf.EncodeUint16(a.SrcPort.Port)
   687  	buf.EncodeUint16(a.SrcPort.Mask)
   688  	buf.EncodeUint16(a.DstPort.Port)
   689  	buf.EncodeUint16(a.DstPort.Mask)
   690  }
   691  func (u *FlowUnion) GetIP6NTuple() (a FlowIP6NTuple) {
   692  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   693  	a.Foo = buf.DecodeInt32()
   694  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
   695  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
   696  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
   697  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
   698  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   699  	a.Protocol.Mask = buf.DecodeUint8()
   700  	a.SrcPort.Port = buf.DecodeUint16()
   701  	a.SrcPort.Mask = buf.DecodeUint16()
   702  	a.DstPort.Port = buf.DecodeUint16()
   703  	a.DstPort.Mask = buf.DecodeUint16()
   704  	return
   705  }
   706  
   707  func FlowUnionIP4NTupleTagged(a FlowIP4NTupleTagged) (u FlowUnion) {
   708  	u.SetIP4NTupleTagged(a)
   709  	return
   710  }
   711  func (u *FlowUnion) SetIP4NTupleTagged(a FlowIP4NTupleTagged) {
   712  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   713  	buf.EncodeInt32(a.Foo)
   714  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   715  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   716  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   717  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   718  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   719  	buf.EncodeUint8(a.Protocol.Mask)
   720  	buf.EncodeUint16(a.SrcPort.Port)
   721  	buf.EncodeUint16(a.SrcPort.Mask)
   722  	buf.EncodeUint16(a.DstPort.Port)
   723  	buf.EncodeUint16(a.DstPort.Mask)
   724  }
   725  func (u *FlowUnion) GetIP4NTupleTagged() (a FlowIP4NTupleTagged) {
   726  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   727  	a.Foo = buf.DecodeInt32()
   728  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   729  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   730  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   731  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   732  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   733  	a.Protocol.Mask = buf.DecodeUint8()
   734  	a.SrcPort.Port = buf.DecodeUint16()
   735  	a.SrcPort.Mask = buf.DecodeUint16()
   736  	a.DstPort.Port = buf.DecodeUint16()
   737  	a.DstPort.Mask = buf.DecodeUint16()
   738  	return
   739  }
   740  
   741  func FlowUnionIP6NTupleTagged(a FlowIP6NTupleTagged) (u FlowUnion) {
   742  	u.SetIP6NTupleTagged(a)
   743  	return
   744  }
   745  func (u *FlowUnion) SetIP6NTupleTagged(a FlowIP6NTupleTagged) {
   746  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   747  	buf.EncodeInt32(a.Foo)
   748  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
   749  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
   750  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
   751  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
   752  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   753  	buf.EncodeUint8(a.Protocol.Mask)
   754  	buf.EncodeUint16(a.SrcPort.Port)
   755  	buf.EncodeUint16(a.SrcPort.Mask)
   756  	buf.EncodeUint16(a.DstPort.Port)
   757  	buf.EncodeUint16(a.DstPort.Mask)
   758  }
   759  func (u *FlowUnion) GetIP6NTupleTagged() (a FlowIP6NTupleTagged) {
   760  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   761  	a.Foo = buf.DecodeInt32()
   762  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
   763  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
   764  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
   765  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
   766  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   767  	a.Protocol.Mask = buf.DecodeUint8()
   768  	a.SrcPort.Port = buf.DecodeUint16()
   769  	a.SrcPort.Mask = buf.DecodeUint16()
   770  	a.DstPort.Port = buf.DecodeUint16()
   771  	a.DstPort.Mask = buf.DecodeUint16()
   772  	return
   773  }
   774  
   775  func FlowUnionIP4Vxlan(a FlowIP4Vxlan) (u FlowUnion) {
   776  	u.SetIP4Vxlan(a)
   777  	return
   778  }
   779  func (u *FlowUnion) SetIP4Vxlan(a FlowIP4Vxlan) {
   780  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   781  	buf.EncodeInt32(a.Foo)
   782  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   783  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   784  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   785  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   786  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   787  	buf.EncodeUint8(a.Protocol.Mask)
   788  	buf.EncodeUint16(a.SrcPort.Port)
   789  	buf.EncodeUint16(a.SrcPort.Mask)
   790  	buf.EncodeUint16(a.DstPort.Port)
   791  	buf.EncodeUint16(a.DstPort.Mask)
   792  	buf.EncodeUint32(a.Vni)
   793  }
   794  func (u *FlowUnion) GetIP4Vxlan() (a FlowIP4Vxlan) {
   795  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   796  	a.Foo = buf.DecodeInt32()
   797  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   798  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   799  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   800  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   801  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   802  	a.Protocol.Mask = buf.DecodeUint8()
   803  	a.SrcPort.Port = buf.DecodeUint16()
   804  	a.SrcPort.Mask = buf.DecodeUint16()
   805  	a.DstPort.Port = buf.DecodeUint16()
   806  	a.DstPort.Mask = buf.DecodeUint16()
   807  	a.Vni = buf.DecodeUint32()
   808  	return
   809  }
   810  
   811  func FlowUnionIP6Vxlan(a FlowIP6Vxlan) (u FlowUnion) {
   812  	u.SetIP6Vxlan(a)
   813  	return
   814  }
   815  func (u *FlowUnion) SetIP6Vxlan(a FlowIP6Vxlan) {
   816  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   817  	buf.EncodeInt32(a.Foo)
   818  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
   819  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
   820  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
   821  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
   822  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   823  	buf.EncodeUint8(a.Protocol.Mask)
   824  	buf.EncodeUint16(a.SrcPort.Port)
   825  	buf.EncodeUint16(a.SrcPort.Mask)
   826  	buf.EncodeUint16(a.DstPort.Port)
   827  	buf.EncodeUint16(a.DstPort.Mask)
   828  	buf.EncodeUint32(a.Vni)
   829  }
   830  func (u *FlowUnion) GetIP6Vxlan() (a FlowIP6Vxlan) {
   831  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   832  	a.Foo = buf.DecodeInt32()
   833  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
   834  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
   835  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
   836  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
   837  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   838  	a.Protocol.Mask = buf.DecodeUint8()
   839  	a.SrcPort.Port = buf.DecodeUint16()
   840  	a.SrcPort.Mask = buf.DecodeUint16()
   841  	a.DstPort.Port = buf.DecodeUint16()
   842  	a.DstPort.Mask = buf.DecodeUint16()
   843  	a.Vni = buf.DecodeUint32()
   844  	return
   845  }
   846  
   847  func FlowUnionIP4Gtpc(a FlowIP4Gtpc) (u FlowUnion) {
   848  	u.SetIP4Gtpc(a)
   849  	return
   850  }
   851  func (u *FlowUnion) SetIP4Gtpc(a FlowIP4Gtpc) {
   852  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   853  	buf.EncodeInt32(a.Foo)
   854  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   855  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   856  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   857  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   858  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   859  	buf.EncodeUint8(a.Protocol.Mask)
   860  	buf.EncodeUint16(a.SrcPort.Port)
   861  	buf.EncodeUint16(a.SrcPort.Mask)
   862  	buf.EncodeUint16(a.DstPort.Port)
   863  	buf.EncodeUint16(a.DstPort.Mask)
   864  	buf.EncodeUint32(a.Teid)
   865  }
   866  func (u *FlowUnion) GetIP4Gtpc() (a FlowIP4Gtpc) {
   867  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   868  	a.Foo = buf.DecodeInt32()
   869  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   870  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   871  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   872  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   873  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   874  	a.Protocol.Mask = buf.DecodeUint8()
   875  	a.SrcPort.Port = buf.DecodeUint16()
   876  	a.SrcPort.Mask = buf.DecodeUint16()
   877  	a.DstPort.Port = buf.DecodeUint16()
   878  	a.DstPort.Mask = buf.DecodeUint16()
   879  	a.Teid = buf.DecodeUint32()
   880  	return
   881  }
   882  
   883  func FlowUnionIP4Gtpu(a FlowIP4Gtpu) (u FlowUnion) {
   884  	u.SetIP4Gtpu(a)
   885  	return
   886  }
   887  func (u *FlowUnion) SetIP4Gtpu(a FlowIP4Gtpu) {
   888  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   889  	buf.EncodeInt32(a.Foo)
   890  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   891  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   892  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   893  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   894  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   895  	buf.EncodeUint8(a.Protocol.Mask)
   896  	buf.EncodeUint16(a.SrcPort.Port)
   897  	buf.EncodeUint16(a.SrcPort.Mask)
   898  	buf.EncodeUint16(a.DstPort.Port)
   899  	buf.EncodeUint16(a.DstPort.Mask)
   900  	buf.EncodeUint32(a.Teid)
   901  }
   902  func (u *FlowUnion) GetIP4Gtpu() (a FlowIP4Gtpu) {
   903  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   904  	a.Foo = buf.DecodeInt32()
   905  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   906  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   907  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   908  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   909  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   910  	a.Protocol.Mask = buf.DecodeUint8()
   911  	a.SrcPort.Port = buf.DecodeUint16()
   912  	a.SrcPort.Mask = buf.DecodeUint16()
   913  	a.DstPort.Port = buf.DecodeUint16()
   914  	a.DstPort.Mask = buf.DecodeUint16()
   915  	a.Teid = buf.DecodeUint32()
   916  	return
   917  }
   918  
   919  // FlowV2Union defines union 'flow_v2'.
   920  type FlowV2Union struct {
   921  	// FlowV2Union can be one of:
   922  	// - Ethernet *FlowEthernet
   923  	// - IP4 *FlowIP4
   924  	// - IP6 *FlowIP6
   925  	// - IP4L2tpv3oip *FlowIP4L2tpv3oip
   926  	// - IP4IpsecEsp *FlowIP4IpsecEsp
   927  	// - IP4IpsecAh *FlowIP4IpsecAh
   928  	// - IP4NTuple *FlowIP4NTuple
   929  	// - IP6NTuple *FlowIP6NTuple
   930  	// - IP4NTupleTagged *FlowIP4NTupleTagged
   931  	// - IP6NTupleTagged *FlowIP6NTupleTagged
   932  	// - IP4Vxlan *FlowIP4Vxlan
   933  	// - IP6Vxlan *FlowIP6Vxlan
   934  	// - IP4Gtpc *FlowIP4Gtpc
   935  	// - IP4Gtpu *FlowIP4Gtpu
   936  	// - Generic *FlowGeneric
   937  	XXX_UnionData [2052]byte
   938  }
   939  
   940  func FlowV2UnionEthernet(a FlowEthernet) (u FlowV2Union) {
   941  	u.SetEthernet(a)
   942  	return
   943  }
   944  func (u *FlowV2Union) SetEthernet(a FlowEthernet) {
   945  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   946  	buf.EncodeInt32(a.Foo)
   947  	buf.EncodeBytes(a.SrcAddr[:], 6)
   948  	buf.EncodeBytes(a.DstAddr[:], 6)
   949  	buf.EncodeUint16(a.Type)
   950  }
   951  func (u *FlowV2Union) GetEthernet() (a FlowEthernet) {
   952  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   953  	a.Foo = buf.DecodeInt32()
   954  	copy(a.SrcAddr[:], buf.DecodeBytes(6))
   955  	copy(a.DstAddr[:], buf.DecodeBytes(6))
   956  	a.Type = buf.DecodeUint16()
   957  	return
   958  }
   959  
   960  func FlowV2UnionIP4(a FlowIP4) (u FlowV2Union) {
   961  	u.SetIP4(a)
   962  	return
   963  }
   964  func (u *FlowV2Union) SetIP4(a FlowIP4) {
   965  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   966  	buf.EncodeInt32(a.Foo)
   967  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
   968  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
   969  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
   970  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
   971  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   972  	buf.EncodeUint8(a.Protocol.Mask)
   973  }
   974  func (u *FlowV2Union) GetIP4() (a FlowIP4) {
   975  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   976  	a.Foo = buf.DecodeInt32()
   977  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
   978  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
   979  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
   980  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
   981  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
   982  	a.Protocol.Mask = buf.DecodeUint8()
   983  	return
   984  }
   985  
   986  func FlowV2UnionIP6(a FlowIP6) (u FlowV2Union) {
   987  	u.SetIP6(a)
   988  	return
   989  }
   990  func (u *FlowV2Union) SetIP6(a FlowIP6) {
   991  	buf := codec.NewBuffer(u.XXX_UnionData[:])
   992  	buf.EncodeInt32(a.Foo)
   993  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
   994  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
   995  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
   996  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
   997  	buf.EncodeUint8(uint8(a.Protocol.Prot))
   998  	buf.EncodeUint8(a.Protocol.Mask)
   999  }
  1000  func (u *FlowV2Union) GetIP6() (a FlowIP6) {
  1001  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1002  	a.Foo = buf.DecodeInt32()
  1003  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
  1004  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
  1005  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
  1006  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
  1007  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1008  	a.Protocol.Mask = buf.DecodeUint8()
  1009  	return
  1010  }
  1011  
  1012  func FlowV2UnionIP4L2tpv3oip(a FlowIP4L2tpv3oip) (u FlowV2Union) {
  1013  	u.SetIP4L2tpv3oip(a)
  1014  	return
  1015  }
  1016  func (u *FlowV2Union) SetIP4L2tpv3oip(a FlowIP4L2tpv3oip) {
  1017  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1018  	buf.EncodeInt32(a.Foo)
  1019  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1020  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1021  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1022  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1023  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1024  	buf.EncodeUint8(a.Protocol.Mask)
  1025  	buf.EncodeUint32(a.SessionID)
  1026  }
  1027  func (u *FlowV2Union) GetIP4L2tpv3oip() (a FlowIP4L2tpv3oip) {
  1028  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1029  	a.Foo = buf.DecodeInt32()
  1030  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1031  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1032  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1033  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1034  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1035  	a.Protocol.Mask = buf.DecodeUint8()
  1036  	a.SessionID = buf.DecodeUint32()
  1037  	return
  1038  }
  1039  
  1040  func FlowV2UnionIP4IpsecEsp(a FlowIP4IpsecEsp) (u FlowV2Union) {
  1041  	u.SetIP4IpsecEsp(a)
  1042  	return
  1043  }
  1044  func (u *FlowV2Union) SetIP4IpsecEsp(a FlowIP4IpsecEsp) {
  1045  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1046  	buf.EncodeInt32(a.Foo)
  1047  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1048  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1049  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1050  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1051  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1052  	buf.EncodeUint8(a.Protocol.Mask)
  1053  	buf.EncodeUint32(a.Spi)
  1054  }
  1055  func (u *FlowV2Union) GetIP4IpsecEsp() (a FlowIP4IpsecEsp) {
  1056  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1057  	a.Foo = buf.DecodeInt32()
  1058  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1059  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1060  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1061  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1062  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1063  	a.Protocol.Mask = buf.DecodeUint8()
  1064  	a.Spi = buf.DecodeUint32()
  1065  	return
  1066  }
  1067  
  1068  func FlowV2UnionIP4IpsecAh(a FlowIP4IpsecAh) (u FlowV2Union) {
  1069  	u.SetIP4IpsecAh(a)
  1070  	return
  1071  }
  1072  func (u *FlowV2Union) SetIP4IpsecAh(a FlowIP4IpsecAh) {
  1073  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1074  	buf.EncodeInt32(a.Foo)
  1075  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1076  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1077  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1078  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1079  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1080  	buf.EncodeUint8(a.Protocol.Mask)
  1081  	buf.EncodeUint32(a.Spi)
  1082  }
  1083  func (u *FlowV2Union) GetIP4IpsecAh() (a FlowIP4IpsecAh) {
  1084  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1085  	a.Foo = buf.DecodeInt32()
  1086  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1087  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1088  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1089  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1090  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1091  	a.Protocol.Mask = buf.DecodeUint8()
  1092  	a.Spi = buf.DecodeUint32()
  1093  	return
  1094  }
  1095  
  1096  func FlowV2UnionIP4NTuple(a FlowIP4NTuple) (u FlowV2Union) {
  1097  	u.SetIP4NTuple(a)
  1098  	return
  1099  }
  1100  func (u *FlowV2Union) SetIP4NTuple(a FlowIP4NTuple) {
  1101  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1102  	buf.EncodeInt32(a.Foo)
  1103  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1104  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1105  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1106  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1107  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1108  	buf.EncodeUint8(a.Protocol.Mask)
  1109  	buf.EncodeUint16(a.SrcPort.Port)
  1110  	buf.EncodeUint16(a.SrcPort.Mask)
  1111  	buf.EncodeUint16(a.DstPort.Port)
  1112  	buf.EncodeUint16(a.DstPort.Mask)
  1113  }
  1114  func (u *FlowV2Union) GetIP4NTuple() (a FlowIP4NTuple) {
  1115  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1116  	a.Foo = buf.DecodeInt32()
  1117  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1118  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1119  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1120  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1121  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1122  	a.Protocol.Mask = buf.DecodeUint8()
  1123  	a.SrcPort.Port = buf.DecodeUint16()
  1124  	a.SrcPort.Mask = buf.DecodeUint16()
  1125  	a.DstPort.Port = buf.DecodeUint16()
  1126  	a.DstPort.Mask = buf.DecodeUint16()
  1127  	return
  1128  }
  1129  
  1130  func FlowV2UnionIP6NTuple(a FlowIP6NTuple) (u FlowV2Union) {
  1131  	u.SetIP6NTuple(a)
  1132  	return
  1133  }
  1134  func (u *FlowV2Union) SetIP6NTuple(a FlowIP6NTuple) {
  1135  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1136  	buf.EncodeInt32(a.Foo)
  1137  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
  1138  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
  1139  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
  1140  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
  1141  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1142  	buf.EncodeUint8(a.Protocol.Mask)
  1143  	buf.EncodeUint16(a.SrcPort.Port)
  1144  	buf.EncodeUint16(a.SrcPort.Mask)
  1145  	buf.EncodeUint16(a.DstPort.Port)
  1146  	buf.EncodeUint16(a.DstPort.Mask)
  1147  }
  1148  func (u *FlowV2Union) GetIP6NTuple() (a FlowIP6NTuple) {
  1149  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1150  	a.Foo = buf.DecodeInt32()
  1151  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
  1152  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
  1153  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
  1154  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
  1155  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1156  	a.Protocol.Mask = buf.DecodeUint8()
  1157  	a.SrcPort.Port = buf.DecodeUint16()
  1158  	a.SrcPort.Mask = buf.DecodeUint16()
  1159  	a.DstPort.Port = buf.DecodeUint16()
  1160  	a.DstPort.Mask = buf.DecodeUint16()
  1161  	return
  1162  }
  1163  
  1164  func FlowV2UnionIP4NTupleTagged(a FlowIP4NTupleTagged) (u FlowV2Union) {
  1165  	u.SetIP4NTupleTagged(a)
  1166  	return
  1167  }
  1168  func (u *FlowV2Union) SetIP4NTupleTagged(a FlowIP4NTupleTagged) {
  1169  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1170  	buf.EncodeInt32(a.Foo)
  1171  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1172  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1173  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1174  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1175  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1176  	buf.EncodeUint8(a.Protocol.Mask)
  1177  	buf.EncodeUint16(a.SrcPort.Port)
  1178  	buf.EncodeUint16(a.SrcPort.Mask)
  1179  	buf.EncodeUint16(a.DstPort.Port)
  1180  	buf.EncodeUint16(a.DstPort.Mask)
  1181  }
  1182  func (u *FlowV2Union) GetIP4NTupleTagged() (a FlowIP4NTupleTagged) {
  1183  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1184  	a.Foo = buf.DecodeInt32()
  1185  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1186  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1187  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1188  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1189  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1190  	a.Protocol.Mask = buf.DecodeUint8()
  1191  	a.SrcPort.Port = buf.DecodeUint16()
  1192  	a.SrcPort.Mask = buf.DecodeUint16()
  1193  	a.DstPort.Port = buf.DecodeUint16()
  1194  	a.DstPort.Mask = buf.DecodeUint16()
  1195  	return
  1196  }
  1197  
  1198  func FlowV2UnionIP6NTupleTagged(a FlowIP6NTupleTagged) (u FlowV2Union) {
  1199  	u.SetIP6NTupleTagged(a)
  1200  	return
  1201  }
  1202  func (u *FlowV2Union) SetIP6NTupleTagged(a FlowIP6NTupleTagged) {
  1203  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1204  	buf.EncodeInt32(a.Foo)
  1205  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
  1206  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
  1207  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
  1208  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
  1209  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1210  	buf.EncodeUint8(a.Protocol.Mask)
  1211  	buf.EncodeUint16(a.SrcPort.Port)
  1212  	buf.EncodeUint16(a.SrcPort.Mask)
  1213  	buf.EncodeUint16(a.DstPort.Port)
  1214  	buf.EncodeUint16(a.DstPort.Mask)
  1215  }
  1216  func (u *FlowV2Union) GetIP6NTupleTagged() (a FlowIP6NTupleTagged) {
  1217  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1218  	a.Foo = buf.DecodeInt32()
  1219  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
  1220  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
  1221  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
  1222  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
  1223  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1224  	a.Protocol.Mask = buf.DecodeUint8()
  1225  	a.SrcPort.Port = buf.DecodeUint16()
  1226  	a.SrcPort.Mask = buf.DecodeUint16()
  1227  	a.DstPort.Port = buf.DecodeUint16()
  1228  	a.DstPort.Mask = buf.DecodeUint16()
  1229  	return
  1230  }
  1231  
  1232  func FlowV2UnionIP4Vxlan(a FlowIP4Vxlan) (u FlowV2Union) {
  1233  	u.SetIP4Vxlan(a)
  1234  	return
  1235  }
  1236  func (u *FlowV2Union) SetIP4Vxlan(a FlowIP4Vxlan) {
  1237  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1238  	buf.EncodeInt32(a.Foo)
  1239  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1240  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1241  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1242  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1243  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1244  	buf.EncodeUint8(a.Protocol.Mask)
  1245  	buf.EncodeUint16(a.SrcPort.Port)
  1246  	buf.EncodeUint16(a.SrcPort.Mask)
  1247  	buf.EncodeUint16(a.DstPort.Port)
  1248  	buf.EncodeUint16(a.DstPort.Mask)
  1249  	buf.EncodeUint32(a.Vni)
  1250  }
  1251  func (u *FlowV2Union) GetIP4Vxlan() (a FlowIP4Vxlan) {
  1252  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1253  	a.Foo = buf.DecodeInt32()
  1254  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1255  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1256  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1257  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1258  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1259  	a.Protocol.Mask = buf.DecodeUint8()
  1260  	a.SrcPort.Port = buf.DecodeUint16()
  1261  	a.SrcPort.Mask = buf.DecodeUint16()
  1262  	a.DstPort.Port = buf.DecodeUint16()
  1263  	a.DstPort.Mask = buf.DecodeUint16()
  1264  	a.Vni = buf.DecodeUint32()
  1265  	return
  1266  }
  1267  
  1268  func FlowV2UnionIP6Vxlan(a FlowIP6Vxlan) (u FlowV2Union) {
  1269  	u.SetIP6Vxlan(a)
  1270  	return
  1271  }
  1272  func (u *FlowV2Union) SetIP6Vxlan(a FlowIP6Vxlan) {
  1273  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1274  	buf.EncodeInt32(a.Foo)
  1275  	buf.EncodeBytes(a.SrcAddr.Addr[:], 16)
  1276  	buf.EncodeBytes(a.SrcAddr.Mask[:], 16)
  1277  	buf.EncodeBytes(a.DstAddr.Addr[:], 16)
  1278  	buf.EncodeBytes(a.DstAddr.Mask[:], 16)
  1279  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1280  	buf.EncodeUint8(a.Protocol.Mask)
  1281  	buf.EncodeUint16(a.SrcPort.Port)
  1282  	buf.EncodeUint16(a.SrcPort.Mask)
  1283  	buf.EncodeUint16(a.DstPort.Port)
  1284  	buf.EncodeUint16(a.DstPort.Mask)
  1285  	buf.EncodeUint32(a.Vni)
  1286  }
  1287  func (u *FlowV2Union) GetIP6Vxlan() (a FlowIP6Vxlan) {
  1288  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1289  	a.Foo = buf.DecodeInt32()
  1290  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(16))
  1291  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(16))
  1292  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(16))
  1293  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(16))
  1294  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1295  	a.Protocol.Mask = buf.DecodeUint8()
  1296  	a.SrcPort.Port = buf.DecodeUint16()
  1297  	a.SrcPort.Mask = buf.DecodeUint16()
  1298  	a.DstPort.Port = buf.DecodeUint16()
  1299  	a.DstPort.Mask = buf.DecodeUint16()
  1300  	a.Vni = buf.DecodeUint32()
  1301  	return
  1302  }
  1303  
  1304  func FlowV2UnionIP4Gtpc(a FlowIP4Gtpc) (u FlowV2Union) {
  1305  	u.SetIP4Gtpc(a)
  1306  	return
  1307  }
  1308  func (u *FlowV2Union) SetIP4Gtpc(a FlowIP4Gtpc) {
  1309  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1310  	buf.EncodeInt32(a.Foo)
  1311  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1312  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1313  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1314  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1315  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1316  	buf.EncodeUint8(a.Protocol.Mask)
  1317  	buf.EncodeUint16(a.SrcPort.Port)
  1318  	buf.EncodeUint16(a.SrcPort.Mask)
  1319  	buf.EncodeUint16(a.DstPort.Port)
  1320  	buf.EncodeUint16(a.DstPort.Mask)
  1321  	buf.EncodeUint32(a.Teid)
  1322  }
  1323  func (u *FlowV2Union) GetIP4Gtpc() (a FlowIP4Gtpc) {
  1324  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1325  	a.Foo = buf.DecodeInt32()
  1326  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1327  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1328  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1329  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1330  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1331  	a.Protocol.Mask = buf.DecodeUint8()
  1332  	a.SrcPort.Port = buf.DecodeUint16()
  1333  	a.SrcPort.Mask = buf.DecodeUint16()
  1334  	a.DstPort.Port = buf.DecodeUint16()
  1335  	a.DstPort.Mask = buf.DecodeUint16()
  1336  	a.Teid = buf.DecodeUint32()
  1337  	return
  1338  }
  1339  
  1340  func FlowV2UnionIP4Gtpu(a FlowIP4Gtpu) (u FlowV2Union) {
  1341  	u.SetIP4Gtpu(a)
  1342  	return
  1343  }
  1344  func (u *FlowV2Union) SetIP4Gtpu(a FlowIP4Gtpu) {
  1345  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1346  	buf.EncodeInt32(a.Foo)
  1347  	buf.EncodeBytes(a.SrcAddr.Addr[:], 4)
  1348  	buf.EncodeBytes(a.SrcAddr.Mask[:], 4)
  1349  	buf.EncodeBytes(a.DstAddr.Addr[:], 4)
  1350  	buf.EncodeBytes(a.DstAddr.Mask[:], 4)
  1351  	buf.EncodeUint8(uint8(a.Protocol.Prot))
  1352  	buf.EncodeUint8(a.Protocol.Mask)
  1353  	buf.EncodeUint16(a.SrcPort.Port)
  1354  	buf.EncodeUint16(a.SrcPort.Mask)
  1355  	buf.EncodeUint16(a.DstPort.Port)
  1356  	buf.EncodeUint16(a.DstPort.Mask)
  1357  	buf.EncodeUint32(a.Teid)
  1358  }
  1359  func (u *FlowV2Union) GetIP4Gtpu() (a FlowIP4Gtpu) {
  1360  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1361  	a.Foo = buf.DecodeInt32()
  1362  	copy(a.SrcAddr.Addr[:], buf.DecodeBytes(4))
  1363  	copy(a.SrcAddr.Mask[:], buf.DecodeBytes(4))
  1364  	copy(a.DstAddr.Addr[:], buf.DecodeBytes(4))
  1365  	copy(a.DstAddr.Mask[:], buf.DecodeBytes(4))
  1366  	a.Protocol.Prot = ip_types.IPProto(buf.DecodeUint8())
  1367  	a.Protocol.Mask = buf.DecodeUint8()
  1368  	a.SrcPort.Port = buf.DecodeUint16()
  1369  	a.SrcPort.Mask = buf.DecodeUint16()
  1370  	a.DstPort.Port = buf.DecodeUint16()
  1371  	a.DstPort.Mask = buf.DecodeUint16()
  1372  	a.Teid = buf.DecodeUint32()
  1373  	return
  1374  }
  1375  
  1376  func FlowV2UnionGeneric(a FlowGeneric) (u FlowV2Union) {
  1377  	u.SetGeneric(a)
  1378  	return
  1379  }
  1380  func (u *FlowV2Union) SetGeneric(a FlowGeneric) {
  1381  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1382  	buf.EncodeInt32(a.Foo)
  1383  	buf.EncodeBytes(a.Pattern.Spec, 1024)
  1384  	buf.EncodeBytes(a.Pattern.Mask, 1024)
  1385  }
  1386  func (u *FlowV2Union) GetGeneric() (a FlowGeneric) {
  1387  	buf := codec.NewBuffer(u.XXX_UnionData[:])
  1388  	a.Foo = buf.DecodeInt32()
  1389  	a.Pattern.Spec = make([]byte, 1024)
  1390  	copy(a.Pattern.Spec, buf.DecodeBytes(len(a.Pattern.Spec)))
  1391  	a.Pattern.Mask = make([]byte, 1024)
  1392  	copy(a.Pattern.Mask, buf.DecodeBytes(len(a.Pattern.Mask)))
  1393  	return
  1394  }