Update examples, tests and testdata after binapi-generator update. 44/10244/1
authorMilan Lenco <milan.lenco@pantheon.tech>
Thu, 25 Jan 2018 09:15:48 +0000 (10:15 +0100)
committerMilan Lenco <milan.lenco@pantheon.tech>
Thu, 25 Jan 2018 09:15:48 +0000 (10:15 +0100)
Change-Id: I738d501cbbb6673010a32847df3f1c87050b8d36
Signed-off-by: Milan Lenco <milan.lenco@pantheon.tech>
22 files changed:
cmd/binapi-generator/generator_test.go
cmd/binapi-generator/testdata/acl.api.json
cmd/binapi-generator/testdata/af_packet.api.json
cmd/binapi-generator/testdata/ip.api.json
core/bin_api/vpe.api.json
core/bin_api/vpe/vpe.go
core/core_test.go
examples/bin_api/acl.api.json
examples/bin_api/acl/acl.go
examples/bin_api/af_packet.api.json
examples/bin_api/af_packet/af_packet.go
examples/bin_api/interface.api.json
examples/bin_api/interfaces/interfaces.go
examples/bin_api/ip.api.json
examples/bin_api/ip/ip.go
examples/bin_api/memif.api.json
examples/bin_api/memif/memif.go
examples/bin_api/stats.api.json [new file with mode: 0644]
examples/bin_api/stats/stats.go [new file with mode: 0644]
examples/bin_api/tap.api.json
examples/bin_api/tap/tap.go
examples/cmd/stats-client/stats_client.go

index a42e794..1fcbb66 100644 (file)
@@ -120,7 +120,7 @@ func TestReadJson(t *testing.T) {
        result, err := parseJSON(inputData)
        Expect(err).ShouldNot(HaveOccurred())
        Expect(result).ToNot(BeNil())
-       Expect(result.Len()).To(BeEquivalentTo(3))
+       Expect(result.Len()).To(BeEquivalentTo(5))
 }
 
 func TestReadJsonError(t *testing.T) {
@@ -255,8 +255,9 @@ func TestGenerateMessageFieldTypes(t *testing.T) {
 
 func TestGenerateMessageFieldMessages(t *testing.T) {
        // expected results according to acl.api.json in testdata
-       expectedTypes := []string{"\tMajor uint32", "\tMinor uint32", "\tACLIndex uint32",
-               "\tTag []byte   `struc:\"[64]byte\"`", "\tACLIndex uint32", "\tRetval int32", "\tACLIndex uint32"}
+       expectedFields := []string{"\tMajor uint32", "\tMinor uint32", "\tRetval int32",
+               "\tVpePid uint32", "\tACLIndex uint32", "\tTag []byte   `struc:\"[64]byte\"`",
+               "\tCount uint32"}
        RegisterTestingT(t)
        // prepare context
        testCtx := new(context)
@@ -269,7 +270,7 @@ func TestGenerateMessageFieldMessages(t *testing.T) {
        Expect(err).ShouldNot(HaveOccurred())
        Expect(inFile).ToNot(BeNil())
 
-       // test types
+       // test message fields
        messages := inFile.Map("messages")
        customIndex := 0
        fields := make([]string, 0)
@@ -284,8 +285,12 @@ func TestGenerateMessageFieldMessages(t *testing.T) {
                                }
                                err := processMessageField(testCtx, &fields, field, false)
                                Expect(err).ShouldNot(HaveOccurred())
-                               Expect(fields[customIndex]).To(BeEquivalentTo(expectedTypes[customIndex]))
+                               Expect(fields[customIndex]).To(BeEquivalentTo(expectedFields[customIndex]))
                                customIndex++
+                               if customIndex >= len(expectedFields) {
+                                       /* there is too much fields now for one UT... */
+                                       return
+                               }
                        }
                }
        }
index 91d3d2f..4c6653c 100644 (file)
 {
-    "types" : [
-        ["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" : "0x2715e1c0"}
-        ],
-        ["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" : "0x6723f13e"}
-        ]
+    "services": [
+        {
+            "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_get_version": {
+                "reply": "acl_plugin_get_version_reply"
+            }
+        },
+        {
+            "macip_acl_interface_add_del": {
+                "reply": "macip_acl_interface_add_del_reply"
+            }
+        },
+        {
+            "acl_interface_set_acl_list": {
+                "reply": "acl_interface_set_acl_list_reply"
+            }
+        },
+        {
+            "acl_dump": {
+                "reply": "acl_details",
+                "stream": true
+            }
+        },
+        {
+            "acl_interface_list_dump": {
+                "reply": "acl_interface_list_details",
+                "stream": true
+            }
+        },
+        {
+            "macip_acl_interface_list_dump": {
+                "reply": "macip_acl_interface_list_details",
+                "stream": true
+            }
+        },
+        {
+            "acl_add_replace": {
+                "reply": "acl_add_replace_reply"
+            }
+        },
+        {
+            "acl_plugin_control_ping": {
+                "reply": "acl_plugin_control_ping_reply"
+            }
+        },
+        {
+            "macip_acl_interface_get": {
+                "reply": "macip_acl_interface_get_reply"
+            }
+        },
+        {
+            "macip_acl_add": {
+                "reply": "macip_acl_add_reply"
+            }
+        },
+        {
+            "macip_acl_add_replace": {
+                "reply": "macip_acl_add_replace_reply"
+            }
+        },
+        {
+            "macip_acl_dump": {
+                "reply": "macip_acl_details",
+                "stream": true
+            }
+        }
     ],
-    "messages" : [
-        ["acl_plugin_get_version",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xd7c07748"}
-        ],
-        ["acl_plugin_get_version_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "major"],
-            ["u32", "minor"],
-            {"crc" : "0x43eb59a5"}
-        ],
-        ["acl_add_replace",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            ["u8", "tag", 64],
-            {"crc" : "0x3c317936"}
-        ],
-        ["acl_add_replace_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            ["i32", "retval"],
-            {"crc" : "0xa5e6d0cf"}
-        ],
-        ["acl_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            {"crc" : "0x82cc30ed"}
+    "vl_api_version": "0x1db2ece9",
+    "enums": [],
+    "messages": [
+        [
+            "acl_plugin_get_version",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "acl_plugin_get_version_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "major"
+            ],
+            [
+                "u32",
+                "minor"
+            ],
+            {
+                "crc": "0x9b32cf86"
+            }
+        ],
+        [
+            "acl_plugin_control_ping",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "acl_plugin_control_ping_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "vpe_pid"
+            ],
+            {
+                "crc": "0xf6b0b8ca"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_add_replace_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "acl_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "acl_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_set_acl_list_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "acl_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_list_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_add_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_add_replace_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "macip_acl_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "macip_acl_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "macip_acl_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_interface_get",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "macip_acl_interface_get_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "u32",
+                "acls",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0xaccf9b05"
+            }
+        ],
+        [
+            "macip_acl_interface_list_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "macip_acl_interface_list_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "count"
+            ],
+            [
+                "u32",
+                "acls",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x29783fa0"
+            }
         ]
     ],
-"vl_api_version" :"0x3cd02d84"
+    "types": [
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ]
+    ]
 }
index 211fc3e..81ee2f9 100644 (file)
 {
-    "types" : [
-
+    "services": [
+        {
+            "af_packet_delete": {
+                "reply": "af_packet_delete_reply"
+            }
+        },
+        {
+            "af_packet_create": {
+                "reply": "af_packet_create_reply"
+            }
+        },
+        {
+            "af_packet_set_l4_cksum_offload": {
+                "reply": "af_packet_set_l4_cksum_offload_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["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" : "0x92768640"}
+    "vl_api_version": "0x8957ca8b",
+    "enums": [],
+    "messages": [
+        [
+            "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_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x718bac92"}
+        [
+            "af_packet_create_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
         ],
-        ["af_packet_delete",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "host_if_name", 64],
-            {"crc" : "0xc063ce85"}
+        [
+            "af_packet_delete",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "host_if_name",
+                64
+            ],
+            {
+                "crc": "0x3efceda3"
+            }
         ],
-        ["af_packet_delete_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x1a80431a"}
+        [
+            "af_packet_delete_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ]
     ],
-"vl_api_version" :"0x4ca71f33"
+    "types": []
 }
index 970ec4b..530b6d6 100644 (file)
 {
-    "types" : [
-        ["fib_path",
-            ["u32", "sw_if_index"],
-            ["u32", "weight"],
-            ["u8", "is_local"],
-            ["u8", "is_drop"],
-            ["u8", "is_unreach"],
-            ["u8", "is_prohibit"],
-            ["u8", "afi"],
-            ["u8", "next_hop", 16],
-            {"crc" : "0x315b1889"}
-        ]
+    "services": [
+        {
+            "ip_source_and_port_range_check_add_del": {
+                "reply": "ip_source_and_port_range_check_add_del_reply"
+            }
+        },
+        {
+            "ip6_fib_dump": {
+                "reply": "ip6_fib_details",
+                "stream": true
+            }
+        },
+        {
+            "want_ip6_nd_events": {
+                "reply": "want_ip6_nd_events_reply"
+            }
+        },
+        {
+            "ip_punt_police": {
+                "reply": "ip_punt_police_reply"
+            }
+        },
+        {
+            "set_arp_neighbor_limit": {
+                "reply": "set_arp_neighbor_limit_reply"
+            }
+        },
+        {
+            "ip6nd_proxy_add_del": {
+                "reply": "ip6nd_proxy_add_del_reply"
+            }
+        },
+        {
+            "ioam_disable": {
+                "reply": "ioam_disable_reply"
+            }
+        },
+        {
+            "ip_table_add_del": {
+                "reply": "ip_table_add_del_reply"
+            }
+        },
+        {
+            "ip_neighbor_dump": {
+                "reply": "ip_neighbor_details",
+                "stream": true
+            }
+        },
+        {
+            "ip4_arp_event": {
+                "reply": null
+            }
+        },
+        {
+            "ip_punt_redirect": {
+                "reply": "ip_punt_redirect_reply"
+            }
+        },
+        {
+            "sw_interface_ip6nd_ra_prefix": {
+                "reply": "sw_interface_ip6nd_ra_prefix_reply"
+            }
+        },
+        {
+            "reset_fib": {
+                "reply": "reset_fib_reply"
+            }
+        },
+        {
+            "ip6_mfib_dump": {
+                "reply": "ip6_mfib_details",
+                "stream": true
+            }
+        },
+        {
+            "sw_interface_ip6nd_ra_config": {
+                "reply": "sw_interface_ip6nd_ra_config_reply"
+            }
+        },
+        {
+            "sw_interface_ip6_enable_disable": {
+                "reply": "sw_interface_ip6_enable_disable_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_container_proxy_add_del": {
+                "reply": "ip_container_proxy_add_del_reply"
+            }
+        },
+        {
+            "ip_mfib_dump": {
+                "reply": "ip_mfib_details",
+                "stream": true
+            }
+        },
+        {
+            "ip_address_dump": {
+                "reply": "ip_address_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
+            }
+        },
+        {
+            "ip_fib_dump": {
+                "reply": "ip_fib_details",
+                "stream": true
+            }
+        },
+        {
+            "want_ip4_arp_events": {
+                "reply": "want_ip4_arp_events_reply"
+            }
+        },
+        {
+            "ioam_enable": {
+                "reply": "ioam_enable_reply"
+            }
+        },
+        {
+            "ip6_nd_event": {
+                "reply": null
+            }
+        },
+        {
+            "ip_mroute_add_del": {
+                "reply": "ip_mroute_add_del_reply"
+            }
+        },
+        {
+            "ip_source_and_port_range_check_interface_add_del": {
+                "reply": "ip_source_and_port_range_check_interface_add_del_reply"
+            }
+        },
+        {
+            "set_ip_flow_hash": {
+                "reply": "set_ip_flow_hash_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["ip_fib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x5fe56ca3"}
-        ],
-        ["ip_fib_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "table_id"],
-            ["u8", "address_length"],
-            ["u8", "address", 4],
-            ["u32", "count"],
-            ["vl_api_fib_path_t", "path", 0, "count"],
-            {"crc" : "0xfd8c6584"}
-        ],
-        ["ip6_fib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x25c89676"}
-        ],
-        ["ip6_fib_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "table_id"],
-            ["u8", "address_length"],
-            ["u8", "address", 16],
-            ["u32", "count"],
-            ["vl_api_fib_path_t", "path", 0, "count"],
-            {"crc" : "0xe0825cb5"}
-        ],
-        ["ip_neighbor_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x3289e160"}
-        ],
-        ["ip_neighbor_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u8", "is_static"],
-            ["u8", "is_ipv6"],
-            ["u8", "mac_address", 6],
-            ["u8", "ip_address", 16],
-            {"crc" : "0x3a00e32a"}
-        ],
-        ["ip_neighbor_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "vrf_id"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_add"],
-            ["u8", "is_ipv6"],
-            ["u8", "is_static"],
-            ["u8", "mac_address", 6],
-            ["u8", "dst_address", 16],
-            {"crc" : "0x66f2112c"}
-        ],
-        ["ip_neighbor_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xe5b0f318"}
-        ],
-        ["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" : "0x92ad3798"}
-        ],
-        ["set_ip_flow_hash_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x35a9e5eb"}
-        ],
-        ["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" : "0xec4a29f6"}
-        ],
-        ["sw_interface_ip6nd_ra_config_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x16e25c5b"}
-        ],
-        ["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" : "0x5db6555c"}
-        ],
-        ["sw_interface_ip6nd_ra_prefix_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8050adb3"}
-        ],
-        ["sw_interface_ip6_enable_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable"],
-            {"crc" : "0x4a4e5405"}
-        ],
-        ["sw_interface_ip6_enable_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xeb8b4a40"}
-        ],
-        ["sw_interface_ip6_set_link_local_address",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "address", 16],
-            {"crc" : "0x3db6d52b"}
-        ],
-        ["sw_interface_ip6_set_link_local_address_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x0a781e17"}
-        ],
-        ["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"],
-            ["u8", "create_vrf_if_needed"],
-            ["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", "not_last"],
-            ["u8", "next_hop_weight"],
-            ["u8", "dst_address_length"],
-            ["u8", "dst_address", 16],
-            ["u8", "next_hop_address", 16],
-            ["u8", "next_hop_n_out_labels"],
-            ["u32", "next_hop_via_label"],
-            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
-            {"crc" : "0xa0ab24bf"}
-        ],
-        ["ip_add_del_route_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xea57492b"}
-        ],
-        ["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"],
-            ["u16", "grp_address_length"],
-            ["u8", "create_vrf_if_needed"],
-            ["u8", "is_add"],
-            ["u8", "is_ipv6"],
-            ["u8", "is_local"],
-            ["u8", "grp_address", 16],
-            ["u8", "src_address", 16],
-            {"crc" : "0x8312830f"}
-        ],
-        ["ip_mroute_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8cabe02c"}
-        ],
-        ["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" : "0x190d4266"}
-        ],
-        ["ip_address_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x632e859a"}
-        ],
-        ["ip_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "sw_if_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x695c8227"}
-        ],
-        ["ip_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x3c1e33e0"}
-        ],
-        ["mfib_signal_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xbbbbd40d"}
-        ],
-        ["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" : "0x6ba92c72"}
+    "vl_api_version": "0xb395c625",
+    "enums": [],
+    "messages": [
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_table_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_fib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6_fib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_neighbor_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x6b7bcd0a"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_neighbor_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "set_ip_flow_hash_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_ip6nd_ra_config_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_ip6nd_ra_prefix_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6nd_proxy_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip6nd_proxy_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "address",
+                16
+            ],
+            {
+                "crc": "0xd73bf1ab"
+            }
+        ],
+        [
+            "ip6nd_proxy_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "sw_interface_ip6_enable_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "enable"
+            ],
+            {
+                "crc": "0xa36fadc0"
+            }
+        ],
+        [
+            "sw_interface_ip6_enable_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "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",
+            [
+                "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"
+            ],
+            [
+                "u32",
+                "next_hop_out_label_stack",
+                0,
+                "next_hop_n_out_labels"
+            ],
+            {
+                "crc": "0xc85f8290"
+            }
+        ],
+        [
+            "ip_add_del_route_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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
+            ],
+            {
+                "crc": "0xc37112f7"
+            }
+        ],
+        [
+            "ip_mroute_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_mfib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6_mfib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_address_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x6b7bcd0a"
+            }
+        ],
+        [
+            "ip_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x452ffc5a"
+            }
+        ],
+        [
+            "ip_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0xde883da4"
+            }
+        ],
+        [
+            "mfib_signal_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_punt_police",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "policer_index"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "is_ip6"
+            ],
+            {
+                "crc": "0x38691592"
+            }
+        ],
+        [
+            "ip_punt_police_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_punt_redirect",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "rx_sw_if_index"
+            ],
+            [
+                "u32",
+                "tx_sw_if_index"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "is_ip6"
+            ],
+            [
+                "u8",
+                "nh",
+                16
+            ],
+            {
+                "crc": "0x996b6603"
+            }
+        ],
+        [
+            "ip_punt_redirect_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_container_proxy_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_source_and_port_range_check_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_source_and_port_range_check_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip4_arp_events",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            [
+                "u32",
+                "address"
+            ],
+            {
+                "crc": "0x77e06379"
+            }
+        ],
+        [
+            "want_ip4_arp_events_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "want_ip6_nd_events",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            [
+                "u8",
+                "address",
+                16
+            ],
+            {
+                "crc": "0x1cf65fbb"
+            }
+        ],
+        [
+            "want_ip6_nd_events_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "proxy_arp_add_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "low_address",
+                4
+            ],
+            [
+                "u8",
+                "hi_address",
+                4
+            ],
+            {
+                "crc": "0xc2442918"
+            }
+        ],
+        [
+            "proxy_arp_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "proxy_arp_intfc_enable_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            {
+                "crc": "0x69d24598"
+            }
+        ],
+        [
+            "proxy_arp_intfc_enable_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "reset_fib",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x8553ebd9"
+            }
+        ],
+        [
+            "reset_fib_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "set_arp_neighbor_limit",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            [
+                "u32",
+                "arp_neighbor_limit"
+            ],
+            {
+                "crc": "0x97d01fd6"
+            }
+        ],
+        [
+            "set_arp_neighbor_limit_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ioam_enable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ioam_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u16",
+                "id"
+            ],
+            {
+                "crc": "0x6b16a45e"
+            }
+        ],
+        [
+            "ioam_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ]
     ],
-"vl_api_version" :"0x6a819870"
+    "types": [
+        [
+            "fib_path",
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "table_id"
+            ],
+            [
+                "u8",
+                "weight"
+            ],
+            [
+                "u8",
+                "preference"
+            ],
+            [
+                "u8",
+                "is_local"
+            ],
+            [
+                "u8",
+                "is_drop"
+            ],
+            [
+                "u8",
+                "is_unreach"
+            ],
+            [
+                "u8",
+                "is_prohibit"
+            ],
+            [
+                "u8",
+                "afi"
+            ],
+            [
+                "u8",
+                "next_hop",
+                16
+            ],
+            {
+                "crc": "0xcd899e0a"
+            }
+        ]
+    ]
 }
index 1744e9c..d87d012 100644 (file)
 {
-    "types" : [
-        ["ip4_fib_counter",
-            ["u32", "address"],
-            ["u8", "address_length"],
-            ["u64", "packets"],
-            ["u64", "bytes"],
-            {"crc" : "0xb2739495"}
-        ],
-        ["ip4_nbr_counter",
-            ["u32", "address"],
-            ["u8", "link_type"],
-            ["u64", "packets"],
-            ["u64", "bytes"],
-            {"crc" : "0x487e2e85"}
-        ],
-        ["ip6_fib_counter",
-            ["u64", "address", 2],
-            ["u8", "address_length"],
-            ["u64", "packets"],
-            ["u64", "bytes"],
-            {"crc" : "0xcf35769b"}
-        ],
-        ["ip6_nbr_counter",
-            ["u64", "address", 2],
-            ["u8", "link_type"],
-            ["u64", "packets"],
-            ["u64", "bytes"],
-            {"crc" : "0xefca741e"}
-        ]
+    "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_next_index": {
+                "reply": "get_next_index_reply"
+            }
+        },
+        {
+            "add_node_next": {
+                "reply": "add_node_next_reply"
+            }
+        },
+        {
+            "get_node_graph": {
+                "reply": "get_node_graph_reply"
+            }
+        },
+        {
+            "control_ping": {
+                "reply": "control_ping_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["create_vlan_subif",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "vlan_id"],
-            {"crc" : "0xaf9ae1e9"}
-        ],
-        ["create_vlan_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x8f36b888"}
-        ],
-        ["sw_interface_set_mpls_enable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable"],
-            {"crc" : "0x37f6357e"}
-        ],
-        ["sw_interface_set_mpls_enable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x5ffd3ca9"}
-        ],
-        ["proxy_arp_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "vrf_id"],
-            ["u8", "is_add"],
-            ["u8", "low_address", 4],
-            ["u8", "hi_address", 4],
-            {"crc" : "0x4bef9951"}
-        ],
-        ["proxy_arp_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8e2d621d"}
-        ],
-        ["proxy_arp_intfc_enable_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable_disable"],
-            {"crc" : "0x3ee1998e"}
-        ],
-        ["proxy_arp_intfc_enable_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x23d273cd"}
-        ],
-        ["reset_vrf",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            ["u32", "vrf_id"],
-            {"crc" : "0xeb07deb0"}
-        ],
-        ["reset_vrf_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x5f283863"}
-        ],
-        ["want_stats",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "enable_disable"],
-            ["u32", "pid"],
-            {"crc" : "0x4f2effb4"}
-        ],
-        ["want_stats_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xb36abf5f"}
-        ],
-        ["vnet_ip4_fib_counters",
-            ["u16", "_vl_msg_id"],
-            ["u32", "vrf_id"],
-            ["u32", "count"],
-            ["vl_api_ip4_fib_counter_t", "c", 0, "count"],
-            {"crc" : "0x1ab9d6c5"}
-        ],
-        ["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" : "0xfc2b5092"}
-        ],
-        ["vnet_ip6_fib_counters",
-            ["u16", "_vl_msg_id"],
-            ["u32", "vrf_id"],
-            ["u32", "count"],
-            ["vl_api_ip6_fib_counter_t", "c", 0, "count"],
-            {"crc" : "0x9ab453ae"}
-        ],
-        ["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" : "0x181b673f"}
-        ],
-        ["vnet_get_summary_stats",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x16435c20"}
-        ],
-        ["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" : "0x675ce280"}
-        ],
-        ["oam_event",
-            ["u16", "_vl_msg_id"],
-            ["u8", "dst_address", 4],
-            ["u8", "state"],
-            {"crc" : "0x4f285ade"}
-        ],
-        ["want_oam_events",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "enable_disable"],
-            ["u32", "pid"],
-            {"crc" : "0x948ef12a"}
-        ],
-        ["want_oam_events_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x266a677d"}
-        ],
-        ["oam_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "vrf_id"],
-            ["u8", "src_address", 4],
-            ["u8", "dst_address", 4],
-            ["u8", "is_add"],
-            {"crc" : "0xb14bc7df"}
-        ],
-        ["oam_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xc5594eec"}
-        ],
-        ["reset_fib",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "vrf_id"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x6f17106b"}
-        ],
-        ["reset_fib_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x990dcbf8"}
-        ],
-        ["create_loopback",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "mac_address", 6],
-            {"crc" : "0xb2602de5"}
-        ],
-        ["create_loopback_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x9520f804"}
-        ],
-        ["create_loopback_instance",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "mac_address", 6],
-            ["u8", "is_specified"],
-            ["u32", "user_instance"],
-            {"crc" : "0x967694f1"}
-        ],
-        ["create_loopback_instance_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xd52c63b6"}
-        ],
-        ["delete_loopback",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xded428b0"}
-        ],
-        ["delete_loopback_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xc91dafa5"}
-        ],
-        ["control_ping",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xea1bf4f7"}
-        ],
-        ["control_ping_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "client_index"],
-            ["u32", "vpe_pid"],
-            {"crc" : "0xaa016e7b"}
-        ],
-        ["cli",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u64", "cmd_in_shmem"],
-            {"crc" : "0x543d8e2e"}
-        ],
-        ["cli_inband",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "length"],
-            ["u8", "cmd", 0, "length"],
-            {"crc" : "0x22345937"}
-        ],
-        ["cli_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u64", "reply_in_shmem"],
-            {"crc" : "0x594a0b2e"}
-        ],
-        ["cli_inband_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "length"],
-            ["u8", "reply", 0, "length"],
-            {"crc" : "0xc1835761"}
-        ],
-        ["set_arp_neighbor_limit",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            ["u32", "arp_neighbor_limit"],
-            {"crc" : "0xc1690cb4"}
-        ],
-        ["set_arp_neighbor_limit_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xa6b30518"}
-        ],
-        ["l2_patch_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "rx_sw_if_index"],
-            ["u32", "tx_sw_if_index"],
-            ["u8", "is_add"],
-            {"crc" : "0x9b10029a"}
-        ],
-        ["l2_patch_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xa85e37be"}
-        ],
-        ["sw_interface_set_vpath",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable"],
-            {"crc" : "0x1bc2fd5e"}
-        ],
-        ["sw_interface_set_vpath_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x828dbe62"}
-        ],
-        ["sw_interface_set_l2_xconnect",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "rx_sw_if_index"],
-            ["u32", "tx_sw_if_index"],
-            ["u8", "enable"],
-            {"crc" : "0x48a4c4c8"}
-        ],
-        ["sw_interface_set_l2_xconnect_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x6e45eed4"}
-        ],
-        ["sw_interface_set_l2_bridge",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "rx_sw_if_index"],
-            ["u32", "bd_id"],
-            ["u8", "shg"],
-            ["u8", "bvi"],
-            ["u8", "enable"],
-            {"crc" : "0x36c739e8"}
-        ],
-        ["sw_interface_set_l2_bridge_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x347e08d9"}
-        ],
-        ["bd_ip_mac_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "bd_id"],
-            ["u8", "is_add"],
-            ["u8", "is_ipv6"],
-            ["u8", "ip_address", 16],
-            ["u8", "mac_address", 6],
-            {"crc" : "0xad819817"}
-        ],
-        ["bd_ip_mac_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x55bab3b4"}
-        ],
-        ["classify_set_interface_ip_table",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            ["u32", "sw_if_index"],
-            ["u32", "table_index"],
-            {"crc" : "0x0dc45308"}
-        ],
-        ["classify_set_interface_ip_table_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xdc391c34"}
-        ],
-        ["classify_set_interface_l2_tables",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "ip4_table_index"],
-            ["u32", "ip6_table_index"],
-            ["u32", "other_table_index"],
-            ["u8", "is_input"],
-            {"crc" : "0xed9ccf0d"}
-        ],
-        ["classify_set_interface_l2_tables_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8df20579"}
-        ],
-        ["get_node_index",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "node_name", 64],
-            {"crc" : "0x226d3f8c"}
-        ],
-        ["get_node_index_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "node_index"],
-            {"crc" : "0x29116865"}
-        ],
-        ["add_node_next",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "node_name", 64],
-            ["u8", "next_name", 64],
-            {"crc" : "0xe4202993"}
-        ],
-        ["add_node_next_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "next_index"],
-            {"crc" : "0xe89d6eed"}
-        ],
-        ["l2_interface_efp_filter",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "enable_disable"],
-            {"crc" : "0x07c9d601"}
-        ],
-        ["l2_interface_efp_filter_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x0f4bb0c0"}
-        ],
-        ["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" : "0x150e6757"}
-        ],
-        ["create_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x92272bcb"}
-        ],
-        ["show_version",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xf18f9480"}
-        ],
-        ["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" : "0x83186d9e"}
-        ],
-        ["interface_name_renumber",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "new_show_dev_instance"],
-            {"crc" : "0x11b7bcec"}
-        ],
-        ["interface_name_renumber_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x31594963"}
-        ],
-        ["want_ip4_arp_events",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "enable_disable"],
-            ["u32", "pid"],
-            ["u32", "address"],
-            {"crc" : "0x5ae044c2"}
-        ],
-        ["want_ip4_arp_events_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xe1c0b59e"}
-        ],
-        ["ip4_arp_event",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "address"],
-            ["u32", "pid"],
-            ["u32", "sw_if_index"],
-            ["u8", "new_mac", 6],
-            ["u8", "mac_ip"],
-            {"crc" : "0x7de1837b"}
-        ],
-        ["want_ip6_nd_events",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "enable_disable"],
-            ["u32", "pid"],
-            ["u8", "address", 16],
-            {"crc" : "0x9586ba55"}
-        ],
-        ["want_ip6_nd_events_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x95458aad"}
-        ],
-        ["ip6_nd_event",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "pid"],
-            ["u32", "sw_if_index"],
-            ["u8", "address", 16],
-            ["u8", "new_mac", 6],
-            ["u8", "mac_ip"],
-            {"crc" : "0x777bb71c"}
-        ],
-        ["input_acl_set_interface",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "ip4_table_index"],
-            ["u32", "ip6_table_index"],
-            ["u32", "l2_table_index"],
-            ["u8", "is_add"],
-            {"crc" : "0x34d2fc33"}
-        ],
-        ["input_acl_set_interface_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xba0110e3"}
-        ],
-        ["get_node_graph",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xf8636a76"}
-        ],
-        ["get_node_graph_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u64", "reply_in_shmem"],
-            {"crc" : "0x816d91b6"}
-        ],
-        ["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" : "0x7bd4abf9"}
-        ],
-        ["ioam_enable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x58a8fedc"}
-        ],
-        ["ioam_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u16", "id"],
-            {"crc" : "0xaff26d33"}
-        ],
-        ["ioam_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xef118a9d"}
-        ],
-        ["get_next_index",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "node_name", 64],
-            ["u8", "next_name", 64],
-            {"crc" : "0x52f0e416"}
-        ],
-        ["get_next_index_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "next_index"],
-            {"crc" : "0x671fbdb1"}
-        ],
-        ["pg_create_interface",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "interface_id"],
-            {"crc" : "0x253c5959"}
-        ],
-        ["pg_create_interface_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x21b4f949"}
-        ],
-        ["pg_capture",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "interface_id"],
-            ["u8", "is_enabled"],
-            ["u32", "count"],
-            ["u32", "pcap_name_length"],
-            ["u8", "pcap_file_name", 0, "pcap_name_length"],
-            {"crc" : "0x6ac7fe78"}
-        ],
-        ["pg_capture_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xf403693b"}
-        ],
-        ["pg_enable_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_enabled"],
-            ["u32", "stream_name_length"],
-            ["u8", "stream_name", 0, "stream_name_length"],
-            {"crc" : "0x7d0b90ff"}
-        ],
-        ["pg_enable_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x02253bd6"}
-        ],
-        ["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" : "0x0f8c6ba0"}
-        ],
-        ["ip_source_and_port_range_check_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x35df8160"}
-        ],
-        ["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" : "0x4a6438f1"}
-        ],
-        ["ip_source_and_port_range_check_interface_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x6b940f04"}
-        ],
-        ["delete_subif",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x6038f848"}
-        ],
-        ["delete_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x9d6015dc"}
-        ],
-        ["punt",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_add"],
-            ["u8", "ipv"],
-            ["u8", "l4_protocol"],
-            ["u16", "l4_port"],
-            {"crc" : "0x4559c976"}
-        ],
-        ["punt_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xcca27fbe"}
-        ],
-        ["feature_enable_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable"],
-            ["u8", "arc_name", 64],
-            ["u8", "feature_name", 64],
-            {"crc" : "0xbc86393b"}
-        ],
-        ["feature_enable_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xf6e14373"}
+    "vl_api_version": "0xe02a02b0",
+    "enums": [],
+    "messages": [
+        [
+            "control_ping",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "control_ping_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "vpe_pid"
+            ],
+            {
+                "crc": "0xf6b0b8ca"
+            }
+        ],
+        [
+            "cli",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u64",
+                "cmd_in_shmem"
+            ],
+            {
+                "crc": "0x23bfbfff"
+            }
+        ],
+        [
+            "cli_inband",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "length"
+            ],
+            [
+                "u8",
+                "cmd",
+                0,
+                "length"
+            ],
+            {
+                "crc": "0x74e00a49"
+            }
+        ],
+        [
+            "cli_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u64",
+                "reply_in_shmem"
+            ],
+            {
+                "crc": "0x06d68297"
+            }
+        ],
+        [
+            "cli_inband_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "length"
+            ],
+            [
+                "u8",
+                "reply",
+                0,
+                "length"
+            ],
+            {
+                "crc": "0x1f22bbb8"
+            }
+        ],
+        [
+            "get_node_index",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "node_name",
+                64
+            ],
+            {
+                "crc": "0x6c9a495d"
+            }
+        ],
+        [
+            "get_node_index_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "node_index"
+            ],
+            {
+                "crc": "0xa8600b89"
+            }
+        ],
+        [
+            "add_node_next",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "node_name",
+                64
+            ],
+            [
+                "u8",
+                "next_name",
+                64
+            ],
+            {
+                "crc": "0x9ab92f7a"
+            }
+        ],
+        [
+            "add_node_next_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "next_index"
+            ],
+            {
+                "crc": "0x2ed75f32"
+            }
+        ],
+        [
+            "show_version",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "get_node_graph",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "get_node_graph_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u64",
+                "reply_in_shmem"
+            ],
+            {
+                "crc": "0x06d68297"
+            }
+        ],
+        [
+            "get_next_index",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "node_name",
+                64
+            ],
+            [
+                "u8",
+                "next_name",
+                64
+            ],
+            {
+                "crc": "0x9ab92f7a"
+            }
+        ],
+        [
+            "get_next_index_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "next_index"
+            ],
+            {
+                "crc": "0x2ed75f32"
+            }
         ]
     ],
-"vl_api_version" :"0x50d987fe"
+    "types": []
 }
index c11f466..547e200 100644 (file)
@@ -6,3013 +6,706 @@ package vpe
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x50d987fe
+const VlAPIVersion = 0xe02a02b0
 
