lwIP
2.0.2
Lightweight IP stack
|
Functions | |
err_t | udp_send (struct udp_pcb *pcb, struct pbuf *p) |
err_t | udp_sendto (struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port) |
err_t | udp_sendto_if (struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif) |
err_t | udp_sendto_if_src (struct udp_pcb *pcb, struct pbuf *p, const ip_addr_t *dst_ip, u16_t dst_port, struct netif *netif, const ip_addr_t *src_ip) |
err_t | udp_bind (struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) |
err_t | udp_connect (struct udp_pcb *pcb, const ip_addr_t *ipaddr, u16_t port) |
void | udp_disconnect (struct udp_pcb *pcb) |
void | udp_recv (struct udp_pcb *pcb, udp_recv_fn recv, void *recv_arg) |
void | udp_remove (struct udp_pcb *pcb) |
struct udp_pcb * | udp_new (void) |
struct udp_pcb * | udp_new_ip_type (u8_t type) |
User Datagram Protocol module
Bind an UDP PCB.
pcb | UDP PCB to be bound with a local address ipaddr and port. |
ipaddr | local IP address to bind with. Use IP4_ADDR_ANY to bind to all local interfaces. |
port | local UDP port to bind with. Use 0 to automatically bind to a random port between UDP_LOCAL_PORT_RANGE_START and UDP_LOCAL_PORT_RANGE_END. |
ipaddr & port are expected to be in the same byte order as in the pcb.
Connect an UDP PCB.
This will associate the UDP PCB with the remote address.
pcb | UDP PCB to be connected with remote address ipaddr and port. |
ipaddr | remote IP address to connect with. |
port | remote UDP port to connect with. |
ipaddr & port are expected to be in the same byte order as in the pcb.
The udp pcb is bound to a random local port if not already bound.
void udp_disconnect | ( | struct udp_pcb * | pcb | ) |
Disconnect a UDP PCB
pcb | the udp pcb to disconnect. |
struct udp_pcb* udp_new | ( | void | ) |
Create a UDP PCB.
struct udp_pcb* udp_new_ip_type | ( | u8_t | type | ) |
Create a UDP PCB for specific IP type.
type | IP address type, see lwip_ip_addr_type definitions. If you want to listen to IPv4 and IPv6 (dual-stack) packets, supply IPADDR_TYPE_ANY as argument and bind to IP_ANY_TYPE. |
void udp_recv | ( | struct udp_pcb * | pcb, |
udp_recv_fn | recv, | ||
void * | recv_arg | ||
) |
Set a receive callback for a UDP PCB
This callback will be called when receiving a datagram for the pcb.
pcb | the pcb for which to set the recv callback |
recv | function pointer of the callback function |
recv_arg | additional argument to pass to the callback function |
void udp_remove | ( | struct udp_pcb * | pcb | ) |
Remove an UDP PCB.
pcb | UDP PCB to be removed. The PCB is removed from the list of UDP PCB's and the data structure is freed from memory. |
Send data using UDP.
pcb | UDP PCB used to send the data. |
p | chain of pbuf's to be sent. |
The datagram will be sent to the current remote_ip & remote_port stored in pcb. If the pcb is not bound to a port, it will automatically be bound to a random port.
err_t udp_sendto | ( | struct udp_pcb * | pcb, |
struct pbuf * | p, | ||
const ip_addr_t * | dst_ip, | ||
u16_t | dst_port | ||
) |
Send data to a specified address using UDP.
pcb | UDP PCB used to send the data. |
p | chain of pbuf's to be sent. |
dst_ip | Destination IP address. |
dst_port | Destination UDP port. |
dst_ip & dst_port are expected to be in the same byte order as in the pcb.
If the PCB already has a remote address association, it will be restored after the data is sent.
err_t udp_sendto_if | ( | struct udp_pcb * | pcb, |
struct pbuf * | p, | ||
const ip_addr_t * | dst_ip, | ||
u16_t | dst_port, | ||
struct netif * | netif | ||
) |
Send data to a specified address using UDP. The netif used for sending can be specified.
This function exists mainly for DHCP, to be able to send UDP packets on a netif that is still down.
pcb | UDP PCB used to send the data. |
p | chain of pbuf's to be sent. |
dst_ip | Destination IP address. |
dst_port | Destination UDP port. |
netif | the netif used for sending. |
dst_ip & dst_port are expected to be in the same byte order as in the pcb.