inc/libc.pxd
author Tero Marttila <terom@fixme.fi>
Sun, 16 Aug 2009 03:12:46 +0300
changeset 1 0ca9278146d7
parent 0 libc.pxd@975801b28d85
child 2 171e77f8d675
permissions -rw-r--r--
move pxd's to inc dir, split off sctp.pxd
0
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    Libc stuff
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
cdef extern from "stdint.h":
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
    # yes, these are "wrong"
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
    ctypedef unsigned char uint8_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
    ctypedef unsigned short uint16_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
    ctypedef unsigned int uint32_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    ctypedef signed char int8_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
    ctypedef signed short int16_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    ctypedef signed int int32_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
# <linux/types.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
cdef extern from "linux/types.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
    ctypedef uint8_t __u8
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    ctypedef uint16_t __u16
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    ctypedef uint32_t __u32
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    ctypedef int8_t __s8
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    ctypedef int16_t __s16
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    ctypedef int32_t __s32
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
cdef extern from "alloca.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    void* alloca (size_t size)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
# <sys/socket.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
cdef extern from "sys/socket.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
        SOCK_STREAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
        SOCK_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
        SOCK_SEQPACKET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
        PF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
        PF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
        PF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        PF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
    # these are #defines
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        PF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
        AF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
        AF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
        AF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
        AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
        AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
    ctypedef uint16_t sa_family_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
    ctypedef uint16_t in_port_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
    ctypedef uint32_t in_addr_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
    ## AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
    struct in_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        in_addr_t s_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    struct sockaddr_in :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
        sa_family_t     sin_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
        in_port_t       sin_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
        in_addr         sin_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
    # XXX: should these be in another cdef?
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
    in_addr_t INADDR_ANY
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
    ## AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
    struct in6_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
        pass
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
    struct sockaddr_in6 :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
        sa_family_t     sin6_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
        in_port_t       sin6_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
        uint32_t        sin6_flowinfo
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
        in6_addr        sin6_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
        uint32_t        sin6_scope_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
    # common in6_addr's
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
    in6_addr in6addr_any
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
    in6_addr in6addr_loopback
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
    ## actually from bits/socket.h...
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
    struct sockaddr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
        sa_family_t     sa_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    struct sockaddr_storage :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
        sa_family_t     ss_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
cdef extern from "arpa/inet.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
    uint16_t htons(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
    uint32_t htonl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
    uint16_t ntohs(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
    uint32_t ntohl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
    # XXX: correct?!
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
    ctypedef size_t socklen_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
    ## constants
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
        INET_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
        INET6_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    char* c_inet_ntop "inet_ntop" (int af, void *sockaddr, char *buf, socklen_t len)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
    int c_inet_pton "inet_pton" (int af, char *src, void *dst)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
cdef extern from "netdb.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
    int c_getnameinfo "getnameinfo" (
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
            sockaddr *sa, socklen_t salen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
            char *host, size_t hostlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
            char *serv, size_t servlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
            int flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
    )
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
        NI_NOFQDN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
        NI_NUMERICHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
        NI_NAMEREQD
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
        NI_NUMERICSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
        NI_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
        NI_MAXHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
        NI_MAXSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
    char* gai_strerror (int err)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
# python-friendly wrapper around inet_ntop
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
cdef object inet_ntop (int af, void *sockaddr)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
cdef object inet_pton (int af, char *addr, void *sockaddr_out)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
# sockaddr, flags -> (host, service)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags)