RTRlib
|
Data Structures | |
struct | pfx_record |
Typedefs | |
typedef void(* | pfx_for_each_fp )(const struct pfx_record *pfx_record, void *data) |
typedef void(* | pfx_update_fp )(struct pfx_table *pfx_table, const struct pfx_record record, const bool added) |
Enumerations | |
enum | pfx_rtvals { PFX_SUCCESS = 0, PFX_ERROR = -1, PFX_DUPLICATE_RECORD = -2, PFX_RECORD_NOT_FOUND = -3 } |
enum | pfxv_state { BGP_PFXV_STATE_VALID, BGP_PFXV_STATE_NOT_FOUND, BGP_PFXV_STATE_INVALID } |
Functions | |
void | pfx_table_for_each_ipv4_record (struct pfx_table *pfx_table, pfx_for_each_fp fp, void *data) |
void | pfx_table_for_each_ipv6_record (struct pfx_table *pfx_table, pfx_for_each_fp fp, void *data) |
int | pfx_table_validate_r (struct pfx_table *pfx_table, struct pfx_record **reason, unsigned int *reason_len, const uint32_t asn, const struct lrtr_ip_addr *prefix, const uint8_t mask_len, enum pfxv_state *result) |
typedef void(* pfx_for_each_fp)(const struct pfx_record *pfx_record, void *data) |
A function pointer that is called for each record in the pfx_table.
pfx_record | |
data | forwarded data which the user has passed to pfx_table_for_each_ipv4_record() or pfx_table_for_each_ipv6_record() |
typedef void(* pfx_update_fp)(struct pfx_table *pfx_table, const struct pfx_record record, const bool added) |
A function pointer that is called if an record was added to the pfx_table or was removed from the pfx_table.
pfx_table | which was updated. |
record | pfx_record that was modified. |
added | True if the record was added, false if the record was removed. |
enum pfx_rtvals |
Possible return values for pfx_ functions.
Enumerator | |
---|---|
PFX_SUCCESS |
Operation was successful. |
PFX_ERROR |
Error occured. |
PFX_DUPLICATE_RECORD |
The supplied pfx_record already exists in the pfx_table. |
PFX_RECORD_NOT_FOUND |
pfx_record wasn't found in the pfx_table. |
enum pfxv_state |
Validation states returned from pfx_validate_origin.
Enumerator | |
---|---|
BGP_PFXV_STATE_VALID |
A valid certificate for the pfx_record exists. |
BGP_PFXV_STATE_NOT_FOUND |
No certificate for the route exists. |
BGP_PFXV_STATE_INVALID |
One or more records that match the input prefix exists in the pfx_table but the prefix max_len or ASN does'nt match. |
void pfx_table_for_each_ipv4_record | ( | struct pfx_table * | pfx_table, |
pfx_for_each_fp | fp, | ||
void * | data | ||
) |
Iterates over all IPv4 records in the pfx_table.
For every pfx_record the function fp is called. The pfx_record and the data pointer is passed to the fp.
[in] | pfx_table | |
[in] | fp | A pointer to a callback function with the signature pfx_for_each_fp . |
[in] | data | This parameter is forwarded to the callback function. |
void pfx_table_for_each_ipv6_record | ( | struct pfx_table * | pfx_table, |
pfx_for_each_fp | fp, | ||
void * | data | ||
) |
Iterates over all IPv6 records in the pfx_table.
For every pfx_record the function fp is called. The pfx_record and the data pointer is passed to the fp.
[in] | pfx_table | |
[in] | fp | A pointer to a callback function with the signature pfx_for_each_fp . |
[in] | data | This parameter is forwarded to the callback function. |
int pfx_table_validate_r | ( | struct pfx_table * | pfx_table, |
struct pfx_record ** | reason, | ||
unsigned int * | reason_len, | ||
const uint32_t | asn, | ||
const struct lrtr_ip_addr * | prefix, | ||
const uint8_t | mask_len, | ||
enum pfxv_state * | result | ||
) |
Validates the origin of a BGP-Route and returns a list of pfx_record that decided the result.
[in] | pfx_table | pfx_table to use. |
[out] | reason | Pointer to a memory area that will be used as array of pfx_records. The memory area will be overwritten. Reason must point to NULL or an allocated memory area. |
[out] | reason_len | Size of the array reason. |
[in] | asn | Autonomous system number of the Origin-AS of the route. |
[in] | prefix | Announcend network Prefix |
[in] | mask_len | Length of the network mask of the announced prefix |
[out] | result | Result of the validation. |