Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/include/inet/addr.h

    r1c7ba2da r83781a22  
    3737
    3838#include <stdint.h>
     39#include <net/in.h>
     40#include <net/in6.h>
     41
     42typedef uint32_t addr32_t;
     43typedef uint8_t addr48_t[6];
     44typedef uint8_t addr128_t[16];
    3945
    4046/** Node address */
    4147typedef struct {
    42         uint32_t ipv4;
     48        uint16_t family;
     49        union {
     50                addr32_t addr;
     51                addr128_t addr6;
     52        };
    4353} inet_addr_t;
    4454
    4555/** Network address */
    4656typedef struct {
     57        /** Address family */
     58        uint16_t family;
     59       
    4760        /** Address */
    48         uint32_t ipv4;
    49         /** Number of valid bits in @c ipv4 */
    50         int bits;
     61        union {
     62                addr32_t addr;
     63                addr128_t addr6;
     64        };
     65       
     66        /** Number of valid bits */
     67        uint8_t prefix;
    5168} inet_naddr_t;
    5269
     70extern const addr48_t addr48_broadcast;
     71
     72extern void addr48(const addr48_t, addr48_t);
     73extern void addr128(const addr128_t, addr128_t);
     74
     75extern int addr48_compare(const addr48_t, const addr48_t);
     76extern int addr128_compare(const addr128_t, const addr128_t);
     77
     78extern void addr48_solicited_node(const addr128_t, addr48_t);
     79
     80extern void host2addr128_t_be(const addr128_t, addr128_t);
     81extern void addr128_t_be2host(const addr128_t, addr128_t);
     82
     83extern void inet_addr(inet_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
     84extern void inet_naddr(inet_naddr_t *, uint8_t, uint8_t, uint8_t, uint8_t,
     85    uint8_t);
     86
     87extern void inet_addr6(inet_addr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     88    uint16_t, uint16_t, uint16_t, uint16_t);
     89extern void inet_naddr6(inet_naddr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     90    uint16_t, uint16_t, uint16_t, uint16_t, uint8_t);
     91
     92extern int inet_addr_family(const char *, uint16_t *);
     93extern void inet_naddr_addr(const inet_naddr_t *, inet_addr_t *);
     94extern void inet_addr_naddr(const inet_addr_t *, uint8_t, inet_naddr_t *);
     95
     96extern void inet_addr_any(inet_addr_t *);
     97extern void inet_naddr_any(inet_naddr_t *);
     98
     99extern int inet_addr_compare(const inet_addr_t *, const inet_addr_t *);
     100extern int inet_addr_is_any(const inet_addr_t *);
     101
     102extern int inet_naddr_compare(const inet_naddr_t *, const inet_addr_t *);
     103extern int inet_naddr_compare_mask(const inet_naddr_t *, const inet_addr_t *);
     104
     105extern int inet_addr_parse(const char *, inet_addr_t *);
    53106extern int inet_naddr_parse(const char *, inet_naddr_t *);
    54 extern int inet_addr_parse(const char *, inet_addr_t *);
    55 extern int inet_naddr_format(inet_naddr_t *, char **);
    56 extern int inet_addr_format(inet_addr_t *, char **);
     107
     108extern int inet_addr_format(const inet_addr_t *, char **);
     109extern int inet_naddr_format(const inet_naddr_t *, char **);
     110
     111extern uint16_t inet_addr_get(const inet_addr_t *, addr32_t *, addr128_t *);
     112extern uint16_t inet_naddr_get(const inet_naddr_t *, addr32_t *, addr128_t *,
     113    uint8_t *);
     114
     115extern void inet_addr_set(addr32_t, inet_addr_t *);
     116extern void inet_naddr_set(addr32_t, uint8_t, inet_naddr_t *);
     117extern void inet_sockaddr_in_addr(const sockaddr_in_t *, inet_addr_t *);
     118
     119extern void inet_addr_set6(addr128_t, inet_addr_t *);
     120extern void inet_naddr_set6(addr128_t, uint8_t, inet_naddr_t *);
     121extern void inet_sockaddr_in6_addr(const sockaddr_in6_t *, inet_addr_t *);
     122
     123extern uint16_t inet_addr_sockaddr_in(const inet_addr_t *, sockaddr_in_t *,
     124    sockaddr_in6_t *);
    57125
    58126#endif
Note: See TracChangeset for help on using the changeset viewer.