Skip to main content

Slip package

Project description

ReadTheDocs Documentation Status Travis Test Status AppVeyor Test Status

sliplib — A module for the SLIP protocol

The sliplib module implements the encoding and decoding functionality for SLIP packets, as described in RFC 1055. It defines encoding, decoding, and validation functions, as well as a driver class that can be used to implement a SLIP protocol stack, and higher-level classes that apply the SLIP protocol to TCP connections or IO streams. Read the documentation for detailed information.

Background

The SLIP protocol is described in RFC 1055 (A Nonstandard for Transmission of IP Datagrams over Serial Lines: SLIP, J. Romkey, June 1988). The original purpose of the protocol is to provide a mechanism to indicate the boundaries of IP packets, in particular when the IP packets are sent over a connection that does not provide a framing mechanism, such as serial lines or dial-up connections.

There is, however, nothing specific to IP in the SLIP protocol. SLIP offers a generic framing method that can be used for any type of data that must be transmitted over a (continuous) byte stream. In fact, the main reason for creating this module was the need to communicate with a third-party application that used SLIP over TCP (which is a continuous byte stream) to frame variable length data structures.

Usage

Low-level usage

The recommended basic usage is to run all encoding and decoding operations through an instantiation driver of the Driver class, in combination with the appropriate I/O code. The Driver class itself works without any I/O, and can therefore be used with any networking code, or any bytestream like pipes, serial I/O, etc. It can work in synchronous as well as in asynchronous environments.

The Driver class offers the methods send and receive to handle the conversion between messages and SLIP-encoded packets.

High-level usage

The module also provides a SlipWrapper abstract baseclass that provides the methods send_msg and recv_msg to send and receive single SLIP-encoded messages. This base class wraps an instance of the Driver class with a user-provided stream.

Two concrete subclasses of SlipWrapper are provided:

  • SlipStream allows the wrapping of a buffered IO stream.

  • SlipSocket allows the wrapping of a TCP socket.

In addition, the module also provides a SlipRequestHandler to facilitate the creation of TCP servers that can handle SLIP-encoded messages.

Error Handling

Contrary to the reference implementation described in RFC 1055, which chooses to essentially ignore protocol errors, the functions and classes in the sliplib module uses a ProtocolError exception to indicate protocol errors, i.e. SLIP packets with invalid byte sequences. The Driver class raises the ProtocolError exception as soon as a SLIP packet with an invalid byte sequence is received . The SlipWrapper class and its subclasses catch the ProtocolErrors raised by the Driver class, and re-raise them when an attempt is made to read the contents of a SLIP packet with invalid data.

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

sliplib-0.4.0.tar.gz (11.6 kB view details)

Uploaded Source

Built Distribution

sliplib-0.4.0-py3-none-any.whl (13.2 kB view details)

Uploaded Python 3

File details

Details for the file sliplib-0.4.0.tar.gz.

File metadata

  • Download URL: sliplib-0.4.0.tar.gz
  • Upload date:
  • Size: 11.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for sliplib-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9f515ce993b347a69a4ea784110b1a5684bf875253fe6acff227a50739f63e4e
MD5 4e32a8a6fa2a8c454a627cd4ba654156
BLAKE2b-256 4013bf128e4a31dfebc1b1314519284de7fed64e133d24fef423c16426fd4376

See more details on using hashes here.

File details

Details for the file sliplib-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: sliplib-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/45.2.0 requests-toolbelt/0.9.1 tqdm/4.43.0 CPython/3.8.0

File hashes

Hashes for sliplib-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 dc86d1b7ccee5679b577eea5b559be9188dfedcec301e0cf56317b2ac3a929a9
MD5 1f865cc4511e168b13c4561b8c4ea077
BLAKE2b-256 507e23966ed9961f22129e7d45fed4809e8e489a95497741b6378c66046e57a3

See more details on using hashes here.

Supported by

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