X-Git-Url: http://rtime.felk.cvut.cz/gitweb/socketcan-devel.git/blobdiff_plain/a7dd6bcf7250f07602972f6706064348ae5eda28..5d9b6cc76b0aeaf10a6a585ca9c20faba0d1c0d2:/test/gwtest.c diff --git a/test/gwtest.c b/test/gwtest.c index b6f22bb..29afc13 100644 --- a/test/gwtest.c +++ b/test/gwtest.c @@ -44,12 +44,9 @@ 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; - int err = 0; struct { struct nlmsghdr n; @@ -61,17 +58,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 +73,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 +86,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,32 +104,13 @@ 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; nladdr.nl_groups = 0; - err = sendto(s, &req, req.n.nlmsg_len, 0, - (struct sockaddr*)&nladdr, sizeof(nladdr)); + sendto(s, &req, req.n.nlmsg_len, 0, + (struct sockaddr*)&nladdr, sizeof(nladdr)); perror("netlink says "); close(s);