`libnetdude` Manual
Prev |  | Next

# libnd_protocol

## Name

libnd_protocol --

## Synopsis

    #define     LND_PROTO_MAGICS
    enum        LND_ProtocolLayer;
    LND_Protocol* libnd_proto_new               (const char *name,
                                                 LND_ProtocolLayer layer,
                                                 guint64 magic);
    void        libnd_proto_free                (LND_Protocol *proto);
    gboolean    libnd_proto_is_raw              (LND_Protocol *proto);
    const char* libnd_proto_layer_to_string     (LND_ProtocolLayer layer);

## Description

## Details

### LND_PROTO_MAGICS

    #define LND_PROTO_MAGICS 3

### enum LND_ProtocolLayer

    typedef enum {
      LND_PROTO_LAYER_LINK  = (1 << 0),
      LND_PROTO_LAYER_NET   = (1 << 1),
      LND_PROTO_LAYER_TRANS = (1 << 2),
      LND_PROTO_LAYER_APP   = (1 << 3)
    } LND_ProtocolLayer;

### libnd_proto_new ()

    LND_Protocol* libnd_proto_new               (const char *name,
                                                 LND_ProtocolLayer layer,
                                                 guint64 magic);

The function creates a new protocol with dummy operations hooked into the function pointers. Commonly used magic values are the DLT_xxx constants from bpf.h for the linklevel, ETHERTYPE_xxx for the network layer, IPPROTO_xxx for the transport layer, and ports as given in /etc/services for the application layer.

`name` :

  name of the protocol.

`layer` :

  layer in the network stack that the new protocol lives at.

`magic` :

  the magic value by which the protocol is commonly identified by the layer below.

Returns :

  new protocol, or `NULL` on error.

### libnd_proto_free ()

    void        libnd_proto_free                (LND_Protocol *proto);

The function releases all memory associated with a protocol.

`proto` :

  protocol to free.

### libnd_proto_is_raw ()

    gboolean    libnd_proto_is_raw              (LND_Protocol *proto);

Use this function to determine whether a protocol is the built-in raw data protocol.

`proto` :

  protocol to test.

Returns :

  `TRUE` if `proto` is the raw protocol, `FALSE` otherwise.

### libnd_proto_layer_to_string ()

    const char* libnd_proto_layer_to_string     (LND_ProtocolLayer layer);

Mainly for debugging purposes, this function returns a statically allocated string for the protocol layer identifier given in `layer`.

`layer` :

  layer identifier.

Returns :

Prev | Home | Next
libnd_prefs | Up | libnd_protocol_inst