tcp.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2016 Alexander Aring <aar@pengutronix.de>
3  * Freie Universität Berlin
4  * HAW Hamburg
5  * Kaspar Schleiser <kaspar@schleiser.de>
6  *
7  * This file is subject to the terms and conditions of the GNU Lesser
8  * General Public License v2.1. See the file LICENSE in the top level
9  * directory for more details.
10  */
11 
299 #ifndef NET_SOCK_TCP_H
300 #define NET_SOCK_TCP_H
301 
302 #include <stdint.h>
303 #include <stdlib.h>
304 #include <sys/types.h>
305 
306 /* net/sock/async/types.h included by net/sock.h needs to re-typedef the
307  * `sock_tcp_t` and `sock_tcp_queue_t` to prevent cyclic includes */
308 #if defined (__clang__)
309 # pragma clang diagnostic push
310 # pragma clang diagnostic ignored "-Wtypedef-redefinition"
311 #endif
312 
313 #include "net/sock.h"
314 
315 #ifdef __cplusplus
316 extern "C" {
317 #endif
318 
319 typedef struct _sock_tl_ep sock_tcp_ep_t;
327 typedef struct sock_tcp sock_tcp_t;
328 
336 
337 #if defined (__clang__)
338 # pragma clang diagnostic pop
339 #endif
340 
371 int sock_tcp_connect(sock_tcp_t *sock, const sock_tcp_ep_t *remote,
372  uint16_t local_port, uint16_t flags);
373 
397 int sock_tcp_listen(sock_tcp_queue_t *queue, const sock_tcp_ep_t *local,
398  sock_tcp_t *queue_array, unsigned queue_len,
399  uint16_t flags);
400 
410 void sock_tcp_disconnect(sock_tcp_t *sock);
411 
420 
433 
446 
459 
485 int sock_tcp_accept(sock_tcp_queue_t *queue, sock_tcp_t **sock,
486  uint32_t timeout);
487 
517 ssize_t sock_tcp_read(sock_tcp_t *sock, void *data, size_t max_len,
518  uint32_t timeout);
519 
540 ssize_t sock_tcp_write(sock_tcp_t *sock, const void *data, size_t len);
541 
542 #include "sock_types.h"
543 
544 #ifdef __cplusplus
545 }
546 #endif
547 
548 #endif /* NET_SOCK_TCP_H */
549 
sock_tcp_queue::len
unsigned short len
Length of the struct sock_tcp_queue::array.
Definition: sock_types.h:118
sock_tcp_read
ssize_t sock_tcp_read(sock_tcp_t *sock, void *data, size_t max_len, uint32_t timeout)
Reads data from an established TCP stream.
sock_tcp_get_local
int sock_tcp_get_local(sock_tcp_t *sock, sock_tcp_ep_t *ep)
Gets the local end point of a TCP sock object.
sock_tcp_write
ssize_t sock_tcp_write(sock_tcp_t *sock, const void *data, size_t len)
Writes data to an established TCP stream.
sock_tcp_get_remote
int sock_tcp_get_remote(sock_tcp_t *sock, sock_tcp_ep_t *ep)
Gets the remote end point of a TCP sock object.
sock_tcp_disconnect
void sock_tcp_disconnect(sock_tcp_t *sock)
Disconnects a TCP connection.
sock_tcp_queue
TCP queue type.
Definition: sock_types.h:114
_sock_tl_ep
Common IP-based transport layer end point.
Definition: sock.h:213
sock_tcp_accept
int sock_tcp_accept(sock_tcp_queue_t *queue, sock_tcp_t **sock, uint32_t timeout)
Receives and handles TCP connection requests from other peers.
sock_tcp_queue_get_local
int sock_tcp_queue_get_local(sock_tcp_queue_t *queue, sock_tcp_ep_t *ep)
Gets the local end point of a TCP sock queue object.
sock_tcp_listen
int sock_tcp_listen(sock_tcp_queue_t *queue, const sock_tcp_ep_t *local, sock_tcp_t *queue_array, unsigned queue_len, uint16_t flags)
Listen for an incoming connection request on local end point.
sock.h
Common sock API definitions.
sock_tcp_stop_listen
void sock_tcp_stop_listen(sock_tcp_queue_t *queue)
Stops listening on TCP listening queue.
sock_tcp
TCP sock type.
Definition: sock_types.h:101
sock_tcp_connect
int sock_tcp_connect(sock_tcp_t *sock, const sock_tcp_ep_t *remote, uint16_t local_port, uint16_t flags)
Establishes a new TCP sock connection.