diff --git a/include/netlink/route/link/can.h b/include/netlink/route/link/can.h index 90296f1..61c9f47 100644 --- a/include/netlink/route/link/can.h +++ b/include/netlink/route/link/can.h @@ -27,6 +27,7 @@ extern int rtnl_link_can_str2ctrlmode(const char *); extern int rtnl_link_can_restart(struct rtnl_link *); extern int rtnl_link_can_freq(struct rtnl_link *, uint32_t *); +extern int rtnl_link_can_state(struct rtnl_link *, uint32_t *); extern int rtnl_link_can_berr_rx(struct rtnl_link *); extern int rtnl_link_can_berr_tx(struct rtnl_link *); diff --git a/lib/route/link/can.c b/lib/route/link/can.c index 76bfa1a..307dec0 100644 --- a/lib/route/link/can.c +++ b/lib/route/link/can.c @@ -404,6 +404,25 @@ int rtnl_link_can_freq(struct rtnl_link *link, uint32_t *freq) return 0; } +/** + * Get CAN state + * @arg link Link object + * @arg state CAN bus state + * @return 0 on success or a negative error code + */ +int rtnl_link_can_state(struct rtnl_link *link, uint32_t *state) +{ + struct can_info *ci = link->l_info; + + IS_CAN_LINK_ASSERT(link); + if (!state) + return -NLE_INVAL; + + *state = ci->ci_state; + + return 0; +} + /** * Get CAN RX bus error count * @arg link Link object