From 6711f37ab964c7e01eff7169234f8d2330978907 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Tue, 21 Jul 2020 01:41:32 -0400 Subject: [PATCH] Ensure XID frame response is encoded as responses Changes: * Modify patty_ax25_sock_send_xid() to require the 'cr' argument, which specifies whether the frame address field is to be encoded with the 'command' or 'response' bits set as appropriate --- include/patty/ax25/sock.h | 3 ++- src/server.c | 4 ++-- src/sock.c | 5 +++-- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/include/patty/ax25/sock.h b/include/patty/ax25/sock.h index a003f29..9b843ac 100644 --- a/include/patty/ax25/sock.h +++ b/include/patty/ax25/sock.h @@ -130,7 +130,8 @@ ssize_t patty_ax25_sock_send_sabme(patty_ax25_sock *sock, int pf); ssize_t patty_ax25_sock_send_disc(patty_ax25_sock *sock, int pf); -ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock); +ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock, + enum patty_ax25_frame_cr cr); ssize_t patty_ax25_sock_write(patty_ax25_sock *sock, void *buf, diff --git a/src/server.c b/src/server.c index 68fe308..305dd51 100644 --- a/src/server.c +++ b/src/server.c @@ -772,7 +772,7 @@ static int server_connect(patty_ax25_server *server, * Send an XID frame, to attempt to negotiate AX.25 v2.2 and its default * parameters. */ - if (patty_ax25_sock_send_xid(sock) < 0) { + if (patty_ax25_sock_send_xid(sock, PATTY_AX25_FRAME_COMMAND) < 0) { response.ret = -1; response.eno = errno; @@ -1396,7 +1396,7 @@ static int handle_xid(patty_ax25_server *server, goto error_sock_save_by_fd; } - return patty_ax25_sock_send_xid(remote); + return patty_ax25_sock_send_xid(remote, PATTY_AX25_FRAME_RESPONSE); } return reply_dm(iface, frame, PATTY_AX25_FRAME_FINAL); diff --git a/src/sock.c b/src/sock.c index 754fb82..c6341d3 100644 --- a/src/sock.c +++ b/src/sock.c @@ -497,7 +497,8 @@ ssize_t patty_ax25_sock_send_disc(patty_ax25_sock *sock, int pf) { 0); } -ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock) { +ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock, + enum patty_ax25_frame_cr cr) { patty_ax25_params params; char buf[256]; @@ -540,7 +541,7 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock) { } return patty_ax25_sock_send(sock, - PATTY_AX25_FRAME_COMMAND, + cr, control_u(PATTY_AX25_FRAME_XID, 0), buf, encoded);