Lines Matching refs:rd
16 * @file coap-rd.c
50 #define RD_ROOT_STR "rd"
108 rd_t *rd;
109 rd = (rd_t *)coap_malloc(sizeof(rd_t));
110 if (rd)
111 memset(rd, 0, sizeof(rd_t));
113 return rd;
117 rd_delete(rd_t *rd) {
118 if (rd) {
119 coap_free(rd->data.s);
120 coap_free(rd);
143 rd_t *rd = coap_resource_get_userdata(resource);
154 if (rd && rd->etag_len)
155 coap_add_option(response, COAP_OPTION_ETAG, rd->etag_len, rd->etag);
157 if (rd && rd->data.s)
158 coap_add_data(response, rd->data.length, rd->data.s);
176 rd_t *rd = NULL;
181 HASH_FIND(hh, resources, resource->uri_path.s, resource->uri_path.length, rd);
182 if (rd) {
185 if (!etag || (COAP_OPT_LENGTH(etag) != rd->etag_len)
186 || memcmp(COAP_OPT_VALUE(etag), rd->etag, rd->etag_len) != 0) {
192 coap_log_debug("hnd_put_rd: cannot allocate storage for new rd\n");
197 coap_free(rd->data.s);
198 rd->data.s = tmp.s;
199 rd->data.length = tmp.length;
200 memcpy(rd->data.s, data, rd->data.length);
205 rd->etag_len = min(COAP_OPT_LENGTH(etag), sizeof(rd->etag));
206 memcpy(rd->etag, COAP_OPT_VALUE(etag), rd->etag_len);
243 rd_t *rd = coap_resource_get_userdata(resource);
245 if (rd) {
246 rd_delete(rd);
352 rd_t *rd;
357 rd = rd_new();
359 if (!rd) {
360 coap_log_debug("hnd_get_rd: cannot allocate storage for rd\n");
364 if (coap_get_data(pdu, &rd->data.length, &data)) {
365 rd->data.s = (unsigned char *)coap_malloc(rd->data.length);
366 if (!rd->data.s) {
367 coap_log_debug("hnd_get_rd: cannot allocate storage for rd->data\n");
368 rd_delete(rd);
371 memcpy(rd->data.s, data, rd->data.length);
376 rd->etag_len = min(coap_opt_length(etag), sizeof(rd->etag));
377 memcpy(rd->etag, coap_opt_value(etag), rd->etag_len);
380 return rd;
499 rd_t *rd;
500 rd = make_rd(request);
501 if (rd) {
502 coap_resource_set_userdata(r, rd);
543 coap_add_attr(r, coap_make_str_const("rt"), coap_make_str_const("\"core.rd\""), 0);