From 868b541e296dc47748ad03b8f0174c828d996529 Mon Sep 17 00:00:00 2001 From: Ondrej Fabry Date: Thu, 13 Dec 2018 10:21:49 +0100 Subject: Add support for aliases and boolean type - aliases are now generated as new types or arrays (if length > 0) - bool is recognized as a boolean type and generated as Go bool - comment with original JSON is now prepended for each object type - interface Services is now generated at the top of the file to provide overview of what RPC services does the current module consists of - dump services now correctly return slice of the particular details type Change-Id: I788babc1c0f2de33e0febd87e5b200d54065b244 Signed-off-by: Ondrej Fabry --- cmd/binapi-generator/definitions.go | 21 +- cmd/binapi-generator/generate.go | 157 +- cmd/binapi-generator/objects.go | 21 +- cmd/binapi-generator/parse.go | 136 +- examples/bin_api/acl.api.json | 56 +- examples/bin_api/acl/acl.ba.go | 2073 +++++---- examples/bin_api/af_packet.api.json | 3 +- examples/bin_api/af_packet/af_packet.ba.go | 378 +- examples/bin_api/interface.api.json | 191 +- examples/bin_api/interfaces/interfaces.ba.go | 3122 +++++++------ examples/bin_api/ip.api.json | 393 +- examples/bin_api/ip/ip.ba.go | 6277 ++++++++++++++------------ examples/bin_api/map.api.json | 940 ++++ examples/bin_api/maps/maps.ba.go | 1604 +++++++ examples/bin_api/memif.api.json | 3 +- examples/bin_api/memif/memif.ba.go | 600 +-- examples/bin_api/stats.api.json | 239 +- examples/bin_api/stats/stats.ba.go | 2916 +++++++----- examples/bin_api/tap.api.json | 3 +- examples/bin_api/tap/tap.ba.go | 498 +- examples/bin_api/vpe.api.json | 91 +- examples/bin_api/vpe/vpe.ba.go | 935 ++-- examples/cmd/union-example/union_example.go | 2 +- 23 files changed, 12781 insertions(+), 7878 deletions(-) create mode 100644 examples/bin_api/map.api.json create mode 100644 examples/bin_api/maps/maps.ba.go diff --git a/cmd/binapi-generator/definitions.go b/cmd/binapi-generator/definitions.go index 3ad782f..0176278 100644 --- a/cmd/binapi-generator/definitions.go +++ b/cmd/binapi-generator/definitions.go @@ -25,6 +25,8 @@ func getBinapiTypeSize(binapiType string) int { b, err := strconv.Atoi(strings.TrimLeft(binapiType, "uif")) if err == nil { return b / 8 + } else { + return 1 } } return -1 @@ -32,15 +34,16 @@ func getBinapiTypeSize(binapiType string) int { // binapiTypes is a set of types used VPP binary API for translation to Go types var binapiTypes = map[string]string{ - "u8": "uint8", - "i8": "int8", - "u16": "uint16", - "i16": "int16", - "u32": "uint32", - "i32": "int32", - "u64": "uint64", - "i64": "int64", - "f64": "float64", + "bool": "bool", + "u8": "uint8", + "i8": "int8", + "u16": "uint16", + "i16": "int16", + "u32": "uint32", + "i32": "int32", + "u64": "uint64", + "i64": "int64", + "f64": "float64", } func usesInitialism(s string) string { diff --git a/cmd/binapi-generator/generate.go b/cmd/binapi-generator/generate.go index 7cfe338..22b4af6 100644 --- a/cmd/binapi-generator/generate.go +++ b/cmd/binapi-generator/generate.go @@ -35,9 +35,7 @@ type context struct { inputFile string // input file with VPP API in JSON outputFile string // output file with generated Go package - inputData []byte // contents of the input file - inputBuff *bytes.Buffer // contents of the input file currently being read - inputLine int // currently processed line in the input file + inputData []byte // contents of the input file moduleName string // name of the source VPP module packageName string // name of the Go package being generated @@ -87,28 +85,40 @@ func generatePackage(ctx *context, w *bufio.Writer) error { if *includeAPIVer { const APIVerConstName = "VlAPIVersion" - fmt.Fprintf(w, "// %s represents version of the API.\n", APIVerConstName) + fmt.Fprintf(w, "// %s represents version of the binary API module.\n", APIVerConstName) fmt.Fprintf(w, "const %s = %v\n", APIVerConstName, ctx.packageData.APIVersion) fmt.Fprintln(w) } + // generate services + if len(ctx.packageData.Services) > 0 { + generateServices(ctx, w, ctx.packageData.Services) + } + + // TODO: generate implementation for Services interface + // generate enums if len(ctx.packageData.Enums) > 0 { fmt.Fprintf(w, "/* Enums */\n\n") - ctx.inputBuff = bytes.NewBuffer(ctx.inputData) - ctx.inputLine = 0 for _, enum := range ctx.packageData.Enums { generateEnum(ctx, w, &enum) } } + // generate aliases + if len(ctx.packageData.Aliases) > 0 { + fmt.Fprintf(w, "/* Aliases */\n\n") + + for _, alias := range ctx.packageData.Aliases { + generateAlias(ctx, w, &alias) + } + } + // generate types if len(ctx.packageData.Types) > 0 { fmt.Fprintf(w, "/* Types */\n\n") - ctx.inputBuff = bytes.NewBuffer(ctx.inputData) - ctx.inputLine = 0 for _, typ := range ctx.packageData.Types { generateType(ctx, w, &typ) } @@ -118,8 +128,6 @@ func generatePackage(ctx *context, w *bufio.Writer) error { if len(ctx.packageData.Unions) > 0 { fmt.Fprintf(w, "/* Unions */\n\n") - ctx.inputBuff = bytes.NewBuffer(ctx.inputData) - ctx.inputLine = 0 for _, union := range ctx.packageData.Unions { generateUnion(ctx, w, &union) } @@ -129,28 +137,11 @@ func generatePackage(ctx *context, w *bufio.Writer) error { if len(ctx.packageData.Messages) > 0 { fmt.Fprintf(w, "/* Messages */\n\n") - ctx.inputBuff = bytes.NewBuffer(ctx.inputData) - ctx.inputLine = 0 for _, msg := range ctx.packageData.Messages { generateMessage(ctx, w, &msg) } } - // generate services - if len(ctx.packageData.Services) > 0 { - fmt.Fprintf(w, "/* Services */\n\n") - - ctx.inputBuff = bytes.NewBuffer(ctx.inputData) - ctx.inputLine = 0 - fmt.Fprintf(w, "type %s interface {\n", "Services") - for _, svc := range ctx.packageData.Services { - generateService(ctx, w, &svc) - } - fmt.Fprintln(w, "}") - } - - // TODO: generate implementation for Services interface - // generate message registrations fmt.Fprintln(w) fmt.Fprintln(w, "func init() {") @@ -181,13 +172,18 @@ func generateHeader(ctx *context, w io.Writer) { var printObjNum = func(obj string, num int) { if num > 0 { if num > 1 { - obj += "s" + if strings.HasSuffix(obj, "s") { + obj += "es" + } else { + obj += "s" + } } fmt.Fprintf(w, "\t%3d %s\n", num, obj) } } printObjNum("message", len(ctx.packageData.Messages)) printObjNum("type", len(ctx.packageData.Types)) + printObjNum("alias", len(ctx.packageData.Aliases)) printObjNum("enum", len(ctx.packageData.Enums)) printObjNum("union", len(ctx.packageData.Unions)) printObjNum("service", len(ctx.packageData.Services)) @@ -213,44 +209,96 @@ func generateImports(ctx *context, w io.Writer) { // generateComment writes generated comment for the object into w func generateComment(ctx *context, w io.Writer, goName string, vppName string, objKind string) { - fmt.Fprintf(w, "// %s represents the VPP binary API %s '%s'.\n", goName, objKind, vppName) + if objKind == "service" { + fmt.Fprintf(w, "// %s represents VPP binary API services:\n", goName) + } else { + fmt.Fprintf(w, "// %s represents VPP binary API %s '%s':\n", goName, objKind, vppName) + } var isNotSpace = func(r rune) bool { return !unicode.IsSpace(r) } // print out the source of the generated object + mapType := false objFound := false objTitle := fmt.Sprintf(`"%s",`, vppName) + switch objKind { + case "alias", "service": + objTitle = fmt.Sprintf(`"%s": {`, vppName) + mapType = true + } + + inputBuff := bytes.NewBuffer(ctx.inputData) + inputLine := 0 + + var trimIndent string var indent int for { - line, err := ctx.inputBuff.ReadString('\n') + line, err := inputBuff.ReadString('\n') if err != nil { break } - ctx.inputLine++ + inputLine++ + noSpaceAt := strings.IndexFunc(line, isNotSpace) if !objFound { indent = strings.Index(line, objTitle) if indent == -1 { continue } + trimIndent = line[:indent] // If no other non-whitespace character then we are at the message header. if trimmed := strings.TrimSpace(line); trimmed == objTitle { objFound = true fmt.Fprintln(w, "//") } - } else { - if strings.IndexFunc(line, isNotSpace) < indent { - break // end of the object definition in JSON - } + } else if noSpaceAt < indent { + break // end of the definition in JSON for array types + } else if objFound && mapType && noSpaceAt <= indent { + fmt.Fprintf(w, "//\t%s", strings.TrimPrefix(line, trimIndent)) + break // end of the definition in JSON for map types (aliases, services) } - fmt.Fprint(w, "//", line) + fmt.Fprintf(w, "//\t%s", strings.TrimPrefix(line, trimIndent)) } fmt.Fprintln(w, "//") } +// generateServices writes generated code for the Services interface into w +func generateServices(ctx *context, w *bufio.Writer, services []Service) { + // generate services comment + generateComment(ctx, w, "Services", "services", "service") + + // generate interface + fmt.Fprintf(w, "type %s interface {\n", "Services") + for _, svc := range ctx.packageData.Services { + generateService(ctx, w, &svc) + } + fmt.Fprintln(w, "}") + + fmt.Fprintln(w) +} + +// generateService writes generated code for the service into w +func generateService(ctx *context, w io.Writer, svc *Service) { + reqTyp := camelCaseName(svc.RequestType) + + // method name is same as parameter type name by default + method := svc.MethodName() + params := fmt.Sprintf("*%s", reqTyp) + returns := "error" + if replyType := camelCaseName(svc.ReplyType); replyType != "" { + repTyp := fmt.Sprintf("*%s", replyType) + if svc.Stream { + repTyp = fmt.Sprintf("[]%s", repTyp) + } + returns = fmt.Sprintf("(%s, error)", repTyp) + } + + fmt.Fprintf(w, "\t%s(%s) %s\n", method, params, returns) +} + // generateEnum writes generated code for the enum into w func generateEnum(ctx *context, w io.Writer, enum *Enum) { name := camelCaseName(enum.Name) @@ -277,6 +325,28 @@ func generateEnum(ctx *context, w io.Writer, enum *Enum) { fmt.Fprintln(w) } +// generateAlias writes generated code for the alias into w +func generateAlias(ctx *context, w io.Writer, alias *Alias) { + name := camelCaseName(alias.Name) + + logf(" writing type %q (%s), length: %d", alias.Name, name, alias.Length) + + // generate struct comment + generateComment(ctx, w, name, alias.Name, "alias") + + // generate struct definition + fmt.Fprintf(w, "type %s ", name) + + if alias.Length > 0 { + fmt.Fprintf(w, "[%d]", alias.Length) + } + + dataType := convertToGoType(ctx, alias.Type) + fmt.Fprintf(w, "%s\n", dataType) + + fmt.Fprintln(w) +} + // generateType writes generated code for the type into w func generateType(ctx *context, w io.Writer, typ *Type) { name := camelCaseName(typ.Name) @@ -494,21 +564,6 @@ func generateField(ctx *context, w io.Writer, fields []Field, i int) { fmt.Fprintln(w) } -// generateService writes generated code for the service into w -func generateService(ctx *context, w io.Writer, svc *Service) { - reqTyp := camelCaseName(svc.RequestType) - - // method name is same as parameter type name by default - method := svc.MethodName() - params := fmt.Sprintf("*%s", reqTyp) - returns := "error" - if replyTyp := camelCaseName(svc.ReplyType); replyTyp != "" { - returns = fmt.Sprintf("(*%s, error)", replyTyp) - } - - fmt.Fprintf(w, "\t%s(%s) %s\n", method, params, returns) -} - // generateMessageNameGetter generates getter for original VPP message name into the provider writer func generateMessageNameGetter(w io.Writer, structName, msgName string) { fmt.Fprintf(w, `func (*%s) GetMessageName() string { diff --git a/cmd/binapi-generator/objects.go b/cmd/binapi-generator/objects.go index 2681085..97318cb 100644 --- a/cmd/binapi-generator/objects.go +++ b/cmd/binapi-generator/objects.go @@ -8,6 +8,7 @@ type Package struct { Enums []Enum Unions []Union Types []Type + Aliases []Alias Messages []Message Services []Service RefMap map[string]string @@ -37,6 +38,13 @@ type Type struct { Fields []Field } +// Alias represents VPP binary API alias +type Alias struct { + Name string + Type string + Length int +} + // Union represents VPP binary API union type Union struct { Name string @@ -105,16 +113,3 @@ func (s Service) IsRequestService() bool { // some binapi messages might have `null` reply (for example: memclnt) return s.ReplyType != "" && s.ReplyType != "null" // not null } - -func getSizeOfType(typ *Type) (size int) { - for _, field := range typ.Fields { - if n := getBinapiTypeSize(field.Type); n > 0 { - if field.Length > 0 { - size += n * field.Length - } else { - size += n - } - } - } - return size -} diff --git a/cmd/binapi-generator/parse.go b/cmd/binapi-generator/parse.go index 2d6fdd4..5dfbe91 100644 --- a/cmd/binapi-generator/parse.go +++ b/cmd/binapi-generator/parse.go @@ -23,26 +23,6 @@ import ( "github.com/bennyscetbun/jsongo" ) -func getTypeByRef(ctx *context, ref string) *Type { - for _, typ := range ctx.packageData.Types { - if ref == toApiType(typ.Name) { - return &typ - } - } - return nil -} - -func getUnionSize(ctx *context, union *Union) (maxSize int) { - for _, field := range union.Fields { - if typ := getTypeByRef(ctx, field.Type); typ != nil { - if size := getSizeOfType(typ); size > maxSize { - maxSize = size - } - } - } - return -} - // toApiType returns name that is used as type reference in VPP binary API func toApiType(name string) string { return fmt.Sprintf("vl_api_%s_t", name) @@ -50,13 +30,14 @@ func toApiType(name string) string { // parsePackage parses provided JSON data into objects prepared for code generation func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) { - logf(" %s contains: %d services, %d messages, %d types, %d enums, %d unions (version: %s)", + logf(" %s contains: %d services, %d messages, %d types, %d enums, %d unions, %d aliases (version: %s)", ctx.packageName, jsonRoot.Map("services").Len(), jsonRoot.Map("messages").Len(), jsonRoot.Map("types").Len(), jsonRoot.Map("enums").Len(), jsonRoot.Map("unions").Len(), + jsonRoot.Map("aliases").Len(), jsonRoot.Map("vl_api_version").Get(), ) @@ -79,6 +60,22 @@ func parsePackage(ctx *context, jsonRoot *jsongo.JSONNode) (*Package, error) { pkg.RefMap[toApiType(enum.Name)] = enum.Name } + // parse aliases + aliases := jsonRoot.Map("aliases") + if aliases.GetType() == jsongo.TypeMap { + pkg.Aliases = make([]Alias, aliases.Len()) + for i, key := range aliases.GetKeys() { + aliasNode := aliases.At(key) + + alias, err := parseAlias(ctx, key.(string), aliasNode) + if err != nil { + return nil, err + } + pkg.Aliases[i] = *alias + pkg.RefMap[toApiType(alias.Name)] = alias.Name + } + } + // parse types types := jsonRoot.Map("types") pkg.Types = make([]Type, types.Len()) @@ -308,6 +305,42 @@ func parseType(ctx *context, typeNode *jsongo.JSONNode) (*Type, error) { return &typ, nil } +const ( + aliasesLength = "length" + aliasesType = "type" +) + +// parseAlias parses VPP binary API alias object from JSON node +func parseAlias(ctx *context, aliasName string, aliasNode *jsongo.JSONNode) (*Alias, error) { + if aliasNode.Len() == 0 || aliasNode.At(aliasesType).GetType() != jsongo.TypeValue { + return nil, errors.New("invalid JSON for alias specified") + } + + alias := Alias{ + Name: aliasName, + } + + if typeNode := aliasNode.At(aliasesType); typeNode.GetType() == jsongo.TypeValue { + typ, ok := typeNode.Get().(string) + if !ok { + return nil, fmt.Errorf("alias type is %T, not a string", typeNode.Get()) + } + if typ != "null" { + alias.Type = typ + } + } + + if lengthNode := aliasNode.At(aliasesLength); lengthNode.GetType() == jsongo.TypeValue { + length, ok := lengthNode.Get().(float64) + if !ok { + return nil, fmt.Errorf("alias length is %T, not a float64", lengthNode.Get()) + } + alias.Length = int(length) + } + + return &alias, nil +} + // parseMessage parses VPP binary API message object from JSON node func parseMessage(ctx *context, msgNode *jsongo.JSONNode) (*Message, error) { if msgNode.Len() == 0 || msgNode.At(0).GetType() != jsongo.TypeValue { @@ -364,7 +397,7 @@ func parseField(ctx *context, field *jsongo.JSONNode) (*Field, error) { if field.Len() >= 3 { fieldLength, ok = field.At(2).Get().(float64) if !ok { - return nil, fmt.Errorf("field length is %T, not an int", field.At(2).Get()) + return nil, fmt.Errorf("field length is %T, not float64", field.At(2).Get()) } } var fieldLengthFrom string @@ -461,3 +494,62 @@ func convertToGoType(ctx *context, binapiType string) (typ string) { } return typ } + +func getSizeOfType(typ *Type) (size int) { + for _, field := range typ.Fields { + size += getSizeOfBinapiTypeLength(field.Type, field.Length) + } + return size +} + +func getSizeOfBinapiTypeLength(typ string, length int) (size int) { + if n := getBinapiTypeSize(typ); n > 0 { + if length > 0 { + return n * length + } else { + return n + } + } + return +} + +func getTypeByRef(ctx *context, ref string) *Type { + for _, typ := range ctx.packageData.Types { + if ref == toApiType(typ.Name) { + return &typ + } + } + return nil +} + +func getAliasByRef(ctx *context, ref string) *Alias { + for _, alias := range ctx.packageData.Aliases { + if ref == toApiType(alias.Name) { + return &alias + } + } + return nil +} + +func getUnionSize(ctx *context, union *Union) (maxSize int) { + for _, field := range union.Fields { + typ := getTypeByRef(ctx, field.Type) + if typ != nil { + if size := getSizeOfType(typ); size > maxSize { + maxSize = size + } + continue + } + alias := getAliasByRef(ctx, field.Type) + if alias != nil { + if size := getSizeOfBinapiTypeLength(alias.Type, alias.Length); size > maxSize { + maxSize = size + } + continue + } else { + logf("no type or alias found for union %s field type %q", union.Name, field.Type) + continue + } + } + return +} diff --git a/examples/bin_api/acl.api.json b/examples/bin_api/acl.api.json index 13b8665..1aa8285 100644 --- a/examples/bin_api/acl.api.json +++ b/examples/bin_api/acl.api.json @@ -84,6 +84,42 @@ "crc": "0xf6b0b8ca" } ], + [ + "acl_plugin_get_conn_table_max_entries", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "acl_plugin_get_conn_table_max_entries_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "u64", + "conn_table_max_entries" + ], + { + "crc": "0x7a096d3d" + } + ], [ "acl_add_replace", [ @@ -856,7 +892,7 @@ } ] ], - "vl_api_version": "0x25a6e1e9", + "vl_api_version": "0x8ed22cb9", "unions": [], "services": { "acl_plugin_get_version": { @@ -872,6 +908,9 @@ "acl_del": { "reply": "acl_del_reply" }, + "macip_acl_del": { + "reply": "macip_acl_del_reply" + }, "acl_plugin_control_ping": { "reply": "acl_plugin_control_ping_reply" }, @@ -885,11 +924,11 @@ "macip_acl_interface_add_del": { "reply": "macip_acl_interface_add_del_reply" }, - "macip_acl_del": { - "reply": "macip_acl_del_reply" + "acl_add_replace": { + "reply": "acl_add_replace_reply" }, - "macip_acl_add": { - "reply": "macip_acl_add_reply" + "acl_plugin_get_conn_table_max_entries": { + "reply": "acl_plugin_get_conn_table_max_entries_reply" }, "acl_interface_list_dump": { "reply": "acl_interface_list_details", @@ -898,8 +937,8 @@ "acl_interface_set_acl_list": { "reply": "acl_interface_set_acl_list_reply" }, - "acl_add_replace": { - "reply": "acl_add_replace_reply" + "macip_acl_add": { + "reply": "macip_acl_add_reply" }, "acl_interface_set_etype_whitelist": { "reply": "acl_interface_set_etype_whitelist_reply" @@ -1011,5 +1050,6 @@ "crc": "0x70589f1e" } ] - ] + ], + "aliases": {} } diff --git a/examples/bin_api/acl/acl.ba.go b/examples/bin_api/acl/acl.ba.go index 47b79cf..eff85d4 100644 --- a/examples/bin_api/acl/acl.ba.go +++ b/examples/bin_api/acl/acl.ba.go @@ -5,9 +5,9 @@ Package acl is a generated from VPP binary API module 'acl'. It contains following objects: - 34 messages + 36 messages 2 types - 17 services + 18 services */ package acl @@ -21,68 +21,153 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "acl_plugin_get_version": { +// "reply": "acl_plugin_get_version_reply" +// }, +// "acl_dump": { +// "reply": "acl_details", +// "stream": true +// }, +// "acl_interface_add_del": { +// "reply": "acl_interface_add_del_reply" +// }, +// "acl_del": { +// "reply": "acl_del_reply" +// }, +// "macip_acl_del": { +// "reply": "macip_acl_del_reply" +// }, +// "acl_plugin_control_ping": { +// "reply": "acl_plugin_control_ping_reply" +// }, +// "macip_acl_interface_get": { +// "reply": "macip_acl_interface_get_reply" +// }, +// "acl_interface_etype_whitelist_dump": { +// "reply": "acl_interface_etype_whitelist_details", +// "stream": true +// }, +// "macip_acl_interface_add_del": { +// "reply": "macip_acl_interface_add_del_reply" +// }, +// "acl_add_replace": { +// "reply": "acl_add_replace_reply" +// }, +// "acl_plugin_get_conn_table_max_entries": { +// "reply": "acl_plugin_get_conn_table_max_entries_reply" +// }, +// "acl_interface_list_dump": { +// "reply": "acl_interface_list_details", +// "stream": true +// }, +// "acl_interface_set_acl_list": { +// "reply": "acl_interface_set_acl_list_reply" +// }, +// "macip_acl_add": { +// "reply": "macip_acl_add_reply" +// }, +// "acl_interface_set_etype_whitelist": { +// "reply": "acl_interface_set_etype_whitelist_reply" +// }, +// "macip_acl_add_replace": { +// "reply": "macip_acl_add_replace_reply" +// }, +// "macip_acl_dump": { +// "reply": "macip_acl_details", +// "stream": true +// }, +// "macip_acl_interface_list_dump": { +// "reply": "macip_acl_interface_list_details", +// "stream": true +// } +// }, +// +type Services interface { + DumpACL(*ACLDump) ([]*ACLDetails, error) + DumpACLInterfaceEtypeWhitelist(*ACLInterfaceEtypeWhitelistDump) ([]*ACLInterfaceEtypeWhitelistDetails, error) + DumpACLInterfaceList(*ACLInterfaceListDump) ([]*ACLInterfaceListDetails, error) + DumpMacipACL(*MacipACLDump) ([]*MacipACLDetails, error) + DumpMacipACLInterfaceList(*MacipACLInterfaceListDump) ([]*MacipACLInterfaceListDetails, error) + ACLAddReplace(*ACLAddReplace) (*ACLAddReplaceReply, error) + ACLDel(*ACLDel) (*ACLDelReply, error) + ACLInterfaceAddDel(*ACLInterfaceAddDel) (*ACLInterfaceAddDelReply, error) + ACLInterfaceSetACLList(*ACLInterfaceSetACLList) (*ACLInterfaceSetACLListReply, error) + ACLInterfaceSetEtypeWhitelist(*ACLInterfaceSetEtypeWhitelist) (*ACLInterfaceSetEtypeWhitelistReply, error) + ACLPluginControlPing(*ACLPluginControlPing) (*ACLPluginControlPingReply, error) + ACLPluginGetConnTableMaxEntries(*ACLPluginGetConnTableMaxEntries) (*ACLPluginGetConnTableMaxEntriesReply, error) + ACLPluginGetVersion(*ACLPluginGetVersion) (*ACLPluginGetVersionReply, error) + MacipACLAdd(*MacipACLAdd) (*MacipACLAddReply, error) + MacipACLAddReplace(*MacipACLAddReplace) (*MacipACLAddReplaceReply, error) + MacipACLDel(*MacipACLDel) (*MacipACLDelReply, error) + MacipACLInterfaceAddDel(*MacipACLInterfaceAddDel) (*MacipACLInterfaceAddDelReply, error) + MacipACLInterfaceGet(*MacipACLInterfaceGet) (*MacipACLInterfaceGetReply, error) +} + /* Types */ -// ACLRule represents the VPP binary API type 'acl_rule'. -// -// "acl_rule", -// [ -// "u8", -// "is_permit" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "src_ip_addr", -// 16 -// ], -// [ -// "u8", -// "src_ip_prefix_len" -// ], -// [ -// "u8", -// "dst_ip_addr", -// 16 -// ], -// [ -// "u8", -// "dst_ip_prefix_len" -// ], -// [ -// "u8", -// "proto" -// ], -// [ -// "u16", -// "srcport_or_icmptype_first" -// ], -// [ -// "u16", -// "srcport_or_icmptype_last" -// ], -// [ -// "u16", -// "dstport_or_icmpcode_first" -// ], -// [ -// "u16", -// "dstport_or_icmpcode_last" -// ], -// [ -// "u8", -// "tcp_flags_mask" -// ], -// [ -// "u8", -// "tcp_flags_value" -// ], -// { -// "crc": "0x6f99bf4d" -// } +// ACLRule represents VPP binary API type 'acl_rule': +// +// "acl_rule", +// [ +// "u8", +// "is_permit" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "src_ip_addr", +// 16 +// ], +// [ +// "u8", +// "src_ip_prefix_len" +// ], +// [ +// "u8", +// "dst_ip_addr", +// 16 +// ], +// [ +// "u8", +// "dst_ip_prefix_len" +// ], +// [ +// "u8", +// "proto" +// ], +// [ +// "u16", +// "srcport_or_icmptype_first" +// ], +// [ +// "u16", +// "srcport_or_icmptype_last" +// ], +// [ +// "u16", +// "dstport_or_icmpcode_first" +// ], +// [ +// "u16", +// "dstport_or_icmpcode_last" +// ], +// [ +// "u8", +// "tcp_flags_mask" +// ], +// [ +// "u8", +// "tcp_flags_value" +// ], +// { +// "crc": "0x6f99bf4d" +// } // type ACLRule struct { IsPermit uint8 @@ -107,39 +192,39 @@ func (*ACLRule) GetCrcString() string { return "6f99bf4d" } -// MacipACLRule represents the VPP binary API type 'macip_acl_rule'. -// -// "macip_acl_rule", -// [ -// "u8", -// "is_permit" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "src_mac", -// 6 -// ], -// [ -// "u8", -// "src_mac_mask", -// 6 -// ], -// [ -// "u8", -// "src_ip_addr", -// 16 -// ], -// [ -// "u8", -// "src_ip_prefix_len" -// ], -// { -// "crc": "0x70589f1e" -// } +// MacipACLRule represents VPP binary API type 'macip_acl_rule': +// +// "macip_acl_rule", +// [ +// "u8", +// "is_permit" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "src_mac", +// 6 +// ], +// [ +// "u8", +// "src_mac_mask", +// 6 +// ], +// [ +// "u8", +// "src_ip_addr", +// 16 +// ], +// [ +// "u8", +// "src_ip_prefix_len" +// ], +// { +// "crc": "0x70589f1e" +// } // type MacipACLRule struct { IsPermit uint8 @@ -159,24 +244,24 @@ func (*MacipACLRule) GetCrcString() string { /* Messages */ -// ACLPluginGetVersion represents the VPP binary API message 'acl_plugin_get_version'. -// -// "acl_plugin_get_version", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ACLPluginGetVersion represents VPP binary API message 'acl_plugin_get_version': +// +// "acl_plugin_get_version", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ACLPluginGetVersion struct{} @@ -190,28 +275,28 @@ func (*ACLPluginGetVersion) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLPluginGetVersionReply represents the VPP binary API message 'acl_plugin_get_version_reply'. -// -// "acl_plugin_get_version_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "major" -// ], -// [ -// "u32", -// "minor" -// ], -// { -// "crc": "0x9b32cf86" -// } +// ACLPluginGetVersionReply represents VPP binary API message 'acl_plugin_get_version_reply': +// +// "acl_plugin_get_version_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "major" +// ], +// [ +// "u32", +// "minor" +// ], +// { +// "crc": "0x9b32cf86" +// } // type ACLPluginGetVersionReply struct { Major uint32 @@ -228,24 +313,24 @@ func (*ACLPluginGetVersionReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLPluginControlPing represents the VPP binary API message 'acl_plugin_control_ping'. -// -// "acl_plugin_control_ping", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ACLPluginControlPing represents VPP binary API message 'acl_plugin_control_ping': +// +// "acl_plugin_control_ping", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ACLPluginControlPing struct{} @@ -259,32 +344,32 @@ func (*ACLPluginControlPing) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLPluginControlPingReply represents the VPP binary API message 'acl_plugin_control_ping_reply'. -// -// "acl_plugin_control_ping_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "vpe_pid" -// ], -// { -// "crc": "0xf6b0b8ca" -// } +// ACLPluginControlPingReply represents VPP binary API message 'acl_plugin_control_ping_reply': +// +// "acl_plugin_control_ping_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "vpe_pid" +// ], +// { +// "crc": "0xf6b0b8ca" +// } // type ACLPluginControlPingReply struct { Retval int32 @@ -302,43 +387,107 @@ func (*ACLPluginControlPingReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLAddReplace represents the VPP binary API message 'acl_add_replace'. -// -// "acl_add_replace", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_acl_rule_t", -// "r", -// 0, -// "count" -// ], -// { -// "crc": "0xe839997e" -// } +// ACLPluginGetConnTableMaxEntries represents VPP binary API message 'acl_plugin_get_conn_table_max_entries': +// +// "acl_plugin_get_conn_table_max_entries", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type ACLPluginGetConnTableMaxEntries struct{} + +func (*ACLPluginGetConnTableMaxEntries) GetMessageName() string { + return "acl_plugin_get_conn_table_max_entries" +} +func (*ACLPluginGetConnTableMaxEntries) GetCrcString() string { + return "51077d14" +} +func (*ACLPluginGetConnTableMaxEntries) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// ACLPluginGetConnTableMaxEntriesReply represents VPP binary API message 'acl_plugin_get_conn_table_max_entries_reply': +// +// "acl_plugin_get_conn_table_max_entries_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u64", +// "conn_table_max_entries" +// ], +// { +// "crc": "0x7a096d3d" +// } +// +type ACLPluginGetConnTableMaxEntriesReply struct { + ConnTableMaxEntries uint64 +} + +func (*ACLPluginGetConnTableMaxEntriesReply) GetMessageName() string { + return "acl_plugin_get_conn_table_max_entries_reply" +} +func (*ACLPluginGetConnTableMaxEntriesReply) GetCrcString() string { + return "7a096d3d" +} +func (*ACLPluginGetConnTableMaxEntriesReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// ACLAddReplace represents VPP binary API message 'acl_add_replace': +// +// "acl_add_replace", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_acl_rule_t", +// "r", +// 0, +// "count" +// ], +// { +// "crc": "0xe839997e" +// } // type ACLAddReplace struct { ACLIndex uint32 @@ -357,28 +506,28 @@ func (*ACLAddReplace) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLAddReplaceReply represents the VPP binary API message 'acl_add_replace_reply'. -// -// "acl_add_replace_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xac407b0c" -// } +// ACLAddReplaceReply represents VPP binary API message 'acl_add_replace_reply': +// +// "acl_add_replace_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xac407b0c" +// } // type ACLAddReplaceReply struct { ACLIndex uint32 @@ -395,28 +544,28 @@ func (*ACLAddReplaceReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLDel represents the VPP binary API message 'acl_del'. -// -// "acl_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0xef34fea4" -// } +// ACLDel represents VPP binary API message 'acl_del': +// +// "acl_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0xef34fea4" +// } // type ACLDel struct { ACLIndex uint32 @@ -432,24 +581,24 @@ func (*ACLDel) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLDelReply represents the VPP binary API message 'acl_del_reply'. -// -// "acl_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ACLDelReply represents VPP binary API message 'acl_del_reply': +// +// "acl_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ACLDelReply struct { Retval int32 @@ -465,40 +614,40 @@ func (*ACLDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLInterfaceAddDel represents the VPP binary API message 'acl_interface_add_del'. -// -// "acl_interface_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_input" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0x0b2aedd1" -// } +// ACLInterfaceAddDel represents VPP binary API message 'acl_interface_add_del': +// +// "acl_interface_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_input" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0x0b2aedd1" +// } // type ACLInterfaceAddDel struct { IsAdd uint8 @@ -517,24 +666,24 @@ func (*ACLInterfaceAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLInterfaceAddDelReply represents the VPP binary API message 'acl_interface_add_del_reply'. -// -// "acl_interface_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ACLInterfaceAddDelReply represents VPP binary API message 'acl_interface_add_del_reply': +// +// "acl_interface_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ACLInterfaceAddDelReply struct { Retval int32 @@ -550,42 +699,42 @@ func (*ACLInterfaceAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLInterfaceSetACLList represents the VPP binary API message 'acl_interface_set_acl_list'. -// -// "acl_interface_set_acl_list", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "count" -// ], -// [ -// "u8", -// "n_input" -// ], -// [ -// "u32", -// "acls", -// 0, -// "count" -// ], -// { -// "crc": "0x8baece38" -// } +// ACLInterfaceSetACLList represents VPP binary API message 'acl_interface_set_acl_list': +// +// "acl_interface_set_acl_list", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "count" +// ], +// [ +// "u8", +// "n_input" +// ], +// [ +// "u32", +// "acls", +// 0, +// "count" +// ], +// { +// "crc": "0x8baece38" +// } // type ACLInterfaceSetACLList struct { SwIfIndex uint32 @@ -604,24 +753,24 @@ func (*ACLInterfaceSetACLList) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLInterfaceSetACLListReply represents the VPP binary API message 'acl_interface_set_acl_list_reply'. -// -// "acl_interface_set_acl_list_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ACLInterfaceSetACLListReply represents VPP binary API message 'acl_interface_set_acl_list_reply': +// +// "acl_interface_set_acl_list_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ACLInterfaceSetACLListReply struct { Retval int32 @@ -637,28 +786,28 @@ func (*ACLInterfaceSetACLListReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLDump represents the VPP binary API message 'acl_dump'. -// -// "acl_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0xef34fea4" -// } +// ACLDump represents VPP binary API message 'acl_dump': +// +// "acl_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0xef34fea4" +// } // type ACLDump struct { ACLIndex uint32 @@ -674,39 +823,39 @@ func (*ACLDump) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLDetails represents the VPP binary API message 'acl_details'. -// -// "acl_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_acl_rule_t", -// "r", -// 0, -// "count" -// ], -// { -// "crc": "0x5bd895be" -// } +// ACLDetails represents VPP binary API message 'acl_details': +// +// "acl_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_acl_rule_t", +// "r", +// 0, +// "count" +// ], +// { +// "crc": "0x5bd895be" +// } // type ACLDetails struct { ACLIndex uint32 @@ -725,28 +874,28 @@ func (*ACLDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLInterfaceListDump represents the VPP binary API message 'acl_interface_list_dump'. -// -// "acl_interface_list_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// ACLInterfaceListDump represents VPP binary API message 'acl_interface_list_dump': +// +// "acl_interface_list_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type ACLInterfaceListDump struct { SwIfIndex uint32 @@ -762,38 +911,38 @@ func (*ACLInterfaceListDump) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLInterfaceListDetails represents the VPP binary API message 'acl_interface_list_details'. -// -// "acl_interface_list_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "count" -// ], -// [ -// "u8", -// "n_input" -// ], -// [ -// "u32", -// "acls", -// 0, -// "count" -// ], -// { -// "crc": "0xd5e80809" -// } +// ACLInterfaceListDetails represents VPP binary API message 'acl_interface_list_details': +// +// "acl_interface_list_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "count" +// ], +// [ +// "u8", +// "n_input" +// ], +// [ +// "u32", +// "acls", +// 0, +// "count" +// ], +// { +// "crc": "0xd5e80809" +// } // type ACLInterfaceListDetails struct { SwIfIndex uint32 @@ -812,39 +961,39 @@ func (*ACLInterfaceListDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLAdd represents the VPP binary API message 'macip_acl_add'. -// -// "macip_acl_add", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_macip_acl_rule_t", -// "r", -// 0, -// "count" -// ], -// { -// "crc": "0xb3d3d65a" -// } +// MacipACLAdd represents VPP binary API message 'macip_acl_add': +// +// "macip_acl_add", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_macip_acl_rule_t", +// "r", +// 0, +// "count" +// ], +// { +// "crc": "0xb3d3d65a" +// } // type MacipACLAdd struct { Tag []byte `struc:"[64]byte"` @@ -862,28 +1011,28 @@ func (*MacipACLAdd) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLAddReply represents the VPP binary API message 'macip_acl_add_reply'. -// -// "macip_acl_add_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xac407b0c" -// } +// MacipACLAddReply represents VPP binary API message 'macip_acl_add_reply': +// +// "macip_acl_add_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xac407b0c" +// } // type MacipACLAddReply struct { ACLIndex uint32 @@ -900,43 +1049,43 @@ func (*MacipACLAddReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLAddReplace represents the VPP binary API message 'macip_acl_add_replace'. -// -// "macip_acl_add_replace", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_macip_acl_rule_t", -// "r", -// 0, -// "count" -// ], -// { -// "crc": "0xa0e8c01b" -// } +// MacipACLAddReplace represents VPP binary API message 'macip_acl_add_replace': +// +// "macip_acl_add_replace", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_macip_acl_rule_t", +// "r", +// 0, +// "count" +// ], +// { +// "crc": "0xa0e8c01b" +// } // type MacipACLAddReplace struct { ACLIndex uint32 @@ -955,28 +1104,28 @@ func (*MacipACLAddReplace) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLAddReplaceReply represents the VPP binary API message 'macip_acl_add_replace_reply'. -// -// "macip_acl_add_replace_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xac407b0c" -// } +// MacipACLAddReplaceReply represents VPP binary API message 'macip_acl_add_replace_reply': +// +// "macip_acl_add_replace_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xac407b0c" +// } // type MacipACLAddReplaceReply struct { ACLIndex uint32 @@ -993,28 +1142,28 @@ func (*MacipACLAddReplaceReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLDel represents the VPP binary API message 'macip_acl_del'. -// -// "macip_acl_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0xef34fea4" -// } +// MacipACLDel represents VPP binary API message 'macip_acl_del': +// +// "macip_acl_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0xef34fea4" +// } // type MacipACLDel struct { ACLIndex uint32 @@ -1030,24 +1179,24 @@ func (*MacipACLDel) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLDelReply represents the VPP binary API message 'macip_acl_del_reply'. -// -// "macip_acl_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// MacipACLDelReply represents VPP binary API message 'macip_acl_del_reply': +// +// "macip_acl_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type MacipACLDelReply struct { Retval int32 @@ -1063,36 +1212,36 @@ func (*MacipACLDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLInterfaceAddDel represents the VPP binary API message 'macip_acl_interface_add_del'. -// -// "macip_acl_interface_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0x6a6be97c" -// } +// MacipACLInterfaceAddDel represents VPP binary API message 'macip_acl_interface_add_del': +// +// "macip_acl_interface_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0x6a6be97c" +// } // type MacipACLInterfaceAddDel struct { IsAdd uint8 @@ -1110,24 +1259,24 @@ func (*MacipACLInterfaceAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLInterfaceAddDelReply represents the VPP binary API message 'macip_acl_interface_add_del_reply'. -// -// "macip_acl_interface_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// MacipACLInterfaceAddDelReply represents VPP binary API message 'macip_acl_interface_add_del_reply': +// +// "macip_acl_interface_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type MacipACLInterfaceAddDelReply struct { Retval int32 @@ -1143,28 +1292,28 @@ func (*MacipACLInterfaceAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLDump represents the VPP binary API message 'macip_acl_dump'. -// -// "macip_acl_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// { -// "crc": "0xef34fea4" -// } +// MacipACLDump represents VPP binary API message 'macip_acl_dump': +// +// "macip_acl_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// { +// "crc": "0xef34fea4" +// } // type MacipACLDump struct { ACLIndex uint32 @@ -1180,39 +1329,39 @@ func (*MacipACLDump) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLDetails represents the VPP binary API message 'macip_acl_details'. -// -// "macip_acl_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "acl_index" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_macip_acl_rule_t", -// "r", -// 0, -// "count" -// ], -// { -// "crc": "0xdd2b55ba" -// } +// MacipACLDetails represents VPP binary API message 'macip_acl_details': +// +// "macip_acl_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "acl_index" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_macip_acl_rule_t", +// "r", +// 0, +// "count" +// ], +// { +// "crc": "0xdd2b55ba" +// } // type MacipACLDetails struct { ACLIndex uint32 @@ -1231,24 +1380,24 @@ func (*MacipACLDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLInterfaceGet represents the VPP binary API message 'macip_acl_interface_get'. -// -// "macip_acl_interface_get", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// MacipACLInterfaceGet represents VPP binary API message 'macip_acl_interface_get': +// +// "macip_acl_interface_get", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type MacipACLInterfaceGet struct{} @@ -1262,30 +1411,30 @@ func (*MacipACLInterfaceGet) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLInterfaceGetReply represents the VPP binary API message 'macip_acl_interface_get_reply'. -// -// "macip_acl_interface_get_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u32", -// "acls", -// 0, -// "count" -// ], -// { -// "crc": "0xaccf9b05" -// } +// MacipACLInterfaceGetReply represents VPP binary API message 'macip_acl_interface_get_reply': +// +// "macip_acl_interface_get_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "acls", +// 0, +// "count" +// ], +// { +// "crc": "0xaccf9b05" +// } // type MacipACLInterfaceGetReply struct { Count uint32 `struc:"sizeof=Acls"` @@ -1302,28 +1451,28 @@ func (*MacipACLInterfaceGetReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MacipACLInterfaceListDump represents the VPP binary API message 'macip_acl_interface_list_dump'. -// -// "macip_acl_interface_list_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// MacipACLInterfaceListDump represents VPP binary API message 'macip_acl_interface_list_dump': +// +// "macip_acl_interface_list_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type MacipACLInterfaceListDump struct { SwIfIndex uint32 @@ -1339,34 +1488,34 @@ func (*MacipACLInterfaceListDump) GetMessageType() api.MessageType { return api.RequestMessage } -// MacipACLInterfaceListDetails represents the VPP binary API message 'macip_acl_interface_list_details'. -// -// "macip_acl_interface_list_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "count" -// ], -// [ -// "u32", -// "acls", -// 0, -// "count" -// ], -// { -// "crc": "0x29783fa0" -// } +// MacipACLInterfaceListDetails represents VPP binary API message 'macip_acl_interface_list_details': +// +// "macip_acl_interface_list_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "count" +// ], +// [ +// "u32", +// "acls", +// 0, +// "count" +// ], +// { +// "crc": "0x29783fa0" +// } // type MacipACLInterfaceListDetails struct { SwIfIndex uint32 @@ -1384,42 +1533,42 @@ func (*MacipACLInterfaceListDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLInterfaceSetEtypeWhitelist represents the VPP binary API message 'acl_interface_set_etype_whitelist'. -// -// "acl_interface_set_etype_whitelist", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "count" -// ], -// [ -// "u8", -// "n_input" -// ], -// [ -// "u16", -// "whitelist", -// 0, -// "count" -// ], -// { -// "crc": "0xf515efc5" -// } +// ACLInterfaceSetEtypeWhitelist represents VPP binary API message 'acl_interface_set_etype_whitelist': +// +// "acl_interface_set_etype_whitelist", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "count" +// ], +// [ +// "u8", +// "n_input" +// ], +// [ +// "u16", +// "whitelist", +// 0, +// "count" +// ], +// { +// "crc": "0xf515efc5" +// } // type ACLInterfaceSetEtypeWhitelist struct { SwIfIndex uint32 @@ -1438,24 +1587,24 @@ func (*ACLInterfaceSetEtypeWhitelist) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLInterfaceSetEtypeWhitelistReply represents the VPP binary API message 'acl_interface_set_etype_whitelist_reply'. -// -// "acl_interface_set_etype_whitelist_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ACLInterfaceSetEtypeWhitelistReply represents VPP binary API message 'acl_interface_set_etype_whitelist_reply': +// +// "acl_interface_set_etype_whitelist_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ACLInterfaceSetEtypeWhitelistReply struct { Retval int32 @@ -1471,28 +1620,28 @@ func (*ACLInterfaceSetEtypeWhitelistReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ACLInterfaceEtypeWhitelistDump represents the VPP binary API message 'acl_interface_etype_whitelist_dump'. -// -// "acl_interface_etype_whitelist_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// ACLInterfaceEtypeWhitelistDump represents VPP binary API message 'acl_interface_etype_whitelist_dump': +// +// "acl_interface_etype_whitelist_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type ACLInterfaceEtypeWhitelistDump struct { SwIfIndex uint32 @@ -1508,38 +1657,38 @@ func (*ACLInterfaceEtypeWhitelistDump) GetMessageType() api.MessageType { return api.RequestMessage } -// ACLInterfaceEtypeWhitelistDetails represents the VPP binary API message 'acl_interface_etype_whitelist_details'. -// -// "acl_interface_etype_whitelist_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "count" -// ], -// [ -// "u8", -// "n_input" -// ], -// [ -// "u16", -// "whitelist", -// 0, -// "count" -// ], -// { -// "crc": "0x6a5d4e81" -// } +// ACLInterfaceEtypeWhitelistDetails represents VPP binary API message 'acl_interface_etype_whitelist_details': +// +// "acl_interface_etype_whitelist_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "count" +// ], +// [ +// "u8", +// "n_input" +// ], +// [ +// "u16", +// "whitelist", +// 0, +// "count" +// ], +// { +// "crc": "0x6a5d4e81" +// } // type ACLInterfaceEtypeWhitelistDetails struct { SwIfIndex uint32 @@ -1558,33 +1707,13 @@ func (*ACLInterfaceEtypeWhitelistDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - DumpACL(*ACLDump) (*ACLDetails, error) - DumpACLInterfaceEtypeWhitelist(*ACLInterfaceEtypeWhitelistDump) (*ACLInterfaceEtypeWhitelistDetails, error) - DumpACLInterfaceList(*ACLInterfaceListDump) (*ACLInterfaceListDetails, error) - DumpMacipACL(*MacipACLDump) (*MacipACLDetails, error) - DumpMacipACLInterfaceList(*MacipACLInterfaceListDump) (*MacipACLInterfaceListDetails, error) - ACLAddReplace(*ACLAddReplace) (*ACLAddReplaceReply, error) - ACLDel(*ACLDel) (*ACLDelReply, error) - ACLInterfaceAddDel(*ACLInterfaceAddDel) (*ACLInterfaceAddDelReply, error) - ACLInterfaceSetACLList(*ACLInterfaceSetACLList) (*ACLInterfaceSetACLListReply, error) - ACLInterfaceSetEtypeWhitelist(*ACLInterfaceSetEtypeWhitelist) (*ACLInterfaceSetEtypeWhitelistReply, error) - ACLPluginControlPing(*ACLPluginControlPing) (*ACLPluginControlPingReply, error) - ACLPluginGetVersion(*ACLPluginGetVersion) (*ACLPluginGetVersionReply, error) - MacipACLAdd(*MacipACLAdd) (*MacipACLAddReply, error) - MacipACLAddReplace(*MacipACLAddReplace) (*MacipACLAddReplaceReply, error) - MacipACLDel(*MacipACLDel) (*MacipACLDelReply, error) - MacipACLInterfaceAddDel(*MacipACLInterfaceAddDel) (*MacipACLInterfaceAddDelReply, error) - MacipACLInterfaceGet(*MacipACLInterfaceGet) (*MacipACLInterfaceGetReply, error) -} - func init() { api.RegisterMessage((*ACLPluginGetVersion)(nil), "acl.ACLPluginGetVersion") api.RegisterMessage((*ACLPluginGetVersionReply)(nil), "acl.ACLPluginGetVersionReply") api.RegisterMessage((*ACLPluginControlPing)(nil), "acl.ACLPluginControlPing") api.RegisterMessage((*ACLPluginControlPingReply)(nil), "acl.ACLPluginControlPingReply") + api.RegisterMessage((*ACLPluginGetConnTableMaxEntries)(nil), "acl.ACLPluginGetConnTableMaxEntries") + api.RegisterMessage((*ACLPluginGetConnTableMaxEntriesReply)(nil), "acl.ACLPluginGetConnTableMaxEntriesReply") api.RegisterMessage((*ACLAddReplace)(nil), "acl.ACLAddReplace") api.RegisterMessage((*ACLAddReplaceReply)(nil), "acl.ACLAddReplaceReply") api.RegisterMessage((*ACLDel)(nil), "acl.ACLDel") diff --git a/examples/bin_api/af_packet.api.json b/examples/bin_api/af_packet.api.json index d28c5bb..0d57e38 100644 --- a/examples/bin_api/af_packet.api.json +++ b/examples/bin_api/af_packet.api.json @@ -199,5 +199,6 @@ } }, "enums": [], - "types": [] + "types": [], + "aliases": {} } diff --git a/examples/bin_api/af_packet/af_packet.ba.go b/examples/bin_api/af_packet/af_packet.ba.go index 81c2b9d..93d5e58 100644 --- a/examples/bin_api/af_packet/af_packet.ba.go +++ b/examples/bin_api/af_packet/af_packet.ba.go @@ -20,40 +20,65 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "af_packet_dump": { +// "reply": "af_packet_details", +// "stream": true +// }, +// "af_packet_set_l4_cksum_offload": { +// "reply": "af_packet_set_l4_cksum_offload_reply" +// }, +// "af_packet_delete": { +// "reply": "af_packet_delete_reply" +// }, +// "af_packet_create": { +// "reply": "af_packet_create_reply" +// } +// }, +// +type Services interface { + DumpAfPacket(*AfPacketDump) ([]*AfPacketDetails, error) + AfPacketCreate(*AfPacketCreate) (*AfPacketCreateReply, error) + AfPacketDelete(*AfPacketDelete) (*AfPacketDeleteReply, error) + AfPacketSetL4CksumOffload(*AfPacketSetL4CksumOffload) (*AfPacketSetL4CksumOffloadReply, error) +} + /* Messages */ -// AfPacketCreate represents the VPP binary API message 'af_packet_create'. +// AfPacketCreate represents VPP binary API message 'af_packet_create': // -// "af_packet_create", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "host_if_name", -// 64 -// ], -// [ -// "u8", -// "hw_addr", -// 6 -// ], -// [ -// "u8", -// "use_random_hw_addr" -// ], -// { -// "crc": "0x6d5d30d6" -// } +// "af_packet_create", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "host_if_name", +// 64 +// ], +// [ +// "u8", +// "hw_addr", +// 6 +// ], +// [ +// "u8", +// "use_random_hw_addr" +// ], +// { +// "crc": "0x6d5d30d6" +// } // type AfPacketCreate struct { HostIfName []byte `struc:"[64]byte"` @@ -71,28 +96,28 @@ func (*AfPacketCreate) GetMessageType() api.MessageType { return api.RequestMessage } -// AfPacketCreateReply represents the VPP binary API message 'af_packet_create_reply'. +// AfPacketCreateReply represents VPP binary API message 'af_packet_create_reply': // -// "af_packet_create_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// "af_packet_create_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type AfPacketCreateReply struct { Retval int32 @@ -109,29 +134,29 @@ func (*AfPacketCreateReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// AfPacketDelete represents the VPP binary API message 'af_packet_delete'. +// AfPacketDelete represents VPP binary API message 'af_packet_delete': // -// "af_packet_delete", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "host_if_name", -// 64 -// ], -// { -// "crc": "0x3efceda3" -// } +// "af_packet_delete", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "host_if_name", +// 64 +// ], +// { +// "crc": "0x3efceda3" +// } // type AfPacketDelete struct { HostIfName []byte `struc:"[64]byte"` @@ -147,24 +172,24 @@ func (*AfPacketDelete) GetMessageType() api.MessageType { return api.RequestMessage } -// AfPacketDeleteReply represents the VPP binary API message 'af_packet_delete_reply'. +// AfPacketDeleteReply represents VPP binary API message 'af_packet_delete_reply': // -// "af_packet_delete_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// "af_packet_delete_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type AfPacketDeleteReply struct { Retval int32 @@ -180,32 +205,32 @@ func (*AfPacketDeleteReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// AfPacketSetL4CksumOffload represents the VPP binary API message 'af_packet_set_l4_cksum_offload'. +// AfPacketSetL4CksumOffload represents VPP binary API message 'af_packet_set_l4_cksum_offload': // -// "af_packet_set_l4_cksum_offload", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "sw_if_index" -// ], -// [ -// "u8", -// "set" -// ], -// { -// "crc": "0x86538585" -// } +// "af_packet_set_l4_cksum_offload", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "sw_if_index" +// ], +// [ +// "u8", +// "set" +// ], +// { +// "crc": "0x86538585" +// } // type AfPacketSetL4CksumOffload struct { SwIfIndex uint8 @@ -222,24 +247,24 @@ func (*AfPacketSetL4CksumOffload) GetMessageType() api.MessageType { return api.RequestMessage } -// AfPacketSetL4CksumOffloadReply represents the VPP binary API message 'af_packet_set_l4_cksum_offload_reply'. +// AfPacketSetL4CksumOffloadReply represents VPP binary API message 'af_packet_set_l4_cksum_offload_reply': // -// "af_packet_set_l4_cksum_offload_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// "af_packet_set_l4_cksum_offload_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type AfPacketSetL4CksumOffloadReply struct { Retval int32 @@ -255,24 +280,24 @@ func (*AfPacketSetL4CksumOffloadReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// AfPacketDump represents the VPP binary API message 'af_packet_dump'. +// AfPacketDump represents VPP binary API message 'af_packet_dump': // -// "af_packet_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// "af_packet_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type AfPacketDump struct{} @@ -286,29 +311,29 @@ func (*AfPacketDump) GetMessageType() api.MessageType { return api.RequestMessage } -// AfPacketDetails represents the VPP binary API message 'af_packet_details'. +// AfPacketDetails represents VPP binary API message 'af_packet_details': // -// "af_packet_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "host_if_name", -// 64 -// ], -// { -// "crc": "0x057205fa" -// } +// "af_packet_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "host_if_name", +// 64 +// ], +// { +// "crc": "0x057205fa" +// } // type AfPacketDetails struct { SwIfIndex uint32 @@ -325,15 +350,6 @@ func (*AfPacketDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - DumpAfPacket(*AfPacketDump) (*AfPacketDetails, error) - AfPacketCreate(*AfPacketCreate) (*AfPacketCreateReply, error) - AfPacketDelete(*AfPacketDelete) (*AfPacketDeleteReply, error) - AfPacketSetL4CksumOffload(*AfPacketSetL4CksumOffload) (*AfPacketSetL4CksumOffloadReply, error) -} - func init() { api.RegisterMessage((*AfPacketCreate)(nil), "af_packet.AfPacketCreate") api.RegisterMessage((*AfPacketCreateReply)(nil), "af_packet.AfPacketCreateReply") diff --git a/examples/bin_api/interface.api.json b/examples/bin_api/interface.api.json index 87c9358..db255aa 100644 --- a/examples/bin_api/interface.api.json +++ b/examples/bin_api/interface.api.json @@ -133,6 +133,50 @@ "crc": "0xe8d4e804" } ], + [ + "sw_interface_set_ip_directed_broadcast", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "sw_if_index" + ], + [ + "u8", + "enable" + ], + { + "crc": "0xa36fadc0" + } + ], + [ + "sw_interface_set_ip_directed_broadcast_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], [ "sw_interface_event", [ @@ -256,7 +300,7 @@ "link_duplex" ], [ - "u8", + "u32", "link_speed" ], [ @@ -352,7 +396,7 @@ "i_sid" ], { - "crc": "0x09b4b510" + "crc": "0xe4ee7eb6" } ], [ @@ -818,6 +862,114 @@ "crc": "0xe8d4e804" } ], + [ + "sw_interface_set_rx_placement", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "sw_if_index" + ], + [ + "u32", + "queue_id" + ], + [ + "u32", + "worker_id" + ], + [ + "u8", + "is_main" + ], + { + "crc": "0x4ef4377d" + } + ], + [ + "sw_interface_set_rx_placement_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "sw_interface_rx_placement_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "sw_if_index" + ], + { + "crc": "0x529cb13f" + } + ], + [ + "sw_interface_rx_placement_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "sw_if_index" + ], + [ + "u32", + "queue_id" + ], + [ + "u32", + "worker_id" + ], + [ + "u8", + "mode" + ], + { + "crc": "0x0e9e33f4" + } + ], [ "interface_name_renumber", [ @@ -1221,15 +1373,21 @@ } ] ], - "vl_api_version": "0x6a38a271", + "vl_api_version": "0x1ec8c073", "unions": [], "services": { "create_subif": { "reply": "create_subif_reply" }, + "sw_interface_set_ip_directed_broadcast": { + "reply": "sw_interface_set_ip_directed_broadcast_reply" + }, "delete_subif": { "reply": "delete_subif_reply" }, + "sw_interface_get_mac_address": { + "reply": "sw_interface_get_mac_address_reply" + }, "sw_interface_tag_add_del": { "reply": "sw_interface_tag_add_del_reply" }, @@ -1240,6 +1398,9 @@ "reply": "sw_interface_details", "stream": true }, + "sw_interface_set_rx_placement": { + "reply": "sw_interface_set_rx_placement_reply" + }, "sw_interface_add_del_address": { "reply": "sw_interface_add_del_address_reply" }, @@ -1252,8 +1413,8 @@ "create_loopback_instance": { "reply": "create_loopback_instance_reply" }, - "sw_interface_get_mac_address": { - "reply": "sw_interface_get_mac_address_reply" + "sw_interface_set_mtu": { + "reply": "sw_interface_set_mtu_reply" }, "want_interface_events": { "reply": "want_interface_events_reply", @@ -1273,11 +1434,12 @@ "sw_interface_set_mac_address": { "reply": "sw_interface_set_mac_address_reply" }, - "sw_interface_set_table": { - "reply": "sw_interface_set_table_reply" + "sw_interface_set_unnumbered": { + "reply": "sw_interface_set_unnumbered_reply" }, - "sw_interface_set_mtu": { - "reply": "sw_interface_set_mtu_reply" + "sw_interface_rx_placement_dump": { + "reply": "sw_interface_rx_placement_details", + "stream": true }, "sw_interface_set_flags": { "reply": "sw_interface_set_flags_reply" @@ -1291,8 +1453,8 @@ "create_vlan_subif": { "reply": "create_vlan_subif_reply" }, - "sw_interface_set_unnumbered": { - "reply": "sw_interface_set_unnumbered_reply" + "sw_interface_set_table": { + "reply": "sw_interface_set_table_reply" } }, "enums": [], @@ -1431,5 +1593,10 @@ "crc": "0x8bd65e2d" } ] - ] + ], + "aliases": { + "interface_index": { + "type": "u32" + } + } } diff --git a/examples/bin_api/interfaces/interfaces.ba.go b/examples/bin_api/interfaces/interfaces.ba.go index 6ab79d3..68a8b44 100644 --- a/examples/bin_api/interfaces/interfaces.ba.go +++ b/examples/bin_api/interfaces/interfaces.ba.go @@ -5,9 +5,10 @@ Package interfaces is a generated from VPP binary API module 'interface'. It contains following objects: - 45 messages + 51 messages 3 types - 22 services + 1 alias + 25 services */ package interfaces @@ -21,22 +22,145 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "create_subif": { +// "reply": "create_subif_reply" +// }, +// "sw_interface_set_ip_directed_broadcast": { +// "reply": "sw_interface_set_ip_directed_broadcast_reply" +// }, +// "delete_subif": { +// "reply": "delete_subif_reply" +// }, +// "sw_interface_get_mac_address": { +// "reply": "sw_interface_get_mac_address_reply" +// }, +// "sw_interface_tag_add_del": { +// "reply": "sw_interface_tag_add_del_reply" +// }, +// "collect_detailed_interface_stats": { +// "reply": "collect_detailed_interface_stats_reply" +// }, +// "sw_interface_dump": { +// "reply": "sw_interface_details", +// "stream": true +// }, +// "sw_interface_set_rx_placement": { +// "reply": "sw_interface_set_rx_placement_reply" +// }, +// "sw_interface_add_del_address": { +// "reply": "sw_interface_add_del_address_reply" +// }, +// "sw_interface_get_table": { +// "reply": "sw_interface_get_table_reply" +// }, +// "interface_name_renumber": { +// "reply": "interface_name_renumber_reply" +// }, +// "create_loopback_instance": { +// "reply": "create_loopback_instance_reply" +// }, +// "sw_interface_set_mtu": { +// "reply": "sw_interface_set_mtu_reply" +// }, +// "want_interface_events": { +// "reply": "want_interface_events_reply", +// "events": [ +// "sw_interface_event" +// ] +// }, +// "create_loopback": { +// "reply": "create_loopback_reply" +// }, +// "sw_interface_clear_stats": { +// "reply": "sw_interface_clear_stats_reply" +// }, +// "hw_interface_set_mtu": { +// "reply": "hw_interface_set_mtu_reply" +// }, +// "sw_interface_set_mac_address": { +// "reply": "sw_interface_set_mac_address_reply" +// }, +// "sw_interface_set_unnumbered": { +// "reply": "sw_interface_set_unnumbered_reply" +// }, +// "sw_interface_rx_placement_dump": { +// "reply": "sw_interface_rx_placement_details", +// "stream": true +// }, +// "sw_interface_set_flags": { +// "reply": "sw_interface_set_flags_reply" +// }, +// "delete_loopback": { +// "reply": "delete_loopback_reply" +// }, +// "sw_interface_set_rx_mode": { +// "reply": "sw_interface_set_rx_mode_reply" +// }, +// "create_vlan_subif": { +// "reply": "create_vlan_subif_reply" +// }, +// "sw_interface_set_table": { +// "reply": "sw_interface_set_table_reply" +// } +// }, +// +type Services interface { + DumpSwInterface(*SwInterfaceDump) ([]*SwInterfaceDetails, error) + DumpSwInterfaceRxPlacement(*SwInterfaceRxPlacementDump) ([]*SwInterfaceRxPlacementDetails, error) + CollectDetailedInterfaceStats(*CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error) + CreateLoopback(*CreateLoopback) (*CreateLoopbackReply, error) + CreateLoopbackInstance(*CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error) + CreateSubif(*CreateSubif) (*CreateSubifReply, error) + CreateVlanSubif(*CreateVlanSubif) (*CreateVlanSubifReply, error) + DeleteLoopback(*DeleteLoopback) (*DeleteLoopbackReply, error) + DeleteSubif(*DeleteSubif) (*DeleteSubifReply, error) + HwInterfaceSetMtu(*HwInterfaceSetMtu) (*HwInterfaceSetMtuReply, error) + InterfaceNameRenumber(*InterfaceNameRenumber) (*InterfaceNameRenumberReply, error) + SwInterfaceAddDelAddress(*SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error) + SwInterfaceClearStats(*SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error) + SwInterfaceGetMacAddress(*SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error) + SwInterfaceGetTable(*SwInterfaceGetTable) (*SwInterfaceGetTableReply, error) + SwInterfaceSetFlags(*SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error) + SwInterfaceSetIPDirectedBroadcast(*SwInterfaceSetIPDirectedBroadcast) (*SwInterfaceSetIPDirectedBroadcastReply, error) + SwInterfaceSetMacAddress(*SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error) + SwInterfaceSetMtu(*SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error) + SwInterfaceSetRxMode(*SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error) + SwInterfaceSetRxPlacement(*SwInterfaceSetRxPlacement) (*SwInterfaceSetRxPlacementReply, error) + SwInterfaceSetTable(*SwInterfaceSetTable) (*SwInterfaceSetTableReply, error) + SwInterfaceSetUnnumbered(*SwInterfaceSetUnnumbered) (*SwInterfaceSetUnnumberedReply, error) + SwInterfaceTagAddDel(*SwInterfaceTagAddDel) (*SwInterfaceTagAddDelReply, error) + WantInterfaceEvents(*WantInterfaceEvents) (*WantInterfaceEventsReply, error) +} + +/* Aliases */ + +// InterfaceIndex represents VPP binary API alias 'interface_index': +// +// "interface_index": { +// "type": "u32" +// } +// +type InterfaceIndex uint32 + /* Types */ -// VlibCounter represents the VPP binary API type 'vlib_counter'. -// -// "vlib_counter", -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0xce2325a2" -// } +// VlibCounter represents VPP binary API type 'vlib_counter': +// +// "vlib_counter", +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0xce2325a2" +// } // type VlibCounter struct { Packets uint64 @@ -50,80 +174,80 @@ func (*VlibCounter) GetCrcString() string { return "ce2325a2" } -// VnetCombinedCounter represents the VPP binary API type 'vnet_combined_counter'. -// -// "vnet_combined_counter", -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u64", -// "rx_packets" -// ], -// [ -// "u64", -// "rx_bytes" -// ], -// [ -// "u64", -// "rx_unicast_packets" -// ], -// [ -// "u64", -// "rx_unicast_bytes" -// ], -// [ -// "u64", -// "rx_multicast_packets" -// ], -// [ -// "u64", -// "rx_multicast_bytes" -// ], -// [ -// "u64", -// "rx_broadcast_packets" -// ], -// [ -// "u64", -// "rx_broadcast_bytes" -// ], -// [ -// "u64", -// "tx_packets" -// ], -// [ -// "u64", -// "tx_bytes" -// ], -// [ -// "u64", -// "tx_unicast_packets" -// ], -// [ -// "u64", -// "tx_unicast_bytes" -// ], -// [ -// "u64", -// "tx_multicast_packets" -// ], -// [ -// "u64", -// "tx_multicast_bytes" -// ], -// [ -// "u64", -// "tx_broadcast_packets" -// ], -// [ -// "u64", -// "tx_broadcast_bytes" -// ], -// { -// "crc": "0x20905ca4" -// } +// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter': +// +// "vnet_combined_counter", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u64", +// "rx_packets" +// ], +// [ +// "u64", +// "rx_bytes" +// ], +// [ +// "u64", +// "rx_unicast_packets" +// ], +// [ +// "u64", +// "rx_unicast_bytes" +// ], +// [ +// "u64", +// "rx_multicast_packets" +// ], +// [ +// "u64", +// "rx_multicast_bytes" +// ], +// [ +// "u64", +// "rx_broadcast_packets" +// ], +// [ +// "u64", +// "rx_broadcast_bytes" +// ], +// [ +// "u64", +// "tx_packets" +// ], +// [ +// "u64", +// "tx_bytes" +// ], +// [ +// "u64", +// "tx_unicast_packets" +// ], +// [ +// "u64", +// "tx_unicast_bytes" +// ], +// [ +// "u64", +// "tx_multicast_packets" +// ], +// [ +// "u64", +// "tx_multicast_bytes" +// ], +// [ +// "u64", +// "tx_broadcast_packets" +// ], +// [ +// "u64", +// "tx_broadcast_bytes" +// ], +// { +// "crc": "0x20905ca4" +// } // type VnetCombinedCounter struct { SwIfIndex uint32 @@ -152,52 +276,52 @@ func (*VnetCombinedCounter) GetCrcString() string { return "20905ca4" } -// VnetSimpleCounter represents the VPP binary API type 'vnet_simple_counter'. -// -// "vnet_simple_counter", -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u64", -// "drop" -// ], -// [ -// "u64", -// "punt" -// ], -// [ -// "u64", -// "rx_ip4" -// ], -// [ -// "u64", -// "rx_ip6" -// ], -// [ -// "u64", -// "rx_no_buffer" -// ], -// [ -// "u64", -// "rx_miss" -// ], -// [ -// "u64", -// "rx_error" -// ], -// [ -// "u64", -// "tx_error" -// ], -// [ -// "u64", -// "rx_mpls" -// ], -// { -// "crc": "0x8bd65e2d" -// } +// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter': +// +// "vnet_simple_counter", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u64", +// "drop" +// ], +// [ +// "u64", +// "punt" +// ], +// [ +// "u64", +// "rx_ip4" +// ], +// [ +// "u64", +// "rx_ip6" +// ], +// [ +// "u64", +// "rx_no_buffer" +// ], +// [ +// "u64", +// "rx_miss" +// ], +// [ +// "u64", +// "rx_error" +// ], +// [ +// "u64", +// "tx_error" +// ], +// [ +// "u64", +// "rx_mpls" +// ], +// { +// "crc": "0x8bd65e2d" +// } // type VnetSimpleCounter struct { SwIfIndex uint32 @@ -221,32 +345,32 @@ func (*VnetSimpleCounter) GetCrcString() string { /* Messages */ -// SwInterfaceSetFlags represents the VPP binary API message 'sw_interface_set_flags'. -// -// "sw_interface_set_flags", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "admin_up_down" -// ], -// { -// "crc": "0x555485f5" -// } +// SwInterfaceSetFlags represents VPP binary API message 'sw_interface_set_flags': +// +// "sw_interface_set_flags", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "admin_up_down" +// ], +// { +// "crc": "0x555485f5" +// } // type SwInterfaceSetFlags struct { SwIfIndex uint32 @@ -263,24 +387,24 @@ func (*SwInterfaceSetFlags) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetFlagsReply represents the VPP binary API message 'sw_interface_set_flags_reply'. -// -// "sw_interface_set_flags_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetFlagsReply represents VPP binary API message 'sw_interface_set_flags_reply': +// +// "sw_interface_set_flags_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetFlagsReply struct { Retval int32 @@ -296,32 +420,32 @@ func (*SwInterfaceSetFlagsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// HwInterfaceSetMtu represents the VPP binary API message 'hw_interface_set_mtu'. -// -// "hw_interface_set_mtu", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u16", -// "mtu" -// ], -// { -// "crc": "0x132da1e7" -// } +// HwInterfaceSetMtu represents VPP binary API message 'hw_interface_set_mtu': +// +// "hw_interface_set_mtu", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u16", +// "mtu" +// ], +// { +// "crc": "0x132da1e7" +// } // type HwInterfaceSetMtu struct { SwIfIndex uint32 @@ -338,24 +462,24 @@ func (*HwInterfaceSetMtu) GetMessageType() api.MessageType { return api.RequestMessage } -// HwInterfaceSetMtuReply represents the VPP binary API message 'hw_interface_set_mtu_reply'. -// -// "hw_interface_set_mtu_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// HwInterfaceSetMtuReply represents VPP binary API message 'hw_interface_set_mtu_reply': +// +// "hw_interface_set_mtu_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type HwInterfaceSetMtuReply struct { Retval int32 @@ -371,33 +495,33 @@ func (*HwInterfaceSetMtuReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceSetMtu represents the VPP binary API message 'sw_interface_set_mtu'. -// -// "sw_interface_set_mtu", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "mtu", -// 4 -// ], -// { -// "crc": "0xd0008db8" -// } +// SwInterfaceSetMtu represents VPP binary API message 'sw_interface_set_mtu': +// +// "sw_interface_set_mtu", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "mtu", +// 4 +// ], +// { +// "crc": "0xd0008db8" +// } // type SwInterfaceSetMtu struct { SwIfIndex uint32 @@ -414,24 +538,24 @@ func (*SwInterfaceSetMtu) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetMtuReply represents the VPP binary API message 'sw_interface_set_mtu_reply'. -// -// "sw_interface_set_mtu_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetMtuReply represents VPP binary API message 'sw_interface_set_mtu_reply': +// +// "sw_interface_set_mtu_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetMtuReply struct { Retval int32 @@ -447,40 +571,115 @@ func (*SwInterfaceSetMtuReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceEvent represents the VPP binary API message 'sw_interface_event'. -// -// "sw_interface_event", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "admin_up_down" -// ], -// [ -// "u8", -// "link_up_down" -// ], -// [ -// "u8", -// "deleted" -// ], -// { -// "crc": "0xbf9938e4" -// } +// SwInterfaceSetIPDirectedBroadcast represents VPP binary API message 'sw_interface_set_ip_directed_broadcast': +// +// "sw_interface_set_ip_directed_broadcast", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "enable" +// ], +// { +// "crc": "0xa36fadc0" +// } +// +type SwInterfaceSetIPDirectedBroadcast struct { + SwIfIndex uint32 + Enable uint8 +} + +func (*SwInterfaceSetIPDirectedBroadcast) GetMessageName() string { + return "sw_interface_set_ip_directed_broadcast" +} +func (*SwInterfaceSetIPDirectedBroadcast) GetCrcString() string { + return "a36fadc0" +} +func (*SwInterfaceSetIPDirectedBroadcast) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// SwInterfaceSetIPDirectedBroadcastReply represents VPP binary API message 'sw_interface_set_ip_directed_broadcast_reply': +// +// "sw_interface_set_ip_directed_broadcast_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type SwInterfaceSetIPDirectedBroadcastReply struct { + Retval int32 +} + +func (*SwInterfaceSetIPDirectedBroadcastReply) GetMessageName() string { + return "sw_interface_set_ip_directed_broadcast_reply" +} +func (*SwInterfaceSetIPDirectedBroadcastReply) GetCrcString() string { + return "e8d4e804" +} +func (*SwInterfaceSetIPDirectedBroadcastReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// SwInterfaceEvent represents VPP binary API message 'sw_interface_event': +// +// "sw_interface_event", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "admin_up_down" +// ], +// [ +// "u8", +// "link_up_down" +// ], +// [ +// "u8", +// "deleted" +// ], +// { +// "crc": "0xbf9938e4" +// } // type SwInterfaceEvent struct { PID uint32 @@ -500,32 +699,32 @@ func (*SwInterfaceEvent) GetMessageType() api.MessageType { return api.EventMessage } -// WantInterfaceEvents represents the VPP binary API message 'want_interface_events'. -// -// "want_interface_events", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantInterfaceEvents represents VPP binary API message 'want_interface_events': +// +// "want_interface_events", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantInterfaceEvents struct { EnableDisable uint32 @@ -542,24 +741,24 @@ func (*WantInterfaceEvents) GetMessageType() api.MessageType { return api.RequestMessage } -// WantInterfaceEventsReply represents the VPP binary API message 'want_interface_events_reply'. -// -// "want_interface_events_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantInterfaceEventsReply represents VPP binary API message 'want_interface_events_reply': +// +// "want_interface_events_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantInterfaceEventsReply struct { Retval int32 @@ -575,150 +774,150 @@ func (*WantInterfaceEventsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceDetails represents the VPP binary API message 'sw_interface_details'. -// -// "sw_interface_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "sup_sw_if_index" -// ], -// [ -// "u32", -// "l2_address_length" -// ], -// [ -// "u8", -// "l2_address", -// 8 -// ], -// [ -// "u8", -// "interface_name", -// 64 -// ], -// [ -// "u8", -// "admin_up_down" -// ], -// [ -// "u8", -// "link_up_down" -// ], -// [ -// "u8", -// "link_duplex" -// ], -// [ -// "u8", -// "link_speed" -// ], -// [ -// "u16", -// "link_mtu" -// ], -// [ -// "u32", -// "mtu", -// 4 -// ], -// [ -// "u32", -// "sub_id" -// ], -// [ -// "u8", -// "sub_dot1ad" -// ], -// [ -// "u8", -// "sub_dot1ah" -// ], -// [ -// "u8", -// "sub_number_of_tags" -// ], -// [ -// "u16", -// "sub_outer_vlan_id" -// ], -// [ -// "u16", -// "sub_inner_vlan_id" -// ], -// [ -// "u8", -// "sub_exact_match" -// ], -// [ -// "u8", -// "sub_default" -// ], -// [ -// "u8", -// "sub_outer_vlan_id_any" -// ], -// [ -// "u8", -// "sub_inner_vlan_id_any" -// ], -// [ -// "u32", -// "vtr_op" -// ], -// [ -// "u32", -// "vtr_push_dot1q" -// ], -// [ -// "u32", -// "vtr_tag1" -// ], -// [ -// "u32", -// "vtr_tag2" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// [ -// "u16", -// "outer_tag" -// ], -// [ -// "u8", -// "b_dmac", -// 6 -// ], -// [ -// "u8", -// "b_smac", -// 6 -// ], -// [ -// "u16", -// "b_vlanid" -// ], -// [ -// "u32", -// "i_sid" -// ], -// { -// "crc": "0x09b4b510" -// } +// SwInterfaceDetails represents VPP binary API message 'sw_interface_details': +// +// "sw_interface_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "sup_sw_if_index" +// ], +// [ +// "u32", +// "l2_address_length" +// ], +// [ +// "u8", +// "l2_address", +// 8 +// ], +// [ +// "u8", +// "interface_name", +// 64 +// ], +// [ +// "u8", +// "admin_up_down" +// ], +// [ +// "u8", +// "link_up_down" +// ], +// [ +// "u8", +// "link_duplex" +// ], +// [ +// "u32", +// "link_speed" +// ], +// [ +// "u16", +// "link_mtu" +// ], +// [ +// "u32", +// "mtu", +// 4 +// ], +// [ +// "u32", +// "sub_id" +// ], +// [ +// "u8", +// "sub_dot1ad" +// ], +// [ +// "u8", +// "sub_dot1ah" +// ], +// [ +// "u8", +// "sub_number_of_tags" +// ], +// [ +// "u16", +// "sub_outer_vlan_id" +// ], +// [ +// "u16", +// "sub_inner_vlan_id" +// ], +// [ +// "u8", +// "sub_exact_match" +// ], +// [ +// "u8", +// "sub_default" +// ], +// [ +// "u8", +// "sub_outer_vlan_id_any" +// ], +// [ +// "u8", +// "sub_inner_vlan_id_any" +// ], +// [ +// "u32", +// "vtr_op" +// ], +// [ +// "u32", +// "vtr_push_dot1q" +// ], +// [ +// "u32", +// "vtr_tag1" +// ], +// [ +// "u32", +// "vtr_tag2" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// [ +// "u16", +// "outer_tag" +// ], +// [ +// "u8", +// "b_dmac", +// 6 +// ], +// [ +// "u8", +// "b_smac", +// 6 +// ], +// [ +// "u16", +// "b_vlanid" +// ], +// [ +// "u32", +// "i_sid" +// ], +// { +// "crc": "0xe4ee7eb6" +// } // type SwInterfaceDetails struct { SwIfIndex uint32 @@ -729,7 +928,7 @@ type SwInterfaceDetails struct { AdminUpDown uint8 LinkUpDown uint8 LinkDuplex uint8 - LinkSpeed uint8 + LinkSpeed uint32 LinkMtu uint16 Mtu []uint32 `struc:"[4]uint32"` SubID uint32 @@ -758,39 +957,39 @@ func (*SwInterfaceDetails) GetMessageName() string { return "sw_interface_details" } func (*SwInterfaceDetails) GetCrcString() string { - return "09b4b510" + return "e4ee7eb6" } func (*SwInterfaceDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceDump represents the VPP binary API message 'sw_interface_dump'. -// -// "sw_interface_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "name_filter_valid" -// ], -// [ -// "u8", -// "name_filter", -// 49 -// ], -// { -// "crc": "0x63f5e3b7" -// } +// SwInterfaceDump represents VPP binary API message 'sw_interface_dump': +// +// "sw_interface_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "name_filter_valid" +// ], +// [ +// "u8", +// "name_filter", +// 49 +// ], +// { +// "crc": "0x63f5e3b7" +// } // type SwInterfaceDump struct { NameFilterValid uint8 @@ -807,49 +1006,49 @@ func (*SwInterfaceDump) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceAddDelAddress represents the VPP binary API message 'sw_interface_add_del_address'. -// -// "sw_interface_add_del_address", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "del_all" -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0x7b583179" -// } +// SwInterfaceAddDelAddress represents VPP binary API message 'sw_interface_add_del_address': +// +// "sw_interface_add_del_address", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "del_all" +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// { +// "crc": "0x7b583179" +// } // type SwInterfaceAddDelAddress struct { SwIfIndex uint32 @@ -870,24 +1069,24 @@ func (*SwInterfaceAddDelAddress) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceAddDelAddressReply represents the VPP binary API message 'sw_interface_add_del_address_reply'. -// -// "sw_interface_add_del_address_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceAddDelAddressReply represents VPP binary API message 'sw_interface_add_del_address_reply': +// +// "sw_interface_add_del_address_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceAddDelAddressReply struct { Retval int32 @@ -903,36 +1102,36 @@ func (*SwInterfaceAddDelAddressReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceSetTable represents the VPP binary API message 'sw_interface_set_table'. -// -// "sw_interface_set_table", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// { -// "crc": "0xacb25d89" -// } +// SwInterfaceSetTable represents VPP binary API message 'sw_interface_set_table': +// +// "sw_interface_set_table", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// { +// "crc": "0xacb25d89" +// } // type SwInterfaceSetTable struct { SwIfIndex uint32 @@ -950,24 +1149,24 @@ func (*SwInterfaceSetTable) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetTableReply represents the VPP binary API message 'sw_interface_set_table_reply'. -// -// "sw_interface_set_table_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetTableReply represents VPP binary API message 'sw_interface_set_table_reply': +// +// "sw_interface_set_table_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetTableReply struct { Retval int32 @@ -983,32 +1182,32 @@ func (*SwInterfaceSetTableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceGetTable represents the VPP binary API message 'sw_interface_get_table'. -// -// "sw_interface_get_table", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x6b7bcd0a" -// } +// SwInterfaceGetTable represents VPP binary API message 'sw_interface_get_table': +// +// "sw_interface_get_table", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x6b7bcd0a" +// } // type SwInterfaceGetTable struct { SwIfIndex uint32 @@ -1025,28 +1224,28 @@ func (*SwInterfaceGetTable) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceGetTableReply represents the VPP binary API message 'sw_interface_get_table_reply'. -// -// "sw_interface_get_table_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// { -// "crc": "0xa6eb0109" -// } +// SwInterfaceGetTableReply represents VPP binary API message 'sw_interface_get_table_reply': +// +// "sw_interface_get_table_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// { +// "crc": "0xa6eb0109" +// } // type SwInterfaceGetTableReply struct { Retval int32 @@ -1063,36 +1262,36 @@ func (*SwInterfaceGetTableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceSetUnnumbered represents the VPP binary API message 'sw_interface_set_unnumbered'. -// -// "sw_interface_set_unnumbered", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "unnumbered_sw_if_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// { -// "crc": "0xa2c1bbda" -// } +// SwInterfaceSetUnnumbered represents VPP binary API message 'sw_interface_set_unnumbered': +// +// "sw_interface_set_unnumbered", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "unnumbered_sw_if_index" +// ], +// [ +// "u8", +// "is_add" +// ], +// { +// "crc": "0xa2c1bbda" +// } // type SwInterfaceSetUnnumbered struct { SwIfIndex uint32 @@ -1110,24 +1309,24 @@ func (*SwInterfaceSetUnnumbered) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetUnnumberedReply represents the VPP binary API message 'sw_interface_set_unnumbered_reply'. -// -// "sw_interface_set_unnumbered_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetUnnumberedReply represents VPP binary API message 'sw_interface_set_unnumbered_reply': +// +// "sw_interface_set_unnumbered_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetUnnumberedReply struct { Retval int32 @@ -1143,28 +1342,28 @@ func (*SwInterfaceSetUnnumberedReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceClearStats represents the VPP binary API message 'sw_interface_clear_stats'. -// -// "sw_interface_clear_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// SwInterfaceClearStats represents VPP binary API message 'sw_interface_clear_stats': +// +// "sw_interface_clear_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type SwInterfaceClearStats struct { SwIfIndex uint32 @@ -1180,24 +1379,24 @@ func (*SwInterfaceClearStats) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceClearStatsReply represents the VPP binary API message 'sw_interface_clear_stats_reply'. -// -// "sw_interface_clear_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceClearStatsReply represents VPP binary API message 'sw_interface_clear_stats_reply': +// +// "sw_interface_clear_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceClearStatsReply struct { Retval int32 @@ -1213,37 +1412,37 @@ func (*SwInterfaceClearStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceTagAddDel represents the VPP binary API message 'sw_interface_tag_add_del'. -// -// "sw_interface_tag_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// { -// "crc": "0x14cc636c" -// } +// SwInterfaceTagAddDel represents VPP binary API message 'sw_interface_tag_add_del': +// +// "sw_interface_tag_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// { +// "crc": "0x14cc636c" +// } // type SwInterfaceTagAddDel struct { IsAdd uint8 @@ -1261,24 +1460,24 @@ func (*SwInterfaceTagAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceTagAddDelReply represents the VPP binary API message 'sw_interface_tag_add_del_reply'. -// -// "sw_interface_tag_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceTagAddDelReply represents VPP binary API message 'sw_interface_tag_add_del_reply': +// +// "sw_interface_tag_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceTagAddDelReply struct { Retval int32 @@ -1294,33 +1493,33 @@ func (*SwInterfaceTagAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceSetMacAddress represents the VPP binary API message 'sw_interface_set_mac_address'. -// -// "sw_interface_set_mac_address", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// { -// "crc": "0xeed5dfca" -// } +// SwInterfaceSetMacAddress represents VPP binary API message 'sw_interface_set_mac_address': +// +// "sw_interface_set_mac_address", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// { +// "crc": "0xeed5dfca" +// } // type SwInterfaceSetMacAddress struct { SwIfIndex uint32 @@ -1337,24 +1536,24 @@ func (*SwInterfaceSetMacAddress) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetMacAddressReply represents the VPP binary API message 'sw_interface_set_mac_address_reply'. -// -// "sw_interface_set_mac_address_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetMacAddressReply represents VPP binary API message 'sw_interface_set_mac_address_reply': +// +// "sw_interface_set_mac_address_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetMacAddressReply struct { Retval int32 @@ -1370,28 +1569,28 @@ func (*SwInterfaceSetMacAddressReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceGetMacAddress represents the VPP binary API message 'sw_interface_get_mac_address'. -// -// "sw_interface_get_mac_address", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// SwInterfaceGetMacAddress represents VPP binary API message 'sw_interface_get_mac_address': +// +// "sw_interface_get_mac_address", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type SwInterfaceGetMacAddress struct { SwIfIndex uint32 @@ -1407,29 +1606,29 @@ func (*SwInterfaceGetMacAddress) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceGetMacAddressReply represents the VPP binary API message 'sw_interface_get_mac_address_reply'. -// -// "sw_interface_get_mac_address_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// { -// "crc": "0x8ea538d3" -// } +// SwInterfaceGetMacAddressReply represents VPP binary API message 'sw_interface_get_mac_address_reply': +// +// "sw_interface_get_mac_address_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// { +// "crc": "0x8ea538d3" +// } // type SwInterfaceGetMacAddressReply struct { Retval int32 @@ -1446,40 +1645,40 @@ func (*SwInterfaceGetMacAddressReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceSetRxMode represents the VPP binary API message 'sw_interface_set_rx_mode'. -// -// "sw_interface_set_rx_mode", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "queue_id_valid" -// ], -// [ -// "u32", -// "queue_id" -// ], -// [ -// "u8", -// "mode" -// ], -// { -// "crc": "0x2a1cc58c" -// } +// SwInterfaceSetRxMode represents VPP binary API message 'sw_interface_set_rx_mode': +// +// "sw_interface_set_rx_mode", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "queue_id_valid" +// ], +// [ +// "u32", +// "queue_id" +// ], +// [ +// "u8", +// "mode" +// ], +// { +// "crc": "0x2a1cc58c" +// } // type SwInterfaceSetRxMode struct { SwIfIndex uint32 @@ -1498,24 +1697,24 @@ func (*SwInterfaceSetRxMode) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceSetRxModeReply represents the VPP binary API message 'sw_interface_set_rx_mode_reply'. -// -// "sw_interface_set_rx_mode_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceSetRxModeReply represents VPP binary API message 'sw_interface_set_rx_mode_reply': +// +// "sw_interface_set_rx_mode_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceSetRxModeReply struct { Retval int32 @@ -1531,32 +1730,206 @@ func (*SwInterfaceSetRxModeReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// InterfaceNameRenumber represents the VPP binary API message 'interface_name_renumber'. -// -// "interface_name_renumber", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "new_show_dev_instance" -// ], -// { -// "crc": "0x39194269" -// } +// SwInterfaceSetRxPlacement represents VPP binary API message 'sw_interface_set_rx_placement': +// +// "sw_interface_set_rx_placement", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "queue_id" +// ], +// [ +// "u32", +// "worker_id" +// ], +// [ +// "u8", +// "is_main" +// ], +// { +// "crc": "0x4ef4377d" +// } +// +type SwInterfaceSetRxPlacement struct { + SwIfIndex uint32 + QueueID uint32 + WorkerID uint32 + IsMain uint8 +} + +func (*SwInterfaceSetRxPlacement) GetMessageName() string { + return "sw_interface_set_rx_placement" +} +func (*SwInterfaceSetRxPlacement) GetCrcString() string { + return "4ef4377d" +} +func (*SwInterfaceSetRxPlacement) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// SwInterfaceSetRxPlacementReply represents VPP binary API message 'sw_interface_set_rx_placement_reply': +// +// "sw_interface_set_rx_placement_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type SwInterfaceSetRxPlacementReply struct { + Retval int32 +} + +func (*SwInterfaceSetRxPlacementReply) GetMessageName() string { + return "sw_interface_set_rx_placement_reply" +} +func (*SwInterfaceSetRxPlacementReply) GetCrcString() string { + return "e8d4e804" +} +func (*SwInterfaceSetRxPlacementReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// SwInterfaceRxPlacementDump represents VPP binary API message 'sw_interface_rx_placement_dump': +// +// "sw_interface_rx_placement_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } +// +type SwInterfaceRxPlacementDump struct { + SwIfIndex uint32 +} + +func (*SwInterfaceRxPlacementDump) GetMessageName() string { + return "sw_interface_rx_placement_dump" +} +func (*SwInterfaceRxPlacementDump) GetCrcString() string { + return "529cb13f" +} +func (*SwInterfaceRxPlacementDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// SwInterfaceRxPlacementDetails represents VPP binary API message 'sw_interface_rx_placement_details': +// +// "sw_interface_rx_placement_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "queue_id" +// ], +// [ +// "u32", +// "worker_id" +// ], +// [ +// "u8", +// "mode" +// ], +// { +// "crc": "0x0e9e33f4" +// } +// +type SwInterfaceRxPlacementDetails struct { + SwIfIndex uint32 + QueueID uint32 + WorkerID uint32 + Mode uint8 +} + +func (*SwInterfaceRxPlacementDetails) GetMessageName() string { + return "sw_interface_rx_placement_details" +} +func (*SwInterfaceRxPlacementDetails) GetCrcString() string { + return "0e9e33f4" +} +func (*SwInterfaceRxPlacementDetails) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// InterfaceNameRenumber represents VPP binary API message 'interface_name_renumber': +// +// "interface_name_renumber", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "new_show_dev_instance" +// ], +// { +// "crc": "0x39194269" +// } // type InterfaceNameRenumber struct { SwIfIndex uint32 @@ -1573,24 +1946,24 @@ func (*InterfaceNameRenumber) GetMessageType() api.MessageType { return api.RequestMessage } -// InterfaceNameRenumberReply represents the VPP binary API message 'interface_name_renumber_reply'. -// -// "interface_name_renumber_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// InterfaceNameRenumberReply represents VPP binary API message 'interface_name_renumber_reply': +// +// "interface_name_renumber_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type InterfaceNameRenumberReply struct { Retval int32 @@ -1606,72 +1979,72 @@ func (*InterfaceNameRenumberReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CreateSubif represents the VPP binary API message 'create_subif'. -// -// "create_subif", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "sub_id" -// ], -// [ -// "u8", -// "no_tags" -// ], -// [ -// "u8", -// "one_tag" -// ], -// [ -// "u8", -// "two_tags" -// ], -// [ -// "u8", -// "dot1ad" -// ], -// [ -// "u8", -// "exact_match" -// ], -// [ -// "u8", -// "default_sub" -// ], -// [ -// "u8", -// "outer_vlan_id_any" -// ], -// [ -// "u8", -// "inner_vlan_id_any" -// ], -// [ -// "u16", -// "outer_vlan_id" -// ], -// [ -// "u16", -// "inner_vlan_id" -// ], -// { -// "crc": "0x86cfe408" -// } +// CreateSubif represents VPP binary API message 'create_subif': +// +// "create_subif", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "sub_id" +// ], +// [ +// "u8", +// "no_tags" +// ], +// [ +// "u8", +// "one_tag" +// ], +// [ +// "u8", +// "two_tags" +// ], +// [ +// "u8", +// "dot1ad" +// ], +// [ +// "u8", +// "exact_match" +// ], +// [ +// "u8", +// "default_sub" +// ], +// [ +// "u8", +// "outer_vlan_id_any" +// ], +// [ +// "u8", +// "inner_vlan_id_any" +// ], +// [ +// "u16", +// "outer_vlan_id" +// ], +// [ +// "u16", +// "inner_vlan_id" +// ], +// { +// "crc": "0x86cfe408" +// } // type CreateSubif struct { SwIfIndex uint32 @@ -1698,28 +2071,28 @@ func (*CreateSubif) GetMessageType() api.MessageType { return api.RequestMessage } -// CreateSubifReply represents the VPP binary API message 'create_subif_reply'. -// -// "create_subif_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// CreateSubifReply represents VPP binary API message 'create_subif_reply': +// +// "create_subif_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type CreateSubifReply struct { Retval int32 @@ -1736,32 +2109,32 @@ func (*CreateSubifReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CreateVlanSubif represents the VPP binary API message 'create_vlan_subif'. -// -// "create_vlan_subif", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "vlan_id" -// ], -// { -// "crc": "0x70cadeda" -// } +// CreateVlanSubif represents VPP binary API message 'create_vlan_subif': +// +// "create_vlan_subif", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "vlan_id" +// ], +// { +// "crc": "0x70cadeda" +// } // type CreateVlanSubif struct { SwIfIndex uint32 @@ -1778,28 +2151,28 @@ func (*CreateVlanSubif) GetMessageType() api.MessageType { return api.RequestMessage } -// CreateVlanSubifReply represents the VPP binary API message 'create_vlan_subif_reply'. -// -// "create_vlan_subif_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// CreateVlanSubifReply represents VPP binary API message 'create_vlan_subif_reply': +// +// "create_vlan_subif_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type CreateVlanSubifReply struct { Retval int32 @@ -1816,28 +2189,28 @@ func (*CreateVlanSubifReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// DeleteSubif represents the VPP binary API message 'delete_subif'. -// -// "delete_subif", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// DeleteSubif represents VPP binary API message 'delete_subif': +// +// "delete_subif", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type DeleteSubif struct { SwIfIndex uint32 @@ -1853,24 +2226,24 @@ func (*DeleteSubif) GetMessageType() api.MessageType { return api.RequestMessage } -// DeleteSubifReply represents the VPP binary API message 'delete_subif_reply'. -// -// "delete_subif_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// DeleteSubifReply represents VPP binary API message 'delete_subif_reply': +// +// "delete_subif_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type DeleteSubifReply struct { Retval int32 @@ -1886,29 +2259,29 @@ func (*DeleteSubifReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CreateLoopback represents the VPP binary API message 'create_loopback'. -// -// "create_loopback", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// { -// "crc": "0x3b54129c" -// } +// CreateLoopback represents VPP binary API message 'create_loopback': +// +// "create_loopback", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// { +// "crc": "0x3b54129c" +// } // type CreateLoopback struct { MacAddress []byte `struc:"[6]byte"` @@ -1924,28 +2297,28 @@ func (*CreateLoopback) GetMessageType() api.MessageType { return api.RequestMessage } -// CreateLoopbackReply represents the VPP binary API message 'create_loopback_reply'. -// -// "create_loopback_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// CreateLoopbackReply represents VPP binary API message 'create_loopback_reply': +// +// "create_loopback_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type CreateLoopbackReply struct { Retval int32 @@ -1962,37 +2335,37 @@ func (*CreateLoopbackReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CreateLoopbackInstance represents the VPP binary API message 'create_loopback_instance'. -// -// "create_loopback_instance", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// [ -// "u8", -// "is_specified" -// ], -// [ -// "u32", -// "user_instance" -// ], -// { -// "crc": "0x7bbd53b6" -// } +// CreateLoopbackInstance represents VPP binary API message 'create_loopback_instance': +// +// "create_loopback_instance", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// [ +// "u8", +// "is_specified" +// ], +// [ +// "u32", +// "user_instance" +// ], +// { +// "crc": "0x7bbd53b6" +// } // type CreateLoopbackInstance struct { MacAddress []byte `struc:"[6]byte"` @@ -2010,28 +2383,28 @@ func (*CreateLoopbackInstance) GetMessageType() api.MessageType { return api.RequestMessage } -// CreateLoopbackInstanceReply represents the VPP binary API message 'create_loopback_instance_reply'. -// -// "create_loopback_instance_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// CreateLoopbackInstanceReply represents VPP binary API message 'create_loopback_instance_reply': +// +// "create_loopback_instance_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type CreateLoopbackInstanceReply struct { Retval int32 @@ -2048,28 +2421,28 @@ func (*CreateLoopbackInstanceReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// DeleteLoopback represents the VPP binary API message 'delete_loopback'. -// -// "delete_loopback", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// DeleteLoopback represents VPP binary API message 'delete_loopback': +// +// "delete_loopback", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type DeleteLoopback struct { SwIfIndex uint32 @@ -2085,24 +2458,24 @@ func (*DeleteLoopback) GetMessageType() api.MessageType { return api.RequestMessage } -// DeleteLoopbackReply represents the VPP binary API message 'delete_loopback_reply'. -// -// "delete_loopback_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// DeleteLoopbackReply represents VPP binary API message 'delete_loopback_reply': +// +// "delete_loopback_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type DeleteLoopbackReply struct { Retval int32 @@ -2118,32 +2491,32 @@ func (*DeleteLoopbackReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CollectDetailedInterfaceStats represents the VPP binary API message 'collect_detailed_interface_stats'. -// -// "collect_detailed_interface_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "enable_disable" -// ], -// { -// "crc": "0x69d24598" -// } +// CollectDetailedInterfaceStats represents VPP binary API message 'collect_detailed_interface_stats': +// +// "collect_detailed_interface_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "enable_disable" +// ], +// { +// "crc": "0x69d24598" +// } // type CollectDetailedInterfaceStats struct { SwIfIndex uint32 @@ -2160,24 +2533,24 @@ func (*CollectDetailedInterfaceStats) GetMessageType() api.MessageType { return api.RequestMessage } -// CollectDetailedInterfaceStatsReply represents the VPP binary API message 'collect_detailed_interface_stats_reply'. -// -// "collect_detailed_interface_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// CollectDetailedInterfaceStatsReply represents VPP binary API message 'collect_detailed_interface_stats_reply': +// +// "collect_detailed_interface_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type CollectDetailedInterfaceStatsReply struct { Retval int32 @@ -2193,33 +2566,6 @@ func (*CollectDetailedInterfaceStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - DumpSwInterface(*SwInterfaceDump) (*SwInterfaceDetails, error) - CollectDetailedInterfaceStats(*CollectDetailedInterfaceStats) (*CollectDetailedInterfaceStatsReply, error) - CreateLoopback(*CreateLoopback) (*CreateLoopbackReply, error) - CreateLoopbackInstance(*CreateLoopbackInstance) (*CreateLoopbackInstanceReply, error) - CreateSubif(*CreateSubif) (*CreateSubifReply, error) - CreateVlanSubif(*CreateVlanSubif) (*CreateVlanSubifReply, error) - DeleteLoopback(*DeleteLoopback) (*DeleteLoopbackReply, error) - DeleteSubif(*DeleteSubif) (*DeleteSubifReply, error) - HwInterfaceSetMtu(*HwInterfaceSetMtu) (*HwInterfaceSetMtuReply, error) - InterfaceNameRenumber(*InterfaceNameRenumber) (*InterfaceNameRenumberReply, error) - SwInterfaceAddDelAddress(*SwInterfaceAddDelAddress) (*SwInterfaceAddDelAddressReply, error) - SwInterfaceClearStats(*SwInterfaceClearStats) (*SwInterfaceClearStatsReply, error) - SwInterfaceGetMacAddress(*SwInterfaceGetMacAddress) (*SwInterfaceGetMacAddressReply, error) - SwInterfaceGetTable(*SwInterfaceGetTable) (*SwInterfaceGetTableReply, error) - SwInterfaceSetFlags(*SwInterfaceSetFlags) (*SwInterfaceSetFlagsReply, error) - SwInterfaceSetMacAddress(*SwInterfaceSetMacAddress) (*SwInterfaceSetMacAddressReply, error) - SwInterfaceSetMtu(*SwInterfaceSetMtu) (*SwInterfaceSetMtuReply, error) - SwInterfaceSetRxMode(*SwInterfaceSetRxMode) (*SwInterfaceSetRxModeReply, error) - SwInterfaceSetTable(*SwInterfaceSetTable) (*SwInterfaceSetTableReply, error) - SwInterfaceSetUnnumbered(*SwInterfaceSetUnnumbered) (*SwInterfaceSetUnnumberedReply, error) - SwInterfaceTagAddDel(*SwInterfaceTagAddDel) (*SwInterfaceTagAddDelReply, error) - WantInterfaceEvents(*WantInterfaceEvents) (*WantInterfaceEventsReply, error) -} - func init() { api.RegisterMessage((*SwInterfaceSetFlags)(nil), "interface.SwInterfaceSetFlags") api.RegisterMessage((*SwInterfaceSetFlagsReply)(nil), "interface.SwInterfaceSetFlagsReply") @@ -2227,6 +2573,8 @@ func init() { api.RegisterMessage((*HwInterfaceSetMtuReply)(nil), "interface.HwInterfaceSetMtuReply") api.RegisterMessage((*SwInterfaceSetMtu)(nil), "interface.SwInterfaceSetMtu") api.RegisterMessage((*SwInterfaceSetMtuReply)(nil), "interface.SwInterfaceSetMtuReply") + api.RegisterMessage((*SwInterfaceSetIPDirectedBroadcast)(nil), "interface.SwInterfaceSetIPDirectedBroadcast") + api.RegisterMessage((*SwInterfaceSetIPDirectedBroadcastReply)(nil), "interface.SwInterfaceSetIPDirectedBroadcastReply") api.RegisterMessage((*SwInterfaceEvent)(nil), "interface.SwInterfaceEvent") api.RegisterMessage((*WantInterfaceEvents)(nil), "interface.WantInterfaceEvents") api.RegisterMessage((*WantInterfaceEventsReply)(nil), "interface.WantInterfaceEventsReply") @@ -2250,6 +2598,10 @@ func init() { api.RegisterMessage((*SwInterfaceGetMacAddressReply)(nil), "interface.SwInterfaceGetMacAddressReply") api.RegisterMessage((*SwInterfaceSetRxMode)(nil), "interface.SwInterfaceSetRxMode") api.RegisterMessage((*SwInterfaceSetRxModeReply)(nil), "interface.SwInterfaceSetRxModeReply") + api.RegisterMessage((*SwInterfaceSetRxPlacement)(nil), "interface.SwInterfaceSetRxPlacement") + api.RegisterMessage((*SwInterfaceSetRxPlacementReply)(nil), "interface.SwInterfaceSetRxPlacementReply") + api.RegisterMessage((*SwInterfaceRxPlacementDump)(nil), "interface.SwInterfaceRxPlacementDump") + api.RegisterMessage((*SwInterfaceRxPlacementDetails)(nil), "interface.SwInterfaceRxPlacementDetails") api.RegisterMessage((*InterfaceNameRenumber)(nil), "interface.InterfaceNameRenumber") api.RegisterMessage((*InterfaceNameRenumberReply)(nil), "interface.InterfaceNameRenumberReply") api.RegisterMessage((*CreateSubif)(nil), "interface.CreateSubif") diff --git a/examples/bin_api/ip.api.json b/examples/bin_api/ip.api.json index d9b4277..3983288 100644 --- a/examples/bin_api/ip.api.json +++ b/examples/bin_api/ip.api.json @@ -103,6 +103,10 @@ "u32", "count" ], + [ + "u32", + "stats_index" + ], [ "vl_api_fib_path_t", "path", @@ -110,7 +114,7 @@ "count" ], { - "crc": "0x99dfd73b" + "crc": "0xf6a2fab3" } ], [ @@ -163,6 +167,10 @@ "u32", "count" ], + [ + "u32", + "stats_index" + ], [ "vl_api_fib_path_t", "path", @@ -170,7 +178,7 @@ "count" ], { - "crc": "0xabd0060e" + "crc": "0xef11e94d" } ], [ @@ -213,6 +221,10 @@ "u32", "sw_if_index" ], + [ + "u32", + "stats_index" + ], [ "u8", "is_static" @@ -232,7 +244,7 @@ 16 ], { - "crc": "0x85e32a72" + "crc": "0xc7001770" } ], [ @@ -297,8 +309,12 @@ "i32", "retval" ], + [ + "u32", + "stats_index" + ], { - "crc": "0xe8d4e804" + "crc": "0x1992deab" } ], [ @@ -347,8 +363,12 @@ "u8", "reverse" ], + [ + "u8", + "symmetric" + ], { - "crc": "0x32ebf737" + "crc": "0xa9084bfb" } ], [ @@ -597,10 +617,6 @@ "u16", "_vl_msg_id" ], - [ - "u32", - "client_index" - ], [ "u32", "context" @@ -615,7 +631,7 @@ 16 ], { - "crc": "0xd73bf1ab" + "crc": "0x6a47c974" } ], [ @@ -740,51 +756,6 @@ "crc": "0xe8d4e804" } ], - [ - "sw_interface_ip6_set_link_local_address", - [ - "u16", - "_vl_msg_id" - ], - [ - "u32", - "client_index" - ], - [ - "u32", - "context" - ], - [ - "u32", - "sw_if_index" - ], - [ - "u8", - "address", - 16 - ], - { - "crc": "0xd73bf1ab" - } - ], - [ - "sw_interface_ip6_set_link_local_address_reply", - [ - "u16", - "_vl_msg_id" - ], - [ - "u32", - "context" - ], - [ - "i32", - "retval" - ], - { - "crc": "0xe8d4e804" - } - ], [ "ip_add_del_route", [ @@ -929,8 +900,12 @@ "i32", "retval" ], + [ + "u32", + "stats_index" + ], { - "crc": "0xe8d4e804" + "crc": "0x1992deab" } ], [ @@ -1024,8 +999,12 @@ "i32", "retval" ], + [ + "u32", + "stats_index" + ], { - "crc": "0xe8d4e804" + "crc": "0x1992deab" } ], [ @@ -1086,6 +1065,10 @@ "u32", "count" ], + [ + "u32", + "stats_index" + ], [ "vl_api_fib_path_t", "path", @@ -1093,7 +1076,7 @@ "count" ], { - "crc": "0x5e530d5e" + "crc": "0x21329a12" } ], [ @@ -1162,10 +1145,6 @@ "u16", "_vl_msg_id" ], - [ - "u32", - "client_index" - ], [ "u32", "context" @@ -1188,7 +1167,7 @@ "is_ipv6" ], { - "crc": "0xbc7442f2" + "crc": "0x9bc25966" } ], [ @@ -1223,10 +1202,6 @@ "u16", "_vl_msg_id" ], - [ - "u32", - "client_index" - ], [ "u32", "context" @@ -1240,7 +1215,7 @@ "ip_sw_if_index" ], { - "crc": "0x05b717ca" + "crc": "0xae694cf4" } ], [ @@ -1273,18 +1248,18 @@ ], [ "u32", - "sw_if_index" + "context" ], [ "u32", - "context" + "sw_if_index" ], [ "u8", "is_ipv6" ], { - "crc": "0x452ffc5a" + "crc": "0x8bb37ec4" } ], [ @@ -1333,10 +1308,6 @@ "u16", "_vl_msg_id" ], - [ - "u32", - "client_index" - ], [ "u32", "context" @@ -1373,7 +1344,7 @@ 256 ], { - "crc": "0x791bbeab" + "crc": "0x3f5f03f5" } ], [ @@ -1438,33 +1409,64 @@ "u32", "context" ], + [ + "vl_api_punt_redirect_t", + "punt" + ], + [ + "u8", + "is_add" + ], + { + "crc": "0xa953495b" + } + ], + [ + "ip_punt_redirect_reply", + [ + "u16", + "_vl_msg_id" + ], [ "u32", - "rx_sw_if_index" + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "ip_punt_redirect_dump", + [ + "u16", + "_vl_msg_id" ], [ "u32", - "tx_sw_if_index" + "client_index" ], [ - "u8", - "is_add" + "u32", + "context" ], [ - "u8", - "is_ip6" + "u32", + "sw_if_index" ], [ "u8", - "nh", - 16 + "is_ipv6" ], { - "crc": "0x996b6603" + "crc": "0x6b7bcd0a" } ], [ - "ip_punt_redirect_reply", + "ip_punt_redirect_details", [ "u16", "_vl_msg_id" @@ -1474,11 +1476,11 @@ "context" ], [ - "i32", - "retval" + "vl_api_punt_redirect_t", + "punt" ], { - "crc": "0xe8d4e804" + "crc": "0xa47f70da" } ], [ @@ -1538,6 +1540,46 @@ "crc": "0xe8d4e804" } ], + [ + "ip_container_proxy_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "ip_container_proxy_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "u32", + "sw_if_index" + ], + [ + "vl_api_prefix_t", + "prefix" + ], + { + "crc": "0xd528df63" + } + ], [ "ip_source_and_port_range_check_add_del", [ @@ -1669,6 +1711,54 @@ "crc": "0xe8d4e804" } ], + [ + "ip_source_check_interface_add_del", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u8", + "is_add" + ], + [ + "u8", + "loose" + ], + [ + "u32", + "sw_if_index" + ], + { + "crc": "0x0a60152a" + } + ], + [ + "ip_source_check_interface_add_del_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], [ "ip_scan_neighbor_enable_disable", [ @@ -2475,10 +2565,6 @@ "u16", "_vl_msg_id" ], - [ - "u32", - "client_index" - ], [ "u32", "context" @@ -2504,7 +2590,7 @@ "is_ip6" ], { - "crc": "0xd746fc57" + "crc": "0x1f90afd1" } ], [ @@ -2556,7 +2642,7 @@ } ] ], - "vl_api_version": "0xff691c00", + "vl_api_version": "0x1eba4868", "unions": [ [ "address_union", @@ -2574,6 +2660,10 @@ ] ], "services": { + "ip_container_proxy_dump": { + "reply": "ip_container_proxy_details", + "stream": true + }, "ip_address_dump": { "reply": "ip_address_details", "stream": true @@ -2612,6 +2702,9 @@ "ip6nd_send_router_solicitation": { "reply": "ip6nd_send_router_solicitation_reply" }, + "ip_source_check_interface_add_del": { + "reply": "ip_source_check_interface_add_del_reply" + }, "ip_table_add_del": { "reply": "ip_table_add_del_reply" }, @@ -2645,13 +2738,14 @@ "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" - }, "mfib_signal_dump": { "reply": "mfib_signal_details", "stream": true }, + "ip_punt_redirect_dump": { + "reply": "ip_punt_redirect_details", + "stream": true + }, "ip_container_proxy_add_del": { "reply": "ip_container_proxy_add_del_reply" }, @@ -2740,53 +2834,81 @@ ], "types": [ [ - "ip4_address", + "address", [ - "u8", - "address", - 4 + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_address_union_t", + "un" ], { - "crc": "0xfc4baa28" + "crc": "0x09f11671" } ], [ - "ip6_address", + "prefix", + [ + "vl_api_address_t", + "address" + ], [ "u8", - "address", - 16 + "address_length" ], { - "crc": "0xad99ccc2" + "crc": "0x0403aebc" } ], [ - "address", + "mprefix", [ "vl_api_address_family_t", "af" ], + [ + "u16", + "grp_address_length" + ], [ "vl_api_address_union_t", - "un" + "grp_address" + ], + [ + "vl_api_address_union_t", + "src_address" ], { - "crc": "0x09f11671" + "crc": "0x1c4cba05" } ], [ - "prefix", + "ip6_prefix", [ - "vl_api_address_t", - "address" + "vl_api_ip6_address_t", + "prefix" ], [ "u8", - "address_length" + "len" ], { - "crc": "0x0403aebc" + "crc": "0x779fd64f" + } + ], + [ + "ip4_prefix", + [ + "vl_api_ip4_address_t", + "prefix" + ], + [ + "u8", + "len" + ], + { + "crc": "0xea8dc11d" } ], [ @@ -2899,6 +3021,35 @@ "crc": "0xabe483ef" } ], + [ + "mac_address", + [ + "u8", + "bytes", + 6 + ], + { + "crc": "0xefdbdddc" + } + ], + [ + "punt_redirect", + [ + "u32", + "rx_sw_if_index" + ], + [ + "u32", + "tx_sw_if_index" + ], + [ + "vl_api_address_t", + "nh" + ], + { + "crc": "0x3e7a801f" + } + ], [ "ip6_ra_prefix_info", [ @@ -2946,5 +3097,15 @@ "crc": "0x6d88106e" } ] - ] + ], + "aliases": { + "ip6_address": { + "length": 16, + "type": "u8" + }, + "ip4_address": { + "length": 4, + "type": "u8" + } + } } diff --git a/examples/bin_api/ip/ip.ba.go b/examples/bin_api/ip/ip.ba.go index abbddb9..b4615b5 100644 --- a/examples/bin_api/ip/ip.ba.go +++ b/examples/bin_api/ip/ip.ba.go @@ -5,11 +5,12 @@ Package ip is a generated from VPP binary API module 'ip'. It contains following objects: - 87 messages - 8 types + 91 messages + 11 types + 2 aliases 1 enum 1 union - 42 services + 44 services */ package ip @@ -23,22 +24,229 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "ip_container_proxy_dump": { +// "reply": "ip_container_proxy_details", +// "stream": true +// }, +// "ip_address_dump": { +// "reply": "ip_address_details", +// "stream": true +// }, +// "ip_source_and_port_range_check_add_del": { +// "reply": "ip_source_and_port_range_check_add_del_reply" +// }, +// "reset_fib": { +// "reply": "reset_fib_reply" +// }, +// "ip_probe_neighbor": { +// "reply": "ip_probe_neighbor_reply" +// }, +// "want_ip6_nd_events": { +// "reply": "want_ip6_nd_events_reply", +// "events": [ +// "ip6_nd_event" +// ] +// }, +// "ip_punt_police": { +// "reply": "ip_punt_police_reply" +// }, +// "ip6nd_proxy_add_del": { +// "reply": "ip6nd_proxy_add_del_reply" +// }, +// "set_arp_neighbor_limit": { +// "reply": "set_arp_neighbor_limit_reply" +// }, +// "ip_reassembly_enable_disable": { +// "reply": "ip_reassembly_enable_disable_reply" +// }, +// "ip6_fib_dump": { +// "reply": "ip6_fib_details", +// "stream": true +// }, +// "ip6nd_send_router_solicitation": { +// "reply": "ip6nd_send_router_solicitation_reply" +// }, +// "ip_source_check_interface_add_del": { +// "reply": "ip_source_check_interface_add_del_reply" +// }, +// "ip_table_add_del": { +// "reply": "ip_table_add_del_reply" +// }, +// "ip_neighbor_dump": { +// "reply": "ip_neighbor_details", +// "stream": true +// }, +// "ip_punt_redirect": { +// "reply": "ip_punt_redirect_reply" +// }, +// "sw_interface_ip6nd_ra_prefix": { +// "reply": "sw_interface_ip6nd_ra_prefix_reply" +// }, +// "ip_reassembly_set": { +// "reply": "ip_reassembly_set_reply" +// }, +// "ip6_mfib_dump": { +// "reply": "ip6_mfib_details", +// "stream": true +// }, +// "sw_interface_ip6nd_ra_config": { +// "reply": "sw_interface_ip6nd_ra_config_reply" +// }, +// "proxy_arp_dump": { +// "reply": "proxy_arp_details", +// "stream": true +// }, +// "sw_interface_ip6_enable_disable": { +// "reply": "sw_interface_ip6_enable_disable_reply" +// }, +// "ip_source_and_port_range_check_interface_add_del": { +// "reply": "ip_source_and_port_range_check_interface_add_del_reply" +// }, +// "mfib_signal_dump": { +// "reply": "mfib_signal_details", +// "stream": true +// }, +// "ip_punt_redirect_dump": { +// "reply": "ip_punt_redirect_details", +// "stream": true +// }, +// "ip_container_proxy_add_del": { +// "reply": "ip_container_proxy_add_del_reply" +// }, +// "ip_mfib_dump": { +// "reply": "ip_mfib_details", +// "stream": true +// }, +// "ip_unnumbered_dump": { +// "reply": "ip_unnumbered_details", +// "stream": true +// }, +// "ip_dump": { +// "reply": "ip_details", +// "stream": true +// }, +// "ip_neighbor_add_del": { +// "reply": "ip_neighbor_add_del_reply" +// }, +// "proxy_arp_intfc_enable_disable": { +// "reply": "proxy_arp_intfc_enable_disable_reply" +// }, +// "proxy_arp_add_del": { +// "reply": "proxy_arp_add_del_reply" +// }, +// "ip_add_del_route": { +// "reply": "ip_add_del_route_reply" +// }, +// "ip6nd_proxy_dump": { +// "reply": "ip6nd_proxy_details", +// "stream": true +// }, +// "want_ip6_ra_events": { +// "reply": "want_ip6_ra_events_reply", +// "events": [ +// "ip6_ra_event" +// ] +// }, +// "ip_fib_dump": { +// "reply": "ip_fib_details", +// "stream": true +// }, +// "ip_scan_neighbor_enable_disable": { +// "reply": "ip_scan_neighbor_enable_disable_reply" +// }, +// "ioam_enable": { +// "reply": "ioam_enable_reply" +// }, +// "ip_mroute_add_del": { +// "reply": "ip_mroute_add_del_reply" +// }, +// "proxy_arp_intfc_dump": { +// "reply": "proxy_arp_intfc_details", +// "stream": true +// }, +// "want_ip4_arp_events": { +// "reply": "want_ip4_arp_events_reply", +// "events": [ +// "ip4_arp_event" +// ] +// }, +// "ip_reassembly_get": { +// "reply": "ip_reassembly_get_reply" +// }, +// "set_ip_flow_hash": { +// "reply": "set_ip_flow_hash_reply" +// }, +// "ioam_disable": { +// "reply": "ioam_disable_reply" +// } +// }, +// +type Services interface { + DumpIP6Fib(*IP6FibDump) ([]*IP6FibDetails, error) + DumpIP6Mfib(*IP6MfibDump) ([]*IP6MfibDetails, error) + DumpIP6ndProxy(*IP6ndProxyDump) ([]*IP6ndProxyDetails, error) + DumpIPAddress(*IPAddressDump) ([]*IPAddressDetails, error) + DumpIPContainerProxy(*IPContainerProxyDump) ([]*IPContainerProxyDetails, error) + DumpIP(*IPDump) ([]*IPDetails, error) + DumpIPFib(*IPFibDump) ([]*IPFibDetails, error) + DumpIPMfib(*IPMfibDump) ([]*IPMfibDetails, error) + DumpIPNeighbor(*IPNeighborDump) ([]*IPNeighborDetails, error) + DumpIPPuntRedirect(*IPPuntRedirectDump) ([]*IPPuntRedirectDetails, error) + DumpIPUnnumbered(*IPUnnumberedDump) ([]*IPUnnumberedDetails, error) + DumpMfibSignal(*MfibSignalDump) ([]*MfibSignalDetails, error) + DumpProxyArp(*ProxyArpDump) ([]*ProxyArpDetails, error) + DumpProxyArpIntfc(*ProxyArpIntfcDump) ([]*ProxyArpIntfcDetails, error) + IoamDisable(*IoamDisable) (*IoamDisableReply, error) + IoamEnable(*IoamEnable) (*IoamEnableReply, error) + IP6ndProxyAddDel(*IP6ndProxyAddDel) (*IP6ndProxyAddDelReply, error) + IP6ndSendRouterSolicitation(*IP6ndSendRouterSolicitation) (*IP6ndSendRouterSolicitationReply, error) + IPAddDelRoute(*IPAddDelRoute) (*IPAddDelRouteReply, error) + IPContainerProxyAddDel(*IPContainerProxyAddDel) (*IPContainerProxyAddDelReply, error) + IPMrouteAddDel(*IPMrouteAddDel) (*IPMrouteAddDelReply, error) + IPNeighborAddDel(*IPNeighborAddDel) (*IPNeighborAddDelReply, error) + IPProbeNeighbor(*IPProbeNeighbor) (*IPProbeNeighborReply, error) + IPPuntPolice(*IPPuntPolice) (*IPPuntPoliceReply, error) + IPPuntRedirect(*IPPuntRedirect) (*IPPuntRedirectReply, error) + IPReassemblyEnableDisable(*IPReassemblyEnableDisable) (*IPReassemblyEnableDisableReply, error) + IPReassemblyGet(*IPReassemblyGet) (*IPReassemblyGetReply, error) + IPReassemblySet(*IPReassemblySet) (*IPReassemblySetReply, error) + IPScanNeighborEnableDisable(*IPScanNeighborEnableDisable) (*IPScanNeighborEnableDisableReply, error) + IPSourceAndPortRangeCheckAddDel(*IPSourceAndPortRangeCheckAddDel) (*IPSourceAndPortRangeCheckAddDelReply, error) + IPSourceAndPortRangeCheckInterfaceAddDel(*IPSourceAndPortRangeCheckInterfaceAddDel) (*IPSourceAndPortRangeCheckInterfaceAddDelReply, error) + IPSourceCheckInterfaceAddDel(*IPSourceCheckInterfaceAddDel) (*IPSourceCheckInterfaceAddDelReply, error) + IPTableAddDel(*IPTableAddDel) (*IPTableAddDelReply, error) + ProxyArpAddDel(*ProxyArpAddDel) (*ProxyArpAddDelReply, error) + ProxyArpIntfcEnableDisable(*ProxyArpIntfcEnableDisable) (*ProxyArpIntfcEnableDisableReply, error) + ResetFib(*ResetFib) (*ResetFibReply, error) + SetArpNeighborLimit(*SetArpNeighborLimit) (*SetArpNeighborLimitReply, error) + SetIPFlowHash(*SetIPFlowHash) (*SetIPFlowHashReply, error) + SwInterfaceIP6EnableDisable(*SwInterfaceIP6EnableDisable) (*SwInterfaceIP6EnableDisableReply, error) + SwInterfaceIP6ndRaConfig(*SwInterfaceIP6ndRaConfig) (*SwInterfaceIP6ndRaConfigReply, error) + SwInterfaceIP6ndRaPrefix(*SwInterfaceIP6ndRaPrefix) (*SwInterfaceIP6ndRaPrefixReply, error) + WantIP4ArpEvents(*WantIP4ArpEvents) (*WantIP4ArpEventsReply, error) + WantIP6NdEvents(*WantIP6NdEvents) (*WantIP6NdEventsReply, error) + WantIP6RaEvents(*WantIP6RaEvents) (*WantIP6RaEventsReply, error) +} + /* Enums */ -// AddressFamily represents the VPP binary API enum 'address_family'. -// -// "address_family", -// [ -// "ADDRESS_IP4", -// 0 -// ], -// [ -// "ADDRESS_IP6", -// 1 -// ], -// { -// "enumtype": "u32" -// } +// AddressFamily represents VPP binary API enum 'address_family': +// +// "address_family", +// [ +// "ADDRESS_IP4", +// 0 +// ], +// [ +// "ADDRESS_IP6", +// 1 +// ], +// { +// "enumtype": "u32" +// } // type AddressFamily uint32 @@ -47,68 +255,32 @@ const ( ADDRESS_IP6 AddressFamily = 1 ) -/* Types */ +/* Aliases */ -// IP4Address represents the VPP binary API type 'ip4_address'. +// IP4Address represents VPP binary API alias 'ip4_address': // -// "ip4_address", -// [ -// "u8", -// "address", -// 4 -// ], -// { -// "crc": "0xfc4baa28" -// } +// "ip4_address": { +// "length": 4, +// "type": "u8" +// } // -type IP4Address struct { - Address []byte `struc:"[4]byte"` -} +type IP4Address [4]uint8 -func (*IP4Address) GetTypeName() string { - return "ip4_address" -} -func (*IP4Address) GetCrcString() string { - return "fc4baa28" -} - -// IP6Address represents the VPP binary API type 'ip6_address'. +// IP6Address represents VPP binary API alias 'ip6_address': // -// "ip6_address", -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0xad99ccc2" -// } +// "ip6_address": { +// "length": 16, +// "type": "u8" +// }, // -type IP6Address struct { - Address []byte `struc:"[16]byte"` -} +type IP6Address [16]uint8 -func (*IP6Address) GetTypeName() string { - return "ip6_address" -} -func (*IP6Address) GetCrcString() string { - return "ad99ccc2" -} +/* Types */ -// Address represents the VPP binary API type 'address'. +// Address represents VPP binary API type 'address': // -// "address", -// [ -// "vl_api_address_family_t", -// "af" -// ], -// [ -// "vl_api_address_union_t", -// "un" -// ], -// { -// "crc": "0x09f11671" -// } +// "address", +// 4 // type Address struct { Af AddressFamily @@ -122,20 +294,20 @@ func (*Address) GetCrcString() string { return "09f11671" } -// Prefix represents the VPP binary API type 'prefix'. +// Prefix represents VPP binary API type 'prefix': // -// "prefix", -// [ -// "vl_api_address_t", -// "address" -// ], -// [ -// "u8", -// "address_length" -// ], -// { -// "crc": "0x0403aebc" -// } +// "prefix", +// [ +// "vl_api_address_t", +// "address" +// ], +// [ +// "u8", +// "address_length" +// ], +// { +// "crc": "0x0403aebc" +// } // type Prefix struct { Address Address @@ -149,28 +321,119 @@ func (*Prefix) GetCrcString() string { return "0403aebc" } -// FibMplsLabel represents the VPP binary API type 'fib_mpls_label'. -// -// "fib_mpls_label", -// [ -// "u8", -// "is_uniform" -// ], -// [ -// "u32", -// "label" -// ], -// [ -// "u8", -// "ttl" -// ], -// [ -// "u8", -// "exp" -// ], -// { -// "crc": "0xc93bf35c" -// } +// Mprefix represents VPP binary API type 'mprefix': +// +// "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" +// ], +// { +// "crc": "0x1c4cba05" +// } +// +type Mprefix struct { + Af AddressFamily + GrpAddressLength uint16 + GrpAddress AddressUnion + SrcAddress AddressUnion +} + +func (*Mprefix) GetTypeName() string { + return "mprefix" +} +func (*Mprefix) GetCrcString() string { + return "1c4cba05" +} + +// IP6Prefix represents VPP binary API type 'ip6_prefix': +// +// "ip6_prefix", +// [ +// "vl_api_ip6_address_t", +// "prefix" +// ], +// [ +// "u8", +// "len" +// ], +// { +// "crc": "0x779fd64f" +// } +// +type IP6Prefix struct { + Prefix IP6Address + Len uint8 +} + +func (*IP6Prefix) GetTypeName() string { + return "ip6_prefix" +} +func (*IP6Prefix) GetCrcString() string { + return "779fd64f" +} + +// IP4Prefix represents VPP binary API type 'ip4_prefix': +// +// "ip4_prefix", +// [ +// "vl_api_ip4_address_t", +// "prefix" +// ], +// [ +// "u8", +// "len" +// ], +// { +// "crc": "0xea8dc11d" +// } +// +type IP4Prefix struct { + Prefix IP4Address + Len uint8 +} + +func (*IP4Prefix) GetTypeName() string { + return "ip4_prefix" +} +func (*IP4Prefix) GetCrcString() string { + return "ea8dc11d" +} + +// FibMplsLabel represents VPP binary API type 'fib_mpls_label': +// +// "fib_mpls_label", +// [ +// "u8", +// "is_uniform" +// ], +// [ +// "u32", +// "label" +// ], +// [ +// "u8", +// "ttl" +// ], +// [ +// "u8", +// "exp" +// ], +// { +// "crc": "0xc93bf35c" +// } // type FibMplsLabel struct { IsUniform uint8 @@ -186,94 +449,94 @@ func (*FibMplsLabel) GetCrcString() string { return "c93bf35c" } -// FibPath represents the VPP binary API type 'fib_path'. -// -// "fib_path", -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u8", -// "weight" -// ], -// [ -// "u8", -// "preference" -// ], -// [ -// "u8", -// "is_local" -// ], -// [ -// "u8", -// "is_drop" -// ], -// [ -// "u8", -// "is_udp_encap" -// ], -// [ -// "u8", -// "is_unreach" -// ], -// [ -// "u8", -// "is_prohibit" -// ], -// [ -// "u8", -// "is_resolve_host" -// ], -// [ -// "u8", -// "is_resolve_attached" -// ], -// [ -// "u8", -// "is_dvr" -// ], -// [ -// "u8", -// "is_source_lookup" -// ], -// [ -// "u8", -// "afi" -// ], -// [ -// "u8", -// "next_hop", -// 16 -// ], -// [ -// "u32", -// "next_hop_id" -// ], -// [ -// "u32", -// "rpf_id" -// ], -// [ -// "u32", -// "via_label" -// ], -// [ -// "u8", -// "n_labels" -// ], -// [ -// "vl_api_fib_mpls_label_t", -// "label_stack", -// 16 -// ], -// { -// "crc": "0xabe483ef" -// } +// FibPath represents VPP binary API type 'fib_path': +// +// "fib_path", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "weight" +// ], +// [ +// "u8", +// "preference" +// ], +// [ +// "u8", +// "is_local" +// ], +// [ +// "u8", +// "is_drop" +// ], +// [ +// "u8", +// "is_udp_encap" +// ], +// [ +// "u8", +// "is_unreach" +// ], +// [ +// "u8", +// "is_prohibit" +// ], +// [ +// "u8", +// "is_resolve_host" +// ], +// [ +// "u8", +// "is_resolve_attached" +// ], +// [ +// "u8", +// "is_dvr" +// ], +// [ +// "u8", +// "is_source_lookup" +// ], +// [ +// "u8", +// "afi" +// ], +// [ +// "u8", +// "next_hop", +// 16 +// ], +// [ +// "u32", +// "next_hop_id" +// ], +// [ +// "u32", +// "rpf_id" +// ], +// [ +// "u32", +// "via_label" +// ], +// [ +// "u8", +// "n_labels" +// ], +// [ +// "vl_api_fib_mpls_label_t", +// "label_stack", +// 16 +// ], +// { +// "crc": "0xabe483ef" +// } // type FibPath struct { SwIfIndex uint32 @@ -305,33 +568,81 @@ func (*FibPath) GetCrcString() string { return "abe483ef" } -// IP6RaPrefixInfo represents the VPP binary API type 'ip6_ra_prefix_info'. -// -// "ip6_ra_prefix_info", -// [ -// "u8", -// "dst_address", -// 16 -// ], -// [ -// "u8", -// "dst_address_length" -// ], -// [ -// "u8", -// "flags" -// ], -// [ -// "u32", -// "valid_time" -// ], -// [ -// "u32", -// "preferred_time" -// ], -// { -// "crc": "0x83d7c6e5" -// } +// MacAddress represents VPP binary API type 'mac_address': +// +// "mac_address", +// 6 +// +type MacAddress struct { + Bytes []byte `struc:"[6]byte"` +} + +func (*MacAddress) GetTypeName() string { + return "mac_address" +} +func (*MacAddress) GetCrcString() string { + return "efdbdddc" +} + +// PuntRedirect represents VPP binary API type 'punt_redirect': +// +// "punt_redirect", +// [ +// "u32", +// "rx_sw_if_index" +// ], +// [ +// "u32", +// "tx_sw_if_index" +// ], +// [ +// "vl_api_address_t", +// "nh" +// ], +// { +// "crc": "0x3e7a801f" +// } +// +type PuntRedirect struct { + RxSwIfIndex uint32 + TxSwIfIndex uint32 + Nh Address +} + +func (*PuntRedirect) GetTypeName() string { + return "punt_redirect" +} +func (*PuntRedirect) GetCrcString() string { + return "3e7a801f" +} + +// IP6RaPrefixInfo represents VPP binary API type 'ip6_ra_prefix_info': +// +// "ip6_ra_prefix_info", +// [ +// "u8", +// "dst_address", +// 16 +// ], +// [ +// "u8", +// "dst_address_length" +// ], +// [ +// "u8", +// "flags" +// ], +// [ +// "u32", +// "valid_time" +// ], +// [ +// "u32", +// "preferred_time" +// ], +// { +// "crc": "0x83d7c6e5" +// } // type IP6RaPrefixInfo struct { DstAddress []byte `struc:"[16]byte"` @@ -348,26 +659,26 @@ func (*IP6RaPrefixInfo) GetCrcString() string { return "83d7c6e5" } -// ProxyArp represents the VPP binary API type 'proxy_arp'. -// -// "proxy_arp", -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u8", -// "low_address", -// 4 -// ], -// [ -// "u8", -// "hi_address", -// 4 -// ], -// { -// "crc": "0x6d88106e" -// } +// ProxyArp represents VPP binary API type 'proxy_arp': +// +// "proxy_arp", +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u8", +// "low_address", +// 4 +// ], +// [ +// "u8", +// "hi_address", +// 4 +// ], +// { +// "crc": "0x6d88106e" +// } // type ProxyArp struct { VrfID uint32 @@ -384,20 +695,20 @@ func (*ProxyArp) GetCrcString() string { /* Unions */ -// AddressUnion represents the VPP binary API union 'address_union'. -// -// "address_union", -// [ -// "vl_api_ip4_address_t", -// "ip4" -// ], -// [ -// "vl_api_ip6_address_t", -// "ip6" -// ], -// { -// "crc": "0xd68a2fb4" -// } +// AddressUnion represents VPP binary API union 'address_union': +// +// "address_union", +// [ +// "vl_api_ip4_address_t", +// "ip4" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6" +// ], +// { +// "crc": "0xd68a2fb4" +// } // type AddressUnion struct { Union_data [16]byte @@ -438,41 +749,41 @@ func (u *AddressUnion) GetIP6() (a IP6Address) { /* Messages */ -// IPTableAddDel represents the VPP binary API message 'ip_table_add_del'. -// -// "ip_table_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "name", -// 64 -// ], -// { -// "crc": "0x0240c89d" -// } +// IPTableAddDel represents VPP binary API message 'ip_table_add_del': +// +// "ip_table_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "name", +// 64 +// ], +// { +// "crc": "0x0240c89d" +// } // type IPTableAddDel struct { TableID uint32 @@ -491,24 +802,24 @@ func (*IPTableAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IPTableAddDelReply represents the VPP binary API message 'ip_table_add_del_reply'. -// -// "ip_table_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPTableAddDelReply represents VPP binary API message 'ip_table_add_del_reply': +// +// "ip_table_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPTableAddDelReply struct { Retval int32 @@ -524,24 +835,24 @@ func (*IPTableAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPFibDump represents the VPP binary API message 'ip_fib_dump'. -// -// "ip_fib_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// IPFibDump represents VPP binary API message 'ip_fib_dump': +// +// "ip_fib_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type IPFibDump struct{} @@ -555,48 +866,52 @@ func (*IPFibDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IPFibDetails represents the VPP binary API message 'ip_fib_details'. -// -// "ip_fib_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u8", -// "table_name", -// 64 -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u8", -// "address", -// 4 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_fib_path_t", -// "path", -// 0, -// "count" -// ], -// { -// "crc": "0x99dfd73b" -// } +// IPFibDetails represents VPP binary API message 'ip_fib_details': +// +// "ip_fib_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "table_name", +// 64 +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u8", +// "address", +// 4 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "stats_index" +// ], +// [ +// "vl_api_fib_path_t", +// "path", +// 0, +// "count" +// ], +// { +// "crc": "0xf6a2fab3" +// } // type IPFibDetails struct { TableID uint32 @@ -604,6 +919,7 @@ type IPFibDetails struct { AddressLength uint8 Address []byte `struc:"[4]byte"` Count uint32 `struc:"sizeof=Path"` + StatsIndex uint32 Path []FibPath } @@ -611,30 +927,30 @@ func (*IPFibDetails) GetMessageName() string { return "ip_fib_details" } func (*IPFibDetails) GetCrcString() string { - return "99dfd73b" + return "f6a2fab3" } func (*IPFibDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6FibDump represents the VPP binary API message 'ip6_fib_dump'. -// -// "ip6_fib_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// IP6FibDump represents VPP binary API message 'ip6_fib_dump': +// +// "ip6_fib_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type IP6FibDump struct{} @@ -648,48 +964,52 @@ func (*IP6FibDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IP6FibDetails represents the VPP binary API message 'ip6_fib_details'. -// -// "ip6_fib_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u8", -// "table_name", -// 64 -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_fib_path_t", -// "path", -// 0, -// "count" -// ], -// { -// "crc": "0xabd0060e" -// } +// IP6FibDetails represents VPP binary API message 'ip6_fib_details': +// +// "ip6_fib_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "table_name", +// 64 +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "stats_index" +// ], +// [ +// "vl_api_fib_path_t", +// "path", +// 0, +// "count" +// ], +// { +// "crc": "0xef11e94d" +// } // type IP6FibDetails struct { TableID uint32 @@ -697,6 +1017,7 @@ type IP6FibDetails struct { AddressLength uint8 Address []byte `struc:"[16]byte"` Count uint32 `struc:"sizeof=Path"` + StatsIndex uint32 Path []FibPath } @@ -704,38 +1025,38 @@ func (*IP6FibDetails) GetMessageName() string { return "ip6_fib_details" } func (*IP6FibDetails) GetCrcString() string { - return "abd0060e" + return "ef11e94d" } func (*IP6FibDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPNeighborDump represents the VPP binary API message 'ip_neighbor_dump'. -// -// "ip_neighbor_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x6b7bcd0a" -// } +// IPNeighborDump represents VPP binary API message 'ip_neighbor_dump': +// +// "ip_neighbor_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x6b7bcd0a" +// } // type IPNeighborDump struct { SwIfIndex uint32 @@ -752,45 +1073,50 @@ func (*IPNeighborDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IPNeighborDetails represents the VPP binary API message 'ip_neighbor_details'. -// -// "ip_neighbor_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_static" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// [ -// "u8", -// "ip_address", -// 16 -// ], -// { -// "crc": "0x85e32a72" -// } +// IPNeighborDetails represents VPP binary API message 'ip_neighbor_details': +// +// "ip_neighbor_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "stats_index" +// ], +// [ +// "u8", +// "is_static" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// [ +// "u8", +// "ip_address", +// 16 +// ], +// { +// "crc": "0xc7001770" +// } // type IPNeighborDetails struct { SwIfIndex uint32 + StatsIndex uint32 IsStatic uint8 IsIPv6 uint8 MacAddress []byte `struc:"[6]byte"` @@ -801,60 +1127,60 @@ func (*IPNeighborDetails) GetMessageName() string { return "ip_neighbor_details" } func (*IPNeighborDetails) GetCrcString() string { - return "85e32a72" + return "c7001770" } func (*IPNeighborDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPNeighborAddDel represents the VPP binary API message 'ip_neighbor_add_del'. -// -// "ip_neighbor_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "is_static" -// ], -// [ -// "u8", -// "is_no_adj_fib" -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// [ -// "u8", -// "dst_address", -// 16 -// ], -// { -// "crc": "0x4711eb25" -// } +// IPNeighborAddDel represents VPP binary API message 'ip_neighbor_add_del': +// +// "ip_neighbor_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "is_static" +// ], +// [ +// "u8", +// "is_no_adj_fib" +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// [ +// "u8", +// "dst_address", +// 16 +// ], +// { +// "crc": "0x4711eb25" +// } // type IPNeighborAddDel struct { SwIfIndex uint32 @@ -876,129 +1202,139 @@ func (*IPNeighborAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IPNeighborAddDelReply represents the VPP binary API message 'ip_neighbor_add_del_reply'. -// -// "ip_neighbor_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPNeighborAddDelReply represents VPP binary API message 'ip_neighbor_add_del_reply': +// +// "ip_neighbor_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "stats_index" +// ], +// { +// "crc": "0x1992deab" +// } // type IPNeighborAddDelReply struct { - Retval int32 + Retval int32 + StatsIndex uint32 } func (*IPNeighborAddDelReply) GetMessageName() string { return "ip_neighbor_add_del_reply" } func (*IPNeighborAddDelReply) GetCrcString() string { - return "e8d4e804" + return "1992deab" } func (*IPNeighborAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SetIPFlowHash represents the VPP binary API message 'set_ip_flow_hash'. -// -// "set_ip_flow_hash", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "src" -// ], -// [ -// "u8", -// "dst" -// ], -// [ -// "u8", -// "sport" -// ], -// [ -// "u8", -// "dport" -// ], -// [ -// "u8", -// "proto" -// ], -// [ -// "u8", -// "reverse" -// ], -// { -// "crc": "0x32ebf737" -// } +// SetIPFlowHash represents VPP binary API message 'set_ip_flow_hash': +// +// "set_ip_flow_hash", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "src" +// ], +// [ +// "u8", +// "dst" +// ], +// [ +// "u8", +// "sport" +// ], +// [ +// "u8", +// "dport" +// ], +// [ +// "u8", +// "proto" +// ], +// [ +// "u8", +// "reverse" +// ], +// [ +// "u8", +// "symmetric" +// ], +// { +// "crc": "0xa9084bfb" +// } // type SetIPFlowHash struct { - VrfID uint32 - IsIPv6 uint8 - Src uint8 - Dst uint8 - Sport uint8 - Dport uint8 - Proto uint8 - Reverse uint8 + VrfID uint32 + IsIPv6 uint8 + Src uint8 + Dst uint8 + Sport uint8 + Dport uint8 + Proto uint8 + Reverse uint8 + Symmetric uint8 } func (*SetIPFlowHash) GetMessageName() string { return "set_ip_flow_hash" } func (*SetIPFlowHash) GetCrcString() string { - return "32ebf737" + return "a9084bfb" } func (*SetIPFlowHash) GetMessageType() api.MessageType { return api.RequestMessage } -// SetIPFlowHashReply represents the VPP binary API message 'set_ip_flow_hash_reply'. -// -// "set_ip_flow_hash_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SetIPFlowHashReply represents VPP binary API message 'set_ip_flow_hash_reply': +// +// "set_ip_flow_hash_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SetIPFlowHashReply struct { Retval int32 @@ -1014,80 +1350,80 @@ func (*SetIPFlowHashReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceIP6ndRaConfig represents the VPP binary API message 'sw_interface_ip6nd_ra_config'. -// -// "sw_interface_ip6nd_ra_config", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "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" -// ], -// [ -// "u32", -// "max_interval" -// ], -// [ -// "u32", -// "min_interval" -// ], -// [ -// "u32", -// "lifetime" -// ], -// [ -// "u32", -// "initial_count" -// ], -// [ -// "u32", -// "initial_interval" -// ], -// { -// "crc": "0xc3f02daa" -// } +// SwInterfaceIP6ndRaConfig represents VPP binary API message 'sw_interface_ip6nd_ra_config': +// +// "sw_interface_ip6nd_ra_config", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "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" +// ], +// [ +// "u32", +// "max_interval" +// ], +// [ +// "u32", +// "min_interval" +// ], +// [ +// "u32", +// "lifetime" +// ], +// [ +// "u32", +// "initial_count" +// ], +// [ +// "u32", +// "initial_interval" +// ], +// { +// "crc": "0xc3f02daa" +// } // type SwInterfaceIP6ndRaConfig struct { SwIfIndex uint32 @@ -1116,24 +1452,24 @@ func (*SwInterfaceIP6ndRaConfig) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceIP6ndRaConfigReply represents the VPP binary API message 'sw_interface_ip6nd_ra_config_reply'. -// -// "sw_interface_ip6nd_ra_config_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceIP6ndRaConfigReply represents VPP binary API message 'sw_interface_ip6nd_ra_config_reply': +// +// "sw_interface_ip6nd_ra_config_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceIP6ndRaConfigReply struct { Retval int32 @@ -1149,69 +1485,69 @@ func (*SwInterfaceIP6ndRaConfigReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceIP6ndRaPrefix represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix'. -// -// "sw_interface_ip6nd_ra_prefix", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "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" -// ], -// { -// "crc": "0xca763c9a" -// } +// SwInterfaceIP6ndRaPrefix represents VPP binary API message 'sw_interface_ip6nd_ra_prefix': +// +// "sw_interface_ip6nd_ra_prefix", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "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" +// ], +// { +// "crc": "0xca763c9a" +// } // type SwInterfaceIP6ndRaPrefix struct { SwIfIndex uint32 @@ -1237,24 +1573,24 @@ func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceIP6ndRaPrefixReply represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix_reply'. -// -// "sw_interface_ip6nd_ra_prefix_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceIP6ndRaPrefixReply represents VPP binary API message 'sw_interface_ip6nd_ra_prefix_reply': +// +// "sw_interface_ip6nd_ra_prefix_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceIP6ndRaPrefixReply struct { Retval int32 @@ -1270,37 +1606,37 @@ func (*SwInterfaceIP6ndRaPrefixReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6ndProxyAddDel represents the VPP binary API message 'ip6nd_proxy_add_del'. -// -// "ip6nd_proxy_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_del" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0xd95f0fa0" -// } +// IP6ndProxyAddDel represents VPP binary API message 'ip6nd_proxy_add_del': +// +// "ip6nd_proxy_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_del" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// { +// "crc": "0xd95f0fa0" +// } // type IP6ndProxyAddDel struct { SwIfIndex uint32 @@ -1318,24 +1654,24 @@ func (*IP6ndProxyAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IP6ndProxyAddDelReply represents the VPP binary API message 'ip6nd_proxy_add_del_reply'. -// -// "ip6nd_proxy_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IP6ndProxyAddDelReply represents VPP binary API message 'ip6nd_proxy_add_del_reply': +// +// "ip6nd_proxy_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IP6ndProxyAddDelReply struct { Retval int32 @@ -1351,33 +1687,29 @@ func (*IP6ndProxyAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6ndProxyDetails represents the VPP binary API message 'ip6nd_proxy_details'. -// -// "ip6nd_proxy_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0xd73bf1ab" -// } +// IP6ndProxyDetails represents VPP binary API message 'ip6nd_proxy_details': +// +// "ip6nd_proxy_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// { +// "crc": "0x6a47c974" +// } // type IP6ndProxyDetails struct { SwIfIndex uint32 @@ -1388,30 +1720,30 @@ func (*IP6ndProxyDetails) GetMessageName() string { return "ip6nd_proxy_details" } func (*IP6ndProxyDetails) GetCrcString() string { - return "d73bf1ab" + return "6a47c974" } func (*IP6ndProxyDetails) GetMessageType() api.MessageType { - return api.RequestMessage + return api.ReplyMessage } -// IP6ndProxyDump represents the VPP binary API message 'ip6nd_proxy_dump'. -// -// "ip6nd_proxy_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// IP6ndProxyDump represents VPP binary API message 'ip6nd_proxy_dump': +// +// "ip6nd_proxy_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type IP6ndProxyDump struct{} @@ -1425,48 +1757,48 @@ func (*IP6ndProxyDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IP6ndSendRouterSolicitation represents the VPP binary API message 'ip6nd_send_router_solicitation'. -// -// "ip6nd_send_router_solicitation", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "irt" -// ], -// [ -// "u32", -// "mrt" -// ], -// [ -// "u32", -// "mrc" -// ], -// [ -// "u32", -// "mrd" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "stop" -// ], -// { -// "crc": "0xbd968917" -// } +// IP6ndSendRouterSolicitation represents VPP binary API message 'ip6nd_send_router_solicitation': +// +// "ip6nd_send_router_solicitation", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "irt" +// ], +// [ +// "u32", +// "mrt" +// ], +// [ +// "u32", +// "mrc" +// ], +// [ +// "u32", +// "mrd" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "stop" +// ], +// { +// "crc": "0xbd968917" +// } // type IP6ndSendRouterSolicitation struct { Irt uint32 @@ -1487,24 +1819,24 @@ func (*IP6ndSendRouterSolicitation) GetMessageType() api.MessageType { return api.RequestMessage } -// IP6ndSendRouterSolicitationReply represents the VPP binary API message 'ip6nd_send_router_solicitation_reply'. -// -// "ip6nd_send_router_solicitation_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IP6ndSendRouterSolicitationReply represents VPP binary API message 'ip6nd_send_router_solicitation_reply': +// +// "ip6nd_send_router_solicitation_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IP6ndSendRouterSolicitationReply struct { Retval int32 @@ -1520,32 +1852,32 @@ func (*IP6ndSendRouterSolicitationReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceIP6EnableDisable represents the VPP binary API message 'sw_interface_ip6_enable_disable'. -// -// "sw_interface_ip6_enable_disable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "enable" -// ], -// { -// "crc": "0xa36fadc0" -// } +// SwInterfaceIP6EnableDisable represents VPP binary API message 'sw_interface_ip6_enable_disable': +// +// "sw_interface_ip6_enable_disable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "enable" +// ], +// { +// "crc": "0xa36fadc0" +// } // type SwInterfaceIP6EnableDisable struct { SwIfIndex uint32 @@ -1562,24 +1894,24 @@ func (*SwInterfaceIP6EnableDisable) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceIP6EnableDisableReply represents the VPP binary API message 'sw_interface_ip6_enable_disable_reply'. -// -// "sw_interface_ip6_enable_disable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SwInterfaceIP6EnableDisableReply represents VPP binary API message 'sw_interface_ip6_enable_disable_reply': +// +// "sw_interface_ip6_enable_disable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SwInterfaceIP6EnableDisableReply struct { Retval int32 @@ -1595,212 +1927,136 @@ func (*SwInterfaceIP6EnableDisableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceIP6SetLinkLocalAddress represents the VPP binary API message 'sw_interface_ip6_set_link_local_address'. -// -// "sw_interface_ip6_set_link_local_address", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0xd73bf1ab" -// } -// -type SwInterfaceIP6SetLinkLocalAddress struct { - SwIfIndex uint32 - Address []byte `struc:"[16]byte"` -} - -func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageName() string { - return "sw_interface_ip6_set_link_local_address" -} -func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string { - return "d73bf1ab" -} -func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType { - return api.RequestMessage -} - -// SwInterfaceIP6SetLinkLocalAddressReply represents the VPP binary API message 'sw_interface_ip6_set_link_local_address_reply'. -// -// "sw_interface_ip6_set_link_local_address_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } -// -type SwInterfaceIP6SetLinkLocalAddressReply struct { - Retval int32 -} - -func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageName() string { - return "sw_interface_ip6_set_link_local_address_reply" -} -func (*SwInterfaceIP6SetLinkLocalAddressReply) GetCrcString() string { - return "e8d4e804" -} -func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageType() api.MessageType { - return api.ReplyMessage -} - -// IPAddDelRoute represents the VPP binary API message 'ip_add_del_route'. -// -// "ip_add_del_route", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "next_hop_sw_if_index" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u32", -// "classify_table_index" -// ], -// [ -// "u32", -// "next_hop_table_id" -// ], -// [ -// "u32", -// "next_hop_id" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_drop" -// ], -// [ -// "u8", -// "is_unreach" -// ], -// [ -// "u8", -// "is_prohibit" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "is_local" -// ], -// [ -// "u8", -// "is_classify" -// ], -// [ -// "u8", -// "is_multipath" -// ], -// [ -// "u8", -// "is_resolve_host" -// ], -// [ -// "u8", -// "is_resolve_attached" -// ], -// [ -// "u8", -// "is_dvr" -// ], -// [ -// "u8", -// "is_source_lookup" -// ], -// [ -// "u8", -// "is_udp_encap" -// ], -// [ -// "u8", -// "next_hop_weight" -// ], -// [ -// "u8", -// "next_hop_preference" -// ], -// [ -// "u8", -// "next_hop_proto" -// ], -// [ -// "u8", -// "dst_address_length" -// ], -// [ -// "u8", -// "dst_address", -// 16 -// ], -// [ -// "u8", -// "next_hop_address", -// 16 -// ], -// [ -// "u8", -// "next_hop_n_out_labels" -// ], -// [ -// "u32", -// "next_hop_via_label" -// ], -// [ -// "vl_api_fib_mpls_label_t", -// "next_hop_out_label_stack", -// 0, -// "next_hop_n_out_labels" -// ], -// { -// "crc": "0x4219d62d" -// } +// IPAddDelRoute represents VPP binary API message 'ip_add_del_route': +// +// "ip_add_del_route", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "next_hop_sw_if_index" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u32", +// "classify_table_index" +// ], +// [ +// "u32", +// "next_hop_table_id" +// ], +// [ +// "u32", +// "next_hop_id" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_drop" +// ], +// [ +// "u8", +// "is_unreach" +// ], +// [ +// "u8", +// "is_prohibit" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "is_local" +// ], +// [ +// "u8", +// "is_classify" +// ], +// [ +// "u8", +// "is_multipath" +// ], +// [ +// "u8", +// "is_resolve_host" +// ], +// [ +// "u8", +// "is_resolve_attached" +// ], +// [ +// "u8", +// "is_dvr" +// ], +// [ +// "u8", +// "is_source_lookup" +// ], +// [ +// "u8", +// "is_udp_encap" +// ], +// [ +// "u8", +// "next_hop_weight" +// ], +// [ +// "u8", +// "next_hop_preference" +// ], +// [ +// "u8", +// "next_hop_proto" +// ], +// [ +// "u8", +// "dst_address_length" +// ], +// [ +// "u8", +// "dst_address", +// 16 +// ], +// [ +// "u8", +// "next_hop_address", +// 16 +// ], +// [ +// "u8", +// "next_hop_n_out_labels" +// ], +// [ +// "u32", +// "next_hop_via_label" +// ], +// [ +// "vl_api_fib_mpls_label_t", +// "next_hop_out_label_stack", +// 0, +// "next_hop_n_out_labels" +// ], +// { +// "crc": "0x4219d62d" +// } // type IPAddDelRoute struct { NextHopSwIfIndex uint32 @@ -1842,116 +2098,121 @@ func (*IPAddDelRoute) GetMessageType() api.MessageType { return api.RequestMessage } -// IPAddDelRouteReply represents the VPP binary API message 'ip_add_del_route_reply'. -// -// "ip_add_del_route_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPAddDelRouteReply represents VPP binary API message 'ip_add_del_route_reply': +// +// "ip_add_del_route_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "stats_index" +// ], +// { +// "crc": "0x1992deab" +// } // type IPAddDelRouteReply struct { - Retval int32 + Retval int32 + StatsIndex uint32 } func (*IPAddDelRouteReply) GetMessageName() string { return "ip_add_del_route_reply" } func (*IPAddDelRouteReply) GetCrcString() string { - return "e8d4e804" + return "1992deab" } func (*IPAddDelRouteReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPMrouteAddDel represents the VPP binary API message 'ip_mroute_add_del'. -// -// "ip_mroute_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "next_hop_sw_if_index" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u32", -// "entry_flags" -// ], -// [ -// "u32", -// "itf_flags" -// ], -// [ -// "u32", -// "rpf_id" -// ], -// [ -// "u32", -// "bier_imp" -// ], -// [ -// "u16", -// "grp_address_length" -// ], -// [ -// "u8", -// "next_hop_afi" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "is_local" -// ], -// [ -// "u8", -// "grp_address", -// 16 -// ], -// [ -// "u8", -// "src_address", -// 16 -// ], -// [ -// "u8", -// "nh_address", -// 16 -// ], -// { -// "crc": "0xf44c17b1" -// } +// IPMrouteAddDel represents VPP binary API message 'ip_mroute_add_del': +// +// "ip_mroute_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "next_hop_sw_if_index" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u32", +// "entry_flags" +// ], +// [ +// "u32", +// "itf_flags" +// ], +// [ +// "u32", +// "rpf_id" +// ], +// [ +// "u32", +// "bier_imp" +// ], +// [ +// "u16", +// "grp_address_length" +// ], +// [ +// "u8", +// "next_hop_afi" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "is_local" +// ], +// [ +// "u8", +// "grp_address", +// 16 +// ], +// [ +// "u8", +// "src_address", +// 16 +// ], +// [ +// "u8", +// "nh_address", +// 16 +// ], +// { +// "crc": "0xf44c17b1" +// } // type IPMrouteAddDel struct { NextHopSwIfIndex uint32 @@ -1980,57 +2241,62 @@ func (*IPMrouteAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IPMrouteAddDelReply represents the VPP binary API message 'ip_mroute_add_del_reply'. -// -// "ip_mroute_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPMrouteAddDelReply represents VPP binary API message 'ip_mroute_add_del_reply': +// +// "ip_mroute_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "stats_index" +// ], +// { +// "crc": "0x1992deab" +// } // type IPMrouteAddDelReply struct { - Retval int32 + Retval int32 + StatsIndex uint32 } func (*IPMrouteAddDelReply) GetMessageName() string { return "ip_mroute_add_del_reply" } func (*IPMrouteAddDelReply) GetCrcString() string { - return "e8d4e804" + return "1992deab" } func (*IPMrouteAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPMfibDump represents the VPP binary API message 'ip_mfib_dump'. -// -// "ip_mfib_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// IPMfibDump represents VPP binary API message 'ip_mfib_dump': +// +// "ip_mfib_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type IPMfibDump struct{} @@ -2044,56 +2310,60 @@ func (*IPMfibDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IPMfibDetails represents the VPP binary API message 'ip_mfib_details'. -// -// "ip_mfib_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u32", -// "entry_flags" -// ], -// [ -// "u32", -// "rpf_id" -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u8", -// "grp_address", -// 4 -// ], -// [ -// "u8", -// "src_address", -// 4 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_fib_path_t", -// "path", -// 0, -// "count" -// ], -// { -// "crc": "0x5e530d5e" -// } +// IPMfibDetails represents VPP binary API message 'ip_mfib_details': +// +// "ip_mfib_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u32", +// "entry_flags" +// ], +// [ +// "u32", +// "rpf_id" +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u8", +// "grp_address", +// 4 +// ], +// [ +// "u8", +// "src_address", +// 4 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "stats_index" +// ], +// [ +// "vl_api_fib_path_t", +// "path", +// 0, +// "count" +// ], +// { +// "crc": "0x21329a12" +// } // type IPMfibDetails struct { TableID uint32 @@ -2103,6 +2373,7 @@ type IPMfibDetails struct { GrpAddress []byte `struc:"[4]byte"` SrcAddress []byte `struc:"[4]byte"` Count uint32 `struc:"sizeof=Path"` + StatsIndex uint32 Path []FibPath } @@ -2110,30 +2381,30 @@ func (*IPMfibDetails) GetMessageName() string { return "ip_mfib_details" } func (*IPMfibDetails) GetCrcString() string { - return "5e530d5e" + return "21329a12" } func (*IPMfibDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6MfibDump represents the VPP binary API message 'ip6_mfib_dump'. -// -// "ip6_mfib_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// IP6MfibDump represents VPP binary API message 'ip6_mfib_dump': +// +// "ip6_mfib_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type IP6MfibDump struct{} @@ -2147,48 +2418,48 @@ func (*IP6MfibDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IP6MfibDetails represents the VPP binary API message 'ip6_mfib_details'. -// -// "ip6_mfib_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u8", -// "grp_address", -// 16 -// ], -// [ -// "u8", -// "src_address", -// 16 -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_fib_path_t", -// "path", -// 0, -// "count" -// ], -// { -// "crc": "0xe02dcb4b" -// } +// IP6MfibDetails represents VPP binary API message 'ip6_mfib_details': +// +// "ip6_mfib_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u8", +// "grp_address", +// 16 +// ], +// [ +// "u8", +// "src_address", +// 16 +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_fib_path_t", +// "path", +// 0, +// "count" +// ], +// { +// "crc": "0xe02dcb4b" +// } // type IP6MfibDetails struct { TableID uint32 @@ -2209,41 +2480,37 @@ func (*IP6MfibDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPAddressDetails represents the VPP binary API message 'ip_address_details'. -// -// "ip_address_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "ip", -// 16 -// ], -// [ -// "u8", -// "prefix_length" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0xbc7442f2" -// } +// IPAddressDetails represents VPP binary API message 'ip_address_details': +// +// "ip_address_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "ip", +// 16 +// ], +// [ +// "u8", +// "prefix_length" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x9bc25966" +// } // type IPAddressDetails struct { IP []byte `struc:"[16]byte"` @@ -2256,38 +2523,38 @@ func (*IPAddressDetails) GetMessageName() string { return "ip_address_details" } func (*IPAddressDetails) GetCrcString() string { - return "bc7442f2" + return "9bc25966" } func (*IPAddressDetails) GetMessageType() api.MessageType { - return api.RequestMessage + return api.ReplyMessage } -// IPAddressDump represents the VPP binary API message 'ip_address_dump'. -// -// "ip_address_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x6b7bcd0a" -// } +// IPAddressDump represents VPP binary API message 'ip_address_dump': +// +// "ip_address_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x6b7bcd0a" +// } // type IPAddressDump struct { SwIfIndex uint32 @@ -2304,32 +2571,28 @@ func (*IPAddressDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IPUnnumberedDetails represents the VPP binary API message 'ip_unnumbered_details'. -// -// "ip_unnumbered_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "ip_sw_if_index" -// ], -// { -// "crc": "0x05b717ca" -// } +// IPUnnumberedDetails represents VPP binary API message 'ip_unnumbered_details': +// +// "ip_unnumbered_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "ip_sw_if_index" +// ], +// { +// "crc": "0xae694cf4" +// } // type IPUnnumberedDetails struct { SwIfIndex uint32 @@ -2340,34 +2603,34 @@ func (*IPUnnumberedDetails) GetMessageName() string { return "ip_unnumbered_details" } func (*IPUnnumberedDetails) GetCrcString() string { - return "05b717ca" + return "ae694cf4" } func (*IPUnnumberedDetails) GetMessageType() api.MessageType { - return api.RequestMessage + return api.ReplyMessage } -// IPUnnumberedDump represents the VPP binary API message 'ip_unnumbered_dump'. -// -// "ip_unnumbered_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// IPUnnumberedDump represents VPP binary API message 'ip_unnumbered_dump': +// +// "ip_unnumbered_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type IPUnnumberedDump struct { SwIfIndex uint32 @@ -2383,32 +2646,31 @@ func (*IPUnnumberedDump) GetMessageType() api.MessageType { return api.RequestMessage } -// IPDetails represents the VPP binary API message 'ip_details'. -// -// "ip_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x452ffc5a" -// } +// IPDetails represents VPP binary API message 'ip_details': +// +// "ip_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x8bb37ec4" +// } // type IPDetails struct { SwIfIndex uint32 - Context uint32 IsIPv6 uint8 } @@ -2416,34 +2678,34 @@ func (*IPDetails) GetMessageName() string { return "ip_details" } func (*IPDetails) GetCrcString() string { - return "452ffc5a" + return "8bb37ec4" } func (*IPDetails) GetMessageType() api.MessageType { - return api.OtherMessage -} - -// IPDump represents the VPP binary API message 'ip_dump'. -// -// "ip_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0xde883da4" -// } + return api.ReplyMessage +} + +// IPDump represents VPP binary API message 'ip_dump': +// +// "ip_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0xde883da4" +// } // type IPDump struct { IsIPv6 uint8 @@ -2459,24 +2721,24 @@ func (*IPDump) GetMessageType() api.MessageType { return api.RequestMessage } -// MfibSignalDump represents the VPP binary API message 'mfib_signal_dump'. -// -// "mfib_signal_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// MfibSignalDump represents VPP binary API message 'mfib_signal_dump': +// +// "mfib_signal_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type MfibSignalDump struct{} @@ -2490,55 +2752,51 @@ func (*MfibSignalDump) GetMessageType() api.MessageType { return api.RequestMessage } -// MfibSignalDetails represents the VPP binary API message 'mfib_signal_details'. -// -// "mfib_signal_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "table_id" -// ], -// [ -// "u16", -// "grp_address_len" -// ], -// [ -// "u8", -// "grp_address", -// 16 -// ], -// [ -// "u8", -// "src_address", -// 16 -// ], -// [ -// "u16", -// "ip_packet_len" -// ], -// [ -// "u8", -// "ip_packet_data", -// 256 -// ], -// { -// "crc": "0x791bbeab" -// } +// MfibSignalDetails represents VPP binary API message 'mfib_signal_details': +// +// "mfib_signal_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u16", +// "grp_address_len" +// ], +// [ +// "u8", +// "grp_address", +// 16 +// ], +// [ +// "u8", +// "src_address", +// 16 +// ], +// [ +// "u16", +// "ip_packet_len" +// ], +// [ +// "u8", +// "ip_packet_data", +// 256 +// ], +// { +// "crc": "0x3f5f03f5" +// } // type MfibSignalDetails struct { SwIfIndex uint32 @@ -2554,42 +2812,42 @@ func (*MfibSignalDetails) GetMessageName() string { return "mfib_signal_details" } func (*MfibSignalDetails) GetCrcString() string { - return "791bbeab" + return "3f5f03f5" } func (*MfibSignalDetails) GetMessageType() api.MessageType { - return api.RequestMessage + return api.ReplyMessage } -// IPPuntPolice represents the VPP binary API message 'ip_punt_police'. -// -// "ip_punt_police", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "policer_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_ip6" -// ], -// { -// "crc": "0x38691592" -// } +// IPPuntPolice represents VPP binary API message 'ip_punt_police': +// +// "ip_punt_police", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "policer_index" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "is_ip6" +// ], +// { +// "crc": "0x38691592" +// } // type IPPuntPolice struct { PolicerIndex uint32 @@ -2607,24 +2865,24 @@ func (*IPPuntPolice) GetMessageType() api.MessageType { return api.RequestMessage } -// IPPuntPoliceReply represents the VPP binary API message 'ip_punt_police_reply'. -// -// "ip_punt_police_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPPuntPoliceReply represents VPP binary API message 'ip_punt_police_reply': +// +// "ip_punt_police_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPPuntPoliceReply struct { Retval int32 @@ -2640,82 +2898,66 @@ func (*IPPuntPoliceReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPPuntRedirect represents the VPP binary API message 'ip_punt_redirect'. -// -// "ip_punt_redirect", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "rx_sw_if_index" -// ], -// [ -// "u32", -// "tx_sw_if_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "is_ip6" -// ], -// [ -// "u8", -// "nh", -// 16 -// ], -// { -// "crc": "0x996b6603" -// } +// IPPuntRedirect represents VPP binary API message 'ip_punt_redirect': +// +// "ip_punt_redirect", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_punt_redirect_t", +// "punt" +// ], +// [ +// "u8", +// "is_add" +// ], +// { +// "crc": "0xa953495b" +// } // type IPPuntRedirect struct { - RxSwIfIndex uint32 - TxSwIfIndex uint32 - IsAdd uint8 - IsIP6 uint8 - Nh []byte `struc:"[16]byte"` + Punt PuntRedirect + IsAdd uint8 } func (*IPPuntRedirect) GetMessageName() string { return "ip_punt_redirect" } func (*IPPuntRedirect) GetCrcString() string { - return "996b6603" + return "a953495b" } func (*IPPuntRedirect) GetMessageType() api.MessageType { return api.RequestMessage } -// IPPuntRedirectReply represents the VPP binary API message 'ip_punt_redirect_reply'. -// -// "ip_punt_redirect_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPPuntRedirectReply represents VPP binary API message 'ip_punt_redirect_reply': +// +// "ip_punt_redirect_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPPuntRedirectReply struct { Retval int32 @@ -2731,45 +2973,120 @@ func (*IPPuntRedirectReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPContainerProxyAddDel represents the VPP binary API message 'ip_container_proxy_add_del'. -// -// "ip_container_proxy_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "ip", -// 16 -// ], -// [ -// "u8", -// "is_ip4" -// ], -// [ -// "u8", -// "plen" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "is_add" -// ], -// { -// "crc": "0x0a355d39" -// } +// IPPuntRedirectDump represents VPP binary API message 'ip_punt_redirect_dump': +// +// "ip_punt_redirect_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x6b7bcd0a" +// } +// +type IPPuntRedirectDump struct { + SwIfIndex uint32 + IsIPv6 uint8 +} + +func (*IPPuntRedirectDump) GetMessageName() string { + return "ip_punt_redirect_dump" +} +func (*IPPuntRedirectDump) GetCrcString() string { + return "6b7bcd0a" +} +func (*IPPuntRedirectDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// IPPuntRedirectDetails represents VPP binary API message 'ip_punt_redirect_details': +// +// "ip_punt_redirect_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_punt_redirect_t", +// "punt" +// ], +// { +// "crc": "0xa47f70da" +// } +// +type IPPuntRedirectDetails struct { + Punt PuntRedirect +} + +func (*IPPuntRedirectDetails) GetMessageName() string { + return "ip_punt_redirect_details" +} +func (*IPPuntRedirectDetails) GetCrcString() string { + return "a47f70da" +} +func (*IPPuntRedirectDetails) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// IPContainerProxyAddDel represents VPP binary API message 'ip_container_proxy_add_del': +// +// "ip_container_proxy_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "ip", +// 16 +// ], +// [ +// "u8", +// "is_ip4" +// ], +// [ +// "u8", +// "plen" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "is_add" +// ], +// { +// "crc": "0x0a355d39" +// } // type IPContainerProxyAddDel struct { IP []byte `struc:"[16]byte"` @@ -2789,24 +3106,24 @@ func (*IPContainerProxyAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IPContainerProxyAddDelReply represents the VPP binary API message 'ip_container_proxy_add_del_reply'. -// -// "ip_container_proxy_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPContainerProxyAddDelReply represents VPP binary API message 'ip_container_proxy_add_del_reply': +// +// "ip_container_proxy_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPContainerProxyAddDelReply struct { Retval int32 @@ -2822,59 +3139,128 @@ func (*IPContainerProxyAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'. -// -// "ip_source_and_port_range_check_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u8", -// "mask_length" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// [ -// "u8", -// "number_of_ranges" -// ], -// [ -// "u16", -// "low_ports", -// 32 -// ], -// [ -// "u16", -// "high_ports", -// 32 -// ], -// [ -// "u32", -// "vrf_id" -// ], -// { -// "crc": "0x03d6b03a" -// } +// IPContainerProxyDump represents VPP binary API message 'ip_container_proxy_dump': +// +// "ip_container_proxy_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type IPContainerProxyDump struct{} + +func (*IPContainerProxyDump) GetMessageName() string { + return "ip_container_proxy_dump" +} +func (*IPContainerProxyDump) GetCrcString() string { + return "51077d14" +} +func (*IPContainerProxyDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// IPContainerProxyDetails represents VPP binary API message 'ip_container_proxy_details': +// +// "ip_container_proxy_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "vl_api_prefix_t", +// "prefix" +// ], +// { +// "crc": "0xd528df63" +// } +// +type IPContainerProxyDetails struct { + SwIfIndex uint32 + Prefix Prefix +} + +func (*IPContainerProxyDetails) GetMessageName() string { + return "ip_container_proxy_details" +} +func (*IPContainerProxyDetails) GetCrcString() string { + return "d528df63" +} +func (*IPContainerProxyDetails) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// IPSourceAndPortRangeCheckAddDel represents VPP binary API message 'ip_source_and_port_range_check_add_del': +// +// "ip_source_and_port_range_check_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "mask_length" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// [ +// "u8", +// "number_of_ranges" +// ], +// [ +// "u16", +// "low_ports", +// 32 +// ], +// [ +// "u16", +// "high_ports", +// 32 +// ], +// [ +// "u32", +// "vrf_id" +// ], +// { +// "crc": "0x03d6b03a" +// } // type IPSourceAndPortRangeCheckAddDel struct { IsIPv6 uint8 @@ -2897,24 +3283,24 @@ func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'. -// -// "ip_source_and_port_range_check_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPSourceAndPortRangeCheckAddDelReply represents VPP binary API message 'ip_source_and_port_range_check_add_del_reply': +// +// "ip_source_and_port_range_check_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPSourceAndPortRangeCheckAddDelReply struct { Retval int32 @@ -2930,48 +3316,48 @@ func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'. -// -// "ip_source_and_port_range_check_interface_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u32", -// "tcp_in_vrf_id" -// ], -// [ -// "u32", -// "tcp_out_vrf_id" -// ], -// [ -// "u32", -// "udp_in_vrf_id" -// ], -// [ -// "u32", -// "udp_out_vrf_id" -// ], -// { -// "crc": "0x6966bc44" -// } +// IPSourceAndPortRangeCheckInterfaceAddDel represents VPP binary API message 'ip_source_and_port_range_check_interface_add_del': +// +// "ip_source_and_port_range_check_interface_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "tcp_in_vrf_id" +// ], +// [ +// "u32", +// "tcp_out_vrf_id" +// ], +// [ +// "u32", +// "udp_in_vrf_id" +// ], +// [ +// "u32", +// "udp_out_vrf_id" +// ], +// { +// "crc": "0x6966bc44" +// } // type IPSourceAndPortRangeCheckInterfaceAddDel struct { IsAdd uint8 @@ -2992,24 +3378,24 @@ func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageTyp return api.RequestMessage } -// IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'. -// -// "ip_source_and_port_range_check_interface_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPSourceAndPortRangeCheckInterfaceAddDelReply represents VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply': +// +// "ip_source_and_port_range_check_interface_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPSourceAndPortRangeCheckInterfaceAddDelReply struct { Retval int32 @@ -3025,48 +3411,128 @@ func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.Messa return api.ReplyMessage } -// IPScanNeighborEnableDisable represents the VPP binary API message 'ip_scan_neighbor_enable_disable'. -// -// "ip_scan_neighbor_enable_disable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "mode" -// ], -// [ -// "u8", -// "scan_interval" -// ], -// [ -// "u8", -// "max_proc_time" -// ], -// [ -// "u8", -// "max_update" -// ], -// [ -// "u8", -// "scan_int_delay" -// ], -// [ -// "u8", -// "stale_threshold" -// ], -// { -// "crc": "0x0a6bf57a" -// } +// IPSourceCheckInterfaceAddDel represents VPP binary API message 'ip_source_check_interface_add_del': +// +// "ip_source_check_interface_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u8", +// "loose" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x0a60152a" +// } +// +type IPSourceCheckInterfaceAddDel struct { + IsAdd uint8 + Loose uint8 + SwIfIndex uint32 +} + +func (*IPSourceCheckInterfaceAddDel) GetMessageName() string { + return "ip_source_check_interface_add_del" +} +func (*IPSourceCheckInterfaceAddDel) GetCrcString() string { + return "0a60152a" +} +func (*IPSourceCheckInterfaceAddDel) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// IPSourceCheckInterfaceAddDelReply represents VPP binary API message 'ip_source_check_interface_add_del_reply': +// +// "ip_source_check_interface_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type IPSourceCheckInterfaceAddDelReply struct { + Retval int32 +} + +func (*IPSourceCheckInterfaceAddDelReply) GetMessageName() string { + return "ip_source_check_interface_add_del_reply" +} +func (*IPSourceCheckInterfaceAddDelReply) GetCrcString() string { + return "e8d4e804" +} +func (*IPSourceCheckInterfaceAddDelReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// IPScanNeighborEnableDisable represents VPP binary API message 'ip_scan_neighbor_enable_disable': +// +// "ip_scan_neighbor_enable_disable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "mode" +// ], +// [ +// "u8", +// "scan_interval" +// ], +// [ +// "u8", +// "max_proc_time" +// ], +// [ +// "u8", +// "max_update" +// ], +// [ +// "u8", +// "scan_int_delay" +// ], +// [ +// "u8", +// "stale_threshold" +// ], +// { +// "crc": "0x0a6bf57a" +// } // type IPScanNeighborEnableDisable struct { Mode uint8 @@ -3087,24 +3553,24 @@ func (*IPScanNeighborEnableDisable) GetMessageType() api.MessageType { return api.RequestMessage } -// IPScanNeighborEnableDisableReply represents the VPP binary API message 'ip_scan_neighbor_enable_disable_reply'. -// -// "ip_scan_neighbor_enable_disable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPScanNeighborEnableDisableReply represents VPP binary API message 'ip_scan_neighbor_enable_disable_reply': +// +// "ip_scan_neighbor_enable_disable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPScanNeighborEnableDisableReply struct { Retval int32 @@ -3120,37 +3586,37 @@ func (*IPScanNeighborEnableDisableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPProbeNeighbor represents the VPP binary API message 'ip_probe_neighbor'. -// -// "ip_probe_neighbor", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "dst_address", -// 16 -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x1e44bfd7" -// } +// IPProbeNeighbor represents VPP binary API message 'ip_probe_neighbor': +// +// "ip_probe_neighbor", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "dst_address", +// 16 +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x1e44bfd7" +// } // type IPProbeNeighbor struct { SwIfIndex uint32 @@ -3168,24 +3634,24 @@ func (*IPProbeNeighbor) GetMessageType() api.MessageType { return api.RequestMessage } -// IPProbeNeighborReply represents the VPP binary API message 'ip_probe_neighbor_reply'. -// -// "ip_probe_neighbor_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPProbeNeighborReply represents VPP binary API message 'ip_probe_neighbor_reply': +// +// "ip_probe_neighbor_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPProbeNeighborReply struct { Retval int32 @@ -3201,36 +3667,36 @@ func (*IPProbeNeighborReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'. -// -// "want_ip4_arp_events", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "address" -// ], -// { -// "crc": "0x77e06379" -// } +// WantIP4ArpEvents represents VPP binary API message 'want_ip4_arp_events': +// +// "want_ip4_arp_events", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "address" +// ], +// { +// "crc": "0x77e06379" +// } // type WantIP4ArpEvents struct { EnableDisable uint8 @@ -3248,24 +3714,24 @@ func (*WantIP4ArpEvents) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'. -// -// "want_ip4_arp_events_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP4ArpEventsReply represents VPP binary API message 'want_ip4_arp_events_reply': +// +// "want_ip4_arp_events_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP4ArpEventsReply struct { Retval int32 @@ -3281,41 +3747,41 @@ func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'. -// -// "ip4_arp_event", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "address" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "new_mac", -// 6 -// ], -// [ -// "u8", -// "mac_ip" -// ], -// { -// "crc": "0xef7235f7" -// } +// IP4ArpEvent represents VPP binary API message 'ip4_arp_event': +// +// "ip4_arp_event", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "address" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "new_mac", +// 6 +// ], +// [ +// "u8", +// "mac_ip" +// ], +// { +// "crc": "0xef7235f7" +// } // type IP4ArpEvent struct { Address uint32 @@ -3335,37 +3801,37 @@ func (*IP4ArpEvent) GetMessageType() api.MessageType { return api.EventMessage } -// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'. -// -// "want_ip6_nd_events", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// { -// "crc": "0x1cf65fbb" -// } +// WantIP6NdEvents represents VPP binary API message 'want_ip6_nd_events': +// +// "want_ip6_nd_events", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// { +// "crc": "0x1cf65fbb" +// } // type WantIP6NdEvents struct { EnableDisable uint8 @@ -3383,24 +3849,24 @@ func (*WantIP6NdEvents) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'. -// -// "want_ip6_nd_events_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP6NdEventsReply represents VPP binary API message 'want_ip6_nd_events_reply': +// +// "want_ip6_nd_events_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP6NdEventsReply struct { Retval int32 @@ -3416,42 +3882,42 @@ func (*WantIP6NdEventsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6NdEvent represents the VPP binary API message 'ip6_nd_event'. -// -// "ip6_nd_event", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "address", -// 16 -// ], -// [ -// "u8", -// "new_mac", -// 6 -// ], -// [ -// "u8", -// "mac_ip" -// ], -// { -// "crc": "0x96ab2fdd" -// } +// IP6NdEvent represents VPP binary API message 'ip6_nd_event': +// +// "ip6_nd_event", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "address", +// 16 +// ], +// [ +// "u8", +// "new_mac", +// 6 +// ], +// [ +// "u8", +// "mac_ip" +// ], +// { +// "crc": "0x96ab2fdd" +// } // type IP6NdEvent struct { PID uint32 @@ -3471,32 +3937,32 @@ func (*IP6NdEvent) GetMessageType() api.MessageType { return api.EventMessage } -// WantIP6RaEvents represents the VPP binary API message 'want_ip6_ra_events'. -// -// "want_ip6_ra_events", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x05b454b5" -// } +// WantIP6RaEvents represents VPP binary API message 'want_ip6_ra_events': +// +// "want_ip6_ra_events", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x05b454b5" +// } // type WantIP6RaEvents struct { EnableDisable uint8 @@ -3513,24 +3979,24 @@ func (*WantIP6RaEvents) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP6RaEventsReply represents the VPP binary API message 'want_ip6_ra_events_reply'. -// -// "want_ip6_ra_events_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP6RaEventsReply represents VPP binary API message 'want_ip6_ra_events_reply': +// +// "want_ip6_ra_events_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP6RaEventsReply struct { Retval int32 @@ -3546,63 +4012,63 @@ func (*WantIP6RaEventsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IP6RaEvent represents the VPP binary API message 'ip6_ra_event'. -// -// "ip6_ra_event", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "router_address", -// 16 -// ], -// [ -// "u8", -// "current_hop_limit" -// ], -// [ -// "u8", -// "flags" -// ], -// [ -// "u16", -// "router_lifetime_in_sec" -// ], -// [ -// "u32", -// "neighbor_reachable_time_in_msec" -// ], -// [ -// "u32", -// "time_in_msec_between_retransmitted_neighbor_solicitations" -// ], -// [ -// "u32", -// "n_prefixes" -// ], -// [ -// "vl_api_ip6_ra_prefix_info_t", -// "prefixes", -// 0, -// "n_prefixes" -// ], -// { -// "crc": "0xc5e54257" -// } +// IP6RaEvent represents VPP binary API message 'ip6_ra_event': +// +// "ip6_ra_event", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "router_address", +// 16 +// ], +// [ +// "u8", +// "current_hop_limit" +// ], +// [ +// "u8", +// "flags" +// ], +// [ +// "u16", +// "router_lifetime_in_sec" +// ], +// [ +// "u32", +// "neighbor_reachable_time_in_msec" +// ], +// [ +// "u32", +// "time_in_msec_between_retransmitted_neighbor_solicitations" +// ], +// [ +// "u32", +// "n_prefixes" +// ], +// [ +// "vl_api_ip6_ra_prefix_info_t", +// "prefixes", +// 0, +// "n_prefixes" +// ], +// { +// "crc": "0xc5e54257" +// } // type IP6RaEvent struct { PID uint32 @@ -3627,32 +4093,32 @@ func (*IP6RaEvent) GetMessageType() api.MessageType { return api.EventMessage } -// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'. -// -// "proxy_arp_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "vl_api_proxy_arp_t", -// "proxy" -// ], -// { -// "crc": "0x227988d9" -// } +// ProxyArpAddDel represents VPP binary API message 'proxy_arp_add_del': +// +// "proxy_arp_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "vl_api_proxy_arp_t", +// "proxy" +// ], +// { +// "crc": "0x227988d9" +// } // type ProxyArpAddDel struct { IsAdd uint8 @@ -3669,24 +4135,24 @@ func (*ProxyArpAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'. -// -// "proxy_arp_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ProxyArpAddDelReply represents VPP binary API message 'proxy_arp_add_del_reply': +// +// "proxy_arp_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ProxyArpAddDelReply struct { Retval int32 @@ -3702,24 +4168,24 @@ func (*ProxyArpAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ProxyArpDump represents the VPP binary API message 'proxy_arp_dump'. -// -// "proxy_arp_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ProxyArpDump represents VPP binary API message 'proxy_arp_dump': +// +// "proxy_arp_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ProxyArpDump struct{} @@ -3733,24 +4199,24 @@ func (*ProxyArpDump) GetMessageType() api.MessageType { return api.RequestMessage } -// ProxyArpDetails represents the VPP binary API message 'proxy_arp_details'. -// -// "proxy_arp_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "vl_api_proxy_arp_t", -// "proxy" -// ], -// { -// "crc": "0x9b707c77" -// } +// ProxyArpDetails represents VPP binary API message 'proxy_arp_details': +// +// "proxy_arp_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_proxy_arp_t", +// "proxy" +// ], +// { +// "crc": "0x9b707c77" +// } // type ProxyArpDetails struct { Proxy ProxyArp @@ -3766,32 +4232,32 @@ func (*ProxyArpDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'. -// -// "proxy_arp_intfc_enable_disable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "enable_disable" -// ], -// { -// "crc": "0x69d24598" -// } +// ProxyArpIntfcEnableDisable represents VPP binary API message 'proxy_arp_intfc_enable_disable': +// +// "proxy_arp_intfc_enable_disable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "enable_disable" +// ], +// { +// "crc": "0x69d24598" +// } // type ProxyArpIntfcEnableDisable struct { SwIfIndex uint32 @@ -3808,24 +4274,24 @@ func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType { return api.RequestMessage } -// ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'. -// -// "proxy_arp_intfc_enable_disable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ProxyArpIntfcEnableDisableReply represents VPP binary API message 'proxy_arp_intfc_enable_disable_reply': +// +// "proxy_arp_intfc_enable_disable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ProxyArpIntfcEnableDisableReply struct { Retval int32 @@ -3841,24 +4307,24 @@ func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ProxyArpIntfcDump represents the VPP binary API message 'proxy_arp_intfc_dump'. -// -// "proxy_arp_intfc_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ProxyArpIntfcDump represents VPP binary API message 'proxy_arp_intfc_dump': +// +// "proxy_arp_intfc_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ProxyArpIntfcDump struct{} @@ -3872,24 +4338,24 @@ func (*ProxyArpIntfcDump) GetMessageType() api.MessageType { return api.RequestMessage } -// ProxyArpIntfcDetails represents the VPP binary API message 'proxy_arp_intfc_details'. -// -// "proxy_arp_intfc_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xf6458e5f" -// } +// ProxyArpIntfcDetails represents VPP binary API message 'proxy_arp_intfc_details': +// +// "proxy_arp_intfc_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xf6458e5f" +// } // type ProxyArpIntfcDetails struct { SwIfIndex uint32 @@ -3905,32 +4371,32 @@ func (*ProxyArpIntfcDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// ResetFib represents the VPP binary API message 'reset_fib'. -// -// "reset_fib", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// { -// "crc": "0x8553ebd9" -// } +// ResetFib represents VPP binary API message 'reset_fib': +// +// "reset_fib", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// { +// "crc": "0x8553ebd9" +// } // type ResetFib struct { VrfID uint32 @@ -3947,24 +4413,24 @@ func (*ResetFib) GetMessageType() api.MessageType { return api.RequestMessage } -// ResetFibReply represents the VPP binary API message 'reset_fib_reply'. -// -// "reset_fib_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// ResetFibReply represents VPP binary API message 'reset_fib_reply': +// +// "reset_fib_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type ResetFibReply struct { Retval int32 @@ -3980,32 +4446,32 @@ func (*ResetFibReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'. -// -// "set_arp_neighbor_limit", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_ipv6" -// ], -// [ -// "u32", -// "arp_neighbor_limit" -// ], -// { -// "crc": "0x97d01fd6" -// } +// SetArpNeighborLimit represents VPP binary API message 'set_arp_neighbor_limit': +// +// "set_arp_neighbor_limit", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_ipv6" +// ], +// [ +// "u32", +// "arp_neighbor_limit" +// ], +// { +// "crc": "0x97d01fd6" +// } // type SetArpNeighborLimit struct { IsIPv6 uint8 @@ -4022,24 +4488,24 @@ func (*SetArpNeighborLimit) GetMessageType() api.MessageType { return api.RequestMessage } -// SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'. -// -// "set_arp_neighbor_limit_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// SetArpNeighborLimitReply represents VPP binary API message 'set_arp_neighbor_limit_reply': +// +// "set_arp_neighbor_limit_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type SetArpNeighborLimitReply struct { Retval int32 @@ -4055,48 +4521,48 @@ func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IoamEnable represents the VPP binary API message 'ioam_enable'. -// -// "ioam_enable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u16", -// "id" -// ], -// [ -// "u8", -// "seqno" -// ], -// [ -// "u8", -// "analyse" -// ], -// [ -// "u8", -// "pot_enable" -// ], -// [ -// "u8", -// "trace_enable" -// ], -// [ -// "u32", -// "node_id" -// ], -// { -// "crc": "0x9392e032" -// } +// IoamEnable represents VPP binary API message 'ioam_enable': +// +// "ioam_enable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u16", +// "id" +// ], +// [ +// "u8", +// "seqno" +// ], +// [ +// "u8", +// "analyse" +// ], +// [ +// "u8", +// "pot_enable" +// ], +// [ +// "u8", +// "trace_enable" +// ], +// [ +// "u32", +// "node_id" +// ], +// { +// "crc": "0x9392e032" +// } // type IoamEnable struct { ID uint16 @@ -4117,24 +4583,24 @@ func (*IoamEnable) GetMessageType() api.MessageType { return api.RequestMessage } -// IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'. -// -// "ioam_enable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IoamEnableReply represents VPP binary API message 'ioam_enable_reply': +// +// "ioam_enable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IoamEnableReply struct { Retval int32 @@ -4150,28 +4616,28 @@ func (*IoamEnableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IoamDisable represents the VPP binary API message 'ioam_disable'. -// -// "ioam_disable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u16", -// "id" -// ], -// { -// "crc": "0x6b16a45e" -// } +// IoamDisable represents VPP binary API message 'ioam_disable': +// +// "ioam_disable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u16", +// "id" +// ], +// { +// "crc": "0x6b16a45e" +// } // type IoamDisable struct { ID uint16 @@ -4187,24 +4653,24 @@ func (*IoamDisable) GetMessageType() api.MessageType { return api.RequestMessage } -// IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'. -// -// "ioam_disable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IoamDisableReply represents VPP binary API message 'ioam_disable_reply': +// +// "ioam_disable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IoamDisableReply struct { Retval int32 @@ -4220,40 +4686,40 @@ func (*IoamDisableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPReassemblySet represents the VPP binary API message 'ip_reassembly_set'. -// -// "ip_reassembly_set", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "timeout_ms" -// ], -// [ -// "u32", -// "max_reassemblies" -// ], -// [ -// "u32", -// "expire_walk_interval_ms" -// ], -// [ -// "u8", -// "is_ip6" -// ], -// { -// "crc": "0x1db184de" -// } +// IPReassemblySet represents VPP binary API message 'ip_reassembly_set': +// +// "ip_reassembly_set", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "timeout_ms" +// ], +// [ +// "u32", +// "max_reassemblies" +// ], +// [ +// "u32", +// "expire_walk_interval_ms" +// ], +// [ +// "u8", +// "is_ip6" +// ], +// { +// "crc": "0x1db184de" +// } // type IPReassemblySet struct { TimeoutMs uint32 @@ -4272,24 +4738,24 @@ func (*IPReassemblySet) GetMessageType() api.MessageType { return api.RequestMessage } -// IPReassemblySetReply represents the VPP binary API message 'ip_reassembly_set_reply'. -// -// "ip_reassembly_set_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPReassemblySetReply represents VPP binary API message 'ip_reassembly_set_reply': +// +// "ip_reassembly_set_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPReassemblySetReply struct { Retval int32 @@ -4305,28 +4771,28 @@ func (*IPReassemblySetReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// IPReassemblyGet represents the VPP binary API message 'ip_reassembly_get'. -// -// "ip_reassembly_get", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_ip6" -// ], -// { -// "crc": "0x6fe91190" -// } +// IPReassemblyGet represents VPP binary API message 'ip_reassembly_get': +// +// "ip_reassembly_get", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_ip6" +// ], +// { +// "crc": "0x6fe91190" +// } // type IPReassemblyGet struct { IsIP6 uint8 @@ -4342,44 +4808,40 @@ func (*IPReassemblyGet) GetMessageType() api.MessageType { return api.RequestMessage } -// IPReassemblyGetReply represents the VPP binary API message 'ip_reassembly_get_reply'. -// -// "ip_reassembly_get_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "timeout_ms" -// ], -// [ -// "u32", -// "max_reassemblies" -// ], -// [ -// "u32", -// "expire_walk_interval_ms" -// ], -// [ -// "u8", -// "is_ip6" -// ], -// { -// "crc": "0xd746fc57" -// } +// IPReassemblyGetReply represents VPP binary API message 'ip_reassembly_get_reply': +// +// "ip_reassembly_get_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "timeout_ms" +// ], +// [ +// "u32", +// "max_reassemblies" +// ], +// [ +// "u32", +// "expire_walk_interval_ms" +// ], +// [ +// "u8", +// "is_ip6" +// ], +// { +// "crc": "0x1f90afd1" +// } // type IPReassemblyGetReply struct { Retval int32 @@ -4393,42 +4855,42 @@ func (*IPReassemblyGetReply) GetMessageName() string { return "ip_reassembly_get_reply" } func (*IPReassemblyGetReply) GetCrcString() string { - return "d746fc57" + return "1f90afd1" } func (*IPReassemblyGetReply) GetMessageType() api.MessageType { - return api.RequestMessage + return api.ReplyMessage } -// IPReassemblyEnableDisable represents the VPP binary API message 'ip_reassembly_enable_disable'. -// -// "ip_reassembly_enable_disable", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "enable_ip4" -// ], -// [ -// "u8", -// "enable_ip6" -// ], -// { -// "crc": "0xbb8dc5d0" -// } +// IPReassemblyEnableDisable represents VPP binary API message 'ip_reassembly_enable_disable': +// +// "ip_reassembly_enable_disable", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "enable_ip4" +// ], +// [ +// "u8", +// "enable_ip6" +// ], +// { +// "crc": "0xbb8dc5d0" +// } // type IPReassemblyEnableDisable struct { SwIfIndex uint32 @@ -4446,24 +4908,24 @@ func (*IPReassemblyEnableDisable) GetMessageType() api.MessageType { return api.RequestMessage } -// IPReassemblyEnableDisableReply represents the VPP binary API message 'ip_reassembly_enable_disable_reply'. -// -// "ip_reassembly_enable_disable_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// IPReassemblyEnableDisableReply represents VPP binary API message 'ip_reassembly_enable_disable_reply': +// +// "ip_reassembly_enable_disable_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type IPReassemblyEnableDisableReply struct { Retval int32 @@ -4479,53 +4941,6 @@ func (*IPReassemblyEnableDisableReply) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - DumpIP6Fib(*IP6FibDump) (*IP6FibDetails, error) - DumpIP6Mfib(*IP6MfibDump) (*IP6MfibDetails, error) - DumpIP6ndProxy(*IP6ndProxyDump) (*IP6ndProxyDetails, error) - DumpIPAddress(*IPAddressDump) (*IPAddressDetails, error) - DumpIP(*IPDump) (*IPDetails, error) - DumpIPFib(*IPFibDump) (*IPFibDetails, error) - DumpIPMfib(*IPMfibDump) (*IPMfibDetails, error) - DumpIPNeighbor(*IPNeighborDump) (*IPNeighborDetails, error) - DumpIPUnnumbered(*IPUnnumberedDump) (*IPUnnumberedDetails, error) - DumpMfibSignal(*MfibSignalDump) (*MfibSignalDetails, error) - DumpProxyArp(*ProxyArpDump) (*ProxyArpDetails, error) - DumpProxyArpIntfc(*ProxyArpIntfcDump) (*ProxyArpIntfcDetails, error) - IoamDisable(*IoamDisable) (*IoamDisableReply, error) - IoamEnable(*IoamEnable) (*IoamEnableReply, error) - IP6ndProxyAddDel(*IP6ndProxyAddDel) (*IP6ndProxyAddDelReply, error) - IP6ndSendRouterSolicitation(*IP6ndSendRouterSolicitation) (*IP6ndSendRouterSolicitationReply, error) - IPAddDelRoute(*IPAddDelRoute) (*IPAddDelRouteReply, error) - IPContainerProxyAddDel(*IPContainerProxyAddDel) (*IPContainerProxyAddDelReply, error) - IPMrouteAddDel(*IPMrouteAddDel) (*IPMrouteAddDelReply, error) - IPNeighborAddDel(*IPNeighborAddDel) (*IPNeighborAddDelReply, error) - IPProbeNeighbor(*IPProbeNeighbor) (*IPProbeNeighborReply, error) - IPPuntPolice(*IPPuntPolice) (*IPPuntPoliceReply, error) - IPPuntRedirect(*IPPuntRedirect) (*IPPuntRedirectReply, error) - IPReassemblyEnableDisable(*IPReassemblyEnableDisable) (*IPReassemblyEnableDisableReply, error) - IPReassemblyGet(*IPReassemblyGet) (*IPReassemblyGetReply, error) - IPReassemblySet(*IPReassemblySet) (*IPReassemblySetReply, error) - IPScanNeighborEnableDisable(*IPScanNeighborEnableDisable) (*IPScanNeighborEnableDisableReply, error) - IPSourceAndPortRangeCheckAddDel(*IPSourceAndPortRangeCheckAddDel) (*IPSourceAndPortRangeCheckAddDelReply, error) - IPSourceAndPortRangeCheckInterfaceAddDel(*IPSourceAndPortRangeCheckInterfaceAddDel) (*IPSourceAndPortRangeCheckInterfaceAddDelReply, error) - IPTableAddDel(*IPTableAddDel) (*IPTableAddDelReply, error) - ProxyArpAddDel(*ProxyArpAddDel) (*ProxyArpAddDelReply, error) - ProxyArpIntfcEnableDisable(*ProxyArpIntfcEnableDisable) (*ProxyArpIntfcEnableDisableReply, error) - ResetFib(*ResetFib) (*ResetFibReply, error) - SetArpNeighborLimit(*SetArpNeighborLimit) (*SetArpNeighborLimitReply, error) - SetIPFlowHash(*SetIPFlowHash) (*SetIPFlowHashReply, error) - SwInterfaceIP6EnableDisable(*SwInterfaceIP6EnableDisable) (*SwInterfaceIP6EnableDisableReply, error) - SwInterfaceIP6SetLinkLocalAddress(*SwInterfaceIP6SetLinkLocalAddress) (*SwInterfaceIP6SetLinkLocalAddressReply, error) - SwInterfaceIP6ndRaConfig(*SwInterfaceIP6ndRaConfig) (*SwInterfaceIP6ndRaConfigReply, error) - SwInterfaceIP6ndRaPrefix(*SwInterfaceIP6ndRaPrefix) (*SwInterfaceIP6ndRaPrefixReply, error) - WantIP4ArpEvents(*WantIP4ArpEvents) (*WantIP4ArpEventsReply, error) - WantIP6NdEvents(*WantIP6NdEvents) (*WantIP6NdEventsReply, error) - WantIP6RaEvents(*WantIP6RaEvents) (*WantIP6RaEventsReply, error) -} - func init() { api.RegisterMessage((*IPTableAddDel)(nil), "ip.IPTableAddDel") api.RegisterMessage((*IPTableAddDelReply)(nil), "ip.IPTableAddDelReply") @@ -4551,8 +4966,6 @@ func init() { api.RegisterMessage((*IP6ndSendRouterSolicitationReply)(nil), "ip.IP6ndSendRouterSolicitationReply") api.RegisterMessage((*SwInterfaceIP6EnableDisable)(nil), "ip.SwInterfaceIP6EnableDisable") api.RegisterMessage((*SwInterfaceIP6EnableDisableReply)(nil), "ip.SwInterfaceIP6EnableDisableReply") - api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddress)(nil), "ip.SwInterfaceIP6SetLinkLocalAddress") - api.RegisterMessage((*SwInterfaceIP6SetLinkLocalAddressReply)(nil), "ip.SwInterfaceIP6SetLinkLocalAddressReply") api.RegisterMessage((*IPAddDelRoute)(nil), "ip.IPAddDelRoute") api.RegisterMessage((*IPAddDelRouteReply)(nil), "ip.IPAddDelRouteReply") api.RegisterMessage((*IPMrouteAddDel)(nil), "ip.IPMrouteAddDel") @@ -4573,12 +4986,18 @@ func init() { api.RegisterMessage((*IPPuntPoliceReply)(nil), "ip.IPPuntPoliceReply") api.RegisterMessage((*IPPuntRedirect)(nil), "ip.IPPuntRedirect") api.RegisterMessage((*IPPuntRedirectReply)(nil), "ip.IPPuntRedirectReply") + api.RegisterMessage((*IPPuntRedirectDump)(nil), "ip.IPPuntRedirectDump") + api.RegisterMessage((*IPPuntRedirectDetails)(nil), "ip.IPPuntRedirectDetails") api.RegisterMessage((*IPContainerProxyAddDel)(nil), "ip.IPContainerProxyAddDel") api.RegisterMessage((*IPContainerProxyAddDelReply)(nil), "ip.IPContainerProxyAddDelReply") + api.RegisterMessage((*IPContainerProxyDump)(nil), "ip.IPContainerProxyDump") + api.RegisterMessage((*IPContainerProxyDetails)(nil), "ip.IPContainerProxyDetails") api.RegisterMessage((*IPSourceAndPortRangeCheckAddDel)(nil), "ip.IPSourceAndPortRangeCheckAddDel") api.RegisterMessage((*IPSourceAndPortRangeCheckAddDelReply)(nil), "ip.IPSourceAndPortRangeCheckAddDelReply") api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDel)(nil), "ip.IPSourceAndPortRangeCheckInterfaceAddDel") api.RegisterMessage((*IPSourceAndPortRangeCheckInterfaceAddDelReply)(nil), "ip.IPSourceAndPortRangeCheckInterfaceAddDelReply") + api.RegisterMessage((*IPSourceCheckInterfaceAddDel)(nil), "ip.IPSourceCheckInterfaceAddDel") + api.RegisterMessage((*IPSourceCheckInterfaceAddDelReply)(nil), "ip.IPSourceCheckInterfaceAddDelReply") api.RegisterMessage((*IPScanNeighborEnableDisable)(nil), "ip.IPScanNeighborEnableDisable") api.RegisterMessage((*IPScanNeighborEnableDisableReply)(nil), "ip.IPScanNeighborEnableDisableReply") api.RegisterMessage((*IPProbeNeighbor)(nil), "ip.IPProbeNeighbor") diff --git a/examples/bin_api/map.api.json b/examples/bin_api/map.api.json new file mode 100644 index 0000000..cb98202 --- /dev/null +++ b/examples/bin_api/map.api.json @@ -0,0 +1,940 @@ +{ + "messages": [ + [ + "map_add_domain", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip6_prefix_t", + "ip6_prefix" + ], + [ + "vl_api_ip4_prefix_t", + "ip4_prefix" + ], + [ + "vl_api_ip6_prefix_t", + "ip6_src" + ], + [ + "u8", + "ea_bits_len" + ], + [ + "u8", + "psid_offset" + ], + [ + "u8", + "psid_length" + ], + [ + "bool", + "is_translation" + ], + [ + "bool", + "is_rfc6052" + ], + [ + "u16", + "mtu" + ], + { + "crc": "0x7a64714e" + } + ], + [ + "map_add_domain_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "u32", + "index" + ], + [ + "i32", + "retval" + ], + { + "crc": "0x3e6d4e2c" + } + ], + [ + "map_del_domain", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "index" + ], + { + "crc": "0x8ac76db6" + } + ], + [ + "map_del_domain_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_add_del_rule", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "index" + ], + [ + "bool", + "is_add" + ], + [ + "vl_api_ip6_address_t", + "ip6_dst" + ], + [ + "u16", + "psid" + ], + { + "crc": "0xe6132040" + } + ], + [ + "map_add_del_rule_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_domain_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "map_domain_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "u32", + "domain_index" + ], + [ + "vl_api_ip6_prefix_t", + "ip6_prefix" + ], + [ + "vl_api_ip4_prefix_t", + "ip4_prefix" + ], + [ + "vl_api_ip6_prefix_t", + "ip6_src" + ], + [ + "u8", + "ea_bits_len" + ], + [ + "u8", + "psid_offset" + ], + [ + "u8", + "psid_length" + ], + [ + "u8", + "flags" + ], + [ + "u16", + "mtu" + ], + [ + "bool", + "is_translation" + ], + { + "crc": "0x7a986fe6" + } + ], + [ + "map_rule_dump", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "domain_index" + ], + { + "crc": "0xe43e6ff6" + } + ], + [ + "map_rule_details", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip6_address_t", + "ip6_dst" + ], + [ + "u16", + "psid" + ], + { + "crc": "0x4f932665" + } + ], + [ + "map_summary_stats", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "map_summary_stats_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + [ + "u64", + "total_bindings" + ], + [ + "u64", + "total_pkts", + 2 + ], + [ + "u64", + "total_bytes", + 2 + ], + [ + "u64", + "total_ip4_fragments" + ], + [ + "u64", + "total_security_check", + 2 + ], + { + "crc": "0x0e4ace0e" + } + ], + [ + "map_param_set_fragmentation", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "inner" + ], + [ + "bool", + "ignore_df" + ], + { + "crc": "0x9ff54d90" + } + ], + [ + "map_param_set_fragmentation_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_set_icmp", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "vl_api_ip4_address_t", + "ip4_err_relay_src" + ], + { + "crc": "0x4c0a4fd2" + } + ], + [ + "map_param_set_icmp_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_set_icmp6", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "enable_unreachable" + ], + { + "crc": "0x5d01f8c1" + } + ], + [ + "map_param_set_icmp6_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_add_del_pre_resolve", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "is_add" + ], + [ + "vl_api_ip4_address_t", + "ip4_nh_address" + ], + [ + "vl_api_ip6_address_t", + "ip6_nh_address" + ], + { + "crc": "0xea9a9a4a" + } + ], + [ + "map_param_add_del_pre_resolve_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_set_reassembly", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "is_ip6" + ], + [ + "u16", + "lifetime_ms" + ], + [ + "u16", + "pool_size" + ], + [ + "u32", + "buffers" + ], + [ + "f64", + "ht_ratio" + ], + { + "crc": "0x54172b10" + } + ], + [ + "map_param_set_reassembly_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_set_security_check", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "enable" + ], + [ + "bool", + "fragments" + ], + { + "crc": "0x6abe9836" + } + ], + [ + "map_param_set_security_check_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_set_traffic_class", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "bool", + "copy" + ], + [ + "u8", + "class" + ], + { + "crc": "0x007ee563" + } + ], + [ + "map_param_set_traffic_class_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "map_param_get", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "map_param_get_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + [ + "u8", + "frag_inner" + ], + [ + "u8", + "frag_ignore_df" + ], + [ + "vl_api_ip4_address_t", + "icmp_ip4_err_relay_src" + ], + [ + "bool", + "icmp6_enable_unreachable" + ], + [ + "vl_api_ip4_address_t", + "ip4_nh_address" + ], + [ + "vl_api_ip6_address_t", + "ip6_nh_address" + ], + [ + "u16", + "ip4_lifetime_ms" + ], + [ + "u16", + "ip4_pool_size" + ], + [ + "u32", + "ip4_buffers" + ], + [ + "f64", + "ip4_ht_ratio" + ], + [ + "u16", + "ip6_lifetime_ms" + ], + [ + "u16", + "ip6_pool_size" + ], + [ + "u32", + "ip6_buffers" + ], + [ + "f64", + "ip6_ht_ratio" + ], + [ + "bool", + "sec_check_enable" + ], + [ + "bool", + "sec_check_fragments" + ], + [ + "bool", + "tc_copy" + ], + [ + "u8", + "tc_class" + ], + { + "crc": "0xb40e9226" + } + ] + ], + "vl_api_version": "0x14b499d0", + "unions": [ + [ + "address_union", + [ + "vl_api_ip4_address_t", + "ip4" + ], + [ + "vl_api_ip6_address_t", + "ip6" + ], + { + "crc": "0xd68a2fb4" + } + ] + ], + "services": { + "map_param_set_fragmentation": { + "reply": "map_param_set_fragmentation_reply" + }, + "map_param_add_del_pre_resolve": { + "reply": "map_param_add_del_pre_resolve_reply" + }, + "map_rule_dump": { + "reply": "map_rule_details", + "stream": true + }, + "map_param_set_icmp6": { + "reply": "map_param_set_icmp6_reply" + }, + "map_add_del_rule": { + "reply": "map_add_del_rule_reply" + }, + "map_domain_dump": { + "reply": "map_domain_details", + "stream": true + }, + "map_param_get": { + "reply": "map_param_get_reply" + }, + "map_param_set_icmp": { + "reply": "map_param_set_icmp_reply" + }, + "map_add_domain": { + "reply": "map_add_domain_reply" + }, + "map_summary_stats": { + "reply": "map_summary_stats_reply" + }, + "map_param_set_traffic_class": { + "reply": "map_param_set_traffic_class_reply" + }, + "map_del_domain": { + "reply": "map_del_domain_reply" + }, + "map_param_set_reassembly": { + "reply": "map_param_set_reassembly_reply" + }, + "map_param_set_security_check": { + "reply": "map_param_set_security_check_reply" + } + }, + "enums": [ + [ + "address_family", + [ + "ADDRESS_IP4", + 0 + ], + [ + "ADDRESS_IP6", + 1 + ], + { + "enumtype": "u32" + } + ] + ], + "types": [ + [ + "address", + [ + "vl_api_address_family_t", + "af" + ], + [ + "vl_api_address_union_t", + "un" + ], + { + "crc": "0x09f11671" + } + ], + [ + "prefix", + [ + "vl_api_address_t", + "address" + ], + [ + "u8", + "address_length" + ], + { + "crc": "0x0403aebc" + } + ], + [ + "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" + ], + { + "crc": "0x1c4cba05" + } + ], + [ + "ip6_prefix", + [ + "vl_api_ip6_address_t", + "prefix" + ], + [ + "u8", + "len" + ], + { + "crc": "0x779fd64f" + } + ], + [ + "ip4_prefix", + [ + "vl_api_ip4_address_t", + "prefix" + ], + [ + "u8", + "len" + ], + { + "crc": "0xea8dc11d" + } + ] + ], + "aliases": { + "ip6_address": { + "length": 16, + "type": "u8" + }, + "ip4_address": { + "length": 4, + "type": "u8" + } + } +} diff --git a/examples/bin_api/maps/maps.ba.go b/examples/bin_api/maps/maps.ba.go new file mode 100644 index 0000000..8620c98 --- /dev/null +++ b/examples/bin_api/maps/maps.ba.go @@ -0,0 +1,1604 @@ +// Code generated by GoVPP binapi-generator. DO NOT EDIT. +// source: map.api.json + +/* + Package maps is a generated from VPP binary API module 'map'. + + It contains following objects: + 28 messages + 5 types + 2 aliases + 1 enum + 1 union + 14 services + +*/ +package maps + +import "git.fd.io/govpp.git/api" +import "github.com/lunixbochs/struc" +import "bytes" + +// Reference imports to suppress errors if they are not otherwise used. +var _ = api.RegisterMessage +var _ = struc.Pack +var _ = bytes.NewBuffer + +// Services represents VPP binary API services: +// +// "services": { +// "map_param_set_fragmentation": { +// "reply": "map_param_set_fragmentation_reply" +// }, +// "map_param_add_del_pre_resolve": { +// "reply": "map_param_add_del_pre_resolve_reply" +// }, +// "map_rule_dump": { +// "reply": "map_rule_details", +// "stream": true +// }, +// "map_param_set_icmp6": { +// "reply": "map_param_set_icmp6_reply" +// }, +// "map_add_del_rule": { +// "reply": "map_add_del_rule_reply" +// }, +// "map_domain_dump": { +// "reply": "map_domain_details", +// "stream": true +// }, +// "map_param_get": { +// "reply": "map_param_get_reply" +// }, +// "map_param_set_icmp": { +// "reply": "map_param_set_icmp_reply" +// }, +// "map_add_domain": { +// "reply": "map_add_domain_reply" +// }, +// "map_summary_stats": { +// "reply": "map_summary_stats_reply" +// }, +// "map_param_set_traffic_class": { +// "reply": "map_param_set_traffic_class_reply" +// }, +// "map_del_domain": { +// "reply": "map_del_domain_reply" +// }, +// "map_param_set_reassembly": { +// "reply": "map_param_set_reassembly_reply" +// }, +// "map_param_set_security_check": { +// "reply": "map_param_set_security_check_reply" +// } +// }, +// +type Services interface { + DumpMapDomain(*MapDomainDump) ([]*MapDomainDetails, error) + DumpMapRule(*MapRuleDump) ([]*MapRuleDetails, error) + MapAddDelRule(*MapAddDelRule) (*MapAddDelRuleReply, error) + MapAddDomain(*MapAddDomain) (*MapAddDomainReply, error) + MapDelDomain(*MapDelDomain) (*MapDelDomainReply, error) + MapParamAddDelPreResolve(*MapParamAddDelPreResolve) (*MapParamAddDelPreResolveReply, error) + MapParamGet(*MapParamGet) (*MapParamGetReply, error) + MapParamSetFragmentation(*MapParamSetFragmentation) (*MapParamSetFragmentationReply, error) + MapParamSetICMP(*MapParamSetICMP) (*MapParamSetICMPReply, error) + MapParamSetICMP6(*MapParamSetICMP6) (*MapParamSetICMP6Reply, error) + MapParamSetReassembly(*MapParamSetReassembly) (*MapParamSetReassemblyReply, error) + MapParamSetSecurityCheck(*MapParamSetSecurityCheck) (*MapParamSetSecurityCheckReply, error) + MapParamSetTrafficClass(*MapParamSetTrafficClass) (*MapParamSetTrafficClassReply, error) + MapSummaryStats(*MapSummaryStats) (*MapSummaryStatsReply, error) +} + +/* Enums */ + +// AddressFamily represents VPP binary API enum 'address_family': +// +// "address_family", +// [ +// "ADDRESS_IP4", +// 0 +// ], +// [ +// "ADDRESS_IP6", +// 1 +// ], +// { +// "enumtype": "u32" +// } +// +type AddressFamily uint32 + +const ( + ADDRESS_IP4 AddressFamily = 0 + ADDRESS_IP6 AddressFamily = 1 +) + +/* Aliases */ + +// IP4Address represents VPP binary API alias 'ip4_address': +// +// "ip4_address": { +// "length": 4, +// "type": "u8" +// } +// +type IP4Address [4]uint8 + +// IP6Address represents VPP binary API alias 'ip6_address': +// +// "ip6_address": { +// "length": 16, +// "type": "u8" +// }, +// +type IP6Address [16]uint8 + +/* Types */ + +// Address represents VPP binary API type 'address': +// +// "address", +// [ +// "vl_api_address_family_t", +// "af" +// ], +// [ +// "vl_api_address_union_t", +// "un" +// ], +// { +// "crc": "0x09f11671" +// } +// +type Address struct { + Af AddressFamily + Un AddressUnion +} + +func (*Address) GetTypeName() string { + return "address" +} +func (*Address) GetCrcString() string { + return "09f11671" +} + +// Prefix represents VPP binary API type 'prefix': +// +// "prefix", +// [ +// "vl_api_address_t", +// "address" +// ], +// [ +// "u8", +// "address_length" +// ], +// { +// "crc": "0x0403aebc" +// } +// +type Prefix struct { + Address Address + AddressLength uint8 +} + +func (*Prefix) GetTypeName() string { + return "prefix" +} +func (*Prefix) GetCrcString() string { + return "0403aebc" +} + +// Mprefix represents VPP binary API type 'mprefix': +// +// "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" +// ], +// { +// "crc": "0x1c4cba05" +// } +// +type Mprefix struct { + Af AddressFamily + GrpAddressLength uint16 + GrpAddress AddressUnion + SrcAddress AddressUnion +} + +func (*Mprefix) GetTypeName() string { + return "mprefix" +} +func (*Mprefix) GetCrcString() string { + return "1c4cba05" +} + +// IP6Prefix represents VPP binary API type 'ip6_prefix': +// +// "ip6_prefix", +// [ +// "vl_api_ip6_address_t", +// "prefix" +// ], +// [ +// "u8", +// "len" +// ], +// { +// "crc": "0x779fd64f" +// } +// +type IP6Prefix struct { + Prefix IP6Address + Len uint8 +} + +func (*IP6Prefix) GetTypeName() string { + return "ip6_prefix" +} +func (*IP6Prefix) GetCrcString() string { + return "779fd64f" +} + +// IP4Prefix represents VPP binary API type 'ip4_prefix': +// +// "ip4_prefix", +// [ +// "vl_api_ip4_address_t", +// "prefix" +// ], +// [ +// "u8", +// "len" +// ], +// { +// "crc": "0xea8dc11d" +// } +// +type IP4Prefix struct { + Prefix IP4Address + Len uint8 +} + +func (*IP4Prefix) GetTypeName() string { + return "ip4_prefix" +} +func (*IP4Prefix) GetCrcString() string { + return "ea8dc11d" +} + +/* Unions */ + +// AddressUnion represents VPP binary API union 'address_union': +// +// "address_union", +// [ +// "vl_api_ip4_address_t", +// "ip4" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6" +// ], +// { +// "crc": "0xd68a2fb4" +// } +// +type AddressUnion struct { + Union_data [16]byte +} + +func (*AddressUnion) GetTypeName() string { + return "address_union" +} +func (*AddressUnion) GetCrcString() string { + return "d68a2fb4" +} + +func (u *AddressUnion) SetIP4(a IP4Address) { + var b = new(bytes.Buffer) + if err := struc.Pack(b, &a); err != nil { + return + } + copy(u.Union_data[:], b.Bytes()) +} +func (u *AddressUnion) GetIP4() (a IP4Address) { + var b = bytes.NewReader(u.Union_data[:]) + struc.Unpack(b, &a) + return +} + +func (u *AddressUnion) SetIP6(a IP6Address) { + var b = new(bytes.Buffer) + if err := struc.Pack(b, &a); err != nil { + return + } + copy(u.Union_data[:], b.Bytes()) +} +func (u *AddressUnion) GetIP6() (a IP6Address) { + var b = bytes.NewReader(u.Union_data[:]) + struc.Unpack(b, &a) + return +} + +/* Messages */ + +// MapAddDomain represents VPP binary API message 'map_add_domain': +// +// "map_add_domain", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_ip6_prefix_t", +// "ip6_prefix" +// ], +// [ +// "vl_api_ip4_prefix_t", +// "ip4_prefix" +// ], +// [ +// "vl_api_ip6_prefix_t", +// "ip6_src" +// ], +// [ +// "u8", +// "ea_bits_len" +// ], +// [ +// "u8", +// "psid_offset" +// ], +// [ +// "u8", +// "psid_length" +// ], +// [ +// "bool", +// "is_translation" +// ], +// [ +// "bool", +// "is_rfc6052" +// ], +// [ +// "u16", +// "mtu" +// ], +// { +// "crc": "0x7a64714e" +// } +// +type MapAddDomain struct { + IP6Prefix IP6Prefix + IP4Prefix IP4Prefix + IP6Src IP6Prefix + EaBitsLen uint8 + PsidOffset uint8 + PsidLength uint8 + IsTranslation bool + IsRfc6052 bool + Mtu uint16 +} + +func (*MapAddDomain) GetMessageName() string { + return "map_add_domain" +} +func (*MapAddDomain) GetCrcString() string { + return "7a64714e" +} +func (*MapAddDomain) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapAddDomainReply represents VPP binary API message 'map_add_domain_reply': +// +// "map_add_domain_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "index" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0x3e6d4e2c" +// } +// +type MapAddDomainReply struct { + Index uint32 + Retval int32 +} + +func (*MapAddDomainReply) GetMessageName() string { + return "map_add_domain_reply" +} +func (*MapAddDomainReply) GetCrcString() string { + return "3e6d4e2c" +} +func (*MapAddDomainReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapDelDomain represents VPP binary API message 'map_del_domain': +// +// "map_del_domain", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "index" +// ], +// { +// "crc": "0x8ac76db6" +// } +// +type MapDelDomain struct { + Index uint32 +} + +func (*MapDelDomain) GetMessageName() string { + return "map_del_domain" +} +func (*MapDelDomain) GetCrcString() string { + return "8ac76db6" +} +func (*MapDelDomain) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapDelDomainReply represents VPP binary API message 'map_del_domain_reply': +// +// "map_del_domain_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapDelDomainReply struct { + Retval int32 +} + +func (*MapDelDomainReply) GetMessageName() string { + return "map_del_domain_reply" +} +func (*MapDelDomainReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapDelDomainReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapAddDelRule represents VPP binary API message 'map_add_del_rule': +// +// "map_add_del_rule", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "index" +// ], +// [ +// "bool", +// "is_add" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6_dst" +// ], +// [ +// "u16", +// "psid" +// ], +// { +// "crc": "0xe6132040" +// } +// +type MapAddDelRule struct { + Index uint32 + IsAdd bool + IP6Dst IP6Address + Psid uint16 +} + +func (*MapAddDelRule) GetMessageName() string { + return "map_add_del_rule" +} +func (*MapAddDelRule) GetCrcString() string { + return "e6132040" +} +func (*MapAddDelRule) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapAddDelRuleReply represents VPP binary API message 'map_add_del_rule_reply': +// +// "map_add_del_rule_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapAddDelRuleReply struct { + Retval int32 +} + +func (*MapAddDelRuleReply) GetMessageName() string { + return "map_add_del_rule_reply" +} +func (*MapAddDelRuleReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapAddDelRuleReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapDomainDump represents VPP binary API message 'map_domain_dump': +// +// "map_domain_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type MapDomainDump struct{} + +func (*MapDomainDump) GetMessageName() string { + return "map_domain_dump" +} +func (*MapDomainDump) GetCrcString() string { + return "51077d14" +} +func (*MapDomainDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapDomainDetails represents VPP binary API message 'map_domain_details': +// +// "map_domain_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "domain_index" +// ], +// [ +// "vl_api_ip6_prefix_t", +// "ip6_prefix" +// ], +// [ +// "vl_api_ip4_prefix_t", +// "ip4_prefix" +// ], +// [ +// "vl_api_ip6_prefix_t", +// "ip6_src" +// ], +// [ +// "u8", +// "ea_bits_len" +// ], +// [ +// "u8", +// "psid_offset" +// ], +// [ +// "u8", +// "psid_length" +// ], +// [ +// "u8", +// "flags" +// ], +// [ +// "u16", +// "mtu" +// ], +// [ +// "bool", +// "is_translation" +// ], +// { +// "crc": "0x7a986fe6" +// } +// +type MapDomainDetails struct { + DomainIndex uint32 + IP6Prefix IP6Prefix + IP4Prefix IP4Prefix + IP6Src IP6Prefix + EaBitsLen uint8 + PsidOffset uint8 + PsidLength uint8 + Flags uint8 + Mtu uint16 + IsTranslation bool +} + +func (*MapDomainDetails) GetMessageName() string { + return "map_domain_details" +} +func (*MapDomainDetails) GetCrcString() string { + return "7a986fe6" +} +func (*MapDomainDetails) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapRuleDump represents VPP binary API message 'map_rule_dump': +// +// "map_rule_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "domain_index" +// ], +// { +// "crc": "0xe43e6ff6" +// } +// +type MapRuleDump struct { + DomainIndex uint32 +} + +func (*MapRuleDump) GetMessageName() string { + return "map_rule_dump" +} +func (*MapRuleDump) GetCrcString() string { + return "e43e6ff6" +} +func (*MapRuleDump) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapRuleDetails represents VPP binary API message 'map_rule_details': +// +// "map_rule_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6_dst" +// ], +// [ +// "u16", +// "psid" +// ], +// { +// "crc": "0x4f932665" +// } +// +type MapRuleDetails struct { + IP6Dst IP6Address + Psid uint16 +} + +func (*MapRuleDetails) GetMessageName() string { + return "map_rule_details" +} +func (*MapRuleDetails) GetCrcString() string { + return "4f932665" +} +func (*MapRuleDetails) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapSummaryStats represents VPP binary API message 'map_summary_stats': +// +// "map_summary_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type MapSummaryStats struct{} + +func (*MapSummaryStats) GetMessageName() string { + return "map_summary_stats" +} +func (*MapSummaryStats) GetCrcString() string { + return "51077d14" +} +func (*MapSummaryStats) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapSummaryStatsReply represents VPP binary API message 'map_summary_stats_reply': +// +// "map_summary_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u64", +// "total_bindings" +// ], +// [ +// "u64", +// "total_pkts", +// 2 +// ], +// [ +// "u64", +// "total_bytes", +// 2 +// ], +// [ +// "u64", +// "total_ip4_fragments" +// ], +// [ +// "u64", +// "total_security_check", +// 2 +// ], +// { +// "crc": "0x0e4ace0e" +// } +// +type MapSummaryStatsReply struct { + Retval int32 + TotalBindings uint64 + TotalPkts []uint64 `struc:"[2]uint64"` + TotalBytes []uint64 `struc:"[2]uint64"` + TotalIP4Fragments uint64 + TotalSecurityCheck []uint64 `struc:"[2]uint64"` +} + +func (*MapSummaryStatsReply) GetMessageName() string { + return "map_summary_stats_reply" +} +func (*MapSummaryStatsReply) GetCrcString() string { + return "0e4ace0e" +} +func (*MapSummaryStatsReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetFragmentation represents VPP binary API message 'map_param_set_fragmentation': +// +// "map_param_set_fragmentation", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "inner" +// ], +// [ +// "bool", +// "ignore_df" +// ], +// { +// "crc": "0x9ff54d90" +// } +// +type MapParamSetFragmentation struct { + Inner bool + IgnoreDf bool +} + +func (*MapParamSetFragmentation) GetMessageName() string { + return "map_param_set_fragmentation" +} +func (*MapParamSetFragmentation) GetCrcString() string { + return "9ff54d90" +} +func (*MapParamSetFragmentation) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetFragmentationReply represents VPP binary API message 'map_param_set_fragmentation_reply': +// +// "map_param_set_fragmentation_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetFragmentationReply struct { + Retval int32 +} + +func (*MapParamSetFragmentationReply) GetMessageName() string { + return "map_param_set_fragmentation_reply" +} +func (*MapParamSetFragmentationReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetFragmentationReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetICMP represents VPP binary API message 'map_param_set_icmp': +// +// "map_param_set_icmp", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "vl_api_ip4_address_t", +// "ip4_err_relay_src" +// ], +// { +// "crc": "0x4c0a4fd2" +// } +// +type MapParamSetICMP struct { + IP4ErrRelaySrc IP4Address +} + +func (*MapParamSetICMP) GetMessageName() string { + return "map_param_set_icmp" +} +func (*MapParamSetICMP) GetCrcString() string { + return "4c0a4fd2" +} +func (*MapParamSetICMP) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetICMPReply represents VPP binary API message 'map_param_set_icmp_reply': +// +// "map_param_set_icmp_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetICMPReply struct { + Retval int32 +} + +func (*MapParamSetICMPReply) GetMessageName() string { + return "map_param_set_icmp_reply" +} +func (*MapParamSetICMPReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetICMPReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetICMP6 represents VPP binary API message 'map_param_set_icmp6': +// +// "map_param_set_icmp6", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "enable_unreachable" +// ], +// { +// "crc": "0x5d01f8c1" +// } +// +type MapParamSetICMP6 struct { + EnableUnreachable bool +} + +func (*MapParamSetICMP6) GetMessageName() string { + return "map_param_set_icmp6" +} +func (*MapParamSetICMP6) GetCrcString() string { + return "5d01f8c1" +} +func (*MapParamSetICMP6) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetICMP6Reply represents VPP binary API message 'map_param_set_icmp6_reply': +// +// "map_param_set_icmp6_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetICMP6Reply struct { + Retval int32 +} + +func (*MapParamSetICMP6Reply) GetMessageName() string { + return "map_param_set_icmp6_reply" +} +func (*MapParamSetICMP6Reply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetICMP6Reply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamAddDelPreResolve represents VPP binary API message 'map_param_add_del_pre_resolve': +// +// "map_param_add_del_pre_resolve", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "is_add" +// ], +// [ +// "vl_api_ip4_address_t", +// "ip4_nh_address" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6_nh_address" +// ], +// { +// "crc": "0xea9a9a4a" +// } +// +type MapParamAddDelPreResolve struct { + IsAdd bool + IP4NhAddress IP4Address + IP6NhAddress IP6Address +} + +func (*MapParamAddDelPreResolve) GetMessageName() string { + return "map_param_add_del_pre_resolve" +} +func (*MapParamAddDelPreResolve) GetCrcString() string { + return "ea9a9a4a" +} +func (*MapParamAddDelPreResolve) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamAddDelPreResolveReply represents VPP binary API message 'map_param_add_del_pre_resolve_reply': +// +// "map_param_add_del_pre_resolve_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamAddDelPreResolveReply struct { + Retval int32 +} + +func (*MapParamAddDelPreResolveReply) GetMessageName() string { + return "map_param_add_del_pre_resolve_reply" +} +func (*MapParamAddDelPreResolveReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamAddDelPreResolveReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetReassembly represents VPP binary API message 'map_param_set_reassembly': +// +// "map_param_set_reassembly", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "is_ip6" +// ], +// [ +// "u16", +// "lifetime_ms" +// ], +// [ +// "u16", +// "pool_size" +// ], +// [ +// "u32", +// "buffers" +// ], +// [ +// "f64", +// "ht_ratio" +// ], +// { +// "crc": "0x54172b10" +// } +// +type MapParamSetReassembly struct { + IsIP6 bool + LifetimeMs uint16 + PoolSize uint16 + Buffers uint32 + HtRatio float64 +} + +func (*MapParamSetReassembly) GetMessageName() string { + return "map_param_set_reassembly" +} +func (*MapParamSetReassembly) GetCrcString() string { + return "54172b10" +} +func (*MapParamSetReassembly) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetReassemblyReply represents VPP binary API message 'map_param_set_reassembly_reply': +// +// "map_param_set_reassembly_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetReassemblyReply struct { + Retval int32 +} + +func (*MapParamSetReassemblyReply) GetMessageName() string { + return "map_param_set_reassembly_reply" +} +func (*MapParamSetReassemblyReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetReassemblyReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetSecurityCheck represents VPP binary API message 'map_param_set_security_check': +// +// "map_param_set_security_check", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "enable" +// ], +// [ +// "bool", +// "fragments" +// ], +// { +// "crc": "0x6abe9836" +// } +// +type MapParamSetSecurityCheck struct { + Enable bool + Fragments bool +} + +func (*MapParamSetSecurityCheck) GetMessageName() string { + return "map_param_set_security_check" +} +func (*MapParamSetSecurityCheck) GetCrcString() string { + return "6abe9836" +} +func (*MapParamSetSecurityCheck) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetSecurityCheckReply represents VPP binary API message 'map_param_set_security_check_reply': +// +// "map_param_set_security_check_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetSecurityCheckReply struct { + Retval int32 +} + +func (*MapParamSetSecurityCheckReply) GetMessageName() string { + return "map_param_set_security_check_reply" +} +func (*MapParamSetSecurityCheckReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetSecurityCheckReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamSetTrafficClass represents VPP binary API message 'map_param_set_traffic_class': +// +// "map_param_set_traffic_class", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "bool", +// "copy" +// ], +// [ +// "u8", +// "class" +// ], +// { +// "crc": "0x007ee563" +// } +// +type MapParamSetTrafficClass struct { + Copy bool + Class uint8 +} + +func (*MapParamSetTrafficClass) GetMessageName() string { + return "map_param_set_traffic_class" +} +func (*MapParamSetTrafficClass) GetCrcString() string { + return "007ee563" +} +func (*MapParamSetTrafficClass) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamSetTrafficClassReply represents VPP binary API message 'map_param_set_traffic_class_reply': +// +// "map_param_set_traffic_class_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type MapParamSetTrafficClassReply struct { + Retval int32 +} + +func (*MapParamSetTrafficClassReply) GetMessageName() string { + return "map_param_set_traffic_class_reply" +} +func (*MapParamSetTrafficClassReply) GetCrcString() string { + return "e8d4e804" +} +func (*MapParamSetTrafficClassReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// MapParamGet represents VPP binary API message 'map_param_get': +// +// "map_param_get", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type MapParamGet struct{} + +func (*MapParamGet) GetMessageName() string { + return "map_param_get" +} +func (*MapParamGet) GetCrcString() string { + return "51077d14" +} +func (*MapParamGet) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// MapParamGetReply represents VPP binary API message 'map_param_get_reply': +// +// "map_param_get_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u8", +// "frag_inner" +// ], +// [ +// "u8", +// "frag_ignore_df" +// ], +// [ +// "vl_api_ip4_address_t", +// "icmp_ip4_err_relay_src" +// ], +// [ +// "bool", +// "icmp6_enable_unreachable" +// ], +// [ +// "vl_api_ip4_address_t", +// "ip4_nh_address" +// ], +// [ +// "vl_api_ip6_address_t", +// "ip6_nh_address" +// ], +// [ +// "u16", +// "ip4_lifetime_ms" +// ], +// [ +// "u16", +// "ip4_pool_size" +// ], +// [ +// "u32", +// "ip4_buffers" +// ], +// [ +// "f64", +// "ip4_ht_ratio" +// ], +// [ +// "u16", +// "ip6_lifetime_ms" +// ], +// [ +// "u16", +// "ip6_pool_size" +// ], +// [ +// "u32", +// "ip6_buffers" +// ], +// [ +// "f64", +// "ip6_ht_ratio" +// ], +// [ +// "bool", +// "sec_check_enable" +// ], +// [ +// "bool", +// "sec_check_fragments" +// ], +// [ +// "bool", +// "tc_copy" +// ], +// [ +// "u8", +// "tc_class" +// ], +// { +// "crc": "0xb40e9226" +// } +// +type MapParamGetReply struct { + Retval int32 + FragInner uint8 + FragIgnoreDf uint8 + ICMPIP4ErrRelaySrc IP4Address + ICMP6EnableUnreachable bool + IP4NhAddress IP4Address + IP6NhAddress IP6Address + IP4LifetimeMs uint16 + IP4PoolSize uint16 + IP4Buffers uint32 + IP4HtRatio float64 + IP6LifetimeMs uint16 + IP6PoolSize uint16 + IP6Buffers uint32 + IP6HtRatio float64 + SecCheckEnable bool + SecCheckFragments bool + TcCopy bool + TcClass uint8 +} + +func (*MapParamGetReply) GetMessageName() string { + return "map_param_get_reply" +} +func (*MapParamGetReply) GetCrcString() string { + return "b40e9226" +} +func (*MapParamGetReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +func init() { + api.RegisterMessage((*MapAddDomain)(nil), "map.MapAddDomain") + api.RegisterMessage((*MapAddDomainReply)(nil), "map.MapAddDomainReply") + api.RegisterMessage((*MapDelDomain)(nil), "map.MapDelDomain") + api.RegisterMessage((*MapDelDomainReply)(nil), "map.MapDelDomainReply") + api.RegisterMessage((*MapAddDelRule)(nil), "map.MapAddDelRule") + api.RegisterMessage((*MapAddDelRuleReply)(nil), "map.MapAddDelRuleReply") + api.RegisterMessage((*MapDomainDump)(nil), "map.MapDomainDump") + api.RegisterMessage((*MapDomainDetails)(nil), "map.MapDomainDetails") + api.RegisterMessage((*MapRuleDump)(nil), "map.MapRuleDump") + api.RegisterMessage((*MapRuleDetails)(nil), "map.MapRuleDetails") + api.RegisterMessage((*MapSummaryStats)(nil), "map.MapSummaryStats") + api.RegisterMessage((*MapSummaryStatsReply)(nil), "map.MapSummaryStatsReply") + api.RegisterMessage((*MapParamSetFragmentation)(nil), "map.MapParamSetFragmentation") + api.RegisterMessage((*MapParamSetFragmentationReply)(nil), "map.MapParamSetFragmentationReply") + api.RegisterMessage((*MapParamSetICMP)(nil), "map.MapParamSetICMP") + api.RegisterMessage((*MapParamSetICMPReply)(nil), "map.MapParamSetICMPReply") + api.RegisterMessage((*MapParamSetICMP6)(nil), "map.MapParamSetICMP6") + api.RegisterMessage((*MapParamSetICMP6Reply)(nil), "map.MapParamSetICMP6Reply") + api.RegisterMessage((*MapParamAddDelPreResolve)(nil), "map.MapParamAddDelPreResolve") + api.RegisterMessage((*MapParamAddDelPreResolveReply)(nil), "map.MapParamAddDelPreResolveReply") + api.RegisterMessage((*MapParamSetReassembly)(nil), "map.MapParamSetReassembly") + api.RegisterMessage((*MapParamSetReassemblyReply)(nil), "map.MapParamSetReassemblyReply") + api.RegisterMessage((*MapParamSetSecurityCheck)(nil), "map.MapParamSetSecurityCheck") + api.RegisterMessage((*MapParamSetSecurityCheckReply)(nil), "map.MapParamSetSecurityCheckReply") + api.RegisterMessage((*MapParamSetTrafficClass)(nil), "map.MapParamSetTrafficClass") + api.RegisterMessage((*MapParamSetTrafficClassReply)(nil), "map.MapParamSetTrafficClassReply") + api.RegisterMessage((*MapParamGet)(nil), "map.MapParamGet") + api.RegisterMessage((*MapParamGetReply)(nil), "map.MapParamGetReply") +} diff --git a/examples/bin_api/memif.api.json b/examples/bin_api/memif.api.json index b0ff645..4399f1c 100644 --- a/examples/bin_api/memif.api.json +++ b/examples/bin_api/memif.api.json @@ -313,5 +313,6 @@ } }, "enums": [], - "types": [] + "types": [], + "aliases": {} } diff --git a/examples/bin_api/memif/memif.ba.go b/examples/bin_api/memif/memif.ba.go index ce8c9c0..c28d2f5 100644 --- a/examples/bin_api/memif/memif.ba.go +++ b/examples/bin_api/memif/memif.ba.go @@ -20,39 +20,69 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "memif_delete": { +// "reply": "memif_delete_reply" +// }, +// "memif_socket_filename_add_del": { +// "reply": "memif_socket_filename_add_del_reply" +// }, +// "memif_create": { +// "reply": "memif_create_reply" +// }, +// "memif_socket_filename_dump": { +// "reply": "memif_socket_filename_details", +// "stream": true +// }, +// "memif_dump": { +// "reply": "memif_details", +// "stream": true +// } +// }, +// +type Services interface { + DumpMemif(*MemifDump) ([]*MemifDetails, error) + DumpMemifSocketFilename(*MemifSocketFilenameDump) ([]*MemifSocketFilenameDetails, error) + MemifCreate(*MemifCreate) (*MemifCreateReply, error) + MemifDelete(*MemifDelete) (*MemifDeleteReply, error) + MemifSocketFilenameAddDel(*MemifSocketFilenameAddDel) (*MemifSocketFilenameAddDelReply, error) +} + /* Messages */ -// MemifSocketFilenameAddDel represents the VPP binary API message 'memif_socket_filename_add_del'. +// MemifSocketFilenameAddDel represents VPP binary API message 'memif_socket_filename_add_del': // -// "memif_socket_filename_add_del", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "is_add" -// ], -// [ -// "u32", -// "socket_id" -// ], -// [ -// "u8", -// "socket_filename", -// 128 -// ], -// { -// "crc": "0x30e3929d" -// } +// "memif_socket_filename_add_del", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "is_add" +// ], +// [ +// "u32", +// "socket_id" +// ], +// [ +// "u8", +// "socket_filename", +// 128 +// ], +// { +// "crc": "0x30e3929d" +// } // type MemifSocketFilenameAddDel struct { IsAdd uint8 @@ -70,24 +100,24 @@ func (*MemifSocketFilenameAddDel) GetMessageType() api.MessageType { return api.RequestMessage } -// MemifSocketFilenameAddDelReply represents the VPP binary API message 'memif_socket_filename_add_del_reply'. +// MemifSocketFilenameAddDelReply represents VPP binary API message 'memif_socket_filename_add_del_reply': // -// "memif_socket_filename_add_del_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// "memif_socket_filename_add_del_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type MemifSocketFilenameAddDelReply struct { Retval int32 @@ -103,66 +133,66 @@ func (*MemifSocketFilenameAddDelReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MemifCreate represents the VPP binary API message 'memif_create'. +// MemifCreate represents VPP binary API message 'memif_create': // -// "memif_create", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "role" -// ], -// [ -// "u8", -// "mode" -// ], -// [ -// "u8", -// "rx_queues" -// ], -// [ -// "u8", -// "tx_queues" -// ], -// [ -// "u32", -// "id" -// ], -// [ -// "u32", -// "socket_id" -// ], -// [ -// "u8", -// "secret", -// 24 -// ], -// [ -// "u32", -// "ring_size" -// ], -// [ -// "u16", -// "buffer_size" -// ], -// [ -// "u8", -// "hw_addr", -// 6 -// ], -// { -// "crc": "0x6597cdb2" -// } +// "memif_create", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "role" +// ], +// [ +// "u8", +// "mode" +// ], +// [ +// "u8", +// "rx_queues" +// ], +// [ +// "u8", +// "tx_queues" +// ], +// [ +// "u32", +// "id" +// ], +// [ +// "u32", +// "socket_id" +// ], +// [ +// "u8", +// "secret", +// 24 +// ], +// [ +// "u32", +// "ring_size" +// ], +// [ +// "u16", +// "buffer_size" +// ], +// [ +// "u8", +// "hw_addr", +// 6 +// ], +// { +// "crc": "0x6597cdb2" +// } // type MemifCreate struct { Role uint8 @@ -187,28 +217,28 @@ func (*MemifCreate) GetMessageType() api.MessageType { return api.RequestMessage } -// MemifCreateReply represents the VPP binary API message 'memif_create_reply'. +// MemifCreateReply represents VPP binary API message 'memif_create_reply': // -// "memif_create_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// "memif_create_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type MemifCreateReply struct { Retval int32 @@ -225,28 +255,28 @@ func (*MemifCreateReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MemifDelete represents the VPP binary API message 'memif_delete'. +// MemifDelete represents VPP binary API message 'memif_delete': // -// "memif_delete", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// "memif_delete", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type MemifDelete struct { SwIfIndex uint32 @@ -262,24 +292,24 @@ func (*MemifDelete) GetMessageType() api.MessageType { return api.RequestMessage } -// MemifDeleteReply represents the VPP binary API message 'memif_delete_reply'. +// MemifDeleteReply represents VPP binary API message 'memif_delete_reply': // -// "memif_delete_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// "memif_delete_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type MemifDeleteReply struct { Retval int32 @@ -295,29 +325,29 @@ func (*MemifDeleteReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// MemifSocketFilenameDetails represents the VPP binary API message 'memif_socket_filename_details'. +// MemifSocketFilenameDetails represents VPP binary API message 'memif_socket_filename_details': // -// "memif_socket_filename_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "socket_id" -// ], -// [ -// "u8", -// "socket_filename", -// 128 -// ], -// { -// "crc": "0xe347e32f" -// } +// "memif_socket_filename_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "socket_id" +// ], +// [ +// "u8", +// "socket_filename", +// 128 +// ], +// { +// "crc": "0xe347e32f" +// } // type MemifSocketFilenameDetails struct { SocketID uint32 @@ -334,24 +364,24 @@ func (*MemifSocketFilenameDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// MemifSocketFilenameDump represents the VPP binary API message 'memif_socket_filename_dump'. +// MemifSocketFilenameDump represents VPP binary API message 'memif_socket_filename_dump': // -// "memif_socket_filename_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// "memif_socket_filename_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type MemifSocketFilenameDump struct{} @@ -365,66 +395,66 @@ func (*MemifSocketFilenameDump) GetMessageType() api.MessageType { return api.RequestMessage } -// MemifDetails represents the VPP binary API message 'memif_details'. +// MemifDetails represents VPP binary API message 'memif_details': // -// "memif_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "if_name", -// 64 -// ], -// [ -// "u8", -// "hw_addr", -// 6 -// ], -// [ -// "u32", -// "id" -// ], -// [ -// "u8", -// "role" -// ], -// [ -// "u8", -// "mode" -// ], -// [ -// "u32", -// "socket_id" -// ], -// [ -// "u32", -// "ring_size" -// ], -// [ -// "u16", -// "buffer_size" -// ], -// [ -// "u8", -// "admin_up_down" -// ], -// [ -// "u8", -// "link_up_down" -// ], -// { -// "crc": "0x4f5a3397" -// } +// "memif_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "if_name", +// 64 +// ], +// [ +// "u8", +// "hw_addr", +// 6 +// ], +// [ +// "u32", +// "id" +// ], +// [ +// "u8", +// "role" +// ], +// [ +// "u8", +// "mode" +// ], +// [ +// "u32", +// "socket_id" +// ], +// [ +// "u32", +// "ring_size" +// ], +// [ +// "u16", +// "buffer_size" +// ], +// [ +// "u8", +// "admin_up_down" +// ], +// [ +// "u8", +// "link_up_down" +// ], +// { +// "crc": "0x4f5a3397" +// } // type MemifDetails struct { SwIfIndex uint32 @@ -450,24 +480,24 @@ func (*MemifDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -// MemifDump represents the VPP binary API message 'memif_dump'. +// MemifDump represents VPP binary API message 'memif_dump': // -// "memif_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// "memif_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type MemifDump struct{} @@ -481,16 +511,6 @@ func (*MemifDump) GetMessageType() api.MessageType { return api.RequestMessage } -/* Services */ - -type Services interface { - DumpMemif(*MemifDump) (*MemifDetails, error) - DumpMemifSocketFilename(*MemifSocketFilenameDump) (*MemifSocketFilenameDetails, error) - MemifCreate(*MemifCreate) (*MemifCreateReply, error) - MemifDelete(*MemifDelete) (*MemifDeleteReply, error) - MemifSocketFilenameAddDel(*MemifSocketFilenameAddDel) (*MemifSocketFilenameAddDelReply, error) -} - func init() { api.RegisterMessage((*MemifSocketFilenameAddDel)(nil), "memif.MemifSocketFilenameAddDel") api.RegisterMessage((*MemifSocketFilenameAddDelReply)(nil), "memif.MemifSocketFilenameAddDelReply") diff --git a/examples/bin_api/stats.api.json b/examples/bin_api/stats.api.json index 9ac3640..31c957e 100644 --- a/examples/bin_api/stats.api.json +++ b/examples/bin_api/stats.api.json @@ -795,19 +795,19 @@ [ "u64", "total_pkts", - 2 + 8 ], [ "u64", "total_bytes", - 2 + 8 ], [ "f64", "vector_rate" ], { - "crc": "0x32b87c56" + "crc": "0x82b5e46c" } ], [ @@ -917,9 +917,77 @@ { "crc": "0x1ab5e649" } + ], + [ + "want_bier_neighbor_stats", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + [ + "u32", + "enable" + ], + [ + "u32", + "pid" + ], + { + "crc": "0xcfaccc1f" + } + ], + [ + "want_bier_neighbor_stats_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + { + "crc": "0xe8d4e804" + } + ], + [ + "vnet_bier_neighbor_counters", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "timestamp" + ], + [ + "u32", + "count" + ], + [ + "vl_api_bier_neighbor_counter_t", + "c", + 0, + "count" + ], + { + "crc": "0xee0481ce" + } ] ], - "vl_api_version": "0xfc484aa", + "vl_api_version": "0xd3b29d42", "unions": [], "services": { "want_ip4_fib_stats": { @@ -955,6 +1023,12 @@ "vnet_get_summary_stats": { "reply": "vnet_get_summary_stats_reply" }, + "want_bier_neighbor_stats": { + "reply": "want_bier_neighbor_stats_reply", + "events": [ + "vnet_bier_neighbor_counters" + ] + }, "want_udp_encap_stats": { "reply": "want_udp_encap_stats_reply", "events": [ @@ -1134,6 +1208,134 @@ "crc": "0x8bd65e2d" } ], + [ + "fib_mpls_label", + [ + "u8", + "is_uniform" + ], + [ + "u32", + "label" + ], + [ + "u8", + "ttl" + ], + [ + "u8", + "exp" + ], + { + "crc": "0xc93bf35c" + } + ], + [ + "fib_path", + [ + "u32", + "sw_if_index" + ], + [ + "u32", + "table_id" + ], + [ + "u8", + "weight" + ], + [ + "u8", + "preference" + ], + [ + "u8", + "is_local" + ], + [ + "u8", + "is_drop" + ], + [ + "u8", + "is_udp_encap" + ], + [ + "u8", + "is_unreach" + ], + [ + "u8", + "is_prohibit" + ], + [ + "u8", + "is_resolve_host" + ], + [ + "u8", + "is_resolve_attached" + ], + [ + "u8", + "is_dvr" + ], + [ + "u8", + "is_source_lookup" + ], + [ + "u8", + "afi" + ], + [ + "u8", + "next_hop", + 16 + ], + [ + "u32", + "next_hop_id" + ], + [ + "u32", + "rpf_id" + ], + [ + "u32", + "via_label" + ], + [ + "u8", + "n_labels" + ], + [ + "vl_api_fib_mpls_label_t", + "label_stack", + 16 + ], + { + "crc": "0xabe483ef" + } + ], + [ + "bier_table_id", + [ + "u8", + "bt_set" + ], + [ + "u8", + "bt_sub_domain" + ], + [ + "u8", + "bt_hdr_len_id" + ], + { + "crc": "0x435c691d" + } + ], [ "ip4_fib_counter", [ @@ -1297,6 +1499,33 @@ { "crc": "0x7107035f" } + ], + [ + "bier_neighbor_counter", + [ + "vl_api_bier_table_id_t", + "tbl_id" + ], + [ + "vl_api_fib_path_t", + "path" + ], + [ + "u64", + "packets" + ], + [ + "u64", + "bytes" + ], + { + "crc": "0x91fe1748" + } ] - ] + ], + "aliases": { + "interface_index": { + "type": "u32" + } + } } diff --git a/examples/bin_api/stats/stats.ba.go b/examples/bin_api/stats/stats.ba.go index 58c178f..97a6e60 100644 --- a/examples/bin_api/stats/stats.ba.go +++ b/examples/bin_api/stats/stats.ba.go @@ -5,9 +5,10 @@ Package stats is a generated from VPP binary API module 'stats'. It contains following objects: - 39 messages - 10 types - 14 services + 42 messages + 14 types + 1 alias + 15 services */ package stats @@ -21,22 +22,136 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "want_ip4_fib_stats": { +// "reply": "want_ip4_fib_stats_reply", +// "events": [ +// "vnet_ip4_fib_counters" +// ] +// }, +// "want_ip6_fib_stats": { +// "reply": "want_ip6_fib_stats_reply", +// "events": [ +// "vnet_ip6_fib_counters" +// ] +// }, +// "want_stats": { +// "reply": "want_stats_reply" +// }, +// "want_interface_simple_stats": { +// "reply": "want_interface_simple_stats_reply", +// "events": [ +// "vnet_interface_simple_counters" +// ] +// }, +// "stats_get_poller_delay": { +// "reply": "stats_get_poller_delay_reply" +// }, +// "want_per_interface_combined_stats": { +// "reply": "want_per_interface_combined_stats_reply", +// "events": [ +// "vnet_per_interface_combined_counters" +// ] +// }, +// "vnet_get_summary_stats": { +// "reply": "vnet_get_summary_stats_reply" +// }, +// "want_bier_neighbor_stats": { +// "reply": "want_bier_neighbor_stats_reply", +// "events": [ +// "vnet_bier_neighbor_counters" +// ] +// }, +// "want_udp_encap_stats": { +// "reply": "want_udp_encap_stats_reply", +// "events": [ +// "vnet_udp_encap_counters" +// ] +// }, +// "want_ip6_nbr_stats": { +// "reply": "want_ip6_nbr_stats_reply", +// "events": [ +// "vnet_ip6_nbr_counters" +// ] +// }, +// "want_ip4_mfib_stats": { +// "reply": "want_ip4_mfib_stats_reply", +// "events": [ +// "vnet_ip4_mfib_counters" +// ] +// }, +// "want_ip6_mfib_stats": { +// "reply": "want_ip6_mfib_stats_reply", +// "events": [ +// "vnet_ip6_mfib_counters" +// ] +// }, +// "want_per_interface_simple_stats": { +// "reply": "want_per_interface_simple_stats_reply", +// "events": [ +// "vnet_per_interface_simple_counters" +// ] +// }, +// "want_interface_combined_stats": { +// "reply": "want_interface_combined_stats_reply", +// "events": [ +// "vnet_interface_combined_counters" +// ] +// }, +// "want_ip4_nbr_stats": { +// "reply": "want_ip4_nbr_stats_reply", +// "events": [ +// "vnet_ip4_nbr_counters" +// ] +// } +// }, +// +type Services interface { + StatsGetPollerDelay(*StatsGetPollerDelay) (*StatsGetPollerDelayReply, error) + VnetGetSummaryStats(*VnetGetSummaryStats) (*VnetGetSummaryStatsReply, error) + WantBierNeighborStats(*WantBierNeighborStats) (*WantBierNeighborStatsReply, error) + WantInterfaceCombinedStats(*WantInterfaceCombinedStats) (*WantInterfaceCombinedStatsReply, error) + WantInterfaceSimpleStats(*WantInterfaceSimpleStats) (*WantInterfaceSimpleStatsReply, error) + WantIP4FibStats(*WantIP4FibStats) (*WantIP4FibStatsReply, error) + WantIP4MfibStats(*WantIP4MfibStats) (*WantIP4MfibStatsReply, error) + WantIP4NbrStats(*WantIP4NbrStats) (*WantIP4NbrStatsReply, error) + WantIP6FibStats(*WantIP6FibStats) (*WantIP6FibStatsReply, error) + WantIP6MfibStats(*WantIP6MfibStats) (*WantIP6MfibStatsReply, error) + WantIP6NbrStats(*WantIP6NbrStats) (*WantIP6NbrStatsReply, error) + WantPerInterfaceCombinedStats(*WantPerInterfaceCombinedStats) (*WantPerInterfaceCombinedStatsReply, error) + WantPerInterfaceSimpleStats(*WantPerInterfaceSimpleStats) (*WantPerInterfaceSimpleStatsReply, error) + WantStats(*WantStats) (*WantStatsReply, error) + WantUDPEncapStats(*WantUDPEncapStats) (*WantUDPEncapStatsReply, error) +} + +/* Aliases */ + +// InterfaceIndex represents VPP binary API alias 'interface_index': +// +// "interface_index": { +// "type": "u32" +// } +// +type InterfaceIndex uint32 + /* Types */ -// VlibCounter represents the VPP binary API type 'vlib_counter'. -// -// "vlib_counter", -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0xce2325a2" -// } +// VlibCounter represents VPP binary API type 'vlib_counter': +// +// "vlib_counter", +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0xce2325a2" +// } // type VlibCounter struct { Packets uint64 @@ -50,80 +165,80 @@ func (*VlibCounter) GetCrcString() string { return "ce2325a2" } -// VnetCombinedCounter represents the VPP binary API type 'vnet_combined_counter'. -// -// "vnet_combined_counter", -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u64", -// "rx_packets" -// ], -// [ -// "u64", -// "rx_bytes" -// ], -// [ -// "u64", -// "rx_unicast_packets" -// ], -// [ -// "u64", -// "rx_unicast_bytes" -// ], -// [ -// "u64", -// "rx_multicast_packets" -// ], -// [ -// "u64", -// "rx_multicast_bytes" -// ], -// [ -// "u64", -// "rx_broadcast_packets" -// ], -// [ -// "u64", -// "rx_broadcast_bytes" -// ], -// [ -// "u64", -// "tx_packets" -// ], -// [ -// "u64", -// "tx_bytes" -// ], -// [ -// "u64", -// "tx_unicast_packets" -// ], -// [ -// "u64", -// "tx_unicast_bytes" -// ], -// [ -// "u64", -// "tx_multicast_packets" -// ], -// [ -// "u64", -// "tx_multicast_bytes" -// ], -// [ -// "u64", -// "tx_broadcast_packets" -// ], -// [ -// "u64", -// "tx_broadcast_bytes" -// ], -// { -// "crc": "0x20905ca4" -// } +// VnetCombinedCounter represents VPP binary API type 'vnet_combined_counter': +// +// "vnet_combined_counter", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u64", +// "rx_packets" +// ], +// [ +// "u64", +// "rx_bytes" +// ], +// [ +// "u64", +// "rx_unicast_packets" +// ], +// [ +// "u64", +// "rx_unicast_bytes" +// ], +// [ +// "u64", +// "rx_multicast_packets" +// ], +// [ +// "u64", +// "rx_multicast_bytes" +// ], +// [ +// "u64", +// "rx_broadcast_packets" +// ], +// [ +// "u64", +// "rx_broadcast_bytes" +// ], +// [ +// "u64", +// "tx_packets" +// ], +// [ +// "u64", +// "tx_bytes" +// ], +// [ +// "u64", +// "tx_unicast_packets" +// ], +// [ +// "u64", +// "tx_unicast_bytes" +// ], +// [ +// "u64", +// "tx_multicast_packets" +// ], +// [ +// "u64", +// "tx_multicast_bytes" +// ], +// [ +// "u64", +// "tx_broadcast_packets" +// ], +// [ +// "u64", +// "tx_broadcast_bytes" +// ], +// { +// "crc": "0x20905ca4" +// } // type VnetCombinedCounter struct { SwIfIndex uint32 @@ -152,52 +267,52 @@ func (*VnetCombinedCounter) GetCrcString() string { return "20905ca4" } -// VnetSimpleCounter represents the VPP binary API type 'vnet_simple_counter'. -// -// "vnet_simple_counter", -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u64", -// "drop" -// ], -// [ -// "u64", -// "punt" -// ], -// [ -// "u64", -// "rx_ip4" -// ], -// [ -// "u64", -// "rx_ip6" -// ], -// [ -// "u64", -// "rx_no_buffer" -// ], -// [ -// "u64", -// "rx_miss" -// ], -// [ -// "u64", -// "rx_error" -// ], -// [ -// "u64", -// "tx_error" -// ], -// [ -// "u64", -// "rx_mpls" -// ], -// { -// "crc": "0x8bd65e2d" -// } +// VnetSimpleCounter represents VPP binary API type 'vnet_simple_counter': +// +// "vnet_simple_counter", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u64", +// "drop" +// ], +// [ +// "u64", +// "punt" +// ], +// [ +// "u64", +// "rx_ip4" +// ], +// [ +// "u64", +// "rx_ip6" +// ], +// [ +// "u64", +// "rx_no_buffer" +// ], +// [ +// "u64", +// "rx_miss" +// ], +// [ +// "u64", +// "rx_error" +// ], +// [ +// "u64", +// "tx_error" +// ], +// [ +// "u64", +// "rx_mpls" +// ], +// { +// "crc": "0x8bd65e2d" +// } // type VnetSimpleCounter struct { SwIfIndex uint32 @@ -219,28 +334,216 @@ func (*VnetSimpleCounter) GetCrcString() string { return "8bd65e2d" } -// IP4FibCounter represents the VPP binary API type 'ip4_fib_counter'. -// -// "ip4_fib_counter", -// [ -// "u32", -// "address" -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0xa6ceb0c9" -// } +// FibMplsLabel represents VPP binary API type 'fib_mpls_label': +// +// "fib_mpls_label", +// [ +// "u8", +// "is_uniform" +// ], +// [ +// "u32", +// "label" +// ], +// [ +// "u8", +// "ttl" +// ], +// [ +// "u8", +// "exp" +// ], +// { +// "crc": "0xc93bf35c" +// } +// +type FibMplsLabel struct { + IsUniform uint8 + Label uint32 + TTL uint8 + Exp uint8 +} + +func (*FibMplsLabel) GetTypeName() string { + return "fib_mpls_label" +} +func (*FibMplsLabel) GetCrcString() string { + return "c93bf35c" +} + +// FibPath represents VPP binary API type 'fib_path': +// +// "fib_path", +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u32", +// "table_id" +// ], +// [ +// "u8", +// "weight" +// ], +// [ +// "u8", +// "preference" +// ], +// [ +// "u8", +// "is_local" +// ], +// [ +// "u8", +// "is_drop" +// ], +// [ +// "u8", +// "is_udp_encap" +// ], +// [ +// "u8", +// "is_unreach" +// ], +// [ +// "u8", +// "is_prohibit" +// ], +// [ +// "u8", +// "is_resolve_host" +// ], +// [ +// "u8", +// "is_resolve_attached" +// ], +// [ +// "u8", +// "is_dvr" +// ], +// [ +// "u8", +// "is_source_lookup" +// ], +// [ +// "u8", +// "afi" +// ], +// [ +// "u8", +// "next_hop", +// 16 +// ], +// [ +// "u32", +// "next_hop_id" +// ], +// [ +// "u32", +// "rpf_id" +// ], +// [ +// "u32", +// "via_label" +// ], +// [ +// "u8", +// "n_labels" +// ], +// [ +// "vl_api_fib_mpls_label_t", +// "label_stack", +// 16 +// ], +// { +// "crc": "0xabe483ef" +// } +// +type FibPath struct { + SwIfIndex uint32 + TableID uint32 + Weight uint8 + Preference uint8 + IsLocal uint8 + IsDrop uint8 + IsUDPEncap uint8 + IsUnreach uint8 + IsProhibit uint8 + IsResolveHost uint8 + IsResolveAttached uint8 + IsDvr uint8 + IsSourceLookup uint8 + Afi uint8 + NextHop []byte `struc:"[16]byte"` + NextHopID uint32 + RpfID uint32 + ViaLabel uint32 + NLabels uint8 + LabelStack []FibMplsLabel `struc:"[16]FibMplsLabel"` +} + +func (*FibPath) GetTypeName() string { + return "fib_path" +} +func (*FibPath) GetCrcString() string { + return "abe483ef" +} + +// BierTableID represents VPP binary API type 'bier_table_id': +// +// "bier_table_id", +// [ +// "u8", +// "bt_set" +// ], +// [ +// "u8", +// "bt_sub_domain" +// ], +// [ +// "u8", +// "bt_hdr_len_id" +// ], +// { +// "crc": "0x435c691d" +// } +// +type BierTableID struct { + BtSet uint8 + BtSubDomain uint8 + BtHdrLenID uint8 +} + +func (*BierTableID) GetTypeName() string { + return "bier_table_id" +} +func (*BierTableID) GetCrcString() string { + return "435c691d" +} + +// IP4FibCounter represents VPP binary API type 'ip4_fib_counter': +// +// "ip4_fib_counter", +// [ +// "u32", +// "address" +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0xa6ceb0c9" +// } // type IP4FibCounter struct { Address uint32 @@ -256,34 +559,34 @@ func (*IP4FibCounter) GetCrcString() string { return "a6ceb0c9" } -// IP4MfibCounter represents the VPP binary API type 'ip4_mfib_counter'. -// -// "ip4_mfib_counter", -// [ -// "u8", -// "source", -// 4 -// ], -// [ -// "u8", -// "group", -// 4 -// ], -// [ -// "u8", -// "group_length" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0x2cee4721" -// } +// IP4MfibCounter represents VPP binary API type 'ip4_mfib_counter': +// +// "ip4_mfib_counter", +// [ +// "u8", +// "source", +// 4 +// ], +// [ +// "u8", +// "group", +// 4 +// ], +// [ +// "u8", +// "group_length" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0x2cee4721" +// } // type IP4MfibCounter struct { Source []byte `struc:"[4]byte"` @@ -300,28 +603,28 @@ func (*IP4MfibCounter) GetCrcString() string { return "2cee4721" } -// IP4NbrCounter represents the VPP binary API type 'ip4_nbr_counter'. -// -// "ip4_nbr_counter", -// [ -// "u32", -// "address" -// ], -// [ -// "u8", -// "link_type" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0xb9f974d6" -// } +// IP4NbrCounter represents VPP binary API type 'ip4_nbr_counter': +// +// "ip4_nbr_counter", +// [ +// "u32", +// "address" +// ], +// [ +// "u8", +// "link_type" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0xb9f974d6" +// } // type IP4NbrCounter struct { Address uint32 @@ -337,29 +640,29 @@ func (*IP4NbrCounter) GetCrcString() string { return "b9f974d6" } -// IP6FibCounter represents the VPP binary API type 'ip6_fib_counter'. -// -// "ip6_fib_counter", -// [ -// "u64", -// "address", -// 2 -// ], -// [ -// "u8", -// "address_length" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0xf1197efb" -// } +// IP6FibCounter represents VPP binary API type 'ip6_fib_counter': +// +// "ip6_fib_counter", +// [ +// "u64", +// "address", +// 2 +// ], +// [ +// "u8", +// "address_length" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0xf1197efb" +// } // type IP6FibCounter struct { Address []uint64 `struc:"[2]uint64"` @@ -375,34 +678,34 @@ func (*IP6FibCounter) GetCrcString() string { return "f1197efb" } -// IP6MfibCounter represents the VPP binary API type 'ip6_mfib_counter'. -// -// "ip6_mfib_counter", -// [ -// "u8", -// "source", -// 16 -// ], -// [ -// "u8", -// "group", -// 16 -// ], -// [ -// "u8", -// "group_length" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0x90a9590e" -// } +// IP6MfibCounter represents VPP binary API type 'ip6_mfib_counter': +// +// "ip6_mfib_counter", +// [ +// "u8", +// "source", +// 16 +// ], +// [ +// "u8", +// "group", +// 16 +// ], +// [ +// "u8", +// "group_length" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0x90a9590e" +// } // type IP6MfibCounter struct { Source []byte `struc:"[16]byte"` @@ -419,29 +722,29 @@ func (*IP6MfibCounter) GetCrcString() string { return "90a9590e" } -// IP6NbrCounter represents the VPP binary API type 'ip6_nbr_counter'. -// -// "ip6_nbr_counter", -// [ -// "u64", -// "address", -// 2 -// ], -// [ -// "u8", -// "link_type" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0x2d755474" -// } +// IP6NbrCounter represents VPP binary API type 'ip6_nbr_counter': +// +// "ip6_nbr_counter", +// [ +// "u64", +// "address", +// 2 +// ], +// [ +// "u8", +// "link_type" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0x2d755474" +// } // type IP6NbrCounter struct { Address []uint64 `struc:"[2]uint64"` @@ -457,24 +760,24 @@ func (*IP6NbrCounter) GetCrcString() string { return "2d755474" } -// UDPEncapCounter represents the VPP binary API type 'udp_encap_counter'. -// -// "udp_encap_counter", -// [ -// "u32", -// "id" -// ], -// [ -// "u64", -// "packets" -// ], -// [ -// "u64", -// "bytes" -// ], -// { -// "crc": "0x7107035f" -// } +// UDPEncapCounter represents VPP binary API type 'udp_encap_counter': +// +// "udp_encap_counter", +// [ +// "u32", +// "id" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0x7107035f" +// } // type UDPEncapCounter struct { ID uint32 @@ -489,34 +792,71 @@ func (*UDPEncapCounter) GetCrcString() string { return "7107035f" } +// BierNeighborCounter represents VPP binary API type 'bier_neighbor_counter': +// +// "bier_neighbor_counter", +// [ +// "vl_api_bier_table_id_t", +// "tbl_id" +// ], +// [ +// "vl_api_fib_path_t", +// "path" +// ], +// [ +// "u64", +// "packets" +// ], +// [ +// "u64", +// "bytes" +// ], +// { +// "crc": "0x91fe1748" +// } +// +type BierNeighborCounter struct { + TblID BierTableID + Path FibPath + Packets uint64 + Bytes uint64 +} + +func (*BierNeighborCounter) GetTypeName() string { + return "bier_neighbor_counter" +} +func (*BierNeighborCounter) GetCrcString() string { + return "91fe1748" +} + /* Messages */ -// WantStats represents the VPP binary API message 'want_stats'. -// -// "want_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantStats represents VPP binary API message 'want_stats': +// +// "want_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantStats struct { EnableDisable uint32 @@ -533,24 +873,24 @@ func (*WantStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantStatsReply represents the VPP binary API message 'want_stats_reply'. -// -// "want_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantStatsReply represents VPP binary API message 'want_stats_reply': +// +// "want_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantStatsReply struct { Retval int32 @@ -566,32 +906,32 @@ func (*WantStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantInterfaceSimpleStats represents the VPP binary API message 'want_interface_simple_stats'. -// -// "want_interface_simple_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantInterfaceSimpleStats represents VPP binary API message 'want_interface_simple_stats': +// +// "want_interface_simple_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantInterfaceSimpleStats struct { EnableDisable uint32 @@ -608,24 +948,24 @@ func (*WantInterfaceSimpleStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantInterfaceSimpleStatsReply represents the VPP binary API message 'want_interface_simple_stats_reply'. -// -// "want_interface_simple_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantInterfaceSimpleStatsReply represents VPP binary API message 'want_interface_simple_stats_reply': +// +// "want_interface_simple_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantInterfaceSimpleStatsReply struct { Retval int32 @@ -641,42 +981,42 @@ func (*WantInterfaceSimpleStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantPerInterfaceSimpleStats represents the VPP binary API message 'want_per_interface_simple_stats'. -// -// "want_per_interface_simple_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "num" -// ], -// [ -// "u32", -// "sw_ifs", -// 0, -// "num" -// ], -// { -// "crc": "0x729d04f1" -// } +// WantPerInterfaceSimpleStats represents VPP binary API message 'want_per_interface_simple_stats': +// +// "want_per_interface_simple_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "num" +// ], +// [ +// "u32", +// "sw_ifs", +// 0, +// "num" +// ], +// { +// "crc": "0x729d04f1" +// } // type WantPerInterfaceSimpleStats struct { EnableDisable uint32 @@ -695,24 +1035,24 @@ func (*WantPerInterfaceSimpleStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantPerInterfaceSimpleStatsReply represents the VPP binary API message 'want_per_interface_simple_stats_reply'. -// -// "want_per_interface_simple_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantPerInterfaceSimpleStatsReply represents VPP binary API message 'want_per_interface_simple_stats_reply': +// +// "want_per_interface_simple_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantPerInterfaceSimpleStatsReply struct { Retval int32 @@ -728,32 +1068,32 @@ func (*WantPerInterfaceSimpleStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantInterfaceCombinedStats represents the VPP binary API message 'want_interface_combined_stats'. -// -// "want_interface_combined_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantInterfaceCombinedStats represents VPP binary API message 'want_interface_combined_stats': +// +// "want_interface_combined_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantInterfaceCombinedStats struct { EnableDisable uint32 @@ -770,24 +1110,24 @@ func (*WantInterfaceCombinedStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantInterfaceCombinedStatsReply represents the VPP binary API message 'want_interface_combined_stats_reply'. -// -// "want_interface_combined_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantInterfaceCombinedStatsReply represents VPP binary API message 'want_interface_combined_stats_reply': +// +// "want_interface_combined_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantInterfaceCombinedStatsReply struct { Retval int32 @@ -803,42 +1143,42 @@ func (*WantInterfaceCombinedStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantPerInterfaceCombinedStats represents the VPP binary API message 'want_per_interface_combined_stats'. -// -// "want_per_interface_combined_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// [ -// "u32", -// "num" -// ], -// [ -// "u32", -// "sw_ifs", -// 0, -// "num" -// ], -// { -// "crc": "0x729d04f1" -// } +// WantPerInterfaceCombinedStats represents VPP binary API message 'want_per_interface_combined_stats': +// +// "want_per_interface_combined_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// [ +// "u32", +// "num" +// ], +// [ +// "u32", +// "sw_ifs", +// 0, +// "num" +// ], +// { +// "crc": "0x729d04f1" +// } // type WantPerInterfaceCombinedStats struct { EnableDisable uint32 @@ -857,24 +1197,24 @@ func (*WantPerInterfaceCombinedStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantPerInterfaceCombinedStatsReply represents the VPP binary API message 'want_per_interface_combined_stats_reply'. -// -// "want_per_interface_combined_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantPerInterfaceCombinedStatsReply represents VPP binary API message 'want_per_interface_combined_stats_reply': +// +// "want_per_interface_combined_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantPerInterfaceCombinedStatsReply struct { Retval int32 @@ -890,32 +1230,32 @@ func (*WantPerInterfaceCombinedStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP4FibStats represents the VPP binary API message 'want_ip4_fib_stats'. -// -// "want_ip4_fib_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP4FibStats represents VPP binary API message 'want_ip4_fib_stats': +// +// "want_ip4_fib_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP4FibStats struct { EnableDisable uint32 @@ -932,24 +1272,24 @@ func (*WantIP4FibStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP4FibStatsReply represents the VPP binary API message 'want_ip4_fib_stats_reply'. -// -// "want_ip4_fib_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP4FibStatsReply represents VPP binary API message 'want_ip4_fib_stats_reply': +// +// "want_ip4_fib_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP4FibStatsReply struct { Retval int32 @@ -965,32 +1305,32 @@ func (*WantIP4FibStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP6FibStats represents the VPP binary API message 'want_ip6_fib_stats'. -// -// "want_ip6_fib_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP6FibStats represents VPP binary API message 'want_ip6_fib_stats': +// +// "want_ip6_fib_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP6FibStats struct { EnableDisable uint32 @@ -1007,24 +1347,24 @@ func (*WantIP6FibStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP6FibStatsReply represents the VPP binary API message 'want_ip6_fib_stats_reply'. -// -// "want_ip6_fib_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP6FibStatsReply represents VPP binary API message 'want_ip6_fib_stats_reply': +// +// "want_ip6_fib_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP6FibStatsReply struct { Retval int32 @@ -1040,32 +1380,32 @@ func (*WantIP6FibStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP4MfibStats represents the VPP binary API message 'want_ip4_mfib_stats'. -// -// "want_ip4_mfib_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP4MfibStats represents VPP binary API message 'want_ip4_mfib_stats': +// +// "want_ip4_mfib_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP4MfibStats struct { EnableDisable uint32 @@ -1082,24 +1422,24 @@ func (*WantIP4MfibStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP4MfibStatsReply represents the VPP binary API message 'want_ip4_mfib_stats_reply'. -// -// "want_ip4_mfib_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP4MfibStatsReply represents VPP binary API message 'want_ip4_mfib_stats_reply': +// +// "want_ip4_mfib_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP4MfibStatsReply struct { Retval int32 @@ -1115,32 +1455,32 @@ func (*WantIP4MfibStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP6MfibStats represents the VPP binary API message 'want_ip6_mfib_stats'. -// -// "want_ip6_mfib_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP6MfibStats represents VPP binary API message 'want_ip6_mfib_stats': +// +// "want_ip6_mfib_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP6MfibStats struct { EnableDisable uint32 @@ -1157,24 +1497,24 @@ func (*WantIP6MfibStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP6MfibStatsReply represents the VPP binary API message 'want_ip6_mfib_stats_reply'. -// -// "want_ip6_mfib_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP6MfibStatsReply represents VPP binary API message 'want_ip6_mfib_stats_reply': +// +// "want_ip6_mfib_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP6MfibStatsReply struct { Retval int32 @@ -1190,32 +1530,32 @@ func (*WantIP6MfibStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP4NbrStats represents the VPP binary API message 'want_ip4_nbr_stats'. -// -// "want_ip4_nbr_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP4NbrStats represents VPP binary API message 'want_ip4_nbr_stats': +// +// "want_ip4_nbr_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP4NbrStats struct { EnableDisable uint32 @@ -1232,24 +1572,24 @@ func (*WantIP4NbrStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP4NbrStatsReply represents the VPP binary API message 'want_ip4_nbr_stats_reply'. -// -// "want_ip4_nbr_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP4NbrStatsReply represents VPP binary API message 'want_ip4_nbr_stats_reply': +// +// "want_ip4_nbr_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP4NbrStatsReply struct { Retval int32 @@ -1265,32 +1605,32 @@ func (*WantIP4NbrStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantIP6NbrStats represents the VPP binary API message 'want_ip6_nbr_stats'. -// -// "want_ip6_nbr_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable_disable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0x476f5a08" -// } +// WantIP6NbrStats represents VPP binary API message 'want_ip6_nbr_stats': +// +// "want_ip6_nbr_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable_disable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0x476f5a08" +// } // type WantIP6NbrStats struct { EnableDisable uint32 @@ -1307,24 +1647,24 @@ func (*WantIP6NbrStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantIP6NbrStatsReply represents the VPP binary API message 'want_ip6_nbr_stats_reply'. -// -// "want_ip6_nbr_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantIP6NbrStatsReply represents VPP binary API message 'want_ip6_nbr_stats_reply': +// +// "want_ip6_nbr_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantIP6NbrStatsReply struct { Retval int32 @@ -1340,30 +1680,30 @@ func (*WantIP6NbrStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// VnetIP4FibCounters represents the VPP binary API message 'vnet_ip4_fib_counters'. -// -// "vnet_ip4_fib_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_ip4_fib_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x57e3feec" -// } +// VnetIP4FibCounters represents VPP binary API message 'vnet_ip4_fib_counters': +// +// "vnet_ip4_fib_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_ip4_fib_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x57e3feec" +// } // type VnetIP4FibCounters struct { VrfID uint32 @@ -1381,30 +1721,30 @@ func (*VnetIP4FibCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetIP4MfibCounters represents the VPP binary API message 'vnet_ip4_mfib_counters'. -// -// "vnet_ip4_mfib_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_ip4_mfib_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x946eb588" -// } +// VnetIP4MfibCounters represents VPP binary API message 'vnet_ip4_mfib_counters': +// +// "vnet_ip4_mfib_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_ip4_mfib_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x946eb588" +// } // type VnetIP4MfibCounters struct { VrfID uint32 @@ -1422,34 +1762,34 @@ func (*VnetIP4MfibCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetIP4NbrCounters represents the VPP binary API message 'vnet_ip4_nbr_counters'. -// -// "vnet_ip4_nbr_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "begin" -// ], -// [ -// "vl_api_ip4_nbr_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x214c4811" -// } +// VnetIP4NbrCounters represents VPP binary API message 'vnet_ip4_nbr_counters': +// +// "vnet_ip4_nbr_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "begin" +// ], +// [ +// "vl_api_ip4_nbr_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x214c4811" +// } // type VnetIP4NbrCounters struct { Count uint32 `struc:"sizeof=C"` @@ -1468,30 +1808,30 @@ func (*VnetIP4NbrCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetIP6FibCounters represents the VPP binary API message 'vnet_ip6_fib_counters'. -// -// "vnet_ip6_fib_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_ip6_fib_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x13aed73d" -// } +// VnetIP6FibCounters represents VPP binary API message 'vnet_ip6_fib_counters': +// +// "vnet_ip6_fib_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_ip6_fib_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x13aed73d" +// } // type VnetIP6FibCounters struct { VrfID uint32 @@ -1509,30 +1849,30 @@ func (*VnetIP6FibCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetIP6MfibCounters represents the VPP binary API message 'vnet_ip6_mfib_counters'. -// -// "vnet_ip6_mfib_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "vrf_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_ip6_mfib_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x65fe1ae3" -// } +// VnetIP6MfibCounters represents VPP binary API message 'vnet_ip6_mfib_counters': +// +// "vnet_ip6_mfib_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "vrf_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_ip6_mfib_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x65fe1ae3" +// } // type VnetIP6MfibCounters struct { VrfID uint32 @@ -1550,34 +1890,34 @@ func (*VnetIP6MfibCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetIP6NbrCounters represents the VPP binary API message 'vnet_ip6_nbr_counters'. -// -// "vnet_ip6_nbr_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "begin" -// ], -// [ -// "vl_api_ip6_nbr_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x650161c0" -// } +// VnetIP6NbrCounters represents VPP binary API message 'vnet_ip6_nbr_counters': +// +// "vnet_ip6_nbr_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "begin" +// ], +// [ +// "vl_api_ip6_nbr_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x650161c0" +// } // type VnetIP6NbrCounters struct { Count uint32 `struc:"sizeof=C"` @@ -1596,34 +1936,34 @@ func (*VnetIP6NbrCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetInterfaceSimpleCounters represents the VPP binary API message 'vnet_interface_simple_counters'. -// -// "vnet_interface_simple_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u8", -// "vnet_counter_type" -// ], -// [ -// "u32", -// "first_sw_if_index" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u64", -// "data", -// 0, -// "count" -// ], -// { -// "crc": "0x9bc4a808" -// } +// VnetInterfaceSimpleCounters represents VPP binary API message 'vnet_interface_simple_counters': +// +// "vnet_interface_simple_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u8", +// "vnet_counter_type" +// ], +// [ +// "u32", +// "first_sw_if_index" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u64", +// "data", +// 0, +// "count" +// ], +// { +// "crc": "0x9bc4a808" +// } // type VnetInterfaceSimpleCounters struct { VnetCounterType uint8 @@ -1642,34 +1982,34 @@ func (*VnetInterfaceSimpleCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetInterfaceCombinedCounters represents the VPP binary API message 'vnet_interface_combined_counters'. -// -// "vnet_interface_combined_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u8", -// "vnet_counter_type" -// ], -// [ -// "u32", -// "first_sw_if_index" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_vlib_counter_t", -// "data", -// 0, -// "count" -// ], -// { -// "crc": "0x2c595002" -// } +// VnetInterfaceCombinedCounters represents VPP binary API message 'vnet_interface_combined_counters': +// +// "vnet_interface_combined_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u8", +// "vnet_counter_type" +// ], +// [ +// "u32", +// "first_sw_if_index" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_vlib_counter_t", +// "data", +// 0, +// "count" +// ], +// { +// "crc": "0x2c595002" +// } // type VnetInterfaceCombinedCounters struct { VnetCounterType uint8 @@ -1688,30 +2028,30 @@ func (*VnetInterfaceCombinedCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetPerInterfaceSimpleCounters represents the VPP binary API message 'vnet_per_interface_simple_counters'. -// -// "vnet_per_interface_simple_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u32", -// "timestamp" -// ], -// [ -// "vl_api_vnet_simple_counter_t", -// "data", -// 0, -// "count" -// ], -// { -// "crc": "0xd1fba9ba" -// } +// VnetPerInterfaceSimpleCounters represents VPP binary API message 'vnet_per_interface_simple_counters': +// +// "vnet_per_interface_simple_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "timestamp" +// ], +// [ +// "vl_api_vnet_simple_counter_t", +// "data", +// 0, +// "count" +// ], +// { +// "crc": "0xd1fba9ba" +// } // type VnetPerInterfaceSimpleCounters struct { Count uint32 `struc:"sizeof=Data"` @@ -1729,30 +2069,30 @@ func (*VnetPerInterfaceSimpleCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetPerInterfaceCombinedCounters represents the VPP binary API message 'vnet_per_interface_combined_counters'. -// -// "vnet_per_interface_combined_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "u32", -// "timestamp" -// ], -// [ -// "vl_api_vnet_combined_counter_t", -// "data", -// 0, -// "count" -// ], -// { -// "crc": "0xdc578375" -// } +// VnetPerInterfaceCombinedCounters represents VPP binary API message 'vnet_per_interface_combined_counters': +// +// "vnet_per_interface_combined_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "u32", +// "timestamp" +// ], +// [ +// "vl_api_vnet_combined_counter_t", +// "data", +// 0, +// "count" +// ], +// { +// "crc": "0xdc578375" +// } // type VnetPerInterfaceCombinedCounters struct { Count uint32 `struc:"sizeof=Data"` @@ -1770,24 +2110,24 @@ func (*VnetPerInterfaceCombinedCounters) GetMessageType() api.MessageType { return api.OtherMessage } -// VnetGetSummaryStats represents the VPP binary API message 'vnet_get_summary_stats'. -// -// "vnet_get_summary_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// VnetGetSummaryStats represents VPP binary API message 'vnet_get_summary_stats': +// +// "vnet_get_summary_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type VnetGetSummaryStats struct{} @@ -1801,43 +2141,43 @@ func (*VnetGetSummaryStats) GetMessageType() api.MessageType { return api.RequestMessage } -// VnetGetSummaryStatsReply represents the VPP binary API message 'vnet_get_summary_stats_reply'. -// -// "vnet_get_summary_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u64", -// "total_pkts", -// 2 -// ], -// [ -// "u64", -// "total_bytes", -// 2 -// ], -// [ -// "f64", -// "vector_rate" -// ], -// { -// "crc": "0x32b87c56" -// } +// VnetGetSummaryStatsReply represents VPP binary API message 'vnet_get_summary_stats_reply': +// +// "vnet_get_summary_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u64", +// "total_pkts", +// 8 +// ], +// [ +// "u64", +// "total_bytes", +// 8 +// ], +// [ +// "f64", +// "vector_rate" +// ], +// { +// "crc": "0x82b5e46c" +// } // type VnetGetSummaryStatsReply struct { Retval int32 - TotalPkts []uint64 `struc:"[2]uint64"` - TotalBytes []uint64 `struc:"[2]uint64"` + TotalPkts []uint64 `struc:"[8]uint64"` + TotalBytes []uint64 `struc:"[8]uint64"` VectorRate float64 } @@ -1845,30 +2185,30 @@ func (*VnetGetSummaryStatsReply) GetMessageName() string { return "vnet_get_summary_stats_reply" } func (*VnetGetSummaryStatsReply) GetCrcString() string { - return "32b87c56" + return "82b5e46c" } func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// StatsGetPollerDelay represents the VPP binary API message 'stats_get_poller_delay'. -// -// "stats_get_poller_delay", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// StatsGetPollerDelay represents VPP binary API message 'stats_get_poller_delay': +// +// "stats_get_poller_delay", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type StatsGetPollerDelay struct{} @@ -1882,28 +2222,28 @@ func (*StatsGetPollerDelay) GetMessageType() api.MessageType { return api.RequestMessage } -// StatsGetPollerDelayReply represents the VPP binary API message 'stats_get_poller_delay_reply'. -// -// "stats_get_poller_delay_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "delay" -// ], -// { -// "crc": "0x8c445a33" -// } +// StatsGetPollerDelayReply represents VPP binary API message 'stats_get_poller_delay_reply': +// +// "stats_get_poller_delay_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "delay" +// ], +// { +// "crc": "0x8c445a33" +// } // type StatsGetPollerDelayReply struct { Retval int32 @@ -1920,32 +2260,32 @@ func (*StatsGetPollerDelayReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// WantUDPEncapStats represents the VPP binary API message 'want_udp_encap_stats'. -// -// "want_udp_encap_stats", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "enable" -// ], -// [ -// "u32", -// "pid" -// ], -// { -// "crc": "0xcfaccc1f" -// } +// WantUDPEncapStats represents VPP binary API message 'want_udp_encap_stats': +// +// "want_udp_encap_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0xcfaccc1f" +// } // type WantUDPEncapStats struct { Enable uint32 @@ -1962,24 +2302,24 @@ func (*WantUDPEncapStats) GetMessageType() api.MessageType { return api.RequestMessage } -// WantUDPEncapStatsReply represents the VPP binary API message 'want_udp_encap_stats_reply'. -// -// "want_udp_encap_stats_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// WantUDPEncapStatsReply represents VPP binary API message 'want_udp_encap_stats_reply': +// +// "want_udp_encap_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type WantUDPEncapStatsReply struct { Retval int32 @@ -1995,30 +2335,30 @@ func (*WantUDPEncapStatsReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// VnetUDPEncapCounters represents the VPP binary API message 'vnet_udp_encap_counters'. -// -// "vnet_udp_encap_counters", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "timestamp" -// ], -// [ -// "u32", -// "count" -// ], -// [ -// "vl_api_udp_encap_counter_t", -// "c", -// 0, -// "count" -// ], -// { -// "crc": "0x1ab5e649" -// } +// VnetUDPEncapCounters represents VPP binary API message 'vnet_udp_encap_counters': +// +// "vnet_udp_encap_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "timestamp" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_udp_encap_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0x1ab5e649" +// } // type VnetUDPEncapCounters struct { Timestamp uint32 @@ -2036,23 +2376,120 @@ func (*VnetUDPEncapCounters) GetMessageType() api.MessageType { return api.OtherMessage } -/* Services */ +// WantBierNeighborStats represents VPP binary API message 'want_bier_neighbor_stats': +// +// "want_bier_neighbor_stats", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "enable" +// ], +// [ +// "u32", +// "pid" +// ], +// { +// "crc": "0xcfaccc1f" +// } +// +type WantBierNeighborStats struct { + Enable uint32 + PID uint32 +} -type Services interface { - StatsGetPollerDelay(*StatsGetPollerDelay) (*StatsGetPollerDelayReply, error) - VnetGetSummaryStats(*VnetGetSummaryStats) (*VnetGetSummaryStatsReply, error) - WantInterfaceCombinedStats(*WantInterfaceCombinedStats) (*WantInterfaceCombinedStatsReply, error) - WantInterfaceSimpleStats(*WantInterfaceSimpleStats) (*WantInterfaceSimpleStatsReply, error) - WantIP4FibStats(*WantIP4FibStats) (*WantIP4FibStatsReply, error) - WantIP4MfibStats(*WantIP4MfibStats) (*WantIP4MfibStatsReply, error) - WantIP4NbrStats(*WantIP4NbrStats) (*WantIP4NbrStatsReply, error) - WantIP6FibStats(*WantIP6FibStats) (*WantIP6FibStatsReply, error) - WantIP6MfibStats(*WantIP6MfibStats) (*WantIP6MfibStatsReply, error) - WantIP6NbrStats(*WantIP6NbrStats) (*WantIP6NbrStatsReply, error) - WantPerInterfaceCombinedStats(*WantPerInterfaceCombinedStats) (*WantPerInterfaceCombinedStatsReply, error) - WantPerInterfaceSimpleStats(*WantPerInterfaceSimpleStats) (*WantPerInterfaceSimpleStatsReply, error) - WantStats(*WantStats) (*WantStatsReply, error) - WantUDPEncapStats(*WantUDPEncapStats) (*WantUDPEncapStatsReply, error) +func (*WantBierNeighborStats) GetMessageName() string { + return "want_bier_neighbor_stats" +} +func (*WantBierNeighborStats) GetCrcString() string { + return "cfaccc1f" +} +func (*WantBierNeighborStats) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// WantBierNeighborStatsReply represents VPP binary API message 'want_bier_neighbor_stats_reply': +// +// "want_bier_neighbor_stats_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } +// +type WantBierNeighborStatsReply struct { + Retval int32 +} + +func (*WantBierNeighborStatsReply) GetMessageName() string { + return "want_bier_neighbor_stats_reply" +} +func (*WantBierNeighborStatsReply) GetCrcString() string { + return "e8d4e804" +} +func (*WantBierNeighborStatsReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// VnetBierNeighborCounters represents VPP binary API message 'vnet_bier_neighbor_counters': +// +// "vnet_bier_neighbor_counters", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "timestamp" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_bier_neighbor_counter_t", +// "c", +// 0, +// "count" +// ], +// { +// "crc": "0xee0481ce" +// } +// +type VnetBierNeighborCounters struct { + Timestamp uint32 + Count uint32 `struc:"sizeof=C"` + C []BierNeighborCounter +} + +func (*VnetBierNeighborCounters) GetMessageName() string { + return "vnet_bier_neighbor_counters" +} +func (*VnetBierNeighborCounters) GetCrcString() string { + return "ee0481ce" +} +func (*VnetBierNeighborCounters) GetMessageType() api.MessageType { + return api.OtherMessage } func init() { @@ -2095,4 +2532,7 @@ func init() { api.RegisterMessage((*WantUDPEncapStats)(nil), "stats.WantUDPEncapStats") api.RegisterMessage((*WantUDPEncapStatsReply)(nil), "stats.WantUDPEncapStatsReply") api.RegisterMessage((*VnetUDPEncapCounters)(nil), "stats.VnetUDPEncapCounters") + api.RegisterMessage((*WantBierNeighborStats)(nil), "stats.WantBierNeighborStats") + api.RegisterMessage((*WantBierNeighborStatsReply)(nil), "stats.WantBierNeighborStatsReply") + api.RegisterMessage((*VnetBierNeighborCounters)(nil), "stats.VnetBierNeighborCounters") } diff --git a/examples/bin_api/tap.api.json b/examples/bin_api/tap.api.json index 5a0ab74..45edc6a 100644 --- a/examples/bin_api/tap.api.json +++ b/examples/bin_api/tap.api.json @@ -259,5 +259,6 @@ } }, "enums": [], - "types": [] + "types": [], + "aliases": {} } diff --git a/examples/bin_api/tap/tap.ba.go b/examples/bin_api/tap/tap.ba.go index d4daa1d..f94f7be 100644 --- a/examples/bin_api/tap/tap.ba.go +++ b/examples/bin_api/tap/tap.ba.go @@ -20,79 +20,104 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "tap_delete": { +// "reply": "tap_delete_reply" +// }, +// "sw_interface_tap_dump": { +// "reply": "sw_interface_tap_details", +// "stream": true +// }, +// "tap_modify": { +// "reply": "tap_modify_reply" +// }, +// "tap_connect": { +// "reply": "tap_connect_reply" +// } +// }, +// +type Services interface { + DumpSwInterfaceTap(*SwInterfaceTapDump) ([]*SwInterfaceTapDetails, error) + TapConnect(*TapConnect) (*TapConnectReply, error) + TapDelete(*TapDelete) (*TapDeleteReply, error) + TapModify(*TapModify) (*TapModifyReply, error) +} + /* Messages */ -// TapConnect represents the VPP binary API message 'tap_connect'. +// TapConnect represents VPP binary API message 'tap_connect': // -// "tap_connect", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "use_random_mac" -// ], -// [ -// "u8", -// "tap_name", -// 64 -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// [ -// "u8", -// "renumber" -// ], -// [ -// "u32", -// "custom_dev_instance" -// ], -// [ -// "u8", -// "ip4_address_set" -// ], -// [ -// "u8", -// "ip4_address", -// 4 -// ], -// [ -// "u8", -// "ip4_mask_width" -// ], -// [ -// "u8", -// "ip6_address_set" -// ], -// [ -// "u8", -// "ip6_address", -// 16 -// ], -// [ -// "u8", -// "ip6_mask_width" -// ], -// [ -// "u8", -// "tag", -// 64 -// ], -// { -// "crc": "0x9b9c396f" -// } +// "tap_connect", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "use_random_mac" +// ], +// [ +// "u8", +// "tap_name", +// 64 +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// [ +// "u8", +// "renumber" +// ], +// [ +// "u32", +// "custom_dev_instance" +// ], +// [ +// "u8", +// "ip4_address_set" +// ], +// [ +// "u8", +// "ip4_address", +// 4 +// ], +// [ +// "u8", +// "ip4_mask_width" +// ], +// [ +// "u8", +// "ip6_address_set" +// ], +// [ +// "u8", +// "ip6_address", +// 16 +// ], +// [ +// "u8", +// "ip6_mask_width" +// ], +// [ +// "u8", +// "tag", +// 64 +// ], +// { +// "crc": "0x9b9c396f" +// } // type TapConnect struct { UseRandomMac uint8 @@ -119,28 +144,28 @@ func (*TapConnect) GetMessageType() api.MessageType { return api.RequestMessage } -// TapConnectReply represents the VPP binary API message 'tap_connect_reply'. +// TapConnectReply represents VPP binary API message 'tap_connect_reply': // -// "tap_connect_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// "tap_connect_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type TapConnectReply struct { Retval int32 @@ -157,50 +182,50 @@ func (*TapConnectReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// TapModify represents the VPP binary API message 'tap_modify'. +// TapModify represents VPP binary API message 'tap_modify': // -// "tap_modify", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "use_random_mac" -// ], -// [ -// "u8", -// "tap_name", -// 64 -// ], -// [ -// "u8", -// "mac_address", -// 6 -// ], -// [ -// "u8", -// "renumber" -// ], -// [ -// "u32", -// "custom_dev_instance" -// ], -// { -// "crc": "0x8047ae5c" -// } +// "tap_modify", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "use_random_mac" +// ], +// [ +// "u8", +// "tap_name", +// 64 +// ], +// [ +// "u8", +// "mac_address", +// 6 +// ], +// [ +// "u8", +// "renumber" +// ], +// [ +// "u32", +// "custom_dev_instance" +// ], +// { +// "crc": "0x8047ae5c" +// } // type TapModify struct { SwIfIndex uint32 @@ -221,28 +246,28 @@ func (*TapModify) GetMessageType() api.MessageType { return api.RequestMessage } -// TapModifyReply represents the VPP binary API message 'tap_modify_reply'. +// TapModifyReply represents VPP binary API message 'tap_modify_reply': // -// "tap_modify_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0xfda5941f" -// } +// "tap_modify_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0xfda5941f" +// } // type TapModifyReply struct { Retval int32 @@ -259,28 +284,28 @@ func (*TapModifyReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// TapDelete represents the VPP binary API message 'tap_delete'. +// TapDelete represents VPP binary API message 'tap_delete': // -// "tap_delete", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// { -// "crc": "0x529cb13f" -// } +// "tap_delete", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// { +// "crc": "0x529cb13f" +// } // type TapDelete struct { SwIfIndex uint32 @@ -296,24 +321,24 @@ func (*TapDelete) GetMessageType() api.MessageType { return api.RequestMessage } -// TapDeleteReply represents the VPP binary API message 'tap_delete_reply'. +// TapDeleteReply represents VPP binary API message 'tap_delete_reply': // -// "tap_delete_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// { -// "crc": "0xe8d4e804" -// } +// "tap_delete_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// { +// "crc": "0xe8d4e804" +// } // type TapDeleteReply struct { Retval int32 @@ -329,24 +354,24 @@ func (*TapDeleteReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// SwInterfaceTapDump represents the VPP binary API message 'sw_interface_tap_dump'. +// SwInterfaceTapDump represents VPP binary API message 'sw_interface_tap_dump': // -// "sw_interface_tap_dump", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// "sw_interface_tap_dump", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type SwInterfaceTapDump struct{} @@ -360,29 +385,29 @@ func (*SwInterfaceTapDump) GetMessageType() api.MessageType { return api.RequestMessage } -// SwInterfaceTapDetails represents the VPP binary API message 'sw_interface_tap_details'. +// SwInterfaceTapDetails represents VPP binary API message 'sw_interface_tap_details': // -// "sw_interface_tap_details", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "sw_if_index" -// ], -// [ -// "u8", -// "dev_name", -// 64 -// ], -// { -// "crc": "0x76229a57" -// } +// "sw_interface_tap_details", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "sw_if_index" +// ], +// [ +// "u8", +// "dev_name", +// 64 +// ], +// { +// "crc": "0x76229a57" +// } // type SwInterfaceTapDetails struct { SwIfIndex uint32 @@ -399,15 +424,6 @@ func (*SwInterfaceTapDetails) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - DumpSwInterfaceTap(*SwInterfaceTapDump) (*SwInterfaceTapDetails, error) - TapConnect(*TapConnect) (*TapConnectReply, error) - TapDelete(*TapDelete) (*TapDeleteReply, error) - TapModify(*TapModify) (*TapModifyReply, error) -} - func init() { api.RegisterMessage((*TapConnect)(nil), "tap.TapConnect") api.RegisterMessage((*TapConnectReply)(nil), "tap.TapConnectReply") diff --git a/examples/bin_api/vpe.api.json b/examples/bin_api/vpe.api.json index 9f973af..edefd20 100644 --- a/examples/bin_api/vpe.api.json +++ b/examples/bin_api/vpe.api.json @@ -295,6 +295,52 @@ "crc": "0x8b5a13b4" } ], + [ + "show_threads", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "client_index" + ], + [ + "u32", + "context" + ], + { + "crc": "0x51077d14" + } + ], + [ + "show_threads_reply", + [ + "u16", + "_vl_msg_id" + ], + [ + "u32", + "context" + ], + [ + "i32", + "retval" + ], + [ + "u32", + "count" + ], + [ + "vl_api_thread_data_t", + "thread_data", + 0, + "count" + ], + { + "crc": "0x6942fb35" + } + ], [ "get_node_graph", [ @@ -386,7 +432,7 @@ } ] ], - "vl_api_version": "0x9a1baa50", + "vl_api_version": "0x3ce489e", "unions": [], "services": { "cli_inband": { @@ -407,6 +453,9 @@ "get_next_index": { "reply": "get_next_index_reply" }, + "show_threads": { + "reply": "show_threads_reply" + }, "add_node_next": { "reply": "add_node_next_reply" }, @@ -415,5 +464,43 @@ } }, "enums": [], - "types": [] + "types": [ + [ + "thread_data", + [ + "u32", + "id" + ], + [ + "u8", + "name", + 64 + ], + [ + "u8", + "type", + 64 + ], + [ + "u32", + "pid" + ], + [ + "u32", + "cpu_id" + ], + [ + "u32", + "core" + ], + [ + "u32", + "cpu_socket" + ], + { + "crc": "0x0f57094e" + } + ] + ], + "aliases": {} } diff --git a/examples/bin_api/vpe/vpe.ba.go b/examples/bin_api/vpe/vpe.ba.go index fe0fa03..48925ac 100644 --- a/examples/bin_api/vpe/vpe.ba.go +++ b/examples/bin_api/vpe/vpe.ba.go @@ -5,8 +5,9 @@ Package vpe is a generated from VPP binary API module 'vpe'. It contains following objects: - 16 messages - 8 services + 18 messages + 1 type + 9 services */ package vpe @@ -20,26 +21,95 @@ var _ = api.RegisterMessage var _ = struc.Pack var _ = bytes.NewBuffer +// Services represents VPP binary API services: +// +// "services": { +// "cli_inband": { +// "reply": "cli_inband_reply" +// }, +// "get_node_index": { +// "reply": "get_node_index_reply" +// }, +// "cli": { +// "reply": "cli_reply" +// }, +// "show_version": { +// "reply": "show_version_reply" +// }, +// "get_node_graph": { +// "reply": "get_node_graph_reply" +// }, +// "get_next_index": { +// "reply": "get_next_index_reply" +// }, +// "show_threads": { +// "reply": "show_threads_reply" +// }, +// "add_node_next": { +// "reply": "add_node_next_reply" +// }, +// "control_ping": { +// "reply": "control_ping_reply" +// } +// }, +// +type Services interface { + AddNodeNext(*AddNodeNext) (*AddNodeNextReply, error) + Cli(*Cli) (*CliReply, error) + CliInband(*CliInband) (*CliInbandReply, error) + ControlPing(*ControlPing) (*ControlPingReply, error) + GetNextIndex(*GetNextIndex) (*GetNextIndexReply, error) + GetNodeGraph(*GetNodeGraph) (*GetNodeGraphReply, error) + GetNodeIndex(*GetNodeIndex) (*GetNodeIndexReply, error) + ShowThreads(*ShowThreads) (*ShowThreadsReply, error) + ShowVersion(*ShowVersion) (*ShowVersionReply, error) +} + +/* Types */ + +// ThreadData represents VPP binary API type 'thread_data': +// +// "thread_data", +// 0, +// "count" +// +type ThreadData struct { + ID uint32 + Name []byte `struc:"[64]byte"` + Type []byte `struc:"[64]byte"` + PID uint32 + CPUID uint32 + Core uint32 + CPUSocket uint32 +} + +func (*ThreadData) GetTypeName() string { + return "thread_data" +} +func (*ThreadData) GetCrcString() string { + return "0f57094e" +} + /* Messages */ -// ControlPing represents the VPP binary API message 'control_ping'. -// -// "control_ping", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ControlPing represents VPP binary API message 'control_ping': +// +// "control_ping", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ControlPing struct{} @@ -53,32 +123,32 @@ func (*ControlPing) GetMessageType() api.MessageType { return api.RequestMessage } -// ControlPingReply represents the VPP binary API message 'control_ping_reply'. -// -// "control_ping_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "vpe_pid" -// ], -// { -// "crc": "0xf6b0b8ca" -// } +// ControlPingReply represents VPP binary API message 'control_ping_reply': +// +// "control_ping_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "vpe_pid" +// ], +// { +// "crc": "0xf6b0b8ca" +// } // type ControlPingReply struct { Retval int32 @@ -96,28 +166,28 @@ func (*ControlPingReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// Cli represents the VPP binary API message 'cli'. -// -// "cli", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u64", -// "cmd_in_shmem" -// ], -// { -// "crc": "0x23bfbfff" -// } +// Cli represents VPP binary API message 'cli': +// +// "cli", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u64", +// "cmd_in_shmem" +// ], +// { +// "crc": "0x23bfbfff" +// } // type Cli struct { CmdInShmem uint64 @@ -133,34 +203,34 @@ func (*Cli) GetMessageType() api.MessageType { return api.RequestMessage } -// CliInband represents the VPP binary API message 'cli_inband'. -// -// "cli_inband", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u32", -// "length" -// ], -// [ -// "u8", -// "cmd", -// 0, -// "length" -// ], -// { -// "crc": "0x74e00a49" -// } +// CliInband represents VPP binary API message 'cli_inband': +// +// "cli_inband", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u32", +// "length" +// ], +// [ +// "u8", +// "cmd", +// 0, +// "length" +// ], +// { +// "crc": "0x74e00a49" +// } // type CliInband struct { Length uint32 `struc:"sizeof=Cmd"` @@ -177,28 +247,28 @@ func (*CliInband) GetMessageType() api.MessageType { return api.RequestMessage } -// CliReply represents the VPP binary API message 'cli_reply'. -// -// "cli_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u64", -// "reply_in_shmem" -// ], -// { -// "crc": "0x06d68297" -// } +// CliReply represents VPP binary API message 'cli_reply': +// +// "cli_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u64", +// "reply_in_shmem" +// ], +// { +// "crc": "0x06d68297" +// } // type CliReply struct { Retval int32 @@ -215,34 +285,34 @@ func (*CliReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// CliInbandReply represents the VPP binary API message 'cli_inband_reply'. -// -// "cli_inband_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "length" -// ], -// [ -// "u8", -// "reply", -// 0, -// "length" -// ], -// { -// "crc": "0x1f22bbb8" -// } +// CliInbandReply represents VPP binary API message 'cli_inband_reply': +// +// "cli_inband_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "length" +// ], +// [ +// "u8", +// "reply", +// 0, +// "length" +// ], +// { +// "crc": "0x1f22bbb8" +// } // type CliInbandReply struct { Retval int32 @@ -260,29 +330,29 @@ func (*CliInbandReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// GetNodeIndex represents the VPP binary API message 'get_node_index'. -// -// "get_node_index", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "node_name", -// 64 -// ], -// { -// "crc": "0x6c9a495d" -// } +// GetNodeIndex represents VPP binary API message 'get_node_index': +// +// "get_node_index", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "node_name", +// 64 +// ], +// { +// "crc": "0x6c9a495d" +// } // type GetNodeIndex struct { NodeName []byte `struc:"[64]byte"` @@ -298,28 +368,28 @@ func (*GetNodeIndex) GetMessageType() api.MessageType { return api.RequestMessage } -// GetNodeIndexReply represents the VPP binary API message 'get_node_index_reply'. -// -// "get_node_index_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "node_index" -// ], -// { -// "crc": "0xa8600b89" -// } +// GetNodeIndexReply represents VPP binary API message 'get_node_index_reply': +// +// "get_node_index_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "node_index" +// ], +// { +// "crc": "0xa8600b89" +// } // type GetNodeIndexReply struct { Retval int32 @@ -336,34 +406,34 @@ func (*GetNodeIndexReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// AddNodeNext represents the VPP binary API message 'add_node_next'. -// -// "add_node_next", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "node_name", -// 64 -// ], -// [ -// "u8", -// "next_name", -// 64 -// ], -// { -// "crc": "0x9ab92f7a" -// } +// AddNodeNext represents VPP binary API message 'add_node_next': +// +// "add_node_next", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "node_name", +// 64 +// ], +// [ +// "u8", +// "next_name", +// 64 +// ], +// { +// "crc": "0x9ab92f7a" +// } // type AddNodeNext struct { NodeName []byte `struc:"[64]byte"` @@ -380,28 +450,28 @@ func (*AddNodeNext) GetMessageType() api.MessageType { return api.RequestMessage } -// AddNodeNextReply represents the VPP binary API message 'add_node_next_reply'. -// -// "add_node_next_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "next_index" -// ], -// { -// "crc": "0x2ed75f32" -// } +// AddNodeNextReply represents VPP binary API message 'add_node_next_reply': +// +// "add_node_next_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "next_index" +// ], +// { +// "crc": "0x2ed75f32" +// } // type AddNodeNextReply struct { Retval int32 @@ -418,24 +488,24 @@ func (*AddNodeNextReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// ShowVersion represents the VPP binary API message 'show_version'. -// -// "show_version", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ShowVersion represents VPP binary API message 'show_version': +// +// "show_version", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type ShowVersion struct{} @@ -449,44 +519,44 @@ func (*ShowVersion) GetMessageType() api.MessageType { return api.RequestMessage } -// ShowVersionReply represents the VPP binary API message 'show_version_reply'. -// -// "show_version_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u8", -// "program", -// 32 -// ], -// [ -// "u8", -// "version", -// 32 -// ], -// [ -// "u8", -// "build_date", -// 32 -// ], -// [ -// "u8", -// "build_directory", -// 256 -// ], -// { -// "crc": "0x8b5a13b4" -// } +// ShowVersionReply represents VPP binary API message 'show_version_reply': +// +// "show_version_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u8", +// "program", +// 32 +// ], +// [ +// "u8", +// "version", +// 32 +// ], +// [ +// "u8", +// "build_date", +// 32 +// ], +// [ +// "u8", +// "build_directory", +// 256 +// ], +// { +// "crc": "0x8b5a13b4" +// } // type ShowVersionReply struct { Retval int32 @@ -506,24 +576,100 @@ func (*ShowVersionReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// GetNodeGraph represents the VPP binary API message 'get_node_graph'. -// -// "get_node_graph", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// { -// "crc": "0x51077d14" -// } +// ShowThreads represents VPP binary API message 'show_threads': +// +// "show_threads", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } +// +type ShowThreads struct{} + +func (*ShowThreads) GetMessageName() string { + return "show_threads" +} +func (*ShowThreads) GetCrcString() string { + return "51077d14" +} +func (*ShowThreads) GetMessageType() api.MessageType { + return api.RequestMessage +} + +// ShowThreadsReply represents VPP binary API message 'show_threads_reply': +// +// "show_threads_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "count" +// ], +// [ +// "vl_api_thread_data_t", +// "thread_data", +// 0, +// "count" +// ], +// { +// "crc": "0x6942fb35" +// } +// +type ShowThreadsReply struct { + Retval int32 + Count uint32 `struc:"sizeof=ThreadData"` + ThreadData []ThreadData +} + +func (*ShowThreadsReply) GetMessageName() string { + return "show_threads_reply" +} +func (*ShowThreadsReply) GetCrcString() string { + return "6942fb35" +} +func (*ShowThreadsReply) GetMessageType() api.MessageType { + return api.ReplyMessage +} + +// GetNodeGraph represents VPP binary API message 'get_node_graph': +// +// "get_node_graph", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// { +// "crc": "0x51077d14" +// } // type GetNodeGraph struct{} @@ -537,28 +683,28 @@ func (*GetNodeGraph) GetMessageType() api.MessageType { return api.RequestMessage } -// GetNodeGraphReply represents the VPP binary API message 'get_node_graph_reply'. -// -// "get_node_graph_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u64", -// "reply_in_shmem" -// ], -// { -// "crc": "0x06d68297" -// } +// GetNodeGraphReply represents VPP binary API message 'get_node_graph_reply': +// +// "get_node_graph_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u64", +// "reply_in_shmem" +// ], +// { +// "crc": "0x06d68297" +// } // type GetNodeGraphReply struct { Retval int32 @@ -575,34 +721,34 @@ func (*GetNodeGraphReply) GetMessageType() api.MessageType { return api.ReplyMessage } -// GetNextIndex represents the VPP binary API message 'get_next_index'. -// -// "get_next_index", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "client_index" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "u8", -// "node_name", -// 64 -// ], -// [ -// "u8", -// "next_name", -// 64 -// ], -// { -// "crc": "0x9ab92f7a" -// } +// GetNextIndex represents VPP binary API message 'get_next_index': +// +// "get_next_index", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "client_index" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "u8", +// "node_name", +// 64 +// ], +// [ +// "u8", +// "next_name", +// 64 +// ], +// { +// "crc": "0x9ab92f7a" +// } // type GetNextIndex struct { NodeName []byte `struc:"[64]byte"` @@ -619,28 +765,28 @@ func (*GetNextIndex) GetMessageType() api.MessageType { return api.RequestMessage } -// GetNextIndexReply represents the VPP binary API message 'get_next_index_reply'. -// -// "get_next_index_reply", -// [ -// "u16", -// "_vl_msg_id" -// ], -// [ -// "u32", -// "context" -// ], -// [ -// "i32", -// "retval" -// ], -// [ -// "u32", -// "next_index" -// ], -// { -// "crc": "0x2ed75f32" -// } +// GetNextIndexReply represents VPP binary API message 'get_next_index_reply': +// +// "get_next_index_reply", +// [ +// "u16", +// "_vl_msg_id" +// ], +// [ +// "u32", +// "context" +// ], +// [ +// "i32", +// "retval" +// ], +// [ +// "u32", +// "next_index" +// ], +// { +// "crc": "0x2ed75f32" +// } // type GetNextIndexReply struct { Retval int32 @@ -657,19 +803,6 @@ func (*GetNextIndexReply) GetMessageType() api.MessageType { return api.ReplyMessage } -/* Services */ - -type Services interface { - AddNodeNext(*AddNodeNext) (*AddNodeNextReply, error) - Cli(*Cli) (*CliReply, error) - CliInband(*CliInband) (*CliInbandReply, error) - ControlPing(*ControlPing) (*ControlPingReply, error) - GetNextIndex(*GetNextIndex) (*GetNextIndexReply, error) - GetNodeGraph(*GetNodeGraph) (*GetNodeGraphReply, error) - GetNodeIndex(*GetNodeIndex) (*GetNodeIndexReply, error) - ShowVersion(*ShowVersion) (*ShowVersionReply, error) -} - func init() { api.RegisterMessage((*ControlPing)(nil), "vpe.ControlPing") api.RegisterMessage((*ControlPingReply)(nil), "vpe.ControlPingReply") @@ -683,6 +816,8 @@ func init() { api.RegisterMessage((*AddNodeNextReply)(nil), "vpe.AddNodeNextReply") api.RegisterMessage((*ShowVersion)(nil), "vpe.ShowVersion") api.RegisterMessage((*ShowVersionReply)(nil), "vpe.ShowVersionReply") + api.RegisterMessage((*ShowThreads)(nil), "vpe.ShowThreads") + api.RegisterMessage((*ShowThreadsReply)(nil), "vpe.ShowThreadsReply") api.RegisterMessage((*GetNodeGraph)(nil), "vpe.GetNodeGraph") api.RegisterMessage((*GetNodeGraphReply)(nil), "vpe.GetNodeGraphReply") api.RegisterMessage((*GetNextIndex)(nil), "vpe.GetNextIndex") diff --git a/examples/cmd/union-example/union_example.go b/examples/cmd/union-example/union_example.go index bb6c8a1..0f801d2 100644 --- a/examples/cmd/union-example/union_example.go +++ b/examples/cmd/union-example/union_example.go @@ -26,7 +26,7 @@ import ( func main() { // create union with IPv4 address var unionIP4 ip.AddressUnion - unionIP4.SetIP4(ip.IP4Address{Address: []byte{192, 168, 1, 10}}) + unionIP4.SetIP4(ip.IP4Address{192, 168, 1, 10}) // use it in the Address type addr := &ip.Address{ -- cgit 1.2.3-korg