diff -r 0e4933d5862e -r 19d212c948e0 qmsk/net/sctp/sock.pxd --- a/qmsk/net/sctp/sock.pxd Mon Aug 17 01:29:31 2009 +0300 +++ b/qmsk/net/sctp/sock.pxd Mon Aug 17 19:40:23 2009 +0300 @@ -1,6 +1,14 @@ -from qmsk.net.libc cimport __u8, __u16, __u32, __s8, __s16, __s32 +""" + The socket-based interface for SCTP. + + http://tools.ietf.org/html/draft-ietf-tsvwg-sctpsocket-15 +""" + +#from qmsk.net.libc cimport __u8, __u16, __u32, __s8, __s16, __s32, ssize_t +from qmsk.net.libc cimport * cimport qmsk.net.socket.platform as platform +cimport qmsk.net.socket.socket # # this defines the kernel SCTP -> userspace API extensions, such as structure types etc. @@ -56,6 +64,8 @@ __u32 sinfo_cumtsn sctp_assoc_t sinfo_assoc_id + # XXX: missing sctp_extrcvinfo + # sctp_sndrcvinfo.sinfo_flags values enum sctp_sinfo_flags : SCTP_UNORDERED # Send/receive message unordered @@ -192,15 +202,76 @@ ctypedef sctp_sn_error sctp_sn_error_t + + ### + ### 8 New Interfaces + ### - ## sctp_bindx + ## 8.1 sctp_bindx enum : SCTP_BINDX_ADD_ADDR SCTP_BINDX_REM_ADDR - int c_sctp_bindx "sctp_bindx" (int sd, platform.sockaddr *addrs, int addrcnt, int flags) + int sctp_bindx (int sd, platform.sockaddr *addrs, int addrcnt, int flags) - # XXX: missing return-sctp_assoc_t-id argument! - int c_sctp_connectx "sctp_connectx" (int sd, platform.sockaddr *addrs, int addrcnt) + ## 8.2 sctp_peeloff + int sctp_peeloff (int sd, sctp_assoc_t assoc_id) + + ## 8.3 sctp_getpaddrs + int sctp_getpaddrs (int sd, sctp_assoc_t assoc_id, platform.sockaddr **addrs) + ## 8.4 sctp_freepaddrs + void sctp_freepaddrs (platform.sockaddr *addrs) + + ## 8.5 sctp_getladdrs + int sctp_getladdrs (int sd, sctp_assoc_t id, platform.sockaddr **ss) + ## 8.6 sctp_freeladdrs + void sctp_freeladdrs (platform.sockaddr **ss) + + ## 8.7 sctp_sendmsg + ssize_t sctp_sendmsg ( + int sd, + void *msg, size_t len, + platform.sockaddr *dst, platform.socklen_t dstlen, + uint32_t ppid, uint32_t flags, uint16_t stream_no, uint32_t timetolive, uint32_t context + ) + + ## 8.8 sctp_Recvmsg + ssize_t sctp_recvmsg ( + int sd, + void *msg, size_t len, + platform.sockaddr *src, platform.socklen_t *srclen, + sctp_sndrcvinfo *sinfo, + int *msg_flags + ) + ## 8.9 sctp_connectx + # XXX: missing return-sctp_assoc_t-id argument from RFC! + int sctp_connectx (int sd, platform.sockaddr *addrs, int addrcnt) + + ## 8.10 sctp_send + int sctp_send ( + int sd, + void *msg, size_t len, + sctp_sndrcvinfo *sinfo, + int flags + ) + + ## 8.11 sctp_sendx + int sctp_sendx ( + int sd, + void *msg, size_t len, + platform.sockaddr *addrs, int addrcnt, + sctp_sndrcvinfo *sinfo, + int flags + ) + + ## 8.12 sctp_getaddrlen + int sctp_getaddrlen (platform.sa_family_t family) + +cdef class sctp_socket (qmsk.net.socket.socket.socket) : + """ + SCTP-specific methods and functionality, built on top of the generic socket interface. + """ + +