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