FD.io VPP  v19.01.3-6-g70449b9b9
Vector Packet Processing
gbp_contract.h File Reference
+ Include dependency graph for gbp_contract.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  gbp_contract_key_t_
 The key for an Contract. More...
 
struct  gbp_next_hop_t_
 
struct  gbp_rule_t_
 
struct  gbp_contract_t_
 A Group Based Policy Contract. More...
 
struct  gbp_contract_db_t_
 EPG src,dst pair to ACL mapping table, aka contract DB. More...
 

Macros

#define foreach_gbp_hash_mode
 
#define foreach_gbp_rule_action
 
#define foreach_gbp_policy_node
 
#define GBP_POLICY_N_NODES   (GBP_POLICY_NODE_IP6+1)
 
#define FOR_EACH_GBP_POLICY_NODE(pnode)   for (pnode = GBP_POLICY_NODE_L2; pnode < GBP_POLICY_N_NODES; pnode++)
 

Typedefs

typedef struct gbp_contract_key_t_ gbp_contract_key_t
 The key for an Contract. More...
 
typedef struct gbp_next_hop_t_ gbp_next_hop_t
 
typedef enum gbp_hash_mode_t_ gbp_hash_mode_t
 
typedef enum gbp_rule_action_t_ gbp_rule_action_t
 
typedef enum gbp_policy_node_t_ gbp_policy_node_t
 
typedef struct gbp_rule_t_ gbp_rule_t
 
typedef struct gbp_contract_t_ gbp_contract_t
 A Group Based Policy Contract. More...
 
typedef struct gbp_contract_db_t_ gbp_contract_db_t
 EPG src,dst pair to ACL mapping table, aka contract DB. More...
 
typedef int(* gbp_contract_cb_t) (gbp_contract_t *gbpe, void *ctx)
 

Enumerations

enum  gbp_hash_mode_t_ { foreach_gbp_hash_mode }
 
enum  gbp_rule_action_t_ { foreach_gbp_rule_action }
 
enum  gbp_policy_node_t_ { foreach_gbp_policy_node }
 

Functions

int gbp_contract_update (epg_id_t src_epg, epg_id_t dst_epg, u32 acl_index, index_t *rules, u16 *allowed_ethertypes)
 
int gbp_contract_delete (epg_id_t src_epg, epg_id_t dst_epg)
 
index_t gbp_rule_alloc (gbp_rule_action_t action, gbp_hash_mode_t hash_mode, index_t *nhs)
 
index_t gbp_next_hop_alloc (const ip46_address_t *ip, index_t grd, const mac_address_t *mac, index_t gbd)
 
void gbp_contract_walk (gbp_contract_cb_t bgpe, void *ctx)
 
u8format_gbp_contract (u8 *s, va_list *args)
 
static index_t gbp_contract_find (gbp_contract_key_t *key)
 
static gbp_contract_tgbp_contract_get (index_t gci)
 
static gbp_rule_tgbp_rule_get (index_t gui)
 

Variables

gbp_contract_db_t gbp_contract_db
 DP functions and databases. More...
 
gbp_contract_tgbp_contract_pool
 
gbp_rule_tgbp_rule_pool
 

Macro Definition Documentation

◆ FOR_EACH_GBP_POLICY_NODE

#define FOR_EACH_GBP_POLICY_NODE (   pnode)    for (pnode = GBP_POLICY_NODE_L2; pnode < GBP_POLICY_N_NODES; pnode++)

Definition at line 90 of file gbp_contract.h.

◆ foreach_gbp_hash_mode

#define foreach_gbp_hash_mode
Value:
_(SRC_IP, "src-ip") \
_(DST_IP, "dst-ip") \
_(SYMMETRIC, "symmetric")

Definition at line 53 of file gbp_contract.h.

◆ foreach_gbp_policy_node

#define foreach_gbp_policy_node
Value:
_(L2, "L2") \
_(IP4, "ip4") \
_(IP6, "ip6")
Definition: lisp_types.h:37
Definition: lisp_types.h:38

Definition at line 77 of file gbp_contract.h.