-// IP4FibCounter represents the VPP binary API data type 'ip4_fib_counter'.
-// Generated from 'bin_api/vpe.api.json', line 3:
-//
-//        ["ip4_fib_counter",
-//            ["u32", "address"],
-//            ["u8", "address_length"],
-//            ["u64", "packets"],
-//            ["u64", "bytes"],
-//            {"crc" : "0xb2739495"}
-//        ],
-//
-type IP4FibCounter struct {
-       Address       uint32
-       AddressLength uint8
-       Packets       uint64
-       Bytes         uint64
-}
-
-func (*IP4FibCounter) GetTypeName() string {
-       return "ip4_fib_counter"
-}
-func (*IP4FibCounter) GetCrcString() string {
-       return "b2739495"
-}
-
-// IP4NbrCounter represents the VPP binary API data type 'ip4_nbr_counter'.
-// Generated from 'bin_api/vpe.api.json', line 10:
-//
-//        ["ip4_nbr_counter",
-//            ["u32", "address"],
-//            ["u8", "link_type"],
-//            ["u64", "packets"],
-//            ["u64", "bytes"],
-//            {"crc" : "0x487e2e85"}
-//        ],
-//
-type IP4NbrCounter struct {
-       Address  uint32
-       LinkType uint8
-       Packets  uint64
-       Bytes    uint64
-}
-
-func (*IP4NbrCounter) GetTypeName() string {
-       return "ip4_nbr_counter"
-}
-func (*IP4NbrCounter) GetCrcString() string {
-       return "487e2e85"
-}
-
-// IP6FibCounter represents the VPP binary API data type 'ip6_fib_counter'.
-// Generated from 'bin_api/vpe.api.json', line 17:
-//
-//        ["ip6_fib_counter",
-//            ["u64", "address", 2],
-//            ["u8", "address_length"],
-//            ["u64", "packets"],
-//            ["u64", "bytes"],
-//            {"crc" : "0xcf35769b"}
-//        ],
-//
-type IP6FibCounter struct {
-       Address       []uint64 `struc:"[2]uint64"`
-       AddressLength uint8
-       Packets       uint64
-       Bytes         uint64
-}
-
-func (*IP6FibCounter) GetTypeName() string {
-       return "ip6_fib_counter"
-}
-func (*IP6FibCounter) GetCrcString() string {
-       return "cf35769b"
-}
-
-// IP6NbrCounter represents the VPP binary API data type 'ip6_nbr_counter'.
-// Generated from 'bin_api/vpe.api.json', line 24:
-//
-//        ["ip6_nbr_counter",
-//            ["u64", "address", 2],
-//            ["u8", "link_type"],
-//            ["u64", "packets"],
-//            ["u64", "bytes"],
-//            {"crc" : "0xefca741e"}
-//        ]
-//
-type IP6NbrCounter struct {
-       Address  []uint64 `struc:"[2]uint64"`
-       LinkType uint8
-       Packets  uint64
-       Bytes    uint64
-}
-
-func (*IP6NbrCounter) GetTypeName() string {
-       return "ip6_nbr_counter"
-}
-func (*IP6NbrCounter) GetCrcString() string {
-       return "efca741e"
-}
-
-// CreateVlanSubif represents the VPP binary API message 'create_vlan_subif'.
-// Generated from 'bin_api/vpe.api.json', line 33:
-//
-//        ["create_vlan_subif",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "vlan_id"],
-//            {"crc" : "0xaf9ae1e9"}
-//        ],
-//
-type CreateVlanSubif struct {
-       SwIfIndex uint32
-       VlanID    uint32
-}
-
-func (*CreateVlanSubif) GetMessageName() string {
-       return "create_vlan_subif"
-}
-func (*CreateVlanSubif) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*CreateVlanSubif) GetCrcString() string {
-       return "af9ae1e9"
-}
-func NewCreateVlanSubif() api.Message {
-       return &CreateVlanSubif{}
-}
-
-// CreateVlanSubifReply represents the VPP binary API message 'create_vlan_subif_reply'.
-// Generated from 'bin_api/vpe.api.json', line 41:
-//
-//        ["create_vlan_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x8f36b888"}
-//        ],
-//
-type CreateVlanSubifReply struct {
-       Retval    int32
-       SwIfIndex uint32
-}
-
-func (*CreateVlanSubifReply) GetMessageName() string {
-       return "create_vlan_subif_reply"
-}
-func (*CreateVlanSubifReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CreateVlanSubifReply) GetCrcString() string {
-       return "8f36b888"
-}
-func NewCreateVlanSubifReply() api.Message {
-       return &CreateVlanSubifReply{}
-}
-
-// SwInterfaceSetMplsEnable represents the VPP binary API message 'sw_interface_set_mpls_enable'.
-// Generated from 'bin_api/vpe.api.json', line 48:
-//
-//        ["sw_interface_set_mpls_enable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "enable"],
-//            {"crc" : "0x37f6357e"}
-//        ],
-//
-type SwInterfaceSetMplsEnable struct {
-       SwIfIndex uint32
-       Enable    uint8
-}
-
-func (*SwInterfaceSetMplsEnable) GetMessageName() string {
-       return "sw_interface_set_mpls_enable"
-}
-func (*SwInterfaceSetMplsEnable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*SwInterfaceSetMplsEnable) GetCrcString() string {
-       return "37f6357e"
-}
-func NewSwInterfaceSetMplsEnable() api.Message {
-       return &SwInterfaceSetMplsEnable{}
-}
-
-// SwInterfaceSetMplsEnableReply represents the VPP binary API message 'sw_interface_set_mpls_enable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 56:
-//
-//        ["sw_interface_set_mpls_enable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x5ffd3ca9"}
-//        ],
-//
-type SwInterfaceSetMplsEnableReply struct {
-       Retval int32
-}
-
-func (*SwInterfaceSetMplsEnableReply) GetMessageName() string {
-       return "sw_interface_set_mpls_enable_reply"
-}
-func (*SwInterfaceSetMplsEnableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*SwInterfaceSetMplsEnableReply) GetCrcString() string {
-       return "5ffd3ca9"
-}
-func NewSwInterfaceSetMplsEnableReply() api.Message {
-       return &SwInterfaceSetMplsEnableReply{}
-}
-
-// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 62:
-//
-//        ["proxy_arp_add_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "vrf_id"],
-//            ["u8", "is_add"],
-//            ["u8", "low_address", 4],
-//            ["u8", "hi_address", 4],
-//            {"crc" : "0x4bef9951"}
-//        ],
-//
-type ProxyArpAddDel struct {
-       VrfID      uint32
-       IsAdd      uint8
-       LowAddress []byte `struc:"[4]byte"`
-       HiAddress  []byte `struc:"[4]byte"`
-}
-
-func (*ProxyArpAddDel) GetMessageName() string {
-       return "proxy_arp_add_del"
-}
-func (*ProxyArpAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ProxyArpAddDel) GetCrcString() string {
-       return "4bef9951"
-}
-func NewProxyArpAddDel() api.Message {
-       return &ProxyArpAddDel{}
-}
-
-// ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 72:
-//
-//        ["proxy_arp_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x8e2d621d"}
-//        ],
-//
-type ProxyArpAddDelReply struct {
-       Retval int32
-}
-
-func (*ProxyArpAddDelReply) GetMessageName() string {
-       return "proxy_arp_add_del_reply"
-}
-func (*ProxyArpAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ProxyArpAddDelReply) GetCrcString() string {
-       return "8e2d621d"
-}
-func NewProxyArpAddDelReply() api.Message {
-       return &ProxyArpAddDelReply{}
-}
-
-// ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'.
-// Generated from 'bin_api/vpe.api.json', line 78:
-//
-//        ["proxy_arp_intfc_enable_disable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "enable_disable"],
-//            {"crc" : "0x3ee1998e"}
-//        ],
-//
-type ProxyArpIntfcEnableDisable struct {
-       SwIfIndex     uint32
-       EnableDisable uint8
-}
-
-func (*ProxyArpIntfcEnableDisable) GetMessageName() string {
-       return "proxy_arp_intfc_enable_disable"
-}
-func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ProxyArpIntfcEnableDisable) GetCrcString() string {
-       return "3ee1998e"
-}
-func NewProxyArpIntfcEnableDisable() api.Message {
-       return &ProxyArpIntfcEnableDisable{}
-}
-
-// ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 86:
-//
-//        ["proxy_arp_intfc_enable_disable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x23d273cd"}
-//        ],
-//
-type ProxyArpIntfcEnableDisableReply struct {
-       Retval int32
-}
-
-func (*ProxyArpIntfcEnableDisableReply) GetMessageName() string {
-       return "proxy_arp_intfc_enable_disable_reply"
-}
-func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ProxyArpIntfcEnableDisableReply) GetCrcString() string {
-       return "23d273cd"
-}
-func NewProxyArpIntfcEnableDisableReply() api.Message {
-       return &ProxyArpIntfcEnableDisableReply{}
-}
-
-// ResetVrf represents the VPP binary API message 'reset_vrf'.
-// Generated from 'bin_api/vpe.api.json', line 92:
-//
-//        ["reset_vrf",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_ipv6"],
-//            ["u32", "vrf_id"],
-//            {"crc" : "0xeb07deb0"}
-//        ],
-//
-type ResetVrf struct {
-       IsIpv6 uint8
-       VrfID  uint32
-}
-
-func (*ResetVrf) GetMessageName() string {
-       return "reset_vrf"
-}
-func (*ResetVrf) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ResetVrf) GetCrcString() string {
-       return "eb07deb0"
-}
-func NewResetVrf() api.Message {
-       return &ResetVrf{}
-}
-
-// ResetVrfReply represents the VPP binary API message 'reset_vrf_reply'.
-// Generated from 'bin_api/vpe.api.json', line 100:
-//
-//        ["reset_vrf_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x5f283863"}
-//        ],
-//
-type ResetVrfReply struct {
-       Retval int32
-}
-
-func (*ResetVrfReply) GetMessageName() string {
-       return "reset_vrf_reply"
-}
-func (*ResetVrfReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ResetVrfReply) GetCrcString() string {
-       return "5f283863"
-}
-func NewResetVrfReply() api.Message {
-       return &ResetVrfReply{}
-}
-
-// WantStats represents the VPP binary API message 'want_stats'.
-// Generated from 'bin_api/vpe.api.json', line 106:
-//
-//        ["want_stats",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "enable_disable"],
-//            ["u32", "pid"],
-//            {"crc" : "0x4f2effb4"}
-//        ],
-//
-type WantStats struct {
-       EnableDisable uint32
-       Pid           uint32
-}
-
-func (*WantStats) GetMessageName() string {
-       return "want_stats"
-}
-func (*WantStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*WantStats) GetCrcString() string {
-       return "4f2effb4"
-}
-func NewWantStats() api.Message {
-       return &WantStats{}
-}
-
-// WantStatsReply represents the VPP binary API message 'want_stats_reply'.
-// Generated from 'bin_api/vpe.api.json', line 114:
-//
-//        ["want_stats_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xb36abf5f"}
-//        ],
-//
-type WantStatsReply struct {
-       Retval int32
-}
-
-func (*WantStatsReply) GetMessageName() string {
-       return "want_stats_reply"
-}
-func (*WantStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*WantStatsReply) GetCrcString() string {
-       return "b36abf5f"
-}
-func NewWantStatsReply() api.Message {
-       return &WantStatsReply{}
-}
-
-// VnetIP4FibCounters represents the VPP binary API message 'vnet_ip4_fib_counters'.
-// Generated from 'bin_api/vpe.api.json', line 120:
-//
-//        ["vnet_ip4_fib_counters",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "vrf_id"],
-//            ["u32", "count"],
-//            ["vl_api_ip4_fib_counter_t", "c", 0, "count"],
-//            {"crc" : "0x1ab9d6c5"}
-//        ],
-//
-type VnetIP4FibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP4FibCounter
-}
-
-func (*VnetIP4FibCounters) GetMessageName() string {
-       return "vnet_ip4_fib_counters"
-}
-func (*VnetIP4FibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-func (*VnetIP4FibCounters) GetCrcString() string {
-       return "1ab9d6c5"
-}
-func NewVnetIP4FibCounters() api.Message {
-       return &VnetIP4FibCounters{}
-}
-
-// VnetIP4NbrCounters represents the VPP binary API message 'vnet_ip4_nbr_counters'.
-// Generated from 'bin_api/vpe.api.json', line 127:
-//
-//        ["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" : "0xfc2b5092"}
-//        ],
-//
-type VnetIP4NbrCounters struct {
-       Count     uint32 `struc:"sizeof=C"`
-       SwIfIndex uint32
-       Begin     uint8
-       C         []IP4NbrCounter
-}
-
-func (*VnetIP4NbrCounters) GetMessageName() string {
-       return "vnet_ip4_nbr_counters"
-}
-func (*VnetIP4NbrCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-func (*VnetIP4NbrCounters) GetCrcString() string {
-       return "fc2b5092"
-}
-func NewVnetIP4NbrCounters() api.Message {
-       return &VnetIP4NbrCounters{}
-}
-
-// VnetIP6FibCounters represents the VPP binary API message 'vnet_ip6_fib_counters'.
-// Generated from 'bin_api/vpe.api.json', line 135:
-//
-//        ["vnet_ip6_fib_counters",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "vrf_id"],
-//            ["u32", "count"],
-//            ["vl_api_ip6_fib_counter_t", "c", 0, "count"],
-//            {"crc" : "0x9ab453ae"}
-//        ],
-//
-type VnetIP6FibCounters struct {
-       VrfID uint32
-       Count uint32 `struc:"sizeof=C"`
-       C     []IP6FibCounter
-}
-
-func (*VnetIP6FibCounters) GetMessageName() string {
-       return "vnet_ip6_fib_counters"
-}
-func (*VnetIP6FibCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-func (*VnetIP6FibCounters) GetCrcString() string {
-       return "9ab453ae"
-}
-func NewVnetIP6FibCounters() api.Message {
-       return &VnetIP6FibCounters{}
-}
-
-// VnetIP6NbrCounters represents the VPP binary API message 'vnet_ip6_nbr_counters'.
-// Generated from 'bin_api/vpe.api.json', line 142:
-//
-//        ["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" : "0x181b673f"}
-//        ],
-//
-type VnetIP6NbrCounters struct {
-       Count     uint32 `struc:"sizeof=C"`
-       SwIfIndex uint32
-       Begin     uint8
-       C         []IP6NbrCounter
-}
-
-func (*VnetIP6NbrCounters) GetMessageName() string {
-       return "vnet_ip6_nbr_counters"
-}
-func (*VnetIP6NbrCounters) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-func (*VnetIP6NbrCounters) GetCrcString() string {
-       return "181b673f"
-}
-func NewVnetIP6NbrCounters() api.Message {
-       return &VnetIP6NbrCounters{}
-}
-
-// VnetGetSummaryStats represents the VPP binary API message 'vnet_get_summary_stats'.
-// Generated from 'bin_api/vpe.api.json', line 150:
-//
-//        ["vnet_get_summary_stats",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x16435c20"}
-//        ],
-//
-type VnetGetSummaryStats struct {
-}
-
-func (*VnetGetSummaryStats) GetMessageName() string {
-       return "vnet_get_summary_stats"
-}
-func (*VnetGetSummaryStats) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*VnetGetSummaryStats) GetCrcString() string {
-       return "16435c20"
-}
-func NewVnetGetSummaryStats() api.Message {
-       return &VnetGetSummaryStats{}
-}
-
-// VnetGetSummaryStatsReply represents the VPP binary API message 'vnet_get_summary_stats_reply'.
-// Generated from 'bin_api/vpe.api.json', line 156:
-//
-//        ["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" : "0x675ce280"}
-//        ],
-//
-type VnetGetSummaryStatsReply struct {
-       Retval     int32
-       TotalPkts  []uint64 `struc:"[2]uint64"`
-       TotalBytes []uint64 `struc:"[2]uint64"`
-       VectorRate float64
-}
-
-func (*VnetGetSummaryStatsReply) GetMessageName() string {
-       return "vnet_get_summary_stats_reply"
-}
-func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*VnetGetSummaryStatsReply) GetCrcString() string {
-       return "675ce280"
-}
-func NewVnetGetSummaryStatsReply() api.Message {
-       return &VnetGetSummaryStatsReply{}
-}
-
-// OamEvent represents the VPP binary API message 'oam_event'.
-// Generated from 'bin_api/vpe.api.json', line 165:
-//
-//        ["oam_event",
-//            ["u16", "_vl_msg_id"],
-//            ["u8", "dst_address", 4],
-//            ["u8", "state"],
-//            {"crc" : "0x4f285ade"}
-//        ],
-//
-type OamEvent struct {
-       DstAddress []byte `struc:"[4]byte"`
-       State      uint8
-}
-
-func (*OamEvent) GetMessageName() string {
-       return "oam_event"
-}
-func (*OamEvent) GetMessageType() api.MessageType {
-       return api.OtherMessage
-}
-func (*OamEvent) GetCrcString() string {
-       return "4f285ade"
-}
-func NewOamEvent() api.Message {
-       return &OamEvent{}
-}
-
-// WantOamEvents represents the VPP binary API message 'want_oam_events'.
-// Generated from 'bin_api/vpe.api.json', line 171:
-//
-//        ["want_oam_events",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "enable_disable"],
-//            ["u32", "pid"],
-//            {"crc" : "0x948ef12a"}
-//        ],
-//
-type WantOamEvents struct {
-       EnableDisable uint32
-       Pid           uint32
-}
-
-func (*WantOamEvents) GetMessageName() string {
-       return "want_oam_events"
-}
-func (*WantOamEvents) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*WantOamEvents) GetCrcString() string {
-       return "948ef12a"
-}
-func NewWantOamEvents() api.Message {
-       return &WantOamEvents{}
-}
-
-// WantOamEventsReply represents the VPP binary API message 'want_oam_events_reply'.
-// Generated from 'bin_api/vpe.api.json', line 179:
-//
-//        ["want_oam_events_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x266a677d"}
-//        ],
-//
-type WantOamEventsReply struct {
-       Retval int32
-}
-
-func (*WantOamEventsReply) GetMessageName() string {
-       return "want_oam_events_reply"
-}
-func (*WantOamEventsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*WantOamEventsReply) GetCrcString() string {
-       return "266a677d"
-}
-func NewWantOamEventsReply() api.Message {
-       return &WantOamEventsReply{}
-}
-
-// OamAddDel represents the VPP binary API message 'oam_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 185:
-//
-//        ["oam_add_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "vrf_id"],
-//            ["u8", "src_address", 4],
-//            ["u8", "dst_address", 4],
-//            ["u8", "is_add"],
-//            {"crc" : "0xb14bc7df"}
-//        ],
-//
-type OamAddDel struct {
-       VrfID      uint32
-       SrcAddress []byte `struc:"[4]byte"`
-       DstAddress []byte `struc:"[4]byte"`
-       IsAdd      uint8
-}
-
-func (*OamAddDel) GetMessageName() string {
-       return "oam_add_del"
-}
-func (*OamAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*OamAddDel) GetCrcString() string {
-       return "b14bc7df"
-}
-func NewOamAddDel() api.Message {
-       return &OamAddDel{}
-}
-
-// OamAddDelReply represents the VPP binary API message 'oam_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 195:
-//
-//        ["oam_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xc5594eec"}
-//        ],
-//
-type OamAddDelReply struct {
-       Retval int32
-}
-
-func (*OamAddDelReply) GetMessageName() string {
-       return "oam_add_del_reply"
-}
-func (*OamAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*OamAddDelReply) GetCrcString() string {
-       return "c5594eec"
-}
-func NewOamAddDelReply() api.Message {
-       return &OamAddDelReply{}
-}
-
-// ResetFib represents the VPP binary API message 'reset_fib'.
-// Generated from 'bin_api/vpe.api.json', line 201:
-//
-//        ["reset_fib",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "vrf_id"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0x6f17106b"}
-//        ],
-//
-type ResetFib struct {
-       VrfID  uint32
-       IsIpv6 uint8
-}
-
-func (*ResetFib) GetMessageName() string {
-       return "reset_fib"
-}
-func (*ResetFib) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ResetFib) GetCrcString() string {
-       return "6f17106b"
-}
-func NewResetFib() api.Message {
-       return &ResetFib{}
-}
-
-// ResetFibReply represents the VPP binary API message 'reset_fib_reply'.
-// Generated from 'bin_api/vpe.api.json', line 209:
-//
-//        ["reset_fib_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x990dcbf8"}
-//        ],
-//
-type ResetFibReply struct {
-       Retval int32
-}
-
-func (*ResetFibReply) GetMessageName() string {
-       return "reset_fib_reply"
-}
-func (*ResetFibReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ResetFibReply) GetCrcString() string {
-       return "990dcbf8"
-}
-func NewResetFibReply() api.Message {
-       return &ResetFibReply{}
-}
-
-// CreateLoopback represents the VPP binary API message 'create_loopback'.
-// Generated from 'bin_api/vpe.api.json', line 215:
-//
-//        ["create_loopback",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "mac_address", 6],
-//            {"crc" : "0xb2602de5"}
-//        ],
-//
-type CreateLoopback struct {
-       MacAddress []byte `struc:"[6]byte"`
-}
-
-func (*CreateLoopback) GetMessageName() string {
-       return "create_loopback"
-}
-func (*CreateLoopback) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*CreateLoopback) GetCrcString() string {
-       return "b2602de5"
-}
-func NewCreateLoopback() api.Message {
-       return &CreateLoopback{}
-}
-
-// CreateLoopbackReply represents the VPP binary API message 'create_loopback_reply'.
-// Generated from 'bin_api/vpe.api.json', line 222:
-//
-//        ["create_loopback_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x9520f804"}
-//        ],
-//
-type CreateLoopbackReply struct {
-       Retval    int32
-       SwIfIndex uint32
-}
-
-func (*CreateLoopbackReply) GetMessageName() string {
-       return "create_loopback_reply"
-}
-func (*CreateLoopbackReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CreateLoopbackReply) GetCrcString() string {
-       return "9520f804"
-}
-func NewCreateLoopbackReply() api.Message {
-       return &CreateLoopbackReply{}
-}
-
-// CreateLoopbackInstance represents the VPP binary API message 'create_loopback_instance'.
-// Generated from 'bin_api/vpe.api.json', line 229:
-//
-//        ["create_loopback_instance",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "mac_address", 6],
-//            ["u8", "is_specified"],
-//            ["u32", "user_instance"],
-//            {"crc" : "0x967694f1"}
-//        ],
-//
-type CreateLoopbackInstance struct {
-       MacAddress   []byte `struc:"[6]byte"`
-       IsSpecified  uint8
-       UserInstance uint32
-}
-
-func (*CreateLoopbackInstance) GetMessageName() string {
-       return "create_loopback_instance"
-}
-func (*CreateLoopbackInstance) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*CreateLoopbackInstance) GetCrcString() string {
-       return "967694f1"
-}
-func NewCreateLoopbackInstance() api.Message {
-       return &CreateLoopbackInstance{}
-}
-
-// CreateLoopbackInstanceReply represents the VPP binary API message 'create_loopback_instance_reply'.
-// Generated from 'bin_api/vpe.api.json', line 238:
-//
-//        ["create_loopback_instance_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xd52c63b6"}
-//        ],
-//
-type CreateLoopbackInstanceReply struct {
-       Retval    int32
-       SwIfIndex uint32
-}
-
-func (*CreateLoopbackInstanceReply) GetMessageName() string {
-       return "create_loopback_instance_reply"
-}
-func (*CreateLoopbackInstanceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CreateLoopbackInstanceReply) GetCrcString() string {
-       return "d52c63b6"
-}
-func NewCreateLoopbackInstanceReply() api.Message {
-       return &CreateLoopbackInstanceReply{}
-}
-
-// DeleteLoopback represents the VPP binary API message 'delete_loopback'.
-// Generated from 'bin_api/vpe.api.json', line 245:
-//
-//        ["delete_loopback",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xded428b0"}
-//        ],
-//
-type DeleteLoopback struct {
-       SwIfIndex uint32
-}
-
-func (*DeleteLoopback) GetMessageName() string {
-       return "delete_loopback"
-}
-func (*DeleteLoopback) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*DeleteLoopback) GetCrcString() string {
-       return "ded428b0"
-}
-func NewDeleteLoopback() api.Message {
-       return &DeleteLoopback{}
-}
-
-// DeleteLoopbackReply represents the VPP binary API message 'delete_loopback_reply'.
-// Generated from 'bin_api/vpe.api.json', line 252:
-//
-//        ["delete_loopback_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xc91dafa5"}
-//        ],
-//
-type DeleteLoopbackReply struct {
-       Retval int32
-}
-
-func (*DeleteLoopbackReply) GetMessageName() string {
-       return "delete_loopback_reply"
-}
-func (*DeleteLoopbackReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*DeleteLoopbackReply) GetCrcString() string {
-       return "c91dafa5"
-}
-func NewDeleteLoopbackReply() api.Message {
-       return &DeleteLoopbackReply{}
-}
-
-// ControlPing represents the VPP binary API message 'control_ping'.
-// Generated from 'bin_api/vpe.api.json', line 258:
-//
-//        ["control_ping",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xea1bf4f7"}
-//        ],
-//
-type ControlPing struct {
-}
-
-func (*ControlPing) GetMessageName() string {
-       return "control_ping"
-}
-func (*ControlPing) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ControlPing) GetCrcString() string {
-       return "ea1bf4f7"
-}
-func NewControlPing() api.Message {
-       return &ControlPing{}
-}
-
-// ControlPingReply represents the VPP binary API message 'control_ping_reply'.
-// Generated from 'bin_api/vpe.api.json', line 264:
-//
-//        ["control_ping_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "client_index"],
-//            ["u32", "vpe_pid"],
-//            {"crc" : "0xaa016e7b"}
-//        ],
-//
-type ControlPingReply struct {
-       Retval      int32
-       ClientIndex uint32
-       VpePid      uint32
-}
-
-func (*ControlPingReply) GetMessageName() string {
-       return "control_ping_reply"
-}
-func (*ControlPingReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ControlPingReply) GetCrcString() string {
-       return "aa016e7b"
-}
-func NewControlPingReply() api.Message {
-       return &ControlPingReply{}
-}
-
-// Cli represents the VPP binary API message 'cli'.
-// Generated from 'bin_api/vpe.api.json', line 272:
-//
-//        ["cli",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u64", "cmd_in_shmem"],
-//            {"crc" : "0x543d8e2e"}
-//        ],
-//
-type Cli struct {
-       CmdInShmem uint64
-}
-
-func (*Cli) GetMessageName() string {
-       return "cli"
-}
-func (*Cli) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*Cli) GetCrcString() string {
-       return "543d8e2e"
-}
-func NewCli() api.Message {
-       return &Cli{}
-}
-
-// CliInband represents the VPP binary API message 'cli_inband'.
-// Generated from 'bin_api/vpe.api.json', line 279:
-//
-//        ["cli_inband",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "length"],
-//            ["u8", "cmd", 0, "length"],
-//            {"crc" : "0x22345937"}
-//        ],
-//
-type CliInband struct {
-       Length uint32 `struc:"sizeof=Cmd"`
-       Cmd    []byte
-}
-
-func (*CliInband) GetMessageName() string {
-       return "cli_inband"
-}
-func (*CliInband) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*CliInband) GetCrcString() string {
-       return "22345937"
-}
-func NewCliInband() api.Message {
-       return &CliInband{}
-}
-
-// CliReply represents the VPP binary API message 'cli_reply'.
-// Generated from 'bin_api/vpe.api.json', line 287:
-//
-//        ["cli_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u64", "reply_in_shmem"],
-//            {"crc" : "0x594a0b2e"}
-//        ],
-//
-type CliReply struct {
-       Retval       int32
-       ReplyInShmem uint64
-}
-
-func (*CliReply) GetMessageName() string {
-       return "cli_reply"
-}
-func (*CliReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CliReply) GetCrcString() string {
-       return "594a0b2e"
-}
-func NewCliReply() api.Message {
-       return &CliReply{}
-}
-
-// CliInbandReply represents the VPP binary API message 'cli_inband_reply'.
-// Generated from 'bin_api/vpe.api.json', line 294:
-//
-//        ["cli_inband_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "length"],
-//            ["u8", "reply", 0, "length"],
-//            {"crc" : "0xc1835761"}
-//        ],
-//
-type CliInbandReply struct {
-       Retval int32
-       Length uint32 `struc:"sizeof=Reply"`
-       Reply  []byte
-}
-
-func (*CliInbandReply) GetMessageName() string {
-       return "cli_inband_reply"
-}
-func (*CliInbandReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CliInbandReply) GetCrcString() string {
-       return "c1835761"
-}
-func NewCliInbandReply() api.Message {
-       return &CliInbandReply{}
-}
-
-// SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'.
-// Generated from 'bin_api/vpe.api.json', line 302:
-//
-//        ["set_arp_neighbor_limit",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_ipv6"],
-//            ["u32", "arp_neighbor_limit"],
-//            {"crc" : "0xc1690cb4"}
-//        ],
-//
-type SetArpNeighborLimit struct {
-       IsIpv6           uint8
-       ArpNeighborLimit uint32
-}
-
-func (*SetArpNeighborLimit) GetMessageName() string {
-       return "set_arp_neighbor_limit"
-}
-func (*SetArpNeighborLimit) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*SetArpNeighborLimit) GetCrcString() string {
-       return "c1690cb4"
-}
-func NewSetArpNeighborLimit() api.Message {
-       return &SetArpNeighborLimit{}
-}
-
-// SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'.
-// Generated from 'bin_api/vpe.api.json', line 310:
-//
-//        ["set_arp_neighbor_limit_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xa6b30518"}
-//        ],
-//
-type SetArpNeighborLimitReply struct {
-       Retval int32
-}
-
-func (*SetArpNeighborLimitReply) GetMessageName() string {
-       return "set_arp_neighbor_limit_reply"
-}
-func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*SetArpNeighborLimitReply) GetCrcString() string {
-       return "a6b30518"
-}
-func NewSetArpNeighborLimitReply() api.Message {
-       return &SetArpNeighborLimitReply{}
-}
-
-// L2PatchAddDel represents the VPP binary API message 'l2_patch_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 316:
-//
-//        ["l2_patch_add_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "rx_sw_if_index"],
-//            ["u32", "tx_sw_if_index"],
-//            ["u8", "is_add"],
-//            {"crc" : "0x9b10029a"}
-//        ],
-//
-type L2PatchAddDel struct {
-       RxSwIfIndex uint32
-       TxSwIfIndex uint32
-       IsAdd       uint8
-}
-
-func (*L2PatchAddDel) GetMessageName() string {
-       return "l2_patch_add_del"
-}
-func (*L2PatchAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*L2PatchAddDel) GetCrcString() string {
-       return "9b10029a"
-}
-func NewL2PatchAddDel() api.Message {
-       return &L2PatchAddDel{}
-}
-
-// L2PatchAddDelReply represents the VPP binary API message 'l2_patch_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 325:
-//
-//        ["l2_patch_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xa85e37be"}
-//        ],
-//
-type L2PatchAddDelReply struct {
-       Retval int32
-}
-
-func (*L2PatchAddDelReply) GetMessageName() string {
-       return "l2_patch_add_del_reply"
-}
-func (*L2PatchAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*L2PatchAddDelReply) GetCrcString() string {
-       return "a85e37be"
-}
-func NewL2PatchAddDelReply() api.Message {
-       return &L2PatchAddDelReply{}
-}
-
-// SwInterfaceSetVpath represents the VPP binary API message 'sw_interface_set_vpath'.
-// Generated from 'bin_api/vpe.api.json', line 331:
-//
-//        ["sw_interface_set_vpath",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "enable"],
-//            {"crc" : "0x1bc2fd5e"}
-//        ],
-//
-type SwInterfaceSetVpath struct {
-       SwIfIndex uint32
-       Enable    uint8
-}
-
-func (*SwInterfaceSetVpath) GetMessageName() string {
-       return "sw_interface_set_vpath"
-}
-func (*SwInterfaceSetVpath) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*SwInterfaceSetVpath) GetCrcString() string {
-       return "1bc2fd5e"
-}
-func NewSwInterfaceSetVpath() api.Message {
-       return &SwInterfaceSetVpath{}
-}
-
-// SwInterfaceSetVpathReply represents the VPP binary API message 'sw_interface_set_vpath_reply'.
-// Generated from 'bin_api/vpe.api.json', line 339:
-//
-//        ["sw_interface_set_vpath_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x828dbe62"}
-//        ],
-//
-type SwInterfaceSetVpathReply struct {
-       Retval int32
-}
-
-func (*SwInterfaceSetVpathReply) GetMessageName() string {
-       return "sw_interface_set_vpath_reply"
-}
-func (*SwInterfaceSetVpathReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*SwInterfaceSetVpathReply) GetCrcString() string {
-       return "828dbe62"
-}
-func NewSwInterfaceSetVpathReply() api.Message {
-       return &SwInterfaceSetVpathReply{}
-}
-
-// SwInterfaceSetL2Xconnect represents the VPP binary API message 'sw_interface_set_l2_xconnect'.
-// Generated from 'bin_api/vpe.api.json', line 345:
-//
-//        ["sw_interface_set_l2_xconnect",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "rx_sw_if_index"],
-//            ["u32", "tx_sw_if_index"],
-//            ["u8", "enable"],
-//            {"crc" : "0x48a4c4c8"}
-//        ],
-//
-type SwInterfaceSetL2Xconnect struct {
-       RxSwIfIndex uint32
-       TxSwIfIndex uint32
-       Enable      uint8
-}
-
-func (*SwInterfaceSetL2Xconnect) GetMessageName() string {
-       return "sw_interface_set_l2_xconnect"
-}
-func (*SwInterfaceSetL2Xconnect) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*SwInterfaceSetL2Xconnect) GetCrcString() string {
-       return "48a4c4c8"
-}
-func NewSwInterfaceSetL2Xconnect() api.Message {
-       return &SwInterfaceSetL2Xconnect{}
-}
-
-// SwInterfaceSetL2XconnectReply represents the VPP binary API message 'sw_interface_set_l2_xconnect_reply'.
-// Generated from 'bin_api/vpe.api.json', line 354:
-//
-//        ["sw_interface_set_l2_xconnect_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x6e45eed4"}
-//        ],
-//
-type SwInterfaceSetL2XconnectReply struct {
-       Retval int32
-}
-
-func (*SwInterfaceSetL2XconnectReply) GetMessageName() string {
-       return "sw_interface_set_l2_xconnect_reply"
-}
-func (*SwInterfaceSetL2XconnectReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*SwInterfaceSetL2XconnectReply) GetCrcString() string {
-       return "6e45eed4"
-}
-func NewSwInterfaceSetL2XconnectReply() api.Message {
-       return &SwInterfaceSetL2XconnectReply{}
-}
-
-// SwInterfaceSetL2Bridge represents the VPP binary API message 'sw_interface_set_l2_bridge'.
-// Generated from 'bin_api/vpe.api.json', line 360:
-//
-//        ["sw_interface_set_l2_bridge",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "rx_sw_if_index"],
-//            ["u32", "bd_id"],
-//            ["u8", "shg"],
-//            ["u8", "bvi"],
-//            ["u8", "enable"],
-//            {"crc" : "0x36c739e8"}
-//        ],
-//
-type SwInterfaceSetL2Bridge struct {
-       RxSwIfIndex uint32
-       BdID        uint32
-       Shg         uint8
-       Bvi         uint8
-       Enable      uint8
-}
-
-func (*SwInterfaceSetL2Bridge) GetMessageName() string {
-       return "sw_interface_set_l2_bridge"
-}
-func (*SwInterfaceSetL2Bridge) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*SwInterfaceSetL2Bridge) GetCrcString() string {
-       return "36c739e8"
-}
-func NewSwInterfaceSetL2Bridge() api.Message {
-       return &SwInterfaceSetL2Bridge{}
-}
-
-// SwInterfaceSetL2BridgeReply represents the VPP binary API message 'sw_interface_set_l2_bridge_reply'.
-// Generated from 'bin_api/vpe.api.json', line 371:
-//
-//        ["sw_interface_set_l2_bridge_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x347e08d9"}
-//        ],
-//
-type SwInterfaceSetL2BridgeReply struct {
-       Retval int32
-}
-
-func (*SwInterfaceSetL2BridgeReply) GetMessageName() string {
-       return "sw_interface_set_l2_bridge_reply"
-}
-func (*SwInterfaceSetL2BridgeReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*SwInterfaceSetL2BridgeReply) GetCrcString() string {
-       return "347e08d9"
-}
-func NewSwInterfaceSetL2BridgeReply() api.Message {
-       return &SwInterfaceSetL2BridgeReply{}
-}
-
-// BdIPMacAddDel represents the VPP binary API message 'bd_ip_mac_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 377:
-//
-//        ["bd_ip_mac_add_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "bd_id"],
-//            ["u8", "is_add"],
-//            ["u8", "is_ipv6"],
-//            ["u8", "ip_address", 16],
-//            ["u8", "mac_address", 6],
-//            {"crc" : "0xad819817"}
-//        ],
-//
-type BdIPMacAddDel struct {
-       BdID       uint32
-       IsAdd      uint8
-       IsIpv6     uint8
-       IPAddress  []byte `struc:"[16]byte"`
-       MacAddress []byte `struc:"[6]byte"`
-}
-
-func (*BdIPMacAddDel) GetMessageName() string {
-       return "bd_ip_mac_add_del"
-}
-func (*BdIPMacAddDel) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*BdIPMacAddDel) GetCrcString() string {
-       return "ad819817"
-}
-func NewBdIPMacAddDel() api.Message {
-       return &BdIPMacAddDel{}
-}
-
-// BdIPMacAddDelReply represents the VPP binary API message 'bd_ip_mac_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 388:
-//
-//        ["bd_ip_mac_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x55bab3b4"}
-//        ],
-//
-type BdIPMacAddDelReply struct {
-       Retval int32
-}
-
-func (*BdIPMacAddDelReply) GetMessageName() string {
-       return "bd_ip_mac_add_del_reply"
-}
-func (*BdIPMacAddDelReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*BdIPMacAddDelReply) GetCrcString() string {
-       return "55bab3b4"
-}
-func NewBdIPMacAddDelReply() api.Message {
-       return &BdIPMacAddDelReply{}
-}
-
-// ClassifySetInterfaceIPTable represents the VPP binary API message 'classify_set_interface_ip_table'.
-// Generated from 'bin_api/vpe.api.json', line 394:
-//
-//        ["classify_set_interface_ip_table",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_ipv6"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "table_index"],
-//            {"crc" : "0x0dc45308"}
-//        ],
-//
-type ClassifySetInterfaceIPTable struct {
-       IsIpv6     uint8
-       SwIfIndex  uint32
-       TableIndex uint32
-}
-
-func (*ClassifySetInterfaceIPTable) GetMessageName() string {
-       return "classify_set_interface_ip_table"
-}
-func (*ClassifySetInterfaceIPTable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ClassifySetInterfaceIPTable) GetCrcString() string {
-       return "0dc45308"
-}
-func NewClassifySetInterfaceIPTable() api.Message {
-       return &ClassifySetInterfaceIPTable{}
-}
-
-// ClassifySetInterfaceIPTableReply represents the VPP binary API message 'classify_set_interface_ip_table_reply'.
-// Generated from 'bin_api/vpe.api.json', line 403:
-//
-//        ["classify_set_interface_ip_table_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xdc391c34"}
-//        ],
-//
-type ClassifySetInterfaceIPTableReply struct {
-       Retval int32
-}
-
-func (*ClassifySetInterfaceIPTableReply) GetMessageName() string {
-       return "classify_set_interface_ip_table_reply"
-}
-func (*ClassifySetInterfaceIPTableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ClassifySetInterfaceIPTableReply) GetCrcString() string {
-       return "dc391c34"
-}
-func NewClassifySetInterfaceIPTableReply() api.Message {
-       return &ClassifySetInterfaceIPTableReply{}
-}
-
-// ClassifySetInterfaceL2Tables represents the VPP binary API message 'classify_set_interface_l2_tables'.
-// Generated from 'bin_api/vpe.api.json', line 409:
-//
-//        ["classify_set_interface_l2_tables",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "ip4_table_index"],
-//            ["u32", "ip6_table_index"],
-//            ["u32", "other_table_index"],
-//            ["u8", "is_input"],
-//            {"crc" : "0xed9ccf0d"}
-//        ],
-//
-type ClassifySetInterfaceL2Tables struct {
-       SwIfIndex       uint32
-       IP4TableIndex   uint32
-       IP6TableIndex   uint32
-       OtherTableIndex uint32
-       IsInput         uint8
-}
-
-func (*ClassifySetInterfaceL2Tables) GetMessageName() string {
-       return "classify_set_interface_l2_tables"
-}
-func (*ClassifySetInterfaceL2Tables) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ClassifySetInterfaceL2Tables) GetCrcString() string {
-       return "ed9ccf0d"
-}
-func NewClassifySetInterfaceL2Tables() api.Message {
-       return &ClassifySetInterfaceL2Tables{}
-}
-
-// ClassifySetInterfaceL2TablesReply represents the VPP binary API message 'classify_set_interface_l2_tables_reply'.
-// Generated from 'bin_api/vpe.api.json', line 420:
-//
-//        ["classify_set_interface_l2_tables_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x8df20579"}
-//        ],
-//
-type ClassifySetInterfaceL2TablesReply struct {
-       Retval int32
-}
-
-func (*ClassifySetInterfaceL2TablesReply) GetMessageName() string {
-       return "classify_set_interface_l2_tables_reply"
-}
-func (*ClassifySetInterfaceL2TablesReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ClassifySetInterfaceL2TablesReply) GetCrcString() string {
-       return "8df20579"
-}
-func NewClassifySetInterfaceL2TablesReply() api.Message {
-       return &ClassifySetInterfaceL2TablesReply{}
-}
-
-// GetNodeIndex represents the VPP binary API message 'get_node_index'.
-// Generated from 'bin_api/vpe.api.json', line 426:
-//
-//        ["get_node_index",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "node_name", 64],
-//            {"crc" : "0x226d3f8c"}
-//        ],
-//
-type GetNodeIndex struct {
-       NodeName []byte `struc:"[64]byte"`
-}
-
-func (*GetNodeIndex) GetMessageName() string {
-       return "get_node_index"
-}
-func (*GetNodeIndex) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*GetNodeIndex) GetCrcString() string {
-       return "226d3f8c"
-}
-func NewGetNodeIndex() api.Message {
-       return &GetNodeIndex{}
-}
-
-// GetNodeIndexReply represents the VPP binary API message 'get_node_index_reply'.
-// Generated from 'bin_api/vpe.api.json', line 433:
-//
-//        ["get_node_index_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "node_index"],
-//            {"crc" : "0x29116865"}
-//        ],
-//
-type GetNodeIndexReply struct {
-       Retval    int32
-       NodeIndex uint32
-}
-
-func (*GetNodeIndexReply) GetMessageName() string {
-       return "get_node_index_reply"
-}
-func (*GetNodeIndexReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*GetNodeIndexReply) GetCrcString() string {
-       return "29116865"
-}
-func NewGetNodeIndexReply() api.Message {
-       return &GetNodeIndexReply{}
-}
-
-// AddNodeNext represents the VPP binary API message 'add_node_next'.
-// Generated from 'bin_api/vpe.api.json', line 440:
-//
-//        ["add_node_next",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "node_name", 64],
-//            ["u8", "next_name", 64],
-//            {"crc" : "0xe4202993"}
-//        ],
-//
-type AddNodeNext struct {
-       NodeName []byte `struc:"[64]byte"`
-       NextName []byte `struc:"[64]byte"`
-}
-
-func (*AddNodeNext) GetMessageName() string {
-       return "add_node_next"
-}
-func (*AddNodeNext) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*AddNodeNext) GetCrcString() string {
-       return "e4202993"
-}
-func NewAddNodeNext() api.Message {
-       return &AddNodeNext{}
-}
-
-// AddNodeNextReply represents the VPP binary API message 'add_node_next_reply'.
-// Generated from 'bin_api/vpe.api.json', line 448:
-//
-//        ["add_node_next_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "next_index"],
-//            {"crc" : "0xe89d6eed"}
-//        ],
-//
-type AddNodeNextReply struct {
-       Retval    int32
-       NextIndex uint32
-}
-
-func (*AddNodeNextReply) GetMessageName() string {
-       return "add_node_next_reply"
-}
-func (*AddNodeNextReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*AddNodeNextReply) GetCrcString() string {
-       return "e89d6eed"
-}
-func NewAddNodeNextReply() api.Message {
-       return &AddNodeNextReply{}
-}
-
-// L2InterfaceEfpFilter represents the VPP binary API message 'l2_interface_efp_filter'.
-// Generated from 'bin_api/vpe.api.json', line 455:
-//
-//        ["l2_interface_efp_filter",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "enable_disable"],
-//            {"crc" : "0x07c9d601"}
-//        ],
-//
-type L2InterfaceEfpFilter struct {
-       SwIfIndex     uint32
-       EnableDisable uint32
-}
-
-func (*L2InterfaceEfpFilter) GetMessageName() string {
-       return "l2_interface_efp_filter"
-}
-func (*L2InterfaceEfpFilter) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*L2InterfaceEfpFilter) GetCrcString() string {
-       return "07c9d601"
-}
-func NewL2InterfaceEfpFilter() api.Message {
-       return &L2InterfaceEfpFilter{}
-}
-
-// L2InterfaceEfpFilterReply represents the VPP binary API message 'l2_interface_efp_filter_reply'.
-// Generated from 'bin_api/vpe.api.json', line 463:
-//
-//        ["l2_interface_efp_filter_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x0f4bb0c0"}
-//        ],
-//
-type L2InterfaceEfpFilterReply struct {
-       Retval int32
-}
-
-func (*L2InterfaceEfpFilterReply) GetMessageName() string {
-       return "l2_interface_efp_filter_reply"
-}
-func (*L2InterfaceEfpFilterReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*L2InterfaceEfpFilterReply) GetCrcString() string {
-       return "0f4bb0c0"
-}
-func NewL2InterfaceEfpFilterReply() api.Message {
-       return &L2InterfaceEfpFilterReply{}
-}
-
-// CreateSubif represents the VPP binary API message 'create_subif'.
-// Generated from 'bin_api/vpe.api.json', line 469:
-//
-//        ["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" : "0x150e6757"}
-//        ],
-//
-type CreateSubif struct {
-       SwIfIndex      uint32
-       SubID          uint32
-       NoTags         uint8
-       OneTag         uint8
-       TwoTags        uint8
-       Dot1ad         uint8
-       ExactMatch     uint8
-       DefaultSub     uint8
-       OuterVlanIDAny uint8
-       InnerVlanIDAny uint8
-       OuterVlanID    uint16
-       InnerVlanID    uint16
-}
-
-func (*CreateSubif) GetMessageName() string {
-       return "create_subif"
-}
-func (*CreateSubif) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*CreateSubif) GetCrcString() string {
-       return "150e6757"
-}
-func NewCreateSubif() api.Message {
-       return &CreateSubif{}
-}
-
-// CreateSubifReply represents the VPP binary API message 'create_subif_reply'.
-// Generated from 'bin_api/vpe.api.json', line 487:
-//
-//        ["create_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x92272bcb"}
-//        ],
-//
-type CreateSubifReply struct {
-       Retval    int32
-       SwIfIndex uint32
-}
-
-func (*CreateSubifReply) GetMessageName() string {
-       return "create_subif_reply"
-}
-func (*CreateSubifReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*CreateSubifReply) GetCrcString() string {
-       return "92272bcb"
-}
-func NewCreateSubifReply() api.Message {
-       return &CreateSubifReply{}
-}
-
-// ShowVersion represents the VPP binary API message 'show_version'.
-// Generated from 'bin_api/vpe.api.json', line 494:
-//
-//        ["show_version",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xf18f9480"}
-//        ],
-//
-type ShowVersion struct {
-}
-
-func (*ShowVersion) GetMessageName() string {
-       return "show_version"
-}
-func (*ShowVersion) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*ShowVersion) GetCrcString() string {
-       return "f18f9480"
-}
-func NewShowVersion() api.Message {
-       return &ShowVersion{}
-}
-
-// ShowVersionReply represents the VPP binary API message 'show_version_reply'.
-// Generated from 'bin_api/vpe.api.json', line 500:
-//
-//        ["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" : "0x83186d9e"}
-//        ],
-//
-type ShowVersionReply struct {
-       Retval         int32
-       Program        []byte `struc:"[32]byte"`
-       Version        []byte `struc:"[32]byte"`
-       BuildDate      []byte `struc:"[32]byte"`
-       BuildDirectory []byte `struc:"[256]byte"`
-}
-
-func (*ShowVersionReply) GetMessageName() string {
-       return "show_version_reply"
-}
-func (*ShowVersionReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*ShowVersionReply) GetCrcString() string {
-       return "83186d9e"
-}
-func NewShowVersionReply() api.Message {
-       return &ShowVersionReply{}
-}
-
-// InterfaceNameRenumber represents the VPP binary API message 'interface_name_renumber'.
-// Generated from 'bin_api/vpe.api.json', line 510:
-//
-//        ["interface_name_renumber",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "new_show_dev_instance"],
-//            {"crc" : "0x11b7bcec"}
-//        ],
-//
-type InterfaceNameRenumber struct {
-       SwIfIndex          uint32
-       NewShowDevInstance uint32
-}
-
-func (*InterfaceNameRenumber) GetMessageName() string {
-       return "interface_name_renumber"
-}
-func (*InterfaceNameRenumber) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*InterfaceNameRenumber) GetCrcString() string {
-       return "11b7bcec"
-}
-func NewInterfaceNameRenumber() api.Message {
-       return &InterfaceNameRenumber{}
-}
-
-// InterfaceNameRenumberReply represents the VPP binary API message 'interface_name_renumber_reply'.
-// Generated from 'bin_api/vpe.api.json', line 518:
-//
-//        ["interface_name_renumber_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x31594963"}
-//        ],
-//
-type InterfaceNameRenumberReply struct {
-       Retval int32
-}
-
-func (*InterfaceNameRenumberReply) GetMessageName() string {
-       return "interface_name_renumber_reply"
-}
-func (*InterfaceNameRenumberReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*InterfaceNameRenumberReply) GetCrcString() string {
-       return "31594963"
-}
-func NewInterfaceNameRenumberReply() api.Message {
-       return &InterfaceNameRenumberReply{}
-}
-
-// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
-// Generated from 'bin_api/vpe.api.json', line 524:
-//
-//        ["want_ip4_arp_events",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "enable_disable"],
-//            ["u32", "pid"],
-//            ["u32", "address"],
-//            {"crc" : "0x5ae044c2"}
-//        ],
-//
-type WantIP4ArpEvents struct {
-       EnableDisable uint8
-       Pid           uint32
-       Address       uint32
-}
-
-func (*WantIP4ArpEvents) GetMessageName() string {
-       return "want_ip4_arp_events"
-}
-func (*WantIP4ArpEvents) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*WantIP4ArpEvents) GetCrcString() string {
-       return "5ae044c2"
-}
-func NewWantIP4ArpEvents() api.Message {
-       return &WantIP4ArpEvents{}
-}
-
-// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
-// Generated from 'bin_api/vpe.api.json', line 533:
-//
-//        ["want_ip4_arp_events_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xe1c0b59e"}
-//        ],
-//
-type WantIP4ArpEventsReply struct {
-       Retval int32
-}
-
-func (*WantIP4ArpEventsReply) GetMessageName() string {
-       return "want_ip4_arp_events_reply"
-}
-func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*WantIP4ArpEventsReply) GetCrcString() string {
-       return "e1c0b59e"
-}
-func NewWantIP4ArpEventsReply() api.Message {
-       return &WantIP4ArpEventsReply{}
-}
-
-// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
-// Generated from 'bin_api/vpe.api.json', line 539:
-//
-//        ["ip4_arp_event",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "address"],
-//            ["u32", "pid"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "new_mac", 6],
-//            ["u8", "mac_ip"],
-//            {"crc" : "0x7de1837b"}
-//        ],
-//
-type IP4ArpEvent struct {
-       Address   uint32
-       Pid       uint32
-       SwIfIndex uint32
-       NewMac    []byte `struc:"[6]byte"`
-       MacIP     uint8
-}
-
-func (*IP4ArpEvent) GetMessageName() string {
-       return "ip4_arp_event"
-}
-func (*IP4ArpEvent) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*IP4ArpEvent) GetCrcString() string {
-       return "7de1837b"
-}
-func NewIP4ArpEvent() api.Message {
-       return &IP4ArpEvent{}
-}
-
-// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
-// Generated from 'bin_api/vpe.api.json', line 550:
-//
-//        ["want_ip6_nd_events",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "enable_disable"],
-//            ["u32", "pid"],
-//            ["u8", "address", 16],
-//            {"crc" : "0x9586ba55"}
-//        ],
-//
-type WantIP6NdEvents struct {
-       EnableDisable uint8
-       Pid           uint32
-       Address       []byte `struc:"[16]byte"`
-}
-
-func (*WantIP6NdEvents) GetMessageName() string {
-       return "want_ip6_nd_events"
-}
-func (*WantIP6NdEvents) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*WantIP6NdEvents) GetCrcString() string {
-       return "9586ba55"
-}
-func NewWantIP6NdEvents() api.Message {
-       return &WantIP6NdEvents{}
-}
-
-// WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'.
-// Generated from 'bin_api/vpe.api.json', line 559:
-//
-//        ["want_ip6_nd_events_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x95458aad"}
-//        ],
-//
-type WantIP6NdEventsReply struct {
-       Retval int32
-}
-
-func (*WantIP6NdEventsReply) GetMessageName() string {
-       return "want_ip6_nd_events_reply"
-}
-func (*WantIP6NdEventsReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*WantIP6NdEventsReply) GetCrcString() string {
-       return "95458aad"
-}
-func NewWantIP6NdEventsReply() api.Message {
-       return &WantIP6NdEventsReply{}
-}
-
-// IP6NdEvent represents the VPP binary API message 'ip6_nd_event'.
-// Generated from 'bin_api/vpe.api.json', line 565:
-//
-//        ["ip6_nd_event",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "pid"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "address", 16],
-//            ["u8", "new_mac", 6],
-//            ["u8", "mac_ip"],
-//            {"crc" : "0x777bb71c"}
-//        ],
-//
-type IP6NdEvent struct {
-       Pid       uint32
-       SwIfIndex uint32
-       Address   []byte `struc:"[16]byte"`
-       NewMac    []byte `struc:"[6]byte"`
-       MacIP     uint8
-}
-
-func (*IP6NdEvent) GetMessageName() string {
-       return "ip6_nd_event"
-}
-func (*IP6NdEvent) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*IP6NdEvent) GetCrcString() string {
-       return "777bb71c"
-}
-func NewIP6NdEvent() api.Message {
-       return &IP6NdEvent{}
-}
-
-// InputACLSetInterface represents the VPP binary API message 'input_acl_set_interface'.
-// Generated from 'bin_api/vpe.api.json', line 576:
-//
-//        ["input_acl_set_interface",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "ip4_table_index"],
-//            ["u32", "ip6_table_index"],
-//            ["u32", "l2_table_index"],
-//            ["u8", "is_add"],
-//            {"crc" : "0x34d2fc33"}
-//        ],
-//
-type InputACLSetInterface struct {
-       SwIfIndex     uint32
-       IP4TableIndex uint32
-       IP6TableIndex uint32
-       L2TableIndex  uint32
-       IsAdd         uint8
-}
-
-func (*InputACLSetInterface) GetMessageName() string {
-       return "input_acl_set_interface"
-}
-func (*InputACLSetInterface) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*InputACLSetInterface) GetCrcString() string {
-       return "34d2fc33"
-}
-func NewInputACLSetInterface() api.Message {
-       return &InputACLSetInterface{}
-}
-
-// InputACLSetInterfaceReply represents the VPP binary API message 'input_acl_set_interface_reply'.
-// Generated from 'bin_api/vpe.api.json', line 587:
-//
-//        ["input_acl_set_interface_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xba0110e3"}
-//        ],
-//
-type InputACLSetInterfaceReply struct {
-       Retval int32
-}
-
-func (*InputACLSetInterfaceReply) GetMessageName() string {
-       return "input_acl_set_interface_reply"
-}
-func (*InputACLSetInterfaceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*InputACLSetInterfaceReply) GetCrcString() string {
-       return "ba0110e3"
-}
-func NewInputACLSetInterfaceReply() api.Message {
-       return &InputACLSetInterfaceReply{}
-}
-
-// GetNodeGraph represents the VPP binary API message 'get_node_graph'.
-// Generated from 'bin_api/vpe.api.json', line 593:
-//
-//        ["get_node_graph",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xf8636a76"}
-//        ],
-//
-type GetNodeGraph struct {
-}
-
-func (*GetNodeGraph) GetMessageName() string {
-       return "get_node_graph"
-}
-func (*GetNodeGraph) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*GetNodeGraph) GetCrcString() string {
-       return "f8636a76"
-}
-func NewGetNodeGraph() api.Message {
-       return &GetNodeGraph{}
-}
-
-// GetNodeGraphReply represents the VPP binary API message 'get_node_graph_reply'.
-// Generated from 'bin_api/vpe.api.json', line 599:
-//
-//        ["get_node_graph_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u64", "reply_in_shmem"],
-//            {"crc" : "0x816d91b6"}
-//        ],
-//
-type GetNodeGraphReply struct {
-       Retval       int32
-       ReplyInShmem uint64
-}
-
-func (*GetNodeGraphReply) GetMessageName() string {
-       return "get_node_graph_reply"
-}
-func (*GetNodeGraphReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*GetNodeGraphReply) GetCrcString() string {
-       return "816d91b6"
-}
-func NewGetNodeGraphReply() api.Message {
-       return &GetNodeGraphReply{}
-}
-
-// IoamEnable represents the VPP binary API message 'ioam_enable'.
-// Generated from 'bin_api/vpe.api.json', line 606:
-//
-//        ["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" : "0x7bd4abf9"}
-//        ],
-//
-type IoamEnable struct {
-       ID          uint16
-       Seqno       uint8
-       Analyse     uint8
-       PotEnable   uint8
-       TraceEnable uint8
-       NodeID      uint32
-}
-
-func (*IoamEnable) GetMessageName() string {
-       return "ioam_enable"
-}
-func (*IoamEnable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*IoamEnable) GetCrcString() string {
-       return "7bd4abf9"
-}
-func NewIoamEnable() api.Message {
-       return &IoamEnable{}
-}
-
-// IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 618:
-//
-//        ["ioam_enable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x58a8fedc"}
-//        ],
-//
-type IoamEnableReply struct {
-       Retval int32
-}
-
-func (*IoamEnableReply) GetMessageName() string {
-       return "ioam_enable_reply"
-}
-func (*IoamEnableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*IoamEnableReply) GetCrcString() string {
-       return "58a8fedc"
-}
-func NewIoamEnableReply() api.Message {
-       return &IoamEnableReply{}
-}
-
-// IoamDisable represents the VPP binary API message 'ioam_disable'.
-// Generated from 'bin_api/vpe.api.json', line 624:
-//
-//        ["ioam_disable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u16", "id"],
-//            {"crc" : "0xaff26d33"}
-//        ],
-//
-type IoamDisable struct {
-       ID uint16
-}
-
-func (*IoamDisable) GetMessageName() string {
-       return "ioam_disable"
-}
-func (*IoamDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*IoamDisable) GetCrcString() string {
-       return "aff26d33"
-}
-func NewIoamDisable() api.Message {
-       return &IoamDisable{}
-}
-
-// IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 631:
-//
-//        ["ioam_disable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xef118a9d"}
-//        ],
-//
-type IoamDisableReply struct {
-       Retval int32
-}
-
-func (*IoamDisableReply) GetMessageName() string {
-       return "ioam_disable_reply"
-}
-func (*IoamDisableReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*IoamDisableReply) GetCrcString() string {
-       return "ef118a9d"
-}
-func NewIoamDisableReply() api.Message {
-       return &IoamDisableReply{}
-}
-
-// GetNextIndex represents the VPP binary API message 'get_next_index'.
-// Generated from 'bin_api/vpe.api.json', line 637:
+// ControlPing represents the VPP binary API message 'control_ping'.
+// Generated from 'bin_api/vpe.api.json', line 48:
 //
