Added option '-l' to disable local loopback for generated data.

pull/7/head
Oliver Hartkopp 2007-06-22 08:04:48 +00:00
parent f1e643f8f1
commit c2c6579bd6
1 changed files with 22 additions and 8 deletions

View File

@ -89,6 +89,8 @@ void print_usage(char *prg)
"default: 8\n");
fprintf(stderr, " -f <canframe> (other fixed CAN frame) "
"default: 123#0123456789ABCDEF\n");
fprintf(stderr, " -l (local loopback disable) "
"default: loopback\n");
fprintf(stderr, " -v (verbose) "
"default: don't print sent frames\n");
}
@ -106,6 +108,7 @@ int main(int argc, char **argv)
unsigned char fix_data = 0;
unsigned char fix_dlc = 0;
unsigned char default_frame = 1;
unsigned char loopback_disable = 0;
unsigned char verbose = 0;
int opt;
@ -122,7 +125,7 @@ int main(int argc, char **argv)
signal(SIGHUP, sigterm);
signal(SIGINT, sigterm);
while ((opt = getopt(argc, argv, "g:eIDLf:v")) != -1) {
while ((opt = getopt(argc, argv, "g:eIDLf:lv")) != -1) {
switch (opt) {
case 'g':
gap = strtoul(optarg, NULL, 10);
@ -156,6 +159,10 @@ int main(int argc, char **argv)
verbose = 1;
break;
case 'l':
loopback_disable = 1;
break;
default:
print_usage(basename(argv[0]));
exit(1);
@ -210,6 +217,13 @@ int main(int argc, char **argv)
/* little (really a very little!) CPU usage. */
setsockopt(s, SOL_CAN_RAW, CAN_RAW_FILTER, NULL, 0);
if (loopback_disable) {
int loopback = 0;
setsockopt(s, SOL_CAN_RAW, CAN_RAW_LOOPBACK,
&loopback, sizeof(loopback));
}
if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {
perror("bind");
return 1;