summaryrefslogtreecommitdiffstats
path: root/src/vnet/adj/adj_bfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vnet/adj/adj_bfd.c')
-rw-r--r--src/vnet/adj/adj_bfd.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/src/vnet/adj/adj_bfd.c b/src/vnet/adj/adj_bfd.c
index a4e7e277298..de7abfe4470 100644
--- a/src/vnet/adj/adj_bfd.c
+++ b/src/vnet/adj/adj_bfd.c
@@ -35,11 +35,6 @@ typedef enum adj_bfd_state_t_
typedef struct adj_bfd_delegate_t_
{
/**
- * Base class,linkage to the adjacency
- */
- adj_delegate_t abd_link;
-
- /**
* BFD session state
*/
adj_bfd_state_t abd_state;
@@ -58,25 +53,21 @@ static adj_bfd_delegate_t *abd_pool;
static inline adj_bfd_delegate_t*
adj_bfd_from_base (adj_delegate_t *ad)
{
- if (NULL == ad)
+ if (NULL != ad)
{
- return (NULL);
+ return (pool_elt_at_index(abd_pool, ad->ad_index));
}
- return ((adj_bfd_delegate_t*)((char*)ad -
- STRUCT_OFFSET_OF(adj_bfd_delegate_t,
- abd_link)));
+ return (NULL);
}
static inline const adj_bfd_delegate_t*
adj_bfd_from_const_base (const adj_delegate_t *ad)
{
- if (NULL == ad)
+ if (NULL != ad)
{
- return (NULL);
+ return (pool_elt_at_index(abd_pool, ad->ad_index));
}
- return ((adj_bfd_delegate_t*)((char*)ad -
- STRUCT_OFFSET_OF(adj_bfd_delegate_t,
- abd_link)));
+ return (NULL);
}
static adj_bfd_state_t
@@ -183,7 +174,7 @@ adj_bfd_notify (bfd_listen_event_e event,
abd->abd_state = ADJ_BFD_STATE_UP;
abd->abd_index = session->bs_idx;
- adj_delegate_add(adj_get(ai), ADJ_DELEGATE_BFD, &abd->abd_link);
+ adj_delegate_add(adj_get(ai), ADJ_DELEGATE_BFD, abd - abd_pool);
}
break;