Mistake on this page?
Report an issue in GitHub or email us
altcp_priv.h
Go to the documentation of this file.
1 /**
2  * @file
3  * Application layered TCP connection API (to be used from TCPIP thread)\n
4  * This interface mimics the tcp callback API to the application while preventing
5  * direct linking (much like virtual functions).
6  * This way, an application can make use of other application layer protocols
7  * on top of TCP without knowing the details (e.g. TLS, proxy connection).
8  */
9 
10 /*
11  * Copyright (c) 2017 Simon Goldschmidt
12  * All rights reserved.
13  *
14  * Redistribution and use in source and binary forms, with or without modification,
15  * are permitted provided that the following conditions are met:
16  *
17  * 1. Redistributions of source code must retain the above copyright notice,
18  * this list of conditions and the following disclaimer.
19  * 2. Redistributions in binary form must reproduce the above copyright notice,
20  * this list of conditions and the following disclaimer in the documentation
21  * and/or other materials provided with the distribution.
22  * 3. The name of the author may not be used to endorse or promote products
23  * derived from this software without specific prior written permission.
24  *
25  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
26  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
27  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
28  * SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
29  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
30  * OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
31  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
32  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
33  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
34  * OF SUCH DAMAGE.
35  *
36  * This file is part of the lwIP TCP/IP stack.
37  *
38  * Author: Simon Goldschmidt <goldsimon@gmx.de>
39  *
40  */
41 #ifndef LWIP_HDR_ALTCP_PRIV_H
42 #define LWIP_HDR_ALTCP_PRIV_H
43 
44 #include "lwip/opt.h"
45 
46 #if LWIP_ALTCP /* don't build if not configured for use in lwipopts.h */
47 
48 #include "lwip/altcp.h"
49 #include "lwip/ip_addr.h"
50 
51 #ifdef __cplusplus
52 extern "C" {
53 #endif
54 
55 struct altcp_pcb *altcp_alloc(void);
56 void altcp_free(struct altcp_pcb *conn);
57 
58 /* Function prototypes for application layers */
59 typedef void (*altcp_set_poll_fn)(struct altcp_pcb *conn, u8_t interval);
60 typedef void (*altcp_recved_fn)(struct altcp_pcb *conn, u16_t len);
61 typedef err_t (*altcp_bind_fn)(struct altcp_pcb *conn, const ip_addr_t *ipaddr, u16_t port);
62 typedef err_t (*altcp_connect_fn)(struct altcp_pcb *conn, const ip_addr_t *ipaddr, u16_t port, altcp_connected_fn connected);
63 
64 typedef struct altcp_pcb *(*altcp_listen_fn)(struct altcp_pcb *conn, u8_t backlog, err_t *err);
65 
66 typedef void (*altcp_abort_fn)(struct altcp_pcb *conn);
67 typedef err_t (*altcp_close_fn)(struct altcp_pcb *conn);
68 typedef err_t (*altcp_shutdown_fn)(struct altcp_pcb *conn, int shut_rx, int shut_tx);
69 
70 typedef err_t (*altcp_write_fn)(struct altcp_pcb *conn, const void *dataptr, u16_t len, u8_t apiflags);
71 typedef err_t (*altcp_output_fn)(struct altcp_pcb *conn);
72 
73 typedef u16_t (*altcp_mss_fn)(struct altcp_pcb *conn);
74 typedef u16_t (*altcp_sndbuf_fn)(struct altcp_pcb *conn);
75 typedef u16_t (*altcp_sndqueuelen_fn)(struct altcp_pcb *conn);
76 typedef void (*altcp_nagle_disable_fn)(struct altcp_pcb *conn);
77 typedef void (*altcp_nagle_enable_fn)(struct altcp_pcb *conn);
78 typedef int (*altcp_nagle_disabled_fn)(struct altcp_pcb *conn);
79 
80 typedef void (*altcp_setprio_fn)(struct altcp_pcb *conn, u8_t prio);
81 
82 typedef void (*altcp_dealloc_fn)(struct altcp_pcb *conn);
83 
84 typedef err_t (*altcp_get_tcp_addrinfo_fn)(struct altcp_pcb *conn, int local, ip_addr_t *addr, u16_t *port);
85 typedef ip_addr_t *(*altcp_get_ip_fn)(struct altcp_pcb *conn, int local);
86 typedef u16_t (*altcp_get_port_fn)(struct altcp_pcb *conn, int local);
87 
88 #ifdef LWIP_DEBUG
89 typedef enum tcp_state (*altcp_dbg_get_tcp_state_fn)(struct altcp_pcb *conn);
90 #endif
91 
92 struct altcp_functions {
93  altcp_set_poll_fn set_poll;
94  altcp_recved_fn recved;
95  altcp_bind_fn bind;
96  altcp_connect_fn connect;
97  altcp_listen_fn listen;
98  altcp_abort_fn abort;
99  altcp_close_fn close;
100  altcp_shutdown_fn shutdown;
101  altcp_write_fn write;
102  altcp_output_fn output;
103  altcp_mss_fn mss;
104  altcp_sndbuf_fn sndbuf;
105  altcp_sndqueuelen_fn sndqueuelen;
106  altcp_nagle_disable_fn nagle_disable;
107  altcp_nagle_enable_fn nagle_enable;
108  altcp_nagle_disabled_fn nagle_disabled;
109  altcp_setprio_fn setprio;
110  altcp_dealloc_fn dealloc;
111  altcp_get_tcp_addrinfo_fn addrinfo;
112  altcp_get_ip_fn getip;
113  altcp_get_port_fn getport;
114 #ifdef LWIP_DEBUG
115  altcp_dbg_get_tcp_state_fn dbg_get_tcp_state;
116 #endif
117 };
118 
119 void altcp_default_set_poll(struct altcp_pcb *conn, u8_t interval);
120 void altcp_default_recved(struct altcp_pcb *conn, u16_t len);
121 err_t altcp_default_bind(struct altcp_pcb *conn, const ip_addr_t *ipaddr, u16_t port);
122 err_t altcp_default_shutdown(struct altcp_pcb *conn, int shut_rx, int shut_tx);
123 err_t altcp_default_write(struct altcp_pcb *conn, const void *dataptr, u16_t len, u8_t apiflags);
124 err_t altcp_default_output(struct altcp_pcb *conn);
125 u16_t altcp_default_mss(struct altcp_pcb *conn);
126 u16_t altcp_default_sndbuf(struct altcp_pcb *conn);
127 u16_t altcp_default_sndqueuelen(struct altcp_pcb *conn);
128 void altcp_default_nagle_disable(struct altcp_pcb *conn);
129 void altcp_default_nagle_enable(struct altcp_pcb *conn);
130 int altcp_default_nagle_disabled(struct altcp_pcb *conn);
131 void altcp_default_setprio(struct altcp_pcb *conn, u8_t prio);
132 void altcp_default_dealloc(struct altcp_pcb *conn);
133 err_t altcp_default_get_tcp_addrinfo(struct altcp_pcb *conn, int local, ip_addr_t *addr, u16_t *port);
134 ip_addr_t *altcp_default_get_ip(struct altcp_pcb *conn, int local);
135 u16_t altcp_default_get_port(struct altcp_pcb *conn, int local);
136 #ifdef LWIP_DEBUG
137 enum tcp_state altcp_default_dbg_get_tcp_state(struct altcp_pcb *conn);
138 #endif
139 
140 #ifdef __cplusplus
141 }
142 #endif
143 
144 #endif /* LWIP_ALTCP */
145 
146 #endif /* LWIP_HDR_ALTCP_PRIV_H */
lwIP Options Configuration
s8_t err_t
Define LWIP_ERR_T in cc.h if you want to use a different type for your platform (must be signed)...
Definition: err.h:96
Application layered TCP connection API (to be used from TCPIP thread) .
IP address structure for passing IP addresses by value.
Definition: nsapi_types.h:235
IP address API (common IPv4 and IPv6)
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.