-//        ["get_next_index",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "node_name", 64],
-//            ["u8", "next_name", 64],
-//            {"crc" : "0x52f0e416"}
-//        ],
+//            "control_ping",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
-type GetNextIndex struct {
-       NodeName []byte `struc:"[64]byte"`
-       NextName []byte `struc:"[64]byte"`
+type ControlPing struct {
 }
 
-func (*GetNextIndex) GetMessageName() string {
-       return "get_next_index"
+func (*ControlPing) GetMessageName() string {
+       return "control_ping"
 }
-func (*GetNextIndex) GetMessageType() api.MessageType {
+func (*ControlPing) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*GetNextIndex) GetCrcString() string {
-       return "52f0e416"
+func (*ControlPing) GetCrcString() string {
+       return "51077d14"
 }
-func NewGetNextIndex() api.Message {
-       return &GetNextIndex{}
+func NewControlPing() api.Message {
+       return &ControlPing{}
 }
 
-// GetNextIndexReply represents the VPP binary API message 'get_next_index_reply'.
-// Generated from 'bin_api/vpe.api.json', line 645:
-//
-//        ["get_next_index_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "next_index"],
-//            {"crc" : "0x671fbdb1"}
-//        ],
+// ControlPingReply represents the VPP binary API message 'control_ping_reply'.
+// Generated from 'bin_api/vpe.api.json', line 66:
+//
+//            "control_ping_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "vpe_pid"
+//            ],
+//            {
+//                "crc": "0xf6b0b8ca"
+//            }
 //
-type GetNextIndexReply struct {
-       Retval    int32
-       NextIndex uint32
+type ControlPingReply struct {
+       Retval      int32
+       ClientIndex uint32
+       VpePid      uint32
 }
 
-func (*GetNextIndexReply) GetMessageName() string {
-       return "get_next_index_reply"
+func (*ControlPingReply) GetMessageName() string {
+       return "control_ping_reply"
 }
-func (*GetNextIndexReply) GetMessageType() api.MessageType {
+func (*ControlPingReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*GetNextIndexReply) GetCrcString() string {
-       return "671fbdb1"
+func (*ControlPingReply) GetCrcString() string {
+       return "f6b0b8ca"
 }
-func NewGetNextIndexReply() api.Message {
-       return &GetNextIndexReply{}
+func NewControlPingReply() api.Message {
+       return &ControlPingReply{}
 }
 
-// PgCreateInterface represents the VPP binary API message 'pg_create_interface'.
-// Generated from 'bin_api/vpe.api.json', line 652:
+// Cli represents the VPP binary API message 'cli'.
+// Generated from 'bin_api/vpe.api.json', line 92:
 //
-//        ["pg_create_interface",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "interface_id"],
-//            {"crc" : "0x253c5959"}
-//        ],
+//            "cli",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u64",
+//                "cmd_in_shmem"
+//            ],
+//            {
+//                "crc": "0x23bfbfff"
+//            }
 //
-type PgCreateInterface struct {
-       InterfaceID uint32
+type Cli struct {
+       CmdInShmem uint64
 }
 
-func (*PgCreateInterface) GetMessageName() string {
-       return "pg_create_interface"
+func (*Cli) GetMessageName() string {
+       return "cli"
 }
-func (*PgCreateInterface) GetMessageType() api.MessageType {
+func (*Cli) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*PgCreateInterface) GetCrcString() string {
-       return "253c5959"
-}
-func NewPgCreateInterface() api.Message {
-       return &PgCreateInterface{}
-}
-
-// PgCreateInterfaceReply represents the VPP binary API message 'pg_create_interface_reply'.
-// Generated from 'bin_api/vpe.api.json', line 659:
-//
-//        ["pg_create_interface_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x21b4f949"}
-//        ],
-//
-type PgCreateInterfaceReply struct {
-       Retval    int32
-       SwIfIndex uint32
-}
-
-func (*PgCreateInterfaceReply) GetMessageName() string {
-       return "pg_create_interface_reply"
-}
-func (*PgCreateInterfaceReply) GetMessageType() api.MessageType {
-       return api.ReplyMessage
-}
-func (*PgCreateInterfaceReply) GetCrcString() string {
-       return "21b4f949"
+func (*Cli) GetCrcString() string {
+       return "23bfbfff"
 }
-func NewPgCreateInterfaceReply() api.Message {
-       return &PgCreateInterfaceReply{}
+func NewCli() api.Message {
+       return &Cli{}
 }
 
-// PgCapture represents the VPP binary API message 'pg_capture'.
-// Generated from 'bin_api/vpe.api.json', line 666:
+// CliInband represents the VPP binary API message 'cli_inband'.
+// Generated from 'bin_api/vpe.api.json', line 114:
 //
-//        ["pg_capture",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "interface_id"],
-//            ["u8", "is_enabled"],
-//            ["u32", "count"],
-//            ["u32", "pcap_name_length"],
-//            ["u8", "pcap_file_name", 0, "pcap_name_length"],
-//            {"crc" : "0x6ac7fe78"}
-//        ],
+//            "cli_inband",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "length"
+//            ],
+//            [
+//                "u8",
+//                "cmd",
+//                0,
+//                "length"
+//            ],
+//            {
+//                "crc": "0x74e00a49"
+//            }
 //
-type PgCapture struct {
-       InterfaceID    uint32
-       IsEnabled      uint8
-       Count          uint32
-       PcapNameLength uint32 `struc:"sizeof=PcapFileName"`
-       PcapFileName   []byte
+type CliInband struct {
+       Length uint32 `struc:"sizeof=Cmd"`
+       Cmd    []byte
 }
 
-func (*PgCapture) GetMessageName() string {
-       return "pg_capture"
+func (*CliInband) GetMessageName() string {
+       return "cli_inband"
 }
-func (*PgCapture) GetMessageType() api.MessageType {
+func (*CliInband) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*PgCapture) GetCrcString() string {
-       return "6ac7fe78"
+func (*CliInband) GetCrcString() string {
+       return "74e00a49"
 }
-func NewPgCapture() api.Message {
-       return &PgCapture{}
+func NewCliInband() api.Message {
+       return &CliInband{}
 }
 
-// PgCaptureReply represents the VPP binary API message 'pg_capture_reply'.
-// Generated from 'bin_api/vpe.api.json', line 677:
+// CliReply represents the VPP binary API message 'cli_reply'.
+// Generated from 'bin_api/vpe.api.json', line 142:
 //
-//        ["pg_capture_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xf403693b"}
-//        ],
+//            "cli_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u64",
+//                "reply_in_shmem"
+//            ],
+//            {
+//                "crc": "0x06d68297"
+//            }
 //
-type PgCaptureReply struct {
-       Retval int32
+type CliReply struct {
+       Retval       int32
+       ReplyInShmem uint64
 }
 
-func (*PgCaptureReply) GetMessageName() string {
-       return "pg_capture_reply"
+func (*CliReply) GetMessageName() string {
+       return "cli_reply"
 }
-func (*PgCaptureReply) GetMessageType() api.MessageType {
+func (*CliReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*PgCaptureReply) GetCrcString() string {
-       return "f403693b"
-}
-func NewPgCaptureReply() api.Message {
-       return &PgCaptureReply{}
-}
-
-// PgEnableDisable represents the VPP binary API message 'pg_enable_disable'.
-// Generated from 'bin_api/vpe.api.json', line 683:
-//
-//        ["pg_enable_disable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_enabled"],
-//            ["u32", "stream_name_length"],
-//            ["u8", "stream_name", 0, "stream_name_length"],
-//            {"crc" : "0x7d0b90ff"}
-//        ],
-//
-type PgEnableDisable struct {
-       IsEnabled        uint8
-       StreamNameLength uint32 `struc:"sizeof=StreamName"`
-       StreamName       []byte
-}
-
-func (*PgEnableDisable) GetMessageName() string {
-       return "pg_enable_disable"
-}
-func (*PgEnableDisable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*PgEnableDisable) GetCrcString() string {
-       return "7d0b90ff"
+func (*CliReply) GetCrcString() string {
+       return "06d68297"
 }
-func NewPgEnableDisable() api.Message {
-       return &PgEnableDisable{}
+func NewCliReply() api.Message {
+       return &CliReply{}
 }
 
-// PgEnableDisableReply represents the VPP binary API message 'pg_enable_disable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 692:
-//
-//        ["pg_enable_disable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x02253bd6"}
-//        ],
+// CliInbandReply represents the VPP binary API message 'cli_inband_reply'.
+// Generated from 'bin_api/vpe.api.json', line 164:
+//
+//            "cli_inband_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "length"
+//            ],
+//            [
+//                "u8",
+//                "reply",
+//                0,
+//                "length"
+//            ],
+//            {
+//                "crc": "0x1f22bbb8"
+//            }
 //
-type PgEnableDisableReply struct {
+type CliInbandReply struct {
        Retval int32
+       Length uint32 `struc:"sizeof=Reply"`
+       Reply  []byte
 }
 
-func (*PgEnableDisableReply) GetMessageName() string {
-       return "pg_enable_disable_reply"
+func (*CliInbandReply) GetMessageName() string {
+       return "cli_inband_reply"
 }
-func (*PgEnableDisableReply) GetMessageType() api.MessageType {
+func (*CliInbandReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*PgEnableDisableReply) GetCrcString() string {
-       return "02253bd6"
+func (*CliInbandReply) GetCrcString() string {
+       return "1f22bbb8"
 }
-func NewPgEnableDisableReply() api.Message {
-       return &PgEnableDisableReply{}
+func NewCliInbandReply() api.Message {
+       return &CliInbandReply{}
 }
 
-// IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 698:
-//
-//        ["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" : "0x0f8c6ba0"}
-//        ],
+// GetNodeIndex represents the VPP binary API message 'get_node_index'.
+// Generated from 'bin_api/vpe.api.json', line 192:
+//
+//            "get_node_index",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "node_name",
+//                64
+//            ],
+//            {
+//                "crc": "0x6c9a495d"
+//            }
 //
-type IPSourceAndPortRangeCheckAddDel struct {
-       IsIpv6         uint8
-       IsAdd          uint8
-       MaskLength     uint8
-       Address        []byte `struc:"[16]byte"`
-       NumberOfRanges uint8
-       LowPorts       []uint16 `struc:"[32]uint16"`
-       HighPorts      []uint16 `struc:"[32]uint16"`
-       VrfID          uint32
+type GetNodeIndex struct {
+       NodeName []byte `struc:"[64]byte"`
 }
 
-func (*IPSourceAndPortRangeCheckAddDel) GetMessageName() string {
-       return "ip_source_and_port_range_check_add_del"
+func (*GetNodeIndex) GetMessageName() string {
+       return "get_node_index"
 }
-func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
+func (*GetNodeIndex) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string {
-       return "0f8c6ba0"
+func (*GetNodeIndex) GetCrcString() string {
+       return "6c9a495d"
 }
-func NewIPSourceAndPortRangeCheckAddDel() api.Message {
-       return &IPSourceAndPortRangeCheckAddDel{}
+func NewGetNodeIndex() api.Message {
+       return &GetNodeIndex{}
 }
 
-// IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 712:
+// GetNodeIndexReply represents the VPP binary API message 'get_node_index_reply'.
+// Generated from 'bin_api/vpe.api.json', line 215:
 //
-//        ["ip_source_and_port_range_check_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x35df8160"}
-//        ],
+//            "get_node_index_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "node_index"
+//            ],
+//            {
+//                "crc": "0xa8600b89"
+//            }
 //
-type IPSourceAndPortRangeCheckAddDelReply struct {
-       Retval int32
+type GetNodeIndexReply struct {
+       Retval    int32
+       NodeIndex uint32
 }
 
-func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageName() string {
-       return "ip_source_and_port_range_check_add_del_reply"
+func (*GetNodeIndexReply) GetMessageName() string {
+       return "get_node_index_reply"
 }
-func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType {
+func (*GetNodeIndexReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*IPSourceAndPortRangeCheckAddDelReply) GetCrcString() string {
-       return "35df8160"
+func (*GetNodeIndexReply) GetCrcString() string {
+       return "a8600b89"
 }
-func NewIPSourceAndPortRangeCheckAddDelReply() api.Message {
-       return &IPSourceAndPortRangeCheckAddDelReply{}
+func NewGetNodeIndexReply() api.Message {
+       return &GetNodeIndexReply{}
 }
 
-// IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'.
-// Generated from 'bin_api/vpe.api.json', line 718:
-//
-//        ["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" : "0x4a6438f1"}
-//        ],
+// AddNodeNext represents the VPP binary API message 'add_node_next'.
+// Generated from 'bin_api/vpe.api.json', line 237:
+//
+//            "add_node_next",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "node_name",
+//                64
+//            ],
+//            [
+//                "u8",
+//                "next_name",
+//                64
+//            ],
+//            {
+//                "crc": "0x9ab92f7a"
+//            }
 //
-type IPSourceAndPortRangeCheckInterfaceAddDel struct {
-       IsAdd       uint8
-       SwIfIndex   uint32
-       TCPInVrfID  uint32
-       TCPOutVrfID uint32
-       UDPInVrfID  uint32
-       UDPOutVrfID uint32
+type AddNodeNext struct {
+       NodeName []byte `struc:"[64]byte"`
+       NextName []byte `struc:"[64]byte"`
 }
 
-func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageName() string {
-       return "ip_source_and_port_range_check_interface_add_del"
+func (*AddNodeNext) GetMessageName() string {
+       return "add_node_next"
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageType {
+func (*AddNodeNext) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetCrcString() string {
-       return "4a6438f1"
+func (*AddNodeNext) GetCrcString() string {
+       return "9ab92f7a"
 }
-func NewIPSourceAndPortRangeCheckInterfaceAddDel() api.Message {
-       return &IPSourceAndPortRangeCheckInterfaceAddDel{}
+func NewAddNodeNext() api.Message {
+       return &AddNodeNext{}
 }
 
-// IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'.
-// Generated from 'bin_api/vpe.api.json', line 730:
-//
-//        ["ip_source_and_port_range_check_interface_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x6b940f04"}
-//        ],
+// AddNodeNextReply represents the VPP binary API message 'add_node_next_reply'.
+// Generated from 'bin_api/vpe.api.json', line 265:
+//
+//            "add_node_next_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "next_index"
+//            ],
+//            {
+//                "crc": "0x2ed75f32"
+//            }
 //
-type IPSourceAndPortRangeCheckInterfaceAddDelReply struct {
-       Retval int32
+type AddNodeNextReply struct {
+       Retval    int32
+       NextIndex uint32
 }
 
-func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageName() string {
-       return "ip_source_and_port_range_check_interface_add_del_reply"
+func (*AddNodeNextReply) GetMessageName() string {
+       return "add_node_next_reply"
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.MessageType {
+func (*AddNodeNextReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetCrcString() string {
-       return "6b940f04"
+func (*AddNodeNextReply) GetCrcString() string {
+       return "2ed75f32"
 }
-func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
-       return &IPSourceAndPortRangeCheckInterfaceAddDelReply{}
+func NewAddNodeNextReply() api.Message {
+       return &AddNodeNextReply{}
 }
 
-// DeleteSubif represents the VPP binary API message 'delete_subif'.
-// Generated from 'bin_api/vpe.api.json', line 736:
+// ShowVersion represents the VPP binary API message 'show_version'.
+// Generated from 'bin_api/vpe.api.json', line 287:
 //
-//        ["delete_subif",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x6038f848"}
-//        ],
+//            "show_version",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
-type DeleteSubif struct {
-       SwIfIndex uint32
+type ShowVersion struct {
 }
 
-func (*DeleteSubif) GetMessageName() string {
-       return "delete_subif"
+func (*ShowVersion) GetMessageName() string {
+       return "show_version"
 }
-func (*DeleteSubif) GetMessageType() api.MessageType {
+func (*ShowVersion) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*DeleteSubif) GetCrcString() string {
-       return "6038f848"
+func (*ShowVersion) GetCrcString() string {
+       return "51077d14"
 }
-func NewDeleteSubif() api.Message {
-       return &DeleteSubif{}
+func NewShowVersion() api.Message {
+       return &ShowVersion{}
 }
 
-// DeleteSubifReply represents the VPP binary API message 'delete_subif_reply'.
-// Generated from 'bin_api/vpe.api.json', line 743:
-//
-//        ["delete_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x9d6015dc"}
-//        ],
+// ShowVersionReply represents the VPP binary API message 'show_version_reply'.
+// Generated from 'bin_api/vpe.api.json', line 305:
+//
+//            "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 DeleteSubifReply struct {
-       Retval int32
+type ShowVersionReply struct {
+       Retval         int32
+       Program        []byte `struc:"[32]byte"`
+       Version        []byte `struc:"[32]byte"`
+       BuildDate      []byte `struc:"[32]byte"`
+       BuildDirectory []byte `struc:"[256]byte"`
 }
 
-func (*DeleteSubifReply) GetMessageName() string {
-       return "delete_subif_reply"
+func (*ShowVersionReply) GetMessageName() string {
+       return "show_version_reply"
 }
-func (*DeleteSubifReply) GetMessageType() api.MessageType {
+func (*ShowVersionReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*DeleteSubifReply) GetCrcString() string {
-       return "9d6015dc"
+func (*ShowVersionReply) GetCrcString() string {
+       return "8b5a13b4"
 }
-func NewDeleteSubifReply() api.Message {
-       return &DeleteSubifReply{}
+func NewShowVersionReply() api.Message {
+       return &ShowVersionReply{}
 }
 
-// Punt represents the VPP binary API message 'punt'.
-// Generated from 'bin_api/vpe.api.json', line 749:
-//
-//        ["punt",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_add"],
-//            ["u8", "ipv"],
-//            ["u8", "l4_protocol"],
-//            ["u16", "l4_port"],
-//            {"crc" : "0x4559c976"}
-//        ],
+// GetNodeGraph represents the VPP binary API message 'get_node_graph'.
+// Generated from 'bin_api/vpe.api.json', line 343:
+//
+//            "get_node_graph",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
-type Punt struct {
-       IsAdd      uint8
-       Ipv        uint8
-       L4Protocol uint8
-       L4Port     uint16
+type GetNodeGraph struct {
 }
 
-func (*Punt) GetMessageName() string {
-       return "punt"
+func (*GetNodeGraph) GetMessageName() string {
+       return "get_node_graph"
 }
-func (*Punt) GetMessageType() api.MessageType {
+func (*GetNodeGraph) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*Punt) GetCrcString() string {
-       return "4559c976"
+func (*GetNodeGraph) GetCrcString() string {
+       return "51077d14"
 }
-func NewPunt() api.Message {
-       return &Punt{}
+func NewGetNodeGraph() api.Message {
+       return &GetNodeGraph{}
 }
 
-// PuntReply represents the VPP binary API message 'punt_reply'.
-// Generated from 'bin_api/vpe.api.json', line 759:
-//
-//        ["punt_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xcca27fbe"}
-//        ],
+// GetNodeGraphReply represents the VPP binary API message 'get_node_graph_reply'.
+// Generated from 'bin_api/vpe.api.json', line 361:
+//
+//            "get_node_graph_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u64",
+//                "reply_in_shmem"
+//            ],
+//            {
+//                "crc": "0x06d68297"
+//            }
 //
-type PuntReply struct {
-       Retval int32
+type GetNodeGraphReply struct {
+       Retval       int32
+       ReplyInShmem uint64
 }
 
-func (*PuntReply) GetMessageName() string {
-       return "punt_reply"
+func (*GetNodeGraphReply) GetMessageName() string {
+       return "get_node_graph_reply"
 }
-func (*PuntReply) GetMessageType() api.MessageType {
+func (*GetNodeGraphReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*PuntReply) GetCrcString() string {
-       return "cca27fbe"
+func (*GetNodeGraphReply) GetCrcString() string {
+       return "06d68297"
 }
-func NewPuntReply() api.Message {
-       return &PuntReply{}
+func NewGetNodeGraphReply() api.Message {
+       return &GetNodeGraphReply{}
 }
 
-// FeatureEnableDisable represents the VPP binary API message 'feature_enable_disable'.
-// Generated from 'bin_api/vpe.api.json', line 765:
-//
-//        ["feature_enable_disable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "enable"],
-//            ["u8", "arc_name", 64],
-//            ["u8", "feature_name", 64],
-//            {"crc" : "0xbc86393b"}
-//        ],
+// GetNextIndex represents the VPP binary API message 'get_next_index'.
+// Generated from 'bin_api/vpe.api.json', line 383:
+//
+//            "get_next_index",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "node_name",
+//                64
+//            ],
+//            [
+//                "u8",
+//                "next_name",
+//                64
+//            ],
+//            {
+//                "crc": "0x9ab92f7a"
+//            }
 //
-type FeatureEnableDisable struct {
-       SwIfIndex   uint32
-       Enable      uint8
-       ArcName     []byte `struc:"[64]byte"`
-       FeatureName []byte `struc:"[64]byte"`
+type GetNextIndex struct {
+       NodeName []byte `struc:"[64]byte"`
+       NextName []byte `struc:"[64]byte"`
 }
 
-func (*FeatureEnableDisable) GetMessageName() string {
-       return "feature_enable_disable"
+func (*GetNextIndex) GetMessageName() string {
+       return "get_next_index"
 }
-func (*FeatureEnableDisable) GetMessageType() api.MessageType {
+func (*GetNextIndex) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*FeatureEnableDisable) GetCrcString() string {
-       return "bc86393b"
+func (*GetNextIndex) GetCrcString() string {
+       return "9ab92f7a"
 }
-func NewFeatureEnableDisable() api.Message {
-       return &FeatureEnableDisable{}
+func NewGetNextIndex() api.Message {
+       return &GetNextIndex{}
 }
 
-// FeatureEnableDisableReply represents the VPP binary API message 'feature_enable_disable_reply'.
-// Generated from 'bin_api/vpe.api.json', line 775:
-//
-//        ["feature_enable_disable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xf6e14373"}
-//        ]
+// GetNextIndexReply represents the VPP binary API message 'get_next_index_reply'.
+// Generated from 'bin_api/vpe.api.json', line 411:
+//
+//            "get_next_index_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "next_index"
+//            ],
+//            {
+//                "crc": "0x2ed75f32"
+//            }
 //
-type FeatureEnableDisableReply struct {
-       Retval int32
+type GetNextIndexReply struct {
+       Retval    int32
+       NextIndex uint32
 }
 
-func (*FeatureEnableDisableReply) GetMessageName() string {
-       return "feature_enable_disable_reply"
+func (*GetNextIndexReply) GetMessageName() string {
+       return "get_next_index_reply"
 }
-func (*FeatureEnableDisableReply) GetMessageType() api.MessageType {
+func (*GetNextIndexReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*FeatureEnableDisableReply) GetCrcString() string {
-       return "f6e14373"
+func (*GetNextIndexReply) GetCrcString() string {
+       return "2ed75f32"
 }
-func NewFeatureEnableDisableReply() api.Message {
-       return &FeatureEnableDisableReply{}
+func NewGetNextIndexReply() api.Message {
+       return &GetNextIndexReply{}
 }
index 37c0b9c..682309d 100644 (file)
@@ -22,6 +22,7 @@ import (
        "git.fd.io/govpp.git/core"
        "git.fd.io/govpp.git/core/bin_api/vpe"
        "git.fd.io/govpp.git/examples/bin_api/interfaces"
+       "git.fd.io/govpp.git/examples/bin_api/stats"
 
        . "github.com/onsi/gomega"
 )
@@ -222,11 +223,11 @@ func TestCodec(t *testing.T) {
        codec := &core.MsgCodec{}
 
        // request
-       data, err := codec.EncodeMsg(&vpe.CreateLoopback{MacAddress: []byte{1, 2, 3, 4, 5, 6}}, 11)
+       data, err := codec.EncodeMsg(&interfaces.CreateLoopback{MacAddress: []byte{1, 2, 3, 4, 5, 6}}, 11)
        Expect(err).ShouldNot(HaveOccurred())
        Expect(data).ShouldNot(BeEmpty())
 
-       msg1 := &vpe.CreateLoopback{}
+       msg1 := &interfaces.CreateLoopback{}
        err = codec.DecodeMsg(data, msg1)
        Expect(err).ShouldNot(HaveOccurred())
        Expect(msg1.MacAddress).To(BeEquivalentTo([]byte{1, 2, 3, 4, 5, 6}))
@@ -242,11 +243,11 @@ func TestCodec(t *testing.T) {
        Expect(msg2.Retval).To(BeEquivalentTo(55))
 
        // other
-       data, err = codec.EncodeMsg(&vpe.VnetIP4FibCounters{VrfID: 77}, 33)
+       data, err = codec.EncodeMsg(&stats.VnetIP4FibCounters{VrfID: 77}, 33)
        Expect(err).ShouldNot(HaveOccurred())
        Expect(data).ShouldNot(BeEmpty())
 
-       msg3 := &vpe.VnetIP4FibCounters{}
+       msg3 := &stats.VnetIP4FibCounters{}
        err = codec.DecodeMsg(data, msg3)
        Expect(err).ShouldNot(HaveOccurred())
        Expect(msg3.VrfID).To(BeEquivalentTo(77))
index 431f623..4c6653c 100644 (file)
 {
-    "types" : [
-        ["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" : "0x2715e1c0"}
-        ],
-        ["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" : "0x6723f13e"}
-        ]
+    "services": [
+        {
+            "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_get_version": {
+                "reply": "acl_plugin_get_version_reply"
+            }
+        },
+        {
+            "macip_acl_interface_add_del": {
+                "reply": "macip_acl_interface_add_del_reply"
+            }
+        },
+        {
+            "acl_interface_set_acl_list": {
+                "reply": "acl_interface_set_acl_list_reply"
+            }
+        },
+        {
+            "acl_dump": {
+                "reply": "acl_details",
+                "stream": true
+            }
+        },
+        {
+            "acl_interface_list_dump": {
+                "reply": "acl_interface_list_details",
+                "stream": true
+            }
+        },
+        {
+            "macip_acl_interface_list_dump": {
+                "reply": "macip_acl_interface_list_details",
+                "stream": true
+            }
+        },
+        {
+            "acl_add_replace": {
+                "reply": "acl_add_replace_reply"
+            }
+        },
+        {
+            "acl_plugin_control_ping": {
+                "reply": "acl_plugin_control_ping_reply"
+            }
+        },
+        {
+            "macip_acl_interface_get": {
+                "reply": "macip_acl_interface_get_reply"
+            }
+        },
+        {
+            "macip_acl_add": {
+                "reply": "macip_acl_add_reply"
+            }
+        },
+        {
+            "macip_acl_add_replace": {
+                "reply": "macip_acl_add_replace_reply"
+            }
+        },
+        {
+            "macip_acl_dump": {
+                "reply": "macip_acl_details",
+                "stream": true
+            }
+        }
     ],
-    "messages" : [
-        ["acl_plugin_get_version",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xd7c07748"}
-        ],
-        ["acl_plugin_get_version_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "major"],
-            ["u32", "minor"],
-            {"crc" : "0x43eb59a5"}
-        ],
-        ["acl_plugin_control_ping",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xfc22c86e"}
-        ],
-        ["acl_plugin_control_ping_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "client_index"],
-            ["u32", "vpe_pid"],
-            {"crc" : "0xe07e9231"}
-        ],
-        ["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" : "0x3c317936"}
-        ],
-        ["acl_add_replace_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            ["i32", "retval"],
-            {"crc" : "0xa5e6d0cf"}
-        ],
-        ["acl_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            {"crc" : "0x82cc30ed"}
-        ],
-        ["acl_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xbbb83d84"}
-        ],
-        ["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" : "0x98b53725"}
-        ],
-        ["acl_interface_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xc1b3c077"}
-        ],
-        ["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" : "0x7562419c"}
-        ],
-        ["acl_interface_set_acl_list_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x435ddc2b"}
-        ],
-        ["acl_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            {"crc" : "0xc188156d"}
-        ],
-        ["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" : "0x1c8916b7"}
-        ],
-        ["acl_interface_list_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xadfe84b8"}
-        ],
-        ["acl_interface_list_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "count"],
-            ["u8", "n_input"],
-            ["u32", "acls", 0, "count"],
-            {"crc" : "0xc8150656"}
-        ],
-        ["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" : "0x33356284"}
-        ],
-        ["macip_acl_add_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            ["i32", "retval"],
-            {"crc" : "0x472edb4c"}
-        ],
-        ["macip_acl_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            {"crc" : "0xdde1141f"}
-        ],
-        ["macip_acl_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xeeb60e0f"}
-        ],
-        ["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" : "0x03a4fab2"}
-        ],
-        ["macip_acl_interface_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x9e9ee485"}
-        ],
-        ["macip_acl_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "acl_index"],
-            {"crc" : "0xd38227cb"}
-        ],
-        ["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" : "0xee1c50db"}
-        ],
-        ["macip_acl_interface_get",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x317ce31c"}
-        ],
-        ["macip_acl_interface_get_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "count"],
-            ["u32", "acls", 0, "count"],
-            {"crc" : "0x6c86a56c"}
+    "vl_api_version": "0x1db2ece9",
+    "enums": [],
+    "messages": [
+        [
+            "acl_plugin_get_version",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "acl_plugin_get_version_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "major"
+            ],
+            [
+                "u32",
+                "minor"
+            ],
+            {
+                "crc": "0x9b32cf86"
+            }
+        ],
+        [
+            "acl_plugin_control_ping",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "acl_plugin_control_ping_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "vpe_pid"
+            ],
+            {
+                "crc": "0xf6b0b8ca"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_add_replace_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "acl_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "acl_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_set_acl_list_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "acl_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "acl_interface_list_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_add_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_add_replace_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xac407b0c"
+            }
+        ],
+        [
+            "macip_acl_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "macip_acl_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "macip_acl_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "acl_index"
+            ],
+            {
+                "crc": "0xef34fea4"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "macip_acl_interface_get",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "macip_acl_interface_get_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "u32",
+                "acls",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0xaccf9b05"
+            }
+        ],
+        [
+            "macip_acl_interface_list_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "macip_acl_interface_list_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "count"
+            ],
+            [
+                "u32",
+                "acls",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x29783fa0"
+            }
         ]
     ],
-"vl_api_version" :"0x1fd77287"
+    "types": [
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ]
+    ]
 }
index 488f9b5..f8bb944 100644 (file)
@@ -6,27 +6,69 @@ package acl
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x1fd77287
+const VlAPIVersion = 0x1db2ece9
 
 // ACLRule represents the VPP binary API data type 'acl_rule'.
-// Generated from '../../bin_api/acl.api.json', line 3:
-//
-//        ["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" : "0x2715e1c0"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 836:
+//
+//            "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
@@ -48,21 +90,43 @@ func (*ACLRule) GetTypeName() string {
        return "acl_rule"
 }
 func (*ACLRule) GetCrcString() string {
-       return "2715e1c0"
+       return "6f99bf4d"
 }
 
 // MacipACLRule represents the VPP binary API data type 'macip_acl_rule'.
-// Generated from '../../bin_api/acl.api.json', line 19:
-//
-//        ["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" : "0x6723f13e"}
-//        ]
+// Generated from '../../bin_api/acl.api.json', line 896:
+//
+//            "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
@@ -77,18 +141,28 @@ func (*MacipACLRule) GetTypeName() string {
        return "macip_acl_rule"
 }
 func (*MacipACLRule) GetCrcString() string {
-       return "6723f13e"
+       return "70589f1e"
 }
 
 // ACLPluginGetVersion represents the VPP binary API message 'acl_plugin_get_version'.
-// Generated from '../../bin_api/acl.api.json', line 30:
+// Generated from '../../bin_api/acl.api.json', line 87:
 //
-//        ["acl_plugin_get_version",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xd7c07748"}
-//        ],
+//            "acl_plugin_get_version",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type ACLPluginGetVersion struct {
 }
@@ -100,22 +174,35 @@ func (*ACLPluginGetVersion) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLPluginGetVersion) GetCrcString() string {
-       return "d7c07748"
+       return "51077d14"
 }
 func NewACLPluginGetVersion() api.Message {
        return &ACLPluginGetVersion{}
 }
 
 // ACLPluginGetVersionReply represents the VPP binary API message 'acl_plugin_get_version_reply'.
-// Generated from '../../bin_api/acl.api.json', line 36:
+// Generated from '../../bin_api/acl.api.json', line 105:
 //
-//        ["acl_plugin_get_version_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "major"],
-//            ["u32", "minor"],
-//            {"crc" : "0x43eb59a5"}
-//        ],
+//            "acl_plugin_get_version_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "major"
+//            ],
+//            [
+//                "u32",
+//                "minor"
+//            ],
+//            {
+//                "crc": "0x9b32cf86"
+//            }
 //
 type ACLPluginGetVersionReply struct {
        Major uint32
@@ -129,21 +216,31 @@ func (*ACLPluginGetVersionReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLPluginGetVersionReply) GetCrcString() string {
-       return "43eb59a5"
+       return "9b32cf86"
 }
 func NewACLPluginGetVersionReply() api.Message {
        return &ACLPluginGetVersionReply{}
 }
 
 // ACLPluginControlPing represents the VPP binary API message 'acl_plugin_control_ping'.
-// Generated from '../../bin_api/acl.api.json', line 43:
+// Generated from '../../bin_api/acl.api.json', line 127:
 //
-//        ["acl_plugin_control_ping",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xfc22c86e"}
-//        ],
+//            "acl_plugin_control_ping",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type ACLPluginControlPing struct {
 }
@@ -155,23 +252,39 @@ func (*ACLPluginControlPing) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLPluginControlPing) GetCrcString() string {
-       return "fc22c86e"
+       return "51077d14"
 }
 func NewACLPluginControlPing() api.Message {
        return &ACLPluginControlPing{}
 }
 
 // ACLPluginControlPingReply represents the VPP binary API message 'acl_plugin_control_ping_reply'.
-// Generated from '../../bin_api/acl.api.json', line 49:
+// Generated from '../../bin_api/acl.api.json', line 145:
 //
-//        ["acl_plugin_control_ping_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "client_index"],
-//            ["u32", "vpe_pid"],
-//            {"crc" : "0xe07e9231"}
-//        ],
+//            "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
@@ -186,25 +299,50 @@ func (*ACLPluginControlPingReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLPluginControlPingReply) GetCrcString() string {
-       return "e07e9231"
+       return "f6b0b8ca"
 }
 func NewACLPluginControlPingReply() api.Message {
        return &ACLPluginControlPingReply{}
 }
 
 // ACLAddReplace represents the VPP binary API message 'acl_add_replace'.
-// Generated from '../../bin_api/acl.api.json', line 57:
-//
-//        ["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" : "0x3c317936"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 171:
+//
+//            "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
@@ -220,22 +358,35 @@ func (*ACLAddReplace) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLAddReplace) GetCrcString() string {
-       return "3c317936"
+       return "e839997e"
 }
 func NewACLAddReplace() api.Message {
        return &ACLAddReplace{}
 }
 
 // ACLAddReplaceReply represents the VPP binary API message 'acl_add_replace_reply'.
-// Generated from '../../bin_api/acl.api.json', line 67:
+// Generated from '../../bin_api/acl.api.json', line 208:
 //
-//        ["acl_add_replace_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            ["i32", "retval"],
-//            {"crc" : "0xa5e6d0cf"}
-//        ],
+//            "acl_add_replace_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xac407b0c"
+//            }
 //
 type ACLAddReplaceReply struct {
        ACLIndex uint32
@@ -249,22 +400,35 @@ func (*ACLAddReplaceReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLAddReplaceReply) GetCrcString() string {
-       return "a5e6d0cf"
+       return "ac407b0c"
 }
 func NewACLAddReplaceReply() api.Message {
        return &ACLAddReplaceReply{}
 }
 
 // ACLDel represents the VPP binary API message 'acl_del'.
-// Generated from '../../bin_api/acl.api.json', line 74:
+// Generated from '../../bin_api/acl.api.json', line 230:
 //
-//        ["acl_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            {"crc" : "0x82cc30ed"}
-//        ],
+//            "acl_del",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            {
+//                "crc": "0xef34fea4"
+//            }
 //
 type ACLDel struct {
        ACLIndex uint32
@@ -277,21 +441,31 @@ func (*ACLDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLDel) GetCrcString() string {
-       return "82cc30ed"
+       return "ef34fea4"
 }
 func NewACLDel() api.Message {
        return &ACLDel{}
 }
 
 // ACLDelReply represents the VPP binary API message 'acl_del_reply'.
-// Generated from '../../bin_api/acl.api.json', line 81:
+// Generated from '../../bin_api/acl.api.json', line 252:
 //
-//        ["acl_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xbbb83d84"}
-//        ],
+//            "acl_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type ACLDelReply struct {
        Retval int32
@@ -304,25 +478,47 @@ func (*ACLDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLDelReply) GetCrcString() string {
-       return "bbb83d84"
+       return "e8d4e804"
 }
 func NewACLDelReply() api.Message {
        return &ACLDelReply{}
 }
 
 // ACLInterfaceAddDel represents the VPP binary API message 'acl_interface_add_del'.
-// Generated from '../../bin_api/acl.api.json', line 87:
+// Generated from '../../bin_api/acl.api.json', line 270:
 //
-//        ["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" : "0x98b53725"}
-//        ],
+//            "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
@@ -338,21 +534,31 @@ func (*ACLInterfaceAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLInterfaceAddDel) GetCrcString() string {
-       return "98b53725"
+       return "0b2aedd1"
 }
 func NewACLInterfaceAddDel() api.Message {
        return &ACLInterfaceAddDel{}
 }
 
 // ACLInterfaceAddDelReply represents the VPP binary API message 'acl_interface_add_del_reply'.
-// Generated from '../../bin_api/acl.api.json', line 97:
+// Generated from '../../bin_api/acl.api.json', line 304:
 //
-//        ["acl_interface_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xc1b3c077"}
-//        ],
+//            "acl_interface_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type ACLInterfaceAddDelReply struct {
        Retval int32
@@ -365,25 +571,49 @@ func (*ACLInterfaceAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLInterfaceAddDelReply) GetCrcString() string {
-       return "c1b3c077"
+       return "e8d4e804"
 }
 func NewACLInterfaceAddDelReply() api.Message {
        return &ACLInterfaceAddDelReply{}
 }
 
 // ACLInterfaceSetACLList represents the VPP binary API message 'acl_interface_set_acl_list'.
-// Generated from '../../bin_api/acl.api.json', line 103:
-//
-//        ["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" : "0x7562419c"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 322:
+//
+//            "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
@@ -399,21 +629,31 @@ func (*ACLInterfaceSetACLList) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLInterfaceSetACLList) GetCrcString() string {
-       return "7562419c"
+       return "8baece38"
 }
 func NewACLInterfaceSetACLList() api.Message {
        return &ACLInterfaceSetACLList{}
 }
 
 // ACLInterfaceSetACLListReply represents the VPP binary API message 'acl_interface_set_acl_list_reply'.
-// Generated from '../../bin_api/acl.api.json', line 113:
+// Generated from '../../bin_api/acl.api.json', line 358:
 //
-//        ["acl_interface_set_acl_list_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x435ddc2b"}
-//        ],
+//            "acl_interface_set_acl_list_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type ACLInterfaceSetACLListReply struct {
        Retval int32
@@ -426,22 +666,35 @@ func (*ACLInterfaceSetACLListReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLInterfaceSetACLListReply) GetCrcString() string {
-       return "435ddc2b"
+       return "e8d4e804"
 }
 func NewACLInterfaceSetACLListReply() api.Message {
        return &ACLInterfaceSetACLListReply{}
 }
 
 // ACLDump represents the VPP binary API message 'acl_dump'.
-// Generated from '../../bin_api/acl.api.json', line 119:
+// Generated from '../../bin_api/acl.api.json', line 376:
 //
-//        ["acl_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            {"crc" : "0xc188156d"}
-//        ],
+//            "acl_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            {
+//                "crc": "0xef34fea4"
+//            }
 //
 type ACLDump struct {
        ACLIndex uint32
@@ -454,24 +707,46 @@ func (*ACLDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLDump) GetCrcString() string {
-       return "c188156d"
+       return "ef34fea4"
 }
 func NewACLDump() api.Message {
        return &ACLDump{}
 }
 
 // ACLDetails represents the VPP binary API message 'acl_details'.
-// Generated from '../../bin_api/acl.api.json', line 126:
-//
-//        ["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" : "0x1c8916b7"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 398:
+//
+//            "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
@@ -487,22 +762,35 @@ func (*ACLDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLDetails) GetCrcString() string {
-       return "1c8916b7"
+       return "5bd895be"
 }
 func NewACLDetails() api.Message {
        return &ACLDetails{}
 }
 
 // ACLInterfaceListDump represents the VPP binary API message 'acl_interface_list_dump'.
-// Generated from '../../bin_api/acl.api.json', line 135:
+// Generated from '../../bin_api/acl.api.json', line 431:
 //
-//        ["acl_interface_list_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xadfe84b8"}
-//        ],
+//            "acl_interface_list_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type ACLInterfaceListDump struct {
        SwIfIndex uint32
@@ -515,24 +803,45 @@ func (*ACLInterfaceListDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*ACLInterfaceListDump) GetCrcString() string {
-       return "adfe84b8"
+       return "529cb13f"
 }
 func NewACLInterfaceListDump() api.Message {
        return &ACLInterfaceListDump{}
 }
 
 // ACLInterfaceListDetails represents the VPP binary API message 'acl_interface_list_details'.
-// Generated from '../../bin_api/acl.api.json', line 142:
-//
-//        ["acl_interface_list_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "count"],
-//            ["u8", "n_input"],
-//            ["u32", "acls", 0, "count"],
-//            {"crc" : "0xc8150656"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 453:
+//
+//            "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
@@ -548,24 +857,46 @@ func (*ACLInterfaceListDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*ACLInterfaceListDetails) GetCrcString() string {
-       return "c8150656"
+       return "d5e80809"
 }
 func NewACLInterfaceListDetails() api.Message {
        return &ACLInterfaceListDetails{}
 }
 
 // MacipACLAdd represents the VPP binary API message 'macip_acl_add'.
-// Generated from '../../bin_api/acl.api.json', line 151:
-//
-//        ["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" : "0x33356284"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 485:
+//
+//            "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"`
@@ -580,22 +911,35 @@ func (*MacipACLAdd) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MacipACLAdd) GetCrcString() string {
-       return "33356284"
+       return "b3d3d65a"
 }
 func NewMacipACLAdd() api.Message {
        return &MacipACLAdd{}
 }
 
 // MacipACLAddReply represents the VPP binary API message 'macip_acl_add_reply'.
-// Generated from '../../bin_api/acl.api.json', line 160:
+// Generated from '../../bin_api/acl.api.json', line 518:
 //
-//        ["macip_acl_add_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            ["i32", "retval"],
-//            {"crc" : "0x472edb4c"}
-//        ],
+//            "macip_acl_add_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xac407b0c"
+//            }
 //
 type MacipACLAddReply struct {
        ACLIndex uint32
@@ -609,22 +953,136 @@ func (*MacipACLAddReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MacipACLAddReply) GetCrcString() string {
-       return "472edb4c"
+       return "ac407b0c"
 }
 func NewMacipACLAddReply() api.Message {
        return &MacipACLAddReply{}
 }
 
+// MacipACLAddReplace represents the VPP binary API message 'macip_acl_add_replace'.
+// Generated from '../../bin_api/acl.api.json', line 540:
+//
+//            "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
+       Tag      []byte `struc:"[64]byte"`
+       Count    uint32 `struc:"sizeof=R"`
+       R        []MacipACLRule
+}
+
+func (*MacipACLAddReplace) GetMessageName() string {
+       return "macip_acl_add_replace"
+}
+func (*MacipACLAddReplace) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLAddReplace) GetCrcString() string {
+       return "a0e8c01b"
+}
+func NewMacipACLAddReplace() api.Message {
+       return &MacipACLAddReplace{}
+}
+
+// MacipACLAddReplaceReply represents the VPP binary API message 'macip_acl_add_replace_reply'.
+// Generated from '../../bin_api/acl.api.json', line 577:
+//
+//            "macip_acl_add_replace_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xac407b0c"
+//            }
+//
+type MacipACLAddReplaceReply struct {
+       ACLIndex uint32
+       Retval   int32
+}
+
+func (*MacipACLAddReplaceReply) GetMessageName() string {
+       return "macip_acl_add_replace_reply"
+}
+func (*MacipACLAddReplaceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLAddReplaceReply) GetCrcString() string {
+       return "ac407b0c"
+}
+func NewMacipACLAddReplaceReply() api.Message {
+       return &MacipACLAddReplaceReply{}
+}
+
 // MacipACLDel represents the VPP binary API message 'macip_acl_del'.
-// Generated from '../../bin_api/acl.api.json', line 167:
+// Generated from '../../bin_api/acl.api.json', line 599:
 //
-//        ["macip_acl_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            {"crc" : "0xdde1141f"}
-//        ],
+//            "macip_acl_del",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            {
+//                "crc": "0xef34fea4"
+//            }
 //
 type MacipACLDel struct {
        ACLIndex uint32
@@ -637,21 +1095,31 @@ func (*MacipACLDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MacipACLDel) GetCrcString() string {
-       return "dde1141f"
+       return "ef34fea4"
 }
 func NewMacipACLDel() api.Message {
        return &MacipACLDel{}
 }
 
 // MacipACLDelReply represents the VPP binary API message 'macip_acl_del_reply'.
-// Generated from '../../bin_api/acl.api.json', line 174:
+// Generated from '../../bin_api/acl.api.json', line 621:
 //
-//        ["macip_acl_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xeeb60e0f"}
-//        ],
+//            "macip_acl_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type MacipACLDelReply struct {
        Retval int32
@@ -664,24 +1132,43 @@ func (*MacipACLDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MacipACLDelReply) GetCrcString() string {
-       return "eeb60e0f"
+       return "e8d4e804"
 }
 func NewMacipACLDelReply() api.Message {
        return &MacipACLDelReply{}
 }
 
 // MacipACLInterfaceAddDel represents the VPP binary API message 'macip_acl_interface_add_del'.
-// Generated from '../../bin_api/acl.api.json', line 180:
-//
-//        ["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" : "0x03a4fab2"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 639:
+//
+//            "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
@@ -696,21 +1183,31 @@ func (*MacipACLInterfaceAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MacipACLInterfaceAddDel) GetCrcString() string {
-       return "03a4fab2"
+       return "6a6be97c"
 }
 func NewMacipACLInterfaceAddDel() api.Message {
        return &MacipACLInterfaceAddDel{}
 }
 
 // MacipACLInterfaceAddDelReply represents the VPP binary API message 'macip_acl_interface_add_del_reply'.
-// Generated from '../../bin_api/acl.api.json', line 189:
+// Generated from '../../bin_api/acl.api.json', line 669:
 //
-//        ["macip_acl_interface_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x9e9ee485"}
-//        ],
+//            "macip_acl_interface_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type MacipACLInterfaceAddDelReply struct {
        Retval int32
@@ -723,22 +1220,35 @@ func (*MacipACLInterfaceAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MacipACLInterfaceAddDelReply) GetCrcString() string {
-       return "9e9ee485"
+       return "e8d4e804"
 }
 func NewMacipACLInterfaceAddDelReply() api.Message {
        return &MacipACLInterfaceAddDelReply{}
 }
 
 // MacipACLDump represents the VPP binary API message 'macip_acl_dump'.
-// Generated from '../../bin_api/acl.api.json', line 195:
+// Generated from '../../bin_api/acl.api.json', line 687:
 //
-//        ["macip_acl_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "acl_index"],
-//            {"crc" : "0xd38227cb"}
-//        ],
+//            "macip_acl_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "acl_index"
+//            ],
+//            {
+//                "crc": "0xef34fea4"
+//            }
 //
 type MacipACLDump struct {
        ACLIndex uint32
@@ -751,24 +1261,46 @@ func (*MacipACLDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MacipACLDump) GetCrcString() string {
-       return "d38227cb"
+       return "ef34fea4"
 }
 func NewMacipACLDump() api.Message {
        return &MacipACLDump{}
 }
 
 // MacipACLDetails represents the VPP binary API message 'macip_acl_details'.
-// Generated from '../../bin_api/acl.api.json', line 202:
-//
-//        ["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" : "0xee1c50db"}
-//        ],
+// Generated from '../../bin_api/acl.api.json', line 709:
+//
+//            "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
@@ -784,21 +1316,31 @@ func (*MacipACLDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MacipACLDetails) GetCrcString() string {
-       return "ee1c50db"
+       return "dd2b55ba"
 }
 func NewMacipACLDetails() api.Message {
        return &MacipACLDetails{}
 }
 
 // MacipACLInterfaceGet represents the VPP binary API message 'macip_acl_interface_get'.
-// Generated from '../../bin_api/acl.api.json', line 211:
+// Generated from '../../bin_api/acl.api.json', line 742:
 //
-//        ["macip_acl_interface_get",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x317ce31c"}
-//        ],
+//            "macip_acl_interface_get",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type MacipACLInterfaceGet struct {
 }
@@ -810,22 +1352,37 @@ func (*MacipACLInterfaceGet) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MacipACLInterfaceGet) GetCrcString() string {
-       return "317ce31c"
+       return "51077d14"
 }
 func NewMacipACLInterfaceGet() api.Message {
        return &MacipACLInterfaceGet{}
 }
 
 // MacipACLInterfaceGetReply represents the VPP binary API message 'macip_acl_interface_get_reply'.
-// Generated from '../../bin_api/acl.api.json', line 217:
+// Generated from '../../bin_api/acl.api.json', line 760:
 //
-//        ["macip_acl_interface_get_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "count"],
-//            ["u32", "acls", 0, "count"],
-//            {"crc" : "0x6c86a56c"}
-//        ]
+//            "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"`
@@ -839,8 +1396,98 @@ func (*MacipACLInterfaceGetReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MacipACLInterfaceGetReply) GetCrcString() string {
-       return "6c86a56c"
+       return "accf9b05"
 }
 func NewMacipACLInterfaceGetReply() api.Message {
        return &MacipACLInterfaceGetReply{}
 }
+
+// MacipACLInterfaceListDump represents the VPP binary API message 'macip_acl_interface_list_dump'.
+// Generated from '../../bin_api/acl.api.json', line 784:
+//
+//            "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
+}
+
+func (*MacipACLInterfaceListDump) GetMessageName() string {
+       return "macip_acl_interface_list_dump"
+}
+func (*MacipACLInterfaceListDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*MacipACLInterfaceListDump) GetCrcString() string {
+       return "529cb13f"
+}
+func NewMacipACLInterfaceListDump() api.Message {
+       return &MacipACLInterfaceListDump{}
+}
+
+// MacipACLInterfaceListDetails represents the VPP binary API message 'macip_acl_interface_list_details'.
+// Generated from '../../bin_api/acl.api.json', line 806:
+//
+//            "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
+       Count     uint8 `struc:"sizeof=Acls"`
+       Acls      []uint32
+}
+
+func (*MacipACLInterfaceListDetails) GetMessageName() string {
+       return "macip_acl_interface_list_details"
+}
+func (*MacipACLInterfaceListDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*MacipACLInterfaceListDetails) GetCrcString() string {
+       return "29783fa0"
+}
+func NewMacipACLInterfaceListDetails() api.Message {
+       return &MacipACLInterfaceListDetails{}
+}
index b0c8e7d..81ee2f9 100644 (file)
 {
-    "types" : [
-
+    "services": [
+        {
+            "af_packet_delete": {
+                "reply": "af_packet_delete_reply"
+            }
+        },
+        {
+            "af_packet_create": {
+                "reply": "af_packet_create_reply"
+            }
+        },
+        {
+            "af_packet_set_l4_cksum_offload": {
+                "reply": "af_packet_set_l4_cksum_offload_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["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" : "0x92768640"}
+    "vl_api_version": "0x8957ca8b",
+    "enums": [],
+    "messages": [
+        [
+            "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_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x718bac92"}
+        [
+            "af_packet_create_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
         ],
-        ["af_packet_delete",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "host_if_name", 64],
-            {"crc" : "0xc063ce85"}
+        [
+            "af_packet_delete",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "host_if_name",
+                64
+            ],
+            {
+                "crc": "0x3efceda3"
+            }
         ],
-        ["af_packet_delete_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x1a80431a"}
+        [
+            "af_packet_delete_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ]
     ],
-"vl_api_version" :"0xd4ce9f85"
+    "types": []
 }
index 04d783f..c969e2a 100644 (file)
@@ -6,20 +6,41 @@ package af_packet
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0xd4ce9f85
+const VlAPIVersion = 0x8957ca8b
 
 // AfPacketCreate represents the VPP binary API message 'af_packet_create'.
-// Generated from '../../bin_api/af_packet.api.json', line 6:
+// Generated from '../../bin_api/af_packet.api.json', line 23:
 //
-//        ["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" : "0x92768640"}
-//        ],
+//            "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"`
@@ -34,22 +55,35 @@ func (*AfPacketCreate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*AfPacketCreate) GetCrcString() string {
-       return "92768640"
+       return "6d5d30d6"
 }
 func NewAfPacketCreate() api.Message {
        return &AfPacketCreate{}
 }
 
 // AfPacketCreateReply represents the VPP binary API message 'af_packet_create_reply'.
-// Generated from '../../bin_api/af_packet.api.json', line 15:
+// Generated from '../../bin_api/af_packet.api.json', line 55:
 //
-//        ["af_packet_create_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x718bac92"}
-//        ],
+//            "af_packet_create_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type AfPacketCreateReply struct {
        Retval    int32
@@ -63,22 +97,36 @@ func (*AfPacketCreateReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*AfPacketCreateReply) GetCrcString() string {
-       return "718bac92"
+       return "fda5941f"
 }
 func NewAfPacketCreateReply() api.Message {
        return &AfPacketCreateReply{}
 }
 
 // AfPacketDelete represents the VPP binary API message 'af_packet_delete'.
-// Generated from '../../bin_api/af_packet.api.json', line 22:
+// Generated from '../../bin_api/af_packet.api.json', line 77:
 //
-//        ["af_packet_delete",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "host_if_name", 64],
-//            {"crc" : "0xc063ce85"}
-//        ],
+//            "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"`
@@ -91,21 +139,31 @@ func (*AfPacketDelete) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*AfPacketDelete) GetCrcString() string {
-       return "c063ce85"
+       return "3efceda3"
 }
 func NewAfPacketDelete() api.Message {
        return &AfPacketDelete{}
 }
 
 // AfPacketDeleteReply represents the VPP binary API message 'af_packet_delete_reply'.
-// Generated from '../../bin_api/af_packet.api.json', line 29:
+// Generated from '../../bin_api/af_packet.api.json', line 100:
 //
-//        ["af_packet_delete_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x1a80431a"}
-//        ]
+//            "af_packet_delete_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type AfPacketDeleteReply struct {
        Retval int32
@@ -118,8 +176,91 @@ func (*AfPacketDeleteReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*AfPacketDeleteReply) GetCrcString() string {
-       return "1a80431a"
+       return "e8d4e804"
 }
 func NewAfPacketDeleteReply() api.Message {
        return &AfPacketDeleteReply{}
 }
+
+// AfPacketSetL4CksumOffload represents the VPP binary API message 'af_packet_set_l4_cksum_offload'.
+// Generated from '../../bin_api/af_packet.api.json', line 118:
+//
+//            "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
+       Set       uint8
+}
+
+func (*AfPacketSetL4CksumOffload) GetMessageName() string {
+       return "af_packet_set_l4_cksum_offload"
+}
+func (*AfPacketSetL4CksumOffload) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*AfPacketSetL4CksumOffload) GetCrcString() string {
+       return "86538585"
+}
+func NewAfPacketSetL4CksumOffload() api.Message {
+       return &AfPacketSetL4CksumOffload{}
+}
+
+// AfPacketSetL4CksumOffloadReply represents the VPP binary API message 'af_packet_set_l4_cksum_offload_reply'.
+// Generated from '../../bin_api/af_packet.api.json', line 144:
+//
+//            "af_packet_set_l4_cksum_offload_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type AfPacketSetL4CksumOffloadReply struct {
+       Retval int32
+}
+
+func (*AfPacketSetL4CksumOffloadReply) GetMessageName() string {
+       return "af_packet_set_l4_cksum_offload_reply"
+}
+func (*AfPacketSetL4CksumOffloadReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*AfPacketSetL4CksumOffloadReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewAfPacketSetL4CksumOffloadReply() api.Message {
+       return &AfPacketSetL4CksumOffloadReply{}
+}
index 7636e18..0103007 100644 (file)
 {
-    "types" : [
-        ["vlib_counter",
-            ["u64", "packets"],
-            ["u64", "bytes"],
-            {"crc" : "0x62db67f0"}
-        ],
-        ["vnet_combined_counter",
-            ["u32", "sw_if_index"],
-            ["u64", "rx_packets"],
-            ["u64", "rx_bytes"],
-            ["u64", "tx_packets"],
-            ["u64", "tx_bytes"],
-            {"crc" : "0x0f3c951b"}
-        ],
-        ["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" : "0x84763938"}
-        ]
+    "services": [
+        {
+            "create_subif": {
+                "reply": "create_subif_reply"
+            }
+        },
+        {
+            "delete_subif": {
+                "reply": "delete_subif_reply"
+            }
+        },
+        {
+            "sw_interface_tag_add_del": {
+                "reply": "sw_interface_tag_add_del_reply"
+            }
+        },
+        {
+            "sw_interface_event": {
+                "reply": null
+            }
+        },
+        {
+            "sw_interface_set_rx_mode": {
+                "reply": "sw_interface_set_rx_mode_reply"
+            }
+        },
+        {
+            "sw_interface_dump": {
+                "reply": "sw_interface_details",
+                "stream": true
+            }
+        },
+        {
+            "sw_interface_get_table": {
+                "reply": "sw_interface_get_table_reply"
+            }
+        },
+        {
+            "sw_interface_add_del_address": {
+                "reply": "sw_interface_add_del_address_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"
+            }
+        },
+        {
+            "create_loopback": {
+                "reply": "create_loopback_reply"
+            }
+        },
+        {
+            "sw_interface_clear_stats": {
+                "reply": "sw_interface_clear_stats_reply"
+            }
+        },
+        {
+            "create_vlan_subif": {
+                "reply": "create_vlan_subif_reply"
+            }
+        },
+        {
+            "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_flags": {
+                "reply": "sw_interface_set_flags_reply"
+            }
+        },
+        {
+            "delete_loopback": {
+                "reply": "delete_loopback_reply"
+            }
+        },
+        {
+            "want_interface_events": {
+                "reply": "want_interface_events_reply"
+            }
+        },
+        {
+            "sw_interface_set_unnumbered": {
+                "reply": "sw_interface_set_unnumbered_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["sw_interface_set_flags",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "admin_up_down"],
-            {"crc" : "0xf890584a"}
-        ],
-        ["sw_interface_set_flags_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xdfbf3afa"}
-        ],
-        ["sw_interface_set_mtu",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u16", "mtu"],
-            {"crc" : "0x535dab1d"}
-        ],
-        ["sw_interface_set_mtu_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x0cc22552"}
-        ],
-        ["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" : "0xbf7f46f2"}
-        ],
-        ["want_interface_events",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "enable_disable"],
-            ["u32", "pid"],
-            {"crc" : "0xa0cbf57e"}
-        ],
-        ["want_interface_events_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x33788c73"}
-        ],
-        ["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", "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" : "0xe2d855bb"}
-        ],
-        ["sw_interface_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "name_filter_valid"],
-            ["u8", "name_filter", 49],
-            {"crc" : "0x9a2f9d4d"}
-        ],
-        ["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" : "0x4e24d2df"}
-        ],
-        ["sw_interface_add_del_address_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xabe29452"}
-        ],
-        ["sw_interface_set_table",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            ["u32", "vrf_id"],
-            {"crc" : "0xa94df510"}
-        ],
-        ["sw_interface_set_table_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x99df273c"}
-        ],
-        ["sw_interface_get_table",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0xf5a1d557"}
-        ],
-        ["sw_interface_get_table_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "vrf_id"],
-            {"crc" : "0xab44111d"}
-        ],
-        ["vnet_interface_simple_counters",
-            ["u16", "_vl_msg_id"],
-            ["u8", "vnet_counter_type"],
-            ["u32", "first_sw_if_index"],
-            ["u32", "count"],
-            ["u64", "data", 0, "count"],
-            {"crc" : "0x302f0983"}
-        ],
-        ["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" : "0xd82426e3"}
-        ],
-        ["vnet_per_interface_simple_counters",
-            ["u16", "_vl_msg_id"],
-            ["u32", "count"],
-            ["u32", "timestamp"],
-            ["vl_api_vnet_simple_counter_t", "data", 0, "count"],
-            {"crc" : "0x7df05633"}
-        ],
-        ["vnet_per_interface_combined_counters",
-            ["u16", "_vl_msg_id"],
-            ["u32", "count"],
-            ["u32", "timestamp"],
-            ["vl_api_vnet_combined_counter_t", "data", 0, "count"],
-            {"crc" : "0xbf35dfbe"}
-        ],
-        ["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" : "0xee0047b0"}
-        ],
-        ["sw_interface_set_unnumbered_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x5b2275e1"}
-        ],
-        ["sw_interface_clear_stats",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x9600fd50"}
-        ],
-        ["sw_interface_clear_stats_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x21f50dd9"}
-        ],
-        ["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" : "0x50ae8d92"}
-        ],
-        ["sw_interface_tag_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x761cbcb0"}
-        ],
-        ["sw_interface_set_mac_address",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "mac_address", 6],
-            {"crc" : "0xe4f22660"}
-        ],
-        ["sw_interface_set_mac_address_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x9dc8a452"}
-        ],
-        ["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" : "0xc5aa8dda"}
-        ],
-        ["sw_interface_set_rx_mode_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x5fc3e318"}
-        ],
-        ["interface_name_renumber",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "new_show_dev_instance"],
-            {"crc" : "0x11b7bcec"}
-        ],
-        ["interface_name_renumber_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x31594963"}
-        ],
-        ["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" : "0x150e6757"}
-        ],
-        ["create_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x92272bcb"}
-        ],
-        ["create_vlan_subif",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u32", "vlan_id"],
-            {"crc" : "0xaf9ae1e9"}
-        ],
-        ["create_vlan_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x8f36b888"}
-        ],
-        ["delete_subif",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x6038f848"}
-        ],
-        ["delete_subif_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x9d6015dc"}
-        ],
-        ["create_loopback",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "mac_address", 6],
-            {"crc" : "0xb2602de5"}
-        ],
-        ["create_loopback_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x9520f804"}
-        ],
-        ["create_loopback_instance",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "mac_address", 6],
-            ["u8", "is_specified"],
-            ["u32", "user_instance"],
-            {"crc" : "0x967694f1"}
-        ],
-        ["create_loopback_instance_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xd52c63b6"}
-        ],
-        ["delete_loopback",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xded428b0"}
-        ],
-        ["delete_loopback_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xc91dafa5"}
+    "vl_api_version": "0xa9b5d13",
+    "enums": [],
+    "messages": [
+        [
+            "sw_interface_set_flags",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "admin_up_down"
+            ],
+            {
+                "crc": "0x555485f5"
+            }
+        ],
+        [
+            "sw_interface_set_flags_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "sw_interface_set_mtu",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u16",
+                "mtu"
+            ],
+            {
+                "crc": "0x132da1e7"
+            }
+        ],
+        [
+            "sw_interface_set_mtu_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "want_interface_events",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_interface_events_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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",
+                "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": "0x23dee0ff"
+            }
+        ],
+        [
+            "sw_interface_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "name_filter_valid"
+            ],
+            [
+                "u8",
+                "name_filter",
+                49
+            ],
+            {
+                "crc": "0x63f5e3b7"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_add_del_address_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_set_table_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "sw_interface_get_table",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x6b7bcd0a"
+            }
+        ],
+        [
+            "sw_interface_get_table_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            {
+                "crc": "0xa6eb0109"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "vnet_per_interface_simple_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "u32",
+                "timestamp"
+            ],
+            [
+                "vl_api_vnet_simple_counter_t",
+                "data",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0xd1fba9ba"
+            }
+        ],
+        [
+            "vnet_per_interface_combined_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "u32",
+                "timestamp"
+            ],
+            [
+                "vl_api_vnet_combined_counter_t",
+                "data",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0xdc578375"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_set_unnumbered_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "sw_interface_clear_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "sw_interface_clear_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_tag_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "sw_interface_set_mac_address",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "mac_address",
+                6
+            ],
+            {
+                "crc": "0xeed5dfca"
+            }
+        ],
+        [
+            "sw_interface_set_mac_address_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_set_rx_mode_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "interface_name_renumber",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "new_show_dev_instance"
+            ],
+            {
+                "crc": "0x39194269"
+            }
+        ],
+        [
+            "interface_name_renumber_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "create_subif_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
+        ],
+        [
+            "create_vlan_subif",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "vlan_id"
+            ],
+            {
+                "crc": "0x70cadeda"
+            }
+        ],
+        [
+            "create_vlan_subif_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
+        ],
+        [
+            "delete_subif",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "delete_subif_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "create_loopback",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "mac_address",
+                6
+            ],
+            {
+                "crc": "0x3b54129c"
+            }
+        ],
+        [
+            "create_loopback_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
+        ],
+        [
+            "create_loopback_instance",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "mac_address",
+                6
+            ],
+            [
+                "u8",
+                "is_specified"
+            ],
+            [
+                "u32",
+                "user_instance"
+            ],
+            {
+                "crc": "0x7bbd53b6"
+            }
+        ],
+        [
+            "create_loopback_instance_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
+        ],
+        [
+            "delete_loopback",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
+        ],
+        [
+            "delete_loopback_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ]
     ],
-    "vl_api_version" :"0x2a74f256"
+    "types": [
+        [
+            "vlib_counter",
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0xce2325a2"
+            }
+        ],
+        [
+            "vnet_combined_counter",
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u64",
+                "rx_packets"
+            ],
+            [
+                "u64",
+                "rx_bytes"
+            ],
+            [
+                "u64",
+                "tx_packets"
+            ],
+            [
+                "u64",
+                "tx_bytes"
+            ],
+            {
+                "crc": "0x3217ba8e"
+            }
+        ],
+        [
+            "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"
+            }
+        ]
+    ]
 }
index e5cf324..41fda27 100644 (file)
@@ -6,16 +6,23 @@ package interfaces
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x2a74f256
+const VlAPIVersion = 0xa9b5d13
 
 // VlibCounter represents the VPP binary API data type 'vlib_counter'.
-// Generated from '../../bin_api/interface.api.json', line 3:
-//
-//        ["vlib_counter",
-//            ["u64", "packets"],
-//            ["u64", "bytes"],
-//            {"crc" : "0x62db67f0"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1296:
+//
+//            "vlib_counter",
+//            [
+//                "u64",
+//                "packets"
+//            ],
+//            [
+//                "u64",
+//                "bytes"
+//            ],
+//            {
+//                "crc": "0xce2325a2"
+//            }
 //
 type VlibCounter struct {
        Packets uint64
@@ -26,20 +33,36 @@ func (*VlibCounter) GetTypeName() string {
        return "vlib_counter"
 }
 func (*VlibCounter) GetCrcString() string {
-       return "62db67f0"
+       return "ce2325a2"
 }
 
 // VnetCombinedCounter represents the VPP binary API data type 'vnet_combined_counter'.
-// Generated from '../../bin_api/interface.api.json', line 8:
-//
-//        ["vnet_combined_counter",
-//            ["u32", "sw_if_index"],
-//            ["u64", "rx_packets"],
-//            ["u64", "rx_bytes"],
-//            ["u64", "tx_packets"],
-//            ["u64", "tx_bytes"],
-//            {"crc" : "0x0f3c951b"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1310:
+//
+//            "vnet_combined_counter",
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u64",
+//                "rx_packets"
+//            ],
+//            [
+//                "u64",
+//                "rx_bytes"
+//            ],
+//            [
+//                "u64",
+//                "tx_packets"
+//            ],
+//            [
+//                "u64",
+//                "tx_bytes"
+//            ],
+//            {
+//                "crc": "0x3217ba8e"
+//            }
 //
 type VnetCombinedCounter struct {
        SwIfIndex uint32
@@ -53,25 +76,56 @@ func (*VnetCombinedCounter) GetTypeName() string {
        return "vnet_combined_counter"
 }
 func (*VnetCombinedCounter) GetCrcString() string {
-       return "0f3c951b"
+       return "3217ba8e"
 }
 
 // VnetSimpleCounter represents the VPP binary API data type 'vnet_simple_counter'.
-// Generated from '../../bin_api/interface.api.json', line 16:
-//
-//        ["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" : "0x84763938"}
-//        ]
+// Generated from '../../bin_api/interface.api.json', line 1336:
+//
+//            "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
@@ -90,20 +144,36 @@ func (*VnetSimpleCounter) GetTypeName() string {
        return "vnet_simple_counter"
 }
 func (*VnetSimpleCounter) GetCrcString() string {
-       return "84763938"
+       return "8bd65e2d"
 }
 
 // SwInterfaceSetFlags represents the VPP binary API message 'sw_interface_set_flags'.
-// Generated from '../../bin_api/interface.api.json', line 31:
-//
-//        ["sw_interface_set_flags",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "admin_up_down"],
-//            {"crc" : "0xf890584a"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 109:
+//
+//            "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
@@ -117,21 +187,31 @@ func (*SwInterfaceSetFlags) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetFlags) GetCrcString() string {
-       return "f890584a"
+       return "555485f5"
 }
 func NewSwInterfaceSetFlags() api.Message {
        return &SwInterfaceSetFlags{}
 }
 
 // SwInterfaceSetFlagsReply represents the VPP binary API message 'sw_interface_set_flags_reply'.
-// Generated from '../../bin_api/interface.api.json', line 39:
-//
-//        ["sw_interface_set_flags_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xdfbf3afa"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 135:
+//
+//            "sw_interface_set_flags_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetFlagsReply struct {
        Retval int32
@@ -144,23 +224,39 @@ func (*SwInterfaceSetFlagsReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetFlagsReply) GetCrcString() string {
-       return "dfbf3afa"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetFlagsReply() api.Message {
        return &SwInterfaceSetFlagsReply{}
 }
 
 // SwInterfaceSetMtu represents the VPP binary API message 'sw_interface_set_mtu'.
-// Generated from '../../bin_api/interface.api.json', line 45:
+// Generated from '../../bin_api/interface.api.json', line 153:
 //
-//        ["sw_interface_set_mtu",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u16", "mtu"],
-//            {"crc" : "0x535dab1d"}
-//        ],
+//            "sw_interface_set_mtu",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u16",
+//                "mtu"
+//            ],
+//            {
+//                "crc": "0x132da1e7"
+//            }
 //
 type SwInterfaceSetMtu struct {
        SwIfIndex uint32
@@ -174,21 +270,31 @@ func (*SwInterfaceSetMtu) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetMtu) GetCrcString() string {
-       return "535dab1d"
+       return "132da1e7"
 }
 func NewSwInterfaceSetMtu() api.Message {
        return &SwInterfaceSetMtu{}
 }
 
 // SwInterfaceSetMtuReply represents the VPP binary API message 'sw_interface_set_mtu_reply'.
-// Generated from '../../bin_api/interface.api.json', line 53:
-//
-//        ["sw_interface_set_mtu_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x0cc22552"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 179:
+//
+//            "sw_interface_set_mtu_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetMtuReply struct {
        Retval int32
@@ -201,25 +307,47 @@ func (*SwInterfaceSetMtuReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetMtuReply) GetCrcString() string {
-       return "0cc22552"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetMtuReply() api.Message {
        return &SwInterfaceSetMtuReply{}
 }
 
 // SwInterfaceEvent represents the VPP binary API message 'sw_interface_event'.
-// Generated from '../../bin_api/interface.api.json', line 59:
-//
-//        ["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" : "0xbf7f46f2"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 197:
+//
+//            "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
@@ -236,23 +364,39 @@ func (*SwInterfaceEvent) GetMessageType() api.MessageType {
        return api.EventMessage
 }
 func (*SwInterfaceEvent) GetCrcString() string {
-       return "bf7f46f2"
+       return "bf9938e4"
 }
 func NewSwInterfaceEvent() api.Message {
        return &SwInterfaceEvent{}
 }
 
 // WantInterfaceEvents represents the VPP binary API message 'want_interface_events'.
-// Generated from '../../bin_api/interface.api.json', line 69:
-//
-//        ["want_interface_events",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "enable_disable"],
-//            ["u32", "pid"],
-//            {"crc" : "0xa0cbf57e"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 231:
+//
+//            "want_interface_events",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "enable_disable"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            {
+//                "crc": "0x476f5a08"
+//            }
 //
 type WantInterfaceEvents struct {
        EnableDisable uint32
@@ -266,21 +410,31 @@ func (*WantInterfaceEvents) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*WantInterfaceEvents) GetCrcString() string {
-       return "a0cbf57e"
+       return "476f5a08"
 }
 func NewWantInterfaceEvents() api.Message {
        return &WantInterfaceEvents{}
 }
 
 // WantInterfaceEventsReply represents the VPP binary API message 'want_interface_events_reply'.
-// Generated from '../../bin_api/interface.api.json', line 77:
-//
-//        ["want_interface_events_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x33788c73"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 257:
+//
+//            "want_interface_events_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type WantInterfaceEventsReply struct {
        Retval int32
@@ -293,50 +447,152 @@ func (*WantInterfaceEventsReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*WantInterfaceEventsReply) GetCrcString() string {
-       return "33788c73"
+       return "e8d4e804"
 }
 func NewWantInterfaceEventsReply() api.Message {
        return &WantInterfaceEventsReply{}
 }
 
 // SwInterfaceDetails represents the VPP binary API message 'sw_interface_details'.
-// Generated from '../../bin_api/interface.api.json', line 83:
-//
-//        ["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", "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" : "0xe2d855bb"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 275:
+//
+//            "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",
+//                "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": "0x23dee0ff"
+//            }
 //
 type SwInterfaceDetails struct {
        SwIfIndex         uint32
@@ -378,23 +634,40 @@ func (*SwInterfaceDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceDetails) GetCrcString() string {
-       return "e2d855bb"
+       return "23dee0ff"
 }
 func NewSwInterfaceDetails() api.Message {
        return &SwInterfaceDetails{}
 }
 
 // SwInterfaceDump represents the VPP binary API message 'sw_interface_dump'.
-// Generated from '../../bin_api/interface.api.json', line 118:
-//
-//        ["sw_interface_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "name_filter_valid"],
-//            ["u8", "name_filter", 49],
-//            {"crc" : "0x9a2f9d4d"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 414:
+//
+//            "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
@@ -408,27 +681,56 @@ func (*SwInterfaceDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceDump) GetCrcString() string {
-       return "9a2f9d4d"
+       return "63f5e3b7"
 }
 func NewSwInterfaceDump() api.Message {
        return &SwInterfaceDump{}
 }
 
 // SwInterfaceAddDelAddress represents the VPP binary API message 'sw_interface_add_del_address'.
-// Generated from '../../bin_api/interface.api.json', line 126:
-//
-//        ["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" : "0x4e24d2df"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 441:
+//
+//            "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
@@ -446,21 +748,31 @@ func (*SwInterfaceAddDelAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceAddDelAddress) GetCrcString() string {
-       return "4e24d2df"
+       return "7b583179"
 }
 func NewSwInterfaceAddDelAddress() api.Message {
        return &SwInterfaceAddDelAddress{}
 }
 
 // SwInterfaceAddDelAddressReply represents the VPP binary API message 'sw_interface_add_del_address_reply'.
-// Generated from '../../bin_api/interface.api.json', line 138:
-//
-//        ["sw_interface_add_del_address_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xabe29452"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 484:
+//
+//            "sw_interface_add_del_address_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceAddDelAddressReply struct {
        Retval int32
@@ -473,24 +785,43 @@ func (*SwInterfaceAddDelAddressReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceAddDelAddressReply) GetCrcString() string {
-       return "abe29452"
+       return "e8d4e804"
 }
 func NewSwInterfaceAddDelAddressReply() api.Message {
        return &SwInterfaceAddDelAddressReply{}
 }
 
 // SwInterfaceSetTable represents the VPP binary API message 'sw_interface_set_table'.
-// Generated from '../../bin_api/interface.api.json', line 144:
-//
-//        ["sw_interface_set_table",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "is_ipv6"],
-//            ["u32", "vrf_id"],
-//            {"crc" : "0xa94df510"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 502:
+//
+//            "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
@@ -505,21 +836,31 @@ func (*SwInterfaceSetTable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetTable) GetCrcString() string {
-       return "a94df510"
+       return "acb25d89"
 }
 func NewSwInterfaceSetTable() api.Message {
        return &SwInterfaceSetTable{}
 }
 
 // SwInterfaceSetTableReply represents the VPP binary API message 'sw_interface_set_table_reply'.
-// Generated from '../../bin_api/interface.api.json', line 153:
-//
-//        ["sw_interface_set_table_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x99df273c"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 532:
+//
+//            "sw_interface_set_table_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetTableReply struct {
        Retval int32
@@ -532,23 +873,39 @@ func (*SwInterfaceSetTableReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetTableReply) GetCrcString() string {
-       return "99df273c"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetTableReply() api.Message {
        return &SwInterfaceSetTableReply{}
 }
 
 // SwInterfaceGetTable represents the VPP binary API message 'sw_interface_get_table'.
-// Generated from '../../bin_api/interface.api.json', line 159:
-//
-//        ["sw_interface_get_table",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0xf5a1d557"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 550:
+//
+//            "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
@@ -562,22 +919,35 @@ func (*SwInterfaceGetTable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceGetTable) GetCrcString() string {
-       return "f5a1d557"
+       return "6b7bcd0a"
 }
 func NewSwInterfaceGetTable() api.Message {
        return &SwInterfaceGetTable{}
 }
 
 // SwInterfaceGetTableReply represents the VPP binary API message 'sw_interface_get_table_reply'.
-// Generated from '../../bin_api/interface.api.json', line 167:
-//
-//        ["sw_interface_get_table_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "vrf_id"],
-//            {"crc" : "0xab44111d"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 576:
+//
+//            "sw_interface_get_table_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "vrf_id"
+//            ],
+//            {
+//                "crc": "0xa6eb0109"
+//            }
 //
 type SwInterfaceGetTableReply struct {
        Retval int32
@@ -591,23 +961,41 @@ func (*SwInterfaceGetTableReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceGetTableReply) GetCrcString() string {
-       return "ab44111d"
+       return "a6eb0109"
 }
 func NewSwInterfaceGetTableReply() api.Message {
        return &SwInterfaceGetTableReply{}
 }
 
 // VnetInterfaceSimpleCounters represents the VPP binary API message 'vnet_interface_simple_counters'.
-// Generated from '../../bin_api/interface.api.json', line 174:
-//
-//        ["vnet_interface_simple_counters",
-//            ["u16", "_vl_msg_id"],
-//            ["u8", "vnet_counter_type"],
-//            ["u32", "first_sw_if_index"],
-//            ["u32", "count"],
-//            ["u64", "data", 0, "count"],
-//            {"crc" : "0x302f0983"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 598:
+//
+//            "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
@@ -623,23 +1011,41 @@ func (*VnetInterfaceSimpleCounters) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
 func (*VnetInterfaceSimpleCounters) GetCrcString() string {
-       return "302f0983"
+       return "9bc4a808"
 }
 func NewVnetInterfaceSimpleCounters() api.Message {
        return &VnetInterfaceSimpleCounters{}
 }
 
 // VnetInterfaceCombinedCounters represents the VPP binary API message 'vnet_interface_combined_counters'.
-// Generated from '../../bin_api/interface.api.json', line 182:
-//
-//        ["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" : "0xd82426e3"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 626:
+//
+//            "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
@@ -655,22 +1061,37 @@ func (*VnetInterfaceCombinedCounters) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
 func (*VnetInterfaceCombinedCounters) GetCrcString() string {
-       return "d82426e3"
+       return "2c595002"
 }
 func NewVnetInterfaceCombinedCounters() api.Message {
        return &VnetInterfaceCombinedCounters{}
 }
 
 // VnetPerInterfaceSimpleCounters represents the VPP binary API message 'vnet_per_interface_simple_counters'.
-// Generated from '../../bin_api/interface.api.json', line 190:
-//
-//        ["vnet_per_interface_simple_counters",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "count"],
-//            ["u32", "timestamp"],
-//            ["vl_api_vnet_simple_counter_t", "data", 0, "count"],
-//            {"crc" : "0x7df05633"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 654:
+//
+//            "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"`
@@ -685,22 +1106,37 @@ func (*VnetPerInterfaceSimpleCounters) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
 func (*VnetPerInterfaceSimpleCounters) GetCrcString() string {
-       return "7df05633"
+       return "d1fba9ba"
 }
 func NewVnetPerInterfaceSimpleCounters() api.Message {
        return &VnetPerInterfaceSimpleCounters{}
 }
 
 // VnetPerInterfaceCombinedCounters represents the VPP binary API message 'vnet_per_interface_combined_counters'.
-// Generated from '../../bin_api/interface.api.json', line 197:
-//
-//        ["vnet_per_interface_combined_counters",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "count"],
-//            ["u32", "timestamp"],
-//            ["vl_api_vnet_combined_counter_t", "data", 0, "count"],
-//            {"crc" : "0xbf35dfbe"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 678:
+//
+//            "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"`
@@ -715,24 +1151,43 @@ func (*VnetPerInterfaceCombinedCounters) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
 func (*VnetPerInterfaceCombinedCounters) GetCrcString() string {
-       return "bf35dfbe"
+       return "dc578375"
 }
 func NewVnetPerInterfaceCombinedCounters() api.Message {
        return &VnetPerInterfaceCombinedCounters{}
 }
 
 // SwInterfaceSetUnnumbered represents the VPP binary API message 'sw_interface_set_unnumbered'.
-// Generated from '../../bin_api/interface.api.json', line 204:
-//
-//        ["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" : "0xee0047b0"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 702:
+//
+//            "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
@@ -747,21 +1202,31 @@ func (*SwInterfaceSetUnnumbered) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetUnnumbered) GetCrcString() string {
-       return "ee0047b0"
+       return "a2c1bbda"
 }
 func NewSwInterfaceSetUnnumbered() api.Message {
        return &SwInterfaceSetUnnumbered{}
 }
 
 // SwInterfaceSetUnnumberedReply represents the VPP binary API message 'sw_interface_set_unnumbered_reply'.
-// Generated from '../../bin_api/interface.api.json', line 213:
-//
-//        ["sw_interface_set_unnumbered_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x5b2275e1"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 732:
+//
+//            "sw_interface_set_unnumbered_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetUnnumberedReply struct {
        Retval int32
@@ -774,22 +1239,35 @@ func (*SwInterfaceSetUnnumberedReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetUnnumberedReply) GetCrcString() string {
-       return "5b2275e1"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetUnnumberedReply() api.Message {
        return &SwInterfaceSetUnnumberedReply{}
 }
 
 // SwInterfaceClearStats represents the VPP binary API message 'sw_interface_clear_stats'.
-// Generated from '../../bin_api/interface.api.json', line 219:
-//
-//        ["sw_interface_clear_stats",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x9600fd50"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 750:
+//
+//            "sw_interface_clear_stats",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type SwInterfaceClearStats struct {
        SwIfIndex uint32
@@ -802,21 +1280,31 @@ func (*SwInterfaceClearStats) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceClearStats) GetCrcString() string {
-       return "9600fd50"
+       return "529cb13f"
 }
 func NewSwInterfaceClearStats() api.Message {
        return &SwInterfaceClearStats{}
 }
 
 // SwInterfaceClearStatsReply represents the VPP binary API message 'sw_interface_clear_stats_reply'.
-// Generated from '../../bin_api/interface.api.json', line 226:
-//
-//        ["sw_interface_clear_stats_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x21f50dd9"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 772:
+//
+//            "sw_interface_clear_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceClearStatsReply struct {
        Retval int32
@@ -829,24 +1317,44 @@ func (*SwInterfaceClearStatsReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceClearStatsReply) GetCrcString() string {
-       return "21f50dd9"
+       return "e8d4e804"
 }
 func NewSwInterfaceClearStatsReply() api.Message {
        return &SwInterfaceClearStatsReply{}
 }
 
 // SwInterfaceTagAddDel represents the VPP binary API message 'sw_interface_tag_add_del'.
-// Generated from '../../bin_api/interface.api.json', line 232:
-//
-//        ["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" : "0x50ae8d92"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 790:
+//
+//            "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
@@ -861,21 +1369,31 @@ func (*SwInterfaceTagAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceTagAddDel) GetCrcString() string {
-       return "50ae8d92"
+       return "14cc636c"
 }
 func NewSwInterfaceTagAddDel() api.Message {
        return &SwInterfaceTagAddDel{}
 }
 
 // SwInterfaceTagAddDelReply represents the VPP binary API message 'sw_interface_tag_add_del_reply'.
-// Generated from '../../bin_api/interface.api.json', line 241:
-//
-//        ["sw_interface_tag_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x761cbcb0"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 821:
+//
+//            "sw_interface_tag_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceTagAddDelReply struct {
        Retval int32
@@ -888,23 +1406,40 @@ func (*SwInterfaceTagAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceTagAddDelReply) GetCrcString() string {
-       return "761cbcb0"
+       return "e8d4e804"
 }
 func NewSwInterfaceTagAddDelReply() api.Message {
        return &SwInterfaceTagAddDelReply{}
 }
 
 // SwInterfaceSetMacAddress represents the VPP binary API message 'sw_interface_set_mac_address'.
-// Generated from '../../bin_api/interface.api.json', line 247:
-//
-//        ["sw_interface_set_mac_address",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "mac_address", 6],
-//            {"crc" : "0xe4f22660"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 839:
+//
+//            "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
@@ -918,21 +1453,31 @@ func (*SwInterfaceSetMacAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetMacAddress) GetCrcString() string {
-       return "e4f22660"
+       return "eed5dfca"
 }
 func NewSwInterfaceSetMacAddress() api.Message {
        return &SwInterfaceSetMacAddress{}
 }
 
 // SwInterfaceSetMacAddressReply represents the VPP binary API message 'sw_interface_set_mac_address_reply'.
-// Generated from '../../bin_api/interface.api.json', line 255:
-//
-//        ["sw_interface_set_mac_address_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x9dc8a452"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 866:
+//
+//            "sw_interface_set_mac_address_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetMacAddressReply struct {
        Retval int32
@@ -945,25 +1490,47 @@ func (*SwInterfaceSetMacAddressReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetMacAddressReply) GetCrcString() string {
-       return "9dc8a452"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetMacAddressReply() api.Message {
        return &SwInterfaceSetMacAddressReply{}
 }
 
 // SwInterfaceSetRxMode represents the VPP binary API message 'sw_interface_set_rx_mode'.
-// Generated from '../../bin_api/interface.api.json', line 261:
-//
-//        ["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" : "0xc5aa8dda"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 884:
+//
+//            "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
@@ -979,21 +1546,31 @@ func (*SwInterfaceSetRxMode) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceSetRxMode) GetCrcString() string {
-       return "c5aa8dda"
+       return "2a1cc58c"
 }
 func NewSwInterfaceSetRxMode() api.Message {
        return &SwInterfaceSetRxMode{}
 }
 
 // SwInterfaceSetRxModeReply represents the VPP binary API message 'sw_interface_set_rx_mode_reply'.
-// Generated from '../../bin_api/interface.api.json', line 271:
-//
-//        ["sw_interface_set_rx_mode_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x5fc3e318"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 918:
+//
+//            "sw_interface_set_rx_mode_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceSetRxModeReply struct {
        Retval int32
@@ -1006,23 +1583,39 @@ func (*SwInterfaceSetRxModeReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceSetRxModeReply) GetCrcString() string {
-       return "5fc3e318"
+       return "e8d4e804"
 }
 func NewSwInterfaceSetRxModeReply() api.Message {
        return &SwInterfaceSetRxModeReply{}
 }
 
 // InterfaceNameRenumber represents the VPP binary API message 'interface_name_renumber'.
-// Generated from '../../bin_api/interface.api.json', line 277:
-//
-//        ["interface_name_renumber",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "new_show_dev_instance"],
-//            {"crc" : "0x11b7bcec"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 936:
+//
+//            "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
@@ -1036,21 +1629,31 @@ func (*InterfaceNameRenumber) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*InterfaceNameRenumber) GetCrcString() string {
-       return "11b7bcec"
+       return "39194269"
 }
 func NewInterfaceNameRenumber() api.Message {
        return &InterfaceNameRenumber{}
 }
 
 // InterfaceNameRenumberReply represents the VPP binary API message 'interface_name_renumber_reply'.
-// Generated from '../../bin_api/interface.api.json', line 285:
-//
-//        ["interface_name_renumber_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x31594963"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 962:
+//
+//            "interface_name_renumber_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type InterfaceNameRenumberReply struct {
        Retval int32
@@ -1063,33 +1666,79 @@ func (*InterfaceNameRenumberReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*InterfaceNameRenumberReply) GetCrcString() string {
-       return "31594963"
+       return "e8d4e804"
 }
 func NewInterfaceNameRenumberReply() api.Message {
        return &InterfaceNameRenumberReply{}
 }
 
 // CreateSubif represents the VPP binary API message 'create_subif'.
-// Generated from '../../bin_api/interface.api.json', line 291:
-//
-//        ["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" : "0x150e6757"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 980:
+//
+//            "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
@@ -1113,22 +1762,35 @@ func (*CreateSubif) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*CreateSubif) GetCrcString() string {
-       return "150e6757"
+       return "86cfe408"
 }
 func NewCreateSubif() api.Message {
        return &CreateSubif{}
 }
 
 // CreateSubifReply represents the VPP binary API message 'create_subif_reply'.
-// Generated from '../../bin_api/interface.api.json', line 309:
-//
-//        ["create_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x92272bcb"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1046:
+//
+//            "create_subif_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type CreateSubifReply struct {
        Retval    int32
@@ -1142,23 +1804,39 @@ func (*CreateSubifReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*CreateSubifReply) GetCrcString() string {
-       return "92272bcb"
+       return "fda5941f"
 }
 func NewCreateSubifReply() api.Message {
        return &CreateSubifReply{}
 }
 
 // CreateVlanSubif represents the VPP binary API message 'create_vlan_subif'.
-// Generated from '../../bin_api/interface.api.json', line 316:
-//
-//        ["create_vlan_subif",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "vlan_id"],
-//            {"crc" : "0xaf9ae1e9"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1068:
+//
+//            "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
@@ -1172,22 +1850,35 @@ func (*CreateVlanSubif) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*CreateVlanSubif) GetCrcString() string {
-       return "af9ae1e9"
+       return "70cadeda"
 }
 func NewCreateVlanSubif() api.Message {
        return &CreateVlanSubif{}
 }
 
 // CreateVlanSubifReply represents the VPP binary API message 'create_vlan_subif_reply'.
-// Generated from '../../bin_api/interface.api.json', line 324:
-//
-//        ["create_vlan_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x8f36b888"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1094:
+//
+//            "create_vlan_subif_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type CreateVlanSubifReply struct {
        Retval    int32
@@ -1201,22 +1892,35 @@ func (*CreateVlanSubifReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*CreateVlanSubifReply) GetCrcString() string {
-       return "8f36b888"
+       return "fda5941f"
 }
 func NewCreateVlanSubifReply() api.Message {
        return &CreateVlanSubifReply{}
 }
 
 // DeleteSubif represents the VPP binary API message 'delete_subif'.
-// Generated from '../../bin_api/interface.api.json', line 331:
-//
-//        ["delete_subif",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x6038f848"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1116:
+//
+//            "delete_subif",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type DeleteSubif struct {
        SwIfIndex uint32
@@ -1229,21 +1933,31 @@ func (*DeleteSubif) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*DeleteSubif) GetCrcString() string {
-       return "6038f848"
+       return "529cb13f"
 }
 func NewDeleteSubif() api.Message {
        return &DeleteSubif{}
 }
 
 // DeleteSubifReply represents the VPP binary API message 'delete_subif_reply'.
-// Generated from '../../bin_api/interface.api.json', line 338:
-//
-//        ["delete_subif_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x9d6015dc"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1138:
+//
+//            "delete_subif_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type DeleteSubifReply struct {
        Retval int32
@@ -1256,22 +1970,36 @@ func (*DeleteSubifReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*DeleteSubifReply) GetCrcString() string {
-       return "9d6015dc"
+       return "e8d4e804"
 }
 func NewDeleteSubifReply() api.Message {
        return &DeleteSubifReply{}
 }
 
 // CreateLoopback represents the VPP binary API message 'create_loopback'.
-// Generated from '../../bin_api/interface.api.json', line 344:
-//
-//        ["create_loopback",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "mac_address", 6],
-//            {"crc" : "0xb2602de5"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1156:
+//
+//            "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"`
@@ -1284,22 +2012,35 @@ func (*CreateLoopback) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*CreateLoopback) GetCrcString() string {
-       return "b2602de5"
+       return "3b54129c"
 }
 func NewCreateLoopback() api.Message {
        return &CreateLoopback{}
 }
 
 // CreateLoopbackReply represents the VPP binary API message 'create_loopback_reply'.
-// Generated from '../../bin_api/interface.api.json', line 351:
-//
-//        ["create_loopback_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x9520f804"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1179:
+//
+//            "create_loopback_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type CreateLoopbackReply struct {
        Retval    int32
@@ -1313,24 +2054,44 @@ func (*CreateLoopbackReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*CreateLoopbackReply) GetCrcString() string {
-       return "9520f804"
+       return "fda5941f"
 }
 func NewCreateLoopbackReply() api.Message {
        return &CreateLoopbackReply{}
 }
 
 // CreateLoopbackInstance represents the VPP binary API message 'create_loopback_instance'.
-// Generated from '../../bin_api/interface.api.json', line 358:
-//
-//        ["create_loopback_instance",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "mac_address", 6],
-//            ["u8", "is_specified"],
-//            ["u32", "user_instance"],
-//            {"crc" : "0x967694f1"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1201:
+//
+//            "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"`
@@ -1345,22 +2106,35 @@ func (*CreateLoopbackInstance) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*CreateLoopbackInstance) GetCrcString() string {
-       return "967694f1"
+       return "7bbd53b6"
 }
 func NewCreateLoopbackInstance() api.Message {
        return &CreateLoopbackInstance{}
 }
 
 // CreateLoopbackInstanceReply represents the VPP binary API message 'create_loopback_instance_reply'.
-// Generated from '../../bin_api/interface.api.json', line 367:
-//
-//        ["create_loopback_instance_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xd52c63b6"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1232:
+//
+//            "create_loopback_instance_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type CreateLoopbackInstanceReply struct {
        Retval    int32
@@ -1374,22 +2148,35 @@ func (*CreateLoopbackInstanceReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*CreateLoopbackInstanceReply) GetCrcString() string {
-       return "d52c63b6"
+       return "fda5941f"
 }
 func NewCreateLoopbackInstanceReply() api.Message {
        return &CreateLoopbackInstanceReply{}
 }
 
 // DeleteLoopback represents the VPP binary API message 'delete_loopback'.
-// Generated from '../../bin_api/interface.api.json', line 374:
-//
-//        ["delete_loopback",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xded428b0"}
-//        ],
+// Generated from '../../bin_api/interface.api.json', line 1254:
+//
+//            "delete_loopback",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type DeleteLoopback struct {
        SwIfIndex uint32
@@ -1402,21 +2189,31 @@ func (*DeleteLoopback) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*DeleteLoopback) GetCrcString() string {
-       return "ded428b0"
+       return "529cb13f"
 }
 func NewDeleteLoopback() api.Message {
        return &DeleteLoopback{}
 }
 
 // DeleteLoopbackReply represents the VPP binary API message 'delete_loopback_reply'.
-// Generated from '../../bin_api/interface.api.json', line 381:
-//
-//        ["delete_loopback_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xc91dafa5"}
-//        ]
+// Generated from '../../bin_api/interface.api.json', line 1276:
+//
+//            "delete_loopback_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type DeleteLoopbackReply struct {
        Retval int32
@@ -1429,7 +2226,7 @@ func (*DeleteLoopbackReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*DeleteLoopbackReply) GetCrcString() string {
-       return "c91dafa5"
+       return "e8d4e804"
 }
 func NewDeleteLoopbackReply() api.Message {
        return &DeleteLoopbackReply{}
index 805e56f..530b6d6 100644 (file)
 {
-    "types" : [
-        ["fib_path",
-            ["u32", "sw_if_index"],
-            ["u32", "weight"],
-            ["u8", "is_local"],
-            ["u8", "is_drop"],
-            ["u8", "is_unreach"],
-            ["u8", "is_prohibit"],
-            ["u8", "afi"],
-            ["u8", "next_hop", 16],
-            {"crc" : "0x315b1889"}
-        ]
+    "services": [
+        {
+            "ip_source_and_port_range_check_add_del": {
+                "reply": "ip_source_and_port_range_check_add_del_reply"
+            }
+        },
+        {
+            "ip6_fib_dump": {
+                "reply": "ip6_fib_details",
+                "stream": true
+            }
+        },
+        {
+            "want_ip6_nd_events": {
+                "reply": "want_ip6_nd_events_reply"
+            }
+        },
+        {
+            "ip_punt_police": {
+                "reply": "ip_punt_police_reply"
+            }
+        },
+        {
+            "set_arp_neighbor_limit": {
+                "reply": "set_arp_neighbor_limit_reply"
+            }
+        },
+        {
+            "ip6nd_proxy_add_del": {
+                "reply": "ip6nd_proxy_add_del_reply"
+            }
+        },
+        {
+            "ioam_disable": {
+                "reply": "ioam_disable_reply"
+            }
+        },
+        {
+            "ip_table_add_del": {
+                "reply": "ip_table_add_del_reply"
+            }
+        },
+        {
+            "ip_neighbor_dump": {
+                "reply": "ip_neighbor_details",
+                "stream": true
+            }
+        },
+        {
+            "ip4_arp_event": {
+                "reply": null
+            }
+        },
+        {
+            "ip_punt_redirect": {
+                "reply": "ip_punt_redirect_reply"
+            }
+        },
+        {
+            "sw_interface_ip6nd_ra_prefix": {
+                "reply": "sw_interface_ip6nd_ra_prefix_reply"
+            }
+        },
+        {
+            "reset_fib": {
+                "reply": "reset_fib_reply"
+            }
+        },
+        {
+            "ip6_mfib_dump": {
+                "reply": "ip6_mfib_details",
+                "stream": true
+            }
+        },
+        {
+            "sw_interface_ip6nd_ra_config": {
+                "reply": "sw_interface_ip6nd_ra_config_reply"
+            }
+        },
+        {
+            "sw_interface_ip6_enable_disable": {
+                "reply": "sw_interface_ip6_enable_disable_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_container_proxy_add_del": {
+                "reply": "ip_container_proxy_add_del_reply"
+            }
+        },
+        {
+            "ip_mfib_dump": {
+                "reply": "ip_mfib_details",
+                "stream": true
+            }
+        },
+        {
+            "ip_address_dump": {
+                "reply": "ip_address_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
+            }
+        },
+        {
+            "ip_fib_dump": {
+                "reply": "ip_fib_details",
+                "stream": true
+            }
+        },
+        {
+            "want_ip4_arp_events": {
+                "reply": "want_ip4_arp_events_reply"
+            }
+        },
+        {
+            "ioam_enable": {
+                "reply": "ioam_enable_reply"
+            }
+        },
+        {
+            "ip6_nd_event": {
+                "reply": null
+            }
+        },
+        {
+            "ip_mroute_add_del": {
+                "reply": "ip_mroute_add_del_reply"
+            }
+        },
+        {
+            "ip_source_and_port_range_check_interface_add_del": {
+                "reply": "ip_source_and_port_range_check_interface_add_del_reply"
+            }
+        },
+        {
+            "set_ip_flow_hash": {
+                "reply": "set_ip_flow_hash_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["ip_fib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x5fe56ca3"}
-        ],
-        ["ip_fib_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "table_id"],
-            ["u8", "address_length"],
-            ["u8", "address", 4],
-            ["u32", "count"],
-            ["vl_api_fib_path_t", "path", 0, "count"],
-            {"crc" : "0xfd8c6584"}
-        ],
-        ["ip6_fib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x25c89676"}
-        ],
-        ["ip6_fib_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "table_id"],
-            ["u8", "address_length"],
-            ["u8", "address", 16],
-            ["u32", "count"],
-            ["vl_api_fib_path_t", "path", 0, "count"],
-            {"crc" : "0xe0825cb5"}
-        ],
-        ["ip_neighbor_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x3289e160"}
-        ],
-        ["ip_neighbor_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u8", "is_static"],
-            ["u8", "is_ipv6"],
-            ["u8", "mac_address", 6],
-            ["u8", "ip_address", 16],
-            {"crc" : "0x3a00e32a"}
-        ],
-        ["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" : "0x5a0d070b"}
-        ],
-        ["ip_neighbor_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xe5b0f318"}
-        ],
-        ["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" : "0x92ad3798"}
-        ],
-        ["set_ip_flow_hash_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x35a9e5eb"}
-        ],
-        ["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" : "0xec4a29f6"}
-        ],
-        ["sw_interface_ip6nd_ra_config_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x16e25c5b"}
-        ],
-        ["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" : "0x5db6555c"}
-        ],
-        ["sw_interface_ip6nd_ra_prefix_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8050adb3"}
-        ],
-        ["ip6nd_proxy_add_del",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_del"],
-            ["u8", "address", 16],
-            {"crc" : "0xc56f802d"}
-        ],
-        ["ip6nd_proxy_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x00ddc2d5"}
-        ],
-        ["ip6nd_proxy_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "address", 16],
-            {"crc" : "0xf805ccc1"}
-        ],
-        ["ip6nd_proxy_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x21597d88"}
-        ],
-        ["sw_interface_ip6_enable_disable",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "enable"],
-            {"crc" : "0x4a4e5405"}
-        ],
-        ["sw_interface_ip6_enable_disable_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xeb8b4a40"}
-        ],
-        ["sw_interface_ip6_set_link_local_address",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "address", 16],
-            {"crc" : "0x3db6d52b"}
-        ],
-        ["sw_interface_ip6_set_link_local_address_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x0a781e17"}
-        ],
-        ["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"],
-            ["u8", "create_vrf_if_needed"],
-            ["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", "not_last"],
-            ["u8", "next_hop_weight"],
-            ["u8", "dst_address_length"],
-            ["u8", "dst_address", 16],
-            ["u8", "next_hop_address", 16],
-            ["u8", "next_hop_n_out_labels"],
-            ["u32", "next_hop_via_label"],
-            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
-            {"crc" : "0xa0ab24bf"}
-        ],
-        ["ip_add_del_route_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0xea57492b"}
-        ],
-        ["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"],
-            ["u16", "grp_address_length"],
-            ["u8", "create_vrf_if_needed"],
-            ["u8", "is_add"],
-            ["u8", "is_ipv6"],
-            ["u8", "is_local"],
-            ["u8", "grp_address", 16],
-            ["u8", "src_address", 16],
-            {"crc" : "0x8f5f21a8"}
-        ],
-        ["ip_mroute_add_del_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x8cabe02c"}
-        ],
-        ["ip_mfib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xee61390e"}
-        ],
-        ["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" : "0x395e5699"}
-        ],
-        ["ip6_mfib_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x0839e143"}
-        ],
-        ["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" : "0x921b153f"}
-        ],
-        ["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" : "0x190d4266"}
-        ],
-        ["ip_address_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x632e859a"}
-        ],
-        ["ip_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "sw_if_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x695c8227"}
-        ],
-        ["ip_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "is_ipv6"],
-            {"crc" : "0x3c1e33e0"}
-        ],
-        ["mfib_signal_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xbbbbd40d"}
-        ],
-        ["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" : "0x6ba92c72"}
+    "vl_api_version": "0xb395c625",
+    "enums": [],
+    "messages": [
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_table_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_fib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6_fib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_neighbor_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x6b7bcd0a"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_neighbor_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "set_ip_flow_hash_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_ip6nd_ra_config_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "sw_interface_ip6nd_ra_prefix_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6nd_proxy_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip6nd_proxy_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "address",
+                16
+            ],
+            {
+                "crc": "0xd73bf1ab"
+            }
+        ],
+        [
+            "ip6nd_proxy_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "sw_interface_ip6_enable_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "enable"
+            ],
+            {
+                "crc": "0xa36fadc0"
+            }
+        ],
+        [
+            "sw_interface_ip6_enable_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "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",
+            [
+                "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"
+            ],
+            [
+                "u32",
+                "next_hop_out_label_stack",
+                0,
+                "next_hop_n_out_labels"
+            ],
+            {
+                "crc": "0xc85f8290"
+            }
+        ],
+        [
+            "ip_add_del_route_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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
+            ],
+            {
+                "crc": "0xc37112f7"
+            }
+        ],
+        [
+            "ip_mroute_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_mfib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip6_mfib_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_address_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x6b7bcd0a"
+            }
+        ],
+        [
+            "ip_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x452ffc5a"
+            }
+        ],
+        [
+            "ip_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0xde883da4"
+            }
+        ],
+        [
+            "mfib_signal_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_punt_police",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "policer_index"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "is_ip6"
+            ],
+            {
+                "crc": "0x38691592"
+            }
+        ],
+        [
+            "ip_punt_police_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ip_punt_redirect",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "rx_sw_if_index"
+            ],
+            [
+                "u32",
+                "tx_sw_if_index"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "is_ip6"
+            ],
+            [
+                "u8",
+                "nh",
+                16
+            ],
+            {
+                "crc": "0x996b6603"
+            }
+        ],
+        [
+            "ip_punt_redirect_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_container_proxy_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_source_and_port_range_check_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ip_source_and_port_range_check_interface_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip4_arp_events",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            [
+                "u32",
+                "address"
+            ],
+            {
+                "crc": "0x77e06379"
+            }
+        ],
+        [
+            "want_ip4_arp_events_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "want_ip6_nd_events",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            [
+                "u8",
+                "address",
+                16
+            ],
+            {
+                "crc": "0x1cf65fbb"
+            }
+        ],
+        [
+            "want_ip6_nd_events_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "proxy_arp_add_del",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u8",
+                "is_add"
+            ],
+            [
+                "u8",
+                "low_address",
+                4
+            ],
+            [
+                "u8",
+                "hi_address",
+                4
+            ],
+            {
+                "crc": "0xc2442918"
+            }
+        ],
+        [
+            "proxy_arp_add_del_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "proxy_arp_intfc_enable_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "enable_disable"
+            ],
+            {
+                "crc": "0x69d24598"
+            }
+        ],
+        [
+            "proxy_arp_intfc_enable_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "reset_fib",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            {
+                "crc": "0x8553ebd9"
+            }
+        ],
+        [
+            "reset_fib_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "set_arp_neighbor_limit",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "is_ipv6"
+            ],
+            [
+                "u32",
+                "arp_neighbor_limit"
+            ],
+            {
+                "crc": "0x97d01fd6"
+            }
+        ],
+        [
+            "set_arp_neighbor_limit_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "ioam_enable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "ioam_disable",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u16",
+                "id"
+            ],
+            {
+                "crc": "0x6b16a45e"
+            }
+        ],
+        [
+            "ioam_disable_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ]
     ],
