diff --git a/cangw.c b/cangw.c index 6369a9f..f7a6678 100644 --- a/cangw.c +++ b/cangw.c @@ -774,7 +774,7 @@ int main(int argc, char **argv) break; case 'u': - uid = strtoul(optarg, (char **)NULL, 16); + uid = strtoul(optarg, NULL, 16); break; case 'l': diff --git a/cansniffer.c b/cansniffer.c index d4e98f7..5aa5e7a 100644 --- a/cansniffer.c +++ b/cansniffer.c @@ -931,7 +931,7 @@ int readsettings(char* name) done = true; continue; } - unsigned long id = strtoul(&buf[1], (char **)NULL, 16); + unsigned long id = strtoul(&buf[1], NULL, 16); sniftab[idx].current.can_id = id; @@ -942,7 +942,7 @@ int readsettings(char* name) for (j = max_dlen - 1; j >= 0 ; j--) { sniftab[idx].notch.data[j] = - (__u8) strtoul(&buf[2*j+12], (char **)NULL, 16) & 0xFF; + (__u8) strtoul(&buf[2*j+12], NULL, 16) & 0xFF; buf[2*j+12] = 0; /* cut off each time */ } diff --git a/include/linux/can/isotp.h b/include/linux/can/isotp.h index c55935b..590f8ae 100644 --- a/include/linux/can/isotp.h +++ b/include/linux/can/isotp.h @@ -137,20 +137,16 @@ struct can_isotp_ll_options { #define CAN_ISOTP_WAIT_TX_DONE 0x400 /* wait for tx completion */ #define CAN_ISOTP_SF_BROADCAST 0x800 /* 1-to-N functional addressing */ -/* default values */ +/* protocol machine default values */ #define CAN_ISOTP_DEFAULT_FLAGS 0 #define CAN_ISOTP_DEFAULT_EXT_ADDRESS 0x00 #define CAN_ISOTP_DEFAULT_PAD_CONTENT 0xCC /* prevent bit-stuffing */ -#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 0 +#define CAN_ISOTP_DEFAULT_FRAME_TXTIME 50000 /* 50 micro seconds */ #define CAN_ISOTP_DEFAULT_RECV_BS 0 #define CAN_ISOTP_DEFAULT_RECV_STMIN 0x00 #define CAN_ISOTP_DEFAULT_RECV_WFTMAX 0 -#define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU -#define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN -#define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0 - /* * Remark on CAN_ISOTP_DEFAULT_RECV_* values: * @@ -162,4 +158,24 @@ struct can_isotp_ll_options { * consistency and copied directly into the flow control (FC) frame. */ +/* link layer default values => make use of Classical CAN frames */ + +#define CAN_ISOTP_DEFAULT_LL_MTU CAN_MTU +#define CAN_ISOTP_DEFAULT_LL_TX_DL CAN_MAX_DLEN +#define CAN_ISOTP_DEFAULT_LL_TX_FLAGS 0 + +/* + * The CAN_ISOTP_DEFAULT_FRAME_TXTIME has become a non-zero value as + * it only makes sense for isotp implementation tests to run without + * a N_As value. As user space applications usually do not set the + * frame_txtime element of struct can_isotp_options the new in-kernel + * default is very likely overwritten with zero when the sockopt() + * CAN_ISOTP_OPTS is invoked. + * To make sure that a N_As value of zero is only set intentional the + * value '0' is now interpreted as 'do not change the current value'. + * When a frame_txtime of zero is required for testing purposes this + * CAN_ISOTP_FRAME_TXTIME_ZERO u32 value has to be set in frame_txtime. + */ +#define CAN_ISOTP_FRAME_TXTIME_ZERO 0xFFFFFFFF + #endif /* !_UAPI_CAN_ISOTP_H */ diff --git a/isotpdump.c b/isotpdump.c index 96ad307..d22725e 100644 --- a/isotpdump.c +++ b/isotpdump.c @@ -225,13 +225,13 @@ int main(int argc, char **argv) while ((opt = getopt(argc, argv, "s:d:ax:X:ct:u?")) != -1) { switch (opt) { case 's': - src = strtoul(optarg, (char **)NULL, 16); + src = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) src |= CAN_EFF_FLAG; break; case 'd': - dst = strtoul(optarg, (char **)NULL, 16); + dst = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) dst |= CAN_EFF_FLAG; break; @@ -249,7 +249,7 @@ int main(int argc, char **argv) if (!strncmp(optarg, "any", 3)) extany = 1; else - extaddr = strtoul(optarg, (char **)NULL, 16) & 0xFF; + extaddr = strtoul(optarg, NULL, 16) & 0xFF; break; case 'X': @@ -257,7 +257,7 @@ int main(int argc, char **argv) if (!strncmp(optarg, "any", 3)) rx_extany = 1; else - rx_extaddr = strtoul(optarg, (char **)NULL, 16) & 0xFF; + rx_extaddr = strtoul(optarg, NULL, 16) & 0xFF; break; case 't': diff --git a/isotpperf.c b/isotpperf.c index 6252ac9..154d5cd 100644 --- a/isotpperf.c +++ b/isotpperf.c @@ -121,25 +121,25 @@ int main(int argc, char **argv) while ((opt = getopt(argc, argv, "s:d:x:X:?")) != -1) { switch (opt) { case 's': - src = strtoul(optarg, (char **)NULL, 16); + src = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) src |= CAN_EFF_FLAG; break; case 'd': - dst = strtoul(optarg, (char **)NULL, 16); + dst = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) dst |= CAN_EFF_FLAG; break; case 'x': ext = 1; - extaddr = strtoul(optarg, (char **)NULL, 16) & 0xFF; + extaddr = strtoul(optarg, NULL, 16) & 0xFF; break; case 'X': rx_ext = 1; - rx_extaddr = strtoul(optarg, (char **)NULL, 16) & 0xFF; + rx_extaddr = strtoul(optarg, NULL, 16) & 0xFF; break; case '?': diff --git a/isotprecv.c b/isotprecv.c index 4b41022..e07e36a 100644 --- a/isotprecv.c +++ b/isotprecv.c @@ -57,7 +57,7 @@ #include #define NO_CAN_ID 0xFFFFFFFFU -#define BUFSIZE 5000 /* size > 4095 to check socket API internal checks */ +#define BUFSIZE 67000 /* size > 66000 to check socket API internal checks */ void print_usage(char *prg) { @@ -99,13 +99,13 @@ int main(int argc, char **argv) while ((opt = getopt(argc, argv, "s:d:x:p:P:b:m:w:f:lL:?")) != -1) { switch (opt) { case 's': - addr.can_addr.tp.tx_id = strtoul(optarg, (char **)NULL, 16); + addr.can_addr.tp.tx_id = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) addr.can_addr.tp.tx_id |= CAN_EFF_FLAG; break; case 'd': - addr.can_addr.tp.rx_id = strtoul(optarg, (char **)NULL, 16); + addr.can_addr.tp.rx_id = strtoul(optarg, NULL, 16); if (strlen(optarg) > 7) addr.can_addr.tp.rx_id |= CAN_EFF_FLAG; break; @@ -163,20 +163,20 @@ int main(int argc, char **argv) break; case 'b': - fcopts.bs = strtoul(optarg, (char **)NULL, 16) & 0xFF; + fcopts.bs = strtoul(optarg, NULL, 16) & 0xFF; break; case 'm': - fcopts.stmin = strtoul(optarg, (char **)NULL, 16) & 0xFF; + fcopts.stmin = strtoul(optarg, NULL, 16) & 0xFF; break; case 'w': - fcopts.wftmax = strtoul(optarg, (char **)NULL, 16) & 0xFF; + fcopts.wftmax = strtoul(optarg, NULL, 16) & 0xFF; break; case 'f': opts.flags |= CAN_ISOTP_FORCE_RXSTMIN; - force_rx_stmin = strtoul(optarg, (char **)NULL, 10); + force_rx_stmin = strtoul(optarg, NULL, 10); break; case 'l': diff --git a/isotpsend.c b/isotpsend.c index ed335d4..ef3d19d 100644 --- a/isotpsend.c +++ b/isotpsend.c @@ -57,7 +57,8 @@ #include #define NO_CAN_ID 0xFFFFFFFFU -#define BUFSIZE 5000 /* size > 4095 to check socket API internal checks */ +#define BUFSIZE 67000 /* size > 66000 kernel buf to test socket API internal checks */ +#define ZERO_STRING "ZERO" void print_usage(char *prg) { @@ -68,7 +69,7 @@ void print_usage(char *prg) fprintf(stderr, " -x [:] (extended addressing / opt. separate rxaddr)\n"); fprintf(stderr, " -p [tx]:[rx] (set and enable tx/rx padding bytes)\n"); fprintf(stderr, " -P (check rx padding for (l)ength (c)ontent (a)ll)\n"); - fprintf(stderr, " -t