/src/libcoap/include/coap3/coap_option.h
Line | Count | Source |
1 | | /* |
2 | | * coap_option.h -- helpers for handling options in CoAP PDUs |
3 | | * |
4 | | * Copyright (C) 2010-2013,2022-2025 Olaf Bergmann <bergmann@tzi.org> |
5 | | * |
6 | | * SPDX-License-Identifier: BSD-2-Clause |
7 | | * |
8 | | * This file is part of the CoAP library libcoap. Please see README for terms |
9 | | * of use. |
10 | | */ |
11 | | |
12 | | /** |
13 | | * @file coap_option.h |
14 | | * @brief Helpers for handling options in CoAP PDUs |
15 | | */ |
16 | | |
17 | | #ifndef COAP_OPTION_H_ |
18 | | #define COAP_OPTION_H_ |
19 | | |
20 | | #ifdef __cplusplus |
21 | | extern "C" { |
22 | | #endif |
23 | | |
24 | | typedef uint16_t coap_option_num_t; |
25 | | |
26 | | /** |
27 | | * Use byte-oriented access methods here because sliding a complex struct |
28 | | * coap_opt_t over the data buffer may cause bus error on certain platforms. |
29 | | */ |
30 | | typedef uint8_t coap_opt_t; |
31 | | #define PCHAR(p) ((coap_opt_t *)(p)) |
32 | | |
33 | | /** |
34 | | * Representation of CoAP options. |
35 | | */ |
36 | | typedef struct { |
37 | | uint16_t delta; |
38 | | size_t length; |
39 | | const uint8_t *value; |
40 | | } coap_option_t; |
41 | | |
42 | | /** |
43 | | * Parses the option pointed to by @p opt into @p result. This function returns |
44 | | * the number of bytes that have been parsed, or @c 0 on error. An error is |
45 | | * signaled when illegal delta or length values are encountered or when option |
46 | | * parsing would result in reading past the option (i.e. beyond opt + length). |
47 | | * |
48 | | * @param opt The beginning of the option to parse. |
49 | | * @param length The maximum length of @p opt. |
50 | | * @param result A pointer to the coap_option_t structure that is filled with |
51 | | * actual values iff coap_opt_parse() > 0. |
52 | | * @return The number of bytes parsed or @c 0 on error. |
53 | | */ |
54 | | size_t coap_opt_parse(const coap_opt_t *opt, |
55 | | size_t length, |
56 | | coap_option_t *result); |
57 | | |
58 | | /** |
59 | | * Returns the size of the given option, taking into account a possible option |
60 | | * jump. |
61 | | * |
62 | | * @param opt An option jump or the beginning of the option. |
63 | | * @return The number of bytes between @p opt and the end of the option |
64 | | * starting at @p opt. In case of an error, this function returns |
65 | | * @c 0 as options need at least one byte storage space. |
66 | | */ |
67 | | size_t coap_opt_size(const coap_opt_t *opt); |
68 | | |
69 | | /** |
70 | | * @ingroup application_api |
71 | | * @defgroup opt_filter Option Filters |
72 | | * API for access option filters |
73 | | * @{ |
74 | | */ |
75 | | |
76 | | /** |
77 | | * The number of option types below 256 that can be stored in an |
78 | | * option filter. COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG must be |
79 | | * at most 16. Each coap_option_filter_t object reserves |
80 | | * ((COAP_OPT_FILTER_SHORT + 1) / 2) * 2 bytes for short options. |
81 | | */ |
82 | 751M | #define COAP_OPT_FILTER_SHORT 6 |
83 | | |
84 | | /** |
85 | | * The number of option types above 255 that can be stored in an |
86 | | * option filter. COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG must be |
87 | | * at most 16. Each coap_option_filter_t object reserves |
88 | | * COAP_OPT_FILTER_LONG * 2 bytes for short options. |
89 | | */ |
90 | 316M | #define COAP_OPT_FILTER_LONG 2 |
91 | | |
92 | | /* Ensure that COAP_OPT_FILTER_SHORT and COAP_OPT_FILTER_LONG are set |
93 | | * correctly. */ |
94 | | #if (COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG > 16) |
95 | | #error COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG must be less or equal 16 |
96 | | #endif /* (COAP_OPT_FILTER_SHORT + COAP_OPT_FILTER_LONG > 16) */ |
97 | | |
98 | | /* |
99 | | * mask contains a bit vector that indicates which fields in the long_opts[] |
100 | | * and subsequent short_opts[] are used. The first COAP_OPT_FILTER_LONG bits |
101 | | * correspond to the long option types that are stored in long_opts[] |
102 | | * elements. The next COAP_OPT_FILTER_SHORT bits correspond to the short |
103 | | * option types that are stored in short_opts[]. |
104 | | */ |
105 | | typedef struct coap_opt_filter_t { |
106 | | uint16_t mask; |
107 | | uint16_t long_opts[COAP_OPT_FILTER_LONG]; |
108 | | uint8_t short_opts[COAP_OPT_FILTER_SHORT]; |
109 | | } coap_opt_filter_t; |
110 | | |
111 | | /** Pre-defined filter that includes all options. */ |
112 | 7.03k | #define COAP_OPT_ALL NULL |
113 | | |
114 | | /** |
115 | | * Clears filter @p filter. |
116 | | * |
117 | | * @param filter The filter to clear. |
118 | | */ |
119 | | void coap_option_filter_clear(coap_opt_filter_t *filter); |
120 | | |
121 | | /** |
122 | | * Sets the corresponding entry for @p number in @p filter. This |
123 | | * function returns @c 1 if bit was set or @c 0 on error (i.e. when |
124 | | * there is not enough space to fit the given number in the filter). |
125 | | * |
126 | | * @param filter The filter object to change. |
127 | | * @param number The option number for which the bit should be set. |
128 | | * |
129 | | * @return @c 1 if bit was set, @c 0 otherwise. |
130 | | */ |
131 | | int coap_option_filter_set(coap_opt_filter_t *filter, coap_option_num_t number); |
132 | | |
133 | | /** |
134 | | * Clears the corresponding entry for @p number in @p filter. This |
135 | | * function returns @c 1 if bit was set or @c 0 if not previously set. |
136 | | * |
137 | | * @param filter The filter object to change. |
138 | | * @param number The option number that should be cleared from the filter. |
139 | | * |
140 | | * @return @c 1 if bit was cleared, @c 0 otherwise. |
141 | | */ |
142 | | int coap_option_filter_unset(coap_opt_filter_t *filter, |
143 | | coap_option_num_t number); |
144 | | |
145 | | /** |
146 | | * Checks if @p number is contained in @p filter. This function returns |
147 | | * @c 1 if found, @c 0 if not. |
148 | | * |
149 | | * @param filter The filter object to search. |
150 | | * @param number The option number to search for. |
151 | | * |
152 | | * @return @c 1 if @p number was found, @c 0 otherwise |
153 | | */ |
154 | | int coap_option_filter_get(coap_opt_filter_t *filter, coap_option_num_t number); |
155 | | |
156 | | /** |
157 | | * Iterator to run through PDU options. This object must be |
158 | | * initialized with coap_option_iterator_init(). Call |
159 | | * coap_option_next() to walk through the list of options until |
160 | | * coap_option_next() returns @c NULL. |
161 | | * |
162 | | * @code |
163 | | * coap_opt_t *option; |
164 | | * coap_opt_iterator_t opt_iter; |
165 | | * coap_option_iterator_init(pdu, &opt_iter, COAP_OPT_ALL); |
166 | | * |
167 | | * while ((option = coap_option_next(&opt_iter))) { |
168 | | * ... do something with option ... |
169 | | * } |
170 | | * @endcode |
171 | | */ |
172 | | typedef struct { |
173 | | size_t length; /**< remaining length of PDU */ |
174 | | coap_option_num_t number; /**< decoded option number */ |
175 | | unsigned int bad:1; /**< iterator object is ok if not set */ |
176 | | unsigned int filtered:1; /**< denotes whether or not filter is used */ |
177 | | coap_opt_t *next_option; /**< pointer to the unparsed next option */ |
178 | | coap_opt_filter_t filter; /**< option filter */ |
179 | | } coap_opt_iterator_t; |
180 | | |
181 | | /** |
182 | | * Initializes the given option iterator @p oi to point to the beginning of the |
183 | | * @p pdu's option list. This function returns @p oi on success, @c NULL |
184 | | * otherwise (i.e. when no options exist). Note that a length check on the |
185 | | * option list must be performed before coap_option_iterator_init() is called. |
186 | | * |
187 | | * @param pdu The PDU the options of which should be walked through. |
188 | | * @param oi An iterator object that will be initilized. |
189 | | * @param filter An optional option number filter. |
190 | | * With @p number != @c COAP_OPT_ALL, coap_option_next() |
191 | | * will return only options matching this bitmask. |
192 | | * Fence-post options @c 14, @c 28, @c 42, ... are always |
193 | | * skipped. |
194 | | * |
195 | | * @return The iterator object @p oi on success, @c NULL otherwise. |
196 | | */ |
197 | | coap_opt_iterator_t *coap_option_iterator_init(const coap_pdu_t *pdu, |
198 | | coap_opt_iterator_t *oi, |
199 | | const coap_opt_filter_t *filter); |
200 | | |
201 | | /** |
202 | | * Updates the iterator @p oi to point to the next option. This function returns |
203 | | * a pointer to that option or @c NULL if no more options exist. The contents of |
204 | | * @p oi will be updated. In particular, @c oi->n specifies the current option's |
205 | | * ordinal number (counted from @c 1), @c oi->number is the option's number |
206 | | * value, and @c oi->option points to the beginning of the current option |
207 | | * itself. When * advanced past the last option, @c oi->option will be @c NULL. |
208 | | * |
209 | | * Note that options are skipped whose corresponding bits in the filter |
210 | | * specified with coap_option_iterator_init() are @c 0. Options with numbers |
211 | | * that do not fit in this filter hence will always be returned. |
212 | | * |
213 | | * @param oi The option iterator to update. |
214 | | * |
215 | | * @return The next option or @c NULL if no more options exist. |
216 | | */ |
217 | | coap_opt_t *coap_option_next(coap_opt_iterator_t *oi); |
218 | | |
219 | | /** |
220 | | * Retrieves the first option of number @p number from @p pdu. @p oi must |
221 | | * point to a coap_opt_iterator_t object that will be initialized by this |
222 | | * function to filter only options with number @p number. This function returns |
223 | | * the first option with this number, or @c NULL if not found. |
224 | | * |
225 | | * @param pdu The PDU to parse for options. |
226 | | * @param number The option number to search for. |
227 | | * @param oi An iterator object to use. |
228 | | * |
229 | | * @return A pointer to the first option of number @p number, or @c NULL if |
230 | | * not found. |
231 | | */ |
232 | | coap_opt_t *coap_check_option(const coap_pdu_t *pdu, |
233 | | coap_option_num_t number, |
234 | | coap_opt_iterator_t *oi); |
235 | | |
236 | | /** |
237 | | * Encodes the given delta and length values into @p opt. This function returns |
238 | | * the number of bytes that were required to encode @p delta and @p length or @c |
239 | | * 0 on error. Note that the result indicates by how many bytes @p opt must be |
240 | | * advanced to encode the option value. |
241 | | * |
242 | | * @param opt The option buffer space where @p delta and @p length are |
243 | | * written. |
244 | | * @param maxlen The maximum length of @p opt. |
245 | | * @param delta The actual delta value to encode. |
246 | | * @param length The actual length value to encode. |
247 | | * |
248 | | * @return The number of bytes used or @c 0 on error. |
249 | | */ |
250 | | size_t coap_opt_setheader(coap_opt_t *opt, |
251 | | size_t maxlen, |
252 | | uint16_t delta, |
253 | | size_t length); |
254 | | |
255 | | /** |
256 | | * Compute storage bytes needed for an option with given @p delta and |
257 | | * @p length |
258 | | * |
259 | | * @param delta The option delta. |
260 | | * @param length The option length. |
261 | | * |
262 | | * @return The number of bytes required to encode this option. |
263 | | */ |
264 | | size_t coap_opt_encode_size(uint16_t delta, size_t length); |
265 | | |
266 | | /** |
267 | | * Encodes option with given @p delta into @p opt. This function returns the |
268 | | * number of bytes written to @p opt or @c 0 on error. This happens especially |
269 | | * when @p opt does not provide sufficient space to store the option value, |
270 | | * delta, and option jumps when required. |
271 | | * |
272 | | * @param opt The option buffer space where @p val is written. |
273 | | * @param n Maximum length of @p opt. |
274 | | * @param delta The option delta. |
275 | | * @param val The option value to copy into @p opt. |
276 | | * @param length The actual length of @p val. |
277 | | * |
278 | | * @return The number of bytes that have been written to @p opt or @c 0 on |
279 | | * error. The return value will always be less than @p n. |
280 | | */ |
281 | | size_t coap_opt_encode(coap_opt_t *opt, |
282 | | size_t n, |
283 | | uint16_t delta, |
284 | | const uint8_t *val, |
285 | | size_t length); |
286 | | |
287 | | /** |
288 | | * Returns the length of the given option. @p opt must point to an option jump |
289 | | * or the beginning of the option. This function returns @c 0 when @p opt is not |
290 | | * an option or the actual length of @p opt (which can be @c 0 as well). |
291 | | * |
292 | | * @note {The rationale for using @c 0 in case of an error is that in most |
293 | | * contexts, the result of this function is used to skip the next |
294 | | * coap_opt_length() bytes.} |
295 | | * |
296 | | * @param opt The option whose length should be returned. |
297 | | * |
298 | | * @return The option's length or @c 0 when undefined. |
299 | | */ |
300 | | uint32_t coap_opt_length(const coap_opt_t *opt); |
301 | | |
302 | | /** |
303 | | * Returns a pointer to the value of the given option. @p opt must point to an |
304 | | * option jump or the beginning of the option. This function returns @c NULL if |
305 | | * @p opt is not a valid option. |
306 | | * |
307 | | * @param opt The option whose value should be returned. |
308 | | * |
309 | | * @return A pointer to the option value or @c NULL on error. |
310 | | */ |
311 | | const uint8_t *coap_opt_value(const coap_opt_t *opt); |
312 | | |
313 | | /** |
314 | | * Representation of chained list of CoAP options to install. |
315 | | * |
316 | | * @code |
317 | | * coap_optlist_t *optlist_chain = NULL; |
318 | | * coap_pdu_t *pdu = coap_new_pdu(session); |
319 | | * |
320 | | * ... other set up code ... |
321 | | * coap_insert_optlist(&optlist_chain, coap_new_optlist(COAP_OPTION_OBSERVE, |
322 | | * COAP_OBSERVE_ESTABLISH, NULL)); |
323 | | * |
324 | | * coap_add_optlist_pdu(pdu, &optlist_chain); |
325 | | * ... other code ... |
326 | | * coap_delete_optlist(optlist_chain); |
327 | | * @endcode |
328 | | */ |
329 | | typedef struct coap_optlist_t { |
330 | | struct coap_optlist_t *next; /**< next entry in the optlist chain */ |
331 | | uint16_t number; /**< the option number (no delta coding) */ |
332 | | size_t length; /**< the option value length */ |
333 | | uint8_t *data; /**< the option data */ |
334 | | } coap_optlist_t; |
335 | | |
336 | | /** |
337 | | * Create a new optlist entry. |
338 | | * |
339 | | * Note: Where possible, the option data needs to be stripped of leading zeros |
340 | | * (big endian) to reduce the amount of data needed in the PDU, as well as in |
341 | | * some cases the maximum data size of an opton can be exceeded if not stripped |
342 | | * and hence be illegal. This is done by using coap_encode_var_safe() or |
343 | | * coap_encode_var_safe8(). |
344 | | * |
345 | | * @param number The option number (COAP_OPTION_*) |
346 | | * @param length The option length |
347 | | * @param data The option value data |
348 | | * |
349 | | * @return A pointer to the new optlist entry, or @c NULL if error |
350 | | */ |
351 | | coap_optlist_t *coap_new_optlist(uint16_t number, |
352 | | size_t length, |
353 | | const uint8_t *data); |
354 | | |
355 | | /** |
356 | | * The current optlist of @p optlist_chain is first sorted (as per RFC7272 |
357 | | * ordering requirements) and then added to the @p pdu. |
358 | | * |
359 | | * @param pdu The pdu to add the options to from the chain list |
360 | | * @param optlist_chain The chained list of optlist to add to the pdu |
361 | | * |
362 | | * @return @c 1 if succesful or @c 0 if failure; |
363 | | */ |
364 | | int coap_add_optlist_pdu(coap_pdu_t *pdu, coap_optlist_t **optlist_chain); |
365 | | |
366 | | /** |
367 | | * Adds @p optlist to the given @p optlist_chain. The optlist_chain variable |
368 | | * be set to NULL before the initial call to coap_insert_optlist(). |
369 | | * The optlist_chain will need to be deleted using coap_delete_optlist() |
370 | | * when no longer required. |
371 | | * |
372 | | * @param optlist_chain The chain to add optlist to |
373 | | * @param optlist The optlist to add to the queue |
374 | | * |
375 | | * @return @c 1 if successful, @c 0 otherwise. |
376 | | */ |
377 | | int coap_insert_optlist(coap_optlist_t **optlist_chain, |
378 | | coap_optlist_t *optlist); |
379 | | |
380 | | /** |
381 | | * Removes all entries from the @p optlist_chain, freeing off their |
382 | | * memory usage. |
383 | | * |
384 | | * @param optlist_chain The optlist chain to remove all the entries from |
385 | | */ |
386 | | void coap_delete_optlist(coap_optlist_t *optlist_chain); |
387 | | |
388 | | /** @} */ |
389 | | |
390 | | /** |
391 | | * Sets the corresponding bit for @p type in @p filter. This function returns @c |
392 | | * 1 if bit was set or @c -1 on error (i.e. when the given type does not fit in |
393 | | * the filter). |
394 | | * |
395 | | * @deprecated Use coap_option_filter_set() instead. |
396 | | * |
397 | | * @param filter The filter object to change. |
398 | | * @param type The type for which the bit should be set. |
399 | | * |
400 | | * @return @c 1 if bit was set, @c -1 otherwise. |
401 | | */ |
402 | | COAP_STATIC_INLINE COAP_DEPRECATED int |
403 | 0 | coap_option_setb(coap_opt_filter_t *filter, uint16_t type) { |
404 | 0 | return coap_option_filter_set(filter, type) ? 1 : -1; |
405 | 0 | } Unexecuted instantiation: coap_debug.c:coap_option_setb Unexecuted instantiation: coap_encode.c:coap_option_setb Unexecuted instantiation: coap_net.c:coap_option_setb Unexecuted instantiation: coap_netif.c:coap_option_setb Unexecuted instantiation: coap_notls.c:coap_option_setb Unexecuted instantiation: coap_option.c:coap_option_setb Unexecuted instantiation: coap_oscore.c:coap_option_setb Unexecuted instantiation: coap_pdu.c:coap_option_setb Unexecuted instantiation: coap_proxy.c:coap_option_setb Unexecuted instantiation: coap_prng.c:coap_option_setb Unexecuted instantiation: coap_resource.c:coap_option_setb Unexecuted instantiation: coap_session.c:coap_option_setb Unexecuted instantiation: coap_sha1.c:coap_option_setb Unexecuted instantiation: coap_str.c:coap_option_setb Unexecuted instantiation: coap_strm_posix.c:coap_option_setb Unexecuted instantiation: coap_subscribe.c:coap_option_setb Unexecuted instantiation: coap_threadsafe.c:coap_option_setb Unexecuted instantiation: coap_time.c:coap_option_setb Unexecuted instantiation: coap_uri.c:coap_option_setb Unexecuted instantiation: coap_ws.c:coap_option_setb Unexecuted instantiation: oscore.c:coap_option_setb Unexecuted instantiation: oscore_cbor.c:coap_option_setb Unexecuted instantiation: oscore_context.c:coap_option_setb Unexecuted instantiation: oscore_cose.c:coap_option_setb Unexecuted instantiation: oscore_crypto.c:coap_option_setb Unexecuted instantiation: coap_address.c:coap_option_setb Unexecuted instantiation: coap_async.c:coap_option_setb Unexecuted instantiation: coap_block.c:coap_option_setb Unexecuted instantiation: coap_cache.c:coap_option_setb Unexecuted instantiation: coap_dgrm_posix.c:coap_option_setb Unexecuted instantiation: coap_dtls.c:coap_option_setb Unexecuted instantiation: coap_hashkey.c:coap_option_setb Unexecuted instantiation: coap_io.c:coap_option_setb Unexecuted instantiation: coap_io_posix.c:coap_option_setb Unexecuted instantiation: coap_layers.c:coap_option_setb Unexecuted instantiation: coap_mem.c:coap_option_setb |
406 | | |
407 | | /** |
408 | | * Clears the corresponding bit for @p type in @p filter. This function returns |
409 | | * @c 1 if bit was cleared or @c -1 on error (i.e. bit not set). |
410 | | * |
411 | | * @deprecated Use coap_option_filter_unset() instead. |
412 | | * |
413 | | * @param filter The filter object to change. |
414 | | * @param type The type for which the bit should be cleared. |
415 | | * |
416 | | * @return @c 1 if bit was set, @c -1 otherwise. |
417 | | */ |
418 | | COAP_STATIC_INLINE COAP_DEPRECATED int |
419 | 0 | coap_option_clrb(coap_opt_filter_t *filter, uint16_t type) { |
420 | 0 | return coap_option_filter_unset(filter, type) ? 1 : -1; |
421 | 0 | } Unexecuted instantiation: coap_debug.c:coap_option_clrb Unexecuted instantiation: coap_encode.c:coap_option_clrb Unexecuted instantiation: coap_net.c:coap_option_clrb Unexecuted instantiation: coap_netif.c:coap_option_clrb Unexecuted instantiation: coap_notls.c:coap_option_clrb Unexecuted instantiation: coap_option.c:coap_option_clrb Unexecuted instantiation: coap_oscore.c:coap_option_clrb Unexecuted instantiation: coap_pdu.c:coap_option_clrb Unexecuted instantiation: coap_proxy.c:coap_option_clrb Unexecuted instantiation: coap_prng.c:coap_option_clrb Unexecuted instantiation: coap_resource.c:coap_option_clrb Unexecuted instantiation: coap_session.c:coap_option_clrb Unexecuted instantiation: coap_sha1.c:coap_option_clrb Unexecuted instantiation: coap_str.c:coap_option_clrb Unexecuted instantiation: coap_strm_posix.c:coap_option_clrb Unexecuted instantiation: coap_subscribe.c:coap_option_clrb Unexecuted instantiation: coap_threadsafe.c:coap_option_clrb Unexecuted instantiation: coap_time.c:coap_option_clrb Unexecuted instantiation: coap_uri.c:coap_option_clrb Unexecuted instantiation: coap_ws.c:coap_option_clrb Unexecuted instantiation: oscore.c:coap_option_clrb Unexecuted instantiation: oscore_cbor.c:coap_option_clrb Unexecuted instantiation: oscore_context.c:coap_option_clrb Unexecuted instantiation: oscore_cose.c:coap_option_clrb Unexecuted instantiation: oscore_crypto.c:coap_option_clrb Unexecuted instantiation: coap_address.c:coap_option_clrb Unexecuted instantiation: coap_async.c:coap_option_clrb Unexecuted instantiation: coap_block.c:coap_option_clrb Unexecuted instantiation: coap_cache.c:coap_option_clrb Unexecuted instantiation: coap_dgrm_posix.c:coap_option_clrb Unexecuted instantiation: coap_dtls.c:coap_option_clrb Unexecuted instantiation: coap_hashkey.c:coap_option_clrb Unexecuted instantiation: coap_io.c:coap_option_clrb Unexecuted instantiation: coap_io_posix.c:coap_option_clrb Unexecuted instantiation: coap_layers.c:coap_option_clrb Unexecuted instantiation: coap_mem.c:coap_option_clrb |
422 | | |
423 | | /** |
424 | | * Gets the corresponding bit for @p type in @p filter. This function returns @c |
425 | | * 1 if the bit is set @c 0 if not. |
426 | | * |
427 | | * @deprecated Use coap_option_filter_get() instead. |
428 | | * |
429 | | * @param filter The filter object to read bit from. |
430 | | * @param type The type for which the bit should be read. |
431 | | * |
432 | | * @return @c 1 if bit was set, @c 0 if not. |
433 | | */ |
434 | | COAP_STATIC_INLINE COAP_DEPRECATED int |
435 | 0 | coap_option_getb(coap_opt_filter_t *filter, uint16_t type) { |
436 | 0 | return coap_option_filter_get(filter, type); |
437 | 0 | } Unexecuted instantiation: coap_debug.c:coap_option_getb Unexecuted instantiation: coap_encode.c:coap_option_getb Unexecuted instantiation: coap_net.c:coap_option_getb Unexecuted instantiation: coap_netif.c:coap_option_getb Unexecuted instantiation: coap_notls.c:coap_option_getb Unexecuted instantiation: coap_option.c:coap_option_getb Unexecuted instantiation: coap_oscore.c:coap_option_getb Unexecuted instantiation: coap_pdu.c:coap_option_getb Unexecuted instantiation: coap_proxy.c:coap_option_getb Unexecuted instantiation: coap_prng.c:coap_option_getb Unexecuted instantiation: coap_resource.c:coap_option_getb Unexecuted instantiation: coap_session.c:coap_option_getb Unexecuted instantiation: coap_sha1.c:coap_option_getb Unexecuted instantiation: coap_str.c:coap_option_getb Unexecuted instantiation: coap_strm_posix.c:coap_option_getb Unexecuted instantiation: coap_subscribe.c:coap_option_getb Unexecuted instantiation: coap_threadsafe.c:coap_option_getb Unexecuted instantiation: coap_time.c:coap_option_getb Unexecuted instantiation: coap_uri.c:coap_option_getb Unexecuted instantiation: coap_ws.c:coap_option_getb Unexecuted instantiation: oscore.c:coap_option_getb Unexecuted instantiation: oscore_cbor.c:coap_option_getb Unexecuted instantiation: oscore_context.c:coap_option_getb Unexecuted instantiation: oscore_cose.c:coap_option_getb Unexecuted instantiation: oscore_crypto.c:coap_option_getb Unexecuted instantiation: coap_address.c:coap_option_getb Unexecuted instantiation: coap_async.c:coap_option_getb Unexecuted instantiation: coap_block.c:coap_option_getb Unexecuted instantiation: coap_cache.c:coap_option_getb Unexecuted instantiation: coap_dgrm_posix.c:coap_option_getb Unexecuted instantiation: coap_dtls.c:coap_option_getb Unexecuted instantiation: coap_hashkey.c:coap_option_getb Unexecuted instantiation: coap_io.c:coap_option_getb Unexecuted instantiation: coap_io_posix.c:coap_option_getb Unexecuted instantiation: coap_layers.c:coap_option_getb Unexecuted instantiation: coap_mem.c:coap_option_getb |
438 | | |
439 | | #ifdef __cplusplus |
440 | | } |
441 | | #endif |
442 | | |
443 | | #endif /* COAP_OPTION_H_ */ |