blob: 040ffc70601d7307137750cca996863415c0c185 [file] [log] [blame]
.. -*- coding: utf-8; mode: rst -*-
.. _net:
###############
DVB Network API
###############
The DVB net device controls the mapping of data packages that are part
of a transport stream to be mapped into a virtual network interface,
visible through the standard Linux network protocol stack.
Currently, two encapsulations are supported:
- `Multi Protocol Encapsulation (MPE) <http://en.wikipedia.org/wiki/Multiprotocol_Encapsulation>`__
- `Ultra Lightweight Encapsulation (ULE) <http://en.wikipedia.org/wiki/Unidirectional_Lightweight_Encapsulation>`__
In order to create the Linux virtual network interfaces, an application
needs to tell to the Kernel what are the PIDs and the encapsulation
types that are present on the transport stream. This is done through
``/dev/dvb/adapter?/net?`` device node. The data will be available via
virtual ``dvb?_?`` network interfaces, and will be controlled/routed via
the standard ip tools (like ip, route, netstat, ifconfig, etc).
Data types and and ioctl definitions are defined via ``linux/dvb/net.h``
header.
.. _net_fcalls:
######################
DVB net Function Calls
######################
.. _NET_ADD_IF:
****************
ioctl NET_ADD_IF
****************
*man NET_ADD_IF(2)*
Creates a new network interface for a given Packet ID.
Synopsis
========
.. c:function:: int ioctl( int fd, int request, struct dvb_net_if *net_if )
Arguments
=========
``fd``
File descriptor returned by :ref:`open() <frontend_f_open>`.
``request``
FE_SET_TONE
``net_if``
pointer to struct :ref:`dvb_net_if <dvb-net-if>`
Description
===========
The NET_ADD_IF ioctl system call selects the Packet ID (PID) that
contains a TCP/IP traffic, the type of encapsulation to be used (MPE or
ULE) and the interface number for the new interface to be created. When
the system call successfully returns, a new virtual network interface is
created.
The struct :ref:`dvb_net_if <dvb-net-if>`::ifnum field will be
filled with the number of the created interface.
RETURN VALUE
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
.. _dvb-net-if-t:
struct dvb_net_if description
=============================
.. _dvb-net-if:
.. flat-table:: struct dvb_net_if
:header-rows: 1
:stub-columns: 0
- .. row 1
- ID
- Description
- .. row 2
- pid
- Packet ID (PID) of the MPEG-TS that contains data
- .. row 3
- ifnum
- number of the DVB interface.
- .. row 4
- feedtype
- Encapsulation type of the feed. It can be:
``DVB_NET_FEEDTYPE_MPE`` for MPE encoding or
``DVB_NET_FEEDTYPE_ULE`` for ULE encoding.
.. _NET_REMOVE_IF:
*******************
ioctl NET_REMOVE_IF
*******************
*man NET_REMOVE_IF(2)*
Removes a network interface.
Synopsis
========
.. c:function:: int ioctl( int fd, int request, int ifnum )
Arguments
=========
``fd``
File descriptor returned by :ref:`open() <frontend_f_open>`.
``request``
FE_SET_TONE
``net_if``
number of the interface to be removed
Description
===========
The NET_REMOVE_IF ioctl deletes an interface previously created via
:ref:`NET_ADD_IF <net>`.
RETURN VALUE
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
.. _NET_GET_IF:
****************
ioctl NET_GET_IF
****************
*man NET_GET_IF(2)*
Read the configuration data of an interface created via
:ref:`NET_ADD_IF <net>`.
Synopsis
========
.. c:function:: int ioctl( int fd, int request, struct dvb_net_if *net_if )
Arguments
=========
``fd``
File descriptor returned by :ref:`open() <frontend_f_open>`.
``request``
FE_SET_TONE
``net_if``
pointer to struct :ref:`dvb_net_if <dvb-net-if>`
Description
===========
The NET_GET_IF ioctl uses the interface number given by the struct
:ref:`dvb_net_if <dvb-net-if>`::ifnum field and fills the content of
struct :ref:`dvb_net_if <dvb-net-if>` with the packet ID and
encapsulation type used on such interface. If the interface was not
created yet with :ref:`NET_ADD_IF <net>`, it will return -1 and fill
the ``errno`` with ``EINVAL`` error code.
RETURN VALUE
On success 0 is returned, on error -1 and the ``errno`` variable is set
appropriately. The generic error codes are described at the
:ref:`Generic Error Codes <gen-errors>` chapter.
.. ------------------------------------------------------------------------------
.. This file was automatically converted from DocBook-XML with the dbxml
.. library (https://github.com/return42/sphkerneldoc). The origin XML comes
.. from the linux kernel, refer to:
..
.. * https://github.com/torvalds/linux/tree/master/Documentation/DocBook
.. ------------------------------------------------------------------------------