Upgrade dependency to VPP 17.07 RC0 31/7231/4
authorMilan Lenco <milan.lenco@pantheon.tech>
Tue, 20 Jun 2017 15:15:59 +0000 (17:15 +0200)
committerMilan Lenco <milan.lenco@pantheon.tech>
Tue, 20 Jun 2017 15:39:14 +0000 (17:39 +0200)
Change-Id: I732d478b71895f4d3889752c683dbb6a84c6e17c
Signed-off-by: Milan Lenco <milan.lenco@pantheon.tech>
20 files changed:
api/api_test.go
api/ifcounters/doc.go [deleted file]
api/ifcounters/ifcounters.go [deleted file]
api/ifcounters/ifcounters_test.go [deleted file]
core/bin_api/vpe.api.json [new file with mode: 0644]
core/bin_api/vpe/vpe.go
core/core.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/tap.api.json
examples/bin_api/tap/tap.go
examples/cmd/stats-client/stats_client.go

index e7592e0..2a342f6 100644 (file)
@@ -144,7 +144,7 @@ func TestRequestReplyMemifCreate(t *testing.T) {
        })
        request := &memif.MemifCreate{
                Role:       10,
-               Key:        12,
+               ID:         12,
                RingSize:   8000,
                BufferSize: 50,
        }
diff --git a/api/ifcounters/doc.go b/api/ifcounters/doc.go
deleted file mode 100644 (file)
index 35c7f7b..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-// Package ifcounters provides the helper API for decoding VnetInterfaceCounters binary API message
-// that contains binary-encoded statistics data into the Go structs that are better consumable by the Go code.
-//
-// VPP provides two types of interface counters that can be encoded inside of a single VnetInterfaceCounters
-// message: simple and combined. For both of them, ifcounters API provides a separate decode function:
-// DecodeCounters or DecodeCombinedCounters. The functions return a slice of simple or combined counters respectively:
-//
-//     notifMsg := <-notifChan:
-//     notif := notifMsg.(*interfaces.VnetInterfaceCounters)
-//
-//     if notif.IsCombined == 0 {
-//             // simple counter
-//             counters, err := ifcounters.DecodeCounters(ifcounters.VnetInterfaceCounters(*notif))
-//             if err != nil {
-//                     fmt.Println("Error:", err)
-//             } else {
-//                     fmt.Printf("%+v\n", counters)
-//             }
-//     } else {
-//             // combined counter
-//             counters, err := ifcounters.DecodeCombinedCounters(ifcounters.VnetInterfaceCounters(*notif))
-//             if err != nil {
-//                     fmt.Println("Error:", err)
-//             } else {
-//                     fmt.Printf("%+v\n", counters)
-//             }
-//     }
-//
-package ifcounters
diff --git a/api/ifcounters/ifcounters.go b/api/ifcounters/ifcounters.go
deleted file mode 100644 (file)
index 202fe6e..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright (c) 2017 Cisco and/or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at:
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ifcounters
-
-import (
-       "bytes"
-       "errors"
-       "fmt"
-
-       "github.com/lunixbochs/struc"
-)
-
-// VnetInterfaceCounters is the input data type defined in the 'interface.api', with binary encoded Data field,
-// that can be decoded into the InterfaceCounter or CombinedInterfaceCounter struct using this package.
-type VnetInterfaceCounters struct {
-       VnetCounterType uint8
-       IsCombined      uint8
-       FirstSwIfIndex  uint32
-       Count           uint32 `struc:"sizeof=Data"`
-       Data            []byte
-}
-
-// CounterType is the basic counter type - contains only packet statistics.
-type CounterType int
-
-// constants as defined in the vnet_interface_counter_type_t enum in 'vnet/interface.h'
-const (
-       Drop    CounterType = 0
-       Punt                = 1
-       IPv4                = 2
-       IPv6                = 3
-       RxNoBuf             = 4
-       RxMiss              = 5
-       RxError             = 6
-       TxError             = 7
-       MPLS                = 8
-)
-
-// CombinedCounterType is the extended counter type - contains both packet and byte statistics.
-type CombinedCounterType int
-
-// constants as defined in the vnet_interface_counter_type_t enum in 'vnet/interface.h'
-const (
-       Rx CombinedCounterType = 0
-       Tx                     = 1
-)
-
-// InterfaceCounter contains basic counter data (contains only packet statistics).
-type InterfaceCounter struct {
-       Type      CounterType
-       SwIfIndex uint32
-       Packets   uint64
-}
-
-// CombinedInterfaceCounter contains extended counter data (contains both packet and byte statistics).
-type CombinedInterfaceCounter struct {
-       Type      CombinedCounterType
-       SwIfIndex uint32
-       Packets   uint64
-       Bytes     uint64
-}
-
-type counterData struct {
-       Packets uint64
-}
-
-type counter struct {
-       Count uint32 `struc:"sizeof=Data"`
-       Data  []counterData
-}
-
-type combinedCounterData struct {
-       Packets uint64
-       Bytes   uint64
-}
-
-type combinedCounter struct {
-       Count uint32 `struc:"sizeof=Data"`
-       Data  []combinedCounterData
-}
-
-// DecodeCounters decodes VnetInterfaceCounters struct content into the slice of InterfaceCounter structs.
-func DecodeCounters(vnetCounters VnetInterfaceCounters) ([]InterfaceCounter, error) {
-       if vnetCounters.IsCombined == 1 {
-               return nil, errors.New("invalid argument - combined counter passed in")
-       }
-
-       // decode into internal struct
-       var c counter
-       buf := bytes.NewReader(vnetCounters.Data)
-       err := struc.Unpack(buf, &c)
-       if err != nil {
-               return nil, fmt.Errorf("unable to decode counter data: %v", err)
-       }
-
-       // prepare the slice
-       res := make([]InterfaceCounter, c.Count)
-
-       // fill in the slice
-       for i := uint32(0); i < c.Count; i++ {
-               res[i].Type = CounterType(vnetCounters.VnetCounterType)
-               res[i].SwIfIndex = vnetCounters.FirstSwIfIndex + i
-               res[i].Packets = c.Data[i].Packets
-       }
-
-       return res, nil
-}
-
-// DecodeCombinedCounters decodes VnetInterfaceCounters struct content into the slice of CombinedInterfaceCounter structs.
-func DecodeCombinedCounters(vnetCounters VnetInterfaceCounters) ([]CombinedInterfaceCounter, error) {
-       if vnetCounters.IsCombined != 1 {
-               return nil, errors.New("invalid argument - simple counter passed in")
-       }
-
-       // decode into internal struct
-       var c combinedCounter
-       buf := bytes.NewReader(vnetCounters.Data)
-       err := struc.Unpack(buf, &c)
-       if err != nil {
-               return nil, fmt.Errorf("unable to decode counter data: %v", err)
-       }
-
-       // prepare the slice
-       res := make([]CombinedInterfaceCounter, c.Count)
-
-       // fill in the slice
-       for i := uint32(0); i < c.Count; i++ {
-               res[i].Type = CombinedCounterType(vnetCounters.VnetCounterType)
-               res[i].SwIfIndex = vnetCounters.FirstSwIfIndex + i
-               res[i].Packets = c.Data[i].Packets
-               res[i].Bytes = c.Data[i].Bytes
-       }
-
-       return res, nil
-}
diff --git a/api/ifcounters/ifcounters_test.go b/api/ifcounters/ifcounters_test.go
deleted file mode 100644 (file)
index 6f9a1d9..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright (c) 2017 Cisco and/or its affiliates.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at:
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package ifcounters
-
-import (
-       "testing"
-
-       . "github.com/onsi/gomega"
-)
-
-func TestDecodeCounters(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               VnetCounterType: 1,
-               IsCombined:      0,
-               FirstSwIfIndex:  5,
-               Count:           2,
-               Data: []byte{0, 0, 0, 2, // Count
-                       0, 0, 0, 0, 0, 0, 0, 10, // first counter
-                       0, 0, 0, 0, 0, 0, 0, 11}, // second counter
-       }
-       counters, err := DecodeCounters(testCounters)
-
-       Expect(err).ShouldNot(HaveOccurred())
-       Expect(len(counters)).To(BeEquivalentTo(2), "Incorrect size of the returned slice.")
-
-       Expect(counters[0].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
-       Expect(counters[0].SwIfIndex).To(BeEquivalentTo(5), "Incorrect SwIfIndex.")
-       Expect(counters[0].Packets).To(BeEquivalentTo(10), "Incorrect Packets count.")
-
-       Expect(counters[1].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
-       Expect(counters[1].SwIfIndex).To(BeEquivalentTo(6), "Incorrect SwIfIndex.")
-       Expect(counters[1].Packets).To(BeEquivalentTo(11), "Incorrect Packets count.")
-}
-
-func TestDecodeCombinedCounters(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               VnetCounterType: 1,
-               IsCombined:      1,
-               FirstSwIfIndex:  20,
-               Count:           2,
-               Data: []byte{0, 0, 0, 2, // Count
-                       0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 11, // first counter
-                       0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 13}, // second counter
-       }
-       counters, err := DecodeCombinedCounters(testCounters)
-
-       Expect(err).ShouldNot(HaveOccurred())
-       Expect(len(counters)).To(BeEquivalentTo(2), "Incorrect size of the returned slice.")
-
-       Expect(counters[0].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
-       Expect(counters[0].SwIfIndex).To(BeEquivalentTo(20), "Incorrect SwIfIndex.")
-       Expect(counters[0].Packets).To(BeEquivalentTo(10), "Incorrect Packets count.")
-       Expect(counters[0].Bytes).To(BeEquivalentTo(11), "Incorrect Bytes count.")
-
-       Expect(counters[1].Type).To(BeEquivalentTo(1), "Incorrect counter type.")
-       Expect(counters[1].SwIfIndex).To(BeEquivalentTo(21), "Incorrect SwIfIndex.")
-       Expect(counters[1].Packets).To(BeEquivalentTo(12), "Incorrect Packets count.")
-       Expect(counters[1].Bytes).To(BeEquivalentTo(13), "Incorrect Bytes count.")
-}
-
-func TestDecodeCountersNegative1(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               IsCombined: 1, // invalid, should be 0
-       }
-       counters, err := DecodeCounters(testCounters)
-
-       Expect(err).Should(HaveOccurred())
-       Expect(err.Error()).To(ContainSubstring("invalid argument"))
-       Expect(counters).To(BeNil())
-}
-
-func TestDecodeCombinedCountersNegative1(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               IsCombined: 0, // invalid, should be 1
-       }
-       counters, err := DecodeCombinedCounters(testCounters)
-
-       Expect(err).Should(HaveOccurred())
-       Expect(err.Error()).To(ContainSubstring("invalid argument"))
-       Expect(counters).To(BeNil())
-}
-
-func TestDecodeCountersNegative2(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               IsCombined: 0,
-               // no data
-       }
-       counters, err := DecodeCounters(testCounters)
-
-       Expect(err).Should(HaveOccurred())
-       Expect(err.Error()).To(ContainSubstring("unable to decode"))
-       Expect(counters).To(BeNil())
-}
-
-func TestDecodeCombinedCountersNegative2(t *testing.T) {
-       RegisterTestingT(t)
-
-       testCounters := VnetInterfaceCounters{
-               IsCombined: 1,
-               // no data
-       }
-       counters, err := DecodeCombinedCounters(testCounters)
-
-       Expect(err).Should(HaveOccurred())
-       Expect(err.Error()).To(ContainSubstring("unable to decode"))
-       Expect(counters).To(BeNil())
-}
diff --git a/core/bin_api/vpe.api.json b/core/bin_api/vpe.api.json
new file mode 100644 (file)
index 0000000..1744e9c
--- /dev/null
@@ -0,0 +1,783 @@
+{
+    "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"}
+        ]
+    ],
+    "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" :"0x50d987fe"
+}
index 07e35d4..51a245b 100644 (file)
@@ -1,14 +1,14 @@
 // Package vpe represents the VPP binary API of the 'vpe' VPP module.
-// DO NOT EDIT. Generated from '/usr/share/vpp/api/vpe.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/vpe.api.json'
 package vpe
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x0a33c8f7
+const VlAPIVersion = 0x50d987fe
 
 // IP4FibCounter represents the VPP binary API data type 'ip4_fib_counter'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 3:
+// Generated from 'bin_api/vpe.api.json', line 3:
 //
 //        ["ip4_fib_counter",
 //            ["u32", "address"],
