Code Review
/
vpp.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
fib: fix typos in doxygen
[vpp.git]
/
src
/
vnet
/
adj
/
adj.h
diff --git
a/src/vnet/adj/adj.h
b/src/vnet/adj/adj.h
index
fb3dc36
..
e22e7ec
100644
(file)
--- a/
src/vnet/adj/adj.h
+++ b/
src/vnet/adj/adj.h
@@
-23,7
+23,7
@@
* 'glean' mean use the packet's destination address as the target
* address in the ARP packet.
* UNSHARED. Only one per-interface.
* 'glean' mean use the packet's destination address as the target
* address in the ARP packet.
* UNSHARED. Only one per-interface.
- * - midchain: a nighbour adj on a virtual/tunnel interface.
+ * - midchain: a n
e
ighbour adj on a virtual/tunnel interface.
*
* The API to create and update the adjacency is very sub-type specific. This
* is intentional as it encourages the user to carefully consider which adjacency
*
* The API to create and update the adjacency is very sub-type specific. This
* is intentional as it encourages the user to carefully consider which adjacency
@@
-33,9
+33,9
@@
* is important to enforce this approach as space in the adjacency is a premium,
* as we need it to fit in 1 cache line.
*
* is important to enforce this approach as space in the adjacency is a premium,
* as we need it to fit in 1 cache line.
*
- * the API is also based around an index to an a
jd
acency not a raw pointer. This
+ * the API is also based around an index to an a
dj
acency not a raw pointer. This
* is so the user doesn't suffer the same limp inducing firearm injuries that
* is so the user doesn't suffer the same limp inducing firearm injuries that
- * the author suffered as the adjacen
ic
es can realloc.
+ * the author suffered as the adjacen
ci
es can realloc.
*/
#ifndef __ADJ_H__
*/
#ifndef __ADJ_H__
@@
-81,10
+81,10
@@
typedef enum
/** Multicast Adjacency. */
IP_LOOKUP_NEXT_MCAST,
/** Multicast Adjacency. */
IP_LOOKUP_NEXT_MCAST,
- /** Broadcas
r
Adjacency. */
+ /** Broadcas
t
Adjacency. */
IP_LOOKUP_NEXT_BCAST,
IP_LOOKUP_NEXT_BCAST,
- /** Multicast Midchain Adjacency. An Adjacency for sending m
ac
st packets
+ /** Multicast Midchain Adjacency. An Adjacency for sending m
ultica
st packets
* on a tunnel/virtual interface */
IP_LOOKUP_NEXT_MCAST_MIDCHAIN,
* on a tunnel/virtual interface */
IP_LOOKUP_NEXT_MCAST_MIDCHAIN,
@@
-142,7
+142,7
@@
typedef enum
extern const ip46_address_t ADJ_BCAST_ADDR;
/**
extern const ip46_address_t ADJ_BCAST_ADDR;
/**
- * Forward de
lcar
tion
+ * Forward de
clara
tion
*/
struct ip_adjacency_t_;
*/
struct ip_adjacency_t_;
@@
-150,7
+150,7
@@
struct ip_adjacency_t_;
* @brief A function type for post-rewrite fixups on midchain adjacency
*/
typedef void (*adj_midchain_fixup_t) (vlib_main_t * vm,
* @brief A function type for post-rewrite fixups on midchain adjacency
*/
typedef void (*adj_midchain_fixup_t) (vlib_main_t * vm,
- struct ip_adjacency_t_ * adj,
+
const
struct ip_adjacency_t_ * adj,
vlib_buffer_t * b0,
const void *data);
vlib_buffer_t * b0,
const void *data);
@@
-167,7
+167,7
@@
typedef enum adj_attr_t_
/**
* Packets TX through the midchain do not increment the interface
* counters. This should be used when the adj is associated with an L2
/**
* Packets TX through the midchain do not increment the interface
* counters. This should be used when the adj is associated with an L2
- * interface and that L2 interface is in a brid
e
ge domain. In that case
+ * interface and that L2 interface is in a bridge domain. In that case
* the packet will have traversed the interface's TX node, and hence have
* been counted, before it traverses ths midchain
*/
* the packet will have traversed the interface's TX node, and hence have
* been counted, before it traverses ths midchain
*/
@@
-216,14
+216,14
@@
extern u8* format_adj_flags(u8 * s, va_list * args);
* @brief IP unicast adjacency.
* @note cache aligned.
*
* @brief IP unicast adjacency.
* @note cache aligned.
*
- * An adjacency is a represenation of a peer on a particular link.
+ * An adjacency is a represen
t
ation of a peer on a particular link.
*/
typedef struct ip_adjacency_t_
{
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
/**
*/
typedef struct ip_adjacency_t_
{
CLIB_CACHE_LINE_ALIGN_MARK (cacheline0);
/**
- * Linkage into the FIB node gr
pa
h. First member since this type
+ * Linkage into the FIB node gr
ap
h. First member since this type
* has 8 byte alignment requirements.
*/
fib_node_t ia_node;
* has 8 byte alignment requirements.
*/
fib_node_t ia_node;
@@
-243,8
+243,8
@@
typedef struct ip_adjacency_t_
/**
* The protocol of the neighbor/peer. i.e. the protocol with
/**
* The protocol of the neighbor/peer. i.e. the protocol with
- * which to interpret the 'next-hop' att
ir
butes of the sub-types.
- * 1-b
ty
es
+ * which to interpret the 'next-hop' att
ri
butes of the sub-types.
+ * 1-b
yt
es
*/
fib_protocol_t ia_nh_proto;
*/
fib_protocol_t ia_nh_proto;
@@
-269,7
+269,7
@@
typedef struct ip_adjacency_t_
* IP_LOOKUP_NEXT_MIDCHAIN
*
* A nbr adj that is also recursive. Think tunnels.
* IP_LOOKUP_NEXT_MIDCHAIN
*
* A nbr adj that is also recursive. Think tunnels.
- * A nbr adj can transition to be of type M
DI
CHAIN
+ * A nbr adj can transition to be of type M
ID
CHAIN
* so be sure to leave the two structs with the next_hop
* fields aligned.
*/
* so be sure to leave the two structs with the next_hop
* fields aligned.
*/
@@
-316,7
+316,7
@@
typedef struct ip_adjacency_t_
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
/* Rewrite in second/third cache lines */
CLIB_CACHE_LINE_ALIGN_MARK (cacheline1);
/* Rewrite in second/third cache lines */
-
vnet_declare_rewrite (VLIB_BUFFER_PRE_DATA_SIZE)
;
+
VNET_DECLARE_REWRITE
;
/**
* more control plane members that do not fit on the first cacheline
/**
* more control plane members that do not fit on the first cacheline
@@
-326,13
+326,17
@@
typedef struct ip_adjacency_t_
*/
struct adj_delegate_t_ *ia_delegates;
*/
struct adj_delegate_t_ *ia_delegates;
+ /**
+ * The VLIB node in which this adj is used to forward packets
+ */
+ u32 ia_node_index;
} ip_adjacency_t;
STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline0) == 0),
} ip_adjacency_t;
STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline0) == 0),
- "IP adjacency cachline 0 is not offset");
+ "IP adjacency cach
e
line 0 is not offset");
STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline1) ==
CLIB_CACHE_LINE_BYTES),
STATIC_ASSERT ((STRUCT_OFFSET_OF (ip_adjacency_t, cacheline1) ==
CLIB_CACHE_LINE_BYTES),
- "IP adjacency cach
line 1 is more than one cach
line size offset");
+ "IP adjacency cach
eline 1 is more than one cache
line size offset");
/**
* @brief
/**
* @brief
@@
-348,7
+352,7
@@
extern void adj_unlock(adj_index_t adj_index);
/**
* @brief
* Add a child dependent to an adjacency. The child will
/**
* @brief
* Add a child dependent to an adjacency. The child will
- * thus be informed via its registerd back-walk function
+ * thus be informed via its register
e
d back-walk function
* when the adjacency state changes.
*/
extern u32 adj_child_add(adj_index_t adj_index,
* when the adjacency state changes.
*/
extern u32 adj_child_add(adj_index_t adj_index,
@@
-389,12
+393,6
@@
extern int adj_is_up (adj_index_t ai);
*/
extern const u8* adj_get_rewrite (adj_index_t ai);
*/
extern const u8* adj_get_rewrite (adj_index_t ai);
-/**
- * @brief Notify the adjacency subsystem that the features settings for
- * an interface have changed
- */
-extern void adj_feature_update (u32 sw_if_index, u8 arc_index, u8 is_enable);
-
/**
* @brief descend the FIB graph looking for loops
*
/**
* @brief descend the FIB graph looking for loops
*
@@
-409,7
+407,7
@@
extern int adj_recursive_loop_detect (adj_index_t ai,
/**
* @brief
/**
* @brief
- * The global adjac
ne
cy pool. Exposed for fast/inline data-plane access
+ * The global adjac
en
cy pool. Exposed for fast/inline data-plane access
*/
extern ip_adjacency_t *adj_pool;
*/
extern ip_adjacency_t *adj_pool;
@@
-432,7
+430,13
@@
extern int adj_per_adj_counters;
static inline ip_adjacency_t *
adj_get (adj_index_t adj_index)
{
static inline ip_adjacency_t *
adj_get (adj_index_t adj_index)
{
- return (vec_elt_at_index(adj_pool, adj_index));
+ return (pool_elt_at_index(adj_pool, adj_index));
+}
+
+static inline int
+adj_is_valid(adj_index_t adj_index)
+{
+ return !(pool_is_free_index(adj_pool, adj_index));
}
/**
}
/**