]> rtime.felk.cvut.cz Git - sojka/can-utils.git/commitdiff
Disabled obsolte receive filter. Added error checking for SIOCGIFINDEX.
authorOliver Hartkopp <socketcan@hartkopp.net>
Mon, 18 Jun 2007 19:59:20 +0000 (19:59 +0000)
committerOliver Hartkopp <socketcan@hartkopp.net>
Mon, 18 Jun 2007 19:59:20 +0000 (19:59 +0000)
cansend.c

index dd9d73edbb0a7befc0a1ba6837e3ad618eac8ec9..623eb86e492f64a85da5d3dd1ded03eab73e4d31 100644 (file)
--- a/cansend.c
+++ b/cansend.c
@@ -92,12 +92,21 @@ int main(int argc, char **argv)
       return 1;
     }
 
-    strcpy(ifr.ifr_name, argv[1]);
-    ioctl(s, SIOCGIFINDEX, &ifr);
-
     addr.can_family = AF_CAN;
+
+    strcpy(ifr.ifr_name, argv[1]);
+    if (ioctl(s, SIOCGIFINDEX, &ifr) < 0) {
+      perror("SIOCGIFINDEX");
+      return 1;
+    }
     addr.can_ifindex = ifr.ifr_ifindex;
 
+    /* disable default receive filter on this RAW socket */
+    /* This is obsolete as we do not read from the socket at all, but for */
+    /* this reason we can remove the receive list in the Kernel to save a */
+    /* little (really a very little!) CPU usage.                          */
+    setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0);
+
     if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
       perror("bind");
       return 1;