--- 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
# <netinet/sctp.h>
# 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.
+ """
+
+