libc.pxd
author Tero Marttila <terom@fixme.fi>
Sun, 16 Aug 2009 04:15:07 +0300
changeset 4 664a1dfe08ac
parent 3 bbad9790b786
child 5 59bed837c265
permissions -rw-r--r--
moar fixes
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
4
664a1dfe08ac moar fixes
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    25
cdef extern from "errno.h" :
664a1dfe08ac moar fixes
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    26
    int errno
664a1dfe08ac moar fixes
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    27
    
2
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    28
cdef extern from "string.h" :
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    29
    void* memcpy (void *dest, void *src, size_t n)
171e77f8d675 re-implement sctp_bindx using new sock_addr
Tero Marttila <terom@fixme.fi>
parents: 1
diff changeset
    30
4
664a1dfe08ac moar fixes
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    31
    char* strerror (int errno)
664a1dfe08ac moar fixes
Tero Marttila <terom@fixme.fi>
parents: 3
diff changeset
    32
0
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
cdef extern from "alloca.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    void* alloca (size_t size)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
# <sys/socket.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
cdef extern from "sys/socket.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
        SOCK_STREAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
        SOCK_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
        SOCK_SEQPACKET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
        PF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
        PF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
        PF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
        PF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
    # these are #defines
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
        PF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
        AF_UNSPEC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
        AF_LOCAL
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
        AF_UNIX
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
        AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    ctypedef uint16_t sa_family_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    ctypedef uint16_t in_port_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
    ctypedef uint32_t in_addr_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
    ## AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
    struct in_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
        in_addr_t s_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
    struct sockaddr_in :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
        sa_family_t     sin_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
        in_port_t       sin_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
        in_addr         sin_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
    # XXX: should these be in another cdef?
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
    in_addr_t INADDR_ANY
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
    ## AF_INET6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
    struct in6_addr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
        pass
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
    struct sockaddr_in6 :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
        sa_family_t     sin6_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
        in_port_t       sin6_port
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        uint32_t        sin6_flowinfo
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
        in6_addr        sin6_addr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
        uint32_t        sin6_scope_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    # common in6_addr's
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
    in6_addr in6addr_any
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
    in6_addr in6addr_loopback
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
    ## actually from bits/socket.h...
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
    struct sockaddr :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
        sa_family_t     sa_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
    struct sockaddr_storage :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
        sa_family_t     ss_family
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
cdef extern from "arpa/inet.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
    uint16_t htons(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
    uint32_t htonl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
    uint16_t ntohs(uint16_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
    uint32_t ntohl(uint32_t)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    # XXX: correct?!
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
    ctypedef size_t socklen_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
    ## constants
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
        INET_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
        INET6_ADDRSTRLEN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
    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
   112
    int c_inet_pton "inet_pton" (int af, char *src, void *dst)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
cdef extern from "netdb.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
    int c_getnameinfo "getnameinfo" (
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
            sockaddr *sa, socklen_t salen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
            char *host, size_t hostlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
            char *serv, size_t servlen, 
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
            int flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
    )
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
        NI_NOFQDN
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
        NI_NUMERICHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
        NI_NAMEREQD
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
        NI_NUMERICSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
        NI_DGRAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
        NI_MAXHOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
        NI_MAXSERV
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
    char* gai_strerror (int err)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
# python-friendly wrapper around inet_ntop
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
cdef object inet_ntop (int af, void *sockaddr)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
cdef object inet_pton (int af, char *addr, void *sockaddr_out)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
# sockaddr, flags -> (host, service)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
cdef object getnameinfo (sockaddr *sa, socklen_t salen, int flags)