Hybrid ICN (hICN) plugin  v21.06-rc0-4-g18fa668
Classes | Macros | Typedefs | Enumerations | Functions | Variables
facelet.h File Reference

Facelet. More...

#include <stdbool.h>
#include <hicn/ctrl/face.h>
#include <hicn/ctrl/route.h>
Include dependency graph for facelet.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  facemgr_face_type_t
 

Macros

#define MAXSZ_FACELET   1024
 
#define FACELET_MAX_ERRORS   10
 
#define IS_VALID_NETDEVICE(netdevice)   ((netdevice.index != 0) && (netdevice.name[0] != '\0'))
 
#define foreach_face_type_layer
 
#define _(x)   FACE_TYPE_LAYER_ ## x,
 
#define foreach_face_type_encap
 
#define _(x)   FACE_TYPE_ENCAP_ ## x,
 
#define FACEMGR_FACE_TYPE_STR(x)   face_type_layer_str[x.layer], face_type_encap_str[x.encap]
 
#define FACEMGR_FACE_TYPE_UNDEFINED
 
#define FACEMGR_FACE_TYPE_NATIVE_UDP
 
#define FACEMGR_FACE_TYPE_NATIVE_TCP
 
#define FACEMGR_FACE_TYPE_OVERLAY_UDP
 
#define FACEMGR_FACE_TYPE_OVERLAY_TCP
 
#define foreach_facelet_status
 
#define _(x)   FACELET_STATUS_ ## x,
 
#define foreach_facelet_error_reason
 
#define _(x)   FACELET_ERROR_REASON_ ## x,
 
#define foreach_facelet_attr_status
 
#define _(x, y)   FACELET_ATTR_STATUS_ ## x,
 
#define foreach_facelet_attr
 
#define foreach_facelet_event
 
#define MAXSZ_EVENT__   10
 
#define MAXSZ_EVENT_   MAXSZ_EVENT_ + 1
 
#define _(x)   FACELET_EVENT_ ## x,
 
#define FACELET_ACCESSORS_H(TYPE, NAME)
 
#define _(TYPE, NAME)   FACELET_ACCESSORS_H(TYPE, NAME)
 
#define DUMP_FACELET(msg, facelet)
 

Typedefs

typedef struct facelet_s facelet_t
 

Enumerations

enum  face_type_layer_t { foreach_face_type_layer }
 
enum  face_type_encap_t { foreach_face_type_encap }
 
enum  facelet_status_t { foreach_facelet_status }
 
enum  facelet_error_reason_t { foreach_facelet_error_reason }
 
enum  facelet_attr_status_t { foreach_facelet_attr_status }
 
enum  facelet_event_t { foreach_facelet_event }
 Enumeration of the possible types of event.
 

Functions

facelet_t * facelet_create ()
 Create a facelet.
 
facelet_t * facelet_create_from_netdevice (netdevice_t *netdevice)
 
unsigned facelet_get_id (facelet_t *facelet)
 
void facelet_set_id (facelet_t *facelet, unsigned id)
 
int facelet_validate_face (const facelet_t *facelet)
 
facelet_t * facelet_create_from_face (face_t *face)
 
void facelet_free (facelet_t *facelet)
 
facelet_t * facelet_dup (const facelet_t *current_facelet)
 
int facelet_cmp (const facelet_t *f1, const facelet_t *f2)
 
bool facelet_equals (const facelet_t *facelet1, const facelet_t *facelet2)
 
bool facelet_match (const facelet_t *facelet, const facelet_t *facelet_match)
 
bool facelet_has_key (const facelet_t *facelet)
 Returns whether the specified facelet has all key attributes defined. More...
 
foreach_facelet_attr int facelet_get_face (const facelet_t *facelet, face_t **pface)
 
int facelet_merge (facelet_t *facelet, facelet_t *facelet_to_merge)
 
facelet_status_t facelet_get_status (const facelet_t *facelet)
 
void facelet_set_status (facelet_t *facelet, facelet_status_t status)
 
void facelet_set_attr_clean (facelet_t *facelet)
 
void facelet_set_error (facelet_t *facelet, facelet_error_reason_t reason)
 
void facelet_unset_error (facelet_t *facelet)
 
bool facelet_get_error (const facelet_t *facelet)
 
void facelet_set_bj_done (facelet_t *facelet)
 
void facelet_unset_bj_done (facelet_t *facelet)
 
bool facelet_is_bj_done (const facelet_t *facelet)
 
void facelet_set_au_done (facelet_t *facelet)
 
bool facelet_is_au_done (const facelet_t *facelet)
 
facelet_event_t facelet_get_event (const facelet_t *facelet)
 
void facelet_set_event (facelet_t *facelet, facelet_event_t event)
 
int facelet_add_route (facelet_t *facelet, hicn_route_t *route)
 
int facelet_remove_route (facelet_t *facelet, hicn_route_t *route, hicn_route_t **route_removed)
 
int facelet_clear_routes (facelet_t *facelet)
 
int facelet_get_route_array (const facelet_t *facelet, hicn_route_t ***route_array)
 
int facelet_snprintf (char *buf, size_t size, const facelet_t *facelet)
 
int facelet_snprintf_json (char *buf, size_t size, const facelet_t *facelet, int indent)
 

Variables

const char * face_type_layer_str []
 
const char * face_type_encap_str []
 
const char * facelet_status_str []
 
const char * facelet_error_reason_str []
 
const char * facelet_attr_status_str []
 
const char * facelet_attr_status_str_short []
 
const char * facelet_event_str []
 

Detailed Description

Facelet.

A facelet consists in partial information and annotations collected towards the contruction of the final face that will be sent to the forwarder.

It might also consist in a pattern allowing the deletion of a group of face for instance.

Macro Definition Documentation

◆ DUMP_FACELET

#define DUMP_FACELET (   msg,
  facelet 
)
Value:
do { \
char buf[MAXSZ_FACELET]; \
facelet_snprintf(buf, MAXSZ_FACELET, facelet); \
DEBUG("%s : %s", msg, buf); \
} while(0)

◆ FACELET_ACCESSORS_H

#define FACELET_ACCESSORS_H (   TYPE,
  NAME 
)
Value:
bool facelet_has_ ## NAME(const facelet_t * facelet); \
facelet_attr_status_t facelet_get_ ## NAME ## _status(const facelet_t * facelet);\
void facelet_set_ ## NAME ## _status(facelet_t * facelet, \
facelet_attr_status_t status); \
int facelet_get_ ## NAME(const facelet_t * facelet, TYPE * NAME); \
int facelet_set_ ## NAME(facelet_t * facelet, TYPE NAME); \
int facelet_unset_ ## NAME(facelet_t * facelet);

◆ FACEMGR_FACE_TYPE_NATIVE_TCP

#define FACEMGR_FACE_TYPE_NATIVE_TCP
Value:
.layer = FACE_TYPE_LAYER_3, \
.encap = FACE_TYPE_ENCAP_TCP, \
}

◆ FACEMGR_FACE_TYPE_NATIVE_UDP

#define FACEMGR_FACE_TYPE_NATIVE_UDP
Value:
.layer = FACE_TYPE_LAYER_3, \
.encap = FACE_TYPE_ENCAP_UDP, \
}

◆ FACEMGR_FACE_TYPE_OVERLAY_TCP

#define FACEMGR_FACE_TYPE_OVERLAY_TCP
Value:
.layer = FACE_TYPE_LAYER_4, \
.encap = FACE_TYPE_ENCAP_TCP, \
}

◆ FACEMGR_FACE_TYPE_OVERLAY_UDP

#define FACEMGR_FACE_TYPE_OVERLAY_UDP
Value:
.layer = FACE_TYPE_LAYER_4, \
.encap = FACE_TYPE_ENCAP_UDP, \
}

◆ FACEMGR_FACE_TYPE_UNDEFINED

#define FACEMGR_FACE_TYPE_UNDEFINED
Value:
.layer = FACE_TYPE_LAYER_UNDEFINED, \
.encap = FACE_TYPE_ENCAP_UNDEFINED, \
}

◆ foreach_face_type_encap

#define foreach_face_type_encap
Value:
_(UNDEFINED) \
_(TCP) \
_(UDP) \
_(N)

◆ foreach_face_type_layer

#define foreach_face_type_layer
Value:
_(UNDEFINED) \
_(3) \
_(4) \
_(N)

◆ foreach_facelet_attr

#define foreach_facelet_attr
Value:
_(netdevice_type_t, netdevice_type) \
_(netdevice_t, netdevice) \
_(int, family) \
_(ip_address_t, local_addr) \
_(u16, local_port) \
_(ip_address_t, remote_addr) \
_(u16, remote_port) \
_(face_state_t, admin_state) \
_(face_state_t, state) \
_(facemgr_face_type_t, face_type)

◆ foreach_facelet_attr_status

#define foreach_facelet_attr_status
Value:
_(UNDEFINED, '?') \
_(UNSET, 'X') \
_(CLEAN, ' ') \
_(DIRTY, '*') \
_(PENDING, 'P') \
_(CONFLICT, '!') \
_(N, '-')

◆ foreach_facelet_error_reason

#define foreach_facelet_error_reason
Value:
_(UNDEFINED) \
_(UNSPECIFIED_ERROR) \
_(FORWARDER_OFFLINE) \
_(PERMISSION_DENIED) \
_(INTERNAL_ERROR) \
_(N)

◆ foreach_facelet_event

#define foreach_facelet_event
Value:
_(UNDEFINED) \
_(GET) \
_(CREATE) \
_(UPDATE) \
_(DELETE) \
_(SET_UP) \
_(SET_DOWN) \
_(N)

◆ foreach_facelet_status

#define foreach_facelet_status
Value:
_(UNDEFINED) \
_(DOWN) \
_(UNCERTAIN) \
_(INCOMPLETE) \
_(CREATE) \
_(CLEAN) \
_(IGNORED) \
_(UPDATE) \
_(DELETE) \
_(DELETED) \
_(N)

Function Documentation

◆ facelet_has_key()

bool facelet_has_key ( const facelet_t *  facelet)

Returns whether the specified facelet has all key attributes defined.

Key attributes are netdevice and family. If both are present, this allows to uniquely identify a facelet, otherwise it is a 'wildcard' facelet specification and might match several facelets.

ip_address_t
Definition: ip_address.h:68
netdevice_t
Netdevice type.
Definition: face.h:73
facemgr_face_type_t
Definition: facelet.h:69