On 10/13/2011 03:11 PM, Kurt Van Dijck wrote: > On Thu, Oct 13, 2011 at 01:26:51PM +0200, Marc Kleine-Budde wrote: >> On 10/13/2011 01:02 PM, Kurt Van Dijck wrote: >>> On Thu, Oct 13, 2011 at 11:24:59AM +0200, Marc Kleine-Budde wrote: >>>> On 10/12/2011 02:55 PM, Kurt Van Dijck wrote: >>>>> Not sure where exactly to put this. >>>>> >>>>> When using libsocketcan on >>>>> git://git.pengutronix.de/git/tools/libsocketcan.git, >>>>> I kind of missed a method to fetch the can device statistics. >>>>> This patch adds that functionality. >>>>> I think this is the proper library to put such function. >>>>> >>>>> Signed-off-by: Kurt Van Dijck <kurt.van.di...@eia.be> >>>>> --- >>>>> diff --git a/include/libsocketcan.h b/include/libsocketcan.h >>>>> index 10c012c..6098d6a 100644 >>>>> --- a/include/libsocketcan.h >>>>> +++ b/include/libsocketcan.h >>>>> @@ -45,5 +45,6 @@ int can_get_state(const char *name, int *state); >>>>> int can_get_clock(const char *name, struct can_clock *clock); >>>>> int can_get_bittiming_const(const char *name, struct can_bittiming_const >>>>> *btc); >>>>> int can_get_berr_counter(const char *name, struct can_berr_counter *bc); >>>>> +int can_get_device_stats(const char *name, struct can_device_stats *cds); >>>>> >>>>> #endif >>>>> diff --git a/src/libsocketcan.c b/src/libsocketcan.c >>>>> index 2ac3f2a..34d3875 100644 >>>>> --- a/src/libsocketcan.c >>>>> +++ b/src/libsocketcan.c >>>>> @@ -53,6 +53,7 @@ >>>>> #define GET_CLOCK 5 >>>>> #define GET_BITTIMING_CONST 6 >>>>> #define GET_BERR_COUNTER 7 >>>>> +#define GET_XSTATS 8 >>>>> >>>>> struct get_req { >>>>> struct nlmsghdr n; >>>>> @@ -386,6 +387,17 @@ static int do_get_nl_link(int fd, __u8 acquire, >>>>> const char *name, void *res) >>>>> else >>>>> continue; >>>>> >>>>> + if (acquire == GET_XSTATS) { >>>>> + if (!linkinfo[IFLA_INFO_XSTATS]) >>>>> + fprintf(stderr, "no can statistics found\n"); >> >> what about "return -1;" here? >> > Not "return -1;" here implies that the "return ret;" at the end is executed, > and > ret == -1.
Here's the whole code... > if (acquire == GET_XSTATS) { > if (!linkinfo[IFLA_INFO_XSTATS]) > fprintf(stderr, "no can statistics found\n"); > else { > memcpy(res, > RTA_DATA(linkinfo[IFLA_INFO_XSTATS]), > sizeof(struct > can_device_stats)); > ret = 0; > } > continue; > } but it says continue.....thus it does _not_ return -1. > I depends on how the netlink attributes come in the stream. I'm not > specialised > in that. Any hints? me neither Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |
signature.asc
Description: OpenPGP digital signature
_______________________________________________ Socketcan-core mailing list Socketcan-core@lists.berlios.de https://lists.berlios.de/mailman/listinfo/socketcan-core