FD.io VPP  v19.04.4-rc0-5-ge88582fac
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_policy_error
 
#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 (sclass_t sclass, sclass_t dclass, u32 acl_index, index_t *rules, u16 *allowed_ethertypes, u32 *stats_index)
 
int gbp_contract_delete (sclass_t sclass, sclass_t dclass)
 
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
 
vlib_combined_counter_main_t gbp_contract_permit_counters
 
vlib_combined_counter_main_t gbp_contract_drop_counters
 

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 100 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 63 of file gbp_contract.h.

◆ foreach_gbp_policy_error

#define foreach_gbp_policy_error
Value:
_(ALLOW_NO_SCLASS, "allow-no-sclass") \
_(ALLOW_INTRA, "allow-intra-sclass") \
_(ALLOW_A_BIT, "allow-a-bit-set") \
_(ALLOW_CONTRACT, "allow-contract") \
_(DROP_CONTRACT, "drop-contract") \
_(DROP_ETHER_TYPE, "drop-ether-type") \
_(DROP_NO_CONTRACT, "drop-no-contract") \
_(DROP_NO_DCLASS, "drop-no-dclass")

Definition at line 21 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 87 of file gbp_contract.h.

◆ foreach_gbp_rule_action

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

Definition at line 75 of file gbp_contract.h.

◆ GBP_POLICY_N_NODES

#define GBP_POLICY_N_NODES   (GBP_POLICY_NODE_IP6+1)

Definition at line 98 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 164 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 68 of file gbp_contract.h.

◆ gbp_policy_node_t_

Enumerator
foreach_gbp_policy_node 

Definition at line 92 of file gbp_contract.h.

◆ gbp_rule_action_t_

Enumerator
foreach_gbp_rule_action 

Definition at line 80 of file gbp_contract.h.

Function Documentation

◆ format_gbp_contract()

u8* format_gbp_contract ( u8 s,
va_list *  args 
)

Definition at line 627 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 ( sclass_t  sclass,
sclass_t  dclass 
)

Definition at line 516 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 175 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 190 of file gbp_contract.h.

+ Here is the caller graph for this function:

◆ gbp_contract_update()

int gbp_contract_update ( sclass_t  sclass,
sclass_t  dclass,
u32  acl_index,
index_t rules,
u16 allowed_ethertypes,
u32 stats_index 
)

Definition at line 447 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 544 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 70 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 55 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 198 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_drop_counters

vlib_combined_counter_main_t gbp_contract_drop_counters

Definition at line 49 of file gbp_contract.c.

◆ gbp_contract_permit_counters

vlib_combined_counter_main_t gbp_contract_permit_counters

Definition at line 44 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.