Dingo (15.08.2019 09:50 - 09:54, просмотров: 230) ответил SciFi на То есть если IP_SOF_BROADCAST == 0, то ip_set_option(udp_pcb, SOF_BROADCAST) не обязательно.
Это для RAW фрагмент, и вроде так, но UDP не отправлял, пока не установил флажок. Искал через отладку: /* lwipopts.h */
#define LWIP_DEBUG LWIP_DBG_ON
#define UDP_DEBUG LWIP_DBG_ON
#define LWIP_DBG_TYPES_ON LWIP_DBG_ON
Поймал сообщения "udp_send: No route to {ip.dest}". С флажком - нормально. Использую без dhcp, адрес шлюза задан.
Чтобы 2 раза не вставать, для UDP: /* udp.c */
#if IP_SOF_BROADCAST
/* broadcast filter? */
if (!ip_get_option(pcb, SOF_BROADCAST) && ip_addr_isbroadcast(dst_ip, netif)) {
LWIP_DEBUGF(UDP_DEBUG | LWIP_DBG_LEVEL_SERIOUS,
("udp_sendto_if: SOF_BROADCAST not enabled on pcb %p\n", (void *)pcb));
return ERR_VAL;
}
#endif /* IP_SOF_BROADCAST */
То есть, если не выполнены все условия, то не отправит, даже через udp_sendto();
Спасибо вам за направление поисков.