Skip to main content

pysctp is a python module for the SCTP protocol stack and library

Project description

PySCTP - SCTP bindings for Python
---------------------------------

Elvis Pfützenreuter
Instituto Nokia de Tecnologia (http://www.indt.org.br)
epx __AT__ epx.com.br

Philippe Langlois
P1 Security (http://www.p1sec.com)
phil __AT__ p1sec.com

======================================================================
INSTALL

sudo python setup.py install

* to see what this is going to install without actually doing it:
python setup.py install --dry-run

* to just build and not install:
python setup.py build

In case you want to install the module explicitely for Python 2 or 3,
just replace _python_ by _python2_ / _python3_ in the commands above.

======================================================================
DEPENDENCIES:

You can automatically install dependencies for Debian/Ubuntu:
make installdeps

Otherwise, necessary would be e.g. on Ubuntu: libsctp-dev and python-dev
(python2-dev or python3-dev for an explicit version of Python)

Support for Mac OSX is not tested, but should be doable through the SCTP Network
Kernel Extension (NKE) available at:
https://github.com/sctplab/SCTP_NKE_HighSierra

======================================================================
INTRODUCTION

PySCTP gives access to the SCTP transport protocol from Python language.
It extends the traditional socket interface, allowing
SCTP sockets to be used in most situations where a TCP or UDP socket
would work, while preserving the unique characteristics of the protocol.

For more information about SCTP, go to http://www.sctp.org or RFC 4960.
For discussion, sources, bugs, go to http://github.com/p1sec/pysctp

In a nutshell, PySCTP can be used as follows:

---------

import socket
import sctp

sk = sctp.sctpsocket_tcp(socket.AF_INET)
sk.connect(("10.0.1.1", 36413))

... most socket operations work for SCTP too ...

sk.close()

---------

The autotest programs (e.g. test_local_cnx.py) are actually good examples of
pysctp usage.

The BSD/Sockets SCTP extensions are defined by an IETF draft
(draft-ietf-tsvwg-sctpsocket-10.txt) and PySCTP tries to map those
extensions very closely. So, to really take the most advantage of
SCTP and PySCTP, you must understand how the API works. You can
find advice about it in the the draft itself (not incredibly easy
to understand though), as well the 3rd edition of Unix Network
Programming.


======================================================================
DESCRIPTION

1) The "sctp" module

The "sctp" module is the Python side of the bindings. The docstrings
of every class and method can give good advice of functions, but the
highlights are:

* sctpsocket is the root class for SCTP sockets, that ought not be used
directly by the users. It does *not* inherit directly from Python
standard socket; instead it *contains* a socket. That design was
followed mostly because UDP-style sockets can be "peeled off" and
return TCP-style sockets.

sctpsocket delegates unknown methods to the socket. This ensures that
methods like close(), bind(), read(), select() etc. will work as expected.
If the real socket is really needed, it can be obtained with
sctpsocket.sock().

* As said, "Normal" socket calls like open(), bind(), close() etc.
can be used on SCTP sockets because they are delegated to the
Python socket.

* Users will normally use the sctpsocket_tcp (TCP style) and sctpsocket_udp
(UDP style) classes. Some calls that are implemented in sctpsocket but
do not make sense in a particular style are rendered invalid in each
class (e.g. peeloff() in TCP-style sockets).

2) The "_sctp" module

This is the C side of the bindings, that provides the "glue" between
Python and the C API. The regular PySCTP user should not need to get
into this, but power users and developers may be interested in it.

The interface between Python and C is designed to be as simple as
possible. In particular, no object is created in C side, just
simple types (strings, integers, lists, tuples and dictionaries).

The translation to/from complex objects is done entirely in Python.
It avoids that _sctp depends on sctp.

NOTE: it all has been tested agains lksctp-utils 1.0.1 and kernel
2.6.10, that come with Ubuntu Hoary. Some newer calls like connectx()
depend of testing on a newer environment to be implemented.


======================================================================
License

This module is licensed under the LGPL license.

======================================================================
Credits

Elvis Pfützenreuter <elvis.pfutzenreuter __AT__ indt.org.br>
Philippe Langlois <phil __AT__ p1sec.com>
Casimiro Daniel NPRI <CasimiroD __AT__ npt.nuwc.navy.mil> - patch for new SCTP_* constants

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pysctp-0.7.3.tar.gz (76.9 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

pysctp-0.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (123.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (116.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (116.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (116.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (115.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (113.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (113.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pysctp-0.7.3-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (111.2 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

File details

Details for the file pysctp-0.7.3.tar.gz.

File metadata

  • Download URL: pysctp-0.7.3.tar.gz
  • Upload date:
  • Size: 76.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pysctp-0.7.3.tar.gz
Algorithm Hash digest
SHA256 bf7133c709528f83dce3950d4e486e7520f4a0f80d71e2364bf0991eb5d1eeae
MD5 4c15f4352786cf99d04b7633ac5b7429
BLAKE2b-256 c3b15e935c03e150009f848baf1182a5634004053e48bd8d2bc2cc9e44fe2e14

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 b3a28477b1365beb09c8be1779abc2c9eee35a6a362fe5c816ea6b1828f9393b
MD5 438fdd79e9f047ea0e83c0409d7c5634
BLAKE2b-256 e29e8d5d0c006b5d7402eac03f4a47d83aadb2d3c38b553fbb1bb10561e926f9

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 9b76d15f44d7426410375266fbd017444243d2ea457544994902ba54f379c234
MD5 6ee707bfd8bba17e67aeca53990d61c9
BLAKE2b-256 6caeccf50f93061a241df478f89644444b27ca6cdaf2124e675c0dcba75ea123

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 fe0bf735efc0d305b4bbdfa5e6749b74a3d604f14f702edc9d35ff36652006b0
MD5 15a6702442820acd8345bfef514a3e3d
BLAKE2b-256 db5ddb969b6fb8be1cd58f302be09fb8c9c1598b2fbb3619f4f7bf71b8902bfb

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 d1bb29aac9d647fe5cd62b61fe5f95a993c853d5c5a7606323aebb54dc29aa10
MD5 720c7b9bac4a265b5e947ef09590d59c
BLAKE2b-256 c1df1150d97e96f13609790ed6b828dcef26b380908eba1a34234834bef7baec

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 0e6852eb6e6ec10ee7812ab3f0007787ed4176edca249e34ceb7371f3e111fb9
MD5 dac5256869fd30bf56f0c54a97087fea
BLAKE2b-256 c4feef4bb46aaff7eeea9baaf889c92a86e12c2917d0dadb00f7603e88df3d52

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 338b6b9d542b086d2a158d4dfcedee13c8835bc0a1092de3d26173e1985c2377
MD5 2e69fd3a64fccf44fe91f504b7e5a9f0
BLAKE2b-256 9c2a7c6936af95b7764a53948bb8c44aa56b7fde4d2a7698f49551b7cf5de4c5

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp39-cp39-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 6891789a7fd32fca716fbcf83041d392b4f922b9484a6f2808ee5f307a0a4031
MD5 b11fac3e13c2cb693205715e9da7967e
BLAKE2b-256 b1d131c1661af9474342341b1671240c20897c02a1931239342337058b583dcd

See more details on using hashes here.

File details

Details for the file pysctp-0.7.3-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pysctp-0.7.3-cp38-cp38-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 da788023c42c73a5851cc6b95a5d0e9d4624c50761251495ffc893faad770fa8
MD5 21e5b96b716fdd410e4da0257bc566ff
BLAKE2b-256 9508bc816bd00adb0960235837adcd2e303025644ca6b73335abdb271d0107d5

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page