Skip to content

Commit fd7c5ad

Browse files
authored
Merge pull request FRRouting#20144 from idryzhov/date-and-time
bfdd, ripd, ripngd: implement yang:date-and-time
2 parents 309c7c9 + 36e61a2 commit fd7c5ad

File tree

4 files changed

+21
-18
lines changed

4 files changed

+21
-18
lines changed

bfdd/bfdd_nb_state.c

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -208,12 +208,11 @@ struct yang_data *bfdd_bfd_sessions_single_hop_stats_detection_mode_get_elem(
208208
struct yang_data *bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem(
209209
struct nb_cb_get_elem_args *args)
210210
{
211-
/*
212-
* TODO: implement me.
213-
*
214-
* No yang support for time elements yet.
215-
*/
216-
return NULL;
211+
const struct bfd_session *bs = args->list_entry;
212+
213+
time_t last_down_time = monotime_to_realtime(&bs->downtime, NULL);
214+
215+
return yang_data_new_date_and_time(args->xpath, last_down_time, false);
217216
}
218217

219218
/*
@@ -222,12 +221,11 @@ struct yang_data *bfdd_bfd_sessions_single_hop_stats_last_down_time_get_elem(
222221
struct yang_data *bfdd_bfd_sessions_single_hop_stats_last_up_time_get_elem(
223222
struct nb_cb_get_elem_args *args)
224223
{
225-
/*
226-
* TODO: implement me.
227-
*
228-
* No yang support for time elements yet.
229-
*/
230-
return NULL;
224+
const struct bfd_session *bs = args->list_entry;
225+
226+
time_t last_up_time = monotime_to_realtime(&bs->uptime, NULL);
227+
228+
return yang_data_new_date_and_time(args->xpath, last_up_time, false);
231229
}
232230

233231
/*

doc/developer/northbound/operational-data-rpcs-and-notifications.rst

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,8 +289,9 @@ Finally, each YANG leaf inside the ``neighbor`` list has its associated
289289
ripd_state_neighbors_neighbor_last_update_get_elem(const char *xpath,
290290
void *list_entry)
291291
{
292-
/* TODO: yang:date-and-time is tricky */
293-
return NULL;
292+
struct rip_peer *peer = list_entry;
293+
294+
return yang_data_new_date_and_time(args->xpath, peer->uptime, false);
294295
}
295296
296297
/*

ripd/rip_nb_state.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,8 +119,10 @@ struct yang_data *ripd_instance_state_neighbors_neighbor_address_get_elem(
119119
struct yang_data *ripd_instance_state_neighbors_neighbor_last_update_get_elem(
120120
struct nb_cb_get_elem_args *args)
121121
{
122-
/* TODO: yang:date-and-time is tricky */
123-
return NULL;
122+
const struct listnode *node = args->list_entry;
123+
const struct rip_peer *peer = listgetdata(node);
124+
125+
return yang_data_new_date_and_time(args->xpath, peer->uptime, false);
124126
}
125127

126128
/*

ripngd/ripng_nb_state.c

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,10 @@ struct yang_data *ripngd_instance_state_neighbors_neighbor_address_get_elem(
8888
struct yang_data *ripngd_instance_state_neighbors_neighbor_last_update_get_elem(
8989
struct nb_cb_get_elem_args *args)
9090
{
91-
/* TODO: yang:date-and-time is tricky */
92-
return NULL;
91+
const struct listnode *node = args->list_entry;
92+
const struct ripng_peer *peer = listgetdata(node);
93+
94+
return yang_data_new_date_and_time(args->xpath, peer->uptime, false);
9395
}
9496

9597
/*

0 commit comments

Comments
 (0)