Files
vpp/src/plugins/dns/dns.api
Ole Troan df87f8092f api: vat2 and json autogeneration for api messages
VAT2: A completely auto-generated replacement of VAT.
Reads input message in JSON from stdin and outputs received messages in JSON.

A VAT2 plugin is automatically built for a .api file.
There no longer a need for a separate _test.c.

Example:
vat2 show_version {}
{
        "_msgname":     "show_version_reply",
        "retval":       0,
        "program":      "vpe",
        "version":      "21.01-rc0~411-gf6eb348a6",
        "build_date":   "2020-11-19T09:49:25",
        "build_directory":      "/vpp/autogen3"
}

vat2 sw_interface_dump '{"sw_if_index": -1,
                         "name_filter_valid": 0,
                         "name_filter": ""}'
[{
                "_msgname":     "sw_interface_details",
                "sw_if_index":  0,
                "sup_sw_if_index":      0,
                "l2_address":   "00:00:00:00:00:00",
                "flags":        "Invalid ENUM",
                "type": "IF_API_TYPE_HARDWARE",
                "link_duplex":  "LINK_DUPLEX_API_UNKNOWN",
                "link_speed":   0,
                "link_mtu":     0,
                "mtu":  [0, 0, 0, 0],
                "sub_id":       0,
                "sub_number_of_tags":   0,
                "sub_outer_vlan_id":    0,
                "sub_inner_vlan_id":    0,
                "sub_if_flags": "Invalid ENUM",
                "vtr_op":       0,
                "vtr_push_dot1q":       0,
                "vtr_tag1":     0,
                "vtr_tag2":     0,
                "outer_tag":    0,
                "b_dmac":       "00:00:00:00:00:00",
                "b_smac":       "00:00:00:00:00:00",
                "b_vlanid":     0,
                "i_sid":        0,
                "interface_name":       "local0",
                "interface_dev_type":   "local",
                "tag":  ""
        }]

This is the first phase and vat2 is not integrated in packaging yet.

Type: feature
Signed-off-by: Ole Troan <ot@cisco.com>
Change-Id: Ib45ddeafb180ea7da8c5dc274a9274d7a4edc876
Signed-off-by: Ole Troan <ot@cisco.com>
2020-11-25 08:25:50 +00:00

107 lines
3.1 KiB
Plaintext

/*
* 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.
*/
option version = "1.0.0";
/** \brief enable/disable name resolution
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_enable - 1 = enable, 0 = disable
*/
autoreply define dns_enable_disable {
u32 client_index;
u32 context;
u8 enable;
option vat_help = "[enable][disable]";
};
/** \brief add or delete an upstream name server
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ip6 - an ip6 name server
@param is_add - add = 1, delete = 0
@param server_address - server ip address
*/
autoreply define dns_name_server_add_del {
u32 client_index;
u32 context;
u8 is_ip6;
u8 is_add;
u8 server_address[16];
option vat_help = "<ip-address> [del]";
};
/** \brief DNS name resolution request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param name - the name to resolve
*/
define dns_resolve_name {
u32 client_index;
u32 context;
u8 name[256];
option vat_help = "<hostname>";
};
/** \brief DNS name resolution reply
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param retval - return value, 0 => success
@param ip4_set - indicates that the ip4 address is valid
@param ip6_set - indicates that the ip6 address is valid
@param ip4_address - the ip4 name resolution reply
@param ip6_address - the ip6 name resolution reply
*/
define dns_resolve_name_reply {
u32 context;
i32 retval;
u8 ip4_set;
u8 ip6_set;
u8 ip4_address[4];
u8 ip6_address[16];
};
/** \brief DNS IP -> name resolution request
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param is_ip6 - set if the reverse-DNS request is an ip6 address
@param address - the address to map to a name
*/
define dns_resolve_ip {
u32 client_index;
u32 context;
u8 is_ip6;
u8 address[16];
option vat_help = "<ip4|ip6>";
};
/** \brief DNS ip->name resolution reply
@param client_index - opaque cookie to identify the sender
@param context - sender context, to match reply w/ request
@param retval - return value, 0 => success
@param name - canonical name for the indicated IP address
*/
define dns_resolve_ip_reply {
u32 context;
i32 retval;
u8 name[256];
};