netwib doc_html (version 5.39.0)

## main index

## section index

    /*-------------------------------------------------------------*/
    /* We need a forward declaration for netwib_eth, netwib_ip4 and
       netwib_port.
    */
    #include "../net/types.h"

    /*-------------------------------------------------------------*/
    /***************************************************************
     * This module permits to store TLV in a netwib_buf. A TLV is  *
     * a data block containing :                                   *
     *  - Type : netwib_tlvtype                                    *
     *  - Length : length of value                                 *
     *  - Value : value of type 'type'                             *
     ***************************************************************/

    /*-------------------------------------------------------------*/
    typedef enum {
      NETWIB_TLVTYPE_BUF = 1,     /* data */
      NETWIB_TLVTYPE_UINT,        /* netwib_uint32 16 or 8 */
      NETWIB_TLVTYPE_ETH,         /* netwib_eth */
      NETWIB_TLVTYPE_IP,          /* netwib_ip */
      NETWIB_TLVTYPE_END = 100,   /* end */
      /* start of free numbers for user */
      NETWIB_TLVTYPE_USER_BEGIN = NETWIB_ENUM_USER_BEGIN
    } netwib_tlvtype;

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_append_xyz
       Description :
         Add a TLV to a buf.
       Input parameter(s) :
         ...
       Input/output parameter(s) :
         *pbuf : netwib_buf updated
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
       The netwib_tlv_append_buf function supports NETWIB_BUF_FLAGS_SENSITIVE.
    */
    netwib_err netwib_tlv_append_buf(netwib_constbuf *pbuf,
                                     netwib_buf *ptlv);
    netwib_err netwib_tlv_append_uint32(netwib_uint32 ui,
                                        netwib_buf *ptlv);
    netwib_err netwib_tlv_append_uint64(netwib_uint64 ui,
                                        netwib_buf *ptlv);
    netwib_err netwib_tlv_append_eth(netwib_consteth *peth,
                                     netwib_buf *ptlv);
    netwib_err netwib_tlv_append_ip(netwib_constip *pip,
                                    netwib_buf *ptlv);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_append_end
       Description :
         Indicates the end of data. It is for example used after
         several netwib_tlv_append_data to indicates the end of data.
       Input parameter(s) :
       Input/output parameter(s) :
         *pbuf : netwib_buf updated
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_tlv_append_end(netwib_buf *ptlv);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_append_newtype
       Description :
         Add a user defined TLV.
       Input parameter(s) :
         type : type
         *pvalue : buffer containing the value
       Input/output parameter(s) :
         *pbuf : netwib_buf updated
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_tlv_append_newtype(netwib_tlvtype type,
                                         netwib_constbuf *pvalue,
                                         netwib_buf *ptlv);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_xyzpend_tlv
       Description :
         Add a predefined TLV.
       Input parameter(s) :
         *pnewtlv : buffer containing the preformed tlv
       Input/output parameter(s) :
         *pbuf : netwib_buf updated
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
       Both functions supports NETWIB_BUF_FLAGS_SENSITIVE.
    */
    netwib_err netwib_tlv_append_tlv(netwib_constbuf *pnewtlv,
                                     netwib_buf *ptlv);
    netwib_err netwib_tlv_prepend_tlv(netwib_constbuf *pnewtlv,
                                      netwib_buf *ptlv);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_entry_typelen
       Description :
         Obtain type and length of current TLV.
       Input parameter(s) :
         *pbuf : netwib_buf containing the TLV
       Input/output parameter(s) :
       Output parameter(s) :
         *ptype : type
         *plength : length
         *pskipsize : size to skip this entry
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_tlv_entry_typelen(netwib_constbuf *ptlv,
                                        netwib_tlvtype *ptype,
                                        netwib_uint32 *plength,
                                        netwib_uint32 *pskipsize);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_decode_xyz
       Description :
         Decode a TLV from a buf.
       Input parameter(s) :
         *pbuf : netwib_buf containing the TLV
       Input/output parameter(s) :
         ...
       Output parameter(s) :
         *pskipsize : size to skip this entry
       Normal return values :
         NETWIB_ERR_OK : ok
       The netwib_tlv_decode_buf function supports NETWIB_BUF_FLAGS_SENSITIVE.
    */
    netwib_err netwib_tlv_decode_buf(netwib_constbuf *ptlv,
                                     netwib_bufext *pbuf,
                                     netwib_uint32 *pskipsize);
    netwib_err netwib_tlv_decode_uint32(netwib_constbuf *ptlv,
                                        netwib_uint32 *pui,
                                        netwib_uint32 *pskipsize);
    netwib_err netwib_tlv_decode_uint64(netwib_constbuf *ptlv,
                                        netwib_uint64 *pui,
                                        netwib_uint32 *pskipsize);
    netwib_err netwib_tlv_decode_eth(netwib_constbuf *ptlv,
                                     netwib_eth *peth,
                                     netwib_uint32 *pskipsize);
    netwib_err netwib_tlv_decode_ip(netwib_constbuf *ptlv,
                                    netwib_ip *pip,
                                    netwib_uint32 *pskipsize);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_decode_newtype
       Description :
         Decode a user defined TLV from a buf.
       Input parameter(s) :
         *pbuf : netwib_buf containing the TLV
       Input/output parameter(s) :
       Output parameter(s) :
         *ptype : type
         *plength : length
         *pvalue : buffer containing the value
         *pskipsize : size to skip this entry
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_tlv_decode_newtype(netwib_constbuf *ptlv,
                                         netwib_tlvtype *ptype,
                                         netwib_uint32 *plength,
                                         netwib_bufext *pvalue,
                                         netwib_uint32 *pskipsize);

    /*-------------------------------------------------------------*/
    /* Name : netwib_tlv_decode_tlv
       Description :
         Decode a TLV from a buf.
       Input parameter(s) :
         *pbuf : netwib_buf containing the TLV
       Input/output parameter(s) :
       Output parameter(s) :
         *pbuf : netwib_buf containing the first entry
         *pskipsize : size to skip this entry
       Normal return values :
         NETWIB_ERR_OK : ok
       This function supports NETWIB_BUF_FLAGS_SENSITIVE.
    */
    netwib_err netwib_tlv_decode_tlv(netwib_constbuf *ptlv,
                                     netwib_bufext *pfirsttlv,
                                     netwib_uint32 *pskipsize);

## main index

## section index