sctp/sock.pyx
author Tero Marttila <terom@fixme.fi>
Sun, 16 Aug 2009 02:58:32 +0300
changeset 0 975801b28d85
child 1 0ca9278146d7
permissions -rw-r--r--
initial code
0
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     1
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     2
    This C(ython) extension module provides an interface to the libsctp library and associated socket API.
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     3
"""
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     4
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     5
from libc cimport *
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     6
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     7
# <netinet/sctp.h>
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     8
# this defines the kernel SCTP -> userspace API extensions, such as structure types etc.
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
     9
cdef extern from "netinet/sctp.h" :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    10
    ## types
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    11
    ctypedef __s32 sctp_assoc_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    12
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    13
    ## constants
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    14
    # sockapi
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    15
    int SOL_SCTP
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    16
    int IPPROTO_SCTP
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    17
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    18
    # sockopts
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    19
    int SCTP_RTOINFO
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    20
    int SCTP_ASSOCINFO
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    21
    int SCTP_INITMSG
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    22
    int SCTP_NODELAY
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    23
    int SCTP_AUTOCLOSE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    24
    int SCTP_SET_PEER_PRIMARY_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    25
    int SCTP_PRIMARY_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    26
    int SCTP_ADAPTATION_LAYER
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    27
    int SCTP_DISABLE_FRAGMENTS
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    28
    int SCTP_PEER_ADDR_PARAMS
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    29
    int SCTP_DEFAULT_SEND_PARAM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    30
    int SCTP_EVENTS
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    31
    int SCTP_I_WANT_MAPPED_V4_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    32
    int SCTP_MAXSEG
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    33
    int SCTP_STATUS
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    34
    int SCTP_GET_PEER_ADDR_INFO
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    35
    int SCTP_DELAYED_ACK_TIME
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    36
    int SCTP_CONTEXT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    37
    int SCTP_FRAGMENT_INTERLEAVE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    38
    int SCTP_PARTIAL_DELIVERY_POINT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    39
    int SCTP_MAX_BURST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    40
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    41
    ## send/recv-msg cmsghdr's
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    42
    struct sctp_initmsg :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    43
        __u16 sinit_num_ostreams
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    44
        __u16 sinit_max_instreams
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    45
        __u16 sinit_max_attempts
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    46
        __u16 sinit_max_init_timeo
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    47
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    48
    struct sctp_sndrcvinfo :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    49
        __u16 sinfo_stream
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    50
        __u16 sinfo_ssn
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    51
        __u16 sinfo_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    52
        __u32 sinfo_ppid
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    53
        __u32 sinfo_context
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    54
        __u32 sinfo_timetolive
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    55
        __u32 sinfo_tsn
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    56
        __u32 sinfo_cumtsn
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    57
        sctp_assoc_t sinfo_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    58
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    59
    # sctp_sndrcvinfo.sinfo_flags values
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    60
    enum sctp_sinfo_flags :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    61
        SCTP_UNORDERED          # Send/receive message unordered
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    62
        SCTP_ADDR_OVER          # Override the primary destination
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    63
        SCTP_ABORT              # Send an ABORT message to the peer
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    64
        SCTP_EOF                # Initiate graceful shutdown process
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    65
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    66
    ## notifications
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    67
    struct sctp_assoc_change :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    68
        __u16 sac_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    69
        __u16 sac_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    70
        __u32 sac_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    71
        __u16 sac_state
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    72
        __u16 sac_error
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    73
        __u16 sac_outbound_streams
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    74
        __u16 sac_inbound_streams
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    75
        sctp_assoc_t sac_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    76
        __u8 sac_info[0]
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    77
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    78
    # sctp_assoc_change.sac_state
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    79
    enum sctp_sac_state :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    80
        SCTP_COMM_UP
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    81
        SCTP_COMM_LOST
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    82
        SCTP_RESTART
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    83
        SCTP_SHUTDOWN_COMP
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    84
        SCTP_CANT_STR_ASSOC
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    85
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    86
    struct sctp_paddr_change :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    87
        __u16 spc_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    88
        __u16 spc_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    89
        __u32 spc_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    90
        sockaddr_storage spc_aaddr
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    91
        int spc_state
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    92
        int spc_error
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    93
        sctp_assoc_t spc_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    94
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    95
    enum sctp_spc_state :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    96
        SCTP_ADDR_AVAILABLE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    97
        SCTP_ADDR_UNREACHABLE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    98
        SCTP_ADDR_REMOVED
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
    99
        SCTP_ADDR_ADDED
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   100
        SCTP_ADDR_MADE_PRIM
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   101
        SCTP_ADDR_CONFIRMED
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   102
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   103
    struct sctp_remote_error :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   104
        __u16 sre_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   105
        __u16 sre_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   106
        __u32 sre_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   107
        __u16 sre_error
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   108
        sctp_assoc_t sre_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   109
        __u8 sre_data[0]
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   110
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   111
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   112
    struct sctp_send_failed :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   113
        __u16 ssf_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   114
        __u16 ssf_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   115
        __u32 ssf_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   116
        __u32 ssf_error
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   117
        sctp_sndrcvinfo ssf_info
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   118
        sctp_assoc_t ssf_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   119
        __u8 ssf_data[0]
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   120
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   121
    enum sctp_ssf_flags :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   122
        SCTP_DATA_UNSENT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   123
        SCTP_DATA_SENT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   124
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   125
    struct sctp_shutdown_event :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   126
        __u16 sse_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   127
        __u16 sse_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   128
        __u32 sse_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   129
        sctp_assoc_t sse_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   130
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   131
    struct sctp_adaptation_event :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   132
        __u16 sai_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   133
        __u16 sai_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   134
        __u32 sai_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   135
        __u32 sai_adaptation_ind
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   136
        sctp_assoc_t sai_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   137
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   138
    struct sctp_pdapi_event :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   139
        __u16 pdapi_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   140
        __u16 pdapi_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   141
        __u32 pdapi_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   142
        __u32 pdapi_indication
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   143
        sctp_assoc_t pdapi_assoc_id
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   144
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   145
    enum :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   146
        SCTP_PARTIAL_DELIVERY_ABORTED
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   147
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   148
    struct sctp_event_subscribe :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   149
        __u8 sctp_data_io_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   150
        __u8 sctp_association_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   151
        __u8 sctp_address_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   152
        __u8 sctp_send_failure_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   153
        __u8 sctp_peer_error_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   154
        __u8 sctp_shutdown_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   155
        __u8 sctp_partial_delivery_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   156
        __u8 sctp_adaptation_layer_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   157
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   158
    struct sn_header :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   159
        __u16 sn_type
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   160
        __u16 sn_flags
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   161
        __u32 sn_length
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   162
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   163
    union sctp_notification :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   164
        sn_header sn_header
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   165
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   166
        sctp_assoc_change sn_assoc_change
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   167
        sctp_paddr_change sn_paddr_change
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   168
        sctp_remote_error sn_remote_error
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   169
        sctp_send_failed sn_send_failed
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   170
        sctp_shutdown_event sn_shutdown_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   171
        sctp_adaptation_event sn_adaptation_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   172
        sctp_pdapi_event sn_pdapi_event
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   173
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   174
    enum sctp_sn_type :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   175
        SCTP_SN_TYPE_BASE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   176
        SCTP_ASSOC_CHANGE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   177
        SCTP_PEER_ADDR_CHANGE
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   178
        SCTP_SEND_FAILED
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   179
        SCTP_REMOTE_ERROR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   180
        SCTP_SHUTDOWN_EVENT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   181
        SCTP_PARTIAL_DELIVERY_EVENT
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   182
        SCTP_ADAPTATION_INDICATION
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   183
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   184
    enum sctp_sn_error :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   185
        SCTP_FAILED_THRESHOLD
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   186
        SCTP_RECEIVED_SACK
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   187
        SCTP_HEARTBEAT_SUCCESS
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   188
        SCTP_RESPONSE_TO_USER_REQ
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   189
        SCTP_INTERNAL_ERROR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   190
        SCTP_SHUTDOWN_GUARD_EXPIRES
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   191
        SCTP_PEER_FAULTY
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   192
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   193
    ctypedef sctp_sn_error sctp_sn_error_t
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   194
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   195
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   196
    ## sctp_bindx
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   197
    int SCTP_BINDX_ADD_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   198
    int SCTP_BINDX_REM_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   199
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   200
    int sctp_bindx (int sd, sockaddr *addrs, int addrcnt, int flags)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   201
    int sctp_connectx (int sd, sockaddr *addrs, int addrcnt)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   202
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   203
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   204
def bindx (int sd, object addrs, int flags) :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   205
    """
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   206
        Bind the given SOCK_SEQPACKET to the given set of local addresses.
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   207
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   208
            sd          the system socket FD
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   209
            addresses   the list of address tuples
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   210
            flags       one of SCTP_BINDX_ADD/REM_ADDR
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   211
    """
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   212
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   213
    # automatically allocated array of sockaddr_storage's for passing given addresses to sctp_bindx
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   214
    cdef sockaddr_storage *addrs_out
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   215
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   216
    # used to iterate through addrs_out
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   217
    cdef sockaddr_in *addr_in
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   218
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   219
    # number of addresses given
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   220
    cdef size_t addr_count = len(addrs)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   221
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   222
    # alloc stack storage for converting addresses
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   223
    addrs_out = <sockaddr_storage *> alloca(addr_count * sizeof(sockaddr_storage))
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   224
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   225
    for i, address in enumerate(addrs) :
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   226
        # XXX: assume socket-style IPv4 for now...
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   227
        addr, port = address
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   228
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   229
        addr_in = <sockaddr_in *>(&addrs_out[i])
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   230
        
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   231
        addr_in.sin_family = AF_INET
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   232
        addr_in.sin_port = htons(port)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   233
        inet_aton(addr, &addr_in.sin_addr)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   234
    
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   235
    return sctp_bindx(sd, <sockaddr *>addrs_out, addr_count, flags)
975801b28d85 initial code
Tero Marttila <terom@fixme.fi>
parents:
diff changeset
   236