Changeset 02a09ed in mainline for uspace/lib/c/include/inet


Ignore:
Timestamp:
2013-06-28T20:20:03Z (12 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1d24ad3
Parents:
edf0d27
Message:

add basic infrastructure for IPv6 (inactive)
make inet_addr_t a universal address type

Location:
uspace/lib/c/include/inet
Files:
3 edited

Legend:

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

    redf0d27 r02a09ed  
    3838#include <stdint.h>
    3939#include <net/in.h>
     40#include <net/in6.h>
    4041
    41 #define INET_ADDR_SIZE  16
     42typedef uint32_t addr32_t;
     43typedef uint8_t addr48_t[6];
     44typedef uint8_t addr128_t[16];
    4245
    4346/** Node address */
    4447typedef struct {
    4548        uint16_t family;
    46         uint8_t addr[INET_ADDR_SIZE];
     49        union {
     50                addr32_t addr;
     51                addr128_t addr6;
     52        };
    4753} inet_addr_t;
    4854
     
    5359       
    5460        /** Address */
    55         uint8_t addr[INET_ADDR_SIZE];
     61        union {
     62                addr32_t addr;
     63                addr128_t addr6;
     64        };
    5665       
    5766        /** Number of valid bits */
     
    5968} inet_naddr_t;
    6069
    61 extern int inet_addr_family(const char *, uint16_t *);
     70extern const addr48_t addr48_broadcast;
    6271
    63 extern int inet_addr_parse(const char *, inet_addr_t *);
    64 extern int inet_naddr_parse(const char *, inet_naddr_t *);
     72extern void addr48(const addr48_t, addr48_t);
     73extern void addr128(const addr128_t, addr128_t);
    6574
    66 extern int inet_addr_format(inet_addr_t *, char **);
    67 extern int inet_naddr_format(inet_naddr_t *, char **);
    68 
    69 extern int inet_addr_pack(inet_addr_t *, uint32_t *);
    70 extern int inet_naddr_pack(inet_naddr_t *, uint32_t *, uint8_t *);
    71 
    72 extern void inet_addr_unpack(uint32_t, inet_addr_t *);
    73 extern void inet_naddr_unpack(uint32_t, uint8_t, inet_naddr_t *);
    74 
    75 extern int inet_addr_sockaddr_in(inet_addr_t *, sockaddr_in_t *);
    76 extern void inet_naddr_addr(inet_naddr_t *, inet_addr_t *);
     75extern void host2addr128_t_be(const addr128_t, addr128_t);
     76extern void addr128_t_be2host(const addr128_t, addr128_t);
    7777
    7878extern void inet_addr(inet_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
     
    8080    uint8_t);
    8181
     82extern void inet_addr6(inet_addr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     83    uint16_t, uint16_t, uint16_t, uint16_t);
     84extern void inet_naddr6(inet_naddr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
     85    uint16_t, uint16_t, uint16_t, uint16_t, uint8_t);
     86
     87extern int inet_addr_family(const char *, uint16_t *);
     88extern void inet_naddr_addr(const inet_naddr_t *, inet_addr_t *);
     89
    8290extern void inet_addr_any(inet_addr_t *);
    8391extern void inet_naddr_any(inet_naddr_t *);
    8492
    85 extern int inet_addr_compare(inet_addr_t *, inet_addr_t *);
    86 extern int inet_addr_is_any(inet_addr_t *);
     93extern int inet_addr_compare(const inet_addr_t *, const inet_addr_t *);
     94extern int inet_addr_is_any(const inet_addr_t *);
     95
     96extern int inet_naddr_compare_mask(const inet_naddr_t *, const inet_addr_t *);
     97
     98extern int inet_addr_parse(const char *, inet_addr_t *);
     99extern int inet_naddr_parse(const char *, inet_naddr_t *);
     100
     101extern int inet_addr_format(const inet_addr_t *, char **);
     102extern int inet_naddr_format(const inet_naddr_t *, char **);
     103
     104extern uint16_t inet_addr_get(const inet_addr_t *, addr32_t *, addr128_t *);
     105extern uint16_t inet_naddr_get(const inet_naddr_t *, addr32_t *, addr128_t *,
     106    uint8_t *);
     107
     108extern void inet_addr_set(addr32_t, inet_addr_t *);
     109extern void inet_naddr_set(addr32_t, uint8_t, inet_naddr_t *);
     110extern void inet_sockaddr_in_addr(const sockaddr_in_t *, inet_addr_t *);
     111
     112extern void inet_addr_set6(addr128_t, inet_addr_t *);
     113extern void inet_naddr_set6(addr128_t, uint8_t, inet_naddr_t *);
     114extern void inet_sockaddr_in6_addr(const sockaddr_in6_t *, inet_addr_t *);
     115
     116extern uint16_t inet_addr_sockaddr_in(const inet_addr_t *, sockaddr_in_t *,
     117    sockaddr_in6_t *);
    87118
    88119#endif
  • uspace/lib/c/include/inet/iplink.h

    redf0d27 r02a09ed  
    4747} iplink_t;
    4848
    49 /** IPv4 link Service Data Unit */
     49/** Internet link Service Data Unit */
    5050typedef struct {
    5151        /** Local source address */
    52         uint32_t lsrc;
     52        inet_addr_t src;
    5353        /** Local destination address */
    54         uint32_t ldest;
     54        inet_addr_t dest;
    5555        /** Serialized IP packet */
    5656        void *data;
     
    5959} iplink_sdu_t;
    6060
    61 /** IPv6 link Service Data Unit */
     61/** Internet link receive Service Data Unit */
    6262typedef struct {
    63         /** Target MAC address */
    64         uint64_t hwaddr;
    65         /** Serialized IP packet */
     63        /** Serialized datagram */
    6664        void *data;
    6765        /** Size of @c data in bytes */
    6866        size_t size;
    69 } iplink_sdu6_t;
     67} iplink_recv_sdu_t;
    7068
    7169typedef struct iplink_ev_ops {
    72         int (*recv)(iplink_t *, iplink_sdu_t *);
     70        int (*recv)(iplink_t *, iplink_recv_sdu_t *, uint16_t);
    7371} iplink_ev_ops_t;
    7472
  • uspace/lib/c/include/inet/iplink_srv.h

    redf0d27 r02a09ed  
    4040#include <stdbool.h>
    4141#include <sys/types.h>
     42#include <inet/addr.h>
     43#include <inet/iplink.h>
    4244
    4345struct iplink_ops;
     
    5153} iplink_srv_t;
    5254
    53 /** IP link Service Data Unit */
    54 typedef struct {
    55         /** Local source address */
    56         uint32_t lsrc;
    57         /** Local destination address */
    58         uint32_t ldest;
    59         /** Serialized IP packet */
    60         void *data;
    61         /** Size of @c data in bytes */
    62         size_t size;
    63 } iplink_srv_sdu_t;
    64 
    6555typedef struct iplink_ops {
    6656        int (*open)(iplink_srv_t *);
    6757        int (*close)(iplink_srv_t *);
    68         int (*send)(iplink_srv_t *, iplink_srv_sdu_t *);
     58        int (*send)(iplink_srv_t *, iplink_sdu_t *);
    6959        int (*get_mtu)(iplink_srv_t *, size_t *);
    70         int (*addr_add)(iplink_srv_t *, uint32_t);
    71         int (*addr_remove)(iplink_srv_t *, uint32_t);
     60        int (*addr_add)(iplink_srv_t *, inet_addr_t *);
     61        int (*addr_remove)(iplink_srv_t *, inet_addr_t *);
    7262} iplink_ops_t;
    7363
     
    7565
    7666extern int iplink_conn(ipc_callid_t, ipc_call_t *, void *);
    77 extern int iplink_ev_recv(iplink_srv_t *, iplink_srv_sdu_t *);
     67extern int iplink_ev_recv(iplink_srv_t *, iplink_recv_sdu_t *, uint16_t);
    7868
    7969#endif
Note: See TracChangeset for help on using the changeset viewer.