-"vl_api_version" :"0x50fe2434"
+    "types": [
+        [
+            "fib_path",
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u32",
+                "table_id"
+            ],
+            [
+                "u8",
+                "weight"
+            ],
+            [
+                "u8",
+                "preference"
+            ],
+            [
+                "u8",
+                "is_local"
+            ],
+            [
+                "u8",
+                "is_drop"
+            ],
+            [
+                "u8",
+                "is_unreach"
+            ],
+            [
+                "u8",
+                "is_prohibit"
+            ],
+            [
+                "u8",
+                "afi"
+            ],
+            [
+                "u8",
+                "next_hop",
+                16
+            ],
+            {
+                "crc": "0xcd899e0a"
+            }
+        ]
+    ]
 }
index cea5053..7a72629 100644 (file)
@@ -6,26 +6,62 @@ package ip
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x50fe2434
+const VlAPIVersion = 0xb395c625
 
 // FibPath represents the VPP binary API data type 'fib_path'.
-// Generated from '../../bin_api/ip.api.json', line 3:
-//
-//        ["fib_path",
-//            ["u32", "sw_if_index"],
-//            ["u32", "weight"],
-//            ["u8", "is_local"],
-//            ["u8", "is_drop"],
-//            ["u8", "is_unreach"],
-//            ["u8", "is_prohibit"],
-//            ["u8", "afi"],
-//            ["u8", "next_hop", 16],
-//            {"crc" : "0x315b1889"}
-//        ]
+// Generated from '../../bin_api/ip.api.json', line 2199:
+//
+//            "fib_path",
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u32",
+//                "table_id"
+//            ],
+//            [
+//                "u8",
+//                "weight"
+//            ],
+//            [
+//                "u8",
+//                "preference"
+//            ],
+//            [
+//                "u8",
+//                "is_local"
+//            ],
+//            [
+//                "u8",
+//                "is_drop"
+//            ],
+//            [
+//                "u8",
+//                "is_unreach"
+//            ],
+//            [
+//                "u8",
+//                "is_prohibit"
+//            ],
+//            [
+//                "u8",
+//                "afi"
+//            ],
+//            [
+//                "u8",
+//                "next_hop",
+//                16
+//            ],
+//            {
+//                "crc": "0xcd899e0a"
+//            }
 //
 type FibPath struct {
        SwIfIndex  uint32
-       Weight     uint32
+       TableID    uint32
+       Weight     uint8
+       Preference uint8
        IsLocal    uint8
        IsDrop     uint8
        IsUnreach  uint8
@@ -38,18 +74,122 @@ func (*FibPath) GetTypeName() string {
        return "fib_path"
 }
 func (*FibPath) GetCrcString() string {
-       return "315b1889"
+       return "cd899e0a"
+}
+
+// IPTableAddDel represents the VPP binary API message 'ip_table_add_del'.
+// Generated from '../../bin_api/ip.api.json', line 187:
+//
+//            "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
+       IsIpv6  uint8
+       IsAdd   uint8
+       Name    []byte `struc:"[64]byte"`
+}
+
+func (*IPTableAddDel) GetMessageName() string {
+       return "ip_table_add_del"
+}
+func (*IPTableAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPTableAddDel) GetCrcString() string {
+       return "0240c89d"
+}
+func NewIPTableAddDel() api.Message {
+       return &IPTableAddDel{}
+}
+
+// IPTableAddDelReply represents the VPP binary API message 'ip_table_add_del_reply'.
+// Generated from '../../bin_api/ip.api.json', line 222:
+//
+//            "ip_table_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPTableAddDelReply struct {
+       Retval int32
+}
+
+func (*IPTableAddDelReply) GetMessageName() string {
+       return "ip_table_add_del_reply"
+}
+func (*IPTableAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPTableAddDelReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPTableAddDelReply() api.Message {
+       return &IPTableAddDelReply{}
 }
 
 // IPFibDump represents the VPP binary API message 'ip_fib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 16:
-//
-//        ["ip_fib_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x5fe56ca3"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 240:
+//
+//            "ip_fib_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type IPFibDump struct {
 }
