RTRlib
pfx.h
1/*
2 * This file is part of RTRlib.
3 *
4 * This file is subject to the terms and conditions of the MIT license.
5 * See the file LICENSE in the top level directory for more details.
6 *
7 * Website: http://rtrlib.realmv6.org/
8 */
9
17#ifndef RTR_PFX_H
18#define RTR_PFX_H
19
20#include <inttypes.h>
21
22#include "rtrlib/lib/ip.h"
23
24
25
26
33
36
39
42};
43
44struct pfx_table;
45
52
55
58};
59
60
69struct pfx_record {
70 uint32_t asn;
71 struct lrtr_ip_addr prefix;
72 uint8_t min_len;
73 uint8_t max_len;
74 const struct rtr_socket *socket;
75};
76
83typedef void (*pfx_update_fp)(struct pfx_table *pfx_table, const struct pfx_record record, const bool added);
84
91typedef void (*pfx_for_each_fp)(const struct pfx_record *pfx_record, void *data);
92
93
106int 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);
107
116void pfx_table_for_each_ipv4_record(struct pfx_table *pfx_table, pfx_for_each_fp fp, void *data);
117
126void pfx_table_for_each_ipv6_record(struct pfx_table *pfx_table, pfx_for_each_fp fp, void *data);
127
128#endif
129/* @} */
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.
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.
Definition: pfx.h:91
pfxv_state
Validation states returned from pfx_validate_origin.
Definition: pfx.h:49
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.
pfx_rtvals
Possible return values for pfx_ functions.
Definition: pfx.h:30
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.
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...
Definition: pfx.h:83
@ BGP_PFXV_STATE_VALID
Definition: pfx.h:51
@ 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...
Definition: pfx.h:57
@ BGP_PFXV_STATE_NOT_FOUND
No certificate for the route exists.
Definition: pfx.h:54
@ PFX_ERROR
Definition: pfx.h:35
@ PFX_SUCCESS
Definition: pfx.h:32
@ PFX_DUPLICATE_RECORD
Definition: pfx.h:38
@ PFX_RECORD_NOT_FOUND
Definition: pfx.h:41
The lrtr_ip_addr struct stores a IPv4 or IPv6 address in host byte order.
Definition: ip.h:38
pfx_record.
Definition: pfx.h:69
A RTR socket.
Definition: rtr.h:109