Ignore:
File:
1 edited

Legend:

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

    r1c7ba2d r26de91a  
    3737
    3838#include <stdint.h>
     39#include <net/in.h>
     40#include <net/in6.h>
     41#include <net/socket.h>
     42
     43typedef uint32_t addr32_t;
     44typedef uint8_t addr48_t[6];
     45typedef uint8_t addr128_t[16];
     46
     47typedef enum {
     48        /** Any IP protocol version */
     49        ip_any,
     50        /** IPv4 */
     51        ip_v4,
     52        /** IPv6 */
     53        ip_v6
     54} ip_ver_t;
    3955
    4056/** Node address */
    4157typedef struct {
    42         uint32_t ipv4;
     58        /** IP version */
     59        ip_ver_t version;
     60        union {
     61                addr32_t addr;
     62                addr128_t addr6;
     63        };
    4364} inet_addr_t;
    4465
    4566/** Network address */
    4667typedef struct {
     68        /** IP version */
     69        ip_ver_t version;
     70       
    4771        /** Address */
    48         uint32_t ipv4;
    49         /** Number of valid bits in @c ipv4 */
    50         int bits;
     72        union {
     73                addr32_t addr;
     74                addr128_t addr6;
     75        };
     76       
     77        /** Number of valid bits */
     78        uint8_t prefix;
    5179} inet_naddr_t;
    5280
     81extern const addr32_t addr32_broadcast_all_hosts;
     82extern const addr48_t addr48_broadcast;
     83
     84extern void addr48(const addr48_t, addr48_t);
     85extern void addr128(const addr128_t, addr128_t);
     86
     87extern int addr48_compare(const addr48_t, const addr48_t);
     88extern int addr128_compare(const addr128_t, const addr128_t);
     89
     90extern void addr48_solicited_node(const addr128_t, addr48_t);
     91
     92extern void host2addr128_t_be(const addr128_t, addr128_t);
     93extern void addr128_t_be2host(const addr128_t, addr128_t);
     94
     95extern void inet_addr(inet_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
     96extern void inet_naddr(inet_naddr_t *, uint8_t, uint8_t, uint8_t, uint8_t,
     97    uint8_t);
     98
     99extern void inet_addr6(inet_addr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     100    uint16_t, uint16_t, uint16_t, uint16_t);
     101extern void inet_naddr6(inet_naddr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     102    uint16_t, uint16_t, uint16_t, uint16_t, uint8_t);
     103
     104extern void inet_naddr_addr(const inet_naddr_t *, inet_addr_t *);
     105extern void inet_addr_naddr(const inet_addr_t *, uint8_t, inet_naddr_t *);
     106
     107extern void inet_addr_any(inet_addr_t *);
     108extern void inet_naddr_any(inet_naddr_t *);
     109
     110extern int inet_addr_compare(const inet_addr_t *, const inet_addr_t *);
     111extern int inet_addr_is_any(const inet_addr_t *);
     112
     113extern int inet_naddr_compare(const inet_naddr_t *, const inet_addr_t *);
     114extern int inet_naddr_compare_mask(const inet_naddr_t *, const inet_addr_t *);
     115
     116extern int inet_addr_parse(const char *, inet_addr_t *);
    53117extern 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 **);
     118
     119extern int inet_addr_format(const inet_addr_t *, char **);
     120extern int inet_naddr_format(const inet_naddr_t *, char **);
     121
     122extern ip_ver_t inet_addr_get(const inet_addr_t *, addr32_t *, addr128_t *);
     123extern ip_ver_t inet_naddr_get(const inet_naddr_t *, addr32_t *, addr128_t *,
     124    uint8_t *);
     125
     126extern void inet_addr_set(addr32_t, inet_addr_t *);
     127extern void inet_naddr_set(addr32_t, uint8_t, inet_naddr_t *);
     128extern void inet_sockaddr_in_addr(const sockaddr_in_t *, inet_addr_t *);
     129
     130extern void inet_addr_set6(addr128_t, inet_addr_t *);
     131extern void inet_naddr_set6(addr128_t, uint8_t, inet_naddr_t *);
     132extern void inet_sockaddr_in6_addr(const sockaddr_in6_t *, inet_addr_t *);
     133
     134extern uint16_t inet_addr_sockaddr_in(const inet_addr_t *, sockaddr_in_t *,
     135    sockaddr_in6_t *);
     136
     137extern ip_ver_t ipver_from_af(int af);
     138extern int inet_addr_sockaddr(const inet_addr_t *, uint16_t, sockaddr_t **,
     139    socklen_t *);
    57140
    58141#endif
Note: See TracChangeset for help on using the changeset viewer.