FD.io VPP  v20.09-64-g4f7b92f0a
Vector Packet Processing
fib_attached_export.c File Reference
+ Include dependency graph for fib_attached_export.c:

Go to the source code of this file.

Data Structures

struct  fib_ae_import_t_
 A description of the need to import routes from the export table. More...
 
struct  fib_ae_export_t_
 A description of the need to export routes to one or more export tables. More...
 

Typedefs

typedef struct fib_ae_import_t_ fib_ae_import_t
 A description of the need to import routes from the export table. More...
 
typedef struct fib_ae_export_t_ fib_ae_export_t
 A description of the need to export routes to one or more export tables. More...
 

Functions

static fib_ae_export_tfib_entry_ae_add_or_lock (fib_node_index_t connected)
 
static void fib_entry_import_remove (fib_ae_import_t *import, fib_node_index_t entry_index)
 
static void fib_entry_import_add (fib_ae_import_t *import, fib_node_index_t entry_index)
 
static int fib_entry_covered_walk_import (fib_entry_t *cover, fib_node_index_t covered, void *ctx)
 Call back when walking a connected prefix's covered prefixes for import. More...
 
static void fib_ae_export_import_add (fib_ae_export_t *export, fib_ae_import_t *import)
 
void fib_attached_export_import (fib_entry_t *fib_entry, fib_node_index_t export_fib)
 FIB attached export. More...
 
void fib_attached_export_purge (fib_entry_t *fib_entry)
 All the imported entries need to be purged. More...
 
void fib_attached_export_covered_added (fib_entry_t *cover, fib_node_index_t covered)
 
void fib_attached_export_covered_removed (fib_entry_t *cover, fib_node_index_t covered)
 
static void fib_attached_export_cover_modified_i (fib_entry_t *fib_entry)
 
void fib_attached_export_cover_change (fib_entry_t *fib_entry)
 If this entry is tracking a cover (in another table) then that cover has changed. More...
 
void fib_attached_export_cover_update (fib_entry_t *fib_entry)
 If this entry is tracking a cover (in another table) then that cover has been updated. More...
 
u8fib_ae_import_format (fib_node_index_t impi, u8 *s)
 
u8fib_ae_export_format (fib_node_index_t expi, u8 *s)
 

Variables

static fib_ae_import_tfib_ae_import_pool
 
static fib_ae_export_tfib_ae_export_pool
 

Typedef Documentation

◆ fib_ae_export_t

A description of the need to export routes to one or more export tables.

◆ fib_ae_import_t

A description of the need to import routes from the export table.

Function Documentation

◆ fib_ae_export_format()

u8* fib_ae_export_format ( fib_node_index_t  expi,
u8 s 
)

Definition at line 540 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_ae_export_import_add()

static void fib_ae_export_import_add ( fib_ae_export_t export,
fib_ae_import_t import 
)
static

Definition at line 226 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_ae_import_format()

u8* fib_ae_import_format ( fib_node_index_t  impi,
u8 s 
)

Definition at line 511 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_cover_change()

void fib_attached_export_cover_change ( fib_entry_t fib_entry)

If this entry is tracking a cover (in another table) then that cover has changed.

re-evaluate import.

Definition at line 495 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_cover_modified_i()

static void fib_attached_export_cover_modified_i ( fib_entry_t fib_entry)
static

Definition at line 462 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_cover_update()

void fib_attached_export_cover_update ( fib_entry_t fib_entry)

If this entry is tracking a cover (in another table) then that cover has been updated.

re-evaluate import.

Definition at line 505 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_covered_added()

void fib_attached_export_covered_added ( fib_entry_t cover,
fib_node_index_t  covered 
)

Definition at line 398 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_covered_removed()

void fib_attached_export_covered_removed ( fib_entry_t cover,
fib_node_index_t  covered 
)

Definition at line 430 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_import()

void fib_attached_export_import ( fib_entry_t fib_entry,
fib_node_index_t  export_fib 
)

FIB attached export.

what's it all about? say one does this: set int ip table Gig0 2 set int ip addr Gig0 10.0.0.1/24 Ggi0 is in table 2 with a connected address. Now we add a routing matching said connected in a different table ip route add table 3 10.0.0.0/24 via Gig0 How do we expect traffic in table 3 to be forwarded? Clearly out of Ggi0. It's an attached route, hence we are saying that we can ARP for hosts in the attached subnet. and we can. but any ARP entries we send we be received on Gig0, but since Gig0 is in table 2, it will install the adj-fins in table 2. So traffic in table 3 will never hit an adj-fib and hence always the glean, and so thus be effectively dropped. How do we fix this? Attached Export !! All more specfiic entries in table 2 that track and are covered by the connected are automatically exported into table 3. Now table 3 also has adj-fibs (and the local) so traffic to hosts is restored.

Definition at line 240 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_attached_export_purge()

void fib_attached_export_purge ( fib_entry_t fib_entry)

All the imported entries need to be purged.

Definition at line 316 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_entry_ae_add_or_lock()

static fib_ae_export_t* fib_entry_ae_add_or_lock ( fib_node_index_t  connected)
static

Definition at line 95 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_entry_covered_walk_import()

static int fib_entry_covered_walk_import ( fib_entry_t cover,
fib_node_index_t  covered,
void *  ctx 
)
static

Call back when walking a connected prefix's covered prefixes for import.

Definition at line 209 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_entry_import_add()

static void fib_entry_import_add ( fib_ae_import_t import,
fib_node_index_t  entry_index 
)
static

Definition at line 151 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ fib_entry_import_remove()

static void fib_entry_import_remove ( fib_ae_import_t import,
fib_node_index_t  entry_index 
)
static

Definition at line 126 of file fib_attached_export.c.

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Variable Documentation

◆ fib_ae_export_pool

fib_ae_export_t* fib_ae_export_pool
static

Definition at line 92 of file fib_attached_export.c.

◆ fib_ae_import_pool

fib_ae_import_t* fib_ae_import_pool
static

Definition at line 91 of file fib_attached_export.c.