Lines Matching full:dd
139 handle_default_change(struct dpdk_lpm6_data *dd, struct rib_cmd_info *rc) in handle_default_change() argument
142 rte_ext = (struct rte_lpm6_external *)dd->lpm6; in handle_default_change()
146 uint32_t nhidx = fib_get_nhop_idx(dd->fd, rc->rc_nh_new); in handle_default_change()
160 handle_ll_change(struct dpdk_lpm6_data *dd, struct rib_cmd_info *rc, in handle_ll_change() argument
168 pack_parent_rule(struct dpdk_lpm6_data *dd, const struct in6_addr *addr6, int plen, in pack_parent_rule() argument
177 rt = rt_get_inet6_parent(dd->fibnum, addr6, plen); in pack_parent_rule()
184 nhop_idx = fib_get_nhop_idx(dd->fd, rt_get_raw_nhop(rt)); in pack_parent_rule()
195 handle_gu_change(struct dpdk_lpm6_data *dd, const struct rib_cmd_info *rc, in handle_gu_change() argument
208 uint32_t nhidx = fib_get_nhop_idx(dd->fd, rc->rc_nh_new); in handle_gu_change()
210 FIB_PRINTF(LOG_INFO, dd->fd, "nhop limit reached, need rebuild"); in handle_gu_change()
214 ret = rte_lpm6_add(dd->lpm6, (const uint8_t *)addr6, in handle_gu_change()
216 FIB_PRINTF(LOG_DEBUG, dd->fd, "DPDK GU: %s %s/%d nhop %u -> %u ret: %d", in handle_gu_change()
219 rc->rc_nh_old != NULL ? fib_get_nhop_idx(dd->fd, rc->rc_nh_old) : 0, in handle_gu_change()
229 lsp_rule = pack_parent_rule(dd, addr6, plen, &parent_plen, in handle_gu_change()
232 ret = rte_lpm6_delete(dd->lpm6, (const uint8_t *)addr6, plen, lsp_rule); in handle_gu_change()
233 FIB_PRINTF(LOG_DEBUG, dd->fd, "DPDK GU: %s %s/%d -> /%d nhop %u -> %u ret: %d", in handle_gu_change()
234 "DEL", abuf, plen, parent_plen, fib_get_nhop_idx(dd->fd, rc->rc_nh_old), in handle_gu_change()
239 FIB_PRINTF(LOG_INFO, dd->fd, "error: %d", ret); in handle_gu_change()
248 handle_any_change(struct dpdk_lpm6_data *dd, struct rib_cmd_info *rc) in handle_any_change() argument
258 ret = handle_ll_change(dd, rc, addr6, plen, scopeid); in handle_any_change()
260 ret = handle_default_change(dd, rc); in handle_any_change()
262 ret = handle_gu_change(dd, rc, &addr6, plen); in handle_any_change()
265 FIB_PRINTF(LOG_INFO, dd->fd, "error handling route"); in handle_any_change()
273 struct dpdk_lpm6_data *dd; in handle_rtable_change_cb() local
275 dd = (struct dpdk_lpm6_data *)_data; in handle_rtable_change_cb()
277 return (handle_any_change(dd, rc)); in handle_rtable_change_cb()
281 destroy_dd(struct dpdk_lpm6_data *dd) in destroy_dd() argument
284 FIB_PRINTF(LOG_INFO, dd->fd, "destroy dd %p", dd); in destroy_dd()
285 if (dd->lpm6 != NULL) in destroy_dd()
286 rte_lpm6_free(dd->lpm6); in destroy_dd()
287 free(dd, M_TEMP); in destroy_dd()
300 struct dpdk_lpm6_data *dd = (struct dpdk_lpm6_data *)_data; in add_route_cb() local
317 fib_get_nhop_idx(dd->fd, nh); in add_route_cb()
323 FIB_PRINTF(LOG_DEBUG, dd->fd, "Operating on %s/%d", abuf, plen); in add_route_cb()
331 FIB_PRINTF(LOG_DEBUG, dd->fd, "Adding default route"); in add_route_cb()
332 return (handle_default_change(dd, &rc)); in add_route_cb()
335 uint32_t nhidx = fib_get_nhop_idx(dd->fd, nh); in add_route_cb()
337 FIB_PRINTF(LOG_INFO, dd->fd, "unable to get nhop index"); in add_route_cb()
340 ret = rte_lpm6_add(dd->lpm6, (const uint8_t *)&addr6, plen, nhidx, 1); in add_route_cb()
341 FIB_PRINTF(LOG_DEBUG, dd->fd, "ADD %p %s/%d nh %u = %d", in add_route_cb()
342 dd->lpm6, abuf, plen, nhidx, ret); in add_route_cb()
345 FIB_PRINTF(LOG_INFO, dd->fd, "rte_lpm6_add() returned %d", ret); in add_route_cb()
347 dd->hit_tables = 1; in add_route_cb()
350 dd->routes_failed++; in add_route_cb()
353 dd->routes_added++; in add_route_cb()
361 struct dpdk_lpm6_data *dd; in check_dump_success() local
363 dd = (struct dpdk_lpm6_data *)_data; in check_dump_success()
365 FIB_PRINTF(LOG_INFO, dd->fd, "scan completed. added: %zu failed: %zu", in check_dump_success()
366 dd->routes_added, dd->routes_failed); in check_dump_success()
367 if (dd->hit_tables || dd->routes_failed > 0) in check_dump_success()
370 FIB_PRINTF(LOG_INFO, dd->fd, in check_dump_success()
372 dd->fibnum, dd->routes_added); in check_dump_success()
375 dp->arg = dd->lpm6; in check_dump_success()
381 estimate_scale(const struct dpdk_lpm6_data *dd_src, struct dpdk_lpm6_data *dd) in estimate_scale() argument
386 dd->number_tbl8s = dd_src->number_tbl8s * 2; in estimate_scale()
388 dd->number_tbl8s = dd_src->number_tbl8s; in estimate_scale()
396 struct dpdk_lpm6_data *dd; in build_table() local
399 dd = malloc(sizeof(struct dpdk_lpm6_data), M_TEMP, M_NOWAIT | M_ZERO); in build_table()
400 if (dd == NULL) { in build_table()
404 dd->fibnum = dd_prev->fibnum; in build_table()
405 dd->fd = fd; in build_table()
407 estimate_scale(dd_prev, dd); in build_table()
409 struct rte_lpm6_config cfg = {.number_tbl8s = dd->number_tbl8s}; in build_table()
413 free(dd, M_TEMP); in build_table()
416 dd->lpm6 = lpm6; in build_table()
418 ext->nh_idx = fib_get_nhop_array(dd->fd); in build_table()
420 FIB_PRINTF(LOG_INFO, fd, "allocated %u tbl8s", dd->number_tbl8s); in build_table()
422 return (dd); in build_table()
428 struct dpdk_lpm6_data *dd, dd_base; in init_table() local
435 dd = &dd_base; in init_table()
438 dd = (struct dpdk_lpm6_data *)_old_data; in init_table()
442 dd = build_table(dd, fd); in init_table()
443 if (dd == NULL) { in init_table()
448 *data = dd; in init_table()