libsocketcan  v0.0.12
libsocketcan.c File Reference

library code More...

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <net/if.h>
#include <linux/if_link.h>
#include <linux/rtnetlink.h>
#include <linux/netlink.h>
#include <libsocketcan.h>
Include dependency graph for libsocketcan.c:

Macros

#define parse_rtattr_nested(tb, max, rta)    (parse_rtattr((tb), (max), RTA_DATA(rta), RTA_PAYLOAD(rta)))
 
#define NLMSG_TAIL(nmsg)    ((struct rtattr *) (((void *) (nmsg)) + NLMSG_ALIGN((nmsg)->nlmsg_len)))
 
#define IFLA_CAN_MAX   (__IFLA_CAN_MAX - 1)
 
#define IF_UP   1
 
#define IF_DOWN   2
 
#define GET_STATE   1
 
#define GET_RESTART_MS   2
 
#define GET_BITTIMING   3
 
#define GET_CTRLMODE   4
 
#define GET_CLOCK   5
 
#define GET_BITTIMING_CONST   6
 
#define GET_BERR_COUNTER   7
 
#define GET_XSTATS   8
 
#define GET_LINK_STATS   9
 

Functions

static void parse_rtattr (struct rtattr **tb, int max, struct rtattr *rta, int len)
 this method parse attributions of link info More...
 
static int addattr32 (struct nlmsghdr *n, size_t maxlen, int type, __u32 data)
 
static int addattr_l (struct nlmsghdr *n, size_t maxlen, int type, const void *data, int alen)
 
static int send_mod_request (int fd, struct nlmsghdr *n)
 send_mod_request - send a linkinfo modification request More...
 
static int send_dump_request (int fd, const char *name, int family, int type)
 send_dump_request - send a dump linkinfo request More...
 
static int open_nl_sock ()
 open_nl_sock - open a netlink socket More...
 
static int do_get_nl_link (int fd, __u8 acquire, const char *name, void *res)
 do_get_nl_link - get linkinfo More...
 
static int get_link (const char *name, __u8 acquire, void *res)
 get_link - get linkinfo More...
 
static int do_set_nl_link (int fd, __u8 if_state, const char *name, struct req_info *req_info)
 do_set_nl_link - setup linkinfo More...
 
static int set_link (const char *name, __u8 if_state, struct req_info *req_info)
 set_link - open a netlink socket and setup linkinfo More...
 
int can_do_start (const char *name)
 can_do_start - start the can interface More...
 
int can_do_stop (const char *name)
 can_do_stop - stop the can interface More...
 
int can_do_restart (const char *name)
 can_do_restart - restart the can interface More...
 
int can_set_restart_ms (const char *name, __u32 restart_ms)
 can_set_restart_ms - set interval of auto restart. More...
 
int can_set_ctrlmode (const char *name, struct can_ctrlmode *cm)
 can_set_ctrlmode - setup the control mode. More...
 
int can_set_bittiming (const char *name, struct can_bittiming *bt)
 can_set_bittiming - setup the bittiming. More...
 
int can_set_bitrate (const char *name, __u32 bitrate)
 can_set_bitrate - setup the bitrate. More...
 
int can_set_bitrate_samplepoint (const char *name, __u32 bitrate, __u32 sample_point)
 can_set_bitrate_samplepoint - setup the bitrate. More...
 
int can_get_state (const char *name, int *state)
 can_get_state - get the current state of the device More...
 
int can_get_restart_ms (const char *name, __u32 *restart_ms)
 can_get_restart_ms - get the current interval of auto restarting. More...
 
int can_get_bittiming (const char *name, struct can_bittiming *bt)
 can_get_bittiming - get the current bittimnig configuration. More...
 
int can_get_ctrlmode (const char *name, struct can_ctrlmode *cm)
 can_get_ctrlmode - get the current control mode. More...
 
int can_get_clock (const char *name, struct can_clock *clock)
 can_get_clock - get the current clock struct. More...
 
int can_get_bittiming_const (const char *name, struct can_bittiming_const *btc)
 can_get_bittiming_const - get the current bittimnig constant. More...
 
int can_get_berr_counter (const char *name, struct can_berr_counter *bc)
 can_get_berr_counter - get the tx/rx error counter. More...
 
int can_get_device_stats (const char *name, struct can_device_stats *cds)
 can_get_device_stats - get the can_device_stats. More...
 
int can_get_link_stats (const char *name, struct rtnl_link_stats64 *rls)
 can_get_link_statistics - get RX/TX statistics (64 bits version) More...
 

Detailed Description

library code

Function Documentation

◆ parse_rtattr()

static void parse_rtattr ( struct rtattr **  tb,
int  max,
struct rtattr *  rta,
int  len 
)
static

this method parse attributions of link info

Parameters
tbpoint array of struct rtattr point
maxindex of the last element in array tb
rtattrpoint of link info data
lenlength of link info data