net/gnrc/transport_layer/tcp/internal/common.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015-2017 Simon Brummer
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
22 #ifndef COMMON_H
23 #define COMMON_H
24 
25 #include <stdint.h>
26 #include "assert.h"
27 #include "kernel_types.h"
28 #include "thread.h"
29 #include "mutex.h"
30 #include "net/gnrc/netapi.h"
31 #include "net/gnrc/tcp/tcb.h"
32 
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36 
42 #define PORT_UNSPEC (0)
43 
48 #define STATUS_PASSIVE (1 << 0)
49 #define STATUS_ALLOW_ANY_ADDR (1 << 1)
50 #define STATUS_NOTIFY_USER (1 << 2)
51 #define STATUS_WAIT_FOR_MSG (1 << 3)
52 
58 #define TCP_EVENTLOOP_MSG_QUEUE_SIZE (8U)
59 #define TCP_EVENTLOOP_PRIO (THREAD_PRIORITY_MAIN - 2U)
60 #define TCP_EVENTLOOP_STACK_SIZE (THREAD_STACKSIZE_DEFAULT)
61 
67 #define MSK_FIN (0x0001)
68 #define MSK_SYN (0x0002)
69 #define MSK_RST (0x0004)
70 #define MSK_PSH (0x0008)
71 #define MSK_ACK (0x0010)
72 #define MSK_URG (0x0020)
73 #define MSK_FIN_ACK (0x0011)
74 #define MSK_SYN_ACK (0x0012)
75 #define MSK_RST_ACK (0x0014)
76 #define MSK_SYN_FIN_ACK (0x0013)
77 #define MSK_FIN_ACK_PSH (0x0019)
78 #define MSK_CTL (0x003F)
79 #define MSK_OFFSET (0xF000)
80 
86 #define MSG_TYPE_CONNECTION_TIMEOUT (GNRC_NETAPI_MSG_TYPE_ACK + 101)
87 #define MSG_TYPE_PROBE_TIMEOUT (GNRC_NETAPI_MSG_TYPE_ACK + 102)
88 #define MSG_TYPE_USER_SPEC_TIMEOUT (GNRC_NETAPI_MSG_TYPE_ACK + 103)
89 #define MSG_TYPE_RETRANSMISSION (GNRC_NETAPI_MSG_TYPE_ACK + 104)
90 #define MSG_TYPE_TIMEWAIT (GNRC_NETAPI_MSG_TYPE_ACK + 105)
91 #define MSG_TYPE_NOTIFY_USER (GNRC_NETAPI_MSG_TYPE_ACK + 106)
92 
97 #define RTO_UNINITIALIZED (-1)
98 
104 #define LSS_32_BIT(x, y) (((int32_t) (x)) - ((int32_t) (y)) < 0)
105 #define LEQ_32_BIT(x, y) (((int32_t) (x)) - ((int32_t) (y)) <= 0)
106 #define GRT_32_BIT(x, y) (!LEQ_32_BIT(x, y))
107 #define GEQ_32_BIT(x, y) (!LSS_32_BOT(x, y))
108 
113 #define INSIDE_WND(l_ed, seq_num, r_ed) (LEQ_32_BIT(l_ed, seq_num) && LSS_32_BIT(seq_num, r_ed))
114 
118 #define GET_OFFSET( x ) (((x) & MSK_OFFSET) >> 12)
119 
124 
129 
133 extern mutex_t _list_tcb_lock;
134 
135 #ifdef __cplusplus
136 }
137 #endif
138 
139 #endif /* COMMON_H */
140 
Types used by the kernel.
GNRC TCP transmission control block (TCB)
int16_t kernel_pid_t
Unique process identifier.
Definition: kernel_types.h:83
kernel_pid_t gnrc_tcp_pid
PID of GNRC TCP event handling thread.
mutex_t _list_tcb_lock
Mutex to protect TCB list.
Generic interface to communicate with GNRC modules.
Transmission control block of GNRC TCP.
Definition: tcb.h:51
Threading API.
POSIX.1-2008 compliant version of the assert macro.
RIOT synchronization API.
Mutex structure.
Definition: mutex.h:36
gnrc_tcp_tcb_t * _list_tcb_head
Head of linked TCB list.