Download Reference Manual
The Developer's Library for D
About Wiki Forums Source Search Contact

Changeset 3098

Show
Ignore:
Timestamp:
01/15/08 14:50:57 (11 months ago)
Author:
sean
Message:

Added darwin socket defs. This closes #702.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/tango/stdc/posix/arpa/inet.d

    r2809 r3098  
    4646    struct in_addr 
    4747    { 
    48         in_addr_t s_addr;; 
     48        in_addr_t s_addr; 
    4949    } 
    5050 
     
    6363else version( darwin ) 
    6464{ 
     65    alias uint16_t in_port_t; // TODO: verify 
     66    alias uint32_t in_addr_t; // TODO: verify 
    6567 
     68    struct in_addr 
     69    { 
     70        in_addr_t s_addr; 
     71    } 
     72 
     73    const INET_ADDRSTRLEN = 16; 
     74 
     75    uint32_t htonl(uint32_t); 
     76    uint16_t htons(uint16_t); 
     77    uint32_t ntohl(uint32_t); 
     78    uint16_t ntohs(uint16_t); 
     79 
     80    in_addr_t inet_addr(char*); 
     81    char*     inet_ntoa(in_addr); 
     82    char*     inet_ntop(int, void*, char*, socklen_t); 
     83    int       inet_pton(int, char*, void*); 
    6684} 
    6785 
     
    8098else version( darwin ) 
    8199{ 
    82  
     100    const INET6_ADDRSTRLEN = 46; 
    83101} 
  • trunk/tango/stdc/posix/net/if_.d

    r2809 r3098  
    4848else version( darwin ) 
    4949{ 
     50    struct if_nameindex_t 
     51    { 
     52        uint    if_index; 
     53        char*   if_name; 
     54    } 
    5055 
     56    const IF_NAMESIZE = 16; 
     57 
     58    uint            if_nametoindex(char*); 
     59    char*           if_indextoname(uint, char*); 
     60    if_nameindex_t* if_nameindex(); 
     61    void            if_freenameindex(if_nameindex_t*); 
    5162} 
  • trunk/tango/stdc/posix/netinet/in_.d

    r2809 r3098  
    1212public import tango.stdc.inttypes : uint32_t, uint16_t; 
    1313public import tango.stdc.posix.arpa.inet; 
     14public import tango.stdc.posix.sys.socket; // for sa_family_t 
    1415 
    1516extern (C): 
     
    2526in_addr_t 
    2627 
    27 sa_family_t 
    28 uint8_t  // from tango.stdc.inttypes 
    29 uint32_t // from tango.stdc.inttypes 
     28sa_family_t // from tango.stdc.posix.sys.socket 
     29uint8_t     // from tango.stdc.inttypes 
     30uint32_t    // from tango.stdc.inttypes 
    3031 
    3132struct in_addr 
     
    5960version( linux ) 
    6061{ 
    61     alias ushort sa_family_t; 
    62  
    6362    private const __SOCK_SIZE__ = 16; 
    6463 
     
    8281    } 
    8382 
    84     const c_ulong INADDR_ANY        = 0x00000000; 
    85     const c_ulong INADDR_BROADCAST = 0xffffffff; 
     83    const uint INADDR_ANY       = 0x00000000; 
     84    const uint INADDR_BROADCAST = 0xffffffff; 
    8685} 
    8786else version( darwin ) 
    8887{ 
     88    private const __SOCK_SIZE__ = 16; 
    8989 
     90    struct sockaddr_in 
     91    { 
     92        ubyte       sin_len; 
     93        sa_family_t sin_family; 
     94        in_port_t   sin_port; 
     95        in_addr     sin_addr; 
     96        ubyte[8]    sin_zero; 
     97    } 
     98 
     99    enum 
     100    { 
     101        IPPROTO_IP   = 0, 
     102        IPPROTO_ICMP = 1, 
     103        IPPROTO_TCP  = 6, 
     104        IPPROTO_UDP  = 17 
     105    } 
     106 
     107    const uint INADDR_ANY       = 0x00000000; 
     108    const uint INADDR_BROADCAST = 0xffffffff; 
    90109} 
    91110 
  • trunk/tango/stdc/posix/netinet/tcp.d

    r2809 r3098  
    2626else version( darwin ) 
    2727{ 
    28  
     28    const TCP_NODELAY = 1; 
    2929} 
  • trunk/tango/stdc/posix/sys/socket.d

    r2864 r3098  
    152152    struct msghdr 
    153153    { 
    154         void*         msg_name; 
    155         socklen_t     msg_namelen; 
    156         iovec*        msg_iov; 
    157         size_t        msg_iovlen; 
    158         void*         msg_control; 
    159         size_t        msg_controllen; 
    160         int           msg_flags; 
     154        void*     msg_name; 
     155        socklen_t msg_namelen; 
     156        iovec*    msg_iov; 
     157        size_t    msg_iovlen; 
     158        void*     msg_control; 
     159        size_t    msg_controllen; 
     160        int       msg_flags; 
    161161    } 
    162162 
     
    286286{ 
    287287    alias uint   socklen_t; 
     288    alias ubyte  sa_family_t; 
     289 
     290    struct sockaddr 
     291    { 
     292        ubyte       sa_len; 
     293        sa_family_t sa_family; 
     294        byte[14]    sa_data; 
     295    } 
     296 
     297    private enum : size_t 
     298    { 
     299        _SS_PAD1    = long.sizeof - ubyte.sizeof - sa_family_t.sizeof, 
     300        _SS_PAD2    = 128 - ubyte.sizeof - sa_family_t.sizeof - _SS_PAD1 - long.sizeof 
     301    } 
     302 
     303    struct sockaddr_storage 
     304    { 
     305         ubyte          ss_len; 
     306         sa_family_t    ss_family; 
     307         byte[_SS_PAD1] __ss_pad1; 
     308         long           __ss_align; 
     309         byte[_SS_PAD2] __ss_pad2; 
     310    } 
     311 
     312    struct msghdr 
     313    { 
     314        void*     msg_name; 
     315        socklen_t msg_namelen; 
     316        iovec*    msg_iov; 
     317        int       msg_iovlen; 
     318        void*     msg_control; 
     319        socklen_t msg_controllen; 
     320        int       msg_flags; 
     321    } 
     322 
     323    struct cmsghdr 
     324    { 
     325         socklen_t cmsg_len; 
     326         int       cmsg_level; 
     327         int       cmsg_type; 
     328    } 
     329 
     330    enum : uint 
     331    { 
     332        SCM_RIGHTS = 0x01 
     333    } 
     334 
     335    /+ 
     336    CMSG_DATA(cmsg)     ((unsigned char *)(cmsg) + \ 
     337                         ALIGN(sizeof(struct cmsghdr))) 
     338    CMSG_NXTHDR(mhdr, cmsg) \ 
     339                        (((unsigned char *)(cmsg) + ALIGN((cmsg)->cmsg_len) + \ 
     340                         ALIGN(sizeof(struct cmsghdr)) > \ 
     341                         (unsigned char *)(mhdr)->msg_control +(mhdr)->msg_controllen) ? \ 
     342                         (struct cmsghdr *)0 /* NULL */ : \ 
     343                         (struct cmsghdr *)((unsigned char *)(cmsg) + ALIGN((cmsg)->cmsg_len))) 
     344    CMSG_FIRSTHDR(mhdr) ((struct cmsghdr *)(mhdr)->msg_control) 
     345    +/ 
     346 
     347    struct linger 
     348    { 
     349        int l_onoff; 
     350        int l_linger; 
     351    } 
     352 
     353    enum 
     354    { 
     355        SOCK_DGRAM      = 2, 
     356        SOCK_SEQPACKET  = 5, 
     357        SOCK_STREAM     = 1 
     358    } 
     359 
     360    enum : uint 
     361    { 
     362        SOL_SOCKET      = 0xffff 
     363    } 
     364 
     365    enum : uint 
     366    { 
     367        SO_ACCEPTCONN   = 0x0002, 
     368        SO_BROADCAST    = 0x0020, 
     369        SO_DEBUG        = 0x0001, 
     370        SO_DONTROUTE    = 0x0010, 
     371        SO_ERROR        = 0x1007, 
     372        SO_KEEPALIVE    = 0x0008, 
     373        SO_LINGER       = 0x1080, 
     374        SO_OOBINLINE    = 0x0100, 
     375        SO_RCVBUF       = 0x1002, 
     376        SO_RCVLOWAT     = 0x1004, 
     377        SO_RCVTIMEO     = 0x1006, 
     378        SO_REUSEADDR    = 0x1006, 
     379        SO_SNDBUF       = 0x1001, 
     380        SO_SNDLOWAT     = 0x1003, 
     381        SO_SNDTIMEO     = 0x1005, 
     382        SO_TYPE         = 0x1008 
     383    } 
     384 
     385    enum 
     386    { 
     387        SOMAXCONN       = 128 
     388    } 
     389 
     390    enum : uint 
     391    { 
     392        MSG_CTRUNC      = 0x20, 
     393        MSG_DONTROUTE   = 0x4, 
     394        MSG_EOR         = 0x8, 
     395        MSG_OOB         = 0x1, 
     396        MSG_PEEK        = 0x2, 
     397        MSG_TRUNC       = 0x10, 
     398        MSG_WAITALL     = 0x40 
     399    } 
     400 
     401    enum 
     402    { 
     403        AF_INET         = 2, 
     404        AF_UNIX         = 1, 
     405        AF_UNSPEC       = 0 
     406    } 
     407 
     408    enum 
     409    { 
     410        SHUT_RD, 
     411        SHUT_WR, 
     412        SHUT_RDWR 
     413    } 
     414 
     415    int     accept(int, sockaddr*, socklen_t*); 
     416    int     bind(int, sockaddr*, socklen_t); 
     417    int     connect(int, sockaddr*, socklen_t); 
     418    int     getpeername(int, sockaddr*, socklen_t*); 
     419    int     getsockname(int, sockaddr*, socklen_t*); 
     420    int     getsockopt(int, int, int, void*, socklen_t*); 
     421    int     listen(int, int); 
     422    ssize_t recv(int, void*, size_t, int); 
     423    ssize_t recvfrom(int, void*, size_t, int, sockaddr*, socklen_t*); 
     424    ssize_t recvmsg(int, msghdr*, int); 
     425    ssize_t send(int, void*, size_t, int); 
     426    ssize_t sendmsg(int, msghdr*, int); 
     427    ssize_t sendto(int, void*, size_t, int, sockaddr*, socklen_t); 
     428    int     setsockopt(int, int, int, void*, socklen_t); 
     429    int     shutdown(int, int); 
     430    int     socket(int, int, int); 
     431    int     sockatmark(int); 
     432    int     socketpair(int, int, int, int[2]); 
    288433} 
    289434 
     
    302447    } 
    303448} 
     449else version( darwin ) 
     450{ 
     451    enum 
     452    { 
     453        AF_INET6    = 30 
     454    } 
     455} 
    304456 
    305457// 
     
    317469    } 
    318470} 
     471else version( darwin ) 
     472{ 
     473    enum 
     474    { 
     475        SOCK_RAW    = 3 
     476    } 
     477} 
  • trunk/tango/stdc/posix/sys/uio.d

    r2809 r3098  
    4242    ssize_t writev(int, iovec*, int); 
    4343} 
     44else version( darwin ) 
     45{ 
     46    struct iovec 
     47    { 
     48        void*  iov_base; 
     49        size_t iov_len; 
     50    } 
     51 
     52    ssize_t readv(int, iovec*, int); 
     53    ssize_t writev(int, iovec*, int); 
     54}