/* * Copyright (c) 2017-2019 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 = "5.1.0"; import "vnet/ip/ip_types.api"; enum hicn_face_type { IP_FACE = 0, UDP_FACE, }; typedef hicn_face_ip { /* IP local address */ vl_api_address_t local_addr; /* IP remote address */ vl_api_address_t remote_addr; /* IPv4 local port number */ u32 swif; /* Face flags */ u32 flags; /* Name of the interface */ u8 if_name[30]; }; typedef hicn_face_udp { /* IP local address */ vl_api_address_t local_addr; /* IP remote address */ vl_api_address_t remote_addr; /* Local port */ u16 lport; /* Remote port */ u16 rport; /* IPv4 local port number */ u32 swif; /* Face flags */ u32 flags; /* Name of the interface */ u8 if_name[30]; }; typedef hicn_face_union { vl_api_hicn_face_ip_t ip; vl_api_hicn_face_udp_t udp; }; define hicn_api_node_params_set { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Enable / disable ICN forwarder in VPP */ u8 enable_disable; /* PIT maximum size, otherwise -1 to assign default value */ i32 pit_max_size; /* CS maximum size, otherwise -1 to assign default value */ i32 cs_max_size; /* Portion of CS reserved to application, otherwise -1 to assign default value */ i32 cs_reserved_app; /* Upper bound on PIT entry lifetime, otherwise -1 to assign default value */ f64 pit_max_lifetime_sec; }; define hicn_api_node_params_set_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_node_params_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_node_params_get_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Enabled / disabled flag */ u8 is_enabled; /* compile-time plugin features */ u8 feature_cs; /* Number of VPP workers */ u32 worker_count; /* PIT maximum size, otherwise -1 to assign default value */ u32 pit_max_size; /* CS maximum size, otherwise -1 to assign default value */ u32 cs_max_size; /* Upper bound on PIT entry lifetime */ f64 pit_max_lifetime_sec; }; define hicn_api_node_stats_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_node_stats_get_reply { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* ICN packets processed */ u64 pkts_processed; /* ICN interests forwarded */ u64 pkts_interest_count; /* ICN data msgs forwarded */ u64 pkts_data_count; /* ICN cached data msg replies */ u64 pkts_from_cache_count; /* ICN no PIT entry drops */ u64 pkts_no_pit_count; /* ICN expired PIT entries */ u64 pit_expired_count; /* ICN expired CS entries */ u64 cs_expired_count; /* ICN LRU CS entries freed */ u64 cs_lru_count; /* ICN msgs dropped due to no packet buffers */ u64 pkts_drop_no_buf; /* ICN Interest messages aggregated in PIT */ u64 interests_aggregated; /* ICN Interest messages retransmitted */ u64 interests_retx; /* ICN Interest messages colliding in hashtb */ u64 interests_hash_collision; /* Number of entries in PIT at the present moment */ u64 pit_entries_count; /* Number of entries in CS at the present moment */ u64 cs_entries_count; /* Number of entries in CS at the present moment */ u64 cs_entries_ntw_count; }; define hicn_api_face_ip_add { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* IP local address */ vl_api_hicn_face_ip_t face; }; define hicn_api_face_ip_add_reply { /* From the request */ u32 context; /* Return value: new Face ID, ~0 means no Face was created */ u32 faceid; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_face_ip_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face ID to be deleted */ u32 faceid; }; define hicn_api_face_ip_del_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_face_stats_details { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Id of the face */ u32 faceid; /* Interest rx */ u64 irx_packets; u64 irx_bytes; /* Interest tx */ u64 itx_packets; u64 itx_bytes; /* data rx */ u64 drx_packets; u64 drx_bytes; /* data tx */ u64 dtx_packets; u64 dtx_bytes; }; define hicn_api_face_stats_dump { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_face_ip_params_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face to be retrieved */ u32 faceid; }; define hicn_api_face_ip_params_get_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* The face required */ u32 faceid; /* IP local address */ vl_api_address_t local_addr; /* IP remote address */ vl_api_address_t remote_addr; /* VPP interface (index) associated with the face */ u32 swif; /* Face flags */ u32 flags; }; define hicn_api_face_add { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Type of face to add */ vl_api_hicn_face_type_t type; /* Face to add */ vl_api_hicn_face_union_t face; }; define hicn_api_face_add_reply { /* From the request */ u32 context; /* Return value: new Face ID, ~0 means no Face was created */ u32 faceid; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_face_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face ID to be deleted */ u32 faceid; }; define hicn_api_face_del_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_faces_details { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Id of the face */ u32 faceid; /* Type of face to add */ vl_api_hicn_face_type_t type; /* Face to add */ vl_api_hicn_face_union_t face; }; define hicn_api_faces_dump { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_face_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face to be retrieved */ u32 faceid; }; define hicn_api_face_get_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Id of the face */ u32 faceid; /* Type of face to add */ vl_api_hicn_face_type_t type; /* Face to add */ vl_api_hicn_face_union_t face; }; define hicn_api_route_nhops_add { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Prefix to be added to the FIB */ vl_api_prefix_t prefix; /* A Face ID to the next hop forwarder for the specified prefix */ u32 face_ids[5]; /* Number of face to add */ u8 n_faces; }; define hicn_api_route_nhops_add_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_route_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Prefix to be added to the FIB */ vl_api_prefix_t prefix; }; define hicn_api_route_del_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_route_nhop_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Prefix to be added to the FIB */ vl_api_prefix_t prefix; /* Specific next-hop to be removed */ u32 faceid; }; define hicn_api_route_nhop_del_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_route_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Route prefix */ vl_api_prefix_t prefix; }; define hicn_api_route_get_reply { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* List of faces pointing to the next hops */ u32 faceids[5]; /* Number of valid faceids */ u8 nfaces; /* Strategy */ u32 strategy_id; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_routes_details { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Route prefix */ vl_api_prefix_t prefix; /* List of faces pointing to the next hops */ u32 faceids[5]; /* Number of valid faceids */ u8 nfaces; /* Strategy */ u32 strategy_id; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_routes_dump { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_strategies_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; }; define hicn_api_strategies_get_reply { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Number of available strategies */ u8 n_strategies; /* Strategies */ u32 strategy_id[256]; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_strategy_get { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Route prefix */ u32 strategy_id; }; define hicn_api_strategy_get_reply { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Strategy description */ u8 description[200]; /* Return value, zero means all OK */ i32 retval; }; define hicn_api_register_prod_app { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* Prefix to match */ vl_api_prefix_t prefix; /* sw_if id */ u32 swif; /* CS memory reserved -- in number of packets */ u32 cs_reserved; }; define hicn_api_register_prod_app_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Actual CS memory reserved -- in number of packets */ u32 cs_reserved; /* Prod address (ipv4 or ipv6) */ vl_api_address_t prod_addr; /* Return value: new Face ID, ~0 means no Face was created */ u32 faceid; }; autoreply define hicn_api_face_prod_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face ID to be deleted */ u32 faceid; }; define hicn_api_register_cons_app { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* swif */ u32 swif; }; define hicn_api_register_cons_app_reply { /* From the request */ u32 context; /* Return value, zero means all OK */ i32 retval; /* Ip4 address */ vl_api_address_t src_addr4; /* Ip6 address */ vl_api_address_t src_addr6; /* Return value: new Face ID, ~0 means no Face was created */ u32 faceid1; /* Return value: new Face ID, ~0 means no Face was created */ u32 faceid2; }; autoreply define hicn_api_face_cons_del { /* Client identifier, set from api_main.my_client_index */ u32 client_index; /* Arbitrary context, so client can match reply to request */ u32 context; /* A Face ID to be deleted */ u32 faceid; }; /* * fd.io coding-style-patch-verification: ON * * Local Variables: * eval: (c-set-style "gnu") * End: */