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
This commit is contained in:
parent
8b741cadc8
commit
d494ffecfc
1 changed files with 8 additions and 5 deletions
|
@ -332,14 +332,19 @@ ssize_t patty_ax25_sock_send(patty_ax25_sock *sock,
|
||||||
offset = addr_copy_to_buf(buf, sock, cr);
|
offset = addr_copy_to_buf(buf, sock, cr);
|
||||||
|
|
||||||
if (sock->mode == PATTY_AX25_SOCK_SABME) {
|
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 {
|
} else {
|
||||||
buf[offset++] = control;
|
buf[offset++] = control;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (info) {
|
if (info) {
|
||||||
|
if (PATTY_AX25_FRAME_CONTROL_I(control)) {
|
||||||
buf[offset++] = (uint8_t)sock->proto;
|
buf[offset++] = (uint8_t)sock->proto;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(buf + offset, info, infolen);
|
memcpy(buf + offset, info, infolen);
|
||||||
offset += 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_MODULO_128
|
||||||
| PATTY_AX25_PARAM_HDLC_SYNC_TX;
|
| PATTY_AX25_PARAM_HDLC_SYNC_TX;
|
||||||
|
|
||||||
params.info_tx = sock->n_maxlen_tx;
|
|
||||||
params.info_rx = sock->n_maxlen_rx;
|
params.info_rx = sock->n_maxlen_rx;
|
||||||
params.window_tx = sock->n_window_tx;
|
|
||||||
params.window_rx = sock->n_window_rx;
|
params.window_rx = sock->n_window_rx;
|
||||||
params.ack = sock->n_ack;
|
params.ack = sock->n_ack;
|
||||||
params.retry = sock->n_retry;
|
params.retry = sock->n_retry;
|
||||||
|
|
Loading…
Add table
Reference in a new issue