22 #include <rte_compat.h>
28 #define RTE_RIB6_IPV6_ADDR_SIZE 16
66 if ((dst == NULL) || (src == NULL))
87 if ((ip1 == NULL) || (ip2 == NULL))
89 for (i = 0; i < RTE_RIB6_IPV6_ADDR_SIZE; i++) {
107 static inline uint8_t
113 part =
RTE_MAX((int16_t)depth - (byte * 8), 0);
114 part = (part > 8) ? 8 : part;
115 return (uint16_t)(~UINT8_MAX) >> part;
130 struct rte_rib6_node *
132 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
145 struct rte_rib6_node *
162 struct rte_rib6_node *
164 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
190 struct rte_rib6_node *
192 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE],
193 uint8_t depth,
struct rte_rib6_node *last,
int flag);
208 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
224 struct rte_rib6_node *
226 const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth);
242 uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE]);
__rte_experimental void rte_rib6_remove(struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth)
__rte_experimental struct rte_rib6_node * rte_rib6_insert(struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth)
__rte_experimental struct rte_rib6_node * rte_rib6_get_nxt(struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth, struct rte_rib6_node *last, int flag)
__rte_experimental struct rte_rib6_node * rte_rib6_lookup_exact(struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE], uint8_t depth)
__rte_experimental struct rte_rib6_node * rte_rib6_lookup_parent(struct rte_rib6_node *ent)
__rte_experimental void * rte_rib6_get_ext(struct rte_rib6_node *node)
__rte_experimental int rte_rib6_get_nh(const struct rte_rib6_node *node, uint64_t *nh)
__rte_experimental struct rte_rib6_node * rte_rib6_lookup(struct rte_rib6 *rib, const uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
__rte_experimental struct rte_rib6 * rte_rib6_find_existing(const char *name)
static void rte_rib6_copy_addr(uint8_t *dst, const uint8_t *src)
__rte_experimental int rte_rib6_get_ip(const struct rte_rib6_node *node, uint8_t ip[RTE_RIB6_IPV6_ADDR_SIZE])
static int rte_rib6_is_equal(const uint8_t *ip1, const uint8_t *ip2)
__rte_experimental struct rte_rib6 * rte_rib6_create(const char *name, int socket_id, const struct rte_rib6_conf *conf)
static void * rte_memcpy(void *dst, const void *src, size_t n)
__rte_experimental int rte_rib6_get_depth(const struct rte_rib6_node *node, uint8_t *depth)
static uint8_t get_msk_part(uint8_t depth, int byte)
__rte_experimental int rte_rib6_set_nh(struct rte_rib6_node *node, uint64_t nh)
__rte_experimental void rte_rib6_free(struct rte_rib6 *rib)