mirror of
https://github.com/lwip-tcpip/lwip.git
synced 2025-04-15 23:42:33 +00:00
Start working on task #14780: Add debug helper asserts to ensure threading/locking requirements are met
This commit is contained in:
parent
36d160686a
commit
b33b3bb8bb
@ -91,6 +91,8 @@ tcpip_thread(void *arg)
|
|||||||
struct tcpip_msg *msg;
|
struct tcpip_msg *msg;
|
||||||
LWIP_UNUSED_ARG(arg);
|
LWIP_UNUSED_ARG(arg);
|
||||||
|
|
||||||
|
LWIP_MARK_TCPIP_THREAD();
|
||||||
|
|
||||||
if (tcpip_init_done != NULL) {
|
if (tcpip_init_done != NULL) {
|
||||||
tcpip_init_done(tcpip_init_done_arg);
|
tcpip_init_done(tcpip_init_done_arg);
|
||||||
}
|
}
|
||||||
|
@ -422,6 +422,8 @@ ip4_input(struct pbuf *p, struct netif *inp)
|
|||||||
int check_ip_src = 1;
|
int check_ip_src = 1;
|
||||||
#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING || LWIP_IGMP */
|
#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING || LWIP_IGMP */
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
IP_STATS_INC(ip.recv);
|
IP_STATS_INC(ip.recv);
|
||||||
MIB2_STATS_INC(mib2.ipinreceives);
|
MIB2_STATS_INC(mib2.ipinreceives);
|
||||||
|
|
||||||
|
@ -515,6 +515,8 @@ ip6_input(struct pbuf *p, struct netif *inp)
|
|||||||
int check_ip_src=1;
|
int check_ip_src=1;
|
||||||
#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */
|
#endif /* IP_ACCEPT_LINK_LAYER_ADDRESSING */
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
IP6_STATS_INC(ip6.recv);
|
IP6_STATS_INC(ip6.recv);
|
||||||
|
|
||||||
/* identify the IP header */
|
/* identify the IP header */
|
||||||
|
@ -210,6 +210,8 @@ netif_init(void)
|
|||||||
err_t
|
err_t
|
||||||
netif_input(struct pbuf *p, struct netif *inp)
|
netif_input(struct pbuf *p, struct netif *inp)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
#if LWIP_ETHERNET
|
#if LWIP_ETHERNET
|
||||||
if (inp->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) {
|
if (inp->flags & (NETIF_FLAG_ETHARP | NETIF_FLAG_ETHERNET)) {
|
||||||
return ethernet_input(p, inp);
|
return ethernet_input(p, inp);
|
||||||
@ -272,6 +274,8 @@ netif_add(struct netif *netif,
|
|||||||
s8_t i;
|
s8_t i;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
#if LWIP_SINGLE_NETIF
|
#if LWIP_SINGLE_NETIF
|
||||||
if (netif_default != NULL) {
|
if (netif_default != NULL) {
|
||||||
LWIP_ASSERT("single netif already set", 0);
|
LWIP_ASSERT("single netif already set", 0);
|
||||||
@ -441,6 +445,8 @@ netif_set_addr(struct netif *netif, const ip4_addr_t *ipaddr, const ip4_addr_t *
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (ip4_addr_isany(ipaddr)) {
|
if (ip4_addr_isany(ipaddr)) {
|
||||||
/* when removing an address, we have to remove it *before* changing netmask/gw
|
/* when removing an address, we have to remove it *before* changing netmask/gw
|
||||||
to ensure that tcp RST segment can be sent correctly */
|
to ensure that tcp RST segment can be sent correctly */
|
||||||
@ -475,6 +481,8 @@ netif_remove(struct netif *netif)
|
|||||||
int i;
|
int i;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif == NULL) {
|
if (netif == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -575,6 +583,9 @@ void
|
|||||||
netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr)
|
netif_set_ipaddr(struct netif *netif, const ip4_addr_t *ipaddr)
|
||||||
{
|
{
|
||||||
ip_addr_t new_addr;
|
ip_addr_t new_addr;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
*ip_2_ip4(&new_addr) = (ipaddr ? *ipaddr : *IP4_ADDR_ANY4);
|
*ip_2_ip4(&new_addr) = (ipaddr ? *ipaddr : *IP4_ADDR_ANY4);
|
||||||
IP_SET_TYPE_VAL(new_addr, IPADDR_TYPE_V4);
|
IP_SET_TYPE_VAL(new_addr, IPADDR_TYPE_V4);
|
||||||
|
|
||||||
@ -642,6 +653,8 @@ netif_set_gw(struct netif *netif, const ip4_addr_t *gw)
|
|||||||
args.ipv4_gw_changed.old_address = &old_addr;
|
args.ipv4_gw_changed.old_address = &old_addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* address is actually being changed? */
|
/* address is actually being changed? */
|
||||||
if (ip4_addr_cmp(safe_gw, netif_ip4_gw(netif)) == 0) {
|
if (ip4_addr_cmp(safe_gw, netif_ip4_gw(netif)) == 0) {
|
||||||
ip4_addr_set(ip_2_ip4(&netif->gw), gw);
|
ip4_addr_set(ip_2_ip4(&netif->gw), gw);
|
||||||
@ -678,6 +691,8 @@ netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask)
|
|||||||
args.ipv4_nm_changed.old_address = &old_addr;
|
args.ipv4_nm_changed.old_address = &old_addr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* address is actually being changed? */
|
/* address is actually being changed? */
|
||||||
if (ip4_addr_cmp(safe_netmask, netif_ip4_netmask(netif)) == 0) {
|
if (ip4_addr_cmp(safe_netmask, netif_ip4_netmask(netif)) == 0) {
|
||||||
mib2_remove_route_ip4(0, netif);
|
mib2_remove_route_ip4(0, netif);
|
||||||
@ -707,6 +722,8 @@ netif_set_netmask(struct netif *netif, const ip4_addr_t *netmask)
|
|||||||
void
|
void
|
||||||
netif_set_default(struct netif *netif)
|
netif_set_default(struct netif *netif)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif == NULL) {
|
if (netif == NULL) {
|
||||||
/* remove default route */
|
/* remove default route */
|
||||||
mib2_remove_route_ip4(1, netif);
|
mib2_remove_route_ip4(1, netif);
|
||||||
@ -727,6 +744,8 @@ netif_set_default(struct netif *netif)
|
|||||||
void
|
void
|
||||||
netif_set_up(struct netif *netif)
|
netif_set_up(struct netif *netif)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (!(netif->flags & NETIF_FLAG_UP)) {
|
if (!(netif->flags & NETIF_FLAG_UP)) {
|
||||||
netif_set_flags(netif, NETIF_FLAG_UP);
|
netif_set_flags(netif, NETIF_FLAG_UP);
|
||||||
|
|
||||||
@ -751,6 +770,8 @@ netif_set_up(struct netif *netif)
|
|||||||
static void
|
static void
|
||||||
netif_issue_reports(struct netif *netif, u8_t report_type)
|
netif_issue_reports(struct netif *netif, u8_t report_type)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* Only send reports when both link and admin states are up */
|
/* Only send reports when both link and admin states are up */
|
||||||
if (!(netif->flags & NETIF_FLAG_LINK_UP) ||
|
if (!(netif->flags & NETIF_FLAG_LINK_UP) ||
|
||||||
!(netif->flags & NETIF_FLAG_UP)) {
|
!(netif->flags & NETIF_FLAG_UP)) {
|
||||||
@ -797,6 +818,8 @@ netif_issue_reports(struct netif *netif, u8_t report_type)
|
|||||||
void
|
void
|
||||||
netif_set_down(struct netif *netif)
|
netif_set_down(struct netif *netif)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif->flags & NETIF_FLAG_UP) {
|
if (netif->flags & NETIF_FLAG_UP) {
|
||||||
#if LWIP_NETIF_EXT_STATUS_CALLBACK
|
#if LWIP_NETIF_EXT_STATUS_CALLBACK
|
||||||
{
|
{
|
||||||
@ -831,6 +854,8 @@ netif_set_down(struct netif *netif)
|
|||||||
void
|
void
|
||||||
netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback)
|
netif_set_status_callback(struct netif *netif, netif_status_callback_fn status_callback)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif) {
|
if (netif) {
|
||||||
netif->status_callback = status_callback;
|
netif->status_callback = status_callback;
|
||||||
}
|
}
|
||||||
@ -858,6 +883,8 @@ netif_set_remove_callback(struct netif *netif, netif_status_callback_fn remove_c
|
|||||||
void
|
void
|
||||||
netif_set_link_up(struct netif *netif)
|
netif_set_link_up(struct netif *netif)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (!(netif->flags & NETIF_FLAG_LINK_UP)) {
|
if (!(netif->flags & NETIF_FLAG_LINK_UP)) {
|
||||||
netif_set_flags(netif, NETIF_FLAG_LINK_UP);
|
netif_set_flags(netif, NETIF_FLAG_LINK_UP);
|
||||||
|
|
||||||
@ -889,6 +916,8 @@ netif_set_link_up(struct netif *netif)
|
|||||||
void
|
void
|
||||||
netif_set_link_down(struct netif *netif )
|
netif_set_link_down(struct netif *netif )
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif->flags & NETIF_FLAG_LINK_UP) {
|
if (netif->flags & NETIF_FLAG_LINK_UP) {
|
||||||
netif_clear_flags(netif, NETIF_FLAG_LINK_UP);
|
netif_clear_flags(netif, NETIF_FLAG_LINK_UP);
|
||||||
NETIF_LINK_CALLBACK(netif);
|
NETIF_LINK_CALLBACK(netif);
|
||||||
@ -910,6 +939,8 @@ netif_set_link_down(struct netif *netif )
|
|||||||
void
|
void
|
||||||
netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback)
|
netif_set_link_callback(struct netif *netif, netif_status_callback_fn link_callback)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif) {
|
if (netif) {
|
||||||
netif->link_callback = link_callback;
|
netif->link_callback = link_callback;
|
||||||
}
|
}
|
||||||
@ -1133,6 +1164,8 @@ netif_alloc_client_data_id(void)
|
|||||||
u8_t result = netif_client_id;
|
u8_t result = netif_client_id;
|
||||||
netif_client_id++;
|
netif_client_id++;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
#if LWIP_NUM_NETIF_CLIENT_DATA > 256
|
#if LWIP_NUM_NETIF_CLIENT_DATA > 256
|
||||||
#error LWIP_NUM_NETIF_CLIENT_DATA must be <= 256
|
#error LWIP_NUM_NETIF_CLIENT_DATA must be <= 256
|
||||||
#endif
|
#endif
|
||||||
@ -1156,6 +1189,9 @@ void
|
|||||||
netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, const ip6_addr_t *addr6)
|
netif_ip6_addr_set(struct netif *netif, s8_t addr_idx, const ip6_addr_t *addr6)
|
||||||
{
|
{
|
||||||
LWIP_ASSERT("addr6 != NULL", addr6 != NULL);
|
LWIP_ASSERT("addr6 != NULL", addr6 != NULL);
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
netif_ip6_addr_set_parts(netif, addr_idx, addr6->addr[0], addr6->addr[1],
|
netif_ip6_addr_set_parts(netif, addr_idx, addr6->addr[0], addr6->addr[1],
|
||||||
addr6->addr[2], addr6->addr[3]);
|
addr6->addr[2], addr6->addr[3]);
|
||||||
}
|
}
|
||||||
@ -1175,6 +1211,7 @@ netif_ip6_addr_set_parts(struct netif *netif, s8_t addr_idx, u32_t i0, u32_t i1,
|
|||||||
{
|
{
|
||||||
ip_addr_t old_addr;
|
ip_addr_t old_addr;
|
||||||
ip_addr_t new_ipaddr;
|
ip_addr_t new_ipaddr;
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
LWIP_ASSERT("netif != NULL", netif != NULL);
|
LWIP_ASSERT("netif != NULL", netif != NULL);
|
||||||
LWIP_ASSERT("invalid index", addr_idx < LWIP_IPV6_NUM_ADDRESSES);
|
LWIP_ASSERT("invalid index", addr_idx < LWIP_IPV6_NUM_ADDRESSES);
|
||||||
|
|
||||||
@ -1238,6 +1275,7 @@ void
|
|||||||
netif_ip6_addr_set_state(struct netif *netif, s8_t addr_idx, u8_t state)
|
netif_ip6_addr_set_state(struct netif *netif, s8_t addr_idx, u8_t state)
|
||||||
{
|
{
|
||||||
u8_t old_state;
|
u8_t old_state;
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
LWIP_ASSERT("netif != NULL", netif != NULL);
|
LWIP_ASSERT("netif != NULL", netif != NULL);
|
||||||
LWIP_ASSERT("invalid index", addr_idx < LWIP_IPV6_NUM_ADDRESSES);
|
LWIP_ASSERT("invalid index", addr_idx < LWIP_IPV6_NUM_ADDRESSES);
|
||||||
|
|
||||||
@ -1317,6 +1355,8 @@ netif_get_ip6_addr_match(struct netif *netif, const ip6_addr_t *ip6addr)
|
|||||||
{
|
{
|
||||||
s8_t i;
|
s8_t i;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
#if LWIP_IPV6_SCOPES
|
#if LWIP_IPV6_SCOPES
|
||||||
if (ip6_addr_has_zone(ip6addr) && !ip6_addr_test_zone(ip6addr, netif)) {
|
if (ip6_addr_has_zone(ip6addr) && !ip6_addr_test_zone(ip6addr, netif)) {
|
||||||
return -1; /* wrong zone, no match */
|
return -1; /* wrong zone, no match */
|
||||||
@ -1345,6 +1385,8 @@ netif_create_ip6_linklocal_address(struct netif *netif, u8_t from_mac_48bit)
|
|||||||
{
|
{
|
||||||
u8_t i, addr_index;
|
u8_t i, addr_index;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* Link-local prefix. */
|
/* Link-local prefix. */
|
||||||
ip_2_ip6(&netif->ip6_addr[0])->addr[0] = PP_HTONL(0xfe800000ul);
|
ip_2_ip6(&netif->ip6_addr[0])->addr[0] = PP_HTONL(0xfe800000ul);
|
||||||
ip_2_ip6(&netif->ip6_addr[0])->addr[1] = 0;
|
ip_2_ip6(&netif->ip6_addr[0])->addr[1] = 0;
|
||||||
@ -1409,6 +1451,8 @@ netif_add_ip6_address(struct netif *netif, const ip6_addr_t *ip6addr, s8_t *chos
|
|||||||
{
|
{
|
||||||
s8_t i;
|
s8_t i;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
i = netif_get_ip6_addr_match(netif, ip6addr);
|
i = netif_get_ip6_addr_match(netif, ip6addr);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
/* Address already added */
|
/* Address already added */
|
||||||
@ -1501,6 +1545,8 @@ netif_get_by_index(u8_t idx)
|
|||||||
{
|
{
|
||||||
struct netif *netif;
|
struct netif *netif;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (idx != NETIF_NO_INDEX) {
|
if (idx != NETIF_NO_INDEX) {
|
||||||
NETIF_FOREACH(netif) {
|
NETIF_FOREACH(netif) {
|
||||||
if (idx == netif_get_index(netif)) {
|
if (idx == netif_get_index(netif)) {
|
||||||
@ -1525,6 +1571,8 @@ netif_find(const char *name)
|
|||||||
struct netif *netif;
|
struct netif *netif;
|
||||||
u8_t num;
|
u8_t num;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (name == NULL) {
|
if (name == NULL) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -1552,6 +1600,7 @@ netif_find(const char *name)
|
|||||||
*/
|
*/
|
||||||
void netif_add_ext_callback(netif_ext_callback_t *callback, netif_ext_callback_fn fn)
|
void netif_add_ext_callback(netif_ext_callback_t *callback, netif_ext_callback_fn fn)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
LWIP_ASSERT("callback must be != NULL", callback != NULL);
|
LWIP_ASSERT("callback must be != NULL", callback != NULL);
|
||||||
LWIP_ASSERT("fn must be != NULL", fn != NULL);
|
LWIP_ASSERT("fn must be != NULL", fn != NULL);
|
||||||
|
|
||||||
|
@ -208,6 +208,8 @@ sys_timeout(u32_t msecs, sys_timeout_handler handler, void *arg)
|
|||||||
struct sys_timeo *timeout, *t;
|
struct sys_timeo *timeout, *t;
|
||||||
u32_t now, diff;
|
u32_t now, diff;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);
|
timeout = (struct sys_timeo *)memp_malloc(MEMP_SYS_TIMEOUT);
|
||||||
if (timeout == NULL) {
|
if (timeout == NULL) {
|
||||||
LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);
|
LWIP_ASSERT("sys_timeout: timeout != NULL, pool MEMP_SYS_TIMEOUT is empty", timeout != NULL);
|
||||||
@ -275,6 +277,8 @@ sys_untimeout(sys_timeout_handler handler, void *arg)
|
|||||||
{
|
{
|
||||||
struct sys_timeo *prev_t, *t;
|
struct sys_timeo *prev_t, *t;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (next_timeout == NULL) {
|
if (next_timeout == NULL) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -313,6 +317,8 @@ static
|
|||||||
void
|
void
|
||||||
sys_check_timeouts(void)
|
sys_check_timeouts(void)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (next_timeout) {
|
if (next_timeout) {
|
||||||
struct sys_timeo *tmptimeout;
|
struct sys_timeo *tmptimeout;
|
||||||
u32_t diff;
|
u32_t diff;
|
||||||
@ -369,6 +375,8 @@ sys_check_timeouts(void)
|
|||||||
void
|
void
|
||||||
sys_restart_timeouts(void)
|
sys_restart_timeouts(void)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
timeouts_last_time = sys_now();
|
timeouts_last_time = sys_now();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -382,6 +390,9 @@ u32_t
|
|||||||
sys_timeouts_sleeptime(void)
|
sys_timeouts_sleeptime(void)
|
||||||
{
|
{
|
||||||
u32_t diff;
|
u32_t diff;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (next_timeout == NULL) {
|
if (next_timeout == NULL) {
|
||||||
return 0xffffffff;
|
return 0xffffffff;
|
||||||
}
|
}
|
||||||
|
@ -198,6 +198,7 @@ udp_input(struct pbuf *p, struct netif *inp)
|
|||||||
u8_t for_us = 0;
|
u8_t for_us = 0;
|
||||||
|
|
||||||
LWIP_UNUSED_ARG(inp);
|
LWIP_UNUSED_ARG(inp);
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
PERF_START;
|
PERF_START;
|
||||||
|
|
||||||
@ -680,6 +681,8 @@ udp_sendto_if_src_chksum(struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *d
|
|||||||
u8_t ip_proto;
|
u8_t ip_proto;
|
||||||
u8_t ttl;
|
u8_t ttl;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if ((pcb == NULL) || (dst_ip == NULL) || !IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) ||
|
if ((pcb == NULL) || (dst_ip == NULL) || !IP_ADDR_PCB_VERSION_MATCH(pcb, src_ip) ||
|
||||||
!IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
|
!IP_ADDR_PCB_VERSION_MATCH(pcb, dst_ip)) {
|
||||||
return ERR_VAL;
|
return ERR_VAL;
|
||||||
@ -893,6 +896,8 @@ udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
|
|||||||
ip_addr_t zoned_ipaddr;
|
ip_addr_t zoned_ipaddr;
|
||||||
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
|
#endif /* LWIP_IPV6 && LWIP_IPV6_SCOPES */
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
#if LWIP_IPV4
|
#if LWIP_IPV4
|
||||||
/* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */
|
/* Don't propagate NULL pointer (IPv4 ANY) to subsequent functions */
|
||||||
if (ipaddr == NULL) {
|
if (ipaddr == NULL) {
|
||||||
@ -995,6 +1000,8 @@ udp_bind(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
|
|||||||
void
|
void
|
||||||
udp_bind_netif(struct udp_pcb *pcb, const struct netif *netif)
|
udp_bind_netif(struct udp_pcb *pcb, const struct netif *netif)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if (netif != NULL) {
|
if (netif != NULL) {
|
||||||
pcb->netif_idx = netif_get_index(netif);
|
pcb->netif_idx = netif_get_index(netif);
|
||||||
} else {
|
} else {
|
||||||
@ -1024,6 +1031,8 @@ udp_connect(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
|
|||||||
{
|
{
|
||||||
struct udp_pcb *ipcb;
|
struct udp_pcb *ipcb;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
if ((pcb == NULL) || (ipaddr == NULL)) {
|
if ((pcb == NULL) || (ipaddr == NULL)) {
|
||||||
return ERR_VAL;
|
return ERR_VAL;
|
||||||
}
|
}
|
||||||
@ -1076,6 +1085,8 @@ udp_connect(struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port)
|
|||||||
void
|
void
|
||||||
udp_disconnect(struct udp_pcb *pcb)
|
udp_disconnect(struct udp_pcb *pcb)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* reset remote address association */
|
/* reset remote address association */
|
||||||
#if LWIP_IPV4 && LWIP_IPV6
|
#if LWIP_IPV4 && LWIP_IPV6
|
||||||
if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
|
if (IP_IS_ANY_TYPE_VAL(pcb->local_ip)) {
|
||||||
@ -1104,6 +1115,8 @@ udp_disconnect(struct udp_pcb *pcb)
|
|||||||
void
|
void
|
||||||
udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg)
|
udp_recv(struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg)
|
||||||
{
|
{
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
/* remember recv() callback and user data */
|
/* remember recv() callback and user data */
|
||||||
pcb->recv = recv;
|
pcb->recv = recv;
|
||||||
pcb->recv_arg = recv_arg;
|
pcb->recv_arg = recv_arg;
|
||||||
@ -1123,6 +1136,8 @@ udp_remove(struct udp_pcb *pcb)
|
|||||||
{
|
{
|
||||||
struct udp_pcb *pcb2;
|
struct udp_pcb *pcb2;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
mib2_udp_unbind(pcb);
|
mib2_udp_unbind(pcb);
|
||||||
/* pcb to be removed is first in list? */
|
/* pcb to be removed is first in list? */
|
||||||
if (udp_pcbs == pcb) {
|
if (udp_pcbs == pcb) {
|
||||||
@ -1157,6 +1172,9 @@ struct udp_pcb *
|
|||||||
udp_new(void)
|
udp_new(void)
|
||||||
{
|
{
|
||||||
struct udp_pcb *pcb;
|
struct udp_pcb *pcb;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB);
|
pcb = (struct udp_pcb *)memp_malloc(MEMP_UDP_PCB);
|
||||||
/* could allocate UDP PCB? */
|
/* could allocate UDP PCB? */
|
||||||
if (pcb != NULL) {
|
if (pcb != NULL) {
|
||||||
@ -1191,6 +1209,9 @@ struct udp_pcb *
|
|||||||
udp_new_ip_type(u8_t type)
|
udp_new_ip_type(u8_t type)
|
||||||
{
|
{
|
||||||
struct udp_pcb *pcb;
|
struct udp_pcb *pcb;
|
||||||
|
|
||||||
|
LWIP_ASSERT_CORE_LOCKED();
|
||||||
|
|
||||||
pcb = udp_new();
|
pcb = udp_new();
|
||||||
#if LWIP_IPV4 && LWIP_IPV6
|
#if LWIP_IPV4 && LWIP_IPV6
|
||||||
if (pcb != NULL) {
|
if (pcb != NULL) {
|
||||||
|
@ -212,6 +212,27 @@
|
|||||||
#if !defined SYS_LIGHTWEIGHT_PROT || defined __DOXYGEN__
|
#if !defined SYS_LIGHTWEIGHT_PROT || defined __DOXYGEN__
|
||||||
#define SYS_LIGHTWEIGHT_PROT 1
|
#define SYS_LIGHTWEIGHT_PROT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* LWIP_ASSERT_CORE_LOCKED: Macro to check whether lwIP's threading/locking
|
||||||
|
* requirements are satisfied during current function call.
|
||||||
|
* This macro usually calls a function that is implemented in the OS-dependent
|
||||||
|
* sys layer and performs the following checks:
|
||||||
|
* - Not in ISR
|
||||||
|
* - If LWIP_TCPIP_CORE_LOCKING=1: TCPIP core lock is held
|
||||||
|
* - If LWIP_TCPIP_CORE_LOCKING=0: function is called from TCPIP thread
|
||||||
|
*/
|
||||||
|
#if !defined LWIP_ASSERT_CORE_LOCKED || defined __DOXYGEN__
|
||||||
|
#define LWIP_ASSERT_CORE_LOCKED()
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called as first thing in the lwIP TCPIP thread. Can be used in conjunction
|
||||||
|
* with LWIP_ASSERT_CORE_LOCKED to check core locking.
|
||||||
|
*/
|
||||||
|
#if !defined LWIP_MARK_TCPIP_THREAD || defined __DOXYGEN__
|
||||||
|
#define LWIP_MARK_TCPIP_THREAD()
|
||||||
|
#endif
|
||||||
/**
|
/**
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user