diff --git a/src/sock.c b/src/sock.c index cf77235..ef41686 100644 --- a/src/sock.c +++ b/src/sock.c @@ -509,6 +509,7 @@ error_invalid_type: static ssize_t frame_send(patty_ax25_sock *sock, enum patty_ax25_frame_cr cr, uint16_t control, + uint8_t proto, void *info, size_t infolen) { size_t offset = 0; @@ -547,7 +548,7 @@ static ssize_t frame_send(patty_ax25_sock *sock, if (info && infolen) { if (PATTY_AX25_FRAME_CONTROL_I(control)) { - buf[offset++] = (uint8_t)sock->proto; + buf[offset++] = proto; } memcpy(buf + offset, info, infolen); @@ -628,6 +629,7 @@ ssize_t patty_ax25_sock_send_rr(patty_ax25_sock *sock, return frame_send(sock, cr, control_s(sock, PATTY_AX25_FRAME_RR, pf), + 0, NULL, 0); } @@ -638,6 +640,7 @@ ssize_t patty_ax25_sock_send_rnr(patty_ax25_sock *sock, return frame_send(sock, cr, control_s(sock, PATTY_AX25_FRAME_RNR, pf), + 0, NULL, 0); } @@ -648,6 +651,7 @@ ssize_t patty_ax25_sock_send_rej(patty_ax25_sock *sock, return frame_send(sock, cr, control_s(sock, PATTY_AX25_FRAME_REJ, pf), + 0, NULL, 0); } @@ -657,6 +661,7 @@ ssize_t patty_ax25_sock_send_srej(patty_ax25_sock *sock, return frame_send(sock, cr, control_s(sock, PATTY_AX25_FRAME_SREJ, 1), + 0, NULL, 0); } @@ -669,6 +674,7 @@ ssize_t patty_ax25_sock_send_sabm(patty_ax25_sock *sock, int pf) { return frame_send(sock, PATTY_AX25_FRAME_COMMAND, control_u(type, pf), + 0, NULL, 0); } @@ -677,6 +683,7 @@ ssize_t patty_ax25_sock_send_disc(patty_ax25_sock *sock, int pf) { return frame_send(sock, PATTY_AX25_FRAME_COMMAND, control_u(PATTY_AX25_FRAME_DISC, pf), + 0, NULL, 0); } @@ -715,6 +722,7 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock, return frame_send(sock, cr, control_u(PATTY_AX25_FRAME_XID, 0), + 0, buf, encoded); @@ -730,6 +738,7 @@ ssize_t patty_ax25_sock_send_test(patty_ax25_sock *sock, return frame_send(sock, PATTY_AX25_FRAME_COMMAND, control_u(PATTY_AX25_FRAME_TEST, 1), + 0, info, infolen); } @@ -749,7 +758,12 @@ ssize_t patty_ax25_sock_write(patty_ax25_sock *sock, case PATTY_AX25_SOCK_STREAM: control = control_i(sock, 0); - if (frame_send(sock, PATTY_AX25_FRAME_COMMAND, control, buf, len) < 0) { + if (frame_send(sock, + PATTY_AX25_FRAME_COMMAND, + control, + sock->proto, + buf, + len) < 0) { goto error_frame_send; } @@ -760,7 +774,12 @@ ssize_t patty_ax25_sock_write(patty_ax25_sock *sock, case PATTY_AX25_SOCK_DGRAM: control = control_ui(0); - if (frame_send(sock, PATTY_AX25_FRAME_COMMAND, control, buf, len) < 0) { + if (frame_send(sock, + PATTY_AX25_FRAME_COMMAND, + control, + sock->proto, + buf, + len) < 0) { goto error_frame_send; }