Fixed checking of CAN interface name commandline parameter.

Cosmetics.
pull/7/head
Oliver Hartkopp 2007-10-07 14:39:52 +00:00
parent d72681c442
commit 12f9170338
1 changed files with 14 additions and 4 deletions

View File

@ -71,6 +71,7 @@
#define U64_DATA(p) (*(unsigned long long*)(p)->data) #define U64_DATA(p) (*(unsigned long long*)(p)->data)
#define SETFNAME "sniffset." #define SETFNAME "sniffset."
#define ANYDEV "any"
/* flags */ /* flags */
@ -175,6 +176,7 @@ void print_usage(char *prg)
fprintf(stderr, " -t <time> (timeout for ID display [x100ms] default: %d)\n", TIMEOUT); fprintf(stderr, " -t <time> (timeout for ID display [x100ms] default: %d)\n", TIMEOUT);
fprintf(stderr, " -h <time> (hold marker on changes [x100ms] default: %d)\n", HOLD); fprintf(stderr, " -h <time> (hold marker on changes [x100ms] default: %d)\n", HOLD);
fprintf(stderr, " -l <time> (loop time (display) [x100ms] default: %d)\n", LOOP); fprintf(stderr, " -l <time> (loop time (display) [x100ms] default: %d)\n", LOOP);
fprintf(stderr, "Use interface name '%s' to receive from all can-interfaces\n", ANYDEV);
fprintf(stderr, "\n"); fprintf(stderr, "\n");
fprintf(stderr, "%s", manual); fprintf(stderr, "%s", manual);
} }
@ -290,12 +292,20 @@ int main(int argc, char **argv)
} }
addr.can_family = AF_CAN; addr.can_family = AF_CAN;
strcpy(ifr.ifr_name, argv[optind]);
ioctl(s, SIOCGIFINDEX, &ifr); if (strcmp(ANYDEV, argv[optind])) {
addr.can_ifindex = ifr.ifr_ifindex; strcpy(ifr.ifr_name, argv[optind]);
if (ioctl(s, SIOCGIFINDEX, &ifr) < 0) {
perror("SIOCGIFINDEX");
exit(1);
}
addr.can_ifindex = ifr.ifr_ifindex;
}
else
addr.can_ifindex = 0; /* any can interface */
if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) { if (connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
perror("bind"); perror("connect");
return 1; return 1;
} }