X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fmpls%2Fmpls.api;h=9d4ec0bf7bfc5c8a47582b696717b4d33d91b76e;hb=df87f8092;hp=6ed462cf8d38f274ba8d0c2a962f5ea6aeffba84;hpb=c42fc05bfbb26fd11fe92ac9d11587660a817ac1;p=vpp.git diff --git a/src/vnet/mpls/mpls.api b/src/vnet/mpls/mpls.api index 6ed462cf8d3..9d4ec0bf7bf 100644 --- a/src/vnet/mpls/mpls.api +++ b/src/vnet/mpls/mpls.api @@ -13,7 +13,10 @@ * limitations under the License. */ -vl_api_version 1.0.1 +option version = "1.1.1"; +import "vnet/fib/fib_types.api"; +import "vnet/ip/ip_types.api"; +import "vnet/interface_types.api"; /** \brief Bind/Unbind an MPLS local label to an IP prefix. i.e. create a per-prefix label entry. @@ -24,8 +27,7 @@ vl_api_version 1.0.1 @param mb_ip_table_id - The IP table-id of the IP prefix to bind to. @param mb_is_bind - Bind or unbind @param mb_is_ip4 - The prefix to bind to is IPv4 - @param mb_address_length - Length of IP prefix - @param mb_address[16] - IP prefix/ + @param mb_prefix - IP prefix */ autoreply define mpls_ip_bind_unbind { @@ -34,43 +36,27 @@ autoreply define mpls_ip_bind_unbind u32 mb_mpls_table_id; u32 mb_label; u32 mb_ip_table_id; - u8 mb_is_bind; - u8 mb_is_ip4; - u8 mb_address_length; - u8 mb_address[16]; + bool mb_is_bind; + vl_api_prefix_t mb_prefix; +}; + +typedef mpls_tunnel +{ + vl_api_interface_index_t mt_sw_if_index; + u32 mt_tunnel_index; + bool mt_l2_only; + bool mt_is_multicast; + string mt_tag[64]; + u8 mt_n_paths; + vl_api_fib_path_t mt_paths[mt_n_paths]; }; -/** \brief MPLS tunnel Add / del route - @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request - @param mt_is_add - Is this a route add or delete - @param mt_sw_if_index - The SW interface index of the tunnel to delete - @param mt_is_multicast - Is the tunnel's underlying LSP multicast - @param mt_next_hop_proto_is_ip4 - The next-hop is IPV4 - @param mt_next_hop_weight - The weight, for UCMP - @param mt_next_hop_preference - The preference - @param mt_next_hop[16] - the nextop address - @param mt_next_hop_sw_if_index - the next-hop SW interface - @param mt_next_hop_table_id - the next-hop table-id (if appropriate) - @param mt_next_hop_n_out_labels - the number of next-hop output labels - @param mt_next_hop_out_label_stack - the next-hop output label stack, outer most first -*/ define mpls_tunnel_add_del { u32 client_index; u32 context; - u32 mt_sw_if_index; - u8 mt_is_add; - u8 mt_l2_only; - u8 mt_is_multicast; - u8 mt_next_hop_proto_is_ip4; - u8 mt_next_hop_weight; - u8 mt_next_hop_preference; - u8 mt_next_hop[16]; - u8 mt_next_hop_n_out_labels; - u32 mt_next_hop_sw_if_index; - u32 mt_next_hop_table_id; - u32 mt_next_hop_out_label_stack[mt_next_hop_n_out_labels]; + bool mt_is_add [default=true]; + vl_api_mpls_tunnel_t mt_tunnel; }; /** \brief Reply for MPLS tunnel add / del request @@ -82,59 +68,28 @@ define mpls_tunnel_add_del_reply { u32 context; i32 retval; - u32 sw_if_index; + vl_api_interface_index_t sw_if_index; + u32 tunnel_index; }; /** \brief Dump mpls eth tunnel table @param client_index - opaque cookie to identify the sender - @param tunnel_index - eth tunnel identifier or -1 in case of all tunnels + @param sw_if_index - sw_if_index of the MPLS tunnel + (as returned from the create) */ define mpls_tunnel_dump { u32 client_index; u32 context; - i32 tunnel_index; -}; - -/** \brief FIB path - @param sw_if_index - index of the interface - @param weight - The weight, for UCMP - @param is_local - local if non-zero, else remote - @param is_drop - Drop the packet - @param is_unreach - Drop the packet and rate limit send ICMP unreachable - @param is_prohibit - Drop the packet and rate limit send ICMP prohibited - @param afi - the afi of the next hop, IP46_TYPE_IP4=1, IP46_TYPE_IP6=2 - @param next_hop[16] - the next hop address - - WARNING: this type is replicated, pending cleanup completion - -*/ -typeonly manual_print manual_endian define fib_path2 -{ - u32 sw_if_index; - u32 table_id; - u8 weight; - u8 preference; - u8 is_local; - u8 is_drop; - u8 is_unreach; - u8 is_prohibit; - u8 afi; - u8 next_hop[16]; - u32 labels[16]; + vl_api_interface_index_t sw_if_index [default=0xffffffff]; }; /** \brief mpls tunnel details */ -manual_endian manual_print define mpls_tunnel_details +define mpls_tunnel_details { u32 context; - u8 mt_sw_if_index; - u8 mt_tunnel_index; - u8 mt_l2_only; - u8 mt_is_multicast; - u32 mt_count; - vl_api_fib_path2_t mt_paths[mt_count]; + vl_api_mpls_tunnel_t mt_tunnel; }; /** \brief MPLS Route Add / del route @@ -144,79 +99,90 @@ manual_endian manual_print define mpls_tunnel_details @param mt_is_add - Is this a route add or delete @param mt_name - A client provided name/tag for the table. If this is not set by the client, then VPP will generate - something meaningfull. + something meaningful. */ +typedef mpls_table +{ + u32 mt_table_id; + string mt_name[64]; +}; autoreply define mpls_table_add_del { u32 client_index; u32 context; - u32 mt_table_id; - u8 mt_is_add; - u8 mt_name[64]; + bool mt_is_add [default=true]; + vl_api_mpls_table_t mt_table; }; -/** \brief MPLS Route Add / del route +/** \brief Dump MPLS fib table @param client_index - opaque cookie to identify the sender - @param context - sender context, to match reply w/ request +*/ +define mpls_table_dump +{ + u32 client_index; + u32 context; +}; + +define mpls_table_details +{ + u32 context; + vl_api_mpls_table_t mt_table; +}; + +/** \brief MPLS Route + @param mr_table_id - The MPLS table-id the route is added in @param mr_label - The MPLS label value @param mr_eos - The End of stack bit + @param mr_eos_proto - If EOS then this is the DPO packet's proto post pop + @param mr_is_multicast - Is this a multicast route + @param mr_n_paths - The number of paths + @param mr_paths - The paths +*/ +typedef mpls_route +{ + u32 mr_table_id; + u32 mr_label; + /* TODO: check data type */ + u8 mr_eos; + u8 mr_eos_proto; + bool mr_is_multicast; + u8 mr_n_paths; + vl_api_fib_path_t mr_paths[mr_n_paths]; +}; + +/** \brief MPLS Route Add / del route + @param client_index - opaque cookie to identify the sender + @param context - sender context, to match reply w/ request @param mr_table_id - The MPLS table-id the route is added in - @param mr_classify_table_index - If this is a classify route, - this is the classify table index - create them @param mr_is_add - Is this a route add or delete - @param mr_is_classify - Is this route result a classify - @param mr_is_multicast - Is this a multicast route @param mr_is_multipath - Is this route update a multipath - i.e. is this a path addition to an existing route - @param mr_is_resolve_host - Recurse resolution constraint via a host prefix - @param mr_is_resolve_attached - Recurse resolution constraint via attached prefix - @param mr_is_interface_rx - Interface Receive path - @param mr_is_interface_rx - RPF-ID Receive path. The next-hop interface - is used as the RPF-ID - @param mr_next_hop_proto - The next-hop protocol, of type dpo_proto_t - @param mr_next_hop_weight - The weight, for UCMP - @param mr_next_hop[16] - the nextop address - @param mr_next_hop_sw_if_index - the next-hop SW interface - @param mr_next_hop_table_id - the next-hop table-id (if appropriate) - @param mr_next_hop_n_out_labels - the number of labels in the label stack - @param mr_next_hop_out_label_stack - the next-hop output label stack, outer most first - @param next_hop_via_label - The next-hop is a resolved via a local label + @param mr_route - The Route */ -autoreply define mpls_route_add_del +define mpls_route_add_del { u32 client_index; u32 context; - u32 mr_label; - u8 mr_eos; - u32 mr_table_id; - u32 mr_classify_table_index; - u8 mr_is_add; - u8 mr_is_classify; - u8 mr_is_multicast; - u8 mr_is_multipath; - u8 mr_is_resolve_host; - u8 mr_is_resolve_attached; - u8 mr_is_interface_rx; - u8 mr_is_rpf_id; - u8 mr_next_hop_proto; - u8 mr_next_hop_weight; - u8 mr_next_hop_preference; - u8 mr_next_hop[16]; - u8 mr_next_hop_n_out_labels; - u32 mr_next_hop_sw_if_index; - u32 mr_next_hop_table_id; - u32 mr_next_hop_via_label; - u32 mr_next_hop_out_label_stack[mr_next_hop_n_out_labels]; + bool mr_is_add; + bool mr_is_multipath; + vl_api_mpls_route_t mr_route; +}; + +define mpls_route_add_del_reply +{ + u32 context; + i32 retval; + u32 stats_index; }; /** \brief Dump MPLS fib table @param client_index - opaque cookie to identify the sender */ -define mpls_fib_dump +define mpls_route_dump { u32 client_index; u32 context; + vl_api_mpls_table_t table; }; /** \brief mpls FIB table response @@ -226,15 +192,10 @@ define mpls_fib_dump @param count - the number of fib_path in path @param path - array of of fib_path structures */ -manual_endian manual_print define mpls_fib_details +define mpls_route_details { u32 context; - u32 table_id; - u8 table_name[64]; - u8 eos_bit; - u32 label; - u32 count; - vl_api_fib_path2_t path[count]; + vl_api_mpls_route_t mr_route; }; /** \brief Enable or Disable MPLS on and interface @@ -247,8 +208,8 @@ autoreply define sw_interface_set_mpls_enable { u32 client_index; u32 context; - u32 sw_if_index; - u8 enable; + vl_api_interface_index_t sw_if_index; + bool enable [default=true]; }; /* @@ -256,4 +217,3 @@ autoreply define sw_interface_set_mpls_enable * eval: (c-set-style "gnu") * End: */ -