Add Classes of Procedures, HDLC params to sockets

Changes:

    * Define different sets of default parameters for AX.25 versions
      2.2 and prior

    * Add flags_classes, flags_hdlc and version to patty_ax25_sock

    * Remove flags member from patty_ax25_sock

    * Inherit Classes of Procedures value from interface when an
      interface is bound to a socket
This commit is contained in:
XANTRONIX Development 2020-07-19 01:38:36 -04:00 committed by XANTRONIX Industrial
parent 5a64ea15d3
commit a4f50d6bea
2 changed files with 28 additions and 7 deletions

View file

@ -1,10 +1,24 @@
#ifndef _PATTY_AX25_SOCK_H
#define _PATTY_AX25_SOCK_H
#define PATTY_AX25_SOCK_DEFAULT_MAXLEN 4096
#define PATTY_AX25_SOCK_DEFAULT_WINDOW 127
#define PATTY_AX25_SOCK_DEFAULT_RETRY 10
#define PATTY_AX25_SOCK_DEFAULT_ACK 3000
#define PATTY_AX25_SOCK_DEFAULT_HDLC \
(PATTY_AX25_PARAM_HDLC_REJ \
| PATTY_AX25_PARAM_HDLC_XADDR | PATTY_AX25_PARAM_HDLC_MODULO_8 \
| PATTY_AX25_PARAM_HDLC_TEST | PATTY_AX25_PARAM_HDLC_SYNC_TX)
#define PATTY_AX25_SOCK_2_2_DEFAULT_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_TEST | PATTY_AX25_PARAM_HDLC_SYNC_TX)
#define PATTY_AX25_SOCK_DEFAULT_MAXLEN 256
#define PATTY_AX25_SOCK_DEFAULT_WINDOW 4
#define PATTY_AX25_SOCK_DEFAULT_WINDOW_SABME 32
#define PATTY_AX25_SOCK_DEFAULT_RETRY 10
#define PATTY_AX25_SOCK_DEFAULT_ACK 3000
#define PATTY_AX25_SOCK_2_2_DEFAULT_MAXLEN 4096
#define PATTY_AX25_SOCK_2_2_DEFAULT_WINDOW 127
enum patty_ax25_sock_type {
PATTY_AX25_SOCK_STREAM,
@ -32,6 +46,7 @@ enum patty_ax25_sock_opt {
typedef struct _patty_ax25_sock {
enum patty_ax25_proto proto;
enum patty_ax25_sock_type type;
enum patty_ax25_version version;
enum patty_ax25_sock_status status;
enum patty_ax25_sock_mode mode;
@ -49,6 +64,8 @@ typedef struct _patty_ax25_sock {
unsigned int seq_send,
seq_recv;
uint32_t flags_classes,
flags_hdlc;
int fd;
char path[PATTY_AX25_SOCK_PATH_SIZE];

View file

@ -81,8 +81,11 @@ patty_ax25_sock *patty_ax25_sock_new(enum patty_ax25_proto proto,
patty_ax25_sock_reset(sock);
sock->proto = proto;
sock->type = type;
sock->proto = proto;
sock->type = type;
sock->version = PATTY_AX25_2_0;
sock->flags_classes = PATTY_AX25_PARAM_DEFAULT_CLASSES;
sock->flags_hdlc = PATTY_AX25_SOCK_DEFAULT_HDLC;
if ((sock->buf = malloc(PATTY_AX25_FRAME_OVERHEAD + sock->n_maxlen_rx)) == NULL) {
goto error_malloc_buf;
@ -123,7 +126,6 @@ void patty_ax25_sock_reset(patty_ax25_sock *sock) {
sock->timer_ack = 0;
sock->timer_response = 0;
sock->timer_keepalive = 0;
sock->flags = 0;
sock->seq_send = 0;
sock->seq_recv = 0;
}
@ -167,6 +169,8 @@ int patty_ax25_sock_bind_if(patty_ax25_sock *sock,
}
}
sock->flags_classes = iface->flags;
return 0;
error_if_promisc_add: