Implement support for handling SABME frames

This commit is contained in:
XANTRONIX Development 2020-07-14 00:36:05 -04:00 committed by XANTRONIX Industrial
parent 905d5b117c
commit 359742f949

View file

@ -1074,9 +1074,11 @@ static int handle_sabm(patty_ax25_server *server,
}
remote->status = PATTY_AX25_SOCK_ESTABLISHED;
remote->mode = PATTY_AX25_SOCK_SABM;
remote->iface = iface;
remote->mode = (frame->type == PATTY_AX25_FRAME_SABM)?
PATTY_AX25_SOCK_SABM: PATTY_AX25_SOCK_SABME;
save_reply_addr(remote, frame);
if (sock_save_by_fd(server->socks_by_fd, remote) < 0) {
@ -1106,7 +1108,7 @@ static int handle_sabm(patty_ax25_server *server,
response.ret = 0;
response.eno = 0;
memcpy(&response.peer, &frame->src, sizeof(patty_ax25_addr));
memcpy(&response.peer, &frame->src, sizeof(patty_ax25_addr));
memcpy(&response.path, &remote->path, sizeof(response.path));
if (write(client, &response, sizeof(response)) < 0) {
@ -1315,12 +1317,13 @@ static int handle_frame(patty_ax25_server *server,
}
switch (frame.type) {
case PATTY_AX25_FRAME_I: return handle_i(server, iface, sock, &frame);
case PATTY_AX25_FRAME_SABM: return handle_sabm(server, iface, &frame);
case PATTY_AX25_FRAME_UA: return handle_ua(server, iface, &frame);
case PATTY_AX25_FRAME_DM: return handle_dm(server, iface, &frame);
case PATTY_AX25_FRAME_DISC: return handle_disc(server, iface, &frame);
case PATTY_AX25_FRAME_FRMR: return 0;
case PATTY_AX25_FRAME_I: return handle_i(server, iface, sock, &frame);
case PATTY_AX25_FRAME_UA: return handle_ua(server, iface, &frame);
case PATTY_AX25_FRAME_DM: return handle_dm(server, iface, &frame);
case PATTY_AX25_FRAME_SABM:
case PATTY_AX25_FRAME_SABME: return handle_sabm(server, iface, &frame);
case PATTY_AX25_FRAME_DISC: return handle_disc(server, iface, &frame);
case PATTY_AX25_FRAME_FRMR: return 0;
default:
break;