Lines Matching +full:buffer +full:- +full:size
8 * (c) NLnet Labs, 2004-2022
27 return edns->_size; in ldns_edns_get_size()
34 return edns->_code; in ldns_edns_get_code()
41 return edns->_data; in ldns_edns_get_data()
48 size_t size; in ldns_edns_get_wireformat_buffer() local
50 ldns_buffer* buffer; in ldns_edns_get_wireformat_buffer() local
57 size = ldns_edns_get_size(edns); in ldns_edns_get_wireformat_buffer()
60 buffer = ldns_buffer_new(size + 4); in ldns_edns_get_wireformat_buffer()
62 if (buffer == NULL) { in ldns_edns_get_wireformat_buffer()
66 ldns_buffer_write_u16(buffer, option); in ldns_edns_get_wireformat_buffer()
67 ldns_buffer_write_u16(buffer, size); in ldns_edns_get_wireformat_buffer()
68 ldns_buffer_write(buffer, data, size); in ldns_edns_get_wireformat_buffer()
70 ldns_buffer_flip(buffer); in ldns_edns_get_wireformat_buffer()
72 return buffer; in ldns_edns_get_wireformat_buffer()
77 ldns_edns_set_size(ldns_edns_option *edns, size_t size) in ldns_edns_set_size() argument
80 edns->_size = size; in ldns_edns_set_size()
87 edns->_code = code; in ldns_edns_set_code()
95 edns->_data = data; in ldns_edns_set_data()
100 ldns_edns_new(ldns_edns_option_code code, size_t size, void *data) in ldns_edns_new() argument
108 ldns_edns_set_size(edns, size); in ldns_edns_new()
115 ldns_edns_new_from_data(ldns_edns_option_code code, size_t size, const void *data) in ldns_edns_new_from_data() argument
122 edns->_data = LDNS_XMALLOC(uint8_t, size); in ldns_edns_new_from_data()
123 if (!edns->_data) { in ldns_edns_new_from_data()
130 ldns_edns_set_size(edns, size); in ldns_edns_new_from_data()
131 memcpy(edns->_data, data, size); in ldns_edns_new_from_data()
154 if (edns->_data) { in ldns_edns_deep_free()
155 LDNS_FREE(edns->_data); in ldns_edns_deep_free()
177 option_list->_option_count = 0; in ldns_edns_option_list_new()
178 option_list->_option_capacity = 0; in ldns_edns_option_list_new()
179 option_list->_options_size = 0; in ldns_edns_option_list_new()
180 option_list->_options = NULL; in ldns_edns_option_list_new()
199 if (old_list->_option_count == 0) { in ldns_edns_option_list_clone()
203 /* adding options also updates the total options size */ in ldns_edns_option_list_clone()
204 for (i = 0; i < old_list->_option_count; i++) { in ldns_edns_option_list_clone()
219 LDNS_FREE(option_list->_options); in ldns_edns_option_list_free()
241 return option_list->_option_count; in ldns_edns_option_list_get_count()
251 assert(option_list->_options[index]); in ldns_edns_option_list_get_option()
252 return option_list->_options[index]; in ldns_edns_option_list_get_option()
262 return option_list->_options_size; in ldns_edns_option_list_get_options_size()
287 /* shrink the total EDNS size if the old EDNS option exists */ in ldns_edns_option_list_set_option()
289 option_list->_options_size -= (ldns_edns_get_size(old) + 4); in ldns_edns_option_list_set_option()
292 option_list->_options_size += (ldns_edns_get_size(option) + 4); in ldns_edns_option_list_set_option()
294 option_list->_options[index] = option; in ldns_edns_option_list_set_option()
311 cap = option_list->_option_capacity; in ldns_edns_option_list_push()
320 cap = LDNS_OPTIONLIST_INIT; /* initial list size */ in ldns_edns_option_list_push()
325 new_list = LDNS_XREALLOC(option_list->_options, in ldns_edns_option_list_push()
332 option_list->_options = new_list; in ldns_edns_option_list_push()
333 option_list->_option_capacity = cap; in ldns_edns_option_list_push()
338 option_list->_option_count); in ldns_edns_option_list_push()
339 option_list->_option_count += 1; in ldns_edns_option_list_push()
353 cap = option_list->_option_capacity; in ldns_edns_option_list_pop()
360 pop = ldns_edns_option_list_get_option(option_list, count-1); in ldns_edns_option_list_pop()
363 if (cap > LDNS_OPTIONLIST_INIT && count-1 <= cap/2) { in ldns_edns_option_list_pop()
368 new_list = LDNS_XREALLOC(option_list->_options, in ldns_edns_option_list_pop()
371 option_list->_options = new_list; in ldns_edns_option_list_pop()
376 /* shrink the total EDNS size of the options if the popped EDNS option exists */ in ldns_edns_option_list_pop()
378 option_list->_options_size -= (ldns_edns_get_size(pop) + 4); in ldns_edns_option_list_pop()
381 option_list->_option_count = count - 1; in ldns_edns_option_list_pop()
389 size_t i, list_size, options_size, option, size; in ldns_edns_option_list2wireformat_buffer() local
390 ldns_buffer* buffer; in ldns_edns_option_list2wireformat_buffer() local
401 /* create buffer the size of the total EDNS wireformat options */ in ldns_edns_option_list2wireformat_buffer()
403 buffer = ldns_buffer_new(options_size); in ldns_edns_option_list2wireformat_buffer()
405 if (!buffer) { in ldns_edns_option_list2wireformat_buffer()
409 /* write individual serialized EDNS options to final buffer*/ in ldns_edns_option_list2wireformat_buffer()
419 size = ldns_edns_get_size(edns); in ldns_edns_option_list2wireformat_buffer()
423 if (!(ldns_buffer_available(buffer, size + 4))) { in ldns_edns_option_list2wireformat_buffer()
424 ldns_buffer_free(buffer); in ldns_edns_option_list2wireformat_buffer()
428 ldns_buffer_write_u16(buffer, option); in ldns_edns_option_list2wireformat_buffer()
429 ldns_buffer_write_u16(buffer, size); in ldns_edns_option_list2wireformat_buffer()
430 ldns_buffer_write(buffer, data, size); in ldns_edns_option_list2wireformat_buffer()
433 ldns_buffer_flip(buffer); in ldns_edns_option_list2wireformat_buffer()
435 return buffer; in ldns_edns_option_list2wireformat_buffer()