Implement support for handling SABME frames
This commit is contained in:
parent
905d5b117c
commit
359742f949
1 changed files with 11 additions and 8 deletions
19
src/server.c
19
src/server.c
|
@ -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;
|
||||
|
|
Loading…
Add table
Reference in a new issue