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:
parent
5a64ea15d3
commit
a4f50d6bea
2 changed files with 28 additions and 7 deletions
|
@ -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];
|
||||
|
|
10
src/sock.c
10
src/sock.c
|
@ -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:
|
||||
|
|
Loading…
Add table
Reference in a new issue