qmsk/net/socket/platform.pxd
author Tero Marttila <terom@fixme.fi>
Sat, 26 Sep 2009 21:51:46 +0300
changeset 53 b2d407968973
parent 27 12468e38227e
permissions -rw-r--r--
experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Platform definitions for... 64-bit linux. They're all the same, right?
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
11
7ae92c2b433f move libc+py back to qmsk.net.x
Tero Marttila <terom@fixme.fi>
parents: 10
diff changeset
     5
from qmsk.net.libc cimport *
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
cdef extern from "arpa/inet.h" :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
    # XXX: correct?!
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
    ctypedef uint32_t socklen_t
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    char* c_inet_ntop "inet_ntop" (int af, void *sockaddr, char *buf, socklen_t len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    int c_inet_pton "inet_pton" (int af, char *src, void *dst)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
# <sys/socket.h>
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
cdef extern from "sys/socket.h" :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    # socket types
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
        SOCK_STREAM
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
        SOCK_DGRAM
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
        SOCK_RAW
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
        SOCK_RDM
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
        SOCK_SEQPACKET
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
        SOCK_PACKET
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
    # packet/address families
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
        PF_UNSPEC
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
        PF_LOCAL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
        PF_UNIX     # same as PF_LOCAL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
        PF_FILE     # same as PF_LOCAL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        PF_INET
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        PF_INET6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        PF_NETLINK
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
        PF_ROUTE    # same as PF_NETLINK
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
    # aliases for PF_*
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        AF_UNSPEC
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
        AF_LOCAL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        AF_UNIX
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
        AF_FILE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        AF_INET
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
        AF_INET6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
        AF_NETLINK
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
        AF_ROUTE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
    
53
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    48
    # option levels for get/setsockopt
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    49
    enum :
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    50
        SOL_SOCKET
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    51
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    52
    # options for get/setsockopt
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    53
    enum :
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    54
        SO_ERROR
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
    55
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    # base sockaddr stuff
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
    ctypedef uint16_t sa_family_t
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    struct sockaddr :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
        sa_family_t     sa_family
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
    struct sockaddr_storage :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
        sa_family_t     ss_family
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
    # flag values
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
        MSG_OOB
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
        MSG_PEEK
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
        MSG_DONTROUTE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
        MSG_CTRUNC
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
        MSG_PROXY
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
        MSG_TRUNC
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
        MSG_DONTWAIT
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
        MSG_EOR
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
        MSG_WAITALL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
        MSG_FIN
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
        MSG_SYN
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
        MSG_CONFIRM
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
        MSG_RST
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
        MSG_ERRQUEUE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
        MSG_NOSIGNAL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        MSG_MORE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
        MSG_CMSG_CLOEXEC
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
    ## send/recv-msg
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    struct msghdr :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
        void *msg_name              # sockaddr
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
        socklen_t msg_namelen
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
        iovec *msg_iov              # message data
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
        size_t msg_iovlen
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
        void *msg_control           # aux data
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
        size_t msg_controllen
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
        int msg_flags               # flags
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
    struct cmsghdr :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
        size_t cmsg_len             # length including this cmsghdr struct
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
        int cmsg_level              # originating protocol (IPPROTO_* ???)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
        int cmsg_type               # protocol-specific type
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
    ## socket-level cmsghdr types
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
        SCM_RIGHTS
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
        SCM_CREDENTIALS
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
    #- ucred
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    # SO_LINGER parameters
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
    struct linger :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
        int l_onoff
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
        int l_linger
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
    ## API
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
    int socket (int domain, int socktype, int protocol)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
    int bind (int fd, sockaddr *addr, socklen_t len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
    int connect (int fd, sockaddr *addr, socklen_t len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
    int listen (int fd, int n)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
    int accept (int fd, sockaddr *addr, socklen_t *len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
    int shutdown (int fd, int how)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
    int getsockname (int fd, sockaddr *addr, socklen_t *len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
    int getpeername (int fd, sockaddr *addr, socklen_t *len)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
    ssize_t send (int fd, void *buf, size_t n, int flags)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
    ssize_t recv (int fd, void *buf, size_t n, int flags)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
    ssize_t sendto (int fd, void *buf, size_t n, int flags, sockaddr *addr, socklen_t addr_len)
14
c44754cc1ffe some recv magic, still no PyString_Resize, though
Tero Marttila <terom@fixme.fi>
parents: 11
diff changeset
   131
    ssize_t recvfrom (int fd, void *buf, size_t n, int flags, sockaddr *addr, socklen_t *addr_len)
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
    ssize_t sendmsg (int fd, msghdr *msg, int flags)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
    ssize_t recvmsg (int fd, msghdr *msg, int flags)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
53
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   135
    int getsockopt (int fd, int level, int optname, void *optval, socklen_t *optlen)
b2d407968973 experimental getsockopt support in socket - for now only SOL_SOCKET/SO_ERROR
Tero Marttila <terom@fixme.fi>
parents: 27
diff changeset
   136
    int setsockopt (int fd, int level, int optname, void *optval, socklen_t *optlen)
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
        SHUT_RD
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   140
        SHUT_WR
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
        SHUT_RDWR
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
cdef extern from "netinet/in.h" :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
    ## socket protocol types
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   146
        IPPROTO_IP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
        IPPROTO_ICMP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
        IPPROTO_IGMP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
        IPPROTO_TCP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
        IPPROTO_UDP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
        IPPROTO_IPV6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
        IPPROTO_ICMPV6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
        IPPROTO_SCTP
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
        IPPROTO_RAW
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
    ## ports
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
    ctypedef uint16_t in_port_t
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
    ## AF_INET
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   161
    ctypedef uint32_t in_addr_t
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
    struct in_addr :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
        in_addr_t s_addr
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
    # XXX: should these be in another cdef?
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
    in_addr_t INADDR_ANY
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
    ## AF_INET6
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
    struct in6_addr :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
        # XXX: check POSIX...
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
        uint8_t s6_addr[16]
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
        uint16_t s6_addr16[8]
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
        uint32_t s6_addr32[4]
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
    # common in6_addr's
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
    in6_addr in6addr_any
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
    in6_addr in6addr_loopback
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
    ## constants
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   180
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
        INET_ADDRSTRLEN
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
        INET6_ADDRSTRLEN
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   183
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
    ## sockaddrs
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
    struct sockaddr_in :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
        sa_family_t     sin_family
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
        in_port_t       sin_port
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   188
        in_addr         sin_addr
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   189
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
    struct sockaddr_in6 :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
        sa_family_t     sin6_family
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   192
        in_port_t       sin6_port
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
        uint32_t        sin6_flowinfo
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   194
        in6_addr        sin6_addr
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   195
        uint32_t        sin6_scope_id
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   196
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
    uint16_t htons(uint16_t)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198
    uint32_t htonl(uint32_t)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   199
    uint16_t ntohs(uint16_t)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   200
    uint32_t ntohl(uint32_t)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   201
27
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   202
cdef extern from "sys/un.h" :
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   203
    enum :
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   204
        UNIX_PATH_MAX
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   205
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   206
    struct sockaddr_un :
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   207
        sa_family_t     sun_family
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   208
        char            sun_path[UNIX_PATH_MAX]
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   209
    
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   210
    # actually a macro
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   211
    # sockaddr_un -> size_t actual length of the sockaddr
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   212
    size_t SUN_LEN (sockaddr_un *sa)
12468e38227e [socket] add sockaddr_un (still dysfunctional\!) + doc fixes
Tero Marttila <terom@fixme.fi>
parents: 14
diff changeset
   213
10
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   214
cdef extern from "netdb.h" :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   215
    ## getaddrinfo
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   216
    struct addrinfo :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   217
        int         ai_flags
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   218
        int         ai_family
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   219
        int         ai_socktype
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   220
        int         ai_protocol
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   221
        int         ai_addrlen
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   222
        sockaddr   *ai_addr
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   223
        char       *ai_canonname
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   224
        addrinfo   *ai_next
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   225
    
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   226
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   227
        AI_PASSIVE
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   228
        AI_CANONNAME
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   229
        AI_NUMERICHOST
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   230
        AI_V4MAPPED
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   231
        AI_ALL
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   232
        AI_ADDRCONFIG
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   233
        # AI_*IDN*
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   234
        AI_NUMERICSERV
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   235
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   236
    int c_getaddrinfo "getaddrinfo" (
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   237
            char *node, char *service, 
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   238
            addrinfo *hints, addrinfo **res
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   239
    )
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   240
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   241
    void c_freeaddrinfo "freeaddrinfo" (addrinfo *res)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   242
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   243
    ## getnameinfo
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   244
    int c_getnameinfo "getnameinfo" (
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   245
            sockaddr *sa, socklen_t salen, 
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   246
            char *host, size_t hostlen, 
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   247
            char *serv, size_t servlen, 
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   248
            int flags
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   249
    )
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   250
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   251
    enum :
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   252
        NI_NOFQDN
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   253
        NI_NUMERICHOST
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   254
        NI_NAMEREQD
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   255
        NI_NUMERICSERV
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   256
        NI_DGRAM
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   257
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   258
        NI_MAXHOST
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   259
        NI_MAXSERV
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   260
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   261
    char* gai_strerror (int err)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   262
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   263
# python-friendly wrapper around inet_ntop
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   264
cdef object inet_ntop (int af, void *sockaddr)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   265
cdef object inet_pton (int af, char *addr, void *sockaddr_out)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   266
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   267
# sockaddr, flags -> (host, service)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   268
cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags)
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   269
94b0d5a208c1 split up socket.platform
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   270