@@ -33,7 +33,7 @@ func (*IP4FibCounter) GetCrcString() string {
 }
 
 // IP4NbrCounter represents the VPP binary API data type 'ip4_nbr_counter'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 10:
+// Generated from 'bin_api/vpe.api.json', line 10:
 //
 //        ["ip4_nbr_counter",
 //            ["u32", "address"],
@@ -58,7 +58,7 @@ func (*IP4NbrCounter) GetCrcString() string {
 }
 
 // IP6FibCounter represents the VPP binary API data type 'ip6_fib_counter'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 17:
+// Generated from 'bin_api/vpe.api.json', line 17:
 //
 //        ["ip6_fib_counter",
 //            ["u64", "address", 2],
@@ -83,7 +83,7 @@ func (*IP6FibCounter) GetCrcString() string {
 }
 
 // IP6NbrCounter represents the VPP binary API data type 'ip6_nbr_counter'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 24:
+// Generated from 'bin_api/vpe.api.json', line 24:
 //
 //        ["ip6_nbr_counter",
 //            ["u64", "address", 2],
@@ -108,7 +108,7 @@ func (*IP6NbrCounter) GetCrcString() string {
 }
 
 // CreateVlanSubif represents the VPP binary API message 'create_vlan_subif'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 33:
+// Generated from 'bin_api/vpe.api.json', line 33:
 //
 //        ["create_vlan_subif",
 //            ["u16", "_vl_msg_id"],
@@ -138,7 +138,7 @@ func NewCreateVlanSubif() api.Message {
 }
 
 // CreateVlanSubifReply represents the VPP binary API message 'create_vlan_subif_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 41:
+// Generated from 'bin_api/vpe.api.json', line 41:
 //
 //        ["create_vlan_subif_reply",
 //            ["u16", "_vl_msg_id"],
@@ -167,7 +167,7 @@ func NewCreateVlanSubifReply() api.Message {
 }
 
 // SwInterfaceSetMplsEnable represents the VPP binary API message 'sw_interface_set_mpls_enable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 48:
+// Generated from 'bin_api/vpe.api.json', line 48:
 //
 //        ["sw_interface_set_mpls_enable",
 //            ["u16", "_vl_msg_id"],
@@ -197,7 +197,7 @@ func NewSwInterfaceSetMplsEnable() api.Message {
 }
 
 // SwInterfaceSetMplsEnableReply represents the VPP binary API message 'sw_interface_set_mpls_enable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 56:
+// Generated from 'bin_api/vpe.api.json', line 56:
 //
 //        ["sw_interface_set_mpls_enable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -224,7 +224,7 @@ func NewSwInterfaceSetMplsEnableReply() api.Message {
 }
 
 // ProxyArpAddDel represents the VPP binary API message 'proxy_arp_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 62:
+// Generated from 'bin_api/vpe.api.json', line 62:
 //
 //        ["proxy_arp_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -258,7 +258,7 @@ func NewProxyArpAddDel() api.Message {
 }
 
 // ProxyArpAddDelReply represents the VPP binary API message 'proxy_arp_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 72:
+// Generated from 'bin_api/vpe.api.json', line 72:
 //
 //        ["proxy_arp_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -285,7 +285,7 @@ func NewProxyArpAddDelReply() api.Message {
 }
 
 // ProxyArpIntfcEnableDisable represents the VPP binary API message 'proxy_arp_intfc_enable_disable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 78:
+// Generated from 'bin_api/vpe.api.json', line 78:
 //
 //        ["proxy_arp_intfc_enable_disable",
 //            ["u16", "_vl_msg_id"],
@@ -315,7 +315,7 @@ func NewProxyArpIntfcEnableDisable() api.Message {
 }
 
 // ProxyArpIntfcEnableDisableReply represents the VPP binary API message 'proxy_arp_intfc_enable_disable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 86:
+// Generated from 'bin_api/vpe.api.json', line 86:
 //
 //        ["proxy_arp_intfc_enable_disable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -342,7 +342,7 @@ func NewProxyArpIntfcEnableDisableReply() api.Message {
 }
 
 // ResetVrf represents the VPP binary API message 'reset_vrf'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 92:
+// Generated from 'bin_api/vpe.api.json', line 92:
 //
 //        ["reset_vrf",
 //            ["u16", "_vl_msg_id"],
@@ -372,7 +372,7 @@ func NewResetVrf() api.Message {
 }
 
 // ResetVrfReply represents the VPP binary API message 'reset_vrf_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 100:
+// Generated from 'bin_api/vpe.api.json', line 100:
 //
 //        ["reset_vrf_reply",
 //            ["u16", "_vl_msg_id"],
@@ -398,44 +398,8 @@ func NewResetVrfReply() api.Message {
        return &ResetVrfReply{}
 }
 
-// IsAddressReachable represents the VPP binary API message 'is_address_reachable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 106:
-//
-//        ["is_address_reachable",
-//            ["u16", "_vl_msg_id"],
-//            ["u32", "client_index"],
-//            ["u32", "context"],
-//            ["u32", "next_hop_sw_if_index"],
-//            ["u8", "is_known"],
-//            ["u8", "is_ipv6"],
-//            ["u8", "is_error"],
-//            ["u8", "address", 16],
-//            {"crc" : "0xa8b6e322"}
-//        ],
-//
-type IsAddressReachable struct {
-       NextHopSwIfIndex uint32
-       IsKnown          uint8
-       IsIpv6           uint8
-       IsError          uint8
-       Address          []byte `struc:"[16]byte"`
-}
-
-func (*IsAddressReachable) GetMessageName() string {
-       return "is_address_reachable"
-}
-func (*IsAddressReachable) GetMessageType() api.MessageType {
-       return api.RequestMessage
-}
-func (*IsAddressReachable) GetCrcString() string {
-       return "a8b6e322"
-}
-func NewIsAddressReachable() api.Message {
-       return &IsAddressReachable{}
-}
-
 // WantStats represents the VPP binary API message 'want_stats'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 117:
+// Generated from 'bin_api/vpe.api.json', line 106:
 //
 //        ["want_stats",
 //            ["u16", "_vl_msg_id"],
@@ -465,7 +429,7 @@ func NewWantStats() api.Message {
 }
 
 // WantStatsReply represents the VPP binary API message 'want_stats_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 125:
+// Generated from 'bin_api/vpe.api.json', line 114:
 //
 //        ["want_stats_reply",
 //            ["u16", "_vl_msg_id"],
@@ -492,7 +456,7 @@ func NewWantStatsReply() api.Message {
 }
 
 // VnetIP4FibCounters represents the VPP binary API message 'vnet_ip4_fib_counters'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 131:
+// Generated from 'bin_api/vpe.api.json', line 120:
 //
 //        ["vnet_ip4_fib_counters",
 //            ["u16", "_vl_msg_id"],
@@ -522,7 +486,7 @@ func NewVnetIP4FibCounters() api.Message {
 }
 
 // VnetIP4NbrCounters represents the VPP binary API message 'vnet_ip4_nbr_counters'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 138:
+// Generated from 'bin_api/vpe.api.json', line 127:
 //
 //        ["vnet_ip4_nbr_counters",
 //            ["u16", "_vl_msg_id"],
@@ -554,7 +518,7 @@ func NewVnetIP4NbrCounters() api.Message {
 }
 
 // VnetIP6FibCounters represents the VPP binary API message 'vnet_ip6_fib_counters'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 146:
+// Generated from 'bin_api/vpe.api.json', line 135:
 //
 //        ["vnet_ip6_fib_counters",
 //            ["u16", "_vl_msg_id"],
@@ -584,7 +548,7 @@ func NewVnetIP6FibCounters() api.Message {
 }
 
 // VnetIP6NbrCounters represents the VPP binary API message 'vnet_ip6_nbr_counters'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 153:
+// Generated from 'bin_api/vpe.api.json', line 142:
 //
 //        ["vnet_ip6_nbr_counters",
 //            ["u16", "_vl_msg_id"],
@@ -616,7 +580,7 @@ func NewVnetIP6NbrCounters() api.Message {
 }
 
 // VnetGetSummaryStats represents the VPP binary API message 'vnet_get_summary_stats'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 161:
+// Generated from 'bin_api/vpe.api.json', line 150:
 //
 //        ["vnet_get_summary_stats",
 //            ["u16", "_vl_msg_id"],
@@ -641,41 +605,41 @@ func NewVnetGetSummaryStats() api.Message {
        return &VnetGetSummaryStats{}
 }
 
-// VnetSummaryStatsReply represents the VPP binary API message 'vnet_summary_stats_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 167:
+// VnetGetSummaryStatsReply represents the VPP binary API message 'vnet_get_summary_stats_reply'.
+// Generated from 'bin_api/vpe.api.json', line 156:
 //
-//        ["vnet_summary_stats_reply",
+//        ["vnet_get_summary_stats_reply",
 //            ["u16", "_vl_msg_id"],
 //            ["u32", "context"],
 //            ["i32", "retval"],
 //            ["u64", "total_pkts", 2],
 //            ["u64", "total_bytes", 2],
 //            ["f64", "vector_rate"],
-//            {"crc" : "0x87a8fa9f"}
+//            {"crc" : "0x675ce280"}
 //        ],
 //
