From f567b75c6c1c10d23fa10a23816ccf9e30481244 Mon Sep 17 00:00:00 2001 From: Oliver Hartkopp Date: Tue, 3 Nov 2020 19:30:09 +0100 Subject: [PATCH] cangen: support fixed length values for len8_dlc Allow raw DLC values up to 15 in combination with the '-8' option. Signed-off-by: Oliver Hartkopp --- cangen.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/cangen.c b/cangen.c index 691b768..300690e 100644 --- a/cangen.c +++ b/cangen.c @@ -369,9 +369,17 @@ int main(int argc, char **argv) /* ensure discrete CAN FD length values 0..8, 12, 16, 20, 24, 32, 64 */ frame.len = can_dlc2len(can_len2dlc(frame.len)); } else { - /* sanitize CAN 2.0 frame length */ - if (frame.len > 8) - frame.len = 8; + /* sanitize Classical CAN 2.0 frame length */ + if (len8_dlc) { + if (frame.len > CAN_MAX_RAW_DLC) + frame.len = CAN_MAX_RAW_DLC; + + if (frame.len > CAN_MAX_DLEN) + ccf->len8_dlc = frame.len; + } + + if (frame.len > CAN_MAX_DLEN) + frame.len = CAN_MAX_DLEN; } if (bind(s, (struct sockaddr *)&addr, sizeof(addr)) < 0) {