summaryrefslogtreecommitdiff
path: root/src/socket/bsd_common.c
blob: af0a9b627c18e54761d135b9bae67dd65a530b62 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef NAUNET_ON_WINDOWS
#include <netinet/tcp.h>
#include <netinet/in.h>
#endif

#include "socket.h"

void nn_socket_set_nodelay(struct nn_socket *sock, s32 nodelay)
{
    al_assert(sock->type == NNWT_SOCKET_TCP);
    setsockopt(sock->fd, IPPROTO_TCP, TCP_NODELAY, (char *)&nodelay, sizeof(nodelay));
}

u32 nn_socket_get_send_buf(struct nn_socket *sock)
{
    u32 send_queue_size;
    socklen_t optlen = sizeof(send_queue_size);
    getsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, &optlen);
    return send_queue_size;
}

void nn_socket_set_send_buf(struct nn_socket *sock, u32 sndbuf)
{
    u32 send_queue_size = sndbuf;
    setsockopt(sock->fd, SOL_SOCKET, SO_SNDBUF, (char *)&send_queue_size, sizeof(send_queue_size));
}

u32 nn_socket_get_recv_buf(struct nn_socket *sock)
{
    u32 receive_queue_size;
    socklen_t optlen = sizeof(receive_queue_size);
    getsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, &optlen);
    return receive_queue_size;
}

void nn_socket_set_recv_buf(struct nn_socket *sock, u32 rcvbuf)
{
    u32 receive_queue_size = rcvbuf;
    setsockopt(sock->fd, SOL_SOCKET, SO_RCVBUF, (char *)&receive_queue_size, sizeof(receive_queue_size));
}