From 97d8c95c150bf1ff7bbfa2308b707198abe965f8 Mon Sep 17 00:00:00 2001 From: hartkopp Date: Tue, 27 Apr 2010 06:03:58 +0000 Subject: [PATCH] Updated gwtest.c to latest netlink CAN GW API. git-svn-id: svn://svn.berlios.de//socketcan/trunk@1175 030b6a49-0b11-0410-94ab-b0dab22257f2 --- test/gwtest.c | 44 ++++++++------------------------------------ 1 file changed, 8 insertions(+), 36 deletions(-) diff --git a/test/gwtest.c b/test/gwtest.c index b6f22bb..0d7c9b5 100644 --- a/test/gwtest.c +++ b/test/gwtest.c @@ -44,8 +44,6 @@ int addattr_l(struct nlmsghdr *n, int maxlen, int type, const void *data, return 0; } -#define USE_PACKED_STRUCT - int main(int argc, char **argv) { int s; @@ -61,17 +59,10 @@ int main(int argc, char **argv) struct can_filter filter; struct sockaddr_nl nladdr; -#ifdef USE_PACKED_STRUCT - struct modattr { - struct can_frame cf; - __u8 modtype; - } __attribute__((packed)); + struct cgw_frame_mod modmsg; - struct modattr modmsg; -#else - static struct can_frame modframe; - char modbuf[CGW_MODATTR_LEN]; -#endif + u_int32_t src = if_nametoindex("vcan2"); + u_int32_t dst = if_nametoindex("vcan3"); s = socket(PF_NETLINK, SOCK_RAW, NETLINK_ROUTE); @@ -83,9 +74,11 @@ int main(int argc, char **argv) req.n.nlmsg_seq = 0; req.r.can_family = AF_CAN; - req.r.src_ifindex = if_nametoindex("vcan2"); - req.r.dst_ifindex = if_nametoindex("vcan3"); - req.r.can_txflags = CAN_GW_TXFLAGS_ECHO; + req.r.gwtype = CGW_TYPE_CAN_CAN; + req.r.flags = CGW_FLAGS_CAN_ECHO; + + addattr_l(&req.n, sizeof(req), CGW_SRC_IF, &src, sizeof(src)); + addattr_l(&req.n, sizeof(req), CGW_DST_IF, &dst, sizeof(dst)); /* add new attributes here */ @@ -94,8 +87,6 @@ int main(int argc, char **argv) addattr_l(&req.n, sizeof(req), CGW_FILTER, &filter, sizeof(filter)); -#ifdef USE_PACKED_STRUCT - if (sizeof(modmsg) != CGW_MODATTR_LEN) { printf("Problem with packed msg. Use linear copy instead.\n"); return 1; @@ -114,25 +105,6 @@ int main(int argc, char **argv) modmsg.modtype = CGW_MOD_DATA; addattr_l(&req.n, sizeof(req), CGW_MOD_XOR, &modmsg, CGW_MODATTR_LEN); -#else - - modframe.can_id = 0x555; - modframe.can_dlc = 5; - *(unsigned long long *)modframe.data = 0x5555555555555555ULL; - - memcpy(modbuf, &modframe, sizeof(struct can_frame)); - - modbuf[sizeof(struct can_frame)] = CGW_MOD_ID; - addattr_l(&req.n, sizeof(req), CGW_MOD_SET, modbuf, CGW_MODATTR_LEN); - - modbuf[sizeof(struct can_frame)] = CGW_MOD_DLC; - addattr_l(&req.n, sizeof(req), CGW_MOD_AND, modbuf, CGW_MODATTR_LEN); - - modbuf[sizeof(struct can_frame)] = CGW_MOD_DATA; - addattr_l(&req.n, sizeof(req), CGW_MOD_XOR, modbuf, CGW_MODATTR_LEN); - -#endif - memset(&nladdr, 0, sizeof(nladdr)); nladdr.nl_family = AF_NETLINK; nladdr.nl_pid = 0; -- 2.39.2