netwib doc_html (version 5.39.0)

## main index

## section index

    /*-------------------------------------------------------------*/
    /***************************************************************
     * A netwib_ip represents an IP address.                       *
     ***************************************************************/

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_ip4_fields
       Description :
         Initialize an netwib_ip address.
       Input parameter(s) :
         a,b,c,d : bytes of the IP address
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set with a.b.c.d
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_init_ip4_fields(netwib_byte a,
                                         netwib_byte b,
                                         netwib_byte c,
                                         netwib_byte d,
                                         netwib_ip *pip);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_ip4
       Description :
         Initialize an netwib_ip address from an netwib_ip4.
       Input parameter(s) :
         ip4 : netwib_ip4 address
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_init_ip4(netwib_ip4 ip4,
                                  netwib_ip *pip);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip4_init_ip
       Description :
         Initialize an netwib_ip4 address from an netwib_ip.
       Input parameter(s) :
         ip : netwib_ip address
       Input/output parameter(s) :
       Output parameter(s) :
         *pip4 : netwib_ip4 set
       Normal return values :
         NETWIB_ERR_OK : ok
         NETWIB_ERR_NOTCONVERTED : the address could not be represented
    */
    netwib_err netwib_ip4_init_ip(netwib_constip *pip,
                                  netwib_ip4 *pip4);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_ip6_fields
       Description :
         Initialize an netwib_ip address.
       Input parameter(s) :
         a,b,c,d : "aaaa:aaaa:bbbb:bbbb:cccc:cccc:dddd:dddd"
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set with "aaaa:aaaa:bbbb:b..."
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_init_ip6_fields(netwib_uint32 a,
                                         netwib_uint32 b,
                                         netwib_uint32 c,
                                         netwib_uint32 d,
                                         netwib_ip *pip);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_ip6
       Description :
         Initialize an netwib_ip address from an netwib_ip6.
       Input parameter(s) :
         ip6 : netwib_ip6 address
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_init_ip6(netwib_constip6 *pip6,
                                  netwib_ip *pip);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip6_init_ip
       Description :
         Initialize an netwib_ip6 address from an netwib_ip.
       Input parameter(s) :
         ip : netwib_ip address
       Input/output parameter(s) :
       Output parameter(s) :
         *pip6 : netwib_ip6 set
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip6_init_ip(netwib_constip *pip,
                                  netwib_ip6 *pip6);

    /*-------------------------------------------------------------*/
    typedef enum {
      NETWIB_IP_DECODETYPE_IP4 = 1, /* "1.2.3.4" only */
      NETWIB_IP_DECODETYPE_IP6,     /* "aaaa:bbbb:..." only */
      NETWIB_IP_DECODETYPE_IP,      /* try IP4 then IP6 */
      NETWIB_IP_DECODETYPE_HN4,     /* server.example.com->IPv4 only */
      NETWIB_IP_DECODETYPE_HN6,     /* server.example.com->IPv4 only */
      NETWIB_IP_DECODETYPE_HN,      /* try HN4 then HN6 */
      NETWIB_IP_DECODETYPE_IP4HN4,  /* if IP4 does not work, use HN4 */
      NETWIB_IP_DECODETYPE_IP6HN6,  /* if IP6 does not work, use HN6 */
      NETWIB_IP_DECODETYPE_IPHN,    /* try IP, then HN */
      NETWIB_IP_DECODETYPE_BEST = NETWIB_IP_DECODETYPE_IPHN  /* best */
    } netwib_ip_decodetype;

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_buf
       Description :
         Convert a string "1.2.3.4", "aaaa:bbbb:..." or a
         hostname to a netwib_ip. To convert a hostname resolving
         to several IP addresses, function netwib_ips_add_buf
         has to be used instead.
       Input parameter(s) :
         *pbuf : string to convert
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set
       Normal return values :
         NETWIB_ERR_OK : ok
         NETWIB_ERR_NOTCONVERTED : the address could not be resolved
    */
    netwib_err netwib_ip_init_buf(netwib_constbuf *pbuf,
                                  netwib_ip_decodetype decodetype,
                                  netwib_ip *pip);
    #define netwib_ip_init_buf_best(pbuf,pip) netwib_ip_init_buf(pbuf,NETWIB_IP_DECODETYPE_BEST,pip)

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_eth
       Description :
         Convert a netwib_eth to a netwib_ip.
       Input parameter(s) :
         eth : netwib_eth to convert
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set with eth value
       Normal return values :
         NETWIB_ERR_OK : ok
         NETWIB_ERR_NOTCONVERTED : the address could not be resolved
       Note :
         This function does not currently support IPv6. It have
         to be finished.
    */
    netwib_err netwib_ip_init_eth(netwib_consteth *peth,
                                  netwib_ip *pip);

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_init_kbd
       Description :
         Initialize an netwib_ip with the address entered by the
         user through the keyboard
       Input parameter(s) :
         message : message to print before
         defaulthn : default hostname or ip address to use if
                     user enters nothing. If NULL, there is no default
       Input/output parameter(s) :
       Output parameter(s) :
         *pip : netwib_ip set with user's string
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_init_kbd(netwib_constbuf *pmessage,
                                  netwib_constbuf *pdefaulthn,
                                  netwib_ip *pip);
    #define NETWIB_IP_INIT_KBD_NODEF NULL

    /*-------------------------------------------------------------*/
    /* Name : netwib_ip_cmp
       Description :
         Compare two netwib_ip.
       Input parameter(s) :
         ip1 : netwib_ip to compare with ip2
         ip2 : netwib_ip to compare with ip1
       Input/output parameter(s) :
       Output parameter(s) :
         *pcmp :
           NETWIB_CMP_LT : ip1<ip2
           NETWIB_CMP_EQ : if ip1 and ip2 are equal
           NETWIB_CMP_GT : ip1>ip2
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_ip_cmp(netwib_constip *pip1,
                             netwib_constip *pip2,
                             netwib_cmp *pcmp);

    /*-------------------------------------------------------------*/
    typedef enum {
      NETWIB_IP_ENCODETYPE_IP = 1,   /* "1.2.3.4" */
      NETWIB_IP_ENCODETYPE_HN,       /* server.example.com */
      NETWIB_IP_ENCODETYPE_HNIP,     /* if HN does not work, use IP */
      NETWIB_IP_ENCODETYPE_HNS,      /* "host1,host2,etc." */
      NETWIB_IP_ENCODETYPE_BEST = NETWIB_IP_ENCODETYPE_HNIP /* best */
    } netwib_ip_encodetype;

    /*-------------------------------------------------------------*/
    /* Name : netwib_buf_append_ip
       Description :
         Append a string representing a netwib_ip.
       Input parameter(s) :
         ip : netwib_ip to append
         encodetype : encodetype to use
       Input/output parameter(s) :
         pbuf : buffer updated
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
         NETWIB_ERR_NOTCONVERTED : the address could not be resolved
    */
    netwib_err netwib_buf_append_ip(netwib_constip *pip,
                                    netwib_ip_encodetype encodetype,
                                    netwib_buf *pbuf);

    /*-------------------------------------------------------------*/
    /* Name : netwib_buf_append_iptype
       Description :
         Obtains the buf string corresponding to a type.
       Input parameter(s) :
         type : type
       Input/output parameter(s) :
       Output parameter(s) :
         *pbuf : netwib_buf set with the buf string
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_buf_append_iptype(netwib_iptype type,
                                        netwib_buf *pbuf);

    /*-------------------------------------------------------------*/
    /* Name : netwib_iptype_init_kbd
       Description :
         Initialize a netwib_iptype with data entered
         through keyboard.
       Input parameter(s) :
         *pmessage : message to print before
         defaulttype : default type to use if user enters
                       nothing (if NETWIB_IPTYPE_UNKNOWN means
                       no default)
       Input/output parameter(s) :
       Output parameter(s) :
         *phwtype : netwib_hwtype initialized
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_iptype_init_kbd(netwib_constbuf *pmessage,
                                      netwib_iptype defaulttype,
                                      netwib_iptype *ptype);
    #define NETWIB_IPTYPE_INIT_KBD_NODEF NETWIB_IPTYPE_UNKNOWN

## main index

## section index