From 4c1cccf48cd144414c7233f167087aff770ef67b Mon Sep 17 00:00:00 2001 From: Vladimir Lavor Date: Mon, 1 Feb 2021 14:37:26 +0100 Subject: binapigen: added enumflags type Change-Id: I2f46504bd05862e415dab518fad349d08aedf919 Signed-off-by: Vladimir Lavor --- binapigen/binapigen.go | 10 +- binapigen/generate.go | 2 +- binapigen/generate_test.go | 17 +- binapigen/vppapi.go | 26 + binapigen/vppapi/api_schema.go | 9 +- binapigen/vppapi/parse_json.go | 15 + binapigen/vppapi/testdata/ip.api.json | 3540 +++++++++++++++++++++++---------- cmd/govpp/main.go | 4 +- 8 files changed, 2509 insertions(+), 1114 deletions(-) diff --git a/binapigen/binapigen.go b/binapigen/binapigen.go index de6a804..59aa84a 100644 --- a/binapigen/binapigen.go +++ b/binapigen/binapigen.go @@ -71,7 +71,10 @@ func newFile(gen *Generator, apifile *vppapi.File, packageName GoPackageName, im } for _, enumType := range apifile.EnumTypes { - file.Enums = append(file.Enums, newEnum(gen, file, enumType)) + file.Enums = append(file.Enums, newEnum(gen, file, enumType, false)) + } + for _, enumflagType := range apifile.EnumflagTypes { + file.Enums = append(file.Enums, newEnum(gen, file, enumflagType, true)) } for _, aliasType := range apifile.AliasTypes { file.Aliases = append(file.Aliases, newAlias(gen, file, aliasType)) @@ -167,15 +170,18 @@ type Enum struct { vppapi.EnumType GoIdent + + IsFlag bool } -func newEnum(gen *Generator, file *File, apitype vppapi.EnumType) *Enum { +func newEnum(gen *Generator, file *File, apitype vppapi.EnumType, isFlag bool) *Enum { typ := &Enum{ EnumType: apitype, GoIdent: GoIdent{ GoName: camelCaseName(apitype.Name), GoImportPath: file.GoImportPath, }, + IsFlag: isFlag, } gen.enumsByName[typ.Name] = typ return typ diff --git a/binapigen/generate.go b/binapigen/generate.go index bf6df81..a2f941a 100644 --- a/binapigen/generate.go +++ b/binapigen/generate.go @@ -178,7 +178,7 @@ func genEnum(g *GenFile, enum *Enum) { g.P(")") g.P() - if isEnumFlag(enum) { + if enum.IsFlag || isEnumFlag(enum) { size := BaseTypeSizes[enum.Type] * 8 g.P("func (x ", enum.GoName, ") String() string {") g.P(" s, ok := ", enum.GoName, "_name[", gotype, "(x)]") diff --git a/binapigen/generate_test.go b/binapigen/generate_test.go index 2fa5dc6..b1d4d70 100644 --- a/binapigen/generate_test.go +++ b/binapigen/generate_test.go @@ -47,7 +47,7 @@ func GenerateFromFile(file string, opts Options) error { return nil } -func TestGenerateFromFile(t *testing.T) { +func TestGenerateFromFileACL(t *testing.T) { RegisterTestingT(t) // remove directory created during test @@ -62,6 +62,21 @@ func TestGenerateFromFile(t *testing.T) { Expect(fileInfo.Name()).To(BeEquivalentTo("acl.ba.go")) } +func TestGenerateFromFileIP(t *testing.T) { + RegisterTestingT(t) + + // remove directory created during test + defer os.RemoveAll(testOutputDir) + + opts := Options{OutputDir: testOutputDir} + err := GenerateFromFile("vppapi/testdata/ip.api.json", opts) + Expect(err).ShouldNot(HaveOccurred()) + fileInfo, err := os.Stat(testOutputDir + "/ip/ip.ba.go") + Expect(err).ShouldNot(HaveOccurred()) + Expect(fileInfo.IsDir()).To(BeFalse()) + Expect(fileInfo.Name()).To(BeEquivalentTo("ip.ba.go")) +} + func TestGenerateFromFileInputError(t *testing.T) { RegisterTestingT(t) diff --git a/binapigen/vppapi.go b/binapigen/vppapi.go index 7388ad5..c18d7fb 100644 --- a/binapigen/vppapi.go +++ b/binapigen/vppapi.go @@ -28,6 +28,9 @@ func SortFileObjectsByName(file *vppapi.File) { sort.SliceStable(file.EnumTypes, func(i, j int) bool { return file.EnumTypes[i].Name < file.EnumTypes[j].Name }) + sort.SliceStable(file.EnumflagTypes, func(i, j int) bool { + return file.EnumflagTypes[i].Name < file.EnumflagTypes[j].Name + }) sort.Slice(file.AliasTypes, func(i, j int) bool { return file.AliasTypes[i].Name < file.AliasTypes[j].Name }) @@ -151,6 +154,22 @@ func ListImportedTypes(apifiles []*vppapi.File, file *vppapi.File) []string { } } } + for _, t := range file.EnumflagTypes { + var imported bool + for _, imp := range typeFiles { + for _, at := range imp.EnumflagTypes { + if at.Name != t.Name { + continue + } + importedTypes = append(importedTypes, t.Name) + imported = true + break + } + if imported { + break + } + } + } for _, t := range file.UnionTypes { var imported bool for _, imp := range typeFiles { @@ -186,6 +205,12 @@ func RemoveImportedTypes(apifiles []*vppapi.File, apifile *vppapi.File) { enums = append(enums, enumType) } } + var enumflags []vppapi.EnumType + for _, enumflagType := range apifile.EnumflagTypes { + if !isImportedType(enumflagType.Name) { + enumflags = append(enumflags, enumflagType) + } + } var aliases []vppapi.AliasType for _, aliasType := range apifile.AliasTypes { if !isImportedType(aliasType.Name) { @@ -205,6 +230,7 @@ func RemoveImportedTypes(apifiles []*vppapi.File, apifile *vppapi.File) { } } apifile.EnumTypes = enums + apifile.EnumflagTypes = enumflags apifile.AliasTypes = aliases apifile.StructTypes = structs apifile.UnionTypes = unions diff --git a/binapigen/vppapi/api_schema.go b/binapigen/vppapi/api_schema.go index 7eceab3..e1c180e 100644 --- a/binapigen/vppapi/api_schema.go +++ b/binapigen/vppapi/api_schema.go @@ -24,10 +24,11 @@ type ( Options map[string]string `json:",omitempty"` Imports []string `json:",omitempty"` - AliasTypes []AliasType `json:",omitempty"` - EnumTypes []EnumType `json:",omitempty"` - StructTypes []StructType `json:",omitempty"` - UnionTypes []UnionType `json:",omitempty"` + AliasTypes []AliasType `json:",omitempty"` + EnumTypes []EnumType `json:",omitempty"` + EnumflagTypes []EnumType `json:",omitempty"` + StructTypes []StructType `json:",omitempty"` + UnionTypes []UnionType `json:",omitempty"` Messages []Message `json:",omitempty"` Service *Service `json:",omitempty"` diff --git a/binapigen/vppapi/parse_json.go b/binapigen/vppapi/parse_json.go index d14865c..a2ca257 100644 --- a/binapigen/vppapi/parse_json.go +++ b/binapigen/vppapi/parse_json.go @@ -41,6 +41,7 @@ const ( fileMessages = "messages" fileUnions = "unions" fileEnums = "enums" + fileEnumflags = "enumflags" fileAliases = "aliases" fileServices = "services" fileImports = "imports" @@ -129,6 +130,20 @@ func parseJSON(data []byte) (module *File, err error) { module.EnumTypes = append(module.EnumTypes, *enum) } + // parse enumflags types + enumflagsNode := jsonRoot.Map(fileEnumflags) + module.EnumflagTypes = make([]EnumType, 0) + for i := 0; i < enumflagsNode.Len(); i++ { + enumflag, err := parseEnum(enumflagsNode.At(i)) + if err != nil { + return nil, err + } + if exists(enumflag.Name) { + continue + } + module.EnumflagTypes = append(module.EnumflagTypes, *enumflag) + } + // parse alias types aliasesNode := jsonRoot.Map(fileAliases) if aliasesNode.GetType() == jsongo.TypeMap { diff --git a/binapigen/vppapi/testdata/ip.api.json b/binapigen/vppapi/testdata/ip.api.json index 530b6d6..32be996 100644 --- a/binapigen/vppapi/testdata/ip.api.json +++ b/binapigen/vppapi/testdata/ip.api.json @@ -1,190 +1,1137 @@ { - "services": [ - { - "ip_source_and_port_range_check_add_del": { - "reply": "ip_source_and_port_range_check_add_del_reply" - } - }, - { - "ip6_fib_dump": { - "reply": "ip6_fib_details", - "stream": true - } - }, - { - "want_ip6_nd_events": { - "reply": "want_ip6_nd_events_reply" - } - }, - { - "ip_punt_police": { - "reply": "ip_punt_police_reply" - } - }, - { - "set_arp_neighbor_limit": { - "reply": "set_arp_neighbor_limit_reply" - } - }, - { - "ip6nd_proxy_add_del": { - "reply": "ip6nd_proxy_add_del_reply" - } - }, - { - "ioam_disable": { - "reply": "ioam_disable_reply" - } - }, - { - "ip_table_add_del": { - "reply": "ip_table_add_del_reply" - } - }, - { - "ip_neighbor_dump": { - "reply": "ip_neighbor_details", - "stream": true - } - }, - { - "ip4_arp_event": { - "reply": null + "types": [ + [ + "address", + [ + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_address_union_t", + "un" + ] + ], + [ + "prefix", + [ + "vl_api_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_address_and_mask", + [ + "vl_api_ip4_address_t", + "addr" + ], + [ + "vl_api_ip4_address_t", + "mask" + ] + ], + [ + "ip6_address_and_mask", + [ + "vl_api_ip6_address_t", + "addr" + ], + [ + "vl_api_ip6_address_t", + "mask" + ] + ], + [ + "mprefix", + [ + "vl_api_address_family_t", + "af" + ], + [ + "u16", + "grp_address_length" + ], + [ + "vl_api_address_union_t", + "grp_address" + ], + [ + "vl_api_address_union_t", + "src_address" + ] + ], + [ + "ip6_prefix", + [ + "vl_api_ip6_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_prefix", + [ + "vl_api_ip4_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "prefix_matcher", + [ + "u8", + "le" + ], + [ + "u8", + "ge" + ] + ], + [ + "fib_mpls_label", + [ + "u8", + "is_uniform" + ], + [ + "u32", + "label" + ], + [ + "u8", + "ttl" + ], + [ + "u8", + "exp" + ] + ], + [ + "fib_path_nh", + [ + "vl_api_address_union_t", + "address" + ], + [ + "u32", + "via_label" + ], + [ + "u32", + "obj_id" + ], + [ + "u32", + "classify_table_index" + ] + ], + [ + "fib_path", + [ + "u32", + "sw_if_index" + ], + [ + "u32", + "table_id" + ], + [ + "u32", + "rpf_id" + ], + [ + "u8", + "weight" + ], + [ + "u8", + "preference" + ], + [ + "vl_api_fib_path_type_t", + "type" + ], + [ + "vl_api_fib_path_flags_t", + "flags" + ], + [ + "vl_api_fib_path_nh_proto_t", + "proto" + ], + [ + "vl_api_fib_path_nh_t", + "nh" + ], + [ + "u8", + "n_labels" + ], + [ + "vl_api_fib_mpls_label_t", + "label_stack", + 16 + ] + ], + [ + "address", + [ + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_address_union_t", + "un" + ] + ], + [ + "prefix", + [ + "vl_api_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_address_and_mask", + [ + "vl_api_ip4_address_t", + "addr" + ], + [ + "vl_api_ip4_address_t", + "mask" + ] + ], + [ + "ip6_address_and_mask", + [ + "vl_api_ip6_address_t", + "addr" + ], + [ + "vl_api_ip6_address_t", + "mask" + ] + ], + [ + "mprefix", + [ + "vl_api_address_family_t", + "af" + ], + [ + "u16", + "grp_address_length" + ], + [ + "vl_api_address_union_t", + "grp_address" + ], + [ + "vl_api_address_union_t", + "src_address" + ] + ], + [ + "ip6_prefix", + [ + "vl_api_ip6_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_prefix", + [ + "vl_api_ip4_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "prefix_matcher", + [ + "u8", + "le" + ], + [ + "u8", + "ge" + ] + ], + [ + "fib_mpls_label", + [ + "u8", + "is_uniform" + ], + [ + "u32", + "label" + ], + [ + "u8", + "ttl" + ], + [ + "u8", + "exp" + ] + ], + [ + "fib_path_nh", + [ + "vl_api_address_union_t", + "address" + ], + [ + "u32", + "via_label" + ], + [ + "u32", + "obj_id" + ], + [ + "u32", + "classify_table_index" + ] + ], + [ + "fib_path", + [ + "u32", + "sw_if_index" + ], + [ + "u32", + "table_id" + ], + [ + "u32", + "rpf_id" + ], + [ + "u8", + "weight" + ], + [ + "u8", + "preference" + ], + [ + "vl_api_fib_path_type_t", + "type" + ], + [ + "vl_api_fib_path_flags_t", + "flags" + ], + [ + "vl_api_fib_path_nh_proto_t", + "proto" + ], + [ + "vl_api_fib_path_nh_t", + "nh" + ], + [ + "u8", + "n_labels" + ], + [ + "vl_api_fib_mpls_label_t", + "label_stack", + 16 + ] + ], + [ + "address", + [ + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_address_union_t", + "un" + ] + ], + [ + "prefix", + [ + "vl_api_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_address_and_mask", + [ + "vl_api_ip4_address_t", + "addr" + ], + [ + "vl_api_ip4_address_t", + "mask" + ] + ], + [ + "ip6_address_and_mask", + [ + "vl_api_ip6_address_t", + "addr" + ], + [ + "vl_api_ip6_address_t", + "mask" + ] + ], + [ + "mprefix", + [ + "vl_api_address_family_t", + "af" + ], + [ + "u16", + "grp_address_length" + ], + [ + "vl_api_address_union_t", + "grp_address" + ], + [ + "vl_api_address_union_t", + "src_address" + ] + ], + [ + "ip6_prefix", + [ + "vl_api_ip6_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "ip4_prefix", + [ + "vl_api_ip4_address_t", + "address" + ], + [ + "u8", + "len" + ] + ], + [ + "prefix_matcher", + [ + "u8", + "le" + ], + [ + "u8", + "ge" + ] + ], + [ + "mfib_path", + [ + "vl_api_mfib_itf_flags_t", + "itf_flags" + ], + [ + "vl_api_fib_path_t", + "path" + ] + ], + [ + "ip_table", + [ + "u32", + "table_id" + ], + [ + "bool", + "is_ip6" + ], + [ + "string", + "name", + 64 + ] + ], + [ + "ip_route", + [ + "u32", + "table_id" + ], + [ + "u32", + "stats_index" + ], + [ + "vl_api_prefix_t", + "prefix" + ], + [ + "u8", + "n_paths" + ], + [ + "vl_api_fib_path_t", + "paths", + 0, + "n_paths" + ] + ], + [ + "ip_mroute", + [ + "u32", + "table_id" + ], + [ + "vl_api_mfib_entry_flags_t", + "entry_flags" + ], + [ + "u32", + "rpf_id" + ], + [ + "vl_api_mprefix_t", + "prefix" + ], + [ + "u8", + "n_paths" + ], + [ + "vl_api_mfib_path_t", + "paths", + 0, + "n_paths" + ] + ], + [ + "punt_redirect", + [ + "vl_api_interface_index_t", + "rx_sw_if_index" + ], + [ + "vl_api_interface_index_t", + "tx_sw_if_index" + ], + [ + "vl_api_address_t", + "nh" + ] + ] + ], + "messages": [ + [ + "ip_table_add_del", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "is_add", + { + "default": "true" + } + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0x0ffdaec0" } - }, - { - "ip_punt_redirect": { - "reply": "ip_punt_redirect_reply" + ], + [ + "ip_table_add_del_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "sw_interface_ip6nd_ra_prefix": { - "reply": "sw_interface_ip6nd_ra_prefix_reply" + ], + [ + "ip_table_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" } - }, - { - "reset_fib": { - "reply": "reset_fib_reply" + ], + [ + "ip_table_replace_begin", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xb9d2e09e" } - }, - { - "ip6_mfib_dump": { - "reply": "ip6_mfib_details", - "stream": true + ], + [ + "ip_table_replace_begin_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "sw_interface_ip6nd_ra_config": { - "reply": "sw_interface_ip6nd_ra_config_reply" + ], + [ + "ip_table_replace_end", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xb9d2e09e" } - }, - { - "sw_interface_ip6_enable_disable": { - "reply": "sw_interface_ip6_enable_disable_reply" + ], + [ + "ip_table_replace_end_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "sw_interface_ip6_set_link_local_address": { - "reply": "sw_interface_ip6_set_link_local_address_reply" + ], + [ + "ip_table_flush", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xb9d2e09e" } - }, - { - "mfib_signal_dump": { - "reply": "mfib_signal_details", - "stream": true + ], + [ + "ip_table_flush_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "ip_container_proxy_add_del": { - "reply": "ip_container_proxy_add_del_reply" + ], + [ + "ip_table_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xc79fca0f" } - }, - { - "ip_mfib_dump": { - "reply": "ip_mfib_details", - "stream": true + ], + [ + "ip_route_add_del", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "is_add", + { + "default": "true" + } + ], + [ + "bool", + "is_multipath" + ], + [ + "vl_api_ip_route_t", + "route" + ], + { + "crc": "0xc1ff832d" } - }, - { - "ip_address_dump": { - "reply": "ip_address_details", - "stream": true + ], + [ + "ip_route_add_del_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + [ + "u32", + "stats_index" + ], + { + "crc": "0x1992deab" } - }, - { - "ip_dump": { - "reply": "ip_details", - "stream": true + ], + [ + "ip_route_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xb9d2e09e" } - }, - { - "ip_neighbor_add_del": { - "reply": "ip_neighbor_add_del_reply" + ], + [ + "ip_route_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_route_t", + "route" + ], + { + "crc": "0xd1ffaae1" } - }, - { - "proxy_arp_intfc_enable_disable": { - "reply": "proxy_arp_intfc_enable_disable_reply" + ], + [ + "ip_route_lookup", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "table_id" + ], + [ + "u8", + "exact" + ], + [ + "vl_api_prefix_t", + "prefix" + ], + { + "crc": "0xe2986185" } - }, - { - "proxy_arp_add_del": { - "reply": "proxy_arp_add_del_reply" + ], + [ + "ip_route_lookup_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + [ + "vl_api_ip_route_t", + "route" + ], + { + "crc": "0xae99de8e" } - }, - { - "ip_add_del_route": { - "reply": "ip_add_del_route_reply" + ], + [ + "set_ip_flow_hash", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "vrf_id" + ], + [ + "bool", + "is_ipv6" + ], + [ + "bool", + "src" + ], + [ + "bool", + "dst" + ], + [ + "bool", + "sport" + ], + [ + "bool", + "dport" + ], + [ + "bool", + "proto" + ], + [ + "bool", + "reverse" + ], + [ + "bool", + "symmetric" + ], + { + "crc": "0x084ee09e" } - }, - { - "ip6nd_proxy_dump": { - "reply": "ip6nd_proxy_details", - "stream": true + ], + [ + "set_ip_flow_hash_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "ip_fib_dump": { - "reply": "ip_fib_details", - "stream": true + ], + [ + "set_ip_flow_hash_v2", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "table_id" + ], + [ + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_ip_flow_hash_config_t", + "flow_hash_config" + ], + { + "crc": "0x6d132100" } - }, - { - "want_ip4_arp_events": { - "reply": "want_ip4_arp_events_reply" + ], + [ + "set_ip_flow_hash_v2_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "ioam_enable": { - "reply": "ioam_enable_reply" + ], + [ + "set_ip_flow_hash_router_id", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "router_id" + ], + { + "crc": "0x03e4f48e" } - }, - { - "ip6_nd_event": { - "reply": null + ], + [ + "set_ip_flow_hash_router_id_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "ip_mroute_add_del": { - "reply": "ip_mroute_add_del_reply" + ], + [ + "sw_interface_ip6_enable_disable", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_interface_index_t", + "sw_if_index" + ], + [ + "bool", + "enable" + ], + { + "crc": "0xae6cfcfb" } - }, - { - "ip_source_and_port_range_check_interface_add_del": { - "reply": "ip_source_and_port_range_check_interface_add_del_reply" + ], + [ + "sw_interface_ip6_enable_disable_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" } - }, - { - "set_ip_flow_hash": { - "reply": "set_ip_flow_hash_reply" + ], + [ + "ip_mtable_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" } - } - ], - "vl_api_version": "0xb395c625", - "enums": [], - "messages": [ + ], [ - "ip_table_add_del", + "ip_mtable_details", [ "u16", "_vl_msg_id" @@ -197,29 +1144,49 @@ "u32", "context" ], + [ + "vl_api_ip_table_t", + "table" + ], + { + "crc": "0xb9d2e09e" + } + ], + [ + "ip_mroute_add_del", + [ + "u16", + "_vl_msg_id" + ], [ "u32", - "table_id" + "client_index" ], [ - "u8", - "is_ipv6" + "u32", + "context" ], [ - "u8", - "is_add" + "bool", + "is_add", + { + "default": "true" + } ], [ - "u8", - "name", - 64 + "bool", + "is_multipath" + ], + [ + "vl_api_ip_mroute_t", + "route" ], { - "crc": "0x0240c89d" + "crc": "0x0dd7e790" } ], [ - "ip_table_add_del_reply", + "ip_mroute_add_del_reply", [ "u16", "_vl_msg_id" @@ -232,12 +1199,16 @@ "i32", "retval" ], + [ + "u32", + "stats_index" + ], { - "crc": "0xe8d4e804" + "crc": "0x1992deab" } ], [ - "ip_fib_dump", + "ip_mroute_dump", [ "u16", "_vl_msg_id" @@ -250,12 +1221,34 @@ "u32", "context" ], + [ + "vl_api_ip_table_t", + "table" + ], { - "crc": "0x51077d14" + "crc": "0xb9d2e09e" + } + ], + [ + "ip_mroute_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip_mroute_t", + "route" + ], + { + "crc": "0xc5cb23fc" } ], [ - "ip_fib_details", + "ip_address_details", [ "u16", "_vl_msg_id" @@ -264,40 +1257,137 @@ "u32", "context" ], + [ + "vl_api_interface_index_t", + "sw_if_index" + ], + [ + "vl_api_address_with_prefix_t", + "prefix" + ], + { + "crc": "0xb1199745" + } + ], + [ + "ip_address_dump", + [ + "u16", + "_vl_msg_id" + ], [ "u32", - "table_id" + "client_index" ], [ - "u8", - "table_name", - 64 + "u32", + "context" ], [ - "u8", - "address_length" + "vl_api_interface_index_t", + "sw_if_index" ], [ - "u8", - "address", - 4 + "bool", + "is_ipv6" + ], + { + "crc": "0x2d033de4" + } + ], + [ + "ip_unnumbered_details", + [ + "u16", + "_vl_msg_id" ], [ "u32", - "count" + "context" ], [ - "vl_api_fib_path_t", - "path", - 0, - "count" + "vl_api_interface_index_t", + "sw_if_index" + ], + [ + "vl_api_interface_index_t", + "ip_sw_if_index" + ], + { + "crc": "0xaa12a483" + } + ], + [ + "ip_unnumbered_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_interface_index_t", + "sw_if_index", + { + "default": 4294967295 + } ], { - "crc": "0x99dfd73b" + "crc": "0xf9e6675e" } ], [ - "ip6_fib_dump", + "ip_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "vl_api_interface_index_t", + "sw_if_index" + ], + [ + "bool", + "is_ipv6" + ], + { + "crc": "0xeb152d07" + } + ], + [ + "ip_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "is_ipv6" + ], + { + "crc": "0x98d231ca" + } + ], + [ + "mfib_signal_dump", [ "u16", "_vl_msg_id" @@ -315,7 +1405,7 @@ } ], [ - "ip6_fib_details", + "mfib_signal_details", [ "u16", "_vl_msg_id" @@ -324,40 +1414,131 @@ "u32", "context" ], + [ + "vl_api_interface_index_t", + "sw_if_index" + ], [ "u32", "table_id" ], [ - "u8", - "table_name", - 64 + "vl_api_mprefix_t", + "prefix" ], [ - "u8", - "address_length" + "u16", + "ip_packet_len" ], [ "u8", - "address", - 16 + "ip_packet_data", + 256 + ], + { + "crc": "0x64398a9a" + } + ], + [ + "ip_punt_police", + [ + "u16", + "_vl_msg_id" ], [ "u32", - "count" + "client_index" ], [ - "vl_api_fib_path_t", - "path", - 0, - "count" + "u32", + "context" + ], + [ + "u32", + "policer_index" + ], + [ + "bool", + "is_add", + { + "default": "true" + } + ], + [ + "bool", + "is_ip6" + ], + { + "crc": "0xdb867cea" + } + ], + [ + "ip_punt_police_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "ip_punt_redirect", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_punt_redirect_t", + "punt" + ], + [ + "bool", + "is_add", + { + "default": "true" + } + ], + { + "crc": "0xa9a5592c" + } + ], + [ + "ip_punt_redirect_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" ], { - "crc": "0xabd0060e" + "crc": "0xe8d4e804" } ], [ - "ip_neighbor_dump", + "ip_punt_redirect_dump", [ "u16", "_vl_msg_id" @@ -371,19 +1552,19 @@ "context" ], [ - "u32", + "vl_api_interface_index_t", "sw_if_index" ], [ - "u8", + "bool", "is_ipv6" ], { - "crc": "0x6b7bcd0a" + "crc": "0x2d033de4" } ], [ - "ip_neighbor_details", + "ip_punt_redirect_details", [ "u16", "_vl_msg_id" @@ -393,33 +1574,15 @@ "context" ], [ - "u32", - "sw_if_index" - ], - [ - "u8", - "is_static" - ], - [ - "u8", - "is_ipv6" - ], - [ - "u8", - "mac_address", - 6 - ], - [ - "u8", - "ip_address", - 16 + "vl_api_punt_redirect_t", + "punt" ], { - "crc": "0x85e32a72" + "crc": "0x3924f5d3" } ], [ - "ip_neighbor_add_del", + "ip_container_proxy_add_del", [ "u16", "_vl_msg_id" @@ -433,41 +1596,62 @@ "context" ], [ - "u32", + "vl_api_prefix_t", + "pfx" + ], + [ + "vl_api_interface_index_t", "sw_if_index" ], [ - "u8", - "is_add" + "bool", + "is_add", + { + "default": "true" + } + ], + { + "crc": "0x91189f40" + } + ], + [ + "ip_container_proxy_add_del_reply", + [ + "u16", + "_vl_msg_id" ], [ - "u8", - "is_ipv6" + "u32", + "context" ], [ - "u8", - "is_static" + "i32", + "retval" ], + { + "crc": "0xe8d4e804" + } + ], + [ + "ip_container_proxy_dump", [ - "u8", - "is_no_adj_fib" + "u16", + "_vl_msg_id" ], [ - "u8", - "mac_address", - 6 + "u32", + "client_index" ], [ - "u8", - "dst_address", - 16 + "u32", + "context" ], { - "crc": "0x4711eb25" + "crc": "0x51077d14" } ], [ - "ip_neighbor_add_del_reply", + "ip_container_proxy_details", [ "u16", "_vl_msg_id" @@ -477,15 +1661,19 @@ "context" ], [ - "i32", - "retval" + "vl_api_interface_index_t", + "sw_if_index" + ], + [ + "vl_api_prefix_t", + "prefix" ], { - "crc": "0xe8d4e804" + "crc": "0x0ee460e8" } ], [ - "set_ip_flow_hash", + "ip_source_and_port_range_check_add_del", [ "u16", "_vl_msg_id" @@ -499,43 +1687,40 @@ "context" ], [ - "u32", - "vrf_id" - ], - [ - "u8", - "is_ipv6" - ], - [ - "u8", - "src" + "bool", + "is_add", + { + "default": "true" + } ], [ - "u8", - "dst" + "vl_api_prefix_t", + "prefix" ], [ "u8", - "sport" + "number_of_ranges" ], [ - "u8", - "dport" + "u16", + "low_ports", + 32 ], [ - "u8", - "proto" + "u16", + "high_ports", + 32 ], [ - "u8", - "reverse" + "u32", + "vrf_id" ], { - "crc": "0x32ebf737" + "crc": "0x8bfc76f2" } ], [ - "set_ip_flow_hash_reply", + "ip_source_and_port_range_check_add_del_reply", [ "u16", "_vl_msg_id" @@ -553,7 +1738,7 @@ } ], [ - "sw_interface_ip6nd_ra_config", + "ip_source_and_port_range_check_interface_add_del", [ "u16", "_vl_msg_id" @@ -567,67 +1752,38 @@ "context" ], [ - "u32", - "sw_if_index" - ], - [ - "u8", - "suppress" - ], - [ - "u8", - "managed" - ], - [ - "u8", - "other" - ], - [ - "u8", - "ll_option" - ], - [ - "u8", - "send_unicast" - ], - [ - "u8", - "cease" - ], - [ - "u8", - "is_no" - ], - [ - "u8", - "default_router" + "bool", + "is_add", + { + "default": "true" + } ], [ - "u32", - "max_interval" + "vl_api_interface_index_t", + "sw_if_index" ], [ "u32", - "min_interval" + "tcp_in_vrf_id" ], [ "u32", - "lifetime" + "tcp_out_vrf_id" ], [ "u32", - "initial_count" + "udp_in_vrf_id" ], [ "u32", - "initial_interval" + "udp_out_vrf_id" ], { - "crc": "0xc3f02daa" + "crc": "0xe1ba8987" } ], [ - "sw_interface_ip6nd_ra_config_reply", + "ip_source_and_port_range_check_interface_add_del_reply", [ "u16", "_vl_msg_id" @@ -645,7 +1801,7 @@ } ], [ - "sw_interface_ip6nd_ra_prefix", + "sw_interface_ip6_set_link_local_address", [ "u16", "_vl_msg_id" @@ -659,56 +1815,19 @@ "context" ], [ - "u32", + "vl_api_interface_index_t", "sw_if_index" ], [ - "u8", - "address", - 16 - ], - [ - "u8", - "address_length" - ], - [ - "u8", - "use_default" - ], - [ - "u8", - "no_advertise" - ], - [ - "u8", - "off_link" - ], - [ - "u8", - "no_autoconfig" - ], - [ - "u8", - "no_onlink" - ], - [ - "u8", - "is_no" - ], - [ - "u32", - "val_lifetime" - ], - [ - "u32", - "pref_lifetime" + "vl_api_ip6_address_t", + "ip" ], { - "crc": "0xca763c9a" + "crc": "0x2931d9fa" } ], [ - "sw_interface_ip6nd_ra_prefix_reply", + "sw_interface_ip6_set_link_local_address_reply", [ "u16", "_vl_msg_id" @@ -726,7 +1845,7 @@ } ], [ - "ip6nd_proxy_add_del", + "sw_interface_ip6_get_link_local_address", [ "u16", "_vl_msg_id" @@ -740,24 +1859,15 @@ "context" ], [ - "u32", + "vl_api_interface_index_t", "sw_if_index" ], - [ - "u8", - "is_del" - ], - [ - "u8", - "address", - 16 - ], { - "crc": "0xd95f0fa0" + "crc": "0xf9e6675e" } ], [ - "ip6nd_proxy_add_del_reply", + "sw_interface_ip6_get_link_local_address_reply", [ "u16", "_vl_msg_id" @@ -770,12 +1880,16 @@ "i32", "retval" ], + [ + "vl_api_ip6_address_t", + "ip" + ], { - "crc": "0xe8d4e804" + "crc": "0xd16b7130" } ], [ - "ip6nd_proxy_details", + "ioam_enable", [ "u16", "_vl_msg_id" @@ -789,38 +1903,53 @@ "context" ], [ - "u32", - "sw_if_index" + "u16", + "id" ], [ - "u8", - "address", - 16 + "bool", + "seqno" + ], + [ + "bool", + "analyse" + ], + [ + "bool", + "pot_enable" + ], + [ + "bool", + "trace_enable" + ], + [ + "u32", + "node_id" ], { - "crc": "0xd73bf1ab" + "crc": "0x51ccd868" } ], [ - "ip6nd_proxy_dump", + "ioam_enable_reply", [ "u16", "_vl_msg_id" ], [ "u32", - "client_index" + "context" ], [ - "u32", - "context" + "i32", + "retval" ], { - "crc": "0x51077d14" + "crc": "0xe8d4e804" } ], [ - "sw_interface_ip6_enable_disable", + "ioam_disable", [ "u16", "_vl_msg_id" @@ -834,19 +1963,15 @@ "context" ], [ - "u32", - "sw_if_index" - ], - [ - "u8", - "enable" + "u16", + "id" ], { - "crc": "0xa36fadc0" + "crc": "0x6b16a45e" } ], [ - "sw_interface_ip6_enable_disable_reply", + "ioam_disable_reply", [ "u16", "_vl_msg_id" @@ -864,7 +1989,7 @@ } ], [ - "sw_interface_ip6_set_link_local_address", + "ip_reassembly_set", [ "u16", "_vl_msg_id" @@ -879,19 +2004,34 @@ ], [ "u32", - "sw_if_index" + "timeout_ms" ], [ - "u8", - "address", - 16 + "u32", + "max_reassemblies" + ], + [ + "u32", + "max_reassembly_length" + ], + [ + "u32", + "expire_walk_interval_ms" + ], + [ + "bool", + "is_ip6" + ], + [ + "vl_api_ip_reass_type_t", + "type" ], { - "crc": "0xd73bf1ab" + "crc": "0x16467d25" } ], [ - "sw_interface_ip6_set_link_local_address_reply", + "ip_reassembly_set_reply", [ "u16", "_vl_msg_id" @@ -909,7 +2049,7 @@ } ], [ - "ip_add_del_route", + "ip_reassembly_get", [ "u16", "_vl_msg_id" @@ -922,1325 +2062,1517 @@ "u32", "context" ], + [ + "bool", + "is_ip6" + ], + [ + "vl_api_ip_reass_type_t", + "type" + ], + { + "crc": "0xea13ff63" + } + ], + [ + "ip_reassembly_get_reply", + [ + "u16", + "_vl_msg_id" + ], [ "u32", - "next_hop_sw_if_index" + "context" + ], + [ + "i32", + "retval" ], [ "u32", - "table_id" + "timeout_ms" ], [ "u32", - "classify_table_index" + "max_reassemblies" ], [ "u32", - "next_hop_table_id" + "max_reassembly_length" ], [ "u32", - "next_hop_id" + "expire_walk_interval_ms" ], [ - "u8", - "is_add" + "bool", + "is_ip6" ], + { + "crc": "0xd5eb8d34" + } + ], + [ + "ip_reassembly_enable_disable", [ - "u8", - "is_drop" + "u16", + "_vl_msg_id" ], [ - "u8", - "is_unreach" + "u32", + "client_index" ], [ - "u8", - "is_prohibit" + "u32", + "context" ], [ - "u8", - "is_ipv6" + "vl_api_interface_index_t", + "sw_if_index" ], [ - "u8", - "is_local" + "bool", + "enable_ip4" ], [ - "u8", - "is_classify" + "bool", + "enable_ip6" ], [ - "u8", - "is_multipath" + "vl_api_ip_reass_type_t", + "type" ], + { + "crc": "0x885c85a6" + } + ], + [ + "ip_reassembly_enable_disable_reply", [ - "u8", - "is_resolve_host" + "u16", + "_vl_msg_id" ], [ - "u8", - "is_resolve_attached" + "u32", + "context" ], [ - "u8", - "is_dvr" + "i32", + "retval" ], + { + "crc": "0xe8d4e804" + } + ] + ], + "unions": [ + [ + "address_union", [ - "u8", - "is_source_lookup" + "vl_api_ip4_address_t", + "ip4" ], [ - "u8", - "is_udp_encap" - ], + "vl_api_ip6_address_t", + "ip6" + ] + ], + [ + "address_union", [ - "u8", - "next_hop_weight" + "vl_api_ip4_address_t", + "ip4" ], [ - "u8", - "next_hop_preference" - ], + "vl_api_ip6_address_t", + "ip6" + ] + ], + [ + "address_union", [ - "u8", - "next_hop_proto" + "vl_api_ip4_address_t", + "ip4" ], [ - "u8", - "dst_address_length" + "vl_api_ip6_address_t", + "ip6" + ] + ] + ], + "enums": [ + [ + "if_status_flags", + [ + "IF_STATUS_API_FLAG_ADMIN_UP", + 1 ], [ - "u8", - "dst_address", - 16 + "IF_STATUS_API_FLAG_LINK_UP", + 2 ], + { + "enumtype": "u32" + } + ], + [ + "mtu_proto", [ - "u8", - "next_hop_address", - 16 + "MTU_PROTO_API_L3", + 0 ], [ - "u8", - "next_hop_n_out_labels" + "MTU_PROTO_API_IP4", + 1 ], [ - "u32", - "next_hop_via_label" + "MTU_PROTO_API_IP6", + 2 ], [ - "u32", - "next_hop_out_label_stack", - 0, - "next_hop_n_out_labels" + "MTU_PROTO_API_MPLS", + 3 ], { - "crc": "0xc85f8290" + "enumtype": "u32" } ], [ - "ip_add_del_route_reply", + "link_duplex", [ - "u16", - "_vl_msg_id" + "LINK_DUPLEX_API_UNKNOWN", + 0 ], [ - "u32", - "context" + "LINK_DUPLEX_API_HALF", + 1 ], [ - "i32", - "retval" + "LINK_DUPLEX_API_FULL", + 2 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "ip_mroute_add_del", - [ - "u16", - "_vl_msg_id" - ], + "sub_if_flags", [ - "u32", - "client_index" + "SUB_IF_API_FLAG_NO_TAGS", + 1 ], [ - "u32", - "context" + "SUB_IF_API_FLAG_ONE_TAG", + 2 ], [ - "u32", - "next_hop_sw_if_index" + "SUB_IF_API_FLAG_TWO_TAGS", + 4 ], [ - "u32", - "table_id" + "SUB_IF_API_FLAG_DOT1AD", + 8 ], [ - "u32", - "entry_flags" + "SUB_IF_API_FLAG_EXACT_MATCH", + 16 ], [ - "u32", - "itf_flags" + "SUB_IF_API_FLAG_DEFAULT", + 32 ], [ - "u32", - "rpf_id" + "SUB_IF_API_FLAG_OUTER_VLAN_ID_ANY", + 64 ], [ - "u32", - "bier_imp" + "SUB_IF_API_FLAG_INNER_VLAN_ID_ANY", + 128 ], [ - "u16", - "grp_address_length" + "SUB_IF_API_FLAG_MASK_VNET", + 254 ], [ - "u8", - "next_hop_afi" + "SUB_IF_API_FLAG_DOT1AH", + 256 ], + { + "enumtype": "u32" + } + ], + [ + "rx_mode", [ - "u8", - "is_add" + "RX_MODE_API_UNKNOWN", + 0 ], [ - "u8", - "is_ipv6" + "RX_MODE_API_POLLING", + 1 ], [ - "u8", - "is_local" + "RX_MODE_API_INTERRUPT", + 2 ], [ - "u8", - "grp_address", - 16 + "RX_MODE_API_ADAPTIVE", + 3 ], [ - "u8", - "src_address", - 16 + "RX_MODE_API_DEFAULT", + 4 ], { - "crc": "0xc37112f7" + "enumtype": "u32" } ], [ - "ip_mroute_add_del_reply", + "if_type", [ - "u16", - "_vl_msg_id" + "IF_API_TYPE_HARDWARE", + 0 ], [ - "u32", - "context" + "IF_API_TYPE_SUB", + 1 ], [ - "i32", - "retval" + "IF_API_TYPE_P2P", + 2 + ], + [ + "IF_API_TYPE_PIPE", + 3 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "ip_mfib_dump", - [ - "u16", - "_vl_msg_id" - ], + "address_family", [ - "u32", - "client_index" + "ADDRESS_IP4", + 0 ], [ - "u32", - "context" + "ADDRESS_IP6", + 1 ], { - "crc": "0x51077d14" + "enumtype": "u8" } ], [ - "ip_mfib_details", - [ - "u16", - "_vl_msg_id" - ], + "ip_feature_location", [ - "u32", - "context" + "IP_API_FEATURE_INPUT", + 0 ], [ - "u32", - "table_id" + "IP_API_FEATURE_OUTPUT", + 1 ], [ - "u32", - "entry_flags" + "IP_API_FEATURE_LOCAL", + 2 ], [ - "u32", - "rpf_id" + "IP_API_FEATURE_PUNT", + 3 ], [ - "u8", - "address_length" + "IP_API_FEATURE_DROP", + 4 ], + { + "enumtype": "u8" + } + ], + [ + "ip_ecn", [ - "u8", - "grp_address", - 4 + "IP_API_ECN_NONE", + 0 ], [ - "u8", - "src_address", - 4 + "IP_API_ECN_ECT0", + 1 ], [ - "u32", - "count" + "IP_API_ECN_ECT1", + 2 ], [ - "vl_api_fib_path_t", - "path", - 0, - "count" + "IP_API_ECN_CE", + 3 ], { - "crc": "0x5e530d5e" + "enumtype": "u8" } ], [ - "ip6_mfib_dump", + "ip_dscp", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_CS0", + 0 ], [ - "u32", - "client_index" + "IP_API_DSCP_CS1", + 8 ], [ - "u32", - "context" + "IP_API_DSCP_AF11", + 10 ], - { - "crc": "0x51077d14" - } - ], - [ - "ip6_mfib_details", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF12", + 12 ], [ - "u32", - "context" + "IP_API_DSCP_AF13", + 14 ], [ - "u32", - "table_id" + "IP_API_DSCP_CS2", + 16 ], [ - "u8", - "address_length" + "IP_API_DSCP_AF21", + 18 ], [ - "u8", - "grp_address", - 16 + "IP_API_DSCP_AF22", + 20 ], [ - "u8", - "src_address", - 16 + "IP_API_DSCP_AF23", + 22 ], [ - "u32", - "count" + "IP_API_DSCP_CS3", + 24 ], [ - "vl_api_fib_path_t", - "path", - 0, - "count" + "IP_API_DSCP_AF31", + 26 ], - { - "crc": "0xe02dcb4b" - } - ], - [ - "ip_address_details", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF32", + 28 ], [ - "u32", - "client_index" + "IP_API_DSCP_AF33", + 30 ], [ - "u32", - "context" + "IP_API_DSCP_CS4", + 32 ], [ - "u8", - "ip", - 16 + "IP_API_DSCP_AF41", + 34 ], [ - "u8", - "prefix_length" + "IP_API_DSCP_AF42", + 36 ], [ - "u32", - "sw_if_index" + "IP_API_DSCP_AF43", + 38 ], [ - "u8", - "is_ipv6" + "IP_API_DSCP_CS5", + 40 + ], + [ + "IP_API_DSCP_EF", + 46 + ], + [ + "IP_API_DSCP_CS6", + 48 + ], + [ + "IP_API_DSCP_CS7", + 50 ], { - "crc": "0xbc7442f2" + "enumtype": "u8" } ], [ - "ip_address_dump", + "ip_proto", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_HOPOPT", + 0 ], [ - "u32", - "client_index" + "IP_API_PROTO_ICMP", + 1 ], [ - "u32", - "context" + "IP_API_PROTO_IGMP", + 2 ], [ - "u32", - "sw_if_index" + "IP_API_PROTO_TCP", + 6 ], [ - "u8", - "is_ipv6" + "IP_API_PROTO_UDP", + 17 ], - { - "crc": "0x6b7bcd0a" - } - ], - [ - "ip_details", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_GRE", + 47 ], [ - "u32", - "sw_if_index" + "IP_API_PROTO_ESP", + 50 ], [ - "u32", - "context" + "IP_API_PROTO_AH", + 51 ], [ - "u8", - "is_ipv6" + "IP_API_PROTO_ICMP6", + 58 + ], + [ + "IP_API_PROTO_EIGRP", + 88 + ], + [ + "IP_API_PROTO_OSPF", + 89 + ], + [ + "IP_API_PROTO_SCTP", + 132 + ], + [ + "IP_API_PROTO_RESERVED", + 255 ], { - "crc": "0x452ffc5a" + "enumtype": "u8" } ], [ - "ip_dump", + "fib_path_nh_proto", [ - "u16", - "_vl_msg_id" + "FIB_API_PATH_NH_PROTO_IP4", + 0 ], [ - "u32", - "client_index" + "FIB_API_PATH_NH_PROTO_IP6", + 1 ], [ - "u32", - "context" + "FIB_API_PATH_NH_PROTO_MPLS", + 2 ], [ - "u8", - "is_ipv6" + "FIB_API_PATH_NH_PROTO_ETHERNET", + 3 + ], + [ + "FIB_API_PATH_NH_PROTO_BIER", + 4 ], { - "crc": "0xde883da4" + "enumtype": "u32" } ], [ - "mfib_signal_dump", + "fib_path_flags", [ - "u16", - "_vl_msg_id" + "FIB_API_PATH_FLAG_NONE", + 0 ], [ - "u32", - "client_index" + "FIB_API_PATH_FLAG_RESOLVE_VIA_ATTACHED", + 1 ], [ - "u32", - "context" + "FIB_API_PATH_FLAG_RESOLVE_VIA_HOST", + 2 + ], + [ + "FIB_API_PATH_FLAG_POP_PW_CW", + 4 ], { - "crc": "0x51077d14" + "enumtype": "u32" } ], [ - "mfib_signal_details", + "fib_path_type", [ - "u16", - "_vl_msg_id" + "FIB_API_PATH_TYPE_NORMAL", + 0 ], [ - "u32", - "client_index" + "FIB_API_PATH_TYPE_LOCAL", + 1 ], [ - "u32", - "context" + "FIB_API_PATH_TYPE_DROP", + 2 ], [ - "u32", - "sw_if_index" + "FIB_API_PATH_TYPE_UDP_ENCAP", + 3 ], [ - "u32", - "table_id" + "FIB_API_PATH_TYPE_BIER_IMP", + 4 ], [ - "u16", - "grp_address_len" + "FIB_API_PATH_TYPE_ICMP_UNREACH", + 5 ], [ - "u8", - "grp_address", - 16 + "FIB_API_PATH_TYPE_ICMP_PROHIBIT", + 6 ], [ - "u8", - "src_address", - 16 + "FIB_API_PATH_TYPE_SOURCE_LOOKUP", + 7 ], [ - "u16", - "ip_packet_len" + "FIB_API_PATH_TYPE_DVR", + 8 ], [ - "u8", - "ip_packet_data", - 256 + "FIB_API_PATH_TYPE_INTERFACE_RX", + 9 + ], + [ + "FIB_API_PATH_TYPE_CLASSIFY", + 10 ], { - "crc": "0x791bbeab" + "enumtype": "u32" } ], [ - "ip_punt_police", + "address_family", [ - "u16", - "_vl_msg_id" + "ADDRESS_IP4", + 0 ], [ - "u32", - "client_index" + "ADDRESS_IP6", + 1 ], + { + "enumtype": "u8" + } + ], + [ + "ip_feature_location", [ - "u32", - "context" + "IP_API_FEATURE_INPUT", + 0 ], [ - "u32", - "policer_index" + "IP_API_FEATURE_OUTPUT", + 1 ], [ - "u8", - "is_add" + "IP_API_FEATURE_LOCAL", + 2 ], [ - "u8", - "is_ip6" + "IP_API_FEATURE_PUNT", + 3 + ], + [ + "IP_API_FEATURE_DROP", + 4 ], { - "crc": "0x38691592" + "enumtype": "u8" } ], [ - "ip_punt_police_reply", + "ip_ecn", [ - "u16", - "_vl_msg_id" + "IP_API_ECN_NONE", + 0 ], [ - "u32", - "context" + "IP_API_ECN_ECT0", + 1 ], [ - "i32", - "retval" + "IP_API_ECN_ECT1", + 2 + ], + [ + "IP_API_ECN_CE", + 3 ], { - "crc": "0xe8d4e804" + "enumtype": "u8" } ], [ - "ip_punt_redirect", + "ip_dscp", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_CS0", + 0 ], [ - "u32", - "client_index" + "IP_API_DSCP_CS1", + 8 ], [ - "u32", - "context" + "IP_API_DSCP_AF11", + 10 ], [ - "u32", - "rx_sw_if_index" + "IP_API_DSCP_AF12", + 12 ], [ - "u32", - "tx_sw_if_index" + "IP_API_DSCP_AF13", + 14 ], [ - "u8", - "is_add" + "IP_API_DSCP_CS2", + 16 ], [ - "u8", - "is_ip6" + "IP_API_DSCP_AF21", + 18 ], [ - "u8", - "nh", - 16 + "IP_API_DSCP_AF22", + 20 ], - { - "crc": "0x996b6603" - } - ], - [ - "ip_punt_redirect_reply", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF23", + 22 ], [ - "u32", - "context" + "IP_API_DSCP_CS3", + 24 ], [ - "i32", - "retval" + "IP_API_DSCP_AF31", + 26 ], - { - "crc": "0xe8d4e804" - } - ], - [ - "ip_container_proxy_add_del", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF32", + 28 ], [ - "u32", - "client_index" + "IP_API_DSCP_AF33", + 30 ], [ - "u32", - "context" + "IP_API_DSCP_CS4", + 32 ], [ - "u8", - "ip", - 16 + "IP_API_DSCP_AF41", + 34 ], [ - "u8", - "is_ip4" + "IP_API_DSCP_AF42", + 36 ], [ - "u8", - "plen" + "IP_API_DSCP_AF43", + 38 ], [ - "u32", - "sw_if_index" + "IP_API_DSCP_CS5", + 40 ], [ - "u8", - "is_add" + "IP_API_DSCP_EF", + 46 + ], + [ + "IP_API_DSCP_CS6", + 48 + ], + [ + "IP_API_DSCP_CS7", + 50 ], { - "crc": "0x0a355d39" + "enumtype": "u8" } ], [ - "ip_container_proxy_add_del_reply", + "ip_proto", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_HOPOPT", + 0 ], [ - "u32", - "context" + "IP_API_PROTO_ICMP", + 1 ], [ - "i32", - "retval" + "IP_API_PROTO_IGMP", + 2 ], - { - "crc": "0xe8d4e804" - } - ], - [ - "ip_source_and_port_range_check_add_del", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_TCP", + 6 ], [ - "u32", - "client_index" + "IP_API_PROTO_UDP", + 17 ], [ - "u32", - "context" + "IP_API_PROTO_GRE", + 47 ], [ - "u8", - "is_ipv6" + "IP_API_PROTO_ESP", + 50 ], [ - "u8", - "is_add" + "IP_API_PROTO_AH", + 51 ], [ - "u8", - "mask_length" + "IP_API_PROTO_ICMP6", + 58 ], [ - "u8", - "address", - 16 + "IP_API_PROTO_EIGRP", + 88 ], [ - "u8", - "number_of_ranges" + "IP_API_PROTO_OSPF", + 89 ], [ - "u16", - "low_ports", - 32 + "IP_API_PROTO_SCTP", + 132 ], [ - "u16", - "high_ports", - 32 + "IP_API_PROTO_RESERVED", + 255 + ], + { + "enumtype": "u8" + } + ], + [ + "fib_path_nh_proto", + [ + "FIB_API_PATH_NH_PROTO_IP4", + 0 ], [ - "u32", - "vrf_id" + "FIB_API_PATH_NH_PROTO_IP6", + 1 + ], + [ + "FIB_API_PATH_NH_PROTO_MPLS", + 2 + ], + [ + "FIB_API_PATH_NH_PROTO_ETHERNET", + 3 + ], + [ + "FIB_API_PATH_NH_PROTO_BIER", + 4 ], { - "crc": "0x03d6b03a" + "enumtype": "u32" } ], [ - "ip_source_and_port_range_check_add_del_reply", + "fib_path_flags", [ - "u16", - "_vl_msg_id" + "FIB_API_PATH_FLAG_NONE", + 0 ], [ - "u32", - "context" + "FIB_API_PATH_FLAG_RESOLVE_VIA_ATTACHED", + 1 ], [ - "i32", - "retval" + "FIB_API_PATH_FLAG_RESOLVE_VIA_HOST", + 2 + ], + [ + "FIB_API_PATH_FLAG_POP_PW_CW", + 4 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "ip_source_and_port_range_check_interface_add_del", + "fib_path_type", [ - "u16", - "_vl_msg_id" + "FIB_API_PATH_TYPE_NORMAL", + 0 ], [ - "u32", - "client_index" + "FIB_API_PATH_TYPE_LOCAL", + 1 ], [ - "u32", - "context" + "FIB_API_PATH_TYPE_DROP", + 2 ], [ - "u8", - "is_add" + "FIB_API_PATH_TYPE_UDP_ENCAP", + 3 ], [ - "u32", - "sw_if_index" + "FIB_API_PATH_TYPE_BIER_IMP", + 4 ], [ - "u32", - "tcp_in_vrf_id" + "FIB_API_PATH_TYPE_ICMP_UNREACH", + 5 ], [ - "u32", - "tcp_out_vrf_id" + "FIB_API_PATH_TYPE_ICMP_PROHIBIT", + 6 ], [ - "u32", - "udp_in_vrf_id" + "FIB_API_PATH_TYPE_SOURCE_LOOKUP", + 7 ], [ - "u32", - "udp_out_vrf_id" + "FIB_API_PATH_TYPE_DVR", + 8 + ], + [ + "FIB_API_PATH_TYPE_INTERFACE_RX", + 9 + ], + [ + "FIB_API_PATH_TYPE_CLASSIFY", + 10 ], { - "crc": "0x6966bc44" + "enumtype": "u32" } ], [ - "ip_source_and_port_range_check_interface_add_del_reply", - [ - "u16", - "_vl_msg_id" - ], + "address_family", [ - "u32", - "context" + "ADDRESS_IP4", + 0 ], [ - "i32", - "retval" + "ADDRESS_IP6", + 1 ], { - "crc": "0xe8d4e804" + "enumtype": "u8" } ], [ - "want_ip4_arp_events", - [ - "u16", - "_vl_msg_id" - ], + "ip_feature_location", [ - "u32", - "client_index" + "IP_API_FEATURE_INPUT", + 0 ], [ - "u32", - "context" + "IP_API_FEATURE_OUTPUT", + 1 ], [ - "u8", - "enable_disable" + "IP_API_FEATURE_LOCAL", + 2 ], [ - "u32", - "pid" + "IP_API_FEATURE_PUNT", + 3 ], [ - "u32", - "address" + "IP_API_FEATURE_DROP", + 4 ], { - "crc": "0x77e06379" + "enumtype": "u8" } ], [ - "want_ip4_arp_events_reply", + "ip_ecn", [ - "u16", - "_vl_msg_id" + "IP_API_ECN_NONE", + 0 ], [ - "u32", - "context" + "IP_API_ECN_ECT0", + 1 ], [ - "i32", - "retval" + "IP_API_ECN_ECT1", + 2 + ], + [ + "IP_API_ECN_CE", + 3 ], { - "crc": "0xe8d4e804" + "enumtype": "u8" } ], [ - "ip4_arp_event", - [ - "u16", - "_vl_msg_id" - ], - [ - "u32", - "client_index" - ], + "ip_dscp", [ - "u32", - "address" + "IP_API_DSCP_CS0", + 0 ], [ - "u32", - "pid" + "IP_API_DSCP_CS1", + 8 ], [ - "u32", - "sw_if_index" + "IP_API_DSCP_AF11", + 10 ], [ - "u8", - "new_mac", - 6 + "IP_API_DSCP_AF12", + 12 ], [ - "u8", - "mac_ip" + "IP_API_DSCP_AF13", + 14 ], - { - "crc": "0xef7235f7" - } - ], - [ - "want_ip6_nd_events", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_CS2", + 16 ], [ - "u32", - "client_index" + "IP_API_DSCP_AF21", + 18 ], [ - "u32", - "context" + "IP_API_DSCP_AF22", + 20 ], [ - "u8", - "enable_disable" + "IP_API_DSCP_AF23", + 22 ], [ - "u32", - "pid" + "IP_API_DSCP_CS3", + 24 ], [ - "u8", - "address", - 16 + "IP_API_DSCP_AF31", + 26 ], - { - "crc": "0x1cf65fbb" - } - ], - [ - "want_ip6_nd_events_reply", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF32", + 28 ], [ - "u32", - "context" + "IP_API_DSCP_AF33", + 30 ], [ - "i32", - "retval" + "IP_API_DSCP_CS4", + 32 ], - { - "crc": "0xe8d4e804" - } - ], - [ - "ip6_nd_event", [ - "u16", - "_vl_msg_id" + "IP_API_DSCP_AF41", + 34 ], [ - "u32", - "client_index" + "IP_API_DSCP_AF42", + 36 ], [ - "u32", - "pid" + "IP_API_DSCP_AF43", + 38 ], [ - "u32", - "sw_if_index" + "IP_API_DSCP_CS5", + 40 ], [ - "u8", - "address", - 16 + "IP_API_DSCP_EF", + 46 ], [ - "u8", - "new_mac", - 6 + "IP_API_DSCP_CS6", + 48 ], [ - "u8", - "mac_ip" + "IP_API_DSCP_CS7", + 50 ], { - "crc": "0x96ab2fdd" + "enumtype": "u8" } ], [ - "proxy_arp_add_del", - [ - "u16", - "_vl_msg_id" - ], + "ip_proto", [ - "u32", - "client_index" - ], - [ - "u32", - "context" + "IP_API_PROTO_HOPOPT", + 0 ], [ - "u32", - "vrf_id" + "IP_API_PROTO_ICMP", + 1 ], [ - "u8", - "is_add" + "IP_API_PROTO_IGMP", + 2 ], [ - "u8", - "low_address", - 4 + "IP_API_PROTO_TCP", + 6 ], [ - "u8", - "hi_address", - 4 + "IP_API_PROTO_UDP", + 17 ], - { - "crc": "0xc2442918" - } - ], - [ - "proxy_arp_add_del_reply", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_GRE", + 47 ], [ - "u32", - "context" + "IP_API_PROTO_ESP", + 50 ], [ - "i32", - "retval" + "IP_API_PROTO_AH", + 51 ], - { - "crc": "0xe8d4e804" - } - ], - [ - "proxy_arp_intfc_enable_disable", [ - "u16", - "_vl_msg_id" + "IP_API_PROTO_ICMP6", + 58 ], [ - "u32", - "client_index" + "IP_API_PROTO_EIGRP", + 88 ], [ - "u32", - "context" + "IP_API_PROTO_OSPF", + 89 ], [ - "u32", - "sw_if_index" + "IP_API_PROTO_SCTP", + 132 ], [ - "u8", - "enable_disable" + "IP_API_PROTO_RESERVED", + 255 ], { - "crc": "0x69d24598" + "enumtype": "u8" } ], [ - "proxy_arp_intfc_enable_disable_reply", + "mfib_entry_flags", [ - "u16", - "_vl_msg_id" + "MFIB_API_ENTRY_FLAG_NONE", + 0 ], [ - "u32", - "context" + "MFIB_API_ENTRY_FLAG_SIGNAL", + 1 ], [ - "i32", - "retval" + "MFIB_API_ENTRY_FLAG_DROP", + 2 + ], + [ + "MFIB_API_ENTRY_FLAG_CONNECTED", + 4 + ], + [ + "MFIB_API_ENTRY_FLAG_ACCEPT_ALL_ITF", + 8 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "reset_fib", + "mfib_itf_flags", [ - "u16", - "_vl_msg_id" + "MFIB_API_ITF_FLAG_NONE", + 0 ], [ - "u32", - "client_index" + "MFIB_API_ITF_FLAG_NEGATE_SIGNAL", + 1 ], [ - "u32", - "context" + "MFIB_API_ITF_FLAG_ACCEPT", + 2 ], [ - "u32", - "vrf_id" + "MFIB_API_ITF_FLAG_FORWARD", + 4 ], [ - "u8", - "is_ipv6" + "MFIB_API_ITF_FLAG_SIGNAL_PRESENT", + 8 + ], + [ + "MFIB_API_ITF_FLAG_DONT_PRESERVE", + 16 ], { - "crc": "0x8553ebd9" + "enumtype": "u32" } ], [ - "reset_fib_reply", + "if_status_flags", [ - "u16", - "_vl_msg_id" - ], - [ - "u32", - "context" + "IF_STATUS_API_FLAG_ADMIN_UP", + 1 ], [ - "i32", - "retval" + "IF_STATUS_API_FLAG_LINK_UP", + 2 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "set_arp_neighbor_limit", - [ - "u16", - "_vl_msg_id" - ], + "mtu_proto", [ - "u32", - "client_index" + "MTU_PROTO_API_L3", + 0 ], [ - "u32", - "context" + "MTU_PROTO_API_IP4", + 1 ], [ - "u8", - "is_ipv6" + "MTU_PROTO_API_IP6", + 2 ], [ - "u32", - "arp_neighbor_limit" + "MTU_PROTO_API_MPLS", + 3 ], { - "crc": "0x97d01fd6" + "enumtype": "u32" } ], [ - "set_arp_neighbor_limit_reply", + "link_duplex", [ - "u16", - "_vl_msg_id" + "LINK_DUPLEX_API_UNKNOWN", + 0 ], [ - "u32", - "context" + "LINK_DUPLEX_API_HALF", + 1 ], [ - "i32", - "retval" + "LINK_DUPLEX_API_FULL", + 2 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "ioam_enable", + "sub_if_flags", [ - "u16", - "_vl_msg_id" + "SUB_IF_API_FLAG_NO_TAGS", + 1 ], [ - "u32", - "client_index" + "SUB_IF_API_FLAG_ONE_TAG", + 2 ], [ - "u32", - "context" + "SUB_IF_API_FLAG_TWO_TAGS", + 4 ], [ - "u16", - "id" + "SUB_IF_API_FLAG_DOT1AD", + 8 ], [ - "u8", - "seqno" + "SUB_IF_API_FLAG_EXACT_MATCH", + 16 ], [ - "u8", - "analyse" + "SUB_IF_API_FLAG_DEFAULT", + 32 ], [ - "u8", - "pot_enable" + "SUB_IF_API_FLAG_OUTER_VLAN_ID_ANY", + 64 ], [ - "u8", - "trace_enable" + "SUB_IF_API_FLAG_INNER_VLAN_ID_ANY", + 128 ], [ - "u32", - "node_id" + "SUB_IF_API_FLAG_MASK_VNET", + 254 + ], + [ + "SUB_IF_API_FLAG_DOT1AH", + 256 ], { - "crc": "0x9392e032" + "enumtype": "u32" } ], [ - "ioam_enable_reply", + "rx_mode", [ - "u16", - "_vl_msg_id" + "RX_MODE_API_UNKNOWN", + 0 ], [ - "u32", - "context" + "RX_MODE_API_POLLING", + 1 ], [ - "i32", - "retval" + "RX_MODE_API_INTERRUPT", + 2 + ], + [ + "RX_MODE_API_ADAPTIVE", + 3 + ], + [ + "RX_MODE_API_DEFAULT", + 4 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ], [ - "ioam_disable", + "if_type", [ - "u16", - "_vl_msg_id" + "IF_API_TYPE_HARDWARE", + 0 ], [ - "u32", - "client_index" + "IF_API_TYPE_SUB", + 1 ], [ - "u32", - "context" + "IF_API_TYPE_P2P", + 2 ], [ - "u16", - "id" + "IF_API_TYPE_PIPE", + 3 ], { - "crc": "0x6b16a45e" + "enumtype": "u32" } ], [ - "ioam_disable_reply", - [ - "u16", - "_vl_msg_id" - ], + "ip_reass_type", [ - "u32", - "context" + "IP_REASS_TYPE_FULL", + 0 ], [ - "i32", - "retval" + "IP_REASS_TYPE_SHALLOW_VIRTUAL", + 1 ], { - "crc": "0xe8d4e804" + "enumtype": "u32" } ] ], - "types": [ + "enumflags": [ [ - "fib_path", + "ip_flow_hash_config", [ - "u32", - "sw_if_index" - ], - [ - "u32", - "table_id" - ], - [ - "u8", - "weight" + "IP_API_FLOW_HASH_SRC_IP", + 1 ], [ - "u8", - "preference" + "IP_API_FLOW_HASH_DST_IP", + 2 ], [ - "u8", - "is_local" + "IP_API_FLOW_HASH_SRC_PORT", + 4 ], [ - "u8", - "is_drop" + "IP_API_FLOW_HASH_DST_PORT", + 8 ], [ - "u8", - "is_unreach" + "IP_API_FLOW_HASH_PROTO", + 16 ], [ - "u8", - "is_prohibit" + "IP_API_FLOW_HASH_REVERSE", + 32 ], [ - "u8", - "afi" + "IP_API_FLOW_HASH_SYMETRIC", + 64 ], [ - "u8", - "next_hop", - 16 + "IP_API_FLOW_HASH_FLOW_LABEL", + 128 ], { - "crc": "0xcd899e0a" + "enumtype": "u32" } ] - ] + ], + "services": { + "ip_table_add_del": { + "reply": "ip_table_add_del_reply" + }, + "ip_table_dump": { + "reply": "ip_table_details", + "stream": true + }, + "ip_table_replace_begin": { + "reply": "ip_table_replace_begin_reply" + }, + "ip_table_replace_end": { + "reply": "ip_table_replace_end_reply" + }, + "ip_table_flush": { + "reply": "ip_table_flush_reply" + }, + "ip_route_add_del": { + "reply": "ip_route_add_del_reply" + }, + "ip_route_dump": { + "reply": "ip_route_details", + "stream": true + }, + "ip_route_lookup": { + "reply": "ip_route_lookup_reply" + }, + "set_ip_flow_hash": { + "reply": "set_ip_flow_hash_reply" + }, + "set_ip_flow_hash_v2": { + "reply": "set_ip_flow_hash_v2_reply" + }, + "set_ip_flow_hash_router_id": { + "reply": "set_ip_flow_hash_router_id_reply" + }, + "sw_interface_ip6_enable_disable": { + "reply": "sw_interface_ip6_enable_disable_reply" + }, + "ip_mtable_dump": { + "reply": "ip_mtable_details", + "stream": true + }, + "ip_mroute_add_del": { + "reply": "ip_mroute_add_del_reply" + }, + "ip_mroute_dump": { + "reply": "ip_mroute_details", + "stream": true + }, + "ip_address_dump": { + "reply": "ip_address_details", + "stream": true + }, + "ip_unnumbered_dump": { + "reply": "ip_unnumbered_details", + "stream": true + }, + "ip_dump": { + "reply": "ip_details", + "stream": true + }, + "mfib_signal_dump": { + "reply": "mfib_signal_details", + "stream": true + }, + "ip_punt_police": { + "reply": "ip_punt_police_reply" + }, + "ip_punt_redirect": { + "reply": "ip_punt_redirect_reply" + }, + "ip_punt_redirect_dump": { + "reply": "ip_punt_redirect_details", + "stream": true + }, + "ip_container_proxy_add_del": { + "reply": "ip_container_proxy_add_del_reply" + }, + "ip_container_proxy_dump": { + "reply": "ip_container_proxy_details", + "stream": true + }, + "ip_source_and_port_range_check_add_del": { + "reply": "ip_source_and_port_range_check_add_del_reply" + }, + "ip_source_and_port_range_check_interface_add_del": { + "reply": "ip_source_and_port_range_check_interface_add_del_reply" + }, + "sw_interface_ip6_set_link_local_address": { + "reply": "sw_interface_ip6_set_link_local_address_reply" + }, + "sw_interface_ip6_get_link_local_address": { + "reply": "sw_interface_ip6_get_link_local_address_reply" + }, + "ioam_enable": { + "reply": "ioam_enable_reply" + }, + "ioam_disable": { + "reply": "ioam_disable_reply" + }, + "ip_reassembly_set": { + "reply": "ip_reassembly_set_reply" + }, + "ip_reassembly_get": { + "reply": "ip_reassembly_get_reply" + }, + "ip_reassembly_enable_disable": { + "reply": "ip_reassembly_enable_disable_reply" + } + }, + "options": { + "version": "3.0.3" + }, + "aliases": { + "interface_index": { + "type": "u32" + }, + "ip4_address": { + "type": "u8", + "length": 4 + }, + "ip6_address": { + "type": "u8", + "length": 16 + }, + "address_with_prefix": { + "type": "vl_api_prefix_t" + }, + "ip4_address_with_prefix": { + "type": "vl_api_ip4_prefix_t" + }, + "ip6_address_with_prefix": { + "type": "vl_api_ip6_prefix_t" + }, + "mac_address": { + "type": "u8", + "length": 6 + } + }, + "vl_api_version": "0xf2f5f4e" } diff --git a/cmd/govpp/main.go b/cmd/govpp/main.go index 98d5078..1c6b905 100644 --- a/cmd/govpp/main.go +++ b/cmd/govpp/main.go @@ -122,8 +122,8 @@ func showVPPAPI(out io.Writer, apifiles []*vppapi.File) { } imports := fmt.Sprintf("%d apis, %2d types", len(apifile.Imports), len(importedTypes)) path := strings.TrimPrefix(apifile.Path, vppapi.DefaultDir+"/") - types := fmt.Sprintf("%2d enum, %2d alias, %2d struct, %2d union, %2d msg", - len(apifile.EnumTypes), len(apifile.AliasTypes), len(apifile.StructTypes), len(apifile.UnionTypes), len(apifile.Messages)) + types := fmt.Sprintf("%2d enum, %2d enumflag, %2d alias, %2d struct, %2d union, %2d msg", + len(apifile.EnumTypes), len(apifile.EnumflagTypes), len(apifile.AliasTypes), len(apifile.StructTypes), len(apifile.UnionTypes), len(apifile.Messages)) fmt.Fprintf(w, " %s\t%s\t%s\t%s\t%v\t%s\t\n", apifile.Name, strings.Join(options, " "), apifile.CRC, path, imports, types) } -- cgit 1.2.3-korg