]> rtime.felk.cvut.cz Git - socketcan-devel.git/commitdiff
Updated gwtest.c to latest netlink CAN GW API.
authorhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Tue, 27 Apr 2010 06:03:58 +0000 (06:03 +0000)
committerhartkopp <hartkopp@030b6a49-0b11-0410-94ab-b0dab22257f2>
Tue, 27 Apr 2010 06:03:58 +0000 (06:03 +0000)
git-svn-id: svn://svn.berlios.de//socketcan/trunk@1175 030b6a49-0b11-0410-94ab-b0dab22257f2

test/gwtest.c

index b6f22bb78af90e0e1576bf4ba8dd382c0e47b6be..0d7c9b5ed666af21d07388391abb9b7e73f014d6 100644 (file)
@@ -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;