zepif: fix destination IP (default should be broadcast, not 0.0.0.0)

This commit is contained in:
goldsimon
2018-03-01 07:08:03 +01:00
parent fcccc47be4
commit cb746a1aea
2 changed files with 18 additions and 11 deletions

View File

@@ -192,7 +192,7 @@ zepif_linkoutput(struct netif *netif, struct pbuf *p)
#if ZEPIF_LOOPBACK
zepif_udp_recv(netif, state->pcb, pbuf_clone(PBUF_RAW, PBUF_RAM, q), NULL, 0);
#endif
err = udp_sendto(state->pcb, q, state->init.zep_ip_addr, state->init.zep_udp_port);
err = udp_sendto(state->pcb, q, state->init.zep_dst_ip_addr, state->init.zep_dst_udp_port);
}
pbuf_free(q);
@@ -214,13 +214,16 @@ zepif_init(struct netif *netif)
}
memset(state, 0, sizeof(struct zepif_state));
if (init_state != NULL) {
state->init = *init_state;
memcpy(&state->init, init_state, sizeof(struct zepif_init));
}
if (state->init.zep_udp_port == 0) {
state->init.zep_udp_port = ZEPIF_DEFAULT_UDP_PORT;
if (state->init.zep_src_udp_port == 0) {
state->init.zep_src_udp_port = ZEPIF_DEFAULT_UDP_PORT;
}
if (state->init.zep_ip_addr == NULL) {
state->init.zep_ip_addr = IP_ADDR_ANY;
if (state->init.zep_dst_udp_port == 0) {
state->init.zep_dst_udp_port = ZEPIF_DEFAULT_UDP_PORT;
}
if (state->init.zep_dst_ip_addr == NULL) {
state->init.zep_dst_ip_addr = IP_ADDR_BROADCAST;
}
netif->state = NULL;
@@ -230,7 +233,7 @@ zepif_init(struct netif *netif)
err = ERR_MEM;
goto err_ret;
}
err = udp_bind(state->pcb, state->init.zep_ip_addr, state->init.zep_udp_port);
err = udp_bind(state->pcb, state->init.zep_src_ip_addr, state->init.zep_src_udp_port);
if (err != ERR_OK) {
goto err_ret;
}