Line data Source code
1 1 : /** @file 2 : @brief UDP utility functions 3 : */ 4 : 5 : /* 6 : * Copyright (c) 2017 Intel Corporation 7 : * 8 : * SPDX-License-Identifier: Apache-2.0 9 : */ 10 : 11 : #ifndef ZEPHYR_INCLUDE_NET_UDP_H_ 12 : #define ZEPHYR_INCLUDE_NET_UDP_H_ 13 : 14 : #include <zephyr/types.h> 15 : 16 : #include <zephyr/net/net_core.h> 17 : #include <zephyr/net/net_ip.h> 18 : #include <zephyr/net/net_pkt.h> 19 : 20 : #ifdef __cplusplus 21 : extern "C" { 22 : #endif 23 : 24 : /* These APIs are mostly meant for Zephyr internal use so do not generate 25 : * documentation for them. 26 : */ 27 : /** @cond INTERNAL_HIDDEN */ 28 : 29 : /** 30 : * @brief UDP library 31 : * @defgroup udp UDP Library 32 : * @ingroup networking 33 : * @{ 34 : */ 35 : 36 : /** 37 : * @brief Get UDP packet header data from net_pkt. 38 : * 39 : * @details The values in the returned header are in network byte order. 40 : * Note that you must access the UDP header values by the returned pointer, 41 : * the hdr parameter is just a placeholder for the header data and it might 42 : * not contain anything if the header fits properly in the first fragment of 43 : * the network packet. 44 : * 45 : * @param pkt Network packet 46 : * @param hdr Where to place the header if it does not fit in first fragment 47 : * of the network packet. This might not be populated if UDP header fits in 48 : * net_buf fragment. 49 : * 50 : * @return Return pointer to header or NULL if something went wrong. 51 : * Always use the returned pointer to access the UDP header. 52 : */ 53 : #if defined(CONFIG_NET_UDP) 54 : struct net_udp_hdr *net_udp_get_hdr(struct net_pkt *pkt, 55 : struct net_udp_hdr *hdr); 56 : #else 57 : static inline struct net_udp_hdr *net_udp_get_hdr(struct net_pkt *pkt, 58 : struct net_udp_hdr *hdr) 59 : { 60 : return NULL; 61 : } 62 : #endif /* CONFIG_NET_UDP */ 63 : 64 : /** 65 : * @brief Set UDP packet header data in net_pkt. 66 : * 67 : * @details The values in the header must be in network byte order. 68 : * This function is normally called after a call to net_udp_get_hdr(). 69 : * The hdr parameter value should be the same that is returned by function 70 : * net_udp_get_hdr() call. Note that if the UDP header fits in first net_pkt 71 : * fragment, then this function will not do anything as your hdr parameter 72 : * was pointing directly to net_pkt. 73 : * 74 : * @param pkt Network packet 75 : * @param hdr Header data pointer that was returned by net_udp_get_hdr(). 76 : * 77 : * @return Return pointer to header or NULL if something went wrong. 78 : */ 79 : #if defined(CONFIG_NET_UDP) 80 : struct net_udp_hdr *net_udp_set_hdr(struct net_pkt *pkt, 81 : struct net_udp_hdr *hdr); 82 : #else 83 : static inline struct net_udp_hdr *net_udp_set_hdr(struct net_pkt *pkt, 84 : struct net_udp_hdr *hdr) 85 : { 86 : return NULL; 87 : } 88 : #endif /* CONFIG_NET_UDP */ 89 : 90 : /** 91 : * @} 92 : */ 93 : 94 : /** @endcond */ 95 : 96 : #ifdef __cplusplus 97 : } 98 : #endif 99 : 100 : #endif /* ZEPHYR_INCLUDE_NET_UDP_H_ */