52#define FIB_MSG_RP_SIGNAL_UNREACHABLE_DESTINATION (0x99)
57#define FIB_MSG_RP_SIGNAL_DESTINATION_USED (0x98)
62#define FIB_MSG_RP_SIGNAL_SOURCE_ROUTE_CREATED (0x97)
75#define FIB_LIFETIME_NO_EXPIRE (0xFFFFFFFFffffffff)
80#define FIB_FLAG_RPL_ROUTE (1UL << 0)
85#define FIB_FLAG_NET_PREFIX_SHIFT (24)
90#define FIB_FLAG_NET_PREFIX_MASK (0xffUL << FIB_FLAG_NET_PREFIX_SHIFT)
138 size_t dst_size, uint32_t dst_flags, uint8_t *next_hop,
139 size_t next_hop_size, uint32_t next_hop_flags,
158 uint8_t *next_hop,
size_t next_hop_size,
159 uint32_t next_hop_flags, uint32_t lifetime);
202 uint8_t *next_hop,
size_t *next_hop_size,
203 uint32_t* next_hop_flags, uint8_t *dst,
size_t dst_size,
228 size_t *dst_set_size);
244 uint32_t sr_flags, uint32_t sr_lifetime);
260 uint32_t *sr_flags, uint32_t *sr_lifetime);
277 uint8_t *dst,
size_t *dst_size);
294 uint32_t *sr_flags, uint32_t *sr_lifetime);
352 uint8_t *dst,
size_t dst_size);
372 bool keep_remaining_route);
389 bool keep_remaining_route);
408 uint8_t *addr_old,
size_t addr_old_size,
409 uint8_t *addr_new,
size_t addr_new_size);
426 uint8_t *addr,
size_t *addr_size);
459 uint8_t *addr_list,
size_t *addr_list_size,
size_t *element_size,
508int fib_devel_get_lifetime(
fib_table_t *table, uint64_t *lifetime, uint8_t *dst,
int16_t kernel_pid_t
Unique process identifier.
void fib_init(fib_table_t *table)
initializes all FIB entries with 0
int fib_sr_entry_overwrite(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr_old, size_t addr_old_size, uint8_t *addr_new, size_t addr_new_size)
overwrites the address of an entry with a new address
int fib_sr_next(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t **sr_path_entry)
iterates to the next entry in the sr_path
int fib_sr_entry_append(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *dst, size_t dst_size)
append a new entry at the end of the source route, i.e.
void fib_print_fib_table(fib_table_t *table)
Prints the FIB content (does not print the entries)
int fib_sr_get_route(fib_table_t *table, uint8_t *dst, size_t dst_size, kernel_pid_t *sr_iface_id, uint32_t *sr_flags, uint8_t *addr_list, size_t *addr_list_size, size_t *element_size, bool reverse, fib_sr_t **fib_sr)
copies a source route to the given destination
int fib_sr_search(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t addr_size, fib_sr_entry_t **sr_path_entry)
searches the entry containing the given address
void fib_print_sr(fib_table_t *table, fib_sr_t *sr)
Prints the given FIB sourceroute.
int fib_sr_entry_get_address(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t *sr_path_entry, uint8_t *addr, size_t *addr_size)
writes the address of an entry to the given out pointers
void fib_deinit(fib_table_t *table)
de-initializes the FIB entries and source route entries
int fib_sr_set(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *sr_iface_id, uint32_t *sr_flags, uint32_t *sr_lifetime)
sets the provided parameters in the given sr header if a given parameter is NULL its considered not t...
void fib_print_notify_rrp(void)
Prints the kernel_pid_t for all registered RRPs.
int fib_get_destination_set(fib_table_t *table, uint8_t *prefix, size_t prefix_size, fib_destination_set_entry_t *dst_set, size_t *dst_set_size)
provides a set of destination addresses matching the given prefix If the out buffer is insufficient l...
int fib_update_entry(fib_table_t *table, uint8_t *dst, size_t dst_size, uint8_t *next_hop, size_t next_hop_size, uint32_t next_hop_flags, uint32_t lifetime)
Updates an entry in the FIB table with next hop and lifetime.
void fib_flush(fib_table_t *table, kernel_pid_t interface)
removes all entries from the corresponding FIB table and interface combination
void fib_print_routes(fib_table_t *table)
Prints the FIB content.
int fib_get_num_used_entries(fib_table_t *table)
returns the actual number of used FIB entries
int fib_register_rp(fib_table_t *table, uint8_t *prefix, size_t prefix_addr_type_size)
Registration of a routing protocol handler function.
int fib_sr_entry_add(fib_table_t *table, fib_sr_t *fib_sr, fib_sr_entry_t *sr_path_entry, uint8_t *addr, size_t addr_size, bool keep_remaining_route)
adds a new entry behind a given sr entry
int fib_sr_read_destination(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *dst, size_t *dst_size)
reads the destination address from the sr head to the given location
int fib_sr_read_head(fib_table_t *table, fib_sr_t *fib_sr, kernel_pid_t *sr_iface_id, uint32_t *sr_flags, uint32_t *sr_lifetime)
reads the information from the sr head to the given locations
int fib_sr_delete(fib_table_t *table, fib_sr_t *fib_sr)
deletes the sr
int fib_add_entry(fib_table_t *table, kernel_pid_t iface_id, uint8_t *dst, size_t dst_size, uint32_t dst_flags, uint8_t *next_hop, size_t next_hop_size, uint32_t next_hop_flags, uint32_t lifetime)
Adds a new entry in the corresponding FIB table for global destination and next hop.
int fib_get_next_hop(fib_table_t *table, kernel_pid_t *iface_id, uint8_t *next_hop, size_t *next_hop_size, uint32_t *next_hop_flags, uint8_t *dst, size_t dst_size, uint32_t dst_flags)
provides a next hop for a given destination
int fib_sr_entry_delete(fib_table_t *table, fib_sr_t *fib_sr, uint8_t *addr, size_t addr_size, bool keep_remaining_route)
removes an entry from a source route
int fib_sr_create(fib_table_t *table, fib_sr_t **fib_sr, kernel_pid_t sr_iface_id, uint32_t sr_flags, uint32_t sr_lifetime)
creates a new source route
void fib_remove_entry(fib_table_t *table, uint8_t *dst, size_t dst_size)
removes an entry from the corresponding FIB table
#define UNIVERSAL_ADDRESS_SIZE
size of the used addresses in bytes
Scheduler API definition.
entry used to collect available destinations
size_t dest_size
The destination address size.
Container descriptor for a FIB source route entry.
Container descriptor for a FIB source route.
Meta information of a FIB table.
Routing Protocol (RP) message content to request/reply notification.
uint8_t address_size
The address size.
uint8_t * address
The pointer to the address.
uint32_t address_flags
The flags for the given address.
Types and functions for operating fib tables.