netwib doc_html (version 5.39.0)

## main index

## section index

    /*-------------------------------------------------------------*/
    /***************************************************************
     * Following functions work on extension headers of IPv6.      *
     ***************************************************************/

    /*-------------------------------------------------------------*/
    /* IPv6 Hop-by-Hop Options extension header */
    typedef struct {
      netwib_bufext options;
    } netwib_ip6ext_hopopts;
    typedef const netwib_ip6ext_hopopts netwib_constip6ext_hopopts;

    /*-------------------------------------------------------------*/
    /* IPv6 Destination Options extension header */
    typedef struct {
      netwib_bufext options;
    } netwib_ip6ext_dstopts;
    typedef const netwib_ip6ext_dstopts netwib_constip6ext_dstopts;

    /*-------------------------------------------------------------*/
    /* IPv6 Routing extension header */
    typedef struct {
      netwib_uint8 routingtype;
      netwib_uint8 segmentsleft;
      netwib_bufext data;
    } netwib_ip6ext_routing;
    typedef const netwib_ip6ext_routing netwib_constip6ext_routing;

    /*-------------------------------------------------------------*/
    /* IPv6 Fragment extension header */
    typedef struct {
      netwib_uint16 fragmentoffset;
      netwib_bool reservedb1;
      netwib_bool reservedb2;
      netwib_bool morefrag;
      netwib_uint32 id;
    } netwib_ip6ext_fragment;
    typedef const netwib_ip6ext_fragment netwib_constip6ext_fragment;

    /*-------------------------------------------------------------*/
    /* IPv6 Authentication Header extension header (rfc 2402) */
    typedef struct {
      netwib_uint16 reserved;
      netwib_uint32 spi;
      netwib_uint32 seqnum;
      netwib_bufext data;
    } netwib_ip6ext_ah;
    typedef const netwib_ip6ext_ah netwib_constip6ext_ah;

    /*-------------------------------------------------------------*/
    /* Generic IPv6 extension header */
    typedef struct {
      netwib_ipproto proto;
      union {
        netwib_ip6ext_hopopts hopopts;
        netwib_ip6ext_dstopts dstopts;
        netwib_ip6ext_routing routing;
        netwib_ip6ext_fragment fragment;
        netwib_ip6ext_ah ah;
      } ext;
      netwib_ipproto nextproto;
    } netwib_ip6ext;
    typedef const netwib_ip6ext netwib_constip6ext;

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip6ext_initdefault
       Description :
         Initialize a netwib_ip6ext with default values.
       Input parameter(s) :
       Input/output parameter(s) :
       Output parameter(s) :
         *pip6ext : netwib_ip6ext to initialize
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip6ext_initdefault(netwib_ipproto proto,
                                         netwib_ip6ext *pip6ext);

    /*-------------------------------------------------------------*/
    /* Name : netwib_pkt_append_ip6ext
       Description :
         Initialize physical data from a netwib_ip6ext.
       Input parameter(s) :
         ip6ext : netwib_ip6ext
       Input/output parameter(s) :
         *ppht : buffer to initialize
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_pkt_append_ip6ext(netwib_constip6ext *pip6ext,
                                        netwib_buf *ppkt);
    netwib_err netwib_pkt_prepend_ip6ext(netwib_constip6ext *pip6ext,
                                         netwib_buf *ppkt);

    /*-------------------------------------------------------------*/
    /* Name : netwib_pkt_decode_ip6ext
       Description :
         Decode a netwib_ip6ext from data coming from wire.
       Input parameter(s) :
         pktproto : protocol of the netwib_ip6ext in ppkt
         *ppkt : buffer containing physical data
       Input/output parameter(s) :
       Output parameter(s) :
         *pip6ext : netwib_ip6ext to initialize
         *pskipsize : size to skip this header
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_pkt_decode_ip6ext(netwib_ipproto pktproto,
                                        netwib_constbuf *ppkt,
                                        netwib_ip6ext *pip6ext,
                                        netwib_uint32 *pskipsize);

## main index

## section index