inc/sctp.pxd
changeset 1 0ca9278146d7
child 2 171e77f8d675
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/inc/sctp.pxd	Sun Aug 16 03:12:46 2009 +0300
@@ -0,0 +1,201 @@
+cimport libc
+
+from libc cimport __u8, __u16, __u32, __s8, __s16, __s32
+
+# <netinet/sctp.h>
+# this defines the kernel SCTP -> userspace API extensions, such as structure types etc.
+cdef extern from "netinet/sctp.h" :
+    ## types
+    ctypedef __s32 sctp_assoc_t
+
+    ## constants
+    # sockapi
+    int SOL_SCTP
+    int IPPROTO_SCTP
+
+    # sockopts
+    int SCTP_RTOINFO
+    int SCTP_ASSOCINFO
+    int SCTP_INITMSG
+    int SCTP_NODELAY
+    int SCTP_AUTOCLOSE
+    int SCTP_SET_PEER_PRIMARY_ADDR
+    int SCTP_PRIMARY_ADDR
+    int SCTP_ADAPTATION_LAYER
+    int SCTP_DISABLE_FRAGMENTS
+    int SCTP_PEER_ADDR_PARAMS
+    int SCTP_DEFAULT_SEND_PARAM
+    int SCTP_EVENTS
+    int SCTP_I_WANT_MAPPED_V4_ADDR
+    int SCTP_MAXSEG
+    int SCTP_STATUS
+    int SCTP_GET_PEER_ADDR_INFO
+    int SCTP_DELAYED_ACK_TIME
+    int SCTP_CONTEXT
+    int SCTP_FRAGMENT_INTERLEAVE
+    int SCTP_PARTIAL_DELIVERY_POINT
+    int SCTP_MAX_BURST
+
+    ## send/recv-msg cmsghdr's
+    struct sctp_initmsg :
+        __u16 sinit_num_ostreams
+        __u16 sinit_max_instreams
+        __u16 sinit_max_attempts
+        __u16 sinit_max_init_timeo
+
+    struct sctp_sndrcvinfo :
+        __u16 sinfo_stream
+        __u16 sinfo_ssn
+        __u16 sinfo_flags
+        __u32 sinfo_ppid
+        __u32 sinfo_context
+        __u32 sinfo_timetolive
+        __u32 sinfo_tsn
+        __u32 sinfo_cumtsn
+        sctp_assoc_t sinfo_assoc_id
+
+    # sctp_sndrcvinfo.sinfo_flags values
+    enum sctp_sinfo_flags :
+        SCTP_UNORDERED          # Send/receive message unordered
+        SCTP_ADDR_OVER          # Override the primary destination
+        SCTP_ABORT              # Send an ABORT message to the peer
+        SCTP_EOF                # Initiate graceful shutdown process
+    
+    ## notifications
+    struct sctp_assoc_change :
+        __u16 sac_type
+        __u16 sac_flags
+        __u32 sac_length
+        __u16 sac_state
+        __u16 sac_error
+        __u16 sac_outbound_streams
+        __u16 sac_inbound_streams
+        sctp_assoc_t sac_assoc_id
+        __u8 sac_info[0]
+    
+    # sctp_assoc_change.sac_state
+    enum sctp_sac_state :
+        SCTP_COMM_UP
+        SCTP_COMM_LOST
+        SCTP_RESTART
+        SCTP_SHUTDOWN_COMP
+        SCTP_CANT_STR_ASSOC
+
+    struct sctp_paddr_change :
+        __u16 spc_type
+        __u16 spc_flags
+        __u32 spc_length
+        libc.sockaddr_storage spc_aaddr
+        int spc_state
+        int spc_error
+        sctp_assoc_t spc_assoc_id
+
+    enum sctp_spc_state :
+        SCTP_ADDR_AVAILABLE
+        SCTP_ADDR_UNREACHABLE
+        SCTP_ADDR_REMOVED
+        SCTP_ADDR_ADDED
+        SCTP_ADDR_MADE_PRIM
+        SCTP_ADDR_CONFIRMED
+
+    struct sctp_remote_error :
+        __u16 sre_type
+        __u16 sre_flags
+        __u32 sre_length
+        __u16 sre_error
+        sctp_assoc_t sre_assoc_id
+        __u8 sre_data[0]
+
+
+    struct sctp_send_failed :
+        __u16 ssf_type
+        __u16 ssf_flags
+        __u32 ssf_length
+        __u32 ssf_error
+        sctp_sndrcvinfo ssf_info
+        sctp_assoc_t ssf_assoc_id
+        __u8 ssf_data[0]
+
+    enum sctp_ssf_flags :
+        SCTP_DATA_UNSENT
+        SCTP_DATA_SENT
+
+    struct sctp_shutdown_event :
+        __u16 sse_type
+        __u16 sse_flags
+        __u32 sse_length
+        sctp_assoc_t sse_assoc_id
+
+    struct sctp_adaptation_event :
+        __u16 sai_type
+        __u16 sai_flags
+        __u32 sai_length
+        __u32 sai_adaptation_ind
+        sctp_assoc_t sai_assoc_id
+
+    struct sctp_pdapi_event :
+        __u16 pdapi_type
+        __u16 pdapi_flags
+        __u32 pdapi_length
+        __u32 pdapi_indication
+        sctp_assoc_t pdapi_assoc_id
+
+    enum :
+        SCTP_PARTIAL_DELIVERY_ABORTED
+
+    struct sctp_event_subscribe :
+        __u8 sctp_data_io_event
+        __u8 sctp_association_event
+        __u8 sctp_address_event
+        __u8 sctp_send_failure_event
+        __u8 sctp_peer_error_event
+        __u8 sctp_shutdown_event
+        __u8 sctp_partial_delivery_event
+        __u8 sctp_adaptation_layer_event
+
+    struct sn_header :
+        __u16 sn_type
+        __u16 sn_flags
+        __u32 sn_length
+
+    union sctp_notification :
+        sn_header sn_header
+
+        sctp_assoc_change sn_assoc_change
+        sctp_paddr_change sn_paddr_change
+        sctp_remote_error sn_remote_error
+        sctp_send_failed sn_send_failed
+        sctp_shutdown_event sn_shutdown_event
+        sctp_adaptation_event sn_adaptation_event
+        sctp_pdapi_event sn_pdapi_event
+
+    enum sctp_sn_type :
+        SCTP_SN_TYPE_BASE
+        SCTP_ASSOC_CHANGE
+        SCTP_PEER_ADDR_CHANGE
+        SCTP_SEND_FAILED
+        SCTP_REMOTE_ERROR
+        SCTP_SHUTDOWN_EVENT
+        SCTP_PARTIAL_DELIVERY_EVENT
+        SCTP_ADAPTATION_INDICATION
+
+    enum sctp_sn_error :
+        SCTP_FAILED_THRESHOLD
+        SCTP_RECEIVED_SACK
+        SCTP_HEARTBEAT_SUCCESS
+        SCTP_RESPONSE_TO_USER_REQ
+        SCTP_INTERNAL_ERROR
+        SCTP_SHUTDOWN_GUARD_EXPIRES
+        SCTP_PEER_FAULTY
+    
+    ctypedef sctp_sn_error sctp_sn_error_t
+    
+
+    ## sctp_bindx
+    int SCTP_BINDX_ADD_ADDR
+    int SCTP_BINDX_REM_ADDR
+
+    int sctp_bindx (int sd, libc.sockaddr *addrs, int addrcnt, int flags)
+    int sctp_connectx (int sd, libc.sockaddr *addrs, int addrcnt)
+
+