◆ foreach_gbp_rule_action

#define foreach_gbp_rule_action
Value:
_(PERMIT, "permit") \
_(DENY, "deny") \
_(REDIRECT, "redirect")

Definition at line 65 of file gbp_contract.h.

◆ GBP_POLICY_N_NODES

#define GBP_POLICY_N_NODES   (GBP_POLICY_NODE_IP6+1)

Definition at line 88 of file gbp_contract.h.

Typedef Documentation

◆ gbp_contract_cb_t

typedef int(* gbp_contract_cb_t) (gbp_contract_t *gbpe, void *ctx)

Definition at line 153 of file gbp_contract.h.

◆ gbp_contract_db_t

EPG src,dst pair to ACL mapping table, aka contract DB.

◆ gbp_contract_key_t

The key for an Contract.

◆ gbp_contract_t

A Group Based Policy Contract.

Determines the ACL that applies to traffic pass between two endpoint groups

◆ gbp_hash_mode_t

◆ gbp_next_hop_t

◆ gbp_policy_node_t

◆ gbp_rule_action_t

◆ gbp_rule_t

typedef struct gbp_rule_t_ gbp_rule_t

Enumeration Type Documentation

◆ gbp_hash_mode_t_

Enumerator
foreach_gbp_hash_mode 

Definition at line 58 of file gbp_contract.h.

◆ gbp_policy_node_t_

Enumerator
foreach_gbp_policy_node 

Definition at line 82 of file gbp_contract.h.

◆ gbp_rule_action_t_

Enumerator
foreach_gbp_rule_action 

Definition at line 70 of file gbp_contract.h.

Function Documentation

◆ format_gbp_contract()

u8* format_gbp_contract ( u8 s,
va_list *  args 
)

Definition at line 606 of file gbp_contract.c.

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

◆ gbp_contract_delete()

int gbp_contract_delete ( epg_id_t  src_epg,
epg_id_t  dst_epg 
)

Definition at line 496 of file gbp_contract.c.

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

◆ gbp_contract_find()

static index_t gbp_contract_find ( gbp_contract_key_t key)
inlinestatic

Definition at line 164 of file gbp_contract.h.

+ Here is the caller graph for this function:

◆ gbp_contract_get()

static gbp_contract_t* gbp_contract_get ( index_t  gci)
inlinestatic

Definition at line 179 of file gbp_contract.h.

+ Here is the caller graph for this function:

◆ gbp_contract_update()

int gbp_contract_update ( epg_id_t  src_epg,
epg_id_t  dst_epg,
u32  acl_index,
index_t rules,
u16 allowed_ethertypes 
)

Definition at line 436 of file gbp_contract.c.

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

◆ gbp_contract_walk()

void gbp_contract_walk ( gbp_contract_cb_t  bgpe,
void *  ctx 
)

Definition at line 524 of file gbp_contract.c.

+ Here is the caller graph for this function:

◆ gbp_next_hop_alloc()

index_t gbp_next_hop_alloc ( const ip46_address_t *  ip,
index_t  grd,
const mac_address_t mac,
index_t  gbd 
)

Definition at line 59 of file gbp_contract.c.

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

◆ gbp_rule_alloc()

index_t gbp_rule_alloc ( gbp_rule_action_t  action,
gbp_hash_mode_t  hash_mode,
index_t nhs 
)

Definition at line 44 of file gbp_contract.c.

+ Here is the caller graph for this function:

◆ gbp_rule_get()

static gbp_rule_t* gbp_rule_get ( index_t  gui)
inlinestatic

Definition at line 187 of file gbp_contract.h.

+ Here is the caller graph for this function:

Variable Documentation

◆ gbp_contract_db

gbp_contract_db_t gbp_contract_db

DP functions and databases.

DP functions and databases.

Definition at line 29 of file gbp_contract.c.

◆ gbp_contract_pool

gbp_contract_t* gbp_contract_pool

Definition at line 31 of file gbp_contract.c.

◆ gbp_rule_pool

gbp_rule_t* gbp_rule_pool

Definition at line 37 of file gbp_contract.c.