-type VnetSummaryStatsReply struct {
+type VnetGetSummaryStatsReply struct {
        Retval     int32
        TotalPkts  []uint64 `struc:"[2]uint64"`
        TotalBytes []uint64 `struc:"[2]uint64"`
        VectorRate float64
 }
 
-func (*VnetSummaryStatsReply) GetMessageName() string {
-       return "vnet_summary_stats_reply"
+func (*VnetGetSummaryStatsReply) GetMessageName() string {
+       return "vnet_get_summary_stats_reply"
 }
-func (*VnetSummaryStatsReply) GetMessageType() api.MessageType {
+func (*VnetGetSummaryStatsReply) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
-func (*VnetSummaryStatsReply) GetCrcString() string {
-       return "87a8fa9f"
+func (*VnetGetSummaryStatsReply) GetCrcString() string {
+       return "675ce280"
 }
-func NewVnetSummaryStatsReply() api.Message {
-       return &VnetSummaryStatsReply{}
+func NewVnetGetSummaryStatsReply() api.Message {
+       return &VnetGetSummaryStatsReply{}
 }
 
 // OamEvent represents the VPP binary API message 'oam_event'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 176:
+// Generated from 'bin_api/vpe.api.json', line 165:
 //
 //        ["oam_event",
 //            ["u16", "_vl_msg_id"],
@@ -703,7 +667,7 @@ func NewOamEvent() api.Message {
 }
 
 // WantOamEvents represents the VPP binary API message 'want_oam_events'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 182:
+// Generated from 'bin_api/vpe.api.json', line 171:
 //
 //        ["want_oam_events",
 //            ["u16", "_vl_msg_id"],
@@ -733,7 +697,7 @@ func NewWantOamEvents() api.Message {
 }
 
 // WantOamEventsReply represents the VPP binary API message 'want_oam_events_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 190:
+// Generated from 'bin_api/vpe.api.json', line 179:
 //
 //        ["want_oam_events_reply",
 //            ["u16", "_vl_msg_id"],
@@ -760,7 +724,7 @@ func NewWantOamEventsReply() api.Message {
 }
 
 // OamAddDel represents the VPP binary API message 'oam_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 196:
+// Generated from 'bin_api/vpe.api.json', line 185:
 //
 //        ["oam_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -794,7 +758,7 @@ func NewOamAddDel() api.Message {
 }
 
 // OamAddDelReply represents the VPP binary API message 'oam_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 206:
+// Generated from 'bin_api/vpe.api.json', line 195:
 //
 //        ["oam_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -821,7 +785,7 @@ func NewOamAddDelReply() api.Message {
 }
 
 // ResetFib represents the VPP binary API message 'reset_fib'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 212:
+// Generated from 'bin_api/vpe.api.json', line 201:
 //
 //        ["reset_fib",
 //            ["u16", "_vl_msg_id"],
@@ -851,7 +815,7 @@ func NewResetFib() api.Message {
 }
 
 // ResetFibReply represents the VPP binary API message 'reset_fib_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 220:
+// Generated from 'bin_api/vpe.api.json', line 209:
 //
 //        ["reset_fib_reply",
 //            ["u16", "_vl_msg_id"],
@@ -878,7 +842,7 @@ func NewResetFibReply() api.Message {
 }
 
 // CreateLoopback represents the VPP binary API message 'create_loopback'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 226:
+// Generated from 'bin_api/vpe.api.json', line 215:
 //
 //        ["create_loopback",
 //            ["u16", "_vl_msg_id"],
@@ -906,7 +870,7 @@ func NewCreateLoopback() api.Message {
 }
 
 // CreateLoopbackReply represents the VPP binary API message 'create_loopback_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 233:
+// Generated from 'bin_api/vpe.api.json', line 222:
 //
 //        ["create_loopback_reply",
 //            ["u16", "_vl_msg_id"],
@@ -935,7 +899,7 @@ func NewCreateLoopbackReply() api.Message {
 }
 
 // CreateLoopbackInstance represents the VPP binary API message 'create_loopback_instance'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 240:
+// Generated from 'bin_api/vpe.api.json', line 229:
 //
 //        ["create_loopback_instance",
 //            ["u16", "_vl_msg_id"],
@@ -967,7 +931,7 @@ func NewCreateLoopbackInstance() api.Message {
 }
 
 // CreateLoopbackInstanceReply represents the VPP binary API message 'create_loopback_instance_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 249:
+// Generated from 'bin_api/vpe.api.json', line 238:
 //
 //        ["create_loopback_instance_reply",
 //            ["u16", "_vl_msg_id"],
@@ -996,7 +960,7 @@ func NewCreateLoopbackInstanceReply() api.Message {
 }
 
 // DeleteLoopback represents the VPP binary API message 'delete_loopback'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 256:
+// Generated from 'bin_api/vpe.api.json', line 245:
 //
 //        ["delete_loopback",
 //            ["u16", "_vl_msg_id"],
@@ -1024,7 +988,7 @@ func NewDeleteLoopback() api.Message {
 }
 
 // DeleteLoopbackReply represents the VPP binary API message 'delete_loopback_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 263:
+// Generated from 'bin_api/vpe.api.json', line 252:
 //
 //        ["delete_loopback_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1051,7 +1015,7 @@ func NewDeleteLoopbackReply() api.Message {
 }
 
 // ControlPing represents the VPP binary API message 'control_ping'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 269:
+// Generated from 'bin_api/vpe.api.json', line 258:
 //
 //        ["control_ping",
 //            ["u16", "_vl_msg_id"],
@@ -1077,7 +1041,7 @@ func NewControlPing() api.Message {
 }
 
 // ControlPingReply represents the VPP binary API message 'control_ping_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 275:
+// Generated from 'bin_api/vpe.api.json', line 264:
 //
 //        ["control_ping_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1107,36 +1071,36 @@ func NewControlPingReply() api.Message {
        return &ControlPingReply{}
 }
 
-// CliRequest represents the VPP binary API message 'cli_request'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 283:
+// Cli represents the VPP binary API message 'cli'.
+// Generated from 'bin_api/vpe.api.json', line 272:
 //
-//        ["cli_request",
+//        ["cli",
 //            ["u16", "_vl_msg_id"],
 //            ["u32", "client_index"],
 //            ["u32", "context"],
 //            ["u64", "cmd_in_shmem"],
-//            {"crc" : "0xfef056d0"}
+//            {"crc" : "0x543d8e2e"}
 //        ],
 //
-type CliRequest struct {
+type Cli struct {
        CmdInShmem uint64
 }
 
-func (*CliRequest) GetMessageName() string {
-       return "cli_request"
+func (*Cli) GetMessageName() string {
+       return "cli"
 }
-func (*CliRequest) GetMessageType() api.MessageType {
+func (*Cli) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
-func (*CliRequest) GetCrcString() string {
-       return "fef056d0"
+func (*Cli) GetCrcString() string {
+       return "543d8e2e"
 }
-func NewCliRequest() api.Message {
-       return &CliRequest{}
+func NewCli() api.Message {
+       return &Cli{}
 }
 
 // CliInband represents the VPP binary API message 'cli_inband'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 290:
+// Generated from 'bin_api/vpe.api.json', line 279:
 //
 //        ["cli_inband",
 //            ["u16", "_vl_msg_id"],
@@ -1166,7 +1130,7 @@ func NewCliInband() api.Message {
 }
 
 // CliReply represents the VPP binary API message 'cli_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 298:
+// Generated from 'bin_api/vpe.api.json', line 287:
 //
 //        ["cli_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1195,7 +1159,7 @@ func NewCliReply() api.Message {
 }
 
 // CliInbandReply represents the VPP binary API message 'cli_inband_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 305:
+// Generated from 'bin_api/vpe.api.json', line 294:
 //
 //        ["cli_inband_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1226,7 +1190,7 @@ func NewCliInbandReply() api.Message {
 }
 
 // SetArpNeighborLimit represents the VPP binary API message 'set_arp_neighbor_limit'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 313:
+// Generated from 'bin_api/vpe.api.json', line 302:
 //
 //        ["set_arp_neighbor_limit",
 //            ["u16", "_vl_msg_id"],
@@ -1256,7 +1220,7 @@ func NewSetArpNeighborLimit() api.Message {
 }
 
 // SetArpNeighborLimitReply represents the VPP binary API message 'set_arp_neighbor_limit_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 321:
+// Generated from 'bin_api/vpe.api.json', line 310:
 //
 //        ["set_arp_neighbor_limit_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1283,7 +1247,7 @@ func NewSetArpNeighborLimitReply() api.Message {
 }
 
 // L2PatchAddDel represents the VPP binary API message 'l2_patch_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 327:
+// Generated from 'bin_api/vpe.api.json', line 316:
 //
 //        ["l2_patch_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -1315,7 +1279,7 @@ func NewL2PatchAddDel() api.Message {
 }
 
 // L2PatchAddDelReply represents the VPP binary API message 'l2_patch_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 336:
+// Generated from 'bin_api/vpe.api.json', line 325:
 //
 //        ["l2_patch_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1342,7 +1306,7 @@ func NewL2PatchAddDelReply() api.Message {
 }
 
 // SwInterfaceSetVpath represents the VPP binary API message 'sw_interface_set_vpath'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 342:
+// Generated from 'bin_api/vpe.api.json', line 331:
 //
 //        ["sw_interface_set_vpath",
 //            ["u16", "_vl_msg_id"],
@@ -1372,7 +1336,7 @@ func NewSwInterfaceSetVpath() api.Message {
 }
 
 // SwInterfaceSetVpathReply represents the VPP binary API message 'sw_interface_set_vpath_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 350:
+// Generated from 'bin_api/vpe.api.json', line 339:
 //
 //        ["sw_interface_set_vpath_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1399,7 +1363,7 @@ func NewSwInterfaceSetVpathReply() api.Message {
 }
 
 // SwInterfaceSetL2Xconnect represents the VPP binary API message 'sw_interface_set_l2_xconnect'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 356:
+// Generated from 'bin_api/vpe.api.json', line 345:
 //
 //        ["sw_interface_set_l2_xconnect",
 //            ["u16", "_vl_msg_id"],
@@ -1431,7 +1395,7 @@ func NewSwInterfaceSetL2Xconnect() api.Message {
 }
 
 // SwInterfaceSetL2XconnectReply represents the VPP binary API message 'sw_interface_set_l2_xconnect_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 365:
+// Generated from 'bin_api/vpe.api.json', line 354:
 //
 //        ["sw_interface_set_l2_xconnect_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1458,7 +1422,7 @@ func NewSwInterfaceSetL2XconnectReply() api.Message {
 }
 
 // SwInterfaceSetL2Bridge represents the VPP binary API message 'sw_interface_set_l2_bridge'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 371:
+// Generated from 'bin_api/vpe.api.json', line 360:
 //
 //        ["sw_interface_set_l2_bridge",
 //            ["u16", "_vl_msg_id"],
@@ -1494,7 +1458,7 @@ func NewSwInterfaceSetL2Bridge() api.Message {
 }
 
 // SwInterfaceSetL2BridgeReply represents the VPP binary API message 'sw_interface_set_l2_bridge_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 382:
+// Generated from 'bin_api/vpe.api.json', line 371:
 //
 //        ["sw_interface_set_l2_bridge_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1521,7 +1485,7 @@ func NewSwInterfaceSetL2BridgeReply() api.Message {
 }
 
 // BdIPMacAddDel represents the VPP binary API message 'bd_ip_mac_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 388:
+// Generated from 'bin_api/vpe.api.json', line 377:
 //
 //        ["bd_ip_mac_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -1557,7 +1521,7 @@ func NewBdIPMacAddDel() api.Message {
 }
 
 // BdIPMacAddDelReply represents the VPP binary API message 'bd_ip_mac_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 399:
+// Generated from 'bin_api/vpe.api.json', line 388:
 //
 //        ["bd_ip_mac_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1584,7 +1548,7 @@ func NewBdIPMacAddDelReply() api.Message {
 }
 
 // ClassifySetInterfaceIPTable represents the VPP binary API message 'classify_set_interface_ip_table'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 405:
+// Generated from 'bin_api/vpe.api.json', line 394:
 //
 //        ["classify_set_interface_ip_table",
 //            ["u16", "_vl_msg_id"],
@@ -1616,7 +1580,7 @@ func NewClassifySetInterfaceIPTable() api.Message {
 }
 
 // ClassifySetInterfaceIPTableReply represents the VPP binary API message 'classify_set_interface_ip_table_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 414:
+// Generated from 'bin_api/vpe.api.json', line 403:
 //
 //        ["classify_set_interface_ip_table_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1643,7 +1607,7 @@ func NewClassifySetInterfaceIPTableReply() api.Message {
 }
 
 // ClassifySetInterfaceL2Tables represents the VPP binary API message 'classify_set_interface_l2_tables'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 420:
+// Generated from 'bin_api/vpe.api.json', line 409:
 //
 //        ["classify_set_interface_l2_tables",
 //            ["u16", "_vl_msg_id"],
@@ -1679,7 +1643,7 @@ func NewClassifySetInterfaceL2Tables() api.Message {
 }
 
 // ClassifySetInterfaceL2TablesReply represents the VPP binary API message 'classify_set_interface_l2_tables_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 431:
+// Generated from 'bin_api/vpe.api.json', line 420:
 //
 //        ["classify_set_interface_l2_tables_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1706,7 +1670,7 @@ func NewClassifySetInterfaceL2TablesReply() api.Message {
 }
 
 // GetNodeIndex represents the VPP binary API message 'get_node_index'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 437:
+// Generated from 'bin_api/vpe.api.json', line 426:
 //
 //        ["get_node_index",
 //            ["u16", "_vl_msg_id"],
@@ -1734,7 +1698,7 @@ func NewGetNodeIndex() api.Message {
 }
 
 // GetNodeIndexReply represents the VPP binary API message 'get_node_index_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 444:
+// Generated from 'bin_api/vpe.api.json', line 433:
 //
 //        ["get_node_index_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1763,7 +1727,7 @@ func NewGetNodeIndexReply() api.Message {
 }
 
 // AddNodeNext represents the VPP binary API message 'add_node_next'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 451:
+// Generated from 'bin_api/vpe.api.json', line 440:
 //
 //        ["add_node_next",
 //            ["u16", "_vl_msg_id"],
@@ -1793,7 +1757,7 @@ func NewAddNodeNext() api.Message {
 }
 
 // AddNodeNextReply represents the VPP binary API message 'add_node_next_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 459:
+// Generated from 'bin_api/vpe.api.json', line 448:
 //
 //        ["add_node_next_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1822,7 +1786,7 @@ func NewAddNodeNextReply() api.Message {
 }
 
 // L2InterfaceEfpFilter represents the VPP binary API message 'l2_interface_efp_filter'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 466:
+// Generated from 'bin_api/vpe.api.json', line 455:
 //
 //        ["l2_interface_efp_filter",
 //            ["u16", "_vl_msg_id"],
@@ -1852,7 +1816,7 @@ func NewL2InterfaceEfpFilter() api.Message {
 }
 
 // L2InterfaceEfpFilterReply represents the VPP binary API message 'l2_interface_efp_filter_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 474:
+// Generated from 'bin_api/vpe.api.json', line 463:
 //
 //        ["l2_interface_efp_filter_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1879,7 +1843,7 @@ func NewL2InterfaceEfpFilterReply() api.Message {
 }
 
 // CreateSubif represents the VPP binary API message 'create_subif'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 480:
+// Generated from 'bin_api/vpe.api.json', line 469:
 //
 //        ["create_subif",
 //            ["u16", "_vl_msg_id"],
@@ -1929,7 +1893,7 @@ func NewCreateSubif() api.Message {
 }
 
 // CreateSubifReply represents the VPP binary API message 'create_subif_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 498:
+// Generated from 'bin_api/vpe.api.json', line 487:
 //
 //        ["create_subif_reply",
 //            ["u16", "_vl_msg_id"],
@@ -1958,7 +1922,7 @@ func NewCreateSubifReply() api.Message {
 }
 
 // ShowVersion represents the VPP binary API message 'show_version'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 505:
+// Generated from 'bin_api/vpe.api.json', line 494:
 //
 //        ["show_version",
 //            ["u16", "_vl_msg_id"],
@@ -1984,7 +1948,7 @@ func NewShowVersion() api.Message {
 }
 
 // ShowVersionReply represents the VPP binary API message 'show_version_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 511:
+// Generated from 'bin_api/vpe.api.json', line 500:
 //
 //        ["show_version_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2019,7 +1983,7 @@ func NewShowVersionReply() api.Message {
 }
 
 // InterfaceNameRenumber represents the VPP binary API message 'interface_name_renumber'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 521:
+// Generated from 'bin_api/vpe.api.json', line 510:
 //
 //        ["interface_name_renumber",
 //            ["u16", "_vl_msg_id"],
@@ -2049,7 +2013,7 @@ func NewInterfaceNameRenumber() api.Message {
 }
 
 // InterfaceNameRenumberReply represents the VPP binary API message 'interface_name_renumber_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 529:
+// Generated from 'bin_api/vpe.api.json', line 518:
 //
 //        ["interface_name_renumber_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2076,7 +2040,7 @@ func NewInterfaceNameRenumberReply() api.Message {
 }
 
 // WantIP4ArpEvents represents the VPP binary API message 'want_ip4_arp_events'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 535:
+// Generated from 'bin_api/vpe.api.json', line 524:
 //
 //        ["want_ip4_arp_events",
 //            ["u16", "_vl_msg_id"],
@@ -2108,7 +2072,7 @@ func NewWantIP4ArpEvents() api.Message {
 }
 
 // WantIP4ArpEventsReply represents the VPP binary API message 'want_ip4_arp_events_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 544:
+// Generated from 'bin_api/vpe.api.json', line 533:
 //
 //        ["want_ip4_arp_events_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2135,7 +2099,7 @@ func NewWantIP4ArpEventsReply() api.Message {
 }
 
 // IP4ArpEvent represents the VPP binary API message 'ip4_arp_event'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 550:
+// Generated from 'bin_api/vpe.api.json', line 539:
 //
 //        ["ip4_arp_event",
 //            ["u16", "_vl_msg_id"],
@@ -2171,7 +2135,7 @@ func NewIP4ArpEvent() api.Message {
 }
 
 // WantIP6NdEvents represents the VPP binary API message 'want_ip6_nd_events'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 561:
+// Generated from 'bin_api/vpe.api.json', line 550:
 //
 //        ["want_ip6_nd_events",
 //            ["u16", "_vl_msg_id"],
@@ -2203,7 +2167,7 @@ func NewWantIP6NdEvents() api.Message {
 }
 
 // WantIP6NdEventsReply represents the VPP binary API message 'want_ip6_nd_events_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 570:
+// Generated from 'bin_api/vpe.api.json', line 559:
 //
 //        ["want_ip6_nd_events_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2230,7 +2194,7 @@ func NewWantIP6NdEventsReply() api.Message {
 }
 
 // IP6NdEvent represents the VPP binary API message 'ip6_nd_event'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 576:
+// Generated from 'bin_api/vpe.api.json', line 565:
 //
 //        ["ip6_nd_event",
 //            ["u16", "_vl_msg_id"],
@@ -2266,7 +2230,7 @@ func NewIP6NdEvent() api.Message {
 }
 
 // InputACLSetInterface represents the VPP binary API message 'input_acl_set_interface'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 587:
+// Generated from 'bin_api/vpe.api.json', line 576:
 //
 //        ["input_acl_set_interface",
 //            ["u16", "_vl_msg_id"],
@@ -2302,7 +2266,7 @@ func NewInputACLSetInterface() api.Message {
 }
 
 // InputACLSetInterfaceReply represents the VPP binary API message 'input_acl_set_interface_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 598:
+// Generated from 'bin_api/vpe.api.json', line 587:
 //
 //        ["input_acl_set_interface_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2329,7 +2293,7 @@ func NewInputACLSetInterfaceReply() api.Message {
 }
 
 // GetNodeGraph represents the VPP binary API message 'get_node_graph'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 604:
+// Generated from 'bin_api/vpe.api.json', line 593:
 //
 //        ["get_node_graph",
 //            ["u16", "_vl_msg_id"],
@@ -2355,7 +2319,7 @@ func NewGetNodeGraph() api.Message {
 }
 
 // GetNodeGraphReply represents the VPP binary API message 'get_node_graph_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 610:
+// Generated from 'bin_api/vpe.api.json', line 599:
 //
 //        ["get_node_graph_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2384,7 +2348,7 @@ func NewGetNodeGraphReply() api.Message {
 }
 
 // IoamEnable represents the VPP binary API message 'ioam_enable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 617:
+// Generated from 'bin_api/vpe.api.json', line 606:
 //
 //        ["ioam_enable",
 //            ["u16", "_vl_msg_id"],
@@ -2422,7 +2386,7 @@ func NewIoamEnable() api.Message {
 }
 
 // IoamEnableReply represents the VPP binary API message 'ioam_enable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 629:
+// Generated from 'bin_api/vpe.api.json', line 618:
 //
 //        ["ioam_enable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2449,7 +2413,7 @@ func NewIoamEnableReply() api.Message {
 }
 
 // IoamDisable represents the VPP binary API message 'ioam_disable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 635:
+// Generated from 'bin_api/vpe.api.json', line 624:
 //
 //        ["ioam_disable",
 //            ["u16", "_vl_msg_id"],
@@ -2477,7 +2441,7 @@ func NewIoamDisable() api.Message {
 }
 
 // IoamDisableReply represents the VPP binary API message 'ioam_disable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 642:
+// Generated from 'bin_api/vpe.api.json', line 631:
 //
 //        ["ioam_disable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2504,7 +2468,7 @@ func NewIoamDisableReply() api.Message {
 }
 
 // GetNextIndex represents the VPP binary API message 'get_next_index'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 648:
+// Generated from 'bin_api/vpe.api.json', line 637:
 //
 //        ["get_next_index",
 //            ["u16", "_vl_msg_id"],
@@ -2534,7 +2498,7 @@ func NewGetNextIndex() api.Message {
 }
 
 // GetNextIndexReply represents the VPP binary API message 'get_next_index_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 656:
+// Generated from 'bin_api/vpe.api.json', line 645:
 //
 //        ["get_next_index_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2563,7 +2527,7 @@ func NewGetNextIndexReply() api.Message {
 }
 
 // PgCreateInterface represents the VPP binary API message 'pg_create_interface'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 663:
+// Generated from 'bin_api/vpe.api.json', line 652:
 //
 //        ["pg_create_interface",
 //            ["u16", "_vl_msg_id"],
@@ -2591,7 +2555,7 @@ func NewPgCreateInterface() api.Message {
 }
 
 // PgCreateInterfaceReply represents the VPP binary API message 'pg_create_interface_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 670:
+// Generated from 'bin_api/vpe.api.json', line 659:
 //
 //        ["pg_create_interface_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2620,7 +2584,7 @@ func NewPgCreateInterfaceReply() api.Message {
 }
 
 // PgCapture represents the VPP binary API message 'pg_capture'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 677:
+// Generated from 'bin_api/vpe.api.json', line 666:
 //
 //        ["pg_capture",
 //            ["u16", "_vl_msg_id"],
@@ -2656,7 +2620,7 @@ func NewPgCapture() api.Message {
 }
 
 // PgCaptureReply represents the VPP binary API message 'pg_capture_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 688:
+// Generated from 'bin_api/vpe.api.json', line 677:
 //
 //        ["pg_capture_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2683,7 +2647,7 @@ func NewPgCaptureReply() api.Message {
 }
 
 // PgEnableDisable represents the VPP binary API message 'pg_enable_disable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 694:
+// Generated from 'bin_api/vpe.api.json', line 683:
 //
 //        ["pg_enable_disable",
 //            ["u16", "_vl_msg_id"],
@@ -2715,7 +2679,7 @@ func NewPgEnableDisable() api.Message {
 }
 
 // PgEnableDisableReply represents the VPP binary API message 'pg_enable_disable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 703:
+// Generated from 'bin_api/vpe.api.json', line 692:
 //
 //        ["pg_enable_disable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2742,7 +2706,7 @@ func NewPgEnableDisableReply() api.Message {
 }
 
 // IPSourceAndPortRangeCheckAddDel represents the VPP binary API message 'ip_source_and_port_range_check_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 709:
+// Generated from 'bin_api/vpe.api.json', line 698:
 //
 //        ["ip_source_and_port_range_check_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -2784,7 +2748,7 @@ func NewIPSourceAndPortRangeCheckAddDel() api.Message {
 }
 
 // IPSourceAndPortRangeCheckAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 723:
+// Generated from 'bin_api/vpe.api.json', line 712:
 //
 //        ["ip_source_and_port_range_check_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2811,7 +2775,7 @@ func NewIPSourceAndPortRangeCheckAddDelReply() api.Message {
 }
 
 // IPSourceAndPortRangeCheckInterfaceAddDel represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 729:
+// Generated from 'bin_api/vpe.api.json', line 718:
 //
 //        ["ip_source_and_port_range_check_interface_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -2849,7 +2813,7 @@ func NewIPSourceAndPortRangeCheckInterfaceAddDel() api.Message {
 }
 
 // IPSourceAndPortRangeCheckInterfaceAddDelReply represents the VPP binary API message 'ip_source_and_port_range_check_interface_add_del_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 741:
+// Generated from 'bin_api/vpe.api.json', line 730:
 //
 //        ["ip_source_and_port_range_check_interface_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2876,7 +2840,7 @@ func NewIPSourceAndPortRangeCheckInterfaceAddDelReply() api.Message {
 }
 
 // DeleteSubif represents the VPP binary API message 'delete_subif'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 747:
+// Generated from 'bin_api/vpe.api.json', line 736:
 //
 //        ["delete_subif",
 //            ["u16", "_vl_msg_id"],
@@ -2904,7 +2868,7 @@ func NewDeleteSubif() api.Message {
 }
 
 // DeleteSubifReply represents the VPP binary API message 'delete_subif_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 754:
+// Generated from 'bin_api/vpe.api.json', line 743:
 //
 //        ["delete_subif_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2931,7 +2895,7 @@ func NewDeleteSubifReply() api.Message {
 }
 
 // Punt represents the VPP binary API message 'punt'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 760:
+// Generated from 'bin_api/vpe.api.json', line 749:
 //
 //        ["punt",
 //            ["u16", "_vl_msg_id"],
@@ -2965,7 +2929,7 @@ func NewPunt() api.Message {
 }
 
 // PuntReply represents the VPP binary API message 'punt_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 770:
+// Generated from 'bin_api/vpe.api.json', line 759:
 //
 //        ["punt_reply",
 //            ["u16", "_vl_msg_id"],
@@ -2992,7 +2956,7 @@ func NewPuntReply() api.Message {
 }
 
 // FeatureEnableDisable represents the VPP binary API message 'feature_enable_disable'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 776:
+// Generated from 'bin_api/vpe.api.json', line 765:
 //
 //        ["feature_enable_disable",
 //            ["u16", "_vl_msg_id"],
@@ -3026,7 +2990,7 @@ func NewFeatureEnableDisable() api.Message {
 }
 
 // FeatureEnableDisableReply represents the VPP binary API message 'feature_enable_disable_reply'.
-// Generated from '/usr/share/vpp/api/vpe.api.json', line 786:
+// Generated from 'bin_api/vpe.api.json', line 775:
 //
 //        ["feature_enable_disable_reply",
 //            ["u16", "_vl_msg_id"],
index 2484c81..8977902 100644 (file)
@@ -12,6 +12,8 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+//go:generate binapi-generator --input-dir=bin_api --output-dir=bin_api
+
 package core
 
 import (
index 1c2e2bf..431f623 100644 (file)
             ["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"],
             {"crc" : "0x6c86a56c"}
         ]
     ],
-"vl_api_version" :"0x3cd02d84"
+"vl_api_version" :"0x1fd77287"
 }
