FD.io VPP  v17.01.1-3-gc6833f8
Vector Packet Processing
fib_entry_delegate.h File Reference
+ Include dependency graph for fib_entry_delegate.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  fib_entry_delegate_t_
 A Delagate is a means to implmenet the Delagation design pattern; the extension of an objects functionality through the composition of, and delgation to, other objects. More...
 

Macros

#define FOR_EACH_DELEGATE_CHAIN(_entry, _fdt, _fed, _body)
 

Typedefs

typedef enum fib_entry_delegate_type_t_ fib_entry_delegate_type_t
 Delegate types. More...
 
typedef struct fib_entry_delegate_t_ fib_entry_delegate_t
 A Delagate is a means to implmenet the Delagation design pattern; the extension of an objects functionality through the composition of, and delgation to, other objects. More...
 

Enumerations

enum  fib_entry_delegate_type_t_ {
  FIB_ENTRY_DELEGATE_CHAIN_UNICAST_IP4 = FIB_FORW_CHAIN_TYPE_UNICAST_IP4, FIB_ENTRY_DELEGATE_CHAIN_UNICAST_IP6 = FIB_FORW_CHAIN_TYPE_UNICAST_IP6, FIB_ENTRY_DELEGATE_CHAIN_MPLS_EOS = FIB_FORW_CHAIN_TYPE_MPLS_EOS, FIB_ENTRY_DELEGATE_CHAIN_MPLS_NON_EOS = FIB_FORW_CHAIN_TYPE_MPLS_NON_EOS,
  FIB_ENTRY_DELEGATE_CHAIN_ETHERNET = FIB_FORW_CHAIN_TYPE_ETHERNET, FIB_ENTRY_DELEGATE_COVERED, FIB_ENTRY_DELEGATE_ATTACHED_IMPORT, FIB_ENTRY_DELEGATE_ATTACHED_EXPORT
}
 Delegate types. More...
 

Functions

void fib_entry_delegate_remove (struct fib_entry_t_ *fib_entry, fib_entry_delegate_type_t type)
 
fib_entry_delegate_tfib_entry_delegate_find_or_add (struct fib_entry_t_ *fib_entry, fib_entry_delegate_type_t fdt)
 
fib_entry_delegate_tfib_entry_delegate_get (const struct fib_entry_t_ *fib_entry, fib_entry_delegate_type_t type)
 
fib_forward_chain_type_t fib_entry_delegate_type_to_chain_type (fib_entry_delegate_type_t type)
 
fib_entry_delegate_type_t fib_entry_chain_type_to_delegate_type (fib_forward_chain_type_t type)
 

Macro Definition Documentation

#define FOR_EACH_DELEGATE_CHAIN (   _entry,
  _fdt,
  _fed,
  _body 
)
Value:
{ \
_fdt++) \
{ \
_fed = fib_entry_delegate_get(_entry, _fdt); \
if (NULL != _fed) { \
_body; \
} \
} \
}
#define NULL
Definition: clib.h:55
fib_entry_delegate_t * fib_entry_delegate_get(const struct fib_entry_t_ *fib_entry, fib_entry_delegate_type_t type)
Forwarding chain types: for the vast majority of FIB entries only one chain is required - the one tha...

Definition at line 51 of file fib_entry_delegate.h.

Typedef Documentation

A Delagate is a means to implmenet the Delagation design pattern; the extension of an objects functionality through the composition of, and delgation to, other objects.

These 'other' objects are delegates. Delagates are thus attached to other FIB objects to extend their functionality.

Enumeration Type Documentation

Delegate types.

Enumerator
FIB_ENTRY_DELEGATE_CHAIN_UNICAST_IP4 

Forwarding chain types: for the vast majority of FIB entries only one chain is required - the one that forwards traffic matching the fib_entry_t's fib_prefix_t.

For those fib_entry_t that are a resolution target for other fib_entry_t's they will also need the chain to provide forwarding for those children. We store these additional chains in delegates to save memory in the common case.

FIB_ENTRY_DELEGATE_CHAIN_UNICAST_IP6 
FIB_ENTRY_DELEGATE_CHAIN_MPLS_EOS 
FIB_ENTRY_DELEGATE_CHAIN_MPLS_NON_EOS 
FIB_ENTRY_DELEGATE_CHAIN_ETHERNET 
FIB_ENTRY_DELEGATE_COVERED 

Dependency list of covered entries.

these are more specific entries that are interested in changes to their respective cover

FIB_ENTRY_DELEGATE_ATTACHED_IMPORT 

Attached import/export functionality.

FIB_ENTRY_DELEGATE_ATTACHED_EXPORT 

Definition at line 24 of file fib_entry_delegate.h.

Function Documentation

fib_entry_delegate_type_t fib_entry_chain_type_to_delegate_type ( fib_forward_chain_type_t  type)

Definition at line 108 of file fib_entry_delegate.c.

+ Here is the caller graph for this function:

fib_entry_delegate_t* fib_entry_delegate_find_or_add ( struct fib_entry_t_ fib_entry,
fib_entry_delegate_type_t  fdt 
)

Definition at line 92 of file fib_entry_delegate.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_entry_delegate_t* fib_entry_delegate_get ( const struct fib_entry_t_ fib_entry,
fib_entry_delegate_type_t  type 
)
void fib_entry_delegate_remove ( struct fib_entry_t_ fib_entry,
fib_entry_delegate_type_t  type 
)

Definition at line 54 of file fib_entry_delegate.c.

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

fib_forward_chain_type_t fib_entry_delegate_type_to_chain_type ( fib_entry_delegate_type_t  type)

Definition at line 128 of file fib_entry_delegate.c.

+ Here is the caller graph for this function: