From d494ffecfc27fc16d72451c57e7e017273652f31 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Sun, 19 Jul 2020 20:27:56 -0400 Subject: [PATCH] Fix issues encoding extended frame control fields Changes: * When encoding extended frame control fields, ensure the least significant byte is written first, as per the AX.25 v2.2 standard --- src/sock.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/sock.c b/src/sock.c index a0c3f5e..6750607 100644 --- a/src/sock.c +++ b/src/sock.c @@ -332,14 +332,19 @@ ssize_t patty_ax25_sock_send(patty_ax25_sock *sock, offset = addr_copy_to_buf(buf, sock, cr); if (sock->mode == PATTY_AX25_SOCK_SABME) { - buf[offset++] = (control & 0xff00) >> 8; - buf[offset++] = control & 0x00ff; + buf[offset++] = control & 0x00ff; + + if (!(PATTY_AX25_FRAME_CONTROL_U(control))) { + buf[offset++] = (control & 0xff00) >> 8; + } } else { buf[offset++] = control; } if (info) { - buf[offset++] = (uint8_t)sock->proto; + if (PATTY_AX25_FRAME_CONTROL_I(control)) { + buf[offset++] = (uint8_t)sock->proto; + } memcpy(buf + offset, info, infolen); offset += infolen; @@ -498,9 +503,7 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock) { | PATTY_AX25_PARAM_HDLC_MODULO_128 | PATTY_AX25_PARAM_HDLC_SYNC_TX; - params.info_tx = sock->n_maxlen_tx; params.info_rx = sock->n_maxlen_rx; - params.window_tx = sock->n_window_tx; params.window_rx = sock->n_window_rx; params.ack = sock->n_ack; params.retry = sock->n_retry;