| /** @file |
| @brief UDP utility functions |
| */ |
| |
| /* |
| * Copyright (c) 2017 Intel Corporation |
| * |
| * SPDX-License-Identifier: Apache-2.0 |
| */ |
| |
| #ifndef ZEPHYR_INCLUDE_NET_UDP_H_ |
| #define ZEPHYR_INCLUDE_NET_UDP_H_ |
| |
| #include <zephyr/types.h> |
| |
| #include <net/net_core.h> |
| #include <net/net_ip.h> |
| #include <net/net_pkt.h> |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| /* These APIs are mostly meant for Zephyr internal use so do not generate |
| * documentation for them. |
| */ |
| /** @cond INTERNAL_HIDDEN */ |
| |
| /** |
| * @brief UDP library |
| * @defgroup udp UDP Library |
| * @ingroup networking |
| * @{ |
| */ |
| |
| /** |
| * @brief Get UDP packet header data from net_pkt. |
| * |
| * @details The values in the returned header are in network byte order. |
| * Note that you must access the UDP header values by the returned pointer, |
| * the hdr parameter is just a placeholder for the header data and it might |
| * not contain anything if the header fits properly in the first fragment of |
| * the network packet. |
| * |
| * @param pkt Network packet |
| * @param hdr Where to place the header if it does not fit in first fragment |
| * of the network packet. This might not be populated if UDP header fits in |
| * net_buf fragment. |
| * |
| * @return Return pointer to header or NULL if something went wrong. |
| * Always use the returned pointer to access the UDP header. |
| */ |
| #if defined(CONFIG_NET_UDP) |
| struct net_udp_hdr *net_udp_get_hdr(struct net_pkt *pkt, |
| struct net_udp_hdr *hdr); |
| #else |
| static inline struct net_udp_hdr *net_udp_get_hdr(struct net_pkt *pkt, |
| struct net_udp_hdr *hdr) |
| { |
| return NULL; |
| } |
| #endif /* CONFIG_NET_UDP */ |
| |
| /** |
| * @brief Set UDP packet header data in net_pkt. |
| * |
| * @details The values in the header must be in network byte order. |
| * This function is normally called after a call to net_udp_get_hdr(). |
| * The hdr parameter value should be the same that is returned by function |
| * net_udp_get_hdr() call. Note that if the UDP header fits in first net_pkt |
| * fragment, then this function will not do anything as your hdr parameter |
| * was pointing directly to net_pkt. |
| * |
| * @param pkt Network packet |
| * @param hdr Header data pointer that was returned by net_udp_get_hdr(). |
| * |
| * @return Return pointer to header or NULL if something went wrong. |
| */ |
| #if defined(CONFIG_NET_UDP) |
| struct net_udp_hdr *net_udp_set_hdr(struct net_pkt *pkt, |
| struct net_udp_hdr *hdr); |
| #else |
| static inline struct net_udp_hdr *net_udp_set_hdr(struct net_pkt *pkt, |
| struct net_udp_hdr *hdr) |
| { |
| return NULL; |
| } |
| #endif /* CONFIG_NET_UDP */ |
| |
| /** |
| * @} |
| */ |
| |
| /** @endcond */ |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| #endif /* ZEPHYR_INCLUDE_NET_UDP_H_ */ |