| --[[ |
| /* |
| * Copyright (c) 2016 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. |
| */ |
| ]] |
| |
| |
| vpp = require "vpp-lapi" |
| |
| root_dir = "/home/ubuntu/vpp" |
| pneum_path = root_dir .. "/build-root/install-vpp_debug-native/vpp-api/lib64/libpneum.so" |
| |
| vpp:init({ pneum_path = pneum_path }) |
| |
| vpp:consume_api(root_dir .. "/build-root/install-vpp_debug-native/vlib-api/vlibmemory/memclnt.api") |
| vpp:consume_api(root_dir .. "/build-root/install-vpp_debug-native/vpp/vpp-api/vpe.api") |
| vpp:connect("aytest") |
| vpp:consume_api(root_dir .. "/plugins/acl-plugin/acl/acl.api", "acl") |
| |
| -- api calls |
| reply = vpp:api_call("show_version") |
| print("Version: ", reply[1].version) |
| print(vpp.hex_dump(reply[1].version)) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = 230 }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = 8 }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = 15 }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_add", { context = 42, count = 2, r = { { is_permit = 1, is_ipv6 = 1 }, { is_permit = 0, is_ipv6 = 1 } } }) |
| print(vpp.dump(reply)) |
| print("---") |
| interface_acl_in = reply[1].acl_index |
| |
| reply = vpp:api_call("acl_add", { context = 42, count = 3, r = { { is_permit = 1, is_ipv6 = 1 }, { is_permit = 0, is_ipv6 = 1 }, { is_permit = 1, is_ipv6 = 0 } } }) |
| print(vpp.dump(reply)) |
| print("---") |
| interface_acl_out = reply[1].acl_index |
| |
| |
| reply = vpp:api_call("acl_interface_add_del", { context = 42, sw_if_index = 0, is_add = 1, is_input = 1, acl_index = interface_acl_in }) |
| print(vpp.dump(reply)) |
| print("---") |
| reply = vpp:api_call("acl_interface_add_del", { context = 42, sw_if_index = 0, is_add = 1, is_input = 1, acl_index = interface_acl_in }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_interface_add_del", { context = 42, sw_if_index = 0, is_add = 1, is_input = 0, acl_index = interface_acl_out }) |
| print(vpp.dump(reply)) |
| print("---") |
| reply = vpp:api_call("acl_interface_add_del", { context = 42, sw_if_index = 0, is_add = 1, is_input = 0, acl_index = interface_acl_out }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_add", { context = 42, count = 0 }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| acl_index_to_delete = reply[1].acl_index |
| print("Deleting " .. tostring(acl_index_to_delete)) |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = acl_index_to_delete }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_dump", { context = 42, sw_if_index = 0}) |
| for ri, rv in ipairs(reply) do |
| print("Reply message #" .. tostring(ri)) |
| print(vpp.dump(rv)) |
| for ai, av in ipairs(rv.r) do |
| print("ACL rule #" .. tostring(ai) .. " : " .. vpp.dump(av)) |
| end |
| |
| end |
| print("---") |
| |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = interface_acl_out }) |
| print(vpp.dump(reply)) |
| print("---") |
| reply = vpp:api_call("acl_del", { context = 42, acl_index = interface_acl_in }) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| reply = vpp:api_call("acl_dump", { context = 42, sw_if_index = 0}) |
| print(vpp.dump(reply)) |
| print("---") |
| |
| |
| vpp:disconnect() |
| |
| |