@@ -61,28 +201,59 @@ func (*IPFibDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPFibDump) GetCrcString() string {
-       return "5fe56ca3"
+       return "51077d14"
 }
 func NewIPFibDump() api.Message {
        return &IPFibDump{}
 }
 
 // IPFibDetails represents the VPP binary API message 'ip_fib_details'.
-// Generated from '../../bin_api/ip.api.json', line 22:
-//
-//        ["ip_fib_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "table_id"],
-//            ["u8", "address_length"],
-//            ["u8", "address", 4],
-//            ["u32", "count"],
-//            ["vl_api_fib_path_t", "path", 0, "count"],
-//            {"crc" : "0xfd8c6584"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 258:
+//
+//            "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"
+//            }
 //
 type IPFibDetails struct {
        TableID       uint32
+       TableName     []byte `struc:"[64]byte"`
        AddressLength uint8
        Address       []byte `struc:"[4]byte"`
        Count         uint32 `struc:"sizeof=Path"`
@@ -96,21 +267,31 @@ func (*IPFibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPFibDetails) GetCrcString() string {
-       return "fd8c6584"
+       return "99dfd73b"
 }
 func NewIPFibDetails() api.Message {
        return &IPFibDetails{}
 }
 
 // IP6FibDump represents the VPP binary API message 'ip6_fib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 32:
-//
-//        ["ip6_fib_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x25c89676"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 300:
+//
+//            "ip6_fib_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type IP6FibDump struct {
 }
