mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2024-10-05 22:29:49 +00:00
if LWIP_TCP is 0 do not link in TCP code.putting ugly ifdefs in api and core :(.Also only udp_init if LWIP_UDP is on
This commit is contained in:
parent
9cafc7a764
commit
859f06a91e
@ -37,37 +37,6 @@
|
|||||||
#include "lwip/sys.h"
|
#include "lwip/sys.h"
|
||||||
#include "lwip/tcpip.h"
|
#include "lwip/tcpip.h"
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
|
||||||
static err_t
|
|
||||||
recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
|
|
||||||
{
|
|
||||||
struct netconn *conn;
|
|
||||||
u16_t len;
|
|
||||||
|
|
||||||
conn = arg;
|
|
||||||
|
|
||||||
if(conn == NULL) {
|
|
||||||
pbuf_free(p);
|
|
||||||
return ERR_VAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(conn->recvmbox != SYS_MBOX_NULL) {
|
|
||||||
|
|
||||||
conn->err = err;
|
|
||||||
if (p != NULL) {
|
|
||||||
len = p->tot_len;
|
|
||||||
conn->recv_avail += len;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
len = 0;
|
|
||||||
/* Register event with callback */
|
|
||||||
if (conn->callback)
|
|
||||||
(*conn->callback)(conn, NETCONN_EVT_RCVPLUS, len);
|
|
||||||
sys_mbox_post(conn->recvmbox, p);
|
|
||||||
}
|
|
||||||
return ERR_OK;
|
|
||||||
}
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
|
||||||
#if LWIP_UDP
|
#if LWIP_UDP
|
||||||
static void
|
static void
|
||||||
recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
|
recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
|
||||||
@ -102,6 +71,38 @@ recv_udp(void *arg, struct udp_pcb *pcb, struct pbuf *p,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
static err_t
|
||||||
|
recv_tcp(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
|
||||||
|
{
|
||||||
|
struct netconn *conn;
|
||||||
|
u16_t len;
|
||||||
|
|
||||||
|
conn = arg;
|
||||||
|
|
||||||
|
if(conn == NULL) {
|
||||||
|
pbuf_free(p);
|
||||||
|
return ERR_VAL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(conn->recvmbox != SYS_MBOX_NULL) {
|
||||||
|
|
||||||
|
conn->err = err;
|
||||||
|
if (p != NULL) {
|
||||||
|
len = p->tot_len;
|
||||||
|
conn->recv_avail += len;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
len = 0;
|
||||||
|
/* Register event with callback */
|
||||||
|
if (conn->callback)
|
||||||
|
(*conn->callback)(conn, NETCONN_EVT_RCVPLUS, len);
|
||||||
|
sys_mbox_post(conn->recvmbox, p);
|
||||||
|
}
|
||||||
|
return ERR_OK;
|
||||||
|
}
|
||||||
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static err_t
|
static err_t
|
||||||
poll_tcp(void *arg, struct tcp_pcb *pcb)
|
poll_tcp(void *arg, struct tcp_pcb *pcb)
|
||||||
@ -232,6 +233,7 @@ accept_function(void *arg, struct tcp_pcb *newpcb, err_t err)
|
|||||||
sys_mbox_post(mbox, newconn);
|
sys_mbox_post(mbox, newconn);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
do_newconn(struct api_msg_msg *msg)
|
do_newconn(struct api_msg_msg *msg)
|
||||||
@ -253,6 +255,7 @@ do_delconn(struct api_msg_msg *msg)
|
|||||||
udp_remove(msg->conn->pcb.udp);
|
udp_remove(msg->conn->pcb.udp);
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
if(msg->conn->pcb.tcp->state == LISTEN) {
|
if(msg->conn->pcb.tcp->state == LISTEN) {
|
||||||
tcp_accept(msg->conn->pcb.tcp, NULL);
|
tcp_accept(msg->conn->pcb.tcp, NULL);
|
||||||
@ -267,6 +270,8 @@ do_delconn(struct api_msg_msg *msg)
|
|||||||
tcp_abort(msg->conn->pcb.tcp);
|
tcp_abort(msg->conn->pcb.tcp);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,10 +308,13 @@ do_bind(struct api_msg_msg *msg)
|
|||||||
udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
|
udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
msg->conn->pcb.tcp = tcp_new();
|
msg->conn->pcb.tcp = tcp_new();
|
||||||
setup_tcp(msg->conn);
|
setup_tcp(msg->conn);
|
||||||
break;
|
#endif /* LWIP_TCP */
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
switch(msg->conn->type) {
|
switch(msg->conn->type) {
|
||||||
@ -319,13 +327,17 @@ do_bind(struct api_msg_msg *msg)
|
|||||||
msg->conn->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);
|
msg->conn->err = udp_bind(msg->conn->pcb.udp, msg->msg.bc.ipaddr, msg->msg.bc.port);
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
msg->conn->err = tcp_bind(msg->conn->pcb.tcp,
|
msg->conn->err = tcp_bind(msg->conn->pcb.tcp,
|
||||||
msg->msg.bc.ipaddr, msg->msg.bc.port);
|
msg->msg.bc.ipaddr, msg->msg.bc.port);
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
sys_mbox_post(msg->conn->mbox, NULL);
|
sys_mbox_post(msg->conn->mbox, NULL);
|
||||||
}
|
}
|
||||||
|
#if LWIP_TCP
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static err_t
|
static err_t
|
||||||
do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
|
do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
|
||||||
@ -339,14 +351,13 @@ do_connected(void *arg, struct tcp_pcb *pcb, err_t err)
|
|||||||
}
|
}
|
||||||
|
|
||||||
conn->err = err;
|
conn->err = err;
|
||||||
|
|
||||||
if(conn->type == NETCONN_TCP && err == ERR_OK) {
|
if(conn->type == NETCONN_TCP && err == ERR_OK) {
|
||||||
setup_tcp(conn);
|
setup_tcp(conn);
|
||||||
}
|
}
|
||||||
|
|
||||||
sys_mbox_post(conn->mbox, NULL);
|
sys_mbox_post(conn->mbox, NULL);
|
||||||
return ERR_OK;
|
return ERR_OK;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
do_connect(struct api_msg_msg *msg)
|
do_connect(struct api_msg_msg *msg)
|
||||||
@ -384,6 +395,7 @@ do_connect(struct api_msg_msg *msg)
|
|||||||
udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
|
udp_recv(msg->conn->pcb.udp, recv_udp, msg->conn);
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
msg->conn->pcb.tcp = tcp_new();
|
msg->conn->pcb.tcp = tcp_new();
|
||||||
if(msg->conn->pcb.tcp == NULL) {
|
if(msg->conn->pcb.tcp == NULL) {
|
||||||
@ -391,6 +403,8 @@ do_connect(struct api_msg_msg *msg)
|
|||||||
sys_mbox_post(msg->conn->mbox, NULL);
|
sys_mbox_post(msg->conn->mbox, NULL);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -405,12 +419,15 @@ do_connect(struct api_msg_msg *msg)
|
|||||||
sys_mbox_post(msg->conn->mbox, NULL);
|
sys_mbox_post(msg->conn->mbox, NULL);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
/* tcp_arg(msg->conn->pcb.tcp, msg->conn);*/
|
/* tcp_arg(msg->conn->pcb.tcp, msg->conn);*/
|
||||||
setup_tcp(msg->conn);
|
setup_tcp(msg->conn);
|
||||||
tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port,
|
tcp_connect(msg->conn->pcb.tcp, msg->msg.bc.ipaddr, msg->msg.bc.port,
|
||||||
do_connected);
|
do_connected);
|
||||||
/*tcp_output(msg->conn->pcb.tcp);*/
|
/*tcp_output(msg->conn->pcb.tcp);*/
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -450,6 +467,7 @@ do_listen(struct api_msg_msg *msg)
|
|||||||
DEBUGF(API_MSG_DEBUG, ("api_msg: listen UDP: cannot listen for UDP.\n"));
|
DEBUGF(API_MSG_DEBUG, ("api_msg: listen UDP: cannot listen for UDP.\n"));
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
msg->conn->pcb.tcp = tcp_listen(msg->conn->pcb.tcp);
|
msg->conn->pcb.tcp = tcp_listen(msg->conn->pcb.tcp);
|
||||||
if(msg->conn->pcb.tcp == NULL) {
|
if(msg->conn->pcb.tcp == NULL) {
|
||||||
@ -465,6 +483,8 @@ do_listen(struct api_msg_msg *msg)
|
|||||||
tcp_arg(msg->conn->pcb.tcp, msg->conn);
|
tcp_arg(msg->conn->pcb.tcp, msg->conn);
|
||||||
tcp_accept(msg->conn->pcb.tcp, accept_function);
|
tcp_accept(msg->conn->pcb.tcp, accept_function);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -515,18 +535,22 @@ do_send(struct api_msg_msg *msg)
|
|||||||
static void
|
static void
|
||||||
do_recv(struct api_msg_msg *msg)
|
do_recv(struct api_msg_msg *msg)
|
||||||
{
|
{
|
||||||
|
#if LWIP_TCP
|
||||||
if(msg->conn->pcb.tcp != NULL) {
|
if(msg->conn->pcb.tcp != NULL) {
|
||||||
if(msg->conn->type == NETCONN_TCP) {
|
if(msg->conn->type == NETCONN_TCP) {
|
||||||
tcp_recved(msg->conn->pcb.tcp, msg->msg.len);
|
tcp_recved(msg->conn->pcb.tcp, msg->msg.len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
sys_mbox_post(msg->conn->mbox, NULL);
|
sys_mbox_post(msg->conn->mbox, NULL);
|
||||||
}
|
}
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
do_write(struct api_msg_msg *msg)
|
do_write(struct api_msg_msg *msg)
|
||||||
{
|
{
|
||||||
|
#if LWIP_TCP
|
||||||
err_t err;
|
err_t err;
|
||||||
|
#endif
|
||||||
if(msg->conn->pcb.tcp != NULL) {
|
if(msg->conn->pcb.tcp != NULL) {
|
||||||
switch(msg->conn->type) {
|
switch(msg->conn->type) {
|
||||||
#if LWIP_UDP
|
#if LWIP_UDP
|
||||||
@ -538,6 +562,7 @@ do_write(struct api_msg_msg *msg)
|
|||||||
msg->conn->err = ERR_VAL;
|
msg->conn->err = ERR_VAL;
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
err = tcp_write(msg->conn->pcb.tcp, msg->msg.w.dataptr,
|
err = tcp_write(msg->conn->pcb.tcp, msg->msg.w.dataptr,
|
||||||
msg->msg.w.len, msg->msg.w.copy);
|
msg->msg.w.len, msg->msg.w.copy);
|
||||||
@ -555,6 +580,8 @@ do_write(struct api_msg_msg *msg)
|
|||||||
if (tcp_sndbuf(msg->conn->pcb.tcp) <= TCP_SNDLOWAT)
|
if (tcp_sndbuf(msg->conn->pcb.tcp) <= TCP_SNDLOWAT)
|
||||||
(*msg->conn->callback)(msg->conn, NETCONN_EVT_SENDMINUS, msg->msg.w.len);
|
(*msg->conn->callback)(msg->conn, NETCONN_EVT_SENDMINUS, msg->msg.w.len);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -578,11 +605,14 @@ do_close(struct api_msg_msg *msg)
|
|||||||
case NETCONN_UDP:
|
case NETCONN_UDP:
|
||||||
break;
|
break;
|
||||||
#endif /* LWIP_UDP */
|
#endif /* LWIP_UDP */
|
||||||
|
#if LWIP_TCP
|
||||||
case NETCONN_TCP:
|
case NETCONN_TCP:
|
||||||
if(msg->conn->pcb.tcp->state == LISTEN) {
|
if(msg->conn->pcb.tcp->state == LISTEN) {
|
||||||
err = tcp_close(msg->conn->pcb.tcp);
|
err = tcp_close(msg->conn->pcb.tcp);
|
||||||
}
|
}
|
||||||
msg->conn->err = err;
|
msg->conn->err = err;
|
||||||
|
#endif
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,7 +46,7 @@
|
|||||||
static void (* tcpip_init_done)(void *arg) = NULL;
|
static void (* tcpip_init_done)(void *arg) = NULL;
|
||||||
static void *tcpip_init_done_arg;
|
static void *tcpip_init_done_arg;
|
||||||
static sys_mbox_t mbox;
|
static sys_mbox_t mbox;
|
||||||
|
#if LWIP_TCP
|
||||||
static int tcpip_tcp_timer_active = 0;
|
static int tcpip_tcp_timer_active = 0;
|
||||||
|
|
||||||
|
|
||||||
@ -72,6 +72,7 @@ tcp_timer_needed(void)
|
|||||||
sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
|
sys_timeout(TCP_TMR_INTERVAL, tcpip_tcp_timer, NULL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
static void
|
static void
|
||||||
tcpip_thread(void *arg)
|
tcpip_thread(void *arg)
|
||||||
@ -81,9 +82,12 @@ tcpip_thread(void *arg)
|
|||||||
(void)arg;
|
(void)arg;
|
||||||
|
|
||||||
ip_init();
|
ip_init();
|
||||||
|
#if LWIP_UDP
|
||||||
udp_init();
|
udp_init();
|
||||||
|
#endif
|
||||||
|
#if LWIP_TCP
|
||||||
tcp_init();
|
tcp_init();
|
||||||
|
#endif
|
||||||
if(tcpip_init_done != NULL) {
|
if(tcpip_init_done != NULL) {
|
||||||
tcpip_init_done(tcpip_init_done_arg);
|
tcpip_init_done(tcpip_init_done_arg);
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@
|
|||||||
#include "lwip/memp.h"
|
#include "lwip/memp.h"
|
||||||
|
|
||||||
#include "lwip/tcp.h"
|
#include "lwip/tcp.h"
|
||||||
|
#if LWIP_TCP
|
||||||
|
|
||||||
/* Incremented every coarse grained timer shot
|
/* Incremented every coarse grained timer shot
|
||||||
(typically every 500 ms, determined by TCP_COARSE_TIMEOUT). */
|
(typically every 500 ms, determined by TCP_COARSE_TIMEOUT). */
|
||||||
@ -1168,6 +1168,7 @@ tcp_pcbs_sane(void)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
#endif /* TCP_DEBUG */
|
#endif /* TCP_DEBUG */
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@
|
|||||||
#include "lwip/stats.h"
|
#include "lwip/stats.h"
|
||||||
|
|
||||||
#include "arch/perf.h"
|
#include "arch/perf.h"
|
||||||
|
#if LWIP_TCP
|
||||||
/* These variables are global to all functions involved in the input
|
/* These variables are global to all functions involved in the input
|
||||||
processing of TCP segments. They are set by the tcp_input()
|
processing of TCP segments. They are set by the tcp_input()
|
||||||
function. */
|
function. */
|
||||||
@ -1135,5 +1135,6 @@ tcp_parseopt(struct tcp_pcb *pcb)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
@ -53,7 +53,7 @@
|
|||||||
|
|
||||||
#include "lwip/stats.h"
|
#include "lwip/stats.h"
|
||||||
|
|
||||||
|
#if LWIP_TCP
|
||||||
#define MIN(x,y) (x) < (y)? (x): (y)
|
#define MIN(x,y) (x) < (y)? (x): (y)
|
||||||
|
|
||||||
|
|
||||||
@ -580,7 +580,7 @@ tcp_rexmit(struct tcp_pcb *pcb)
|
|||||||
tcp_output(pcb);
|
tcp_output(pcb);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
#endif /* LWIP_TCP */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@
|
|||||||
/*static*/ struct udp_pcb *udp_pcbs = NULL;
|
/*static*/ struct udp_pcb *udp_pcbs = NULL;
|
||||||
|
|
||||||
static struct udp_pcb *pcb_cache = NULL;
|
static struct udp_pcb *pcb_cache = NULL;
|
||||||
#endif /* LWIP_UDP */
|
|
||||||
|
|
||||||
#if UDP_DEBUG
|
#if UDP_DEBUG
|
||||||
int udp_debug_print(struct udp_hdr *udphdr);
|
int udp_debug_print(struct udp_hdr *udphdr);
|
||||||
@ -68,12 +67,9 @@ int udp_debug_print(struct udp_hdr *udphdr);
|
|||||||
void
|
void
|
||||||
udp_init(void)
|
udp_init(void)
|
||||||
{
|
{
|
||||||
#if LWIP_UDP
|
|
||||||
udp_pcbs = pcb_cache = NULL;
|
udp_pcbs = pcb_cache = NULL;
|
||||||
#endif /* LWIP_UDP */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if LWIP_UDP
|
|
||||||
/*-----------------------------------------------------------------------------------*/
|
/*-----------------------------------------------------------------------------------*/
|
||||||
/* udp_lookup:
|
/* udp_lookup:
|
||||||
*
|
*
|
||||||
|
Loading…
Reference in New Issue
Block a user