1 /* Hey Emacs use -*- mode: C -*- */
3 * Copyright (c) 2018 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 This file defines vpp IP control-plane API messages which are generally
20 called through a shared memory interface.
23 option version = "3.2.0";
25 import "vnet/interface_types.api";
26 import "vnet/fib/fib_types.api";
27 import "vnet/ethernet/ethernet_types.api";
28 import "vnet/mfib/mfib_types.api";
29 import "vnet/interface_types.api";
31 /** \brief An IP table
32 @param is_ipv6 - V4 or V6 table
33 @param table_id - table ID associated with the route
34 This table ID will apply to both the unicast
36 @param name - A client provided name/tag for the table. If this is
37 not set by the client, then VPP will generate something
47 /** \brief Add / del table request
48 A table can be added multiple times, but need be deleted only once.
49 @param client_index - opaque cookie to identify the sender
50 @param context - sender context, to match reply w/ request
52 autoreply define ip_table_add_del
56 bool is_add [default=true];
57 vl_api_ip_table_t table;
60 /** \brief Allocate an unused table
61 A table can be added multiple times.
62 If a large number of tables are in use (millions), this API might
63 fail to find a free ID with very low probability, and will return
64 EAGAIN. A subsequent attempt may be successful.
65 @param client_index - opaque cookie to identify the sender
66 @param context - sender context, to match reply w/ request
67 @param table - if table.table_id == ~0, vpp allocates an unused table_id and
68 proceeds as in ip_table_add_del with is_add = true
69 if table.table_id != ~0, vpp uses the table.table_id and
70 proceeds as in ip_table_add_del with is_add = true
71 table.table_id should never be 0
73 define ip_table_allocate
78 vl_api_ip_table_t table;
81 define ip_table_allocate_reply
86 vl_api_ip_table_t table;
89 /** \brief Dump IP all fib tables
90 @param client_index - opaque cookie to identify the sender
91 @param context - sender context, to match reply w/ request
99 /** \brief IP table replace being
101 The use-case is that, for some unspecified reason, the control plane
102 has a very different set of entries it wants in the table than VPP
103 currently has. The CP would thus like to 'replace' VPP's current table
104 only by specifying what the new set of entries shall be, i.e. it is not
105 going to delete anything that already exists.
106 the CP declares the start of this procedure with this begin_replace
107 API Call, and when it has populated all the entries it wants, it calls
108 the below end_replace API. From this point on it is of course free
109 to add and delete entries as usual.
110 The underlying mechanism by which VPP implements this replace is
111 purposefully left unspecified.
113 @param client_index - opaque cookie to identify the sender
114 @param context - sender context, to match reply w/ request
115 @param table - The table to resync
117 autoreply define ip_table_replace_begin
121 vl_api_ip_table_t table;
124 /** \brief IP table replace end
128 @param client_index - opaque cookie to identify the sender
129 @param context - sender context, to match reply w/ request
130 @param table - The table that has converged
132 autoreply define ip_table_replace_end
136 vl_api_ip_table_t table;
139 /** \brief IP table flush
140 Flush a table of all routes
141 @param client_index - opaque cookie to identify the sender
142 @param context - sender context, to match reply w/ request
143 @param table - The table to flush
145 autoreply define ip_table_flush
149 vl_api_ip_table_t table;
152 /** \brief IP FIB table response
153 @param context - sender context
154 @param table - description of the table
156 define ip_table_details
159 vl_api_ip_table_t table;
162 /** \brief An IP route
163 @param table_id The IP table the route is in
164 @param stats_index The index of the route in the stats segment
165 @param prefix the prefix for the route
166 @param n_paths The number of paths the route has
167 @param src The entity adding the route. either 0 for default
168 or a value returned from fib_source_sdd.
169 @param paths The paths of the route
175 vl_api_prefix_t prefix;
177 vl_api_fib_path_t paths[n_paths];
183 vl_api_prefix_t prefix;
186 vl_api_fib_path_t paths[n_paths];
189 /** \brief Add / del route request
190 @param client_index - opaque cookie to identify the sender
191 @param context - sender context, to match reply w/ request
192 @param is_multipath - Set to 1 if these paths will be added/removed
193 to/from the existing set, or 0 to replace
195 is_add=0 & is_multipath=0 implies delete all paths
196 @param is_add - Are the paths being added or removed
198 define ip_route_add_del
202 bool is_add [default=true];
204 vl_api_ip_route_t route;
206 define ip_route_add_del_v2
211 bool is_add [default=true];
213 vl_api_ip_route_v2_t route;
215 define ip_route_add_del_reply
221 define ip_route_add_del_v2_reply
229 /** \brief Dump IP routes from a table
230 @param client_index - opaque cookie to identify the sender
231 @param src The entity adding the route. either 0 for default
232 or a value returned from fib_source_sdd.
233 @param table - The table from which to dump routes (ony ID an AF are needed)
239 vl_api_ip_table_t table;
241 define ip_route_v2_dump
246 /* vl_api_fib_source_t src; */
248 vl_api_ip_table_t table;
251 /** \brief IP FIB table entry response
252 @param route The route entry in the table
254 define ip_route_details
257 vl_api_ip_route_t route;
259 define ip_route_v2_details
263 vl_api_ip_route_v2_t route;
266 /** \brief Lookup IP route from a table
267 @param client_index - opaque cookie to identify the sender
268 @param table_id - The IP table to look the route up in
269 @param exact - 0 for normal route lookup, 1 for exact match only
270 @param prefix - The prefix (or host) for route lookup.
272 define ip_route_lookup
278 vl_api_prefix_t prefix;
280 define ip_route_lookup_v2
287 vl_api_prefix_t prefix;
290 /** \brief IP FIB table lookup response
291 @param retval - return code of the lookup
292 @param route - The route entry in the table if found
294 define ip_route_lookup_reply
298 vl_api_ip_route_t route;
300 define ip_route_lookup_v2_reply
305 vl_api_ip_route_v2_t route;
308 /** \brief Set the ip flow hash config for a fib request
309 @param client_index - opaque cookie to identify the sender
310 @param context - sender context, to match reply w/ request
311 @param vrf_id - vrf/fib id
312 @param is_ipv6 - if non-zero the fib is ip6, else ip4
313 @param src - if non-zero include src in flow hash
314 @param dst - if non-zero include dst in flow hash
315 @param sport - if non-zero include sport in flow hash
316 @param dport - if non-zero include dport in flow hash
317 @param proto -if non-zero include proto in flow hash
318 @param reverse - if non-zero include reverse in flow hash
319 @param symmetric - if non-zero include symmetry in flow hash
321 autoreply define set_ip_flow_hash
338 @brief flow hash settings for an IP table
339 @param src - include src in flow hash
340 @param dst - include dst in flow hash
341 @param sport - include sport in flow hash
342 @param dport - include dport in flow hash
343 @param proto - include proto in flow hash
344 @param reverse - include reverse in flow hash
345 @param symmetric - include symmetry in flow hash
346 @param flowlabel - include flowlabel in flow hash
348 enumflag ip_flow_hash_config
350 IP_API_FLOW_HASH_SRC_IP = 0x01,
351 IP_API_FLOW_HASH_DST_IP = 0x02,
352 IP_API_FLOW_HASH_SRC_PORT = 0x04,
353 IP_API_FLOW_HASH_DST_PORT = 0x08,
354 IP_API_FLOW_HASH_PROTO = 0x10,
355 IP_API_FLOW_HASH_REVERSE = 0x20,
356 IP_API_FLOW_HASH_SYMETRIC = 0x40,
357 IP_API_FLOW_HASH_FLOW_LABEL = 0x80,
360 autoreply define set_ip_flow_hash_v2
365 vl_api_address_family_t af;
366 vl_api_ip_flow_hash_config_t flow_hash_config;
370 @brief flow hash settings for an IP table
371 @param src - include src in flow hash
372 @param dst - include dst in flow hash
373 @param sport - include sport in flow hash
374 @param dport - include dport in flow hash
375 @param proto - include proto in flow hash
376 @param reverse - include reverse in flow hash
377 @param symmetric - include symmetry in flow hash
378 @param flowlabel - include flowlabel in flow hash
379 @param gtpv1teid - include gtpv1teid in flow hash
381 enumflag ip_flow_hash_config_v2
383 IP_API_V2_FLOW_HASH_SRC_IP = 0x01,
384 IP_API_V2_FLOW_HASH_DST_IP = 0x02,
385 IP_API_V2_FLOW_HASH_SRC_PORT = 0x04,
386 IP_API_V2_FLOW_HASH_DST_PORT = 0x08,
387 IP_API_V2_FLOW_HASH_PROTO = 0x10,
388 IP_API_V2_FLOW_HASH_REVERSE = 0x20,
389 IP_API_V2_FLOW_HASH_SYMETRIC = 0x40,
390 IP_API_V2_FLOW_HASH_FLOW_LABEL = 0x80,
391 IP_API_V2_FLOW_HASH_GTPV1_TEID = 0x100,
394 autoreply define set_ip_flow_hash_v3
399 vl_api_address_family_t af;
400 vl_api_ip_flow_hash_config_v2_t flow_hash_config;
401 option status="in_progress";
404 /** \brief Set the ip flow hash router ID
405 @param client_index - opaque cookie to identify the sender
406 @param context - sender context, to match reply w/ request
407 @param router_id - The ID of the router. Mixed into the hash.
408 Used to prevent polarisation across a network,
409 since each router is assumed to have a different ID
411 autoreply define set_ip_flow_hash_router_id
418 /** \brief IPv6 interface enable / disable request
419 @param client_index - opaque cookie to identify the sender
420 @param context - sender context, to match reply w/ request
421 @param sw_if_index - interface used to reach neighbor
422 @param enable - if non-zero enable ip6 on interface, else disable
424 autoreply define sw_interface_ip6_enable_disable
428 vl_api_interface_index_t sw_if_index;
429 bool enable; /* set to true if enable */
432 /** \brief Dump IP multicast fib table
433 @param client_index - opaque cookie to identify the sender
435 define ip_mtable_dump
440 define ip_mtable_details
444 vl_api_ip_table_t table;
447 /** \brief Add / del route request
449 Adds a route, consisting both of the MFIB entry to match packets
450 (which may already exist) and a path to send those packets down.
451 Routes can be entered repeatedly to add multiple paths. Deletions are
454 @param client_index - opaque cookie to identify the sender
455 @param context - sender context, to match reply w/ request
456 @param table_id - fib table /vrf associated with the route
457 @param is_add - true if adding a route; false if deleting one
458 @param is_ipv6 - true iff all the addresses are v6
459 @param entry_flags - see fib_entry_flag_t
460 @param itf_flags - see mfib_entry_flags_t
461 @param next_hop_afi - see dpo_proto_t; the type of destination description
462 @param src_address - the source of the packet
463 @param grp_address - the group the packet is destined to
464 @param nh_address - the nexthop to forward the packet to
465 @param next_hop_sw_if_index - interface to emit packet on
467 BIER AFIs use the BIER imposition ID. v4 and v6 AFIs use either the
468 interface or the nexthop address.
470 Note that if the route is source-specific (S is supplied, not all 0s),
471 the prefix match is treated as exact (prefixlen /32 or /128).
473 FIXME not complete yet
478 vl_api_mfib_entry_flags_t entry_flags;
480 vl_api_mprefix_t prefix;
482 vl_api_mfib_path_t paths[n_paths];
485 define ip_mroute_add_del
489 bool is_add [default=true];
491 vl_api_ip_mroute_t route;
493 define ip_mroute_add_del_reply
500 /** \brief Dump IP multicast fib table
501 @param table - The table from which to dump routes (ony ID an AF are needed)
503 define ip_mroute_dump
507 vl_api_ip_table_t table;
510 /** \brief IP Multicast Route Details
511 @param route - Details of the route
513 define ip_mroute_details
516 vl_api_ip_mroute_t route;
519 define ip_address_details
522 vl_api_interface_index_t sw_if_index;
523 vl_api_address_with_prefix_t prefix;
526 define ip_address_dump
530 vl_api_interface_index_t sw_if_index;
534 /** \brief IP unnumbered configurations
535 @param sw_if_index The interface that has unnumbered configuration
536 @param ip_sw_if_index The IP interface that it is unnumbered to
538 define ip_unnumbered_details
541 vl_api_interface_index_t sw_if_index;
542 vl_api_interface_index_t ip_sw_if_index;
545 /** \brief Dump IP unnumbered configurations
546 @param sw_if_index ~0 for all interfaces, else the interface desired
548 define ip_unnumbered_dump
552 vl_api_interface_index_t sw_if_index [default=0xffffffff];
558 vl_api_interface_index_t sw_if_index;
569 define mfib_signal_dump
575 define mfib_signal_details
578 vl_api_interface_index_t sw_if_index;
580 vl_api_mprefix_t prefix;
582 u8 ip_packet_data[256];
585 /** \brief IP punt policer
586 @param client_index - opaque cookie to identify the sender
587 @param context - sender context, to match reply w/ request
588 @param is_add - 1 to add neighbor, 0 to delete
589 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
590 @param policer_index - Index of policer to use
592 autoreply define ip_punt_police
597 bool is_add [default=true];
601 /** \brief Punt redirect type
602 @param rx_sw_if_index - specify the original RX interface of traffic
603 that should be redirected. ~0 means any interface.
604 @param tx_sw_if_index - the TX interface to which traffic should be
606 @param nh - the next-hop to redirect the traffic to.
607 @param is_ipv6 - 1 for IPv6 neighbor, 0 for IPv4
609 typedef punt_redirect
611 vl_api_interface_index_t rx_sw_if_index;
612 vl_api_interface_index_t tx_sw_if_index;
616 /** \brief IP punt redirect
617 @param client_index - opaque cookie to identify the sender
618 @param context - sender context, to match reply w/ request
619 @param punt - punt definition
620 @param is_add - 1 to add neighbor, 0 to delete
622 autoreply define ip_punt_redirect
628 vl_api_punt_redirect_t punt;
629 bool is_add [default=true];
632 define ip_punt_redirect_dump
638 vl_api_interface_index_t sw_if_index;
642 define ip_punt_redirect_details
647 vl_api_punt_redirect_t punt;
650 /** \brief Punt redirect type
651 @param rx_sw_if_index - specify the original RX interface of traffic
652 that should be redirected. ~0 means any interface.
653 @param af - Address family (ip4 or ip6)
654 @param paths - the TX paths to which traffic should be redirected.
656 typedef punt_redirect_v2
658 vl_api_interface_index_t rx_sw_if_index [default=0xffffffff];
659 vl_api_address_family_t af;
661 vl_api_fib_path_t paths[n_paths];
664 /** \brief Add IP punt redirect rule
665 @param client_index - opaque cookie to identify the sender
666 @param context - sender context, to match reply w/ request
667 @param punt - punt definition
668 @param is_add - 1 to add punt_redirect rule, 0 to delete
670 autoreply define add_del_ip_punt_redirect_v2
674 bool is_add [default=true];
675 vl_api_punt_redirect_v2_t punt;
678 define ip_punt_redirect_v2_dump
682 vl_api_interface_index_t sw_if_index;
683 vl_api_address_family_t af;
686 define ip_punt_redirect_v2_details
689 vl_api_punt_redirect_v2_t punt;
692 autoreply define ip_container_proxy_add_del
697 vl_api_interface_index_t sw_if_index;
698 bool is_add [default=true];
701 define ip_container_proxy_dump
707 define ip_container_proxy_details
710 vl_api_interface_index_t sw_if_index;
711 vl_api_prefix_t prefix;
714 /** \brief Configure IP source and L4 port-range check
715 @param client_index - opaque cookie to identify the sender
716 @param context - sender context, to match reply w/ request
717 @param is_ip6 - 1 if source address type is IPv6
718 @param is_add - 1 if add, 0 if delete
719 @param ip - prefix to match
720 @param number_of_ranges - length of low_port and high_port arrays (must match)
721 @param low_ports[32] - up to 32 low end of port range entries (must have corresponding high_ports entry)
722 @param high_ports[32] - up to 32 high end of port range entries (must have corresponding low_ports entry)
723 @param vrf_id - fib table/vrf id to associate the source and port-range check with
724 @note To specify a single port set low_port and high_port entry the same
726 autoreply define ip_source_and_port_range_check_add_del
730 bool is_add [default=true];
731 vl_api_prefix_t prefix;
738 /** \brief Set interface source and L4 port-range request
739 @param client_index - opaque cookie to identify the sender
740 @param context - sender context, to match reply w/ request
741 @param interface_id - interface index
742 @param tcp_vrf_id - VRF associated with source and TCP port-range check
743 @param udp_vrf_id - VRF associated with source and TCP port-range check
745 autoreply define ip_source_and_port_range_check_interface_add_del
749 bool is_add [default=true];
750 vl_api_interface_index_t sw_if_index;
757 /** \brief IPv6 set link local address on interface request
758 @param client_index - opaque cookie to identify the sender
759 @param context - sender context, to match reply w/ request
760 @param sw_if_index - interface to set link local on
761 @param ip - the new link local address
763 autoreply define sw_interface_ip6_set_link_local_address
767 vl_api_interface_index_t sw_if_index;
768 vl_api_ip6_address_t ip;
771 /** \brief IPv6 get link local address on interface request
772 @param client_index - opaque cookie to identify the sender
773 @param context - sender context, to match reply w/ request
774 @param sw_if_index - interface to set link local on
776 define sw_interface_ip6_get_link_local_address
780 vl_api_interface_index_t sw_if_index;
783 /** \brief IPv6 link local address detail
784 @param context - sender context, to match reply w/ request
785 @param ip - the link local address
787 define sw_interface_ip6_get_link_local_address_reply
791 vl_api_ip6_address_t ip;
794 /** \brief IOAM enable : Enable in-band OAM
795 @param id - profile id
796 @param seqno - To enable Seqno Processing
797 @param analyse - Enabling analysis of iOAM at decap node
798 @param pow_enable - Proof of Work enabled or not flag
799 @param trace_enable - iOAM Trace enabled or not flag
801 autoreply define ioam_enable
813 /** \brief iOAM disable
814 @param client_index - opaque cookie to identify the sender
815 @param context - sender context, to match reply w/ request
816 @param index - MAP Domain index
818 autoreply define ioam_disable
827 IP_REASS_TYPE_FULL = 0,
828 IP_REASS_TYPE_SHALLOW_VIRTUAL = 0x1,
831 autoreply define ip_reassembly_set
836 u32 max_reassemblies;
837 u32 max_reassembly_length;
838 u32 expire_walk_interval_ms;
840 vl_api_ip_reass_type_t type;
843 define ip_reassembly_get
848 vl_api_ip_reass_type_t type;
851 define ip_reassembly_get_reply
856 u32 max_reassemblies;
857 u32 max_reassembly_length;
858 u32 expire_walk_interval_ms;
862 /** \brief Enable/disable reassembly feature
863 @param client_index - opaque cookie to identify the sender
864 @param context - sender context, to match reply w/ request
865 @param sw_if_index - interface to enable/disable feature on
866 @param enable_ip4 - enable ip4 reassembly if non-zero, disable if 0
867 @param enable_ip6 - enable ip6 reassembly if non-zero, disable if 0
869 autoreply define ip_reassembly_enable_disable
873 vl_api_interface_index_t sw_if_index;
876 vl_api_ip_reass_type_t type;
879 /** enable/disable full reassembly of packets aimed at our addresses */
880 autoreply define ip_local_reass_enable_disable
888 /** get status of local reassembly */
889 define ip_local_reass_get
895 define ip_local_reass_get_reply
904 @brief Set a Path MTU value. i.e. a MTU value for a given neighbour.
905 The neighbour can be described as attached (w/ interface and next-hop)
906 or remote (w/ table_id and next-hop);
907 @param client_index - opaque cookie to identify the sender
908 @param context - sender context, to match reply w/ request
909 @param table_id - table-ID for next-hop
911 @param path_mtu - value to set, 0 is disable.
921 autoreply define ip_path_mtu_update
925 vl_api_ip_path_mtu_t pmtu;
927 define ip_path_mtu_get
933 define ip_path_mtu_get_reply
939 define ip_path_mtu_details
942 vl_api_ip_path_mtu_t pmtu;
945 rpc ip_path_mtu_get returns ip_path_mtu_get_reply
946 stream ip_path_mtu_details;
949 autoreply define ip_path_mtu_replace_begin
954 autoreply define ip_path_mtu_replace_end
965 description "packet fragmented";
971 description "packet smaller than MTU";
977 description "number of sent fragments";
979 cant_fragment_header {
983 description "can't fragment header";
989 description "can't fragment this packet";
995 description "malformed packet";
1001 description "could not allocate buffer";
1007 description "unknown error";
1012 /* Must be first. */
1017 description "valid ip4 packets";
1020 /* Errors signalled by ip4-input */
1025 description "ip4 length < 20 bytes";
1031 description "ip4 length > l2 length";
1037 description "bad ip4 checksum";
1043 description "ip4 version != 4";
1049 description "ip4 options present";
1051 fragment_offset_one {
1055 description "ip4 fragment offset == 1";
1061 description "ip4 ttl <= 1";
1067 description "ip4 IHL < 5";
1070 /* Errors signalled by ip4-rewrite. */
1075 description "ip4 MTU exceeded and DF set";
1081 description "ip4 destination lookup miss";
1087 description "ip4 source lookup miss";
1093 description "ip4 drop";
1099 description "ip4 punt";
1105 description "ip4 egress interface same as ingress";
1108 /* errors signalled by ip4-local. */
1113 description "unknown ip protocol";
1119 description "bad tcp checksum";
1125 description "bad udp checksum";
1131 description "inconsistent udp/ip lengths";
1134 /* spoofed packets in ip4-rewrite-local */
1135 spoofed_local_packets {
1139 description "ip4 spoofed local-address packet drops";
1142 /* Errors signalled by ip4-inacl */
1147 description "input ACL table-miss drops";
1149 inacl_session_deny {
1153 description "input ACL session deny drops";
1156 /* Errors singalled by ip4-outacl */
1161 description "output ACL table-miss drops";
1163 outacl_session_deny {
1167 description "output ACL session deny drops";
1170 /* Errors from mfib-forward */
1175 description "Multicast RPF check failed";
1178 /* Errors signalled by ip4-reassembly */
1179 reass_duplicate_fragment {
1183 description "duplicate/overlapping fragments";
1185 reass_limit_reached {
1189 description "drops due to concurrent reassemblies limit";
1191 reass_fragment_chain_too_long {
1195 description "fragment chain too long (drop)";
1201 description "out of buffers (drop)";
1203 reass_malformed_packet {
1207 description "malformed packets";
1209 reass_internal_error {
1213 description "drops due to internal reassembly error";
1219 description "fragments dropped due to reassembly timeout";
1221 reass_to_custom_app {
1225 description "send to custom drop app";
1231 description "successful reassemblies";
1233 reass_fragments_reassembled {
1237 description "fragments reassembled";
1239 reass_fragments_rcvd {
1243 description "fragments received";
1245 reass_unsupp_ip_prot {
1249 description "unsupported ip protocol";
1254 * IPv6 Error/info counters
1257 /* Must be first. */
1262 description "valid ip6 packets";
1265 /* Errors signalled by ip6-input */
1270 description "ip6 length < 40 bytes";
1276 description "ip6 length > l2 length";
1282 description "ip6 version != 6";
1288 description "ip6 ttl <= 1";
1291 /* Errors signalled by ip6-rewrite. */
1296 description "ip6 MTU exceeded";
1302 description "ip6 destination lookup miss";
1308 description "ip6 source lookup miss";
1314 description "ip6 drop";
1320 description "ip6 punt";
1323 /* errors signalled by ip6-local. */
1328 description "unknown ip protocol";
1334 description "bad udp checksum";
1340 description "bad icmp checksum";
1346 description "inconsistent udp/ip lengths";
1348 /* Errors signalled by udp6-lookup. */
1353 description "no listener for udp port";
1356 /* spoofed packets in ip6-rewrite-local */
1357 spoofed_local_packets {
1361 description "ip6 spoofed local-address packet drops";
1364 /* Errors signalled by ip6-inacl */
1369 description "input ACL table-miss drops";
1371 inacl_session_deny {
1375 description "input ACL session deny drops";
1378 /* Errors singalled by ip6-outacl */
1383 description "output ACL table-miss drops";
1385 outacl_session_deny {
1389 description "output ACL session deny drops";
1392 /* Errors from mfib-forward */
1397 description "Multicast RPF check failed";
1400 /* Errors signalled by ip6-reassembly */
1401 reass_missing_upper {
1405 description "missing-upper layer drops";
1407 reass_duplicate_fragment {
1411 description "duplicate fragments";
1413 reass_overlapping_fragment {
1417 description "overlapping fragments";
1419 reass_limit_reached {
1423 description "drops due to concurrent reassemblies limit";
1425 reass_fragment_chain_too_long {
1429 description "fragment chain too long (drop)";
1435 description "out of buffers (drop)";
1441 description "fragments dropped due to reassembly timeout";
1443 reass_internal_error {
1447 description "drops due to internal reassembly error";
1449 reass_invalid_frag_len {
1453 description "invalid fragment length";
1455 reass_to_custom_app {
1459 description "send to custom drop app";
1465 description "no fragmentation header";
1467 reass_invalid_frag_size {
1471 description "drop due to invalid fragment size";
1477 description "successful reassemblies";
1479 reass_fragments_reassembled {
1483 description "fragments reassembled";
1485 reass_fragments_rcvd {
1489 description "fragments received";
1491 reass_unsupp_ip_proto {
1495 description "unsupported ip protocol";
1504 description "valid packets";
1510 description "unknown type";
1512 invalid_code_for_type {
1516 description "invalid code for type";
1518 invalid_hop_limit_for_type {
1522 description "hop_limit != 255";
1524 length_too_small_for_type {
1528 description "payload length too small for type";
1530 options_with_odd_length {
1534 description "total option length not multiple of 8 bytes";
1536 option_with_zero_length {
1540 description "option has zero length";
1546 description "echo replies sent";
1552 description "icmp6 dst address lookup misses";
1558 description "destination unreachable response sent";
1564 description "hop limit exceeded response sent";
1566 param_problem_sent {
1570 description "parameter problem response sent";
1576 description "error message dropped";
1585 description "valid packets";
1591 description "unknown type";
1593 invalid_code_for_type {
1597 description "invalid code for type";
1599 invalid_hop_limit_for_type {
1603 description "hop_limit != 255";
1605 length_too_small_for_type {
1609 description "payload length too small for type";
1611 options_with_odd_length {
1615 description "total option length not multiple of 8 bytes";
1617 option_with_zero_length {
1621 description "option has zero length";
1627 description "echo replies sent";
1629 neighbor_solicitation_source_not_on_link {
1633 description "neighbor solicitations from source not on link";
1635 neighbor_solicitation_source_unknown {
1639 description "neighbor solicitations for unknown targets";
1641 neighbor_advertisements_tx {
1645 description "neighbor advertisements sent";
1647 neighbor_advertisements_rx {
1651 description "neighbor advertisements received";
1653 router_solicitation_source_not_on_link {
1657 description "router solicitations from source not on link";
1659 router_solicitation_unsupported_intf {
1663 description "neighbor discovery unsupported interface";
1665 router_solicitation_radv_not_config {
1669 description "neighbor discovery not configured";
1671 router_advertisement_source_not_link_local {
1675 description "router advertisement source not link local";
1677 router_advertisements_tx {
1681 description "router advertisements sent";
1683 router_advertisements_rx {
1687 description "router advertisements received";
1693 description "icmp6 dst address lookup misses";
1699 description "destination unreachable response sent";
1701 packet_too_big_sent {
1705 description "packet too big response sent";
1711 description "hop limit exceeded response sent";
1713 param_problem_sent {
1717 description "parameter problem response sent";
1723 description "error message dropped";
1729 description "buffer allocation failure";
1734 "/err/ip-frag" "ip_frag";
1735 "/err/mpls-frag" "ip_frag";
1736 "/err/ip4-mpls-label-disposition-pipe" "ip4";
1737 "/err/ip4-mpls-label-disposition-uniform" "ip4";
1738 "/err/ip4-local" "ip4";
1739 "/err/ip4-input" "ip4";
1740 "/err/ip4-full-reassembly" "ip4";
1741 "/err/ip4-local-full-reassembly" "ip4";
1742 "/err/ip4-full-reassembly-feature" "ip4";
1743 "/err/ip4-full-reassembly-custom" "ip4";
1744 "/err/ip4-full-reassembly-expire-walk" "ip4";
1745 "/err/ip4-sv-reassembly" "ip4";
1746 "/err/ip4-sv-reassembly-feature" "ip4";
1747 "/err/ip4-sv-reassembly-output-feature" "ip4";
1748 "/err/ip4-sv-reassembly-custom-next" "ip4";
1749 "/err/ip4-sv-reassembly-expire-walk" "ip4";
1750 "/err/ip6-mpls-label-disposition-pipe" "ip6";
1751 "/err/ip6-mpls-label-disposition-uniform" "ip6";
1752 "/err/ip6-local" "ip6";
1753 "/err/ip6-input" "ip6";
1754 "/err/ip6-full-reassembly" "ip6";
1755 "/err/ip6-local-full-reassembly" "ip6";
1756 "/err/ip6-full-reassembly-feature" "ip6";
1757 "/err/ip6-full-reassembly-custom" "ip6";
1758 "/err/ip6-full-reassembly-expire-walk" "ip6";
1759 "/err/ip6-sv-reassembly" "ip6";
1760 "/err/ip6-sv-reassembly-feature" "ip6";
1761 "/err/ip6-sv-reassembly-output-feature" "ip6";
1762 "/err/ip6-sv-reassembly-custom-next" "ip6";
1763 "/err/ip6-sv-reassembly-expire-walk" "ip6";
1764 "/err/ip4-icmp-input" "icmp4";
1765 "/err/ip4-icmp-error" "icmp4";
1766 "/err/ip6-icmp-input" "icmp6";
1767 "/err/ip6-icmp-error" "icmp6";
1772 * eval: (c-set-style "gnu")