From 042038fb52a03cde44b2813a0046e668ca06215d Mon Sep 17 00:00:00 2001 From: Cory Date: Mon, 6 Aug 2018 20:21:40 -0400 Subject: [PATCH] Formatting, Cleanup, & Suggested Changes Corrected formatting, removed old commented code, made suggested code changes. Update README.md --- README.md | 2 +- cansniffer.c | 98 ++++++++++++++++++---------------------------------- 2 files changed, 34 insertions(+), 66 deletions(-) diff --git a/README.md b/README.md index a46d069..80df3cb 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,7 @@ subsystem (aka SocketCAN): * canplayer : replay CAN logfiles * cansend : send a single frame * cangen : generate (random) CAN traffic -* cansniffer : display CAN data content differences ~~(just 11bit CAN IDs)~~ +* cansniffer : display CAN data content differences #### CAN access via IP sockets * canlogserver : log CAN frames from a remote/local host diff --git a/cansniffer.c b/cansniffer.c index e59811e..b721ce1 100644 --- a/cansniffer.c +++ b/cansniffer.c @@ -106,9 +106,9 @@ struct snif { struct can_frame notch; } sniftab[MAX_SLOTS]; - extern int optind, opterr, optopt; +static int idx; static int running = 1; static int clearscreen = 1; static int notch; @@ -124,23 +124,23 @@ void print_snifline(int slot); int handle_keyb(int fd); int handle_frame(int fd, long currcms); int handle_timeo(int fd, long currcms); -int sniftab_index(canid_t id); void writesettings(char* name); void readsettings(char* name, int sockfd); - -int idx = 0; - +static int sniftab_index(canid_t id); int comp (const void * elem1, const void * elem2) { unsigned long f = ((struct snif*)elem1)->current.can_id; unsigned long s = ((struct snif*)elem2)->current.can_id; - if (f > s) return 1; - if (f < s) return -1; + + if (f > s) + return 1; + if (f < s) + return -1; + return 0; } - void print_usage(char *prg) { const char manual [] = { @@ -164,20 +164,10 @@ void print_usage(char *prg) "29 bit IDs:\n" "+18FEDF55 - add CAN-ID 0x18FEDF55\n" "-00000090 - remove CAN-ID 0x00000090\n" -/* "-42E7FF - remove CAN-ID 0x42E (using Bitmask)\N"*/ -/* "-500700 - remove CAN-IDs 0x500 - 0x5FF\n"*/ -/* "+400600 - add CAN-IDs 0x400 - 0x5FF\n"*/ -/* "+000000 - add all CAN-IDs\n"*/ -/* "-000000 - remove all CAN-IDs\n"*/ -/* "\n"*/ -/* "if (id & filter) == (sniff-id & filter) the action (+/-) IS PERFORMED,\N" */ -/* "which is quite easy when the filter is 000\n"*/ "\n" }; fprintf(stderr, "\nUsage: %s [can-interface]\n", prg); -// fprintf(stderr, "Options: -m (initial FILTER default 0x00000000)\n"); -// fprintf(stderr, " -v (initial FILTER default 0x00000000)\n"); fprintf(stderr, "Options: -q (quiet - all slots are deactivated)\n"); fprintf(stderr, " -r (read %sname from file)\n", SETFNAME); fprintf(stderr, " -b (start with binary mode)\n"); @@ -200,8 +190,6 @@ int main(int argc, char **argv) { fd_set rdfs; int s; -// canid_t mask = 0; -// canid_t value = 0; long currcms = 0; long lastcms = 0; unsigned char quiet = 0; @@ -211,7 +199,6 @@ int main(int argc, char **argv) struct ifreq ifr; int i; - signal(SIGTERM, sigterm); signal(SIGHUP, sigterm); signal(SIGINT, sigterm); @@ -221,14 +208,6 @@ int main(int argc, char **argv) while ((opt = getopt(argc, argv, "m:v:r:t:h:l:qbBcf?")) != -1) { switch (opt) { -// case 'm': -// sscanf(optarg, "%x", &mask); -// break; -// -// case 'v': -// sscanf(optarg, "%x", &value); -// break; -// case 'r': readsettings(optarg, 0); break; @@ -281,16 +260,6 @@ int main(int argc, char **argv) for (i = 0; i < MAX_SLOTS; i++) do_clr(i, ENABLE); -// Change this to do socket filtering -// else if (mask || value) { -// for (i=0; i < MAX_SLOTS ;i++) { -// if ((i & mask) == (value & mask)) -// do_set(i, ENABLE); -// else -// do_clr(i, ENABLE); -// } -// } - if (strlen(argv[optind]) >= IFNAMSIZ) { printf("name of CAN device '%s' is too long!\n", argv[optind]); return 1; @@ -362,7 +331,7 @@ int main(int argc, char **argv) return 0; } -int handle_keyb(int fd){ +int handle_keyb(int fd) { char cmd [20] = {0}; int i; @@ -384,7 +353,7 @@ int handle_keyb(int fd){ i = sniftab_index(value); - if(i < 0) + if (i < 0) break; /* No Match */ if (cmd[0] == '+') { @@ -451,7 +420,7 @@ int handle_keyb(int fd){ return 1; /* ok */ }; -int handle_frame(int fd, long currcms){ +int handle_frame(int fd, long currcms) { bool match = false; bool rx_changed = false; @@ -469,19 +438,19 @@ int handle_frame(int fd, long currcms){ pos = sniftab_index(id); - if(pos >= 0) + if (pos >= 0) match = true; - if(!match){ - if(idx < MAX_SLOTS){ + if (!match) { + if (idx < MAX_SLOTS) { pos = idx++; rx_changed = true; } } else { - if(frame.can_dlc == sniftab[pos].current.can_dlc) - for(i=0; i 10) diffsec = 9, diffusec = 999999; - if(id & CAN_EFF_FLAG) + if (id & CAN_EFF_FLAG) printf("%ld.%06ld EXT 0x%08lX ", diffsec, diffusec, (id & CAN_EFF_MASK)); else printf("%ld.%06ld STD 0x%03lX ", diffsec, diffusec, id); @@ -664,7 +633,7 @@ void print_snifline(int slot){ memset(&sniftab[slot].marker.data, 0, 8); }; -void writesettings(char* name){ +void writesettings(char* name) { int fd; char fname[30] = SETFNAME; @@ -678,7 +647,7 @@ void writesettings(char* name){ for (i=0; i < idx; i++) { sprintf(buf, "<%08X>%c.", sniftab[i].current.can_id, (is_set(i, ENABLE))?'1':'0'); write(fd, buf, 12); - for (j=0; j<8 ; j++){ + for (j=0; j<8 ; j++) { sprintf(buf, "%02X", sniftab[i].notch.data[j]); write(fd, buf, 2); } @@ -691,7 +660,7 @@ void writesettings(char* name){ printf("unable to write setting file '%s'!\n", fname); }; -void readsettings(char* name, int sockfd){ +void readsettings(char* name, int sockfd) { int fd; char fname[30] = SETFNAME; @@ -705,14 +674,14 @@ void readsettings(char* name, int sockfd){ if (fd > 0) { if (!sockfd) printf("reading setting file '%s' ... ", fname); - - while(!done){ + + while (!done) { if (read(fd, &buf, 29) == 29) { unsigned long id = strtoul(&buf[1], (char **)NULL, 16); pos = sniftab_index(id); - if(pos < 0){ - if(idx < MAX_SLOTS){ + if (pos < 0) { + if (idx < MAX_SLOTS) { pos = idx++; sniftab[pos].current.can_id = id; } @@ -728,12 +697,11 @@ void readsettings(char* name, int sockfd){ if (is_set(pos, ENABLE)) { do_clr(pos, ENABLE); } - for (j=7; j>=0 ; j--){ + for (j=7; j>=0 ; j--) { sniftab[pos].notch.data[j] = (__u8) strtoul(&buf[2*j+12], (char **)NULL, 16) & 0xFF; buf[2*j+12] = 0; /* cut off each time */ } - } else { if (!sockfd) @@ -752,12 +720,12 @@ void readsettings(char* name, int sockfd){ printf("unable to read setting file '%s'!\n", fname); }; -int sniftab_index(canid_t id){ +static int sniftab_index(canid_t id) { int i; - for(i = 0; i <= idx; i++) - if(id == sniftab[i].current.can_id) + for (i = 0; i <= idx; i++) + if (id == sniftab[i].current.can_id) return i; return -1; /* No match */