Lines Matching refs:fib4_rt
232 struct nsim_fib4_rt *fib4_rt; in nsim_fib4_rt_create() local
234 fib4_rt = kzalloc(sizeof(*fib4_rt), GFP_ATOMIC); in nsim_fib4_rt_create()
235 if (!fib4_rt) in nsim_fib4_rt_create()
238 nsim_fib_rt_init(data, &fib4_rt->common, &fen_info->dst, sizeof(u32), in nsim_fib4_rt_create()
241 fib4_rt->fi = fen_info->fi; in nsim_fib4_rt_create()
242 fib_info_hold(fib4_rt->fi); in nsim_fib4_rt_create()
243 fib4_rt->tos = fen_info->tos; in nsim_fib4_rt_create()
244 fib4_rt->type = fen_info->type; in nsim_fib4_rt_create()
246 return fib4_rt; in nsim_fib4_rt_create()
249 static void nsim_fib4_rt_destroy(struct nsim_fib4_rt *fib4_rt) in nsim_fib4_rt_destroy() argument
251 fib_info_put(fib4_rt->fi); in nsim_fib4_rt_destroy()
252 nsim_fib_rt_fini(&fib4_rt->common); in nsim_fib4_rt_destroy()
253 kfree(fib4_rt); in nsim_fib4_rt_destroy()
272 const struct nsim_fib4_rt *fib4_rt, in nsim_fib4_rt_hw_flags_set() argument
275 u32 *p_dst = (u32 *) fib4_rt->common.key.addr; in nsim_fib4_rt_hw_flags_set()
276 int dst_len = fib4_rt->common.key.prefix_len; in nsim_fib4_rt_hw_flags_set()
279 fri.fi = fib4_rt->fi; in nsim_fib4_rt_hw_flags_set()
280 fri.tb_id = fib4_rt->common.key.tb_id; in nsim_fib4_rt_hw_flags_set()
283 fri.tos = fib4_rt->tos; in nsim_fib4_rt_hw_flags_set()
284 fri.type = fib4_rt->type; in nsim_fib4_rt_hw_flags_set()
291 struct nsim_fib4_rt *fib4_rt, in nsim_fib4_rt_add() argument
302 &fib4_rt->common.ht_node, in nsim_fib4_rt_add()
309 nsim_fib4_rt_hw_flags_set(net, fib4_rt, true); in nsim_fib4_rt_add()
319 struct nsim_fib4_rt *fib4_rt, in nsim_fib4_rt_replace() argument
329 &fib4_rt->common.ht_node, in nsim_fib4_rt_replace()
336 nsim_fib4_rt_hw_flags_set(net, fib4_rt, true); in nsim_fib4_rt_replace()
348 struct nsim_fib4_rt *fib4_rt, *fib4_rt_old; in nsim_fib4_rt_insert() local
351 fib4_rt = nsim_fib4_rt_create(data, fen_info); in nsim_fib4_rt_insert()
352 if (!fib4_rt) in nsim_fib4_rt_insert()
357 err = nsim_fib4_rt_add(data, fib4_rt, extack); in nsim_fib4_rt_insert()
359 err = nsim_fib4_rt_replace(data, fib4_rt, fib4_rt_old, extack); in nsim_fib4_rt_insert()
362 nsim_fib4_rt_destroy(fib4_rt); in nsim_fib4_rt_insert()
371 struct nsim_fib4_rt *fib4_rt; in nsim_fib4_rt_remove() local
373 fib4_rt = nsim_fib4_rt_lookup(&data->fib_rt_ht, fen_info); in nsim_fib4_rt_remove()
374 if (WARN_ON_ONCE(!fib4_rt)) in nsim_fib4_rt_remove()
377 rhashtable_remove_fast(&data->fib_rt_ht, &fib4_rt->common.ht_node, in nsim_fib4_rt_remove()
380 nsim_fib4_rt_destroy(fib4_rt); in nsim_fib4_rt_remove()
785 struct nsim_fib4_rt *fib4_rt; in nsim_fib4_rt_free() local
787 fib4_rt = container_of(fib_rt, struct nsim_fib4_rt, common); in nsim_fib4_rt_free()
788 nsim_fib4_rt_hw_flags_set(devlink_net(devlink), fib4_rt, false); in nsim_fib4_rt_free()
790 nsim_fib4_rt_destroy(fib4_rt); in nsim_fib4_rt_free()