index e13fb18..accdd3f 100644 (file)
@@ -1,11 +1,11 @@
 // Package acl represents the VPP binary API of the 'acl' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/acl.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/acl.api.json'
 package acl
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x3cd02d84
+const VlAPIVersion = 0x1fd77287
 
 // ACLRule represents the VPP binary API data type 'acl_rule'.
 // Generated from 'bin_api/acl.api.json', line 3:
@@ -134,9 +134,66 @@ func NewACLPluginGetVersionReply() api.Message {
        return &ACLPluginGetVersionReply{}
 }
 
-// ACLAddReplace represents the VPP binary API message 'acl_add_replace'.
+// ACLPluginControlPing represents the VPP binary API message 'acl_plugin_control_ping'.
 // Generated from 'bin_api/acl.api.json', line 43:
 //
+//        ["acl_plugin_control_ping",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            {"crc" : "0xfc22c86e"}
+//        ],
+//
+type ACLPluginControlPing struct {
+}
+
+func (*ACLPluginControlPing) GetMessageName() string {
+       return "acl_plugin_control_ping"
+}
+func (*ACLPluginControlPing) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*ACLPluginControlPing) GetCrcString() string {
+       return "fc22c86e"
+}
+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:
+//
+//        ["acl_plugin_control_ping_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            ["u32", "client_index"],
+//            ["u32", "vpe_pid"],
+//            {"crc" : "0xe07e9231"}
+//        ],
+//
+type ACLPluginControlPingReply struct {
+       Retval      int32
+       ClientIndex uint32
+       VpePid      uint32
+}
+
+func (*ACLPluginControlPingReply) GetMessageName() string {
+       return "acl_plugin_control_ping_reply"
+}
+func (*ACLPluginControlPingReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*ACLPluginControlPingReply) GetCrcString() string {
+       return "e07e9231"
+}
+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"],
@@ -169,7 +226,7 @@ func NewACLAddReplace() api.Message {
 }
 
 // ACLAddReplaceReply represents the VPP binary API message 'acl_add_replace_reply'.
-// Generated from 'bin_api/acl.api.json', line 53:
+// Generated from 'bin_api/acl.api.json', line 67:
 //
 //        ["acl_add_replace_reply",
 //            ["u16", "_vl_msg_id"],
@@ -198,7 +255,7 @@ func NewACLAddReplaceReply() api.Message {
 }
 
 // ACLDel represents the VPP binary API message 'acl_del'.
-// Generated from 'bin_api/acl.api.json', line 60:
+// Generated from 'bin_api/acl.api.json', line 74:
 //
 //        ["acl_del",
 //            ["u16", "_vl_msg_id"],
@@ -226,7 +283,7 @@ func NewACLDel() api.Message {
 }
 
 // ACLDelReply represents the VPP binary API message 'acl_del_reply'.
-// Generated from 'bin_api/acl.api.json', line 67:
+// Generated from 'bin_api/acl.api.json', line 81:
 //
 //        ["acl_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -253,7 +310,7 @@ func NewACLDelReply() api.Message {
 }
 
 // ACLInterfaceAddDel represents the VPP binary API message 'acl_interface_add_del'.
-// Generated from 'bin_api/acl.api.json', line 73:
+// Generated from 'bin_api/acl.api.json', line 87:
 //
 //        ["acl_interface_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -287,7 +344,7 @@ func NewACLInterfaceAddDel() api.Message {
 }
 
 // ACLInterfaceAddDelReply represents the VPP binary API message 'acl_interface_add_del_reply'.
-// Generated from 'bin_api/acl.api.json', line 83:
+// Generated from 'bin_api/acl.api.json', line 97:
 //
 //        ["acl_interface_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -314,7 +371,7 @@ func NewACLInterfaceAddDelReply() api.Message {
 }
 
 // ACLInterfaceSetACLList represents the VPP binary API message 'acl_interface_set_acl_list'.
-// Generated from 'bin_api/acl.api.json', line 89:
+// Generated from 'bin_api/acl.api.json', line 103:
 //
 //        ["acl_interface_set_acl_list",
 //            ["u16", "_vl_msg_id"],
@@ -348,7 +405,7 @@ func NewACLInterfaceSetACLList() api.Message {
 }
 
 // ACLInterfaceSetACLListReply represents the VPP binary API message 'acl_interface_set_acl_list_reply'.
-// Generated from 'bin_api/acl.api.json', line 99:
+// Generated from 'bin_api/acl.api.json', line 113:
 //
 //        ["acl_interface_set_acl_list_reply",
 //            ["u16", "_vl_msg_id"],
@@ -375,7 +432,7 @@ func NewACLInterfaceSetACLListReply() api.Message {
 }
 
 // ACLDump represents the VPP binary API message 'acl_dump'.
-// Generated from 'bin_api/acl.api.json', line 105:
+// Generated from 'bin_api/acl.api.json', line 119:
 //
 //        ["acl_dump",
 //            ["u16", "_vl_msg_id"],
@@ -403,7 +460,7 @@ func NewACLDump() api.Message {
 }
 
 // ACLDetails represents the VPP binary API message 'acl_details'.
-// Generated from 'bin_api/acl.api.json', line 112:
+// Generated from 'bin_api/acl.api.json', line 126:
 //
 //        ["acl_details",
 //            ["u16", "_vl_msg_id"],
@@ -436,7 +493,7 @@ func NewACLDetails() api.Message {
 }
 
 // ACLInterfaceListDump represents the VPP binary API message 'acl_interface_list_dump'.
-// Generated from 'bin_api/acl.api.json', line 121:
+// Generated from 'bin_api/acl.api.json', line 135:
 //
 //        ["acl_interface_list_dump",
 //            ["u16", "_vl_msg_id"],
@@ -464,7 +521,7 @@ func NewACLInterfaceListDump() api.Message {
 }
 
 // ACLInterfaceListDetails represents the VPP binary API message 'acl_interface_list_details'.
-// Generated from 'bin_api/acl.api.json', line 128:
+// Generated from 'bin_api/acl.api.json', line 142:
 //
 //        ["acl_interface_list_details",
 //            ["u16", "_vl_msg_id"],
@@ -497,7 +554,7 @@ func NewACLInterfaceListDetails() api.Message {
 }
 
 // MacipACLAdd represents the VPP binary API message 'macip_acl_add'.
-// Generated from 'bin_api/acl.api.json', line 137:
+// Generated from 'bin_api/acl.api.json', line 151:
 //
 //        ["macip_acl_add",
 //            ["u16", "_vl_msg_id"],
@@ -529,7 +586,7 @@ func NewMacipACLAdd() api.Message {
 }
 
 // MacipACLAddReply represents the VPP binary API message 'macip_acl_add_reply'.
-// Generated from 'bin_api/acl.api.json', line 146:
+// Generated from 'bin_api/acl.api.json', line 160:
 //
 //        ["macip_acl_add_reply",
 //            ["u16", "_vl_msg_id"],
@@ -558,7 +615,7 @@ func NewMacipACLAddReply() api.Message {
 }
 
 // MacipACLDel represents the VPP binary API message 'macip_acl_del'.
-// Generated from 'bin_api/acl.api.json', line 153:
+// Generated from 'bin_api/acl.api.json', line 167:
 //
 //        ["macip_acl_del",
 //            ["u16", "_vl_msg_id"],
@@ -586,7 +643,7 @@ func NewMacipACLDel() api.Message {
 }
 
 // MacipACLDelReply represents the VPP binary API message 'macip_acl_del_reply'.
-// Generated from 'bin_api/acl.api.json', line 160:
+// Generated from 'bin_api/acl.api.json', line 174:
 //
 //        ["macip_acl_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -613,7 +670,7 @@ func NewMacipACLDelReply() api.Message {
 }
 
 // MacipACLInterfaceAddDel represents the VPP binary API message 'macip_acl_interface_add_del'.
-// Generated from 'bin_api/acl.api.json', line 166:
+// Generated from 'bin_api/acl.api.json', line 180:
 //
 //        ["macip_acl_interface_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -645,7 +702,7 @@ func NewMacipACLInterfaceAddDel() api.Message {
 }
 
 // MacipACLInterfaceAddDelReply represents the VPP binary API message 'macip_acl_interface_add_del_reply'.
-// Generated from 'bin_api/acl.api.json', line 175:
+// Generated from 'bin_api/acl.api.json', line 189:
 //
 //        ["macip_acl_interface_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -672,7 +729,7 @@ func NewMacipACLInterfaceAddDelReply() api.Message {
 }
 
 // MacipACLDump represents the VPP binary API message 'macip_acl_dump'.
-// Generated from 'bin_api/acl.api.json', line 181:
+// Generated from 'bin_api/acl.api.json', line 195:
 //
 //        ["macip_acl_dump",
 //            ["u16", "_vl_msg_id"],
@@ -700,7 +757,7 @@ func NewMacipACLDump() api.Message {
 }
 
 // MacipACLDetails represents the VPP binary API message 'macip_acl_details'.
-// Generated from 'bin_api/acl.api.json', line 188:
+// Generated from 'bin_api/acl.api.json', line 202:
 //
 //        ["macip_acl_details",
 //            ["u16", "_vl_msg_id"],
@@ -733,7 +790,7 @@ func NewMacipACLDetails() api.Message {
 }
 
 // MacipACLInterfaceGet represents the VPP binary API message 'macip_acl_interface_get'.
-// Generated from 'bin_api/acl.api.json', line 197:
+// Generated from 'bin_api/acl.api.json', line 211:
 //
 //        ["macip_acl_interface_get",
 //            ["u16", "_vl_msg_id"],
@@ -759,7 +816,7 @@ func NewMacipACLInterfaceGet() api.Message {
 }
 
 // MacipACLInterfaceGetReply represents the VPP binary API message 'macip_acl_interface_get_reply'.
-// Generated from 'bin_api/acl.api.json', line 203:
+// Generated from 'bin_api/acl.api.json', line 217:
 //
 //        ["macip_acl_interface_get_reply",
 //            ["u16", "_vl_msg_id"],
index 211fc3e..b0c8e7d 100644 (file)
@@ -33,5 +33,5 @@
             {"crc" : "0x1a80431a"}
         ]
     ],
-"vl_api_version" :"0x4ca71f33"
+"vl_api_version" :"0xd4ce9f85"
 }
index c8b60f9..58db69d 100644 (file)
@@ -1,11 +1,11 @@
 // Package af_packet represents the VPP binary API of the 'af_packet' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/af_packet.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/af_packet.api.json'
 package af_packet
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x4ca71f33
+const VlAPIVersion = 0xd4ce9f85
 
 // AfPacketCreate represents the VPP binary API message 'af_packet_create'.
 // Generated from 'bin_api/af_packet.api.json', line 6:
index 81f81bd..21511fa 100644 (file)
@@ -1,6 +1,10 @@
 {
     "types" : [
-
+        ["vlib_counter",
+            ["u64", "packets"],
+            ["u64", "bytes"],
+            {"crc" : "0x62db67f0"}
+        ]
     ],
     "messages" : [
         ["sw_interface_set_flags",
             ["u32", "vrf_id"],
             {"crc" : "0xab44111d"}
         ],
-        ["vnet_interface_counters",
+        ["vnet_interface_simple_counters",
+            ["u16", "_vl_msg_id"],
+            ["u8", "vnet_counter_type"],
+            ["u32", "first_sw_if_index"],
+            ["u32", "count"],
+            ["u64", "data", 0, "count"],
+            {"crc" : "0x302f0983"}
+        ],
+        ["vnet_interface_combined_counters",
             ["u16", "_vl_msg_id"],
             ["u8", "vnet_counter_type"],
-            ["u8", "is_combined"],
             ["u32", "first_sw_if_index"],
             ["u32", "count"],
-            ["u8", "data", 0, "count"],
-            {"crc" : "0x312082b4"}
+            ["vl_api_vlib_counter_t", "data", 0, "count"],
+            {"crc" : "0xd82426e3"}
         ],
         ["sw_interface_set_unnumbered",
             ["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"}
         ]
     ],
-"vl_api_version" :"0x6857f668"
+"vl_api_version" :"0xcdfdf626"
 }
index a83b517..7d89f09 100644 (file)
@@ -1,14 +1,35 @@
 // Package interfaces represents the VPP binary API of the 'interfaces' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/interface.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/interface.api.json'
 package interfaces
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x6857f668
+const VlAPIVersion = 0xcdfdf626
+
+// 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"}
+//        ]
+//
+type VlibCounter struct {
+       Packets uint64
+       Bytes   uint64
+}
+
+func (*VlibCounter) GetTypeName() string {
+       return "vlib_counter"
+}
+func (*VlibCounter) GetCrcString() string {
+       return "62db67f0"
+}
 
 // SwInterfaceSetFlags represents the VPP binary API message 'sw_interface_set_flags'.
-// Generated from 'bin_api/interface.api.json', line 6:
+// Generated from 'bin_api/interface.api.json', line 10:
 //
 //        ["sw_interface_set_flags",
 //            ["u16", "_vl_msg_id"],
@@ -42,7 +63,7 @@ func NewSwInterfaceSetFlags() api.Message {
 }
 
 // SwInterfaceSetFlagsReply represents the VPP binary API message 'sw_interface_set_flags_reply'.
-// Generated from 'bin_api/interface.api.json', line 16:
+// Generated from 'bin_api/interface.api.json', line 20:
 //
 //        ["sw_interface_set_flags_reply",
 //            ["u16", "_vl_msg_id"],
@@ -69,7 +90,7 @@ func NewSwInterfaceSetFlagsReply() api.Message {
 }
 
 // SwInterfaceSetMtu represents the VPP binary API message 'sw_interface_set_mtu'.
-// Generated from 'bin_api/interface.api.json', line 22:
+// Generated from 'bin_api/interface.api.json', line 26:
 //
 //        ["sw_interface_set_mtu",
 //            ["u16", "_vl_msg_id"],
@@ -99,7 +120,7 @@ func NewSwInterfaceSetMtu() api.Message {
 }
 
 // SwInterfaceSetMtuReply represents the VPP binary API message 'sw_interface_set_mtu_reply'.
-// Generated from 'bin_api/interface.api.json', line 30:
+// Generated from 'bin_api/interface.api.json', line 34:
 //
 //        ["sw_interface_set_mtu_reply",
 //            ["u16", "_vl_msg_id"],
@@ -126,7 +147,7 @@ func NewSwInterfaceSetMtuReply() api.Message {
 }
 
 // WantInterfaceEvents represents the VPP binary API message 'want_interface_events'.
-// Generated from 'bin_api/interface.api.json', line 36:
+// Generated from 'bin_api/interface.api.json', line 40:
 //
 //        ["want_interface_events",
 //            ["u16", "_vl_msg_id"],
@@ -156,7 +177,7 @@ func NewWantInterfaceEvents() api.Message {
 }
 
 // WantInterfaceEventsReply represents the VPP binary API message 'want_interface_events_reply'.
-// Generated from 'bin_api/interface.api.json', line 44:
+// Generated from 'bin_api/interface.api.json', line 48:
 //
 //        ["want_interface_events_reply",
 //            ["u16", "_vl_msg_id"],
@@ -183,7 +204,7 @@ func NewWantInterfaceEventsReply() api.Message {
 }
 
 // SwInterfaceDetails represents the VPP binary API message 'sw_interface_details'.
-// Generated from 'bin_api/interface.api.json', line 50:
+// Generated from 'bin_api/interface.api.json', line 54:
 //
 //        ["sw_interface_details",
 //            ["u16", "_vl_msg_id"],
@@ -268,7 +289,7 @@ func NewSwInterfaceDetails() api.Message {
 }
 
 // SwInterfaceDump represents the VPP binary API message 'sw_interface_dump'.
-// Generated from 'bin_api/interface.api.json', line 85:
+// Generated from 'bin_api/interface.api.json', line 89:
 //
 //        ["sw_interface_dump",
 //            ["u16", "_vl_msg_id"],
@@ -298,7 +319,7 @@ func NewSwInterfaceDump() api.Message {
 }
 
 // SwInterfaceAddDelAddress represents the VPP binary API message 'sw_interface_add_del_address'.
-// Generated from 'bin_api/interface.api.json', line 93:
+// Generated from 'bin_api/interface.api.json', line 97:
 //
 //        ["sw_interface_add_del_address",
 //            ["u16", "_vl_msg_id"],
@@ -336,7 +357,7 @@ func NewSwInterfaceAddDelAddress() api.Message {
 }
 
 // SwInterfaceAddDelAddressReply represents the VPP binary API message 'sw_interface_add_del_address_reply'.
-// Generated from 'bin_api/interface.api.json', line 105:
+// Generated from 'bin_api/interface.api.json', line 109:
 //
 //        ["sw_interface_add_del_address_reply",
 //            ["u16", "_vl_msg_id"],
@@ -363,7 +384,7 @@ func NewSwInterfaceAddDelAddressReply() api.Message {
 }
 
 // SwInterfaceSetTable represents the VPP binary API message 'sw_interface_set_table'.
-// Generated from 'bin_api/interface.api.json', line 111:
+// Generated from 'bin_api/interface.api.json', line 115:
 //
 //        ["sw_interface_set_table",
 //            ["u16", "_vl_msg_id"],
@@ -395,7 +416,7 @@ func NewSwInterfaceSetTable() api.Message {
 }
 
 // SwInterfaceSetTableReply represents the VPP binary API message 'sw_interface_set_table_reply'.
-// Generated from 'bin_api/interface.api.json', line 120:
+// Generated from 'bin_api/interface.api.json', line 124:
 //
 //        ["sw_interface_set_table_reply",
 //            ["u16", "_vl_msg_id"],
@@ -422,7 +443,7 @@ func NewSwInterfaceSetTableReply() api.Message {
 }
 
 // SwInterfaceGetTable represents the VPP binary API message 'sw_interface_get_table'.
-// Generated from 'bin_api/interface.api.json', line 126:
+// Generated from 'bin_api/interface.api.json', line 130:
 //
 //        ["sw_interface_get_table",
 //            ["u16", "_vl_msg_id"],
@@ -452,7 +473,7 @@ func NewSwInterfaceGetTable() api.Message {
 }
 
 // SwInterfaceGetTableReply represents the VPP binary API message 'sw_interface_get_table_reply'.
-// Generated from 'bin_api/interface.api.json', line 134:
+// Generated from 'bin_api/interface.api.json', line 138:
 //
 //        ["sw_interface_get_table_reply",
 //            ["u16", "_vl_msg_id"],
@@ -480,42 +501,72 @@ func NewSwInterfaceGetTableReply() api.Message {
        return &SwInterfaceGetTableReply{}
 }
 
-// VnetInterfaceCounters represents the VPP binary API message 'vnet_interface_counters'.
-// Generated from 'bin_api/interface.api.json', line 141:
+// VnetInterfaceSimpleCounters represents the VPP binary API message 'vnet_interface_simple_counters'.
+// Generated from 'bin_api/interface.api.json', line 145:
 //
-//        ["vnet_interface_counters",
+//        ["vnet_interface_simple_counters",
 //            ["u16", "_vl_msg_id"],
 //            ["u8", "vnet_counter_type"],
-//            ["u8", "is_combined"],
 //            ["u32", "first_sw_if_index"],
 //            ["u32", "count"],
-//            ["u8", "data", 0, "count"],
-//            {"crc" : "0x312082b4"}
+//            ["u64", "data", 0, "count"],
+//            {"crc" : "0x302f0983"}
 //        ],
 //
-type VnetInterfaceCounters struct {
+type VnetInterfaceSimpleCounters struct {
        VnetCounterType uint8
-       IsCombined      uint8
        FirstSwIfIndex  uint32
        Count           uint32 `struc:"sizeof=Data"`
-       Data            []byte
+       Data            []uint64
 }
 
-func (*VnetInterfaceCounters) GetMessageName() string {
-       return "vnet_interface_counters"
+func (*VnetInterfaceSimpleCounters) GetMessageName() string {
+       return "vnet_interface_simple_counters"
 }
-func (*VnetInterfaceCounters) GetMessageType() api.MessageType {
+func (*VnetInterfaceSimpleCounters) GetMessageType() api.MessageType {
        return api.OtherMessage
 }
-func (*VnetInterfaceCounters) GetCrcString() string {
-       return "312082b4"
+func (*VnetInterfaceSimpleCounters) GetCrcString() string {
+       return "302f0983"
 }
-func NewVnetInterfaceCounters() api.Message {
-       return &VnetInterfaceCounters{}
+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 153:
+//
+//        ["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"}
+//        ],
+//
+type VnetInterfaceCombinedCounters struct {
+       VnetCounterType uint8
+       FirstSwIfIndex  uint32
+       Count           uint32 `struc:"sizeof=Data"`
+       Data            []VlibCounter
+}
+
+func (*VnetInterfaceCombinedCounters) GetMessageName() string {
+       return "vnet_interface_combined_counters"
+}
+func (*VnetInterfaceCombinedCounters) GetMessageType() api.MessageType {
+       return api.OtherMessage
+}
+func (*VnetInterfaceCombinedCounters) GetCrcString() string {
+       return "d82426e3"
+}
+func NewVnetInterfaceCombinedCounters() api.Message {
+       return &VnetInterfaceCombinedCounters{}
 }
 
 // SwInterfaceSetUnnumbered represents the VPP binary API message 'sw_interface_set_unnumbered'.
-// Generated from 'bin_api/interface.api.json', line 150:
+// Generated from 'bin_api/interface.api.json', line 161:
 //
 //        ["sw_interface_set_unnumbered",
 //            ["u16", "_vl_msg_id"],
@@ -547,7 +598,7 @@ func NewSwInterfaceSetUnnumbered() api.Message {
 }
 
 // SwInterfaceSetUnnumberedReply represents the VPP binary API message 'sw_interface_set_unnumbered_reply'.
-// Generated from 'bin_api/interface.api.json', line 159:
+// Generated from 'bin_api/interface.api.json', line 170:
 //
 //        ["sw_interface_set_unnumbered_reply",
 //            ["u16", "_vl_msg_id"],
@@ -574,7 +625,7 @@ func NewSwInterfaceSetUnnumberedReply() api.Message {
 }
 
 // SwInterfaceClearStats represents the VPP binary API message 'sw_interface_clear_stats'.
-// Generated from 'bin_api/interface.api.json', line 165:
+// Generated from 'bin_api/interface.api.json', line 176:
 //
 //        ["sw_interface_clear_stats",
 //            ["u16", "_vl_msg_id"],
@@ -602,7 +653,7 @@ func NewSwInterfaceClearStats() api.Message {
 }
 
 // SwInterfaceClearStatsReply represents the VPP binary API message 'sw_interface_clear_stats_reply'.
-// Generated from 'bin_api/interface.api.json', line 172:
+// Generated from 'bin_api/interface.api.json', line 183:
 //
 //        ["sw_interface_clear_stats_reply",
 //            ["u16", "_vl_msg_id"],
@@ -629,7 +680,7 @@ func NewSwInterfaceClearStatsReply() api.Message {
 }
 
 // SwInterfaceTagAddDel represents the VPP binary API message 'sw_interface_tag_add_del'.
-// Generated from 'bin_api/interface.api.json', line 178:
+// Generated from 'bin_api/interface.api.json', line 189:
 //
 //        ["sw_interface_tag_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -661,14 +712,14 @@ func NewSwInterfaceTagAddDel() api.Message {
 }
 
 // SwInterfaceTagAddDelReply represents the VPP binary API message 'sw_interface_tag_add_del_reply'.
-// Generated from 'bin_api/interface.api.json', line 187:
+// Generated from 'bin_api/interface.api.json', line 198:
 //
 //        ["sw_interface_tag_add_del_reply",
 //            ["u16", "_vl_msg_id"],
 //            ["u32", "context"],
 //            ["i32", "retval"],
 //            {"crc" : "0x761cbcb0"}
-//        ]
+//        ],
 //
 type SwInterfaceTagAddDelReply struct {
        Retval int32
@@ -686,3 +737,60 @@ func (*SwInterfaceTagAddDelReply) GetCrcString() string {
 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 204:
+//
+//        ["sw_interface_set_mac_address",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "client_index"],
+//            ["u32", "context"],
+//            ["u32", "sw_if_index"],
+//            ["u8", "mac_address", 6],
+//            {"crc" : "0xe4f22660"}
+//        ],
+//
+type SwInterfaceSetMacAddress struct {
+       SwIfIndex  uint32
+       MacAddress []byte `struc:"[6]byte"`
+}
+
+func (*SwInterfaceSetMacAddress) GetMessageName() string {
+       return "sw_interface_set_mac_address"
+}
+func (*SwInterfaceSetMacAddress) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*SwInterfaceSetMacAddress) GetCrcString() string {
+       return "e4f22660"
+}
+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 212:
+//
+//        ["sw_interface_set_mac_address_reply",
+//            ["u16", "_vl_msg_id"],
+//            ["u32", "context"],
+//            ["i32", "retval"],
+//            {"crc" : "0x9dc8a452"}
+//        ]
+//
+type SwInterfaceSetMacAddressReply struct {
+       Retval int32
+}
+
+func (*SwInterfaceSetMacAddressReply) GetMessageName() string {
+       return "sw_interface_set_mac_address_reply"
+}
+func (*SwInterfaceSetMacAddressReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*SwInterfaceSetMacAddressReply) GetCrcString() string {
+       return "9dc8a452"
+}
+func NewSwInterfaceSetMacAddressReply() api.Message {
+       return &SwInterfaceSetMacAddressReply{}
+}
index 970ec4b..805e56f 100644 (file)
             ["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", "is_no_adj_fib"],
             ["u8", "mac_address", 6],
             ["u8", "dst_address", 16],
-            {"crc" : "0x66f2112c"}
+            {"crc" : "0x5a0d070b"}
         ],
         ["ip_neighbor_add_del_reply",
             ["u16", "_vl_msg_id"],
             ["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", "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_local"],
             ["u8", "grp_address", 16],
             ["u8", "src_address", 16],
-            {"crc" : "0x8312830f"}
+            {"crc" : "0x8f5f21a8"}
         ],
         ["ip_mroute_add_del_reply",
             ["u16", "_vl_msg_id"],
             ["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"],
             {"crc" : "0x6ba92c72"}
         ]
     ],
-"vl_api_version" :"0x6a819870"
+"vl_api_version" :"0x50fe2434"
 }
index 1db05d4..884e218 100644 (file)
@@ -1,11 +1,11 @@
 // Package ip represents the VPP binary API of the 'ip' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/ip.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/ip.api.json'
 package ip
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x6a819870
+const VlAPIVersion = 0x50fe2434
 
 // FibPath represents the VPP binary API data type 'fib_path'.
 // Generated from 'bin_api/ip.api.json', line 3:
@@ -232,22 +232,22 @@ func NewIPNeighborDetails() api.Message {
 //            ["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", "is_no_adj_fib"],
 //            ["u8", "mac_address", 6],
 //            ["u8", "dst_address", 16],
-//            {"crc" : "0x66f2112c"}
+//            {"crc" : "0x5a0d070b"}
 //        ],
 //
 type IPNeighborAddDel struct {
-       VrfID      uint32
        SwIfIndex  uint32
        IsAdd      uint8
        IsIpv6     uint8
        IsStatic   uint8
+       IsNoAdjFib uint8
        MacAddress []byte `struc:"[6]byte"`
        DstAddress []byte `struc:"[16]byte"`
 }
@@ -259,7 +259,7 @@ func (*IPNeighborAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPNeighborAddDel) GetCrcString() string {
-       return "66f2112c"
+       return "5a0d070b"
 }
 func NewIPNeighborAddDel() api.Message {
        return &IPNeighborAddDel{}
@@ -517,9 +517,124 @@ func NewSwInterfaceIP6ndRaPrefixReply() api.Message {
        return &SwInterfaceIP6ndRaPrefixReply{}
 }
 
-// SwInterfaceIP6EnableDisable represents the VPP binary API message 'sw_interface_ip6_enable_disable'.
+// 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"}
+//        ],
+//
+type IP6ndProxyAddDel struct {
+       SwIfIndex uint32
+       IsDel     uint8
+       Address   []byte `struc:"[16]byte"`
+}
+
+func (*IP6ndProxyAddDel) GetMessageName() string {
+       return "ip6nd_proxy_add_del"
+}
+func (*IP6ndProxyAddDel) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6ndProxyAddDel) GetCrcString() string {
+       return "c56f802d"
+}
+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"}
+//        ],
+//
+type IP6ndProxyAddDelReply struct {
+       Retval int32
+}
+
+func (*IP6ndProxyAddDelReply) GetMessageName() string {
+       return "ip6nd_proxy_add_del_reply"
+}
+func (*IP6ndProxyAddDelReply) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IP6ndProxyAddDelReply) GetCrcString() string {
+       return "00ddc2d5"
+}
+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"}
+//        ],
+//
+type IP6ndProxyDetails struct {
+       SwIfIndex uint32
+       Address   []byte `struc:"[16]byte"`
+}
+
+func (*IP6ndProxyDetails) GetMessageName() string {
+       return "ip6nd_proxy_details"
+}
+func (*IP6ndProxyDetails) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6ndProxyDetails) GetCrcString() string {
+       return "f805ccc1"
+}
+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"}
+//        ],
+//
+type IP6ndProxyDump struct {
+}
+
+func (*IP6ndProxyDump) GetMessageName() string {
+       return "ip6nd_proxy_dump"
+}
+func (*IP6ndProxyDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6ndProxyDump) GetCrcString() string {
+       return "21597d88"
+}
+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"],
@@ -548,7 +663,7 @@ func NewSwInterfaceIP6EnableDisable() api.Message {
 }
 
 // SwInterfaceIP6EnableDisableReply represents the VPP binary API message 'sw_interface_ip6_enable_disable_reply'.
-// Generated from 'bin_api/ip.api.json', line 161:
+// Generated from 'bin_api/ip.api.json', line 190:
 //
 //        ["sw_interface_ip6_enable_disable_reply",
 //            ["u16", "_vl_msg_id"],
@@ -575,7 +690,7 @@ func NewSwInterfaceIP6EnableDisableReply() api.Message {
 }
 
 // SwInterfaceIP6SetLinkLocalAddress represents the VPP binary API message 'sw_interface_ip6_set_link_local_address'.
-// Generated from 'bin_api/ip.api.json', line 167:
+// Generated from 'bin_api/ip.api.json', line 196:
 //
 //        ["sw_interface_ip6_set_link_local_address",
 //            ["u16", "_vl_msg_id"],
@@ -605,7 +720,7 @@ func NewSwInterfaceIP6SetLinkLocalAddress() api.Message {
 }
 
 // SwInterfaceIP6SetLinkLocalAddressReply represents the VPP binary API message 'sw_interface_ip6_set_link_local_address_reply'.
-// Generated from 'bin_api/ip.api.json', line 175:
+// Generated from 'bin_api/ip.api.json', line 204:
 //
 //        ["sw_interface_ip6_set_link_local_address_reply",
 //            ["u16", "_vl_msg_id"],
@@ -632,7 +747,7 @@ func NewSwInterfaceIP6SetLinkLocalAddressReply() api.Message {
 }
 
 // IPAddDelRoute represents the VPP binary API message 'ip_add_del_route'.
-// Generated from 'bin_api/ip.api.json', line 181:
+// Generated from 'bin_api/ip.api.json', line 210:
 //
 //        ["ip_add_del_route",
 //            ["u16", "_vl_msg_id"],
@@ -704,7 +819,7 @@ func NewIPAddDelRoute() api.Message {
 }
 
 // IPAddDelRouteReply represents the VPP binary API message 'ip_add_del_route_reply'.
-// Generated from 'bin_api/ip.api.json', line 210:
+// Generated from 'bin_api/ip.api.json', line 239:
 //
 //        ["ip_add_del_route_reply",
 //            ["u16", "_vl_msg_id"],
@@ -731,7 +846,7 @@ func NewIPAddDelRouteReply() api.Message {
 }
 
 // IPMrouteAddDel represents the VPP binary API message 'ip_mroute_add_del'.
-// Generated from 'bin_api/ip.api.json', line 216:
+// Generated from 'bin_api/ip.api.json', line 245:
 //
 //        ["ip_mroute_add_del",
 //            ["u16", "_vl_msg_id"],
@@ -741,6 +856,7 @@ func NewIPAddDelRouteReply() api.Message {
 //            ["u32", "table_id"],
 //            ["u32", "entry_flags"],
 //            ["u32", "itf_flags"],
+//            ["u32", "rpf_id"],
 //            ["u16", "grp_address_length"],
 //            ["u8", "create_vrf_if_needed"],
 //            ["u8", "is_add"],
@@ -748,7 +864,7 @@ func NewIPAddDelRouteReply() api.Message {
 //            ["u8", "is_local"],
 //            ["u8", "grp_address", 16],
 //            ["u8", "src_address", 16],
-//            {"crc" : "0x8312830f"}
+//            {"crc" : "0x8f5f21a8"}
 //        ],
 //
 type IPMrouteAddDel struct {
@@ -756,6 +872,7 @@ type IPMrouteAddDel struct {
        TableID           uint32
        EntryFlags        uint32
        ItfFlags          uint32
+       RpfID             uint32
        GrpAddressLength  uint16
        CreateVrfIfNeeded uint8
        IsAdd             uint8
@@ -772,14 +889,14 @@ func (*IPMrouteAddDel) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*IPMrouteAddDel) GetCrcString() string {
-       return "8312830f"
+       return "8f5f21a8"
 }
 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 233:
+// Generated from 'bin_api/ip.api.json', line 263:
 //
 //        ["ip_mroute_add_del_reply",
 //            ["u16", "_vl_msg_id"],
@@ -805,8 +922,138 @@ 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"}
+//        ],
+//
+type IPMfibDump struct {
+}
+
+func (*IPMfibDump) GetMessageName() string {
+       return "ip_mfib_dump"
+}
+func (*IPMfibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IPMfibDump) GetCrcString() string {
+       return "ee61390e"
+}
+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"}
+//        ],
+//
+type IPMfibDetails struct {
+       TableID       uint32
+       EntryFlags    uint32
+       RpfID         uint32
+       AddressLength uint8
+       GrpAddress    []byte `struc:"[4]byte"`
+       SrcAddress    []byte `struc:"[4]byte"`
+       Count         uint32 `struc:"sizeof=Path"`
+       Path          []FibPath
+}
+
+func (*IPMfibDetails) GetMessageName() string {
+       return "ip_mfib_details"
+}
+func (*IPMfibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IPMfibDetails) GetCrcString() string {
+       return "395e5699"
+}
+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"}
+//        ],
+//
+type IP6MfibDump struct {
+}
+
+func (*IP6MfibDump) GetMessageName() string {
+       return "ip6_mfib_dump"
+}
+func (*IP6MfibDump) GetMessageType() api.MessageType {
+       return api.RequestMessage
+}
+func (*IP6MfibDump) GetCrcString() string {
+       return "0839e143"
+}
+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"}
+//        ],
+//
+type IP6MfibDetails struct {
+       TableID       uint32
+       AddressLength uint8
+       GrpAddress    []byte `struc:"[16]byte"`
+       SrcAddress    []byte `struc:"[16]byte"`
+       Count         uint32 `struc:"sizeof=Path"`
+       Path          []FibPath
+}
+
+func (*IP6MfibDetails) GetMessageName() string {
+       return "ip6_mfib_details"
+}
+func (*IP6MfibDetails) GetMessageType() api.MessageType {
+       return api.ReplyMessage
+}
+func (*IP6MfibDetails) GetCrcString() string {
+       return "921b153f"
+}
+func NewIP6MfibDetails() api.Message {
+       return &IP6MfibDetails{}
+}
+
 // IPAddressDetails represents the VPP binary API message 'ip_address_details'.
-// Generated from 'bin_api/ip.api.json', line 239:
+// Generated from 'bin_api/ip.api.json', line 305:
 //
 //        ["ip_address_details",
 //            ["u16", "_vl_msg_id"],
@@ -840,7 +1087,7 @@ func NewIPAddressDetails() api.Message {
 }
 
 // IPAddressDump represents the VPP binary API message 'ip_address_dump'.
-// Generated from 'bin_api/ip.api.json', line 249:
+// Generated from 'bin_api/ip.api.json', line 315:
 //
 //        ["ip_address_dump",
 //            ["u16", "_vl_msg_id"],
@@ -870,7 +1117,7 @@ func NewIPAddressDump() api.Message {
 }
 
 // IPDetails represents the VPP binary API message 'ip_details'.
-// Generated from 'bin_api/ip.api.json', line 257:
+// Generated from 'bin_api/ip.api.json', line 323:
 //
 //        ["ip_details",
 //            ["u16", "_vl_msg_id"],
@@ -900,7 +1147,7 @@ func NewIPDetails() api.Message {
 }
 
 // IPDump represents the VPP binary API message 'ip_dump'.
-// Generated from 'bin_api/ip.api.json', line 264:
+// Generated from 'bin_api/ip.api.json', line 330:
 //
 //        ["ip_dump",
 //            ["u16", "_vl_msg_id"],
@@ -928,7 +1175,7 @@ func NewIPDump() api.Message {
 }
 
 // MfibSignalDump represents the VPP binary API message 'mfib_signal_dump'.
-// Generated from 'bin_api/ip.api.json', line 271:
+// Generated from 'bin_api/ip.api.json', line 337:
 //
 //        ["mfib_signal_dump",
 //            ["u16", "_vl_msg_id"],
@@ -954,7 +1201,7 @@ func NewMfibSignalDump() api.Message {
 }
 
 // MfibSignalDetails represents the VPP binary API message 'mfib_signal_details'.
-// Generated from 'bin_api/ip.api.json', line 277:
+// Generated from 'bin_api/ip.api.json', line 343:
 //
 //        ["mfib_signal_details",
 //            ["u16", "_vl_msg_id"],
index e41c82d..fd38316 100644 (file)
@@ -8,12 +8,16 @@
             ["u32", "client_index"],
             ["u32", "context"],
             ["u8", "role"],
-            ["u64", "key"],
+            ["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" : "0x23fe3309"}
+            {"crc" : "0xc809c235"}
         ],
         ["memif_create_reply",
             ["u16", "_vl_msg_id"],
             ["u32", "sw_if_index"],
             ["u8", "if_name", 64],
             ["u8", "hw_addr", 6],
-            ["u64", "key"],
+            ["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" : "0xcf105583"}
+            {"crc" : "0x4d74fd96"}
         ],
         ["memif_dump",
             ["u16", "_vl_msg_id"],
@@ -57,5 +62,5 @@
             {"crc" : "0x68d39e95"}
         ]
     ],
-"vl_api_version" :"0xadb63e82"
+"vl_api_version" :"0xed3def5d"
 }
index c7c27f4..aa847e4 100644 (file)
@@ -1,11 +1,11 @@
 // Package memif represents the VPP binary API of the 'memif' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/memif.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/memif.api.json'
 package memif
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0xadb63e82
+const VlAPIVersion = 0xed3def5d
 
 // MemifCreate represents the VPP binary API message 'memif_create'.
 // Generated from 'bin_api/memif.api.json', line 6:
@@ -15,18 +15,26 @@ const VlAPIVersion = 0xadb63e82
 //            ["u32", "client_index"],
 //            ["u32", "context"],
 //            ["u8", "role"],
-//            ["u64", "key"],
+//            ["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" : "0x23fe3309"}
+//            {"crc" : "0xc809c235"}
 //        ],
 //
 type MemifCreate struct {
        Role           uint8
-       Key            uint64
+       Mode           uint8
+       RxQueues       uint8
+       TxQueues       uint8
+       ID             uint32
        SocketFilename []byte `struc:"[128]byte"`
+       Secret         []byte `struc:"[24]byte"`
        RingSize       uint32
        BufferSize     uint16
        HwAddr         []byte `struc:"[6]byte"`
@@ -39,14 +47,14 @@ func (*MemifCreate) GetMessageType() api.MessageType {
        return api.RequestMessage
 }
 func (*MemifCreate) GetCrcString() string {
-       return "23fe3309"
+       return "c809c235"
 }
 func NewMemifCreate() api.Message {
        return &MemifCreate{}
 }
 
 // MemifCreateReply represents the VPP binary API message 'memif_create_reply'.
-// Generated from 'bin_api/memif.api.json', line 18:
+// Generated from 'bin_api/memif.api.json', line 22:
 //
 //        ["memif_create_reply",
 //            ["u16", "_vl_msg_id"],
@@ -75,7 +83,7 @@ func NewMemifCreateReply() api.Message {
 }
 
 // MemifDelete represents the VPP binary API message 'memif_delete'.
-// Generated from 'bin_api/memif.api.json', line 25:
+// Generated from 'bin_api/memif.api.json', line 29:
 //
 //        ["memif_delete",
 //            ["u16", "_vl_msg_id"],
@@ -103,7 +111,7 @@ func NewMemifDelete() api.Message {
 }
 
 // MemifDeleteReply represents the VPP binary API message 'memif_delete_reply'.
-// Generated from 'bin_api/memif.api.json', line 32:
+// Generated from 'bin_api/memif.api.json', line 36:
 //
 //        ["memif_delete_reply",
 //            ["u16", "_vl_msg_id"],
@@ -130,7 +138,7 @@ func NewMemifDeleteReply() api.Message {
 }
 
 // MemifDetails represents the VPP binary API message 'memif_details'.
-// Generated from 'bin_api/memif.api.json', line 38:
+// Generated from 'bin_api/memif.api.json', line 42:
 //
 //        ["memif_details",
 //            ["u16", "_vl_msg_id"],
@@ -138,22 +146,24 @@ func NewMemifDeleteReply() api.Message {
 //            ["u32", "sw_if_index"],
 //            ["u8", "if_name", 64],
 //            ["u8", "hw_addr", 6],
-//            ["u64", "key"],
+//            ["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" : "0xcf105583"}
+//            {"crc" : "0x4d74fd96"}
 //        ],
 //
 type MemifDetails struct {
        SwIfIndex      uint32
        IfName         []byte `struc:"[64]byte"`
        HwAddr         []byte `struc:"[6]byte"`
-       Key            uint64
+       ID             uint32
        Role           uint8
+       Mode           uint8
        SocketFilename []byte `struc:"[128]byte"`
        RingSize       uint32
        BufferSize     uint16
@@ -168,14 +178,14 @@ func (*MemifDetails) GetMessageType() api.MessageType {
        return api.ReplyMessage
 }
 func (*MemifDetails) GetCrcString() string {
-       return "cf105583"
+       return "4d74fd96"
 }
 func NewMemifDetails() api.Message {
        return &MemifDetails{}
 }
 
 // MemifDump represents the VPP binary API message 'memif_dump'.
-// Generated from 'bin_api/memif.api.json', line 53:
+// Generated from 'bin_api/memif.api.json', line 58:
 //
 //        ["memif_dump",
 //            ["u16", "_vl_msg_id"],
index 7143010..43432c9 100644 (file)
@@ -74,5 +74,5 @@
             {"crc" : "0x0df07bc3"}
         ]
     ],
-"vl_api_version" :"0x1aedb9f2"
+"vl_api_version" :"0x4eaa2b5a"
 }
index a3d6df7..451bce2 100644 (file)
@@ -1,11 +1,11 @@
 // Package tap represents the VPP binary API of the 'tap' VPP module.
-// DO NOT EDIT. Generated from 'bin_api/tap.api.json' on Thu, 04 May 2017 13:11:57 CEST.
+// DO NOT EDIT. Generated from 'bin_api/tap.api.json'
 package tap
 
 import "git.fd.io/govpp.git/api"
 
 // VlApiVersion contains version of the API.
-const VlAPIVersion = 0x1aedb9f2
+const VlAPIVersion = 0x4eaa2b5a
 
 // TapConnect represents the VPP binary API message 'tap_connect'.
 // Generated from 'bin_api/tap.api.json', line 6:
index fc40b24..ac2176d 100644 (file)
@@ -26,7 +26,6 @@ import (
 
        "git.fd.io/govpp.git"
        "git.fd.io/govpp.git/api"
-       "git.fd.io/govpp.git/api/ifcounters"
        "git.fd.io/govpp.git/core"
        "git.fd.io/govpp.git/core/bin_api/vpe"
        "git.fd.io/govpp.git/examples/bin_api/interfaces"
@@ -55,7 +54,8 @@ func main() {
        sigChan := make(chan os.Signal, 1)
        signal.Notify(sigChan, os.Interrupt)
 
-       var subs *api.NotifSubscription
+       var simpleCountersSubs *api.NotifSubscription
+       var combinedCountersSubs *api.NotifSubscription
        var notifChan chan api.Message
 
        // loop until Interrupt signal is received
@@ -68,8 +68,8 @@ loop:
                        switch connEvent.State {
                        case core.Connected:
                                fmt.Println("VPP connected.")
-                               if subs == nil {
-                                       subs, notifChan = subscribeNotification(ch)
+                               if simpleCountersSubs == nil {
+                                       simpleCountersSubs, combinedCountersSubs, notifChan = subscribeNotifications(ch)
                                }
                                requestStatistics(ch)
 
@@ -77,9 +77,17 @@ loop:
                                fmt.Println("VPP disconnected.")
                        }
 
-               case notifMsg := <-notifChan:
-                       // counter notification received
-                       processCounters(notifMsg.(*interfaces.VnetInterfaceCounters))
+               case msg := <-notifChan:
+                       switch notif := msg.(type) {
+                       case *interfaces.VnetInterfaceSimpleCounters:
+                               // simple counter notification received
+                               processSimpleCounters(notif)
+                       case *interfaces.VnetInterfaceCombinedCounters:
+                               // combined counter notification received
+                               processCombinedCounters(notif)
+                       default:
+                               fmt.Println("Ignoring unknown VPP notification")
+                       }
 
                case <-sigChan:
                        // interrupt received
@@ -88,16 +96,18 @@ loop:
                }
        }
 
-       ch.UnsubscribeNotification(subs)
+       ch.UnsubscribeNotification(simpleCountersSubs)
+       ch.UnsubscribeNotification(combinedCountersSubs)
 }
 
-// subscribeNotification subscribes for interface counters notifications.
-func subscribeNotification(ch *api.Channel) (*api.NotifSubscription, chan api.Message) {
+// subscribeNotifications subscribes for interface counters notifications.
+func subscribeNotifications(ch *api.Channel) (*api.NotifSubscription, *api.NotifSubscription, chan api.Message) {
 
        notifChan := make(chan api.Message, 100)
-       subs, _ := ch.SubscribeNotification(notifChan, interfaces.NewVnetInterfaceCounters)
+       simpleCountersSubs, _ := ch.SubscribeNotification(notifChan, interfaces.NewVnetInterfaceSimpleCounters)
+       combinedCountersSubs, _ := ch.SubscribeNotification(notifChan, interfaces.NewVnetInterfaceCombinedCounters)
 
-       return subs, notifChan
+       return simpleCountersSubs, combinedCountersSubs, notifChan
 }
 
 // requestStatistics requests interface counters notifications from VPP.
@@ -108,25 +118,27 @@ func requestStatistics(ch *api.Channel) {
        }).ReceiveReply(&vpe.WantStatsReply{})
 }
 
-// processCounters processes a counter message received from VPP.
-func processCounters(msg *interfaces.VnetInterfaceCounters) {
-       fmt.Printf("%+v\n", msg)
-
-       if msg.IsCombined == 0 {
-               // simple counter
-               counters, err := ifcounters.DecodeCounters(ifcounters.VnetInterfaceCounters(*msg))
-               if err != nil {
-                       fmt.Println("Error:", err)
-               } else {
-                       fmt.Printf("%+v\n", counters)
-               }
-       } else {
-               // combined counter
-               counters, err := ifcounters.DecodeCombinedCounters(ifcounters.VnetInterfaceCounters(*msg))
-               if err != nil {
-                       fmt.Println("Error:", err)
-               } else {
-                       fmt.Printf("%+v\n", counters)
-               }
+// processSimpleCounters processes simple counters received from VPP.
+func processSimpleCounters(counters *interfaces.VnetInterfaceSimpleCounters) {
+       fmt.Printf("%+v\n", counters)
+
+       counterNames := []string{"Drop", "Punt", "IPv4", "IPv6", "RxNoBuf", "RxMiss", "RxError", "TxError", "MPLS"}
+
+       for i := uint32(0); i < counters.Count; i++ {
+               fmt.Printf("Interface '%d': %s = %d\n",
+                       counters.FirstSwIfIndex+i, counterNames[counters.VnetCounterType], counters.Data[i])
+       }
+}
+
+// processCombinedCounters processes combined counters received from VPP.
+func processCombinedCounters(counters *interfaces.VnetInterfaceCombinedCounters) {
+       fmt.Printf("%+v\n", counters)
+
+       counterNames := []string{"Rx", "Tx"}
+
+       for i := uint32(0); i < counters.Count; i++ {
+               fmt.Printf("Interface '%d': %s packets = %d, %s bytes = %d\n",
+                       counters.FirstSwIfIndex+i, counterNames[counters.VnetCounterType], counters.Data[i].Packets,
+                       counterNames[counters.VnetCounterType], counters.Data[i].Bytes)
        }
 }