@@ -122,28 +303,59 @@ func (*IP6FibDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IP6FibDump) GetCrcString() string {
-       return "25c89676"
+       return "51077d14"
 }
 func NewIP6FibDump() api.Message {
        return &IP6FibDump{}
 }
 
 // IP6FibDetails represents the VPP binary API message 'ip6_fib_details'.
-// Generated from '../../bin_api/ip.api.json', line 38:
-//
-//        ["ip6_fib_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "table_id"],
-//            ["u8", "address_length"],
-//            ["u8", "address", 16],
-//            ["u32", "count"],
-//            ["vl_api_fib_path_t", "path", 0, "count"],
-//            {"crc" : "0xe0825cb5"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 318:
+//
+//            "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"
+//            }
 //
 type IP6FibDetails struct {
        TableID       uint32
+       TableName     []byte `struc:"[64]byte"`
        AddressLength uint8
        Address       []byte `struc:"[16]byte"`
        Count         uint32 `struc:"sizeof=Path"`
@@ -157,23 +369,39 @@ func (*IP6FibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IP6FibDetails) GetCrcString() string {
-       return "e0825cb5"
+       return "abd0060e"
 }
 func NewIP6FibDetails() api.Message {
        return &IP6FibDetails{}
 }
 
 // IPNeighborDump represents the VPP binary API message 'ip_neighbor_dump'.
-// Generated from '../../bin_api/ip.api.json', line 48:
-//
-//        ["ip_neighbor_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0x3289e160"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 360:
+//
+//            "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
@@ -187,26 +415,52 @@ func (*IPNeighborDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPNeighborDump) GetCrcString() string {
-       return "3289e160"
+       return "6b7bcd0a"
 }
 func NewIPNeighborDump() api.Message {
        return &IPNeighborDump{}
 }
 
 // IPNeighborDetails represents the VPP binary API message 'ip_neighbor_details'.
-// Generated from '../../bin_api/ip.api.json', line 56:
-//
-//        ["ip_neighbor_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u8", "is_static"],
-//            ["u8", "is_ipv6"],
-//            ["u8", "mac_address", 6],
-//            ["u8", "ip_address", 16],
-//            {"crc" : "0x3a00e32a"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 386:
+//
+//            "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"
+//            }
 //
 type IPNeighborDetails struct {
+       SwIfIndex  uint32
        IsStatic   uint8
        IsIpv6     uint8
        MacAddress []byte `struc:"[6]byte"`
@@ -220,28 +474,61 @@ func (*IPNeighborDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPNeighborDetails) GetCrcString() string {
-       return "3a00e32a"
+       return "85e32a72"
 }
 func NewIPNeighborDetails() api.Message {
        return &IPNeighborDetails{}
 }
 
 // IPNeighborAddDel represents the VPP binary API message 'ip_neighbor_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 65:
-//
-//        ["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" : "0x5a0d070b"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 422:
+//
+//            "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
@@ -260,21 +547,31 @@ func (*IPNeighborAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPNeighborAddDel) GetCrcString() string {
-       return "5a0d070b"
+       return "4711eb25"
 }
 func NewIPNeighborAddDel() api.Message {
        return &IPNeighborAddDel{}
 }
 
 // IPNeighborAddDelReply represents the VPP binary API message 'ip_neighbor_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 78:
-//
-//        ["ip_neighbor_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xe5b0f318"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 470:
+//
+//            "ip_neighbor_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type IPNeighborAddDelReply struct {
        Retval int32
@@ -287,29 +584,63 @@ func (*IPNeighborAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPNeighborAddDelReply) GetCrcString() string {
-       return "e5b0f318"
+       return "e8d4e804"
 }
 func NewIPNeighborAddDelReply() api.Message {
        return &IPNeighborAddDelReply{}
 }
 
 // SetIPFlowHash represents the VPP binary API message 'set_ip_flow_hash'.
-// Generated from '../../bin_api/ip.api.json', line 84:
-//
-//        ["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" : "0x92ad3798"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 488:
+//
+//            "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"
+//            }
 //
 type SetIPFlowHash struct {
        VrfID   uint32
@@ -329,21 +660,31 @@ func (*SetIPFlowHash) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SetIPFlowHash) GetCrcString() string {
-       return "92ad3798"
+       return "32ebf737"
 }
 func NewSetIPFlowHash() api.Message {
        return &SetIPFlowHash{}
 }
 
 // SetIPFlowHashReply represents the VPP binary API message 'set_ip_flow_hash_reply'.
-// Generated from '../../bin_api/ip.api.json', line 98:
-//
-//        ["set_ip_flow_hash_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x35a9e5eb"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 538:
+//
+//            "set_ip_flow_hash_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SetIPFlowHashReply struct {
        Retval int32
@@ -356,35 +697,87 @@ func (*SetIPFlowHashReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SetIPFlowHashReply) GetCrcString() string {
-       return "35a9e5eb"
+       return "e8d4e804"
 }
 func NewSetIPFlowHashReply() api.Message {
        return &SetIPFlowHashReply{}
 }
 
 // SwInterfaceIP6ndRaConfig represents the VPP binary API message 'sw_interface_ip6nd_ra_config'.
-// Generated from '../../bin_api/ip.api.json', line 104:
-//
-//        ["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" : "0xec4a29f6"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 556:
+//
+//            "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
@@ -410,21 +803,31 @@ func (*SwInterfaceIP6ndRaConfig) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceIP6ndRaConfig) GetCrcString() string {
-       return "ec4a29f6"
+       return "c3f02daa"
 }
 func NewSwInterfaceIP6ndRaConfig() api.Message {
        return &SwInterfaceIP6ndRaConfig{}
 }
 
 // SwInterfaceIP6ndRaConfigReply represents the VPP binary API message 'sw_interface_ip6nd_ra_config_reply'.
-// Generated from '../../bin_api/ip.api.json', line 124:
-//
-//        ["sw_interface_ip6nd_ra_config_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x16e25c5b"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 630:
+//
+//            "sw_interface_ip6nd_ra_config_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceIP6ndRaConfigReply struct {
        Retval int32
@@ -437,32 +840,76 @@ func (*SwInterfaceIP6ndRaConfigReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceIP6ndRaConfigReply) GetCrcString() string {
-       return "16e25c5b"
+       return "e8d4e804"
 }
 func NewSwInterfaceIP6ndRaConfigReply() api.Message {
        return &SwInterfaceIP6ndRaConfigReply{}
 }
 
 // SwInterfaceIP6ndRaPrefix represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix'.
-// Generated from '../../bin_api/ip.api.json', line 130:
-//
-//        ["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" : "0x5db6555c"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 648:
+//
+//            "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
@@ -485,21 +932,31 @@ func (*SwInterfaceIP6ndRaPrefix) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceIP6ndRaPrefix) GetCrcString() string {
-       return "5db6555c"
+       return "ca763c9a"
 }
 func NewSwInterfaceIP6ndRaPrefix() api.Message {
        return &SwInterfaceIP6ndRaPrefix{}
 }
 
 // SwInterfaceIP6ndRaPrefixReply represents the VPP binary API message 'sw_interface_ip6nd_ra_prefix_reply'.
-// Generated from '../../bin_api/ip.api.json', line 147:
-//
-//        ["sw_interface_ip6nd_ra_prefix_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x8050adb3"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 711:
+//
+//            "sw_interface_ip6nd_ra_prefix_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceIP6ndRaPrefixReply struct {
        Retval int32
@@ -512,24 +969,44 @@ func (*SwInterfaceIP6ndRaPrefixReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceIP6ndRaPrefixReply) GetCrcString() string {
-       return "8050adb3"
+       return "e8d4e804"
 }
 func NewSwInterfaceIP6ndRaPrefixReply() api.Message {
        return &SwInterfaceIP6ndRaPrefixReply{}
 }
 
 // IP6ndProxyAddDel represents the VPP binary API message 'ip6nd_proxy_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 153:
-//
-//        ["ip6nd_proxy_add_del",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "is_del"],
-//            ["u8", "address", 16],
-//            {"crc" : "0xc56f802d"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 729:
+//
+//            "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
@@ -544,21 +1021,31 @@ func (*IP6ndProxyAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IP6ndProxyAddDel) GetCrcString() string {
-       return "c56f802d"
+       return "d95f0fa0"
 }
 func NewIP6ndProxyAddDel() api.Message {
        return &IP6ndProxyAddDel{}
 }
 
 // IP6ndProxyAddDelReply represents the VPP binary API message 'ip6nd_proxy_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 162:
-//
-//        ["ip6nd_proxy_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x00ddc2d5"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 760:
+//
+//            "ip6nd_proxy_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type IP6ndProxyAddDelReply struct {
        Retval int32
@@ -571,23 +1058,40 @@ func (*IP6ndProxyAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IP6ndProxyAddDelReply) GetCrcString() string {
-       return "00ddc2d5"
+       return "e8d4e804"
 }
 func NewIP6ndProxyAddDelReply() api.Message {
        return &IP6ndProxyAddDelReply{}
 }
 
 // IP6ndProxyDetails represents the VPP binary API message 'ip6nd_proxy_details'.
-// Generated from '../../bin_api/ip.api.json', line 168:
-//
-//        ["ip6nd_proxy_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "address", 16],
-//            {"crc" : "0xf805ccc1"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 778:
+//
+//            "ip6nd_proxy_details",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u8",
+//                "address",
+//                16
+//            ],
+//            {
+//                "crc": "0xd73bf1ab"
+//            }
 //
 type IP6ndProxyDetails struct {
        SwIfIndex uint32
@@ -601,21 +1105,31 @@ func (*IP6ndProxyDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IP6ndProxyDetails) GetCrcString() string {
-       return "f805ccc1"
+       return "d73bf1ab"
 }
 func NewIP6ndProxyDetails() api.Message {
        return &IP6ndProxyDetails{}
 }
 
 // IP6ndProxyDump represents the VPP binary API message 'ip6nd_proxy_dump'.
-// Generated from '../../bin_api/ip.api.json', line 176:
-//
-//        ["ip6nd_proxy_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x21597d88"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 805:
+//
+//            "ip6nd_proxy_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type IP6ndProxyDump struct {
 }
@@ -627,23 +1141,39 @@ func (*IP6ndProxyDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IP6ndProxyDump) GetCrcString() string {
-       return "21597d88"
+       return "51077d14"
 }
 func NewIP6ndProxyDump() api.Message {
        return &IP6ndProxyDump{}
 }
 
 // SwInterfaceIP6EnableDisable represents the VPP binary API message 'sw_interface_ip6_enable_disable'.
-// Generated from '../../bin_api/ip.api.json', line 182:
-//
-//        ["sw_interface_ip6_enable_disable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "enable"],
-//            {"crc" : "0x4a4e5405"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 823:
+//
+//            "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
@@ -657,21 +1187,31 @@ func (*SwInterfaceIP6EnableDisable) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceIP6EnableDisable) GetCrcString() string {
-       return "4a4e5405"
+       return "a36fadc0"
 }
 func NewSwInterfaceIP6EnableDisable() api.Message {
        return &SwInterfaceIP6EnableDisable{}
 }
 
 // SwInterfaceIP6EnableDisableReply represents the VPP binary API message 'sw_interface_ip6_enable_disable_reply'.
-// Generated from '../../bin_api/ip.api.json', line 190:
-//
-//        ["sw_interface_ip6_enable_disable_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xeb8b4a40"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 849:
+//
+//            "sw_interface_ip6_enable_disable_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceIP6EnableDisableReply struct {
        Retval int32
@@ -684,23 +1224,40 @@ func (*SwInterfaceIP6EnableDisableReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceIP6EnableDisableReply) GetCrcString() string {
-       return "eb8b4a40"
+       return "e8d4e804"
 }
 func NewSwInterfaceIP6EnableDisableReply() api.Message {
        return &SwInterfaceIP6EnableDisableReply{}
 }
 
 // SwInterfaceIP6SetLinkLocalAddress represents the VPP binary API message 'sw_interface_ip6_set_link_local_address'.
-// Generated from '../../bin_api/ip.api.json', line 196:
-//
-//        ["sw_interface_ip6_set_link_local_address",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "address", 16],
-//            {"crc" : "0x3db6d52b"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 867:
+//
+//            "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
@@ -714,21 +1271,31 @@ func (*SwInterfaceIP6SetLinkLocalAddress) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceIP6SetLinkLocalAddress) GetCrcString() string {
-       return "3db6d52b"
+       return "d73bf1ab"
 }
 func NewSwInterfaceIP6SetLinkLocalAddress() api.Message {
        return &SwInterfaceIP6SetLinkLocalAddress{}
 }
 
 // SwInterfaceIP6SetLinkLocalAddressReply represents the VPP binary API message 'sw_interface_ip6_set_link_local_address_reply'.
-// Generated from '../../bin_api/ip.api.json', line 204:
-//
-//        ["sw_interface_ip6_set_link_local_address_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x0a781e17"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 894:
+//
+//            "sw_interface_ip6_set_link_local_address_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type SwInterfaceIP6SetLinkLocalAddressReply struct {
        Retval int32
@@ -741,51 +1308,150 @@ func (*SwInterfaceIP6SetLinkLocalAddressReply) GetMessageType() api.MessageType
        return api.ReplyMessage
 }
 func (*SwInterfaceIP6SetLinkLocalAddressReply) GetCrcString() string {
-       return "0a781e17"
+       return "e8d4e804"
 }
 func NewSwInterfaceIP6SetLinkLocalAddressReply() api.Message {
        return &SwInterfaceIP6SetLinkLocalAddressReply{}
 }
 
 // IPAddDelRoute represents the VPP binary API message 'ip_add_del_route'.
-// Generated from '../../bin_api/ip.api.json', line 210:
-//
-//        ["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"],
-//            ["u8", "create_vrf_if_needed"],
-//            ["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", "not_last"],
-//            ["u8", "next_hop_weight"],
-//            ["u8", "dst_address_length"],
-//            ["u8", "dst_address", 16],
-//            ["u8", "next_hop_address", 16],
-//            ["u8", "next_hop_n_out_labels"],
-//            ["u32", "next_hop_via_label"],
-//            ["u32", "next_hop_out_label_stack", 0, "next_hop_n_out_labels"],
-//            {"crc" : "0xa0ab24bf"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 912:
+//
+//            "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"
+//            ],
+//            [
+//                "u32",
+//                "next_hop_out_label_stack",
+//                0,
+//                "next_hop_n_out_labels"
+//            ],
+//            {
+//                "crc": "0xc85f8290"
+//            }
 //
 type IPAddDelRoute struct {
        NextHopSwIfIndex     uint32
        TableID              uint32
        ClassifyTableIndex   uint32
        NextHopTableID       uint32
-       CreateVrfIfNeeded    uint8
+       NextHopID            uint32
        IsAdd                uint8
        IsDrop               uint8
        IsUnreach            uint8
@@ -796,8 +1462,12 @@ type IPAddDelRoute struct {
        IsMultipath          uint8
        IsResolveHost        uint8
        IsResolveAttached    uint8
-       NotLast              uint8
+       IsDvr                uint8
+       IsSourceLookup       uint8
+       IsUDPEncap           uint8
        NextHopWeight        uint8
+       NextHopPreference    uint8
+       NextHopProto         uint8
        DstAddressLength     uint8
        DstAddress           []byte `struc:"[16]byte"`
        NextHopAddress       []byte `struc:"[16]byte"`
@@ -813,21 +1483,31 @@ func (*IPAddDelRoute) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPAddDelRoute) GetCrcString() string {
-       return "a0ab24bf"
+       return "c85f8290"
 }
 func NewIPAddDelRoute() api.Message {
        return &IPAddDelRoute{}
 }
 
 // IPAddDelRouteReply represents the VPP binary API message 'ip_add_del_route_reply'.
-// Generated from '../../bin_api/ip.api.json', line 239:
-//
-//        ["ip_add_del_route_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0xea57492b"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1042:
+//
+//            "ip_add_del_route_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type IPAddDelRouteReply struct {
        Retval int32
@@ -840,47 +1520,100 @@ func (*IPAddDelRouteReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPAddDelRouteReply) GetCrcString() string {
-       return "ea57492b"
+       return "e8d4e804"
 }
 func NewIPAddDelRouteReply() api.Message {
        return &IPAddDelRouteReply{}
 }
 
 // IPMrouteAddDel represents the VPP binary API message 'ip_mroute_add_del'.
-// Generated from '../../bin_api/ip.api.json', line 245:
-//
-//        ["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"],
-//            ["u16", "grp_address_length"],
-//            ["u8", "create_vrf_if_needed"],
-//            ["u8", "is_add"],
-//            ["u8", "is_ipv6"],
-//            ["u8", "is_local"],
-//            ["u8", "grp_address", 16],
-//            ["u8", "src_address", 16],
-//            {"crc" : "0x8f5f21a8"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1060:
+//
+//            "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
+//            ],
+//            {
+//                "crc": "0xc37112f7"
+//            }
 //
 type IPMrouteAddDel struct {
-       NextHopSwIfIndex  uint32
-       TableID           uint32
-       EntryFlags        uint32
-       ItfFlags          uint32
-       RpfID             uint32
-       GrpAddressLength  uint16
-       CreateVrfIfNeeded uint8
-       IsAdd             uint8
-       IsIpv6            uint8
-       IsLocal           uint8
-       GrpAddress        []byte `struc:"[16]byte"`
-       SrcAddress        []byte `struc:"[16]byte"`
+       NextHopSwIfIndex uint32
+       TableID          uint32
+       EntryFlags       uint32
+       ItfFlags         uint32
+       RpfID            uint32
+       BierImp          uint32
+       GrpAddressLength uint16
+       NextHopAfi       uint8
+       IsAdd            uint8
+       IsIpv6           uint8
+       IsLocal          uint8
+       GrpAddress       []byte `struc:"[16]byte"`
+       SrcAddress       []byte `struc:"[16]byte"`
 }
 
 func (*IPMrouteAddDel) GetMessageName() string {
@@ -890,21 +1623,31 @@ func (*IPMrouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPMrouteAddDel) GetCrcString() string {
-       return "8f5f21a8"
+       return "c37112f7"
 }
 func NewIPMrouteAddDel() api.Message {
        return &IPMrouteAddDel{}
 }
 
 // IPMrouteAddDelReply represents the VPP binary API message 'ip_mroute_add_del_reply'.
-// Generated from '../../bin_api/ip.api.json', line 263:
-//
-//        ["ip_mroute_add_del_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x8cabe02c"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1132:
+//
+//            "ip_mroute_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type IPMrouteAddDelReply struct {
        Retval int32
@@ -917,21 +1660,31 @@ func (*IPMrouteAddDelReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPMrouteAddDelReply) GetCrcString() string {
-       return "8cabe02c"
+       return "e8d4e804"
 }
 func NewIPMrouteAddDelReply() api.Message {
        return &IPMrouteAddDelReply{}
 }
 
 // IPMfibDump represents the VPP binary API message 'ip_mfib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 269:
-//
-//        ["ip_mfib_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xee61390e"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1150:
+//
+//            "ip_mfib_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type IPMfibDump struct {
 }
@@ -943,28 +1696,63 @@ func (*IPMfibDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPMfibDump) GetCrcString() string {
-       return "ee61390e"
+       return "51077d14"
 }
 func NewIPMfibDump() api.Message {
        return &IPMfibDump{}
 }
 
 // IPMfibDetails represents the VPP binary API message 'ip_mfib_details'.
-// Generated from '../../bin_api/ip.api.json', line 275:
-//
-//        ["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" : "0x395e5699"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1168:
+//
+//            "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"
+//            }
 //
 type IPMfibDetails struct {
        TableID       uint32
@@ -984,21 +1772,31 @@ func (*IPMfibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IPMfibDetails) GetCrcString() string {
-       return "395e5699"
+       return "5e530d5e"
 }
 func NewIPMfibDetails() api.Message {
        return &IPMfibDetails{}
 }
 
 // IP6MfibDump represents the VPP binary API message 'ip6_mfib_dump'.
-// Generated from '../../bin_api/ip.api.json', line 288:
-//
-//        ["ip6_mfib_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x0839e143"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1218:
+//
+//            "ip6_mfib_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type IP6MfibDump struct {
 }
@@ -1010,26 +1808,55 @@ func (*IP6MfibDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IP6MfibDump) GetCrcString() string {
-       return "0839e143"
+       return "51077d14"
 }
 func NewIP6MfibDump() api.Message {
        return &IP6MfibDump{}
 }
 
 // IP6MfibDetails represents the VPP binary API message 'ip6_mfib_details'.
-// Generated from '../../bin_api/ip.api.json', line 294:
-//
-//        ["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" : "0x921b153f"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1236:
+//
+//            "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
@@ -1047,25 +1874,48 @@ func (*IP6MfibDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*IP6MfibDetails) GetCrcString() string {
-       return "921b153f"
+       return "e02dcb4b"
 }
 func NewIP6MfibDetails() api.Message {
        return &IP6MfibDetails{}
 }
 
 // IPAddressDetails represents the VPP binary API message 'ip_address_details'.
-// Generated from '../../bin_api/ip.api.json', line 305:
-//
-//        ["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" : "0x190d4266"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1278:
+//
+//            "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"
+//            }
 //
 type IPAddressDetails struct {
        IP           []byte `struc:"[16]byte"`
@@ -1081,23 +1931,39 @@ func (*IPAddressDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPAddressDetails) GetCrcString() string {
-       return "190d4266"
+       return "bc7442f2"
 }
 func NewIPAddressDetails() api.Message {
        return &IPAddressDetails{}
 }
 
 // IPAddressDump represents the VPP binary API message 'ip_address_dump'.
-// Generated from '../../bin_api/ip.api.json', line 315:
-//
-//        ["ip_address_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0x632e859a"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1313:
+//
+//            "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
@@ -1111,22 +1977,35 @@ func (*IPAddressDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPAddressDump) GetCrcString() string {
-       return "632e859a"
+       return "6b7bcd0a"
 }
 func NewIPAddressDump() api.Message {
        return &IPAddressDump{}
 }
 
 // IPDetails represents the VPP binary API message 'ip_details'.
-// Generated from '../../bin_api/ip.api.json', line 323:
-//
-//        ["ip_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "sw_if_index"],
-//            ["u32", "context"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0x695c8227"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1339:
+//
+//            "ip_details",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "is_ipv6"
+//            ],
+//            {
+//                "crc": "0x452ffc5a"
+//            }
 //
 type IPDetails struct {
        SwIfIndex uint32
@@ -1141,22 +2020,35 @@ func (*IPDetails) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
 func (*IPDetails) GetCrcString() string {
-       return "695c8227"
+       return "452ffc5a"
 }
 func NewIPDetails() api.Message {
        return &IPDetails{}
 }
 
 // IPDump represents the VPP binary API message 'ip_dump'.
-// Generated from '../../bin_api/ip.api.json', line 330:
-//
-//        ["ip_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "is_ipv6"],
-//            {"crc" : "0x3c1e33e0"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1361:
+//
+//            "ip_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "is_ipv6"
+//            ],
+//            {
+//                "crc": "0xde883da4"
+//            }
 //
 type IPDump struct {
        IsIpv6 uint8
@@ -1169,21 +2061,31 @@ func (*IPDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPDump) GetCrcString() string {
-       return "3c1e33e0"
+       return "de883da4"
 }
 func NewIPDump() api.Message {
        return &IPDump{}
 }
 
 // MfibSignalDump represents the VPP binary API message 'mfib_signal_dump'.
-// Generated from '../../bin_api/ip.api.json', line 337:
-//
-//        ["mfib_signal_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xbbbbd40d"}
-//        ],
+// Generated from '../../bin_api/ip.api.json', line 1383:
+//
+//            "mfib_signal_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type MfibSignalDump struct {
 }
@@ -1195,28 +2097,62 @@ func (*MfibSignalDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MfibSignalDump) GetCrcString() string {
-       return "bbbbd40d"
+       return "51077d14"
 }
 func NewMfibSignalDump() api.Message {
        return &MfibSignalDump{}
 }
 
 // MfibSignalDetails represents the VPP binary API message 'mfib_signal_details'.
-// Generated from '../../bin_api/ip.api.json', line 343:
-//
-//        ["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" : "0x6ba92c72"}
-//        ]
+// Generated from '../../bin_api/ip.api.json', line 1401:
+//
+//            "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"
+//            }
 //
 type MfibSignalDetails struct {
        SwIfIndex     uint32
@@ -1235,8 +2171,1332 @@ func (*MfibSignalDetails) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MfibSignalDetails) GetCrcString() string {
-       return "6ba92c72"
+       return "791bbeab"
 }
 func NewMfibSignalDetails() api.Message {
        return &MfibSignalDetails{}
 }
+
+// IPPuntPolice represents the VPP binary API message 'ip_punt_police'.
+// Generated from '../../bin_api/ip.api.json', line 1450:
+//
+//            "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
+       IsAdd        uint8
+       IsIP6        uint8
+}
+
+func (*IPPuntPolice) GetMessageName() string {
+       return "ip_punt_police"
+}
+func (*IPPuntPolice) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPPuntPolice) GetCrcString() string {
+       return "38691592"
+}
+func NewIPPuntPolice() api.Message {
+       return &IPPuntPolice{}
+}
+
+// IPPuntPoliceReply represents the VPP binary API message 'ip_punt_police_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1480:
+//
+//            "ip_punt_police_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPPuntPoliceReply struct {
+       Retval int32
+}
+
+func (*IPPuntPoliceReply) GetMessageName() string {
+       return "ip_punt_police_reply"
+}
+func (*IPPuntPoliceReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPPuntPoliceReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPPuntPoliceReply() api.Message {
+       return &IPPuntPoliceReply{}
+}
+
+// IPPuntRedirect represents the VPP binary API message 'ip_punt_redirect'.
+// Generated from '../../bin_api/ip.api.json', line 1498:
+//
+//            "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"
+//            }
+//
+type IPPuntRedirect struct {
+       RxSwIfIndex uint32
+       TxSwIfIndex uint32
+       IsAdd       uint8
+       IsIP6       uint8
+       Nh          []byte `struc:"[16]byte"`
+}
+
+func (*IPPuntRedirect) GetMessageName() string {
+       return "ip_punt_redirect"
+}
+func (*IPPuntRedirect) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPPuntRedirect) GetCrcString() string {
+       return "996b6603"
+}
+func NewIPPuntRedirect() api.Message {
+       return &IPPuntRedirect{}
+}
+
+// IPPuntRedirectReply represents the VPP binary API message 'ip_punt_redirect_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1537:
+//
+//            "ip_punt_redirect_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPPuntRedirectReply struct {
+       Retval int32
+}
+
+func (*IPPuntRedirectReply) GetMessageName() string {
+       return "ip_punt_redirect_reply"
+}
+func (*IPPuntRedirectReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPPuntRedirectReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPPuntRedirectReply() api.Message {
+       return &IPPuntRedirectReply{}
+}
+
+// IPContainerProxyAddDel represents the VPP binary API message 'ip_container_proxy_add_del'.
+// Generated from '../../bin_api/ip.api.json', line 1555:
+//
+//            "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"`
+       IsIP4     uint8
+       Plen      uint8
+       SwIfIndex uint32
+       IsAdd     uint8
+}
+
+func (*IPContainerProxyAddDel) GetMessageName() string {
+       return "ip_container_proxy_add_del"
+}
+func (*IPContainerProxyAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPContainerProxyAddDel) GetCrcString() string {
+       return "0a355d39"
+}
+func NewIPContainerProxyAddDel() api.Message {
+       return &IPContainerProxyAddDel{}
+}
+
+// IPContainerProxyAddDelReply represents the VPP binary API message 'ip_container_proxy_add_del_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1594:
+//
+//            "ip_container_proxy_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPContainerProxyAddDelReply struct {
+       Retval int32
+}
+
+func (*IPContainerProxyAddDelReply) GetMessageName() string {
+       return "ip_container_proxy_add_del_reply"
+}
+func (*IPContainerProxyAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPContainerProxyAddDelReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPContainerProxyAddDelReply() api.Message {
+       return &IPContainerProxyAddDelReply{}
+}
+
+// IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'.
+// Generated from '../../bin_api/ip.api.json', line 1612:
+//
+//            "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
+       IsAdd          uint8
+       MaskLength     uint8
+       Address        []byte `struc:"[16]byte"`
+       NumberOfRanges uint8
+       LowPorts       []uint16 `struc:"[32]uint16"`
+       HighPorts      []uint16 `struc:"[32]uint16"`
+       VrfID          uint32
+}
+
+func (*IPSourceAndPortRangeCheckAddDel) GetMessageName() string {
+       return "ip_source_and_port_range_check_add_del"
+}
+func (*IPSourceAndPortRangeCheckAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPSourceAndPortRangeCheckAddDel) GetCrcString() string {
+       return "03d6b03a"
+}
+func NewIPSourceAndPortRangeCheckAddDel() api.Message {
+       return &IPSourceAndPortRangeCheckAddDel{}
+}
+
+// IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1665:
+//
+//            "ip_source_and_port_range_check_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IPSourceAndPortRangeCheckAddDelReply struct {
+       Retval int32
+}
+
+func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageName() string {
+       return "ip_source_and_port_range_check_add_del_reply"
+}
+func (*IPSourceAndPortRangeCheckAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPSourceAndPortRangeCheckAddDelReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPSourceAndPortRangeCheckAddDelReply() api.Message {
+       return &IPSourceAndPortRangeCheckAddDelReply{}
+}
+
+// IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'.
+// Generated from '../../bin_api/ip.api.json', line 1683:
+//
+//            "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
+       SwIfIndex   uint32
+       TCPInVrfID  uint32
+       TCPOutVrfID uint32
+       UDPInVrfID  uint32
+       UDPOutVrfID uint32
+}
+
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageName() string {
+       return "ip_source_and_port_range_check_interface_add_del"
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDel) GetCrcString() string {
+       return "6966bc44"
+}
+func NewIPSourceAndPortRangeCheckInterfaceAddDel() api.Message {
+       return &IPSourceAndPortRangeCheckInterfaceAddDel{}
+}
+
+// IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1725:
+//
+//            "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
+}
+
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageName() string {
+       return "ip_source_and_port_range_check_interface_add_del_reply"
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPSourceAndPortRangeCheckInterfaceAddDelReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
+       return &IPSourceAndPortRangeCheckInterfaceAddDelReply{}
+}
+
+// WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
+// Generated from '../../bin_api/ip.api.json', line 1743:
+//
+//            "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
+       Pid           uint32
+       Address       uint32
+}
+
+func (*WantIP4ArpEvents) GetMessageName() string {
+       return "want_ip4_arp_events"
+}
+func (*WantIP4ArpEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP4ArpEvents) GetCrcString() string {
+       return "77e06379"
+}
+func NewWantIP4ArpEvents() api.Message {
+       return &WantIP4ArpEvents{}
+}
+
+// WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1773:
+//
+//            "want_ip4_arp_events_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP4ArpEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP4ArpEventsReply) GetMessageName() string {
+       return "want_ip4_arp_events_reply"
+}
+func (*WantIP4ArpEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP4ArpEventsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP4ArpEventsReply() api.Message {
+       return &WantIP4ArpEventsReply{}
+}
+
+// IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
+// Generated from '../../bin_api/ip.api.json', line 1791:
+//
+//            "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
+       Pid       uint32
+       SwIfIndex uint32
+       NewMac    []byte `struc:"[6]byte"`
+       MacIP     uint8
+}
+
+func (*IP4ArpEvent) GetMessageName() string {
+       return "ip4_arp_event"
+}
+func (*IP4ArpEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+func (*IP4ArpEvent) GetCrcString() string {
+       return "ef7235f7"
+}
+func NewIP4ArpEvent() api.Message {
+       return &IP4ArpEvent{}
+}
+
+// WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
+// Generated from '../../bin_api/ip.api.json', line 1826:
+//
+//            "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
+       Pid           uint32
+       Address       []byte `struc:"[16]byte"`
+}
+
+func (*WantIP6NdEvents) GetMessageName() string {
+       return "want_ip6_nd_events"
+}
+func (*WantIP6NdEvents) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP6NdEvents) GetCrcString() string {
+       return "1cf65fbb"
+}
+func NewWantIP6NdEvents() api.Message {
+       return &WantIP6NdEvents{}
+}
+
+// WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1857:
+//
+//            "want_ip6_nd_events_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP6NdEventsReply struct {
+       Retval int32
+}
+
+func (*WantIP6NdEventsReply) GetMessageName() string {
+       return "want_ip6_nd_events_reply"
+}
+func (*WantIP6NdEventsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP6NdEventsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP6NdEventsReply() api.Message {
+       return &WantIP6NdEventsReply{}
+}
+
+// IP6NdEvent represents the VPP binary API message 'ip6_nd_event'.
+// Generated from '../../bin_api/ip.api.json', line 1875:
+//
+//            "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
+       SwIfIndex uint32
+       Address   []byte `struc:"[16]byte"`
+       NewMac    []byte `struc:"[6]byte"`
+       MacIP     uint8
+}
+
+func (*IP6NdEvent) GetMessageName() string {
+       return "ip6_nd_event"
+}
+func (*IP6NdEvent) GetMessageType() api.MessageType {
+       return api.EventMessage
+}
+func (*IP6NdEvent) GetCrcString() string {
+       return "96ab2fdd"
+}
+func NewIP6NdEvent() api.Message {
+       return &IP6NdEvent{}
+}
+
+// ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
+// Generated from '../../bin_api/ip.api.json', line 1911:
+//
+//            "proxy_arp_add_del",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "vrf_id"
+//            ],
+//            [
+//                "u8",
+//                "is_add"
+//            ],
+//            [
+//                "u8",
+//                "low_address",
+//                4
+//            ],
+//            [
+//                "u8",
+//                "hi_address",
+//                4
+//            ],
+//            {
+//                "crc": "0xc2442918"
+//            }
+//
+type ProxyArpAddDel struct {
+       VrfID      uint32
+       IsAdd      uint8
+       LowAddress []byte `struc:"[4]byte"`
+       HiAddress  []byte `struc:"[4]byte"`
+}
+
+func (*ProxyArpAddDel) GetMessageName() string {
+       return "proxy_arp_add_del"
+}
+func (*ProxyArpAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ProxyArpAddDel) GetCrcString() string {
+       return "c2442918"
+}
+func NewProxyArpAddDel() api.Message {
+       return &ProxyArpAddDel{}
+}
+
+// ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1947:
+//
+//            "proxy_arp_add_del_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type ProxyArpAddDelReply struct {
+       Retval int32
+}
+
+func (*ProxyArpAddDelReply) GetMessageName() string {
+       return "proxy_arp_add_del_reply"
+}
+func (*ProxyArpAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ProxyArpAddDelReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewProxyArpAddDelReply() api.Message {
+       return &ProxyArpAddDelReply{}
+}
+
+// ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'.
+// Generated from '../../bin_api/ip.api.json', line 1965:
+//
+//            "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
+       EnableDisable uint8
+}
+
+func (*ProxyArpIntfcEnableDisable) GetMessageName() string {
+       return "proxy_arp_intfc_enable_disable"
+}
+func (*ProxyArpIntfcEnableDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ProxyArpIntfcEnableDisable) GetCrcString() string {
+       return "69d24598"
+}
+func NewProxyArpIntfcEnableDisable() api.Message {
+       return &ProxyArpIntfcEnableDisable{}
+}
+
+// ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'.
+// Generated from '../../bin_api/ip.api.json', line 1991:
+//
+//            "proxy_arp_intfc_enable_disable_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type ProxyArpIntfcEnableDisableReply struct {
+       Retval int32
+}
+
+func (*ProxyArpIntfcEnableDisableReply) GetMessageName() string {
+       return "proxy_arp_intfc_enable_disable_reply"
+}
+func (*ProxyArpIntfcEnableDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ProxyArpIntfcEnableDisableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewProxyArpIntfcEnableDisableReply() api.Message {
+       return &ProxyArpIntfcEnableDisableReply{}
+}
+
+// ResetFib represents the VPP binary API message 'reset_fib'.
+// Generated from '../../bin_api/ip.api.json', line 2009:
+//
+//            "reset_fib",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "vrf_id"
+//            ],
+//            [
+//                "u8",
+//                "is_ipv6"
+//            ],
+//            {
+//                "crc": "0x8553ebd9"
+//            }
+//
+type ResetFib struct {
+       VrfID  uint32
+       IsIpv6 uint8
+}
+
+func (*ResetFib) GetMessageName() string {
+       return "reset_fib"
+}
+func (*ResetFib) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ResetFib) GetCrcString() string {
+       return "8553ebd9"
+}
+func NewResetFib() api.Message {
+       return &ResetFib{}
+}
+
+// ResetFibReply represents the VPP binary API message 'reset_fib_reply'.
+// Generated from '../../bin_api/ip.api.json', line 2035:
+//
+//            "reset_fib_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type ResetFibReply struct {
+       Retval int32
+}
+
+func (*ResetFibReply) GetMessageName() string {
+       return "reset_fib_reply"
+}
+func (*ResetFibReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ResetFibReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewResetFibReply() api.Message {
+       return &ResetFibReply{}
+}
+
+// SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'.
+// Generated from '../../bin_api/ip.api.json', line 2053:
+//
+//            "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
+       ArpNeighborLimit uint32
+}
+
+func (*SetArpNeighborLimit) GetMessageName() string {
+       return "set_arp_neighbor_limit"
+}
+func (*SetArpNeighborLimit) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SetArpNeighborLimit) GetCrcString() string {
+       return "97d01fd6"
+}
+func NewSetArpNeighborLimit() api.Message {
+       return &SetArpNeighborLimit{}
+}
+
+// SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'.
+// Generated from '../../bin_api/ip.api.json', line 2079:
+//
+//            "set_arp_neighbor_limit_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type SetArpNeighborLimitReply struct {
+       Retval int32
+}
+
+func (*SetArpNeighborLimitReply) GetMessageName() string {
+       return "set_arp_neighbor_limit_reply"
+}
+func (*SetArpNeighborLimitReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SetArpNeighborLimitReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewSetArpNeighborLimitReply() api.Message {
+       return &SetArpNeighborLimitReply{}
+}
+
+// IoamEnable represents the VPP binary API message 'ioam_enable'.
+// Generated from '../../bin_api/ip.api.json', line 2097:
+//
+//            "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
+       Seqno       uint8
+       Analyse     uint8
+       PotEnable   uint8
+       TraceEnable uint8
+       NodeID      uint32
+}
+
+func (*IoamEnable) GetMessageName() string {
+       return "ioam_enable"
+}
+func (*IoamEnable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IoamEnable) GetCrcString() string {
+       return "9392e032"
+}
+func NewIoamEnable() api.Message {
+       return &IoamEnable{}
+}
+
+// IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'.
+// Generated from '../../bin_api/ip.api.json', line 2139:
+//
+//            "ioam_enable_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IoamEnableReply struct {
+       Retval int32
+}
+
+func (*IoamEnableReply) GetMessageName() string {
+       return "ioam_enable_reply"
+}
+func (*IoamEnableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IoamEnableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIoamEnableReply() api.Message {
+       return &IoamEnableReply{}
+}
+
+// IoamDisable represents the VPP binary API message 'ioam_disable'.
+// Generated from '../../bin_api/ip.api.json', line 2157:
+//
+//            "ioam_disable",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u16",
+//                "id"
+//            ],
+//            {
+//                "crc": "0x6b16a45e"
+//            }
+//
+type IoamDisable struct {
+       ID uint16
+}
+
+func (*IoamDisable) GetMessageName() string {
+       return "ioam_disable"
+}
+func (*IoamDisable) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IoamDisable) GetCrcString() string {
+       return "6b16a45e"
+}
+func NewIoamDisable() api.Message {
+       return &IoamDisable{}
+}
+
+// IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'.
+// Generated from '../../bin_api/ip.api.json', line 2179:
+//
+//            "ioam_disable_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type IoamDisableReply struct {
+       Retval int32
+}
+
+func (*IoamDisableReply) GetMessageName() string {
+       return "ioam_disable_reply"
+}
+func (*IoamDisableReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IoamDisableReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewIoamDisableReply() api.Message {
+       return &IoamDisableReply{}
+}
index fd38316..dea1924 100644 (file)
 {
-    "types" : [
-
+    "services": [
+        {
+            "memif_dump": {
+                "reply": "memif_details",
+                "stream": true
+            }
+        },
+        {
+            "memif_create": {
+                "reply": "memif_create_reply"
+            }
+        },
+        {
+            "memif_delete": {
+                "reply": "memif_delete_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["memif_create",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u8", "role"],
-            ["u8", "mode"],
-            ["u8", "rx_queues"],
-            ["u8", "tx_queues"],
-            ["u32", "id"],
-            ["u8", "socket_filename", 128],
-            ["u8", "secret", 24],
-            ["u32", "ring_size"],
-            ["u16", "buffer_size"],
-            ["u8", "hw_addr", 6],
-            {"crc" : "0xc809c235"}
+    "vl_api_version": "0x824c4ae0",
+    "enums": [],
+    "messages": [
+        [
+            "memif_create",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u8",
+                "role"
+            ],
+            [
+                "u8",
+                "mode"
+            ],
+            [
+                "u8",
+                "rx_queues"
+            ],
+            [
+                "u8",
+                "tx_queues"
+            ],
+            [
+                "u32",
+                "id"
+            ],
+            [
+                "u8",
+                "socket_filename",
+                128
+            ],
+            [
+                "u8",
+                "secret",
+                24
+            ],
+            [
+                "u32",
+                "ring_size"
+            ],
+            [
+                "u16",
+                "buffer_size"
+            ],
+            [
+                "u8",
+                "hw_addr",
+                6
+            ],
+            {
+                "crc": "0x3551c914"
+            }
         ],
-        ["memif_create_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x93d7498b"}
+        [
+            "memif_create_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
         ],
-        ["memif_delete",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x12814e3d"}
+        [
+            "memif_delete",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
         ],
-        ["memif_delete_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x72c9fa3c"}
+        [
+            "memif_delete_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ],
-        ["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"],
-            ["u8", "socket_filename", 128],
-            ["u32", "ring_size"],
-            ["u16", "buffer_size"],
-            ["u8", "admin_up_down"],
-            ["u8", "link_up_down"],
-            {"crc" : "0x4d74fd96"}
+        [
+            "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"
+            ],
+            [
+                "u8",
+                "socket_filename",
+                128
+            ],
+            [
+                "u32",
+                "ring_size"
+            ],
+            [
+                "u16",
+                "buffer_size"
+            ],
+            [
+                "u8",
+                "admin_up_down"
+            ],
+            [
+                "u8",
+                "link_up_down"
+            ],
+            {
+                "crc": "0x0e1da928"
+            }
         ],
-        ["memif_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0x68d39e95"}
+        [
+            "memif_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
         ]
     ],
-"vl_api_version" :"0xed3def5d"
+    "types": []
 }
index 6ff81de..3f6ad02 100644 (file)
@@ -6,27 +6,70 @@ package memif
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0xed3def5d
+const VlAPIVersion = 0x824c4ae0
 
 // MemifCreate represents the VPP binary API message 'memif_create'.
-// Generated from '../../bin_api/memif.api.json', line 6:
+// Generated from '../../bin_api/memif.api.json', line 24:
 //
-//        ["memif_create",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u8", "role"],
-//            ["u8", "mode"],
-//            ["u8", "rx_queues"],
-//            ["u8", "tx_queues"],
-//            ["u32", "id"],
-//            ["u8", "socket_filename", 128],
-//            ["u8", "secret", 24],
-//            ["u32", "ring_size"],
-//            ["u16", "buffer_size"],
-//            ["u8", "hw_addr", 6],
-//            {"crc" : "0xc809c235"}
-//        ],
+//            "memif_create",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u8",
+//                "role"
+//            ],
+//            [
+//                "u8",
+//                "mode"
+//            ],
+//            [
+//                "u8",
+//                "rx_queues"
+//            ],
+//            [
+//                "u8",
+//                "tx_queues"
+//            ],
+//            [
+//                "u32",
+//                "id"
+//            ],
+//            [
+//                "u8",
+//                "socket_filename",
+//                128
+//            ],
+//            [
+//                "u8",
+//                "secret",
+//                24
+//            ],
+//            [
+//                "u32",
+//                "ring_size"
+//            ],
+//            [
+//                "u16",
+//                "buffer_size"
+//            ],
+//            [
+//                "u8",
+//                "hw_addr",
+//                6
+//            ],
+//            {
+//                "crc": "0x3551c914"
+//            }
 //
 type MemifCreate struct {
        Role           uint8
@@ -48,22 +91,35 @@ func (*MemifCreate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MemifCreate) GetCrcString() string {
-       return "c809c235"
+       return "3551c914"
 }
 func NewMemifCreate() api.Message {
        return &MemifCreate{}
 }
 
 // MemifCreateReply represents the VPP binary API message 'memif_create_reply'.
-// Generated from '../../bin_api/memif.api.json', line 22:
+// Generated from '../../bin_api/memif.api.json', line 85:
 //
-//        ["memif_create_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x93d7498b"}
-//        ],
+//            "memif_create_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type MemifCreateReply struct {
        Retval    int32
@@ -77,22 +133,35 @@ func (*MemifCreateReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MemifCreateReply) GetCrcString() string {
-       return "93d7498b"
+       return "fda5941f"
 }
 func NewMemifCreateReply() api.Message {
        return &MemifCreateReply{}
 }
 
 // MemifDelete represents the VPP binary API message 'memif_delete'.
-// Generated from '../../bin_api/memif.api.json', line 29:
+// Generated from '../../bin_api/memif.api.json', line 107:
 //
-//        ["memif_delete",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x12814e3d"}
-//        ],
+//            "memif_delete",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type MemifDelete struct {
        SwIfIndex uint32
@@ -105,21 +174,31 @@ func (*MemifDelete) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MemifDelete) GetCrcString() string {
-       return "12814e3d"
+       return "529cb13f"
 }
 func NewMemifDelete() api.Message {
        return &MemifDelete{}
 }
 
 // MemifDeleteReply represents the VPP binary API message 'memif_delete_reply'.
-// Generated from '../../bin_api/memif.api.json', line 36:
+// Generated from '../../bin_api/memif.api.json', line 129:
 //
-//        ["memif_delete_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x72c9fa3c"}
-//        ],
+//            "memif_delete_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type MemifDeleteReply struct {
        Retval int32
@@ -132,31 +211,74 @@ func (*MemifDeleteReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MemifDeleteReply) GetCrcString() string {
-       return "72c9fa3c"
+       return "e8d4e804"
 }
 func NewMemifDeleteReply() api.Message {
        return &MemifDeleteReply{}
 }
 
 // MemifDetails represents the VPP binary API message 'memif_details'.
-// Generated from '../../bin_api/memif.api.json', line 42:
+// Generated from '../../bin_api/memif.api.json', line 147:
 //
-//        ["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"],
-//            ["u8", "socket_filename", 128],
-//            ["u32", "ring_size"],
-//            ["u16", "buffer_size"],
-//            ["u8", "admin_up_down"],
-//            ["u8", "link_up_down"],
-//            {"crc" : "0x4d74fd96"}
-//        ],
+//            "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"
+//            ],
+//            [
+//                "u8",
+//                "socket_filename",
+//                128
+//            ],
+//            [
+//                "u32",
+//                "ring_size"
+//            ],
+//            [
+//                "u16",
+//                "buffer_size"
+//            ],
+//            [
+//                "u8",
+//                "admin_up_down"
+//            ],
+//            [
+//                "u8",
+//                "link_up_down"
+//            ],
+//            {
+//                "crc": "0x0e1da928"
+//            }
 //
 type MemifDetails struct {
        SwIfIndex      uint32
@@ -179,21 +301,31 @@ func (*MemifDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MemifDetails) GetCrcString() string {
-       return "4d74fd96"
+       return "0e1da928"
 }
 func NewMemifDetails() api.Message {
        return &MemifDetails{}
 }
 
 // MemifDump represents the VPP binary API message 'memif_dump'.
-// Generated from '../../bin_api/memif.api.json', line 58:
+// Generated from '../../bin_api/memif.api.json', line 208:
 //
-//        ["memif_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0x68d39e95"}
-//        ]
+//            "memif_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type MemifDump struct {
 }
@@ -205,7 +337,7 @@ func (*MemifDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MemifDump) GetCrcString() string {
-       return "68d39e95"
+       return "51077d14"
 }
 func NewMemifDump() api.Message {
        return &MemifDump{}
diff --git a/examples/bin_api/stats.api.json b/examples/bin_api/stats.api.json
new file mode 100644 (file)
index 0000000..3275811
--- /dev/null
@@ -0,0 +1,922 @@
+{
+    "services": [
+        {
+            "want_ip4_fib_stats": {
+                "reply": "want_ip4_fib_stats_reply"
+            }
+        },
+        {
+            "want_ip4_mfib_stats": {
+                "reply": "want_ip4_mfib_stats_reply"
+            }
+        },
+        {
+            "want_interface_combined_stats": {
+                "reply": "want_interface_combined_stats_reply"
+            }
+        },
+        {
+            "want_ip6_fib_stats": {
+                "reply": "want_ip6_fib_stats_reply"
+            }
+        },
+        {
+            "want_stats": {
+                "reply": "want_stats_reply"
+            }
+        },
+        {
+            "want_per_interface_simple_stats": {
+                "reply": "want_per_interface_simple_stats_reply"
+            }
+        },
+        {
+            "want_per_interface_combined_stats": {
+                "reply": "want_per_interface_combined_stats_reply"
+            }
+        },
+        {
+            "vnet_get_summary_stats": {
+                "reply": "vnet_get_summary_stats_reply"
+            }
+        },
+        {
+            "want_ip6_mfib_stats": {
+                "reply": "want_ip6_mfib_stats_reply"
+            }
+        },
+        {
+            "want_interface_simple_stats": {
+                "reply": "want_interface_simple_stats_reply"
+            }
+        },
+        {
+            "want_ip4_nbr_stats": {
+                "reply": "want_ip4_nbr_stats_reply"
+            }
+        },
+        {
+            "want_ip6_nbr_stats": {
+                "reply": "want_ip6_nbr_stats_reply"
+            }
+        }
+    ],
+    "vl_api_version": "0x50890812",
+    "enums": [],
+    "messages": [
+        [
+            "want_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_interface_simple_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_interface_simple_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "want_per_interface_simple_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_interface_combined_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_interface_combined_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "want_per_interface_combined_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip4_fib_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip4_fib_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip6_fib_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip6_fib_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip4_mfib_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip4_mfib_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip6_mfib_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip6_mfib_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip4_nbr_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip4_nbr_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "want_ip6_nbr_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "enable_disable"
+            ],
+            [
+                "u32",
+                "pid"
+            ],
+            {
+                "crc": "0x476f5a08"
+            }
+        ],
+        [
+            "want_ip6_nbr_stats_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
+        ],
+        [
+            "vnet_ip4_fib_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "vl_api_ip4_fib_counter_t",
+                "c",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x57e3feec"
+            }
+        ],
+        [
+            "vnet_ip4_mfib_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "vl_api_ip4_mfib_counter_t",
+                "c",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x946eb588"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "vnet_ip6_fib_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "vl_api_ip6_fib_counter_t",
+                "c",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x13aed73d"
+            }
+        ],
+        [
+            "vnet_ip6_mfib_counters",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "vrf_id"
+            ],
+            [
+                "u32",
+                "count"
+            ],
+            [
+                "vl_api_ip6_mfib_counter_t",
+                "c",
+                0,
+                "count"
+            ],
+            {
+                "crc": "0x65fe1ae3"
+            }
+        ],
+        [
+            "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"
+            }
+        ],
+        [
+            "vnet_get_summary_stats",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
+        ],
+        [
+            "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"
+            }
+        ]
+    ],
+    "types": [
+        [
+            "ip4_fib_counter",
+            [
+                "u32",
+                "address"
+            ],
+            [
+                "u8",
+                "address_length"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0xa6ceb0c9"
+            }
+        ],
+        [
+            "ip4_mfib_counter",
+            [
+                "u8",
+                "source",
+                4
+            ],
+            [
+                "u8",
+                "group",
+                4
+            ],
+            [
+                "u8",
+                "group_length"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0x2cee4721"
+            }
+        ],
+        [
+            "ip4_nbr_counter",
+            [
+                "u32",
+                "address"
+            ],
+            [
+                "u8",
+                "link_type"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0xb9f974d6"
+            }
+        ],
+        [
+            "ip6_fib_counter",
+            [
+                "u64",
+                "address",
+                2
+            ],
+            [
+                "u8",
+                "address_length"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0xf1197efb"
+            }
+        ],
+        [
+            "ip6_mfib_counter",
+            [
+                "u8",
+                "source",
+                16
+            ],
+            [
+                "u8",
+                "group",
+                16
+            ],
+            [
+                "u8",
+                "group_length"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0x90a9590e"
+            }
+        ],
+        [
+            "ip6_nbr_counter",
+            [
+                "u64",
+                "address",
+                2
+            ],
+            [
+                "u8",
+                "link_type"
+            ],
+            [
+                "u64",
+                "packets"
+            ],
+            [
+                "u64",
+                "bytes"
+            ],
+            {
+                "crc": "0x2d755474"
+            }
+        ]
+    ]
+}
diff --git a/examples/bin_api/stats/stats.go b/examples/bin_api/stats/stats.go
new file mode 100644 (file)
index 0000000..0285698
--- /dev/null
@@ -0,0 +1,1560 @@
+// Code generated by govpp binapi-generator DO NOT EDIT.
+// Package stats represents the VPP binary API of the 'stats' VPP module.
+// Generated from '../../bin_api/stats.api.json'
+package stats
+
+import "git.fd.io/govpp.git/api"
+
+// VlApiVersion contains version of the API.
+const VlAPIVersion = 0x50890812
+
+// IP4FibCounter represents the VPP binary API data type 'ip4_fib_counter'.
+// Generated from '../../bin_api/stats.api.json', line 776:
+//
+//            "ip4_fib_counter",
+//            [
+//                "u32",
+//                "address"
+//            ],
+//            [
+//                "u8",
+//                "address_length"
+//            ],
+//            [
+//                "u64",
+//                "packets"
+//            ],
+//            [
+//                "u64",
+//                "bytes"
+//            ],
+//            {
+//                "crc": "0xa6ceb0c9"
+//            }
+//
+type IP4FibCounter struct {
+       Address       uint32
+       AddressLength uint8
+       Packets       uint64
+       Bytes         uint64
+}
+
+func (*IP4FibCounter) GetTypeName() string {
+       return "ip4_fib_counter"
+}
+func (*IP4FibCounter) GetCrcString() string {
+       return "a6ceb0c9"
+}
+
+// IP4MfibCounter represents the VPP binary API data type 'ip4_mfib_counter'.
+// Generated from '../../bin_api/stats.api.json', line 798:
+//
+//            "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"`
+       Group       []byte `struc:"[4]byte"`
+       GroupLength uint8
+       Packets     uint64
+       Bytes       uint64
+}
+
+func (*IP4MfibCounter) GetTypeName() string {
+       return "ip4_mfib_counter"
+}
+func (*IP4MfibCounter) GetCrcString() string {
+       return "2cee4721"
+}
+
+// IP4NbrCounter represents the VPP binary API data type 'ip4_nbr_counter'.
+// Generated from '../../bin_api/stats.api.json', line 826:
+//
+//            "ip4_nbr_counter",
+//            [
+//                "u32",
+//                "address"
+//            ],
+//            [
+//                "u8",
+//                "link_type"
+//            ],
+//            [
+//                "u64",
+//                "packets"
+//            ],
+//            [
+//                "u64",
+//                "bytes"
+//            ],
+//            {
+//                "crc": "0xb9f974d6"
+//            }
+//
+type IP4NbrCounter struct {
+       Address  uint32
+       LinkType uint8
+       Packets  uint64
+       Bytes    uint64
+}
+
+func (*IP4NbrCounter) GetTypeName() string {
+       return "ip4_nbr_counter"
+}
+func (*IP4NbrCounter) GetCrcString() string {
+       return "b9f974d6"
+}
+
+// IP6FibCounter represents the VPP binary API data type 'ip6_fib_counter'.
+// Generated from '../../bin_api/stats.api.json', line 848:
+//
+//            "ip6_fib_counter",
+//            [
+//                "u64",
+//                "address",
+//                2
+//            ],
+//            [
+//                "u8",
+//                "address_length"
+//            ],
+//            [
+//                "u64",
+//                "packets"
+//            ],
+//            [
+//                "u64",
+//                "bytes"
+//            ],
+//            {
+//                "crc": "0xf1197efb"
+//            }
+//
+type IP6FibCounter struct {
+       Address       []uint64 `struc:"[2]uint64"`
+       AddressLength uint8
+       Packets       uint64
+       Bytes         uint64
+}
+
+func (*IP6FibCounter) GetTypeName() string {
+       return "ip6_fib_counter"
+}
+func (*IP6FibCounter) GetCrcString() string {
+       return "f1197efb"
+}
+
+// IP6MfibCounter represents the VPP binary API data type 'ip6_mfib_counter'.
+// Generated from '../../bin_api/stats.api.json', line 871:
+//
+//            "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"`
+       Group       []byte `struc:"[16]byte"`
+       GroupLength uint8
+       Packets     uint64
+       Bytes       uint64
+}
+
+func (*IP6MfibCounter) GetTypeName() string {
+       return "ip6_mfib_counter"
+}
+func (*IP6MfibCounter) GetCrcString() string {
+       return "90a9590e"
+}
+
+// IP6NbrCounter represents the VPP binary API data type 'ip6_nbr_counter'.
+// Generated from '../../bin_api/stats.api.json', line 899:
+//
+//            "ip6_nbr_counter",
+//            [
+//                "u64",
+//                "address",
+//                2
+//            ],
+//            [
+//                "u8",
+//                "link_type"
+//            ],
+//            [
+//                "u64",
+//                "packets"
+//            ],
+//            [
+//                "u64",
+//                "bytes"
+//            ],
+//            {
+//                "crc": "0x2d755474"
+//            }
+//
+type IP6NbrCounter struct {
+       Address  []uint64 `struc:"[2]uint64"`
+       LinkType uint8
+       Packets  uint64
+       Bytes    uint64
+}
+
+func (*IP6NbrCounter) GetTypeName() string {
+       return "ip6_nbr_counter"
+}
+func (*IP6NbrCounter) GetCrcString() string {
+       return "2d755474"
+}
+
+// WantStats represents the VPP binary API message 'want_stats'.
+// Generated from '../../bin_api/stats.api.json', line 68:
+//
+//            "want_stats",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "enable_disable"
+//            ],
+//            [
+//                "u32",
+//                "pid"
+//            ],
+//            {
+//                "crc": "0x476f5a08"
+//            }
+//
+type WantStats struct {
+       EnableDisable uint32
+       Pid           uint32
+}
+
+func (*WantStats) GetMessageName() string {
+       return "want_stats"
+}
+func (*WantStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantStats() api.Message {
+       return &WantStats{}
+}
+
+// WantStatsReply represents the VPP binary API message 'want_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 94:
+//
+//            "want_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantStatsReply struct {
+       Retval int32
+}
+
+func (*WantStatsReply) GetMessageName() string {
+       return "want_stats_reply"
+}
+func (*WantStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantStatsReply() api.Message {
+       return &WantStatsReply{}
+}
+
+// WantInterfaceSimpleStats represents the VPP binary API message 'want_interface_simple_stats'.
+// Generated from '../../bin_api/stats.api.json', line 112:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantInterfaceSimpleStats) GetMessageName() string {
+       return "want_interface_simple_stats"
+}
+func (*WantInterfaceSimpleStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantInterfaceSimpleStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantInterfaceSimpleStats() api.Message {
+       return &WantInterfaceSimpleStats{}
+}
+
+// WantInterfaceSimpleStatsReply represents the VPP binary API message 'want_interface_simple_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 138:
+//
+//            "want_interface_simple_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantInterfaceSimpleStatsReply struct {
+       Retval int32
+}
+
+func (*WantInterfaceSimpleStatsReply) GetMessageName() string {
+       return "want_interface_simple_stats_reply"
+}
+func (*WantInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantInterfaceSimpleStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantInterfaceSimpleStatsReply() api.Message {
+       return &WantInterfaceSimpleStatsReply{}
+}
+
+// WantPerInterfaceSimpleStats represents the VPP binary API message 'want_per_interface_simple_stats'.
+// Generated from '../../bin_api/stats.api.json', line 156:
+//
+//            "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
+       Pid           uint32
+       Num           uint32 `struc:"sizeof=SwIfs"`
+       SwIfs         []uint32
+}
+
+func (*WantPerInterfaceSimpleStats) GetMessageName() string {
+       return "want_per_interface_simple_stats"
+}
+func (*WantPerInterfaceSimpleStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantPerInterfaceSimpleStats) GetCrcString() string {
+       return "729d04f1"
+}
+func NewWantPerInterfaceSimpleStats() api.Message {
+       return &WantPerInterfaceSimpleStats{}
+}
+
+// WantPerInterfaceSimpleStatsReply represents the VPP binary API message 'want_per_interface_simple_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 192:
+//
+//            "want_per_interface_simple_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantPerInterfaceSimpleStatsReply struct {
+       Retval int32
+}
+
+func (*WantPerInterfaceSimpleStatsReply) GetMessageName() string {
+       return "want_per_interface_simple_stats_reply"
+}
+func (*WantPerInterfaceSimpleStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantPerInterfaceSimpleStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantPerInterfaceSimpleStatsReply() api.Message {
+       return &WantPerInterfaceSimpleStatsReply{}
+}
+
+// WantInterfaceCombinedStats represents the VPP binary API message 'want_interface_combined_stats'.
+// Generated from '../../bin_api/stats.api.json', line 210:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantInterfaceCombinedStats) GetMessageName() string {
+       return "want_interface_combined_stats"
+}
+func (*WantInterfaceCombinedStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantInterfaceCombinedStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantInterfaceCombinedStats() api.Message {
+       return &WantInterfaceCombinedStats{}
+}
+
+// WantInterfaceCombinedStatsReply represents the VPP binary API message 'want_interface_combined_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 236:
+//
+//            "want_interface_combined_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantInterfaceCombinedStatsReply struct {
+       Retval int32
+}
+
+func (*WantInterfaceCombinedStatsReply) GetMessageName() string {
+       return "want_interface_combined_stats_reply"
+}
+func (*WantInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantInterfaceCombinedStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantInterfaceCombinedStatsReply() api.Message {
+       return &WantInterfaceCombinedStatsReply{}
+}
+
+// WantPerInterfaceCombinedStats represents the VPP binary API message 'want_per_interface_combined_stats'.
+// Generated from '../../bin_api/stats.api.json', line 254:
+//
+//            "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
+       Pid           uint32
+       Num           uint32 `struc:"sizeof=SwIfs"`
+       SwIfs         []uint32
+}
+
+func (*WantPerInterfaceCombinedStats) GetMessageName() string {
+       return "want_per_interface_combined_stats"
+}
+func (*WantPerInterfaceCombinedStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantPerInterfaceCombinedStats) GetCrcString() string {
+       return "729d04f1"
+}
+func NewWantPerInterfaceCombinedStats() api.Message {
+       return &WantPerInterfaceCombinedStats{}
+}
+
+// WantPerInterfaceCombinedStatsReply represents the VPP binary API message 'want_per_interface_combined_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 290:
+//
+//            "want_per_interface_combined_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantPerInterfaceCombinedStatsReply struct {
+       Retval int32
+}
+
+func (*WantPerInterfaceCombinedStatsReply) GetMessageName() string {
+       return "want_per_interface_combined_stats_reply"
+}
+func (*WantPerInterfaceCombinedStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantPerInterfaceCombinedStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantPerInterfaceCombinedStatsReply() api.Message {
+       return &WantPerInterfaceCombinedStatsReply{}
+}
+
+// WantIP4FibStats represents the VPP binary API message 'want_ip4_fib_stats'.
+// Generated from '../../bin_api/stats.api.json', line 308:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP4FibStats) GetMessageName() string {
+       return "want_ip4_fib_stats"
+}
+func (*WantIP4FibStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP4FibStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP4FibStats() api.Message {
+       return &WantIP4FibStats{}
+}
+
+// WantIP4FibStatsReply represents the VPP binary API message 'want_ip4_fib_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 334:
+//
+//            "want_ip4_fib_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP4FibStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP4FibStatsReply) GetMessageName() string {
+       return "want_ip4_fib_stats_reply"
+}
+func (*WantIP4FibStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP4FibStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP4FibStatsReply() api.Message {
+       return &WantIP4FibStatsReply{}
+}
+
+// WantIP6FibStats represents the VPP binary API message 'want_ip6_fib_stats'.
+// Generated from '../../bin_api/stats.api.json', line 352:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP6FibStats) GetMessageName() string {
+       return "want_ip6_fib_stats"
+}
+func (*WantIP6FibStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP6FibStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP6FibStats() api.Message {
+       return &WantIP6FibStats{}
+}
+
+// WantIP6FibStatsReply represents the VPP binary API message 'want_ip6_fib_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 378:
+//
+//            "want_ip6_fib_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP6FibStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP6FibStatsReply) GetMessageName() string {
+       return "want_ip6_fib_stats_reply"
+}
+func (*WantIP6FibStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP6FibStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP6FibStatsReply() api.Message {
+       return &WantIP6FibStatsReply{}
+}
+
+// WantIP4MfibStats represents the VPP binary API message 'want_ip4_mfib_stats'.
+// Generated from '../../bin_api/stats.api.json', line 396:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP4MfibStats) GetMessageName() string {
+       return "want_ip4_mfib_stats"
+}
+func (*WantIP4MfibStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP4MfibStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP4MfibStats() api.Message {
+       return &WantIP4MfibStats{}
+}
+
+// WantIP4MfibStatsReply represents the VPP binary API message 'want_ip4_mfib_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 422:
+//
+//            "want_ip4_mfib_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP4MfibStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP4MfibStatsReply) GetMessageName() string {
+       return "want_ip4_mfib_stats_reply"
+}
+func (*WantIP4MfibStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP4MfibStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP4MfibStatsReply() api.Message {
+       return &WantIP4MfibStatsReply{}
+}
+
+// WantIP6MfibStats represents the VPP binary API message 'want_ip6_mfib_stats'.
+// Generated from '../../bin_api/stats.api.json', line 440:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP6MfibStats) GetMessageName() string {
+       return "want_ip6_mfib_stats"
+}
+func (*WantIP6MfibStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP6MfibStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP6MfibStats() api.Message {
+       return &WantIP6MfibStats{}
+}
+
+// WantIP6MfibStatsReply represents the VPP binary API message 'want_ip6_mfib_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 466:
+//
+//            "want_ip6_mfib_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP6MfibStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP6MfibStatsReply) GetMessageName() string {
+       return "want_ip6_mfib_stats_reply"
+}
+func (*WantIP6MfibStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP6MfibStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP6MfibStatsReply() api.Message {
+       return &WantIP6MfibStatsReply{}
+}
+
+// WantIP4NbrStats represents the VPP binary API message 'want_ip4_nbr_stats'.
+// Generated from '../../bin_api/stats.api.json', line 484:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP4NbrStats) GetMessageName() string {
+       return "want_ip4_nbr_stats"
+}
+func (*WantIP4NbrStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP4NbrStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP4NbrStats() api.Message {
+       return &WantIP4NbrStats{}
+}
+
+// WantIP4NbrStatsReply represents the VPP binary API message 'want_ip4_nbr_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 510:
+//
+//            "want_ip4_nbr_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP4NbrStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP4NbrStatsReply) GetMessageName() string {
+       return "want_ip4_nbr_stats_reply"
+}
+func (*WantIP4NbrStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP4NbrStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP4NbrStatsReply() api.Message {
+       return &WantIP4NbrStatsReply{}
+}
+
+// WantIP6NbrStats represents the VPP binary API message 'want_ip6_nbr_stats'.
+// Generated from '../../bin_api/stats.api.json', line 528:
+//
+//            "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
+       Pid           uint32
+}
+
+func (*WantIP6NbrStats) GetMessageName() string {
+       return "want_ip6_nbr_stats"
+}
+func (*WantIP6NbrStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*WantIP6NbrStats) GetCrcString() string {
+       return "476f5a08"
+}
+func NewWantIP6NbrStats() api.Message {
+       return &WantIP6NbrStats{}
+}
+
+// WantIP6NbrStatsReply represents the VPP binary API message 'want_ip6_nbr_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 554:
+//
+//            "want_ip6_nbr_stats_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
+//
+type WantIP6NbrStatsReply struct {
+       Retval int32
+}
+
+func (*WantIP6NbrStatsReply) GetMessageName() string {
+       return "want_ip6_nbr_stats_reply"
+}
+func (*WantIP6NbrStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*WantIP6NbrStatsReply) GetCrcString() string {
+       return "e8d4e804"
+}
+func NewWantIP6NbrStatsReply() api.Message {
+       return &WantIP6NbrStatsReply{}
+}
+
+// VnetIP4FibCounters represents the VPP binary API message 'vnet_ip4_fib_counters'.
+// Generated from '../../bin_api/stats.api.json', line 572:
+//
+//            "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
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP4FibCounter
+}
+
+func (*VnetIP4FibCounters) GetMessageName() string {
+       return "vnet_ip4_fib_counters"
+}
+func (*VnetIP4FibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP4FibCounters) GetCrcString() string {
+       return "57e3feec"
+}
+func NewVnetIP4FibCounters() api.Message {
+       return &VnetIP4FibCounters{}
+}
+
+// VnetIP4MfibCounters represents the VPP binary API message 'vnet_ip4_mfib_counters'.
+// Generated from '../../bin_api/stats.api.json', line 596:
+//
+//            "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
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP4MfibCounter
+}
+
+func (*VnetIP4MfibCounters) GetMessageName() string {
+       return "vnet_ip4_mfib_counters"
+}
+func (*VnetIP4MfibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP4MfibCounters) GetCrcString() string {
+       return "946eb588"
+}
+func NewVnetIP4MfibCounters() api.Message {
+       return &VnetIP4MfibCounters{}
+}
+
+// VnetIP4NbrCounters represents the VPP binary API message 'vnet_ip4_nbr_counters'.
+// Generated from '../../bin_api/stats.api.json', line 620:
+//
+//            "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"`
+       SwIfIndex uint32
+       Begin     uint8
+       C         []IP4NbrCounter
+}
+
+func (*VnetIP4NbrCounters) GetMessageName() string {
+       return "vnet_ip4_nbr_counters"
+}
+func (*VnetIP4NbrCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP4NbrCounters) GetCrcString() string {
+       return "214c4811"
+}
+func NewVnetIP4NbrCounters() api.Message {
+       return &VnetIP4NbrCounters{}
+}
+
+// VnetIP6FibCounters represents the VPP binary API message 'vnet_ip6_fib_counters'.
+// Generated from '../../bin_api/stats.api.json', line 648:
+//
+//            "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
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP6FibCounter
+}
+
+func (*VnetIP6FibCounters) GetMessageName() string {
+       return "vnet_ip6_fib_counters"
+}
+func (*VnetIP6FibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP6FibCounters) GetCrcString() string {
+       return "13aed73d"
+}
+func NewVnetIP6FibCounters() api.Message {
+       return &VnetIP6FibCounters{}
+}
+
+// VnetIP6MfibCounters represents the VPP binary API message 'vnet_ip6_mfib_counters'.
+// Generated from '../../bin_api/stats.api.json', line 672:
+//
+//            "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
+       Count uint32 `struc:"sizeof=C"`
+       C     []IP6MfibCounter
+}
+
+func (*VnetIP6MfibCounters) GetMessageName() string {
+       return "vnet_ip6_mfib_counters"
+}
+func (*VnetIP6MfibCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP6MfibCounters) GetCrcString() string {
+       return "65fe1ae3"
+}
+func NewVnetIP6MfibCounters() api.Message {
+       return &VnetIP6MfibCounters{}
+}
+
+// VnetIP6NbrCounters represents the VPP binary API message 'vnet_ip6_nbr_counters'.
+// Generated from '../../bin_api/stats.api.json', line 696:
+//
+//            "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"`
+       SwIfIndex uint32
+       Begin     uint8
+       C         []IP6NbrCounter
+}
+
+func (*VnetIP6NbrCounters) GetMessageName() string {
+       return "vnet_ip6_nbr_counters"
+}
+func (*VnetIP6NbrCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetIP6NbrCounters) GetCrcString() string {
+       return "650161c0"
+}
+func NewVnetIP6NbrCounters() api.Message {
+       return &VnetIP6NbrCounters{}
+}
+
+// VnetGetSummaryStats represents the VPP binary API message 'vnet_get_summary_stats'.
+// Generated from '../../bin_api/stats.api.json', line 724:
+//
+//            "vnet_get_summary_stats",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
+//
+type VnetGetSummaryStats struct {
+}
+
+func (*VnetGetSummaryStats) GetMessageName() string {
+       return "vnet_get_summary_stats"
+}
+func (*VnetGetSummaryStats) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*VnetGetSummaryStats) GetCrcString() string {
+       return "51077d14"
+}
+func NewVnetGetSummaryStats() api.Message {
+       return &VnetGetSummaryStats{}
+}
+
+// VnetGetSummaryStatsReply represents the VPP binary API message 'vnet_get_summary_stats_reply'.
+// Generated from '../../bin_api/stats.api.json', line 742:
+//
+//            "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"
+//            }
+//
+type VnetGetSummaryStatsReply struct {
+       Retval     int32
+       TotalPkts  []uint64 `struc:"[2]uint64"`
+       TotalBytes []uint64 `struc:"[2]uint64"`
+       VectorRate float64
+}
+
+func (*VnetGetSummaryStatsReply) GetMessageName() string {
+       return "vnet_get_summary_stats_reply"
+}
+func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*VnetGetSummaryStatsReply) GetCrcString() string {
+       return "32b87c56"
+}
+func NewVnetGetSummaryStatsReply() api.Message {
+       return &VnetGetSummaryStatsReply{}
+}
index 43432c9..3b09caa 100644 (file)
 {
-    "types" : [
-
+    "services": [
+        {
+            "sw_interface_tap_dump": {
+                "reply": "sw_interface_tap_details",
+                "stream": true
+            }
+        },
+        {
+            "tap_connect": {
+                "reply": "tap_connect_reply"
+            }
+        },
+        {
+            "tap_modify": {
+                "reply": "tap_modify_reply"
+            }
+        },
+        {
+            "tap_delete": {
+                "reply": "tap_delete_reply"
+            }
+        }
     ],
-    "messages" : [
-        ["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" : "0x91720de3"}
+    "vl_api_version": "0x3a0725de",
+    "enums": [],
+    "messages": [
+        [
+            "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_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xf47feac1"}
+        [
+            "tap_connect_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
         ],
-        ["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" : "0x8abcd5f3"}
+        [
+            "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_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0x00aaf940"}
+        [
+            "tap_modify_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0xfda5941f"
+            }
         ],
-        ["tap_delete",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            {"crc" : "0xe99d41c1"}
+        [
+            "tap_delete",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            {
+                "crc": "0x529cb13f"
+            }
         ],
-        ["tap_delete_reply",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["i32", "retval"],
-            {"crc" : "0x0e47d140"}
+        [
+            "tap_delete_reply",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "i32",
+                "retval"
+            ],
+            {
+                "crc": "0xe8d4e804"
+            }
         ],
-        ["sw_interface_tap_dump",
-            ["u16", "_vl_msg_id"],
-            ["u32", "client_index"],
-            ["u32", "context"],
-            {"crc" : "0xbc6ddbe2"}
+        [
+            "sw_interface_tap_dump",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "client_index"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            {
+                "crc": "0x51077d14"
+            }
         ],
-        ["sw_interface_tap_details",
-            ["u16", "_vl_msg_id"],
-            ["u32", "context"],
-            ["u32", "sw_if_index"],
-            ["u8", "dev_name", 64],
-            {"crc" : "0x0df07bc3"}
+        [
+            "sw_interface_tap_details",
+            [
+                "u16",
+                "_vl_msg_id"
+            ],
+            [
+                "u32",
+                "context"
+            ],
+            [
+                "u32",
+                "sw_if_index"
+            ],
+            [
+                "u8",
+                "dev_name",
+                64
+            ],
+            {
+                "crc": "0x76229a57"
+            }
         ]
     ],
-"vl_api_version" :"0x4eaa2b5a"
+    "types": []
 }
index 3bb6d4c..f7d6745 100644 (file)
@@ -6,29 +6,80 @@ package tap
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x4eaa2b5a
+const VlAPIVersion = 0x3a0725de
 
 // TapConnect represents the VPP binary API message 'tap_connect'.
-// Generated from '../../bin_api/tap.api.json', line 6:
+// Generated from '../../bin_api/tap.api.json', line 29:
 //
-//        ["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" : "0x91720de3"}
-//        ],
+//            "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
@@ -52,22 +103,35 @@ func (*TapConnect) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*TapConnect) GetCrcString() string {
-       return "91720de3"
+       return "9b9c396f"
 }
 func NewTapConnect() api.Message {
        return &TapConnect{}
 }
 
 // TapConnectReply represents the VPP binary API message 'tap_connect_reply'.
-// Generated from '../../bin_api/tap.api.json', line 24:
+// Generated from '../../bin_api/tap.api.json', line 100:
 //
-//        ["tap_connect_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xf47feac1"}
-//        ],
+//            "tap_connect_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type TapConnectReply struct {
        Retval    int32
@@ -81,27 +145,57 @@ func (*TapConnectReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*TapConnectReply) GetCrcString() string {
-       return "f47feac1"
+       return "fda5941f"
 }
 func NewTapConnectReply() api.Message {
        return &TapConnectReply{}
 }
 
 // TapModify represents the VPP binary API message 'tap_modify'.
-// Generated from '../../bin_api/tap.api.json', line 31:
+// Generated from '../../bin_api/tap.api.json', line 122:
 //
-//        ["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" : "0x8abcd5f3"}
-//        ],
+//            "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
@@ -119,22 +213,35 @@ func (*TapModify) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*TapModify) GetCrcString() string {
-       return "8abcd5f3"
+       return "8047ae5c"
 }
 func NewTapModify() api.Message {
        return &TapModify{}
 }
 
 // TapModifyReply represents the VPP binary API message 'tap_modify_reply'.
-// Generated from '../../bin_api/tap.api.json', line 43:
+// Generated from '../../bin_api/tap.api.json', line 166:
 //
-//        ["tap_modify_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0x00aaf940"}
-//        ],
+//            "tap_modify_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0xfda5941f"
+//            }
 //
 type TapModifyReply struct {
        Retval    int32
@@ -148,22 +255,35 @@ func (*TapModifyReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*TapModifyReply) GetCrcString() string {
-       return "00aaf940"
+       return "fda5941f"
 }
 func NewTapModifyReply() api.Message {
        return &TapModifyReply{}
 }
 
 // TapDelete represents the VPP binary API message 'tap_delete'.
-// Generated from '../../bin_api/tap.api.json', line 50:
+// Generated from '../../bin_api/tap.api.json', line 188:
 //
-//        ["tap_delete",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            {"crc" : "0xe99d41c1"}
-//        ],
+//            "tap_delete",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "u32",
+//                "sw_if_index"
+//            ],
+//            {
+//                "crc": "0x529cb13f"
+//            }
 //
 type TapDelete struct {
        SwIfIndex uint32
@@ -176,21 +296,31 @@ func (*TapDelete) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*TapDelete) GetCrcString() string {
-       return "e99d41c1"
+       return "529cb13f"
 }
 func NewTapDelete() api.Message {
        return &TapDelete{}
 }
 
 // TapDeleteReply represents the VPP binary API message 'tap_delete_reply'.
-// Generated from '../../bin_api/tap.api.json', line 57:
+// Generated from '../../bin_api/tap.api.json', line 210:
 //
-//        ["tap_delete_reply",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["i32", "retval"],
-//            {"crc" : "0x0e47d140"}
-//        ],
+//            "tap_delete_reply",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            [
+//                "i32",
+//                "retval"
+//            ],
+//            {
+//                "crc": "0xe8d4e804"
+//            }
 //
 type TapDeleteReply struct {
        Retval int32
@@ -203,21 +333,31 @@ func (*TapDeleteReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*TapDeleteReply) GetCrcString() string {
-       return "0e47d140"
+       return "e8d4e804"
 }
 func NewTapDeleteReply() api.Message {
        return &TapDeleteReply{}
 }
 
 // SwInterfaceTapDump represents the VPP binary API message 'sw_interface_tap_dump'.
-// Generated from '../../bin_api/tap.api.json', line 63:
+// Generated from '../../bin_api/tap.api.json', line 228:
 //
-//        ["sw_interface_tap_dump",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            {"crc" : "0xbc6ddbe2"}
-//        ],
+//            "sw_interface_tap_dump",
+//            [
+//                "u16",
+//                "_vl_msg_id"
+//            ],
+//            [
+//                "u32",
+//                "client_index"
+//            ],
+//            [
+//                "u32",
+//                "context"
+//            ],
+//            {
+//                "crc": "0x51077d14"
+//            }
 //
 type SwInterfaceTapDump struct {
 }
@@ -229,22 +369,36 @@ func (*SwInterfaceTapDump) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*SwInterfaceTapDump) GetCrcString() string {
-       return "bc6ddbe2"
+       return "51077d14"
 }
 func NewSwInterfaceTapDump() api.Message {
        return &SwInterfaceTapDump{}
 }
 
 // SwInterfaceTapDetails represents the VPP binary API message 'sw_interface_tap_details'.
-// Generated from '../../bin_api/tap.api.json', line 69:
+// Generated from '../../bin_api/tap.api.json', line 246:
 //
-//        ["sw_interface_tap_details",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "context"],
-//            ["u32", "sw_if_index"],
-//            ["u8", "dev_name", 64],
-//            {"crc" : "0x0df07bc3"}
-//        ]
+//            "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
@@ -258,7 +412,7 @@ func (*SwInterfaceTapDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*SwInterfaceTapDetails) GetCrcString() string {
-       return "0df07bc3"
+       return "76229a57"
 }
 func NewSwInterfaceTapDetails() api.Message {
        return &SwInterfaceTapDetails{}
index e0c4463..458da21 100644 (file)
@@ -27,8 +27,8 @@ import (
        "git.fd.io/govpp.git"
        "git.fd.io/govpp.git/api"
        "git.fd.io/govpp.git/core"
-       "git.fd.io/govpp.git/core/bin_api/vpe"
        "git.fd.io/govpp.git/examples/bin_api/interfaces"
+       "git.fd.io/govpp.git/examples/bin_api/stats"
 )
 
 func main() {
@@ -112,10 +112,10 @@ func subscribeNotifications(ch *api.Channel) (*api.NotifSubscription, *api.Notif
 
 // requestStatistics requests interface counters notifications from VPP.
 func requestStatistics(ch *api.Channel) {
-       ch.SendRequest(&vpe.WantStats{
+       ch.SendRequest(&stats.WantStats{
                Pid:           uint32(os.Getpid()),
                EnableDisable: 1,
-       }).ReceiveReply(&vpe.WantStatsReply{})
+       }).ReceiveReply(&stats.WantStatsReply{})
 }
 
 // processSimpleCounters processes simple counters received from VPP.