* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/**
+ * @cond (!DPDK)
+ * @file
+ *
+ * Allocate/free network buffers.
+ */
+
#include <vlib/vlib.h>
uword
};
/* *INDENT-ON* */
+/** @endcond */
/*
* fd.io coding-style-patch-verification: ON
*
/** \brief Translate buffer pointer into buffer index
@param vm - (vlib_main_t *) vlib main data structure pointer
- @param b - (void *) buffer pointer
+ @param p - (void *) buffer pointer
@return - (u32) buffer index
*/
always_inline u32
/** \brief Copy buffer contents to memory
@param vm - (vlib_main_t *) vlib main data structure pointer
- @param bi - (u32) buffer index
+ @param buffer_index - (u32) buffer index
@param contents - (u8 *) memory, <strong>must be large enough</strong>
@return - (uword) length of buffer chain
*/
} vlib_counter_t;
/** Add two combined counters, results in the first counter
- @param [in/out] a - (vlib_counter_t *) dst counter
+ @param [in,out] a - (vlib_counter_t *) dst counter
@param b - (vlib_counter_t *) src counter
*/
}
/** Subtract combined counters, results in the first counter
- @param [in/out] a - (vlib_counter_t *) dst counter
+ @param [in,out] a - (vlib_counter_t *) dst counter
@param b - (vlib_counter_t *) src counter
*/
always_inline void
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/**
+ * @cond DPDK
+ * @file
+ *
+ * Allocate/free network buffers with DPDK.
+ */
+
#include <rte_config.h>
#include <rte_common.h>
VLIB_INIT_FUNCTION (buffer_state_validation_init);
#endif
+/** @endcond */
/*
* fd.io coding-style-patch-verification: ON
*
Here's an example:
- <pre>
- #define EXAMPLE_POLL_PERIOD 10.0
+ <code><pre>
+ \#define EXAMPLE_POLL_PERIOD 10.0
static uword
example_process (vlib_main_t * vm, vlib_node_runtime_t * rt,
.type = VLIB_NODE_TYPE_PROCESS,
.name = "example-process",
};
- </pre>
+ </pre></code>
In this example, the VLIB process node waits for an event to
occur, or for 10 seconds to elapse. The code demuxes on the event
return 0;
}
-VLIB_CLI_COMMAND (set_input_acl_command, static) = {
+VLIB_CLI_COMMAND (set_policer_classify_command, static) = {
.path = "set policer classify",
.short_help =
"set policer classify interface <int> [ip4-table <index>]\n"
b->current_length </code> and dispatch directly to
ip4-input-no-checksum, or ip6-input. Trace the packet if required.
- @param vm vlib_main_t corresponding to the current thread
+ @param vm vlib_main_t corresponding to the current thread
@param node vlib_node_runtime_t
- @param frame vlib_frame_t input-node, not used.
+ @param f vlib_frame_t input-node, not used.
@par Graph mechanics: buffer metadata, next index usage
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
+/**
+ * @file
+ * Interface CLI.
+ */
+
#include <vnet/vnet.h>
#include <vnet/ip/ip.h>
#include <vppinfra/bitmap.h>
};
/* *INDENT-ON* */
-/** \detail
+/**
+ * Parse subinterface names.
+ *
* The following subinterface syntax is supported. The first two are for
* backwards compatability:
*
return error;
}
-VLIB_CLI_COMMAND (set_interface_ip_table_command, static) = {
+VLIB_CLI_COMMAND (set_interface_ip6_table_command, static) = {
.path = "set interface ip6 table",
.function = add_del_ip6_interface_table,
.short_help = "set interface ip6 table <intfc> <table-id>"
-VLIB_CLI_COMMAND (show_ip_local, static) = {
+VLIB_CLI_COMMAND (show_ip6_local, static) = {
.path = "show ip6 local",
.function = show_ip6_local_command_fn,
.short_help = "Show ip6 local protocol table",
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-/** @file Definitions for all things IP (v4|v6) unicast and multicast lookup related.
- - Adjacency definitions and registration
- - callbacks on route add
- - callbacks on interface address change
+/**
+ * @file
+ * Definitions for all things IP (v4|v6) unicast and multicast lookup related.
+ *
+ * - Adjacency definitions and registration.
+ * - Callbacks on route add.
+ * - Callbacks on interface address change.
*/
+
#ifndef included_ip_lookup_h
#define included_ip_lookup_h
* limitations under the License.
*/
/**
- * @file error.def
+ * @file
* @brief L2-GRE over IPSec errors.
*/
* limitations under the License.
*/
/**
- * @file interface.c
+ * @file
* @brief L2-GRE over IPSec tunnel interface.
*
* Creates ipsec-gre tunnel interface.
* limitations under the License.
*/
/**
- * @file ipsec_gre.c
+ * @file
* @brief L2-GRE over IPSec packet processing.
*
* Add GRE header to thr packet and send it to the esp-encrypt node.
* limitations under the License.
*/
/**
- * @file ipsec_gre.h
+ * @file
* @brief L2-GRE over IPSec packet processing.
*/
* limitations under the License.
*/
/**
- * @file node.c
+ * @file
* @brief L2-GRE over IPSec packet processing.
*
- * Removes GRE header from the packet and send it to the l2-input node.
+ * Removes GRE header from the packet and sends it to the l2-input node.
*/
#include <vlib/vlib.h>
*
* This node remove GRE header.
*
- * @param vm vlib_main_t corresponding to the current thread.
- * @param node vlib_node_runtime_t data for this node.
- * @param frame vlib_frame_t whose contents should be dispatched.
+ * @param vm vlib_main_t corresponding to the current thread.
+ * @param node vlib_node_runtime_t data for this node.
+ * @param from_frame vlib_frame_t whose contents should be dispatched.
*
* @par Graph mechanics: buffer metadata, next index usage
*
- * <em>Uses:<em>
+ * <em>Uses:</em>
* - <code>ip->src_address</code> and <code>ip->dst_address</code>
* - Match tunnel by source and destination addresses in GRE IP header.
*
bd_main_t bd_main;
/**
- Init bridge domain if not done already
+ Init bridge domain if not done already.
For feature bitmap, set all bits except ARP termination
*/
void
/**
- Set the learn/forward/flood flags for the bridge domain
+ Set the learn/forward/flood flags for the bridge domain.
Return 0 if ok, non-zero if for an error.
*/
u32
}
/**
- set bridge-domain learn enable/disable
+ Set bridge-domain learn enable/disable.
The CLI format is:
set bridge-domain learn <bd_id> [disable]
*/
/* *INDENT-ON* */
/**
- set bridge-domain forward enable/disable
+ Set bridge-domain forward enable/disable.
The CLI format is:
set bridge-domain forward <bd_index> [disable]
*/
/* *INDENT-ON* */
/**
- set bridge-domain flood enable/disable
+ Set bridge-domain flood enable/disable.
The CLI format is:
set bridge-domain flood <bd_index> [disable]
*/
/* *INDENT-ON* */
/**
- set bridge-domain unkown-unicast flood enable/disable
+ Set bridge-domain unkown-unicast flood enable/disable.
The CLI format is:
set bridge-domain uu-flood <bd_index> [disable]
*/
/* *INDENT-ON* */
/**
- set bridge-domain arp term enable/disable
+ Set bridge-domain arp term enable/disable.
The CLI format is:
set bridge-domain arp term <bridge-domain-id> [disable]
*/
/**
+ * Add/delete IP address to MAC address mapping.
+ *
* The clib hash implementation stores uword entries in the hash table.
* The hash table mac_by_ip4 is keyed via IP4 address and store the
* 6-byte MAC address directly in the hash table entry uword.
- * This only works for 64-bit processor with 8-byte uword; which means
- * this code *WILL NOT WORK* for a 32-bit prcessor with 4-byte uword.
+ *
+ * @warning This only works for 64-bit processor with 8-byte uword;
+ * which means this code *WILL NOT WORK* for a 32-bit prcessor with
+ * 4-byte uword.
*/
u32
bd_add_del_ip_mac (u32 bd_index,
}
/**
- set bridge-domain arp entry add/delete
+ Set bridge-domain arp entry add/delete.
The CLI format is:
set bridge-domain arp entry <bd-id> <ip-addr> <mac-addr> [del]
*/
}
/**
- show bridge-domain state
+ Show bridge-domain state.
The CLI format is:
show bridge-domain [<bd_index>]
*/
/**
* Extract fields from the packet that will be used in interface
- * classification
+ * classification.
*/
static_always_inline void
extract_keys (vnet_main_t * vnet_main,
VLIB_INIT_FUNCTION (l2_efp_filter_init);
-/** Enable/disable the EFP Filter check on the subinterface */
+/** Enable/disable the EFP Filter check on the subinterface. */
void
l2_efp_filter_configure (vnet_main_t * vnet_main, u32 sw_if_index, u32 enable)
{
/**
- * set subinterface egress efp filter enable/disable
+ * Set subinterface egress efp filter enable/disable.
* The CLI format is:
* set interface l2 efp-filter <interface> [disable]]
*/
}
}
-/** Display the contents of the l2fib */
+/** Display the contents of the l2fib. */
static clib_error_t *
show_l2fib (vlib_main_t * vm,
unformat_input_t * input, vlib_cli_command_t * cmd)
l2learn_main.global_learn_count = 0;
}
-/** Clear all entries in L2FIB
- * TODO: Later we may want a way to remove only the non-static entries
+/** Clear all entries in L2FIB.
+ * @TODO: Later we may want a way to remove only the non-static entries
*/
static clib_error_t *
clear_l2fib (vlib_main_t * vm,
}
/**
- * Add an entry to the L2FIB
+ * Add an entry to the L2FIB.
* The CLI format is:
* l2fib add <mac> <bd> <intf> [static] [bvi]
* l2fib add <mac> <bd> filter
}
/**
- * Delete an entry from the L2FIB
+ * Delete an entry from the L2FIB.
* The CLI format is:
* l2fib del <mac> <bd-id>
*/
-/** Add the L3 input node for this ethertype to the next nodes structure */
+/** Add the L3 input node for this ethertype to the next nodes structure. */
void
l2flood_register_input_type (vlib_main_t * vm,
ethernet_type_t type, u32 node_index)
/**
- * set subinterface flood enable/disable
+ * Set subinterface flood enable/disable.
* The CLI format is:
* set interface l2 flood <interface> [disable]
*/
L2FWD_N_NEXT,
} l2fwd_next_t;
-/** Forward one packet based on the mac table lookup result */
+/** Forward one packet based on the mac table lookup result. */
static_always_inline void
l2fwd_process (vlib_main_t * vm,
VLIB_INIT_FUNCTION (l2fwd_init);
-/** Add the L3 input node for this ethertype to the next nodes structure */
+/** Add the L3 input node for this ethertype to the next nodes structure. */
void
l2fwd_register_input_type (vlib_main_t * vm,
ethernet_type_t type, u32 node_index)
/**
- * set subinterface forward enable/disable
+ * Set subinterface forward enable/disable.
* The CLI format is:
* set interface l2 forward <interface> [disable]
*/
VLIB_INIT_FUNCTION (l2input_init);
-/** Get a pointer to the config for the given interface */
+/** Get a pointer to the config for the given interface. */
l2_input_config_t *
l2input_intf_config (u32 sw_if_index)
{
return vec_elt_at_index (mp->configs, sw_if_index);
}
-/** Enable (or disable) the feature in the bitmap for the given interface */
+/** Enable (or disable) the feature in the bitmap for the given interface. */
u32
l2input_intf_bitmap_enable (u32 sw_if_index, u32 feature_bitmap, u32 enable)
{
/**
* Set the subinterface to run in l2 or l3 mode.
- * for L3 mode, just the sw_if_index is specified
- * for bridged mode, the bd id and bvi flag are also specified
- * for xconnect mode, the peer sw_if_index is also specified
- * Return 0 if ok, or non-0 if there was an error
+ * For L3 mode, just the sw_if_index is specified.
+ * For bridged mode, the bd id and bvi flag are also specified.
+ * For xconnect mode, the peer sw_if_index is also specified.
+ * Return 0 if ok, or non-0 if there was an error.
*/
u32
}
/**
- * set subinterface in bridging mode with a bridge-domain ID
+ * Set subinterface in bridging mode with a bridge-domain ID.
* The CLI format is:
* set interface l2 bridge <interface> <bd> [bvi] [split-horizon-group]
*/
/* *INDENT-ON* */
/**
- * set subinterface in xconnect mode with another interface
+ * Set subinterface in xconnect mode with another interface.
* The CLI format is:
* set interface l2 xconnect <interface> <peer interface>
*/
/* *INDENT-ON* */
/**
- * set subinterface in L3 mode
+ * Set subinterface in L3 mode.
* The CLI format is:
* set interface l3 <interface>
*/
/* *INDENT-ON* */
/**
+ * Show interface mode.
* The CLI format is:
* show mode [<if-name1> <if-name2> ...]
*/
#include <vppinfra/error.h>
#include <vppinfra/hash.h>
-/*
- * Ethernet bridge learning
+/**
+ * @file
+ * Ethernet bridge learning.
*
* Populate the mac table with entries mapping the packet's source mac + bridge
* domain ID to the input sw_if_index.
} l2learn_next_t;
-/** Perform learning on one packet based on the mac table lookup result */
+/** Perform learning on one packet based on the mac table lookup result. */
static_always_inline void
l2learn_process (vlib_node_runtime_t * node,
/**
- * set subinterface learn enable/disable
+ * Set subinterface learn enable/disable.
* The CLI format is:
* set interface l2 learn <interface> [disable]
*/
};
/**
- * Return 0 if split horizon check passes, otherwise return non-zero
+ * Check for split horizon violations.
+ * Return 0 if split horizon check passes, otherwise return non-zero.
* Packets should not be transmitted out an interface with the same
- * split-horizon group as the input interface, except if the shg is 0
+ * split-horizon group as the input interface, except if the @c shg is 0
* in which case the check always passes.
*/
static_always_inline u32
#endif
-/** Create a mapping in the next node mapping table for the given sw_if_index */
+/** Create a mapping in the next node mapping table for the given sw_if_index. */
u32
l2output_create_output_node_mapping (vlib_main_t * vlib_main, vnet_main_t * vnet_main, u32 node_index, /* index of current node */
u32 * output_node_index_vec,
return vec_elt_at_index (mp->configs, sw_if_index);
}
-/** Enable (or disable) the feature in the bitmap for the given interface */
+/** Enable (or disable) the feature in the bitmap for the given interface. */
void
l2output_intf_bitmap_enable (u32 sw_if_index, u32 feature_bitmap, u32 enable)
{
VLIB_INIT_FUNCTION (l2_outacl_init);
#if 0
-/** @todo maybe someone will add output ACL's in the future
- * set subinterface outacl enable/disable
+/** @todo maybe someone will add output ACL's in the future.
+ * Set subinterface outacl enable/disable.
* The CLI format is:
* set interface acl output <interface> [disable]
*/
#include <vlib/cli.h>
-/** Just a placeholder. Also ensures file is not eliminated by linker. */
+/** Just a placeholder; ensures file is not eliminated by linker. */
clib_error_t *
l2_vtr_init (vlib_main_t * vm)
{
}
/**
- * Get vtag tag rewrite on the given interface.
+ * Get vtag tag rewrite on the given interface.
* Return 1 if there is an error, 0 if ok
*/
u32
}
/**
- * set subinterface vtr enable/disable
+ * Set subinterface vtr enable/disable.
* The CLI format is:
* set interface l2 tag-rewrite <interface> [disable | pop 1 | pop 2 | push {dot1q|dot1ad} <tag> [<tag>]]
*
*/
#include <vnet/l2/l2_xcrw.h>
-/*
+/**
+ * @file
* General L2 / L3 cross-connect, used to set up
* "L2 interface <--> your-favorite-tunnel-encap" tunnels.
*
/**
* @file
* @brief PCAP function.
- * Usage
*
- * #include <vnet/unix/pcap.h>
+ * Usage:
+ *
+ * <code><pre>
+ * \#include <vnet/unix/pcap.h>
*
* static pcap_main_t pcap = {
* .file_name = "/tmp/ip4",
* .n_packets_to_capture = 2,
* .packet_type = PCAP_PACKET_TYPE_ip,
* };
+ * </pre></code>
*
* To add a buffer:
*
- * pcap_add_buffer (&pcap, vm, pi0, 128);
+ * <code><pre>pcap_add_buffer (&pcap, vm, pi0, 128);</pre></code>
*
- * File will be written after n_packets_to_capture or call to pcap_write (&pcap).
+ * File will be written after @c n_packets_to_capture or call to pcap_write (&pcap).
*
*/
/**
* @brief Connect a TAP interface
*
- * @param *vm - vlib_main_t
- * @param *intfc_name - u8
- * @param *hwaddr_arg - u8
- * @param *sw_if_index - u32
+ * @param vm - vlib_main_t
+ * @param intfc_name - u8
+ * @param hwaddr_arg - u8
+ * @param sw_if_indexp - u32
*
* @return rc - int
*
}
/**
- * @brief workaround for a known #include bug
- * #include <linux/ipv6.h> causes multiple definitions if
- * netinet/in.h is also included.
+ * @brief workaround for a known include file bug.
+ * including @c <linux/ipv6.h> causes multiple definitions if
+ * @c <netinet/in.h is also included.
*/
struct in6_ifreq {
struct in6_addr ifr6_addr;
};
/**
- * @brief Add or Del tun/tap interface address
+ * @brief Add or Del tun/tap interface address.
*
* Both the v6 interface address API and the way ifconfig
* displays subinterfaces differ from their v4 couterparts.
* @param *vm
* @param *node
* @param *from_frame
- * @param ip_ip4
+ * @param is_ip4
*
* @return from_frame->n_vectors
*
/** Format a clib_bihash_kv_8_8_t instance
@param s - u8 * vector under construction
- @param v (vararg) - the (key,value) pair to format
+ @param args (vararg) - the (key,value) pair to format
@return s - the u8 * vector under construction
*/
static inline u8 *
/** Add or delete a (key,value) pair from a bi-hash table
@param h - the bi-hash table to search
- @param add_kv - the (key,value) pair to add
+ @param add_v - the (key,value) pair to add
@param is_add - add=1, delete=0
@returns 0 on success, < 0 on error
@note This function will replace an existing (key,value) pair if the
* limitations under the License.
*/
-/** @if DOCUMENTATION_IS_IN_BIHASH_DOC_H */
+/** @cond DOCUMENTATION_IS_IN_BIHASH_DOC_H */
void BV (clib_bihash_init)
(BVT (clib_bihash) * h, char *name, u32 nbuckets, uword memory_size)
}
}
-/** @endif */
+/** @endcond */
/*
* fd.io coding-style-patch-verification: ON
* limitations under the License.
*/
-/** @if DOCUMENTATION_IS_IN_BIHASH_DOC_H */
+/** @cond DOCUMENTATION_IS_IN_BIHASH_DOC_H */
/*
* Note: to instantiate the template multiple times in a single file,
#endif /* __included_bihash_template_h__ */
-/** @endif */
+/** @endcond */
/*
* fd.io coding-style-patch-verification: ON
}
/** Duplicate a bitmap
- @param ai - pointer to a bitmap
+ @param v - pointer to a bitmap
@returns a duplicate of the bitmap
*/
#define clib_bitmap_dup(v) vec_dup(v)
/** Sets the ith bit of a bitmap to new_value
Removes trailing zeros from the bitmap
- @param a - pointer to the bitmap
+ @param ai - pointer to the bitmap
@param i - the bit position to interrogate
- @param new_value - new value for the bit
+ @param value - new value for the bit
@returns the old value of the bit
*/
always_inline uword *
/** Return a random bitmap of the requested length
@param ai - pointer to the destination bitmap
@param n_bits - number of bits to allocate
- @param [in/out] seed - pointer to the random number seed
+ @param [in,out] seed - pointer to the random number seed
@returns a reasonably random bitmap based. See random.h.
*/
always_inline uword *