Use bit fields for setsockopt() SOCK_OPT_PARAMS
This commit is contained in:
parent
7a76da651c
commit
893ddefd57
3 changed files with 24 additions and 5 deletions
|
@ -46,6 +46,15 @@
|
|||
#define PATTY_AX25_SOCK_2_2_MAX_I_LEN 1536
|
||||
#define PATTY_AX25_SOCK_2_2_MAX_WINDOW 127
|
||||
|
||||
/*
|
||||
* Parameters flags to be set when calling patty_client_setsockopt() with
|
||||
* PATTY_AX25_SOCK_PARAMS
|
||||
*/
|
||||
#define PATTY_AX25_SOCK_PARAM_MTU (1 << PATTY_AX25_PARAM_INFO_TX)
|
||||
#define PATTY_AX25_SOCK_PARAM_WINDOW (1 << PATTY_AX25_PARAM_WINDOW_TX)
|
||||
#define PATTY_AX25_SOCK_PARAM_ACK (1 << PATTY_AX25_PARAM_ACK)
|
||||
#define PATTY_AX25_SOCK_PARAM_RETRY (1 << PATTY_AX25_PARAM_RETRY)
|
||||
|
||||
enum patty_ax25_sock_type {
|
||||
PATTY_AX25_SOCK_STREAM,
|
||||
PATTY_AX25_SOCK_DGRAM,
|
||||
|
|
|
@ -57,6 +57,8 @@ typedef struct _patty_client_setsockopt_request {
|
|||
} patty_client_setsockopt_request;
|
||||
|
||||
typedef struct _patty_client_setsockopt_params {
|
||||
uint32_t flags;
|
||||
|
||||
size_t mtu,
|
||||
window,
|
||||
retry;
|
||||
|
|
18
src/server.c
18
src/server.c
|
@ -613,12 +613,20 @@ static int server_setsockopt(patty_ax25_server *server,
|
|||
goto error_read;
|
||||
}
|
||||
|
||||
if (data.mtu) patty_ax25_sock_mtu_set(sock, data.mtu);
|
||||
if (data.window) patty_ax25_sock_window_set(sock, data.window);
|
||||
if (data.ack) patty_ax25_sock_ack_set(sock, data.ack);
|
||||
if (data.retry) patty_ax25_sock_retry_set(sock, data.retry);
|
||||
if (data.flags & PATTY_AX25_SOCK_PARAM_MTU)
|
||||
patty_ax25_sock_mtu_set(sock, data.mtu);
|
||||
|
||||
if (data.mtu || data.window) {
|
||||
if (data.flags & PATTY_AX25_SOCK_PARAM_WINDOW)
|
||||
patty_ax25_sock_window_set(sock, data.window);
|
||||
|
||||
if (data.flags & PATTY_AX25_SOCK_PARAM_ACK)
|
||||
patty_ax25_sock_ack_set(sock, data.ack);
|
||||
|
||||
if (data.flags & PATTY_AX25_SOCK_PARAM_RETRY)
|
||||
patty_ax25_sock_retry_set(sock, data.retry);
|
||||
|
||||
if (data.flags & (PATTY_AX25_SOCK_PARAM_MTU
|
||||
| PATTY_AX25_SOCK_PARAM_WINDOW)) {
|
||||
if (patty_ax25_sock_realloc_bufs(sock) < 0) {
|
||||
goto error_realloc_bufs;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue