Lines Matching refs:depth

57 	uint32_t depth	:8;      /**< Rule depth. */
69 uint8_t depth; /**< Rule depth. */
75 uint8_t depth; /**< Rule depth. */
113 * Takes an array of uint8_t (IPv6 address) and masks it using the depth.
114 * It leaves untouched one bit per unit in the depth variable
118 ip6_mask_addr(uint8_t *ip, uint8_t depth)
123 part_depth = depth;
217 rule_key_init(struct rte_lpm6_rule_key *key, uint8_t *ip, uint8_t depth)
220 key->depth = depth;
235 rte_lpm6_add(lpm, rule_key->ip, rule_key->depth,
471 rule_find(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
477 rule_key_init(&rule_key, ip, depth);
492 rule_add(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth, uint32_t next_hop)
499 rule_key_init(&rule_key, ip, depth);
543 .depth = new_depth,
550 && lpm->tbl8[j].depth <= old_depth)) {
609 uint8_t bytes, uint8_t first_byte, uint8_t depth,
625 if (depth <= bits_covered) {
634 depth -= bits_covered;
635 uint32_t cnt = depth >> 3; /* depth / BYTE_SIZE */
636 if (depth & 7) /* 0b00000111 */
637 /* if depth % 8 > 0 then one more table is needed
662 uint8_t first_byte, uint8_t depth, uint32_t next_hop,
680 * If depth if smaller than this number (ie this is the last step)
683 if (depth <= bits_covered) {
684 tbl_range = 1 << (bits_covered - depth);
688 tbl[i].depth <= depth)) {
692 .depth = depth,
708 expand_rule(lpm, tbl8_gindex, depth, depth,
746 .depth = 0,
775 .depth = tbl[entry_ind].depth,
797 .depth = 0,
826 simulate_add(struct rte_lpm6 *lpm, const uint8_t *masked_ip, uint8_t depth)
839 ADD_FIRST_BYTE, 1, depth, &need_tbl_nb);
848 (uint8_t)(i + 1), depth, &need_tbl_nb);
863 rte_lpm6_add(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
875 if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM6_MAX_DEPTH))
880 ip6_mask_addr(masked_ip, depth);
883 int ret = simulate_add(lpm, masked_ip, depth);
889 int is_new_rule = rule_add(lpm, masked_ip, depth, next_hop);
898 masked_ip, ADD_FIRST_BYTE, 1, depth, next_hop,
910 depth, next_hop, is_new_rule);
1028 fill_rule6(char *buffer, const uint8_t *ip, uint8_t depth, uint32_t next_hop)
1033 rule->depth = depth;
1044 rte_lpm6_is_rule_present(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
1051 (depth < 1) || (depth > RTE_LPM6_MAX_DEPTH))
1056 ip6_mask_addr(masked_ip, depth);
1058 return rule_find(lpm, masked_ip, depth, next_hop);
1063 * NOTE: Valid range for depth parameter is 1 .. 128 inclusive.
1069 rule_delete(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth)
1075 rule_key_init(&rule_key, ip, depth);
1153 * Convert a depth to a one byte long mask
1157 depth_to_mask_1b(uint8_t depth)
1162 return (signed char)0x80 >> (depth - 1);
1170 rule_find_less_specific(struct rte_lpm6 *lpm, uint8_t *ip, uint8_t depth,
1178 if (depth == 1)
1181 rule_key_init(&rule_key, ip, depth);
1183 while (depth > 1) {
1184 depth--;
1187 mask = depth & 7; /* depth % BYTE_SIZE */
1191 rule_key.depth = depth;
1192 rule_key.ip[depth >> 3] &= mask;
1196 rule->depth = depth;
1211 rule_find_range(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
1219 if (depth <= 24) {
1223 ind += (1 << (24 - depth)) - 1;
1237 depth -= 24;
1242 while (depth > 8) {
1250 depth -= 8;
1254 ind = ip[byte] & depth_to_mask_1b(depth);
1256 ind += (1 << (8 - depth)) - 1;
1291 .depth = lsp_rule->depth,
1301 .depth = 0,
1318 rte_lpm6_delete(struct rte_lpm6 *lpm, const uint8_t *ip, uint8_t depth,
1329 if ((lpm == NULL) || (depth < 1) || (depth > RTE_LPM6_MAX_DEPTH))
1334 ip6_mask_addr(masked_ip, depth);
1338 ret = rule_delete(lpm, masked_ip, depth);
1344 rule_find_range(lpm, masked_ip, depth, &from, &to, &tbl_ind);
1347 /* find a less specific rule (a rule with smaller depth)
1350 ret = rule_find_less_specific(lpm, masked_ip, depth,
1379 depth, lsp_rule->depth,
1388 depth, 0, 0, INVALID);
1389 } else if (from->depth == depth) {
1394 .depth = lsp_rule->depth,
1404 .depth = 0,