diff options
author | 2020-04-07 11:43:39 +0200 | |
---|---|---|
committer | 2020-05-04 11:16:59 +0200 | |
commit | c61e2e149421b849888bea0239c50607edce35ac (patch) | |
tree | f1191d338c9e27c77484c0d8bed6118c6d4612b6 /hicn-plugin/src/strategies/strategy_rr.c | |
parent | dee66271e7f84cb756dae31d154982d5b6bb9807 (diff) |
[HICN-590] Removed andjacency type specific face implementation
Changes in the new implementation are:
- the adjacency index is replaced with a dpo that allows the single face node
to dispatch the packet to the right vlib node.
- local and remote address in the face are replaced with a single nat address
which is used to perform the nat operation when rewriting an interest or a
data (in case of tunnels the nat address will be equal to 0)
- the list of next hop in the load balance is no longer a list of dpos but
a list of face id (this makes the code easier and increases the number of
next hop we supports)
Signed-off-by: Alberto Compagno <acompagn+fdio@cisco.com>
Change-Id: I4ac2b4eb09425bfe1b3ca9f82d7d0ff564297b0d
Diffstat (limited to 'hicn-plugin/src/strategies/strategy_rr.c')
-rw-r--r-- | hicn-plugin/src/strategies/strategy_rr.c | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/hicn-plugin/src/strategies/strategy_rr.c b/hicn-plugin/src/strategies/strategy_rr.c index cdcca7f2a..4c65ce52a 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-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: @@ -26,7 +26,7 @@ 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_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); + 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); @@ -51,7 +51,7 @@ hicn_rr_strategy_get_vft (void) /* 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,8 @@ 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; |