Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
COAP_ATTRIBUTE(3)		 libcoap Manual 	       COAP_ATTRIBUTE(3)

NAME
     coap_attribute,  coap_add_attr,  coap_find_attr, coap_attr_get_value - Work
     with CoAP attributes

SYNOPSIS
     #include <coap3/coap.h>

     coap_attr_t  *coap_add_attr(coap_resource_t   *resource,	coap_str_const_t
     *name, coap_str_const_t *value, int flags);

     coap_attr_t   *coap_find_attr(coap_resource_t  *resource,	coap_str_const_t
     *name);

     coap_str_const_t *coap_attr_get_value(coap_attr_t *attribute);

     For  specific   (D)TLS   library	support,   link   with	 -lcoap-3-notls,
     -lcoap-3-gnutls,  -lcoap-3-openssl,  -lcoap-3-mbedtls,  -lcoap-3-wolfssl or
     -lcoap-3-tinydtls. Otherwise, link with -lcoap-3 to get the default  (D)TLS
     library support.

DESCRIPTION
     CoAP Resources on a CoAP Server need to be created, updated etc. The URI in
     the  request  packet  defines  the resource to work with, with possibly the
     Query referring to a sub-resource.

     When resources are configured on the CoAP server, the URI to match  against
     is  specified.  Callback  Handlers are then added to the resource to handle
     the different request methods.

     Adding Attributes allows textual information to be added  to  the	resource
     which  can  then  be reported back to any client doing a Resource Discovery
     using a  "GET  /.well-known/core"	request  with  an  optional  query.  See
     "RFC6690 5. Examples" for some examples of resource discovery usage. Common
     attribute names are rt, if, sz, ct, obs, rel, anchor, rev, hreflang, media,
     title and type. href cannot be an attribute name.

     Attributes are automatically deleted when a Resource is deleted.

FUNCTIONS
     Function: coap_add_attr()

     The  coap_add_attr() function registers a new attribute called name for the
     resource. The value of the attribute is value which can be NULL.

     flags can be zero or more of the following or'd together,	which,	if  set,
     defines  what  is	to be internally freed off when the attribute is deleted
     with coap_delete_resource().

     COAP_ATTR_FLAGS_RE-   Free  off  name  when   at-
     LEASE_NAME 	   tribute   is  deleted  with
			   coap_delete_resource().

     COAP_ATTR_FLAGS_RE-   Free  off  value  when  at-
     LEASE_VALUE	   tribute   is  deleted  with
			   coap_delete_resource().

     Function: coap_find_attr()

     The coap_find_attr() function returns  the  attribute  with  the  name,  if
     found, associated with resource.

     Function: coap_attr_get_value()

     The  coap_attr_get_value()  function  returns the value associated with the
     specified attribute.

RETURN VALUES
     coap_add_attr() returns a pointer to the attribute that was created or NULL
     if there is a malloc failure.

     coap_find_attr() returns a pointer to the first matching attribute or  NULL
     if the name was not found.

     coap_attr_get_value()  returns  a	pointer to the value held within the at-
     tribute. The pointer can be NULL if the value id NULL, or NULL if attribute
     does not exist.

EXAMPLE
     Initialize Resources

	 #include <coap3/coap.h>

	 void hnd_get_index(coap_resource_t *resource, coap_session_t *session,
			    const coap_pdu_t *request,
			    const coap_string_t *query,
			    coap_pdu_t *response);

	 void hnd_get_time(coap_resource_t *resource, coap_session_t *session,
			   const coap_pdu_t *request,
			   const coap_string_t *query,
			   coap_pdu_t *response);

	 void hnd_put_time(coap_resource_t *resource, coap_session_t *session,
			   const coap_pdu_t *request,
			   const coap_string_t *query,
			   coap_pdu_t *response);

	 void hnd_delete_time(coap_resource_t *resource, coap_session_t *session,
			      const coap_pdu_t *request,
			      const coap_string_t *query,
			      coap_pdu_t *response);

	 static void
	 init_resources(coap_context_t *ctx) {

	   coap_resource_t *r;

	   /* Create a resource to return general information */
	   r = coap_resource_init(NULL, 0);
	   coap_register_request_handler(r, COAP_REQUEST_GET, hnd_get_index);

	   /* Document resource for '.well-known/core' request */
	   coap_add_attr(r, coap_make_str_const("ct"), coap_make_str_const("0"), 0);
	   coap_add_attr(r, coap_make_str_const("title"),
			 coap_make_str_const("\"General Info\""), 0);

	   coap_add_resource(ctx, r);

	   /* Create a resource to return return or update time */
	   r = coap_resource_init(coap_make_str_const("time"),
				  COAP_RESOURCE_FLAGS_NOTIFY_CON);
	   coap_resource_set_get_observable(r, 1);
	   coap_register_request_handler(r, COAP_REQUEST_GET, hnd_get_time);
	   coap_register_request_handler(r, COAP_REQUEST_PUT, hnd_put_time);
	   coap_register_request_handler(r, COAP_REQUEST_DELETE, hnd_delete_time);

	   /* Document resource for 'time' request */
	   coap_add_attr(r, coap_make_str_const("ct"), coap_make_str_const("0"), 0);
	   coap_add_attr(r, coap_make_str_const("title"),
			 coap_make_str_const("\"Internal Clock\""), 0);
	   coap_add_attr(r, coap_make_str_const("rt"), coap_make_str_const("\"secs\""),
			 0);
	   coap_add_attr(r, coap_make_str_const("if"), coap_make_str_const("\"clock\""),
			 0);

	   coap_add_resource(ctx, r);

	 }

SEE ALSO
     coap_resource(3) and coap_handler(3)

FURTHER INFORMATION
     See

     "RFC7252: The Constrained Application Protocol (CoAP)"

     "RFC6690: Constrained RESTful Environments (CoRE) Link Format"

     for further information.

BUGS
     Please raise an issue on GitHub  at  https://github.com/obgm/libcoap/issues
     to report any bugs.

     Please  raise  a  Pull Request at https://github.com/obgm/libcoap/pulls for
     any fixes.

AUTHORS
     The libcoap project <libcoap-developers@lists.sourceforge.net>

coap_attribute 4.3.5		   08/02/2026		       COAP_ATTRIBUTE(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=coap_attribute&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help