Keep default Classes of Procedures for socks, ifs
Keep distinct default Classes of Procedures parameter flag values for sockets and interfaces, as the Asynchronous Balanced Mode parameter does not apply to the interface itself, and the Half/Full Duplex parameters do not apply to the sock
This commit is contained in:
parent
be6ff4b660
commit
2c585ca4fe
5 changed files with 13 additions and 25 deletions
|
@ -65,9 +65,6 @@ enum patty_ax25_param_classes {
|
|||
PATTY_AX25_PARAM_CLASSES_FULL_DUPLEX = (1 << 6)
|
||||
};
|
||||
|
||||
#define PATTY_AX25_PARAM_DEFAULT_CLASSES \
|
||||
(PATTY_AX25_PARAM_CLASSES_ABM)
|
||||
|
||||
enum patty_ax25_param_hdlc {
|
||||
PATTY_AX25_PARAM_HDLC_REJ = (1 << 1),
|
||||
PATTY_AX25_PARAM_HDLC_SREJ = (1 << 2),
|
||||
|
|
|
@ -6,6 +6,9 @@
|
|||
|
||||
#include <patty/list.h>
|
||||
|
||||
#define PATTY_AX25_IF_DEFAULT_CLASSES \
|
||||
(PATTY_AX25_PARAM_CLASSES_HALF_DUPLEX)
|
||||
|
||||
#define PATTY_AX25_IF_OPT_TYPE_MASK 0x1f
|
||||
|
||||
#define PATTY_AX25_IF_OPT_TYPE(n) \
|
||||
|
@ -41,7 +44,7 @@ typedef struct _patty_ax25_if {
|
|||
|
||||
char name[8];
|
||||
|
||||
uint32_t flags;
|
||||
uint32_t flags_classes;
|
||||
|
||||
void *rx_buf,
|
||||
*tx_buf;
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
#ifndef _PATTY_AX25_SOCK_H
|
||||
#define _PATTY_AX25_SOCK_H
|
||||
|
||||
#define PATTY_AX25_SOCK_DEFAULT_CLASSES \
|
||||
(PATTY_AX25_PARAM_CLASSES_ABM)
|
||||
|
||||
#define PATTY_AX25_SOCK_DEFAULT_HDLC \
|
||||
(PATTY_AX25_PARAM_HDLC_REJ \
|
||||
| PATTY_AX25_PARAM_HDLC_XADDR | PATTY_AX25_PARAM_HDLC_MODULO_8 \
|
||||
|
|
3
src/if.c
3
src/if.c
|
@ -52,8 +52,7 @@ patty_ax25_if *patty_ax25_if_new(int opts, patty_ax25_if_info *info) {
|
|||
* TODO: Eventually inherit the half/full-duplex flag from the TNC this
|
||||
* interface is bound to
|
||||
*/
|
||||
iface->flags = PATTY_AX25_PARAM_DEFAULT_CLASSES
|
||||
| PATTY_AX25_PARAM_CLASSES_HALF_DUPLEX;
|
||||
iface->flags_classes = PATTY_AX25_IF_DEFAULT_CLASSES;
|
||||
|
||||
if ((iface->rx_buf = malloc(PATTY_AX25_IF_DEFAULT_MRU)) == NULL) {
|
||||
goto error_malloc_rx_buf;
|
||||
|
|
24
src/sock.c
24
src/sock.c
|
@ -112,7 +112,7 @@ patty_ax25_sock *patty_ax25_sock_new(enum patty_ax25_proto proto,
|
|||
sock->proto = proto;
|
||||
sock->type = type;
|
||||
sock->version = PATTY_AX25_2_0;
|
||||
sock->flags_classes = PATTY_AX25_PARAM_DEFAULT_CLASSES;
|
||||
sock->flags_classes = PATTY_AX25_SOCK_DEFAULT_CLASSES;
|
||||
sock->flags_hdlc = PATTY_AX25_SOCK_DEFAULT_HDLC;
|
||||
|
||||
if (init_bufs(sock) < 0) {
|
||||
|
@ -279,7 +279,7 @@ int patty_ax25_sock_bind_if(patty_ax25_sock *sock,
|
|||
}
|
||||
}
|
||||
|
||||
sock->flags_classes = iface->flags;
|
||||
sock->flags_classes |= iface->flags_classes;
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -526,22 +526,8 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock,
|
|||
| (1 << PATTY_AX25_PARAM_ACK)
|
||||
| (1 << PATTY_AX25_PARAM_RETRY);
|
||||
|
||||
/*
|
||||
* TODO: This value needs to come from the interface this socket is bound
|
||||
* to
|
||||
*/
|
||||
params.classes = PATTY_AX25_PARAM_CLASSES_ABM
|
||||
| PATTY_AX25_PARAM_CLASSES_HALF_DUPLEX;
|
||||
|
||||
/*
|
||||
* TODO: These flags should be part of each sock object
|
||||
*/
|
||||
params.hdlc = PATTY_AX25_PARAM_HDLC_REJ
|
||||
| PATTY_AX25_PARAM_HDLC_SREJ
|
||||
| PATTY_AX25_PARAM_HDLC_XADDR
|
||||
| PATTY_AX25_PARAM_HDLC_MODULO_128
|
||||
| PATTY_AX25_PARAM_HDLC_SYNC_TX;
|
||||
|
||||
params.classes = sock->flags_classes;
|
||||
params.hdlc = sock->flags_hdlc;
|
||||
params.info_rx = sock->n_maxlen_rx;
|
||||
params.window_rx = sock->n_window_rx;
|
||||
params.ack = sock->n_ack;
|
||||
|
@ -557,8 +543,8 @@ ssize_t patty_ax25_sock_send_xid(patty_ax25_sock *sock,
|
|||
buf,
|
||||
encoded);
|
||||
|
||||
error_nopeer:
|
||||
error_frame_encode_xid:
|
||||
error_nopeer:
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue