qmsk/net/sctp/sock.pxd
changeset 21 19d212c948e0
parent 11 7ae92c2b433f
--- 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.
+    """
+
+