From 229385955109b866a23c4ac2aa03d4d11044c39d Mon Sep 17 00:00:00 2001 From: "Enrico Loparco (eloparco)" Date: Thu, 24 Jun 2021 09:15:41 +0200 Subject: [HICN-708] Rebase with master Signed-off-by: Enrico Loparco (eloparco) Change-Id: I2122e1d61dd3b2e039972624ffbdbcb3c5610159 --- hicn-plugin/src/strategies/dpo_mw.c | 26 ++++++-------- hicn-plugin/src/strategies/dpo_mw.h | 12 +++++-- hicn-plugin/src/strategies/dpo_rr.c | 25 +++++--------- hicn-plugin/src/strategies/dpo_rr.h | 15 ++++++-- hicn-plugin/src/strategies/strategy_mw.c | 51 +++++++++++++--------------- hicn-plugin/src/strategies/strategy_mw.h | 7 ++++ hicn-plugin/src/strategies/strategy_mw_cli.c | 51 ++++++++++++---------------- hicn-plugin/src/strategies/strategy_rr.c | 47 +++++++++++-------------- hicn-plugin/src/strategies/strategy_rr.h | 7 ++++ 9 files changed, 119 insertions(+), 122 deletions(-) (limited to 'hicn-plugin/src/strategies') diff --git a/hicn-plugin/src/strategies/dpo_mw.c b/hicn-plugin/src/strategies/dpo_mw.c index eebb572c4..12c77bce8 100644 --- a/hicn-plugin/src/strategies/dpo_mw.c +++ b/hicn-plugin/src/strategies/dpo_mw.c @@ -76,8 +76,6 @@ format_hicn_strategy_mw_ctx (u8 * s, va_list * ap) index_t index = va_arg (*ap, index_t); hicn_dpo_ctx_t *dpo_ctx = NULL; hicn_strategy_mw_ctx_t *mw_dpo_ctx = NULL; - dpo_id_t *next_hop = NULL; - hicn_face_vft_t *face_vft = NULL; u32 indent = va_arg (*ap, u32);; dpo_ctx = hicn_strategy_dpo_ctx_get (index); @@ -97,24 +95,20 @@ format_hicn_strategy_mw_ctx (u8 * s, va_list * ap) buf = format (NULL, "TFIB"); else continue; - next_hop = &dpo_ctx->next_hops[i]; - face_vft = hicn_face_get_vft (next_hop->dpoi_type); - if (face_vft != NULL) - { - s = format (s, "\n"); - s = - format (s, "%U ", face_vft->format_face, next_hop->dpoi_index, - indent); - s = format (s, "weight %u", mw_dpo_ctx->weight[i]); - s = format (s, " %s", buf); - } + + s = format (s, "\n"); + s = + format (s, "%U ", format_hicn_face, dpo_ctx->next_hops[i], + indent); + s = format (s, "weight %u", mw_dpo_ctx->weight[i]); + s = format (s, " %s", buf); } return (s); } void -hicn_strategy_mw_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, +hicn_strategy_mw_ctx_create (fib_protocol_t proto, const hicn_face_id_t * next_hop, int nh_len, index_t * dpo_idx) { hicn_strategy_mw_ctx_t *hicn_strategy_mw_ctx; @@ -126,13 +120,13 @@ hicn_strategy_mw_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, *dpo_idx = hicn_strategy_dpo_ctx_get_index (hicn_strategy_ctx); - init_dpo_ctx (hicn_strategy_ctx, next_hop, nh_len, hicn_dpo_type_mw); + init_dpo_ctx (hicn_strategy_ctx, next_hop, nh_len, hicn_dpo_type_mw, proto); memset (hicn_strategy_mw_ctx->weight, 0, HICN_PARAM_FIB_ENTRY_NHOPS_MAX); } int -hicn_strategy_mw_ctx_add_nh (const dpo_id_t * nh, index_t dpo_idx) +hicn_strategy_mw_ctx_add_nh (hicn_face_id_t nh, index_t dpo_idx) { hicn_dpo_ctx_t *hicn_strategy_dpo_ctx = hicn_strategy_dpo_ctx_get (dpo_idx); u8 pos = 0; diff --git a/hicn-plugin/src/strategies/dpo_mw.h b/hicn-plugin/src/strategies/dpo_mw.h index ccc8d044f..433c415fb 100644 --- a/hicn-plugin/src/strategies/dpo_mw.h +++ b/hicn-plugin/src/strategies/dpo_mw.h @@ -19,6 +19,14 @@ #include #include "../strategy_dpo_ctx.h" +/** + * @file dpo_mw.h + * + * This file implements the strategy vtf (see strategy.h) and + * the dpo vft (see strategy_dpo_manager.h) for the strategy + * maximum weight + */ + #define DEFAULT_WEIGHT 0 typedef struct hicn_strategy_mw_ctx_s @@ -60,7 +68,7 @@ hicn_dpo_ctx_t *hicn_strategy_mw_ctx_get (index_t index); * @return HICN_ERROR_NONE if the creation was fine, otherwise EINVAL */ void -hicn_strategy_mw_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, +hicn_strategy_mw_ctx_create (fib_protocol_t proto, const hicn_face_id_t * next_hop, int nh_len, index_t * dpo_idx); /** @@ -75,7 +83,7 @@ hicn_strategy_mw_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, * @return HICN_ERROR_NONE if the update or insert was fine, * otherwise HICN_ERROR_DPO_CTX_NOT_FOUND */ -int hicn_strategy_mw_ctx_add_nh (const dpo_id_t * nh, index_t dpo_idx); +int hicn_strategy_mw_ctx_add_nh (hicn_face_id_t nh, index_t dpo_idx); /** * @brief Delete a next hop in the dpo ctx. diff --git a/hicn-plugin/src/strategies/dpo_rr.c b/hicn-plugin/src/strategies/dpo_rr.c index a67b06acb..adb7e1025 100644 --- a/hicn-plugin/src/strategies/dpo_rr.c +++ b/hicn-plugin/src/strategies/dpo_rr.c @@ -76,8 +76,6 @@ format_hicn_strategy_rr_ctx (u8 * s, va_list * ap) index_t index = va_arg (*ap, index_t); hicn_dpo_ctx_t *dpo_ctx = NULL; hicn_strategy_rr_ctx_t *rr_dpo_ctx = NULL; - dpo_id_t *next_hop = NULL; - hicn_face_vft_t *face_vft = NULL; u32 indent = va_arg (*ap, u32); dpo_ctx = hicn_strategy_dpo_ctx_get (index); @@ -88,7 +86,7 @@ format_hicn_strategy_rr_ctx (u8 * s, va_list * ap) s = format (s, "hicn-rr, next hop Face %d", - dpo_ctx->next_hops[rr_dpo_ctx->current_nhop].dpoi_index); + dpo_ctx->next_hops[rr_dpo_ctx->current_nhop]); for (i = 0; i < HICN_PARAM_FIB_ENTRY_NHOPS_MAX; i++) { @@ -101,23 +99,18 @@ format_hicn_strategy_rr_ctx (u8 * s, va_list * ap) else continue; - next_hop = &dpo_ctx->next_hops[i]; - face_vft = hicn_face_get_vft (next_hop->dpoi_type); - if (face_vft != NULL) - { - s = format (s, "\n"); - s = - format (s, "%U ", face_vft->format_face, next_hop->dpoi_index, - indent); - s = format (s, " %s", buf); - } + s = format (s, "\n"); + s = + format (s, "%U ", format_hicn_face, dpo_ctx->next_hops[i], + indent); + s = format (s, " %s", buf); } return (s); } void -hicn_strategy_rr_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, +hicn_strategy_rr_ctx_create (fib_protocol_t proto, const hicn_face_id_t * next_hop, int nh_len, index_t * dpo_idx) { hicn_strategy_rr_ctx_t *hicn_strategy_rr_ctx; @@ -129,13 +122,13 @@ hicn_strategy_rr_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, *dpo_idx = hicn_strategy_dpo_ctx_get_index (hicn_strategy_ctx); - init_dpo_ctx (hicn_strategy_ctx, next_hop, nh_len, hicn_dpo_type_rr); + init_dpo_ctx (hicn_strategy_ctx, next_hop, nh_len, hicn_dpo_type_rr, proto); hicn_strategy_rr_ctx->current_nhop = 0; } int -hicn_strategy_rr_ctx_add_nh (const dpo_id_t * nh, index_t dpo_idx) +hicn_strategy_rr_ctx_add_nh (hicn_face_id_t nh, index_t dpo_idx) { hicn_dpo_ctx_t *hicn_strategy_dpo_ctx = hicn_strategy_dpo_ctx_get (dpo_idx); u8 pos = 0; diff --git a/hicn-plugin/src/strategies/dpo_rr.h b/hicn-plugin/src/strategies/dpo_rr.h index 8afd0dabc..e4e5b5372 100644 --- a/hicn-plugin/src/strategies/dpo_rr.h +++ b/hicn-plugin/src/strategies/dpo_rr.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * Copyright (c) 2017-2020 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -19,6 +19,15 @@ #include #include "../strategy_dpo_ctx.h" +/** + * @file dpo_rr.h + * + * This file implements the strategy vtf (see strategy.h) and + * the dpo vft (see strategy_dpo_manager.h) for the strategy + * round robin. + */ + + /** * Context for the Round Robin strategy */ @@ -62,7 +71,7 @@ hicn_dpo_ctx_t *hicn_strategy_rr_ctx_get (index_t index); * @return HICN_ERROR_NONE if the creation was fine, otherwise EINVAL */ void -hicn_strategy_rr_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, +hicn_strategy_rr_ctx_create (fib_protocol_t proto, const hicn_face_id_t * next_hop, int nh_len, index_t * dpo_idx); /** @@ -77,7 +86,7 @@ hicn_strategy_rr_ctx_create (dpo_proto_t proto, const dpo_id_t * next_hop, * @return HICN_ERROR_NONE if the update or insert was fine, * otherwise HICN_ERROR_DPO_CTX_NOT_FOUND */ -int hicn_strategy_rr_ctx_add_nh (const dpo_id_t * nh, index_t dpo_idx); +int hicn_strategy_rr_ctx_add_nh (hicn_face_id_t nh, index_t dpo_idx); /** * @brief Delete a next hop in the dpo ctx. diff --git a/hicn-plugin/src/strategies/strategy_mw.c b/hicn-plugin/src/strategies/strategy_mw.c index 2422d4fed..9409ec856 100644 --- a/hicn-plugin/src/strategies/strategy_mw.c +++ b/hicn-plugin/src/strategies/strategy_mw.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2020 Cisco and/or its affiliates. + * Copyright (c) 2017-2021 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -22,14 +22,13 @@ /* Simple strategy that chooses the next hop with the maximum weight */ /* It does not require to exend the hicn_dpo */ void hicn_receive_data_mw (index_t dpo_idx, int nh_idx); -void hicn_add_interest_mw (index_t dpo_idx, hicn_hash_entry_t * pit_entry); +void hicn_add_interest_mw (index_t dpo_idx, hicn_hash_entry_t *pit_entry); void hicn_on_interest_timeout_mw (index_t dpo_idx); u32 hicn_select_next_hop_mw (index_t dpo_idx, int *nh_idx, - dpo_id_t ** outface); + hicn_face_id_t *outface); u32 get_strategy_node_index_mw (void); -u8 *hicn_strategy_format_trace_mw (u8 * s, hicn_strategy_trace_t * t); -u8 *hicn_strategy_format_mw (u8 * s, va_list * ap); - +u8 *hicn_strategy_format_trace_mw (u8 *s, hicn_strategy_trace_t *t); +u8 *hicn_strategy_format_mw (u8 *s, va_list *ap); static hicn_strategy_vft_t hicn_strategy_mw_vft = { .hicn_receive_data = &hicn_receive_data_mw, @@ -49,9 +48,10 @@ hicn_mw_strategy_get_vft (void) return &hicn_strategy_mw_vft; } -/* DPO should be give in input as it containes all the information to calculate the next hops*/ +/* DPO should be give in input as it containes all the information to calculate + * the next hops*/ u32 -hicn_select_next_hop_mw (index_t dpo_idx, int *nh_idx, dpo_id_t ** outface) +hicn_select_next_hop_mw (index_t dpo_idx, int *nh_idx, hicn_face_id_t *outface) { hicn_dpo_ctx_t *dpo_ctx = hicn_strategy_dpo_ctx_get (dpo_idx); @@ -64,30 +64,26 @@ hicn_select_next_hop_mw (index_t dpo_idx, int *nh_idx, dpo_id_t ** outface) u8 next_hop_index = 0; for (int i = 0; i < dpo_ctx->entry_count; i++) { - if (dpo_id_is_valid (&dpo_ctx->next_hops[i])) + if (hicn_strategy_mw_ctx->weight[next_hop_index] < + hicn_strategy_mw_ctx->weight[i]) { - if (hicn_strategy_mw_ctx->weight[next_hop_index] < - hicn_strategy_mw_ctx->weight[i]) - { - next_hop_index = i; - } + next_hop_index = i; } } - if (!dpo_id_is_valid (&dpo_ctx->next_hops[next_hop_index])) - return HICN_ERROR_STRATEGY_NH_NOT_FOUND; - - *outface = (dpo_id_t *) & dpo_ctx->next_hops[next_hop_index]; + *outface = dpo_ctx->next_hops[next_hop_index]; return HICN_ERROR_NONE; } void -hicn_add_interest_mw (index_t dpo_ctx_idx, hicn_hash_entry_t * hash_entry) +hicn_add_interest_mw (index_t dpo_ctx_idx, hicn_hash_entry_t *hash_entry) { hash_entry->dpo_ctx_id = dpo_ctx_idx; - dpo_id_t hicn_dpo_id = - { hicn_dpo_strategy_mw_get_type (), 0, 0, dpo_ctx_idx }; + dpo_id_t hicn_dpo_id = { .dpoi_type = hicn_dpo_strategy_mw_get_type (), + .dpoi_proto = 0, + .dpoi_next_node = 0, + .dpoi_index = dpo_ctx_idx }; hicn_strategy_dpo_ctx_lock (&hicn_dpo_id); hash_entry->vft_id = hicn_dpo_get_vft_id (&hicn_dpo_id); } @@ -103,10 +99,9 @@ hicn_receive_data_mw (index_t dpo_idx, int nh_idx) { } - /* packet trace format function */ u8 * -hicn_strategy_format_trace_mw (u8 * s, hicn_strategy_trace_t * t) +hicn_strategy_format_trace_mw (u8 *s, hicn_strategy_trace_t *t) { s = format (s, "Strategy_mw: pkt: %d, sw_if_index %d, next index %d", (int) t->pkt_type, t->sw_if_index, t->next_index); @@ -114,14 +109,14 @@ hicn_strategy_format_trace_mw (u8 * s, hicn_strategy_trace_t * t) } u8 * -hicn_strategy_format_mw (u8 * s, va_list * ap) +hicn_strategy_format_mw (u8 *s, va_list *ap) { u32 indent = va_arg (*ap, u32); - s = - format (s, - "Static Weights: weights are updated by the control plane, next hop is the one with the maximum weight.\n", - indent); + s = format (s, + "Static Weights: weights are updated by the control plane, next " + "hop is the one with the maximum weight.\n", + indent); return (s); } diff --git a/hicn-plugin/src/strategies/strategy_mw.h b/hicn-plugin/src/strategies/strategy_mw.h index f64f1fdc7..9e0078b23 100644 --- a/hicn-plugin/src/strategies/strategy_mw.h +++ b/hicn-plugin/src/strategies/strategy_mw.h @@ -18,6 +18,13 @@ #include "../strategy.h" +/** + * @file strategy_mw.h + * + * This file implements the maximum weight strategy. In this + * strategy the choosen next hop is one with the maximum weight. + */ + /** * @brief Return the vft for the Maximum Weight strategy */ diff --git a/hicn-plugin/src/strategies/strategy_mw_cli.c b/hicn-plugin/src/strategies/strategy_mw_cli.c index 701f96fa7..473ff0e19 100644 --- a/hicn-plugin/src/strategies/strategy_mw_cli.c +++ b/hicn-plugin/src/strategies/strategy_mw_cli.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * Copyright (c) 2017-2021 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -26,9 +26,9 @@ #include "dpo_mw.h" static clib_error_t * -hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t * vm, - unformat_input_t * main_input, - vlib_cli_command_t * cmd) +hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t *vm, + unformat_input_t *main_input, + vlib_cli_command_t *cmd) { clib_error_t *cl_err = 0; int ret = HICN_ERROR_NONE; @@ -54,19 +54,17 @@ hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t * vm, ; else { - return clib_error_return (0, "%s", - get_error_string - (HICN_ERROR_CLI_INVAL)); + return clib_error_return ( + 0, "%s", get_error_string (HICN_ERROR_CLI_INVAL)); } - } } if (((weight < 0) || (weight > HICN_PARAM_FIB_ENTRY_NHOP_WGHT_MAX))) { - cl_err = clib_error_return (0, - "Next-hop weight must be between 0 and %d", - (int) HICN_PARAM_FIB_ENTRY_NHOP_WGHT_MAX); + cl_err = + clib_error_return (0, "Next-hop weight must be between 0 and %d", + (int) HICN_PARAM_FIB_ENTRY_NHOP_WGHT_MAX); goto done; } @@ -77,35 +75,31 @@ hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t * vm, goto done; } - prefix.fp_proto = - ip46_address_is_ip4 (&prefix. - fp_addr) ? FIB_PROTOCOL_IP4 : FIB_PROTOCOL_IP6; + prefix.fp_proto = ip46_address_is_ip4 (&prefix.fp_addr) ? FIB_PROTOCOL_IP4 : + FIB_PROTOCOL_IP6; ret = hicn_route_get_dpo (&prefix, &hicn_dpo_id, &fib_index); if (ret == HICN_ERROR_NONE) { hicn_dpo_ctx = hicn_strategy_dpo_ctx_get (hicn_dpo_id->dpoi_index); - if (hicn_dpo_ctx == NULL - || hicn_dpo_id->dpoi_type != hicn_dpo_strategy_mw_get_type ()) + if (hicn_dpo_ctx == NULL || + hicn_dpo_id->dpoi_type != hicn_dpo_strategy_mw_get_type ()) { cl_err = clib_error_return (0, get_error_string (ret)); goto done; } - hicn_strategy_mw_ctx_t *mw_dpo = - (hicn_strategy_mw_ctx_t *) hicn_dpo_ctx; + hicn_strategy_mw_ctx_t *mw_dpo = (hicn_strategy_mw_ctx_t *) hicn_dpo_ctx; int idx = ~0; for (int i = 0; i < hicn_dpo_ctx->entry_count; i++) - if (hicn_dpo_ctx->next_hops[i].dpoi_index == (index_t) faceid) + if (hicn_dpo_ctx->next_hops[i] == faceid) idx = i; if (idx == ~0) { - cl_err = - clib_error_return (0, - get_error_string - (HICN_ERROR_STRATEGY_NH_NOT_FOUND)); + cl_err = clib_error_return ( + 0, get_error_string (HICN_ERROR_STRATEGY_NH_NOT_FOUND)); goto done; } @@ -114,24 +108,21 @@ hicn_mw_strategy_cli_set_weight_command_fn (vlib_main_t * vm, else { cl_err = clib_error_return (0, get_error_string (ret)); - } done: return (cl_err); - } /* cli declaration for 'strategy mw' */ -/* *INDENT-OFF* */ -VLIB_CLI_COMMAND(hicn_mw_strategy_cli_set_weight_command, static)= -{ + +VLIB_CLI_COMMAND (hicn_mw_strategy_cli_set_weight_command, static) = { .path = "hicn strategy mw set", - .short_help = "hicn strategy mw set prefix face weight ", + .short_help = + "hicn strategy mw set prefix face weight ", .function = hicn_mw_strategy_cli_set_weight_command_fn, }; -/* *INDENT-ON* */ /* * fd.io coding-style-patch-verification: ON diff --git a/hicn-plugin/src/strategies/strategy_rr.c b/hicn-plugin/src/strategies/strategy_rr.c index cdcca7f2a..9995191b7 100644 --- a/hicn-plugin/src/strategies/strategy_rr.c +++ b/hicn-plugin/src/strategies/strategy_rr.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2017-2019 Cisco and/or its affiliates. + * Copyright (c) 2017-2021 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at: @@ -23,13 +23,12 @@ /* Simple strategy that chooses the next hop with the maximum weight */ /* It does not require to exend the hicn_dpo */ void hicn_receive_data_rr (index_t dpo_idx, int nh_idx); -void hicn_add_interest_rr (index_t dpo_idx, hicn_hash_entry_t * pit_entry); +void hicn_add_interest_rr (index_t dpo_idx, hicn_hash_entry_t *pit_entry); void hicn_on_interest_timeout_rr (index_t dpo_idx); u32 hicn_select_next_hop_rr (index_t dpo_idx, int *nh_idx, - dpo_id_t ** outface); -u8 *hicn_strategy_format_trace_rr (u8 * s, hicn_strategy_trace_t * t); -u8 *hicn_strategy_format_rr (u8 * s, va_list * ap); - + hicn_face_id_t *outface); +u8 *hicn_strategy_format_trace_rr (u8 *s, hicn_strategy_trace_t *t); +u8 *hicn_strategy_format_rr (u8 *s, va_list *ap); static hicn_strategy_vft_t hicn_strategy_rr_vft = { .hicn_receive_data = &hicn_receive_data_rr, @@ -49,9 +48,10 @@ hicn_rr_strategy_get_vft (void) return &hicn_strategy_rr_vft; } -/* DPO should be give in input as it containes all the information to calculate the next hops*/ +/* DPO should be give in input as it containes all the information to calculate + * the next hops*/ u32 -hicn_select_next_hop_rr (index_t dpo_idx, int *nh_idx, dpo_id_t ** outface) +hicn_select_next_hop_rr (index_t dpo_idx, int *nh_idx, hicn_face_id_t *outface) { hicn_dpo_ctx_t *dpo_ctx = hicn_strategy_dpo_ctx_get (dpo_idx); @@ -61,15 +61,7 @@ hicn_select_next_hop_rr (index_t dpo_idx, int *nh_idx, dpo_id_t ** outface) hicn_strategy_rr_ctx_t *hicn_strategy_rr_ctx = (hicn_strategy_rr_ctx_t *) dpo_ctx->data; - if (dpo_id_is_valid - (&dpo_ctx->next_hops[hicn_strategy_rr_ctx->current_nhop])) - { - *outface = - (dpo_id_t *) & dpo_ctx->next_hops[hicn_strategy_rr_ctx->current_nhop]; - - } - else - return HICN_ERROR_STRATEGY_NH_NOT_FOUND; + *outface = dpo_ctx->next_hops[hicn_strategy_rr_ctx->current_nhop]; hicn_strategy_rr_ctx->current_nhop = (hicn_strategy_rr_ctx->current_nhop + 1) % dpo_ctx->entry_count; @@ -78,11 +70,13 @@ hicn_select_next_hop_rr (index_t dpo_idx, int *nh_idx, dpo_id_t ** outface) } void -hicn_add_interest_rr (index_t dpo_ctx_idx, hicn_hash_entry_t * hash_entry) +hicn_add_interest_rr (index_t dpo_ctx_idx, hicn_hash_entry_t *hash_entry) { hash_entry->dpo_ctx_id = dpo_ctx_idx; - dpo_id_t hicn_dpo_id = - { hicn_dpo_strategy_rr_get_type (), 0, 0, dpo_ctx_idx }; + dpo_id_t hicn_dpo_id = { .dpoi_type = hicn_dpo_strategy_rr_get_type (), + .dpoi_proto = 0, + .dpoi_next_node = 0, + .dpoi_index = dpo_ctx_idx }; hicn_strategy_dpo_ctx_lock (&hicn_dpo_id); hash_entry->vft_id = hicn_dpo_get_vft_id (&hicn_dpo_id); } @@ -98,10 +92,9 @@ hicn_receive_data_rr (index_t dpo_idx, int nh_idx) { } - /* packet trace format function */ u8 * -hicn_strategy_format_trace_rr (u8 * s, hicn_strategy_trace_t * t) +hicn_strategy_format_trace_rr (u8 *s, hicn_strategy_trace_t *t) { s = format (s, "Strategy_rr: pkt: %d, sw_if_index %d, next index %d", (int) t->pkt_type, t->sw_if_index, t->next_index); @@ -109,14 +102,14 @@ hicn_strategy_format_trace_rr (u8 * s, hicn_strategy_trace_t * t) } u8 * -hicn_strategy_format_rr (u8 * s, va_list * ap) +hicn_strategy_format_rr (u8 *s, va_list *ap) { u32 indent = va_arg (*ap, u32); - s = - format (s, - "Round Robin: next hop is chosen ciclying between all the available next hops, one after the other.\n", - indent); + s = format (s, + "Round Robin: next hop is chosen ciclying between all the " + "available next hops, one after the other.\n", + indent); return (s); } diff --git a/hicn-plugin/src/strategies/strategy_rr.h b/hicn-plugin/src/strategies/strategy_rr.h index 3936845fe..4dfe76b43 100644 --- a/hicn-plugin/src/strategies/strategy_rr.h +++ b/hicn-plugin/src/strategies/strategy_rr.h @@ -18,6 +18,13 @@ #include "../strategy.h" +/** + * @file strategy_rr.h + * + * This file implements the round robin strategy. In this + * strategy the next hop is choosen in a round robin way. + */ + /** * @brief Return the vft for the Round Robin strategy */ -- cgit 1.2.3-korg