## gstnetbuffer

gstnetbuffer — Buffer for use in network sources and sinks

## Synopsis

    #include <gst/netbuffer/gstnetbuffer.h>

    struct              GstNetBuffer;
    enum                GstNetType;
    #define             GST_NETADDRESS_MAX_LEN
    struct              GstNetAddress;
    GstNetBuffer *      gst_netbuffer_new                   (void);
    GstNetType          gst_netaddress_get_net_type         (const GstNetAddress *naddr);
    void                gst_netaddress_set_ip4_address      (GstNetAddress *naddr,
                                                             guint32 address,
                                                             guint16 port);
    gboolean            gst_netaddress_get_ip4_address      (const GstNetAddress *naddr,
                                                             guint32 *address,
                                                             guint16 *port);
    void                gst_netaddress_set_ip6_address      (GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 port);
    gboolean            gst_netaddress_get_ip6_address      (const GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 *port);
    gint                gst_netaddress_get_address_bytes    (const GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 *port);
    gint                gst_netaddress_set_address_bytes    (GstNetAddress *naddr,
                                                             GstNetType type,
                                                             guint8 address[16],
                                                             guint16 port);
    gboolean            gst_netaddress_equal                (const GstNetAddress *naddr1,
                                                             const GstNetAddress *naddr2);
    gint                gst_netaddress_to_string            (const GstNetAddress *naddr,
                                                             gchar *dest,
                                                             gulong len);

## Description

GstNetBuffer is a subclass of a normal GstBuffer that contains two additional metadata fields of type GstNetAddress named 'to' and 'from'. The buffer can be used to store additional information about the origin of the buffer data and is used in various network elements to track the to and from addresses.

Last reviewed on 2006-08-21 (0.10.10)

## Details

### struct GstNetBuffer

    struct GstNetBuffer {
      GstBuffer buffer;

      GstNetAddress from;
      GstNetAddress to;
    };

buffer for use in network sources and sinks. It contains the source or destination address of the buffer.

GstBuffer `buffer`; | the parent GstBuffer
GstNetAddress `from`; | the address where this buffer came from.
GstNetAddress `to`; | the address where this buffer should go to.

### enum GstNetType

    typedef enum {
      GST_NET_TYPE_UNKNOWN,
      GST_NET_TYPE_IP4,
      GST_NET_TYPE_IP6,
    } GstNetType;

The Address type used in GstNetAddress.

`GST_NET_TYPE_UNKNOWN` | unknown address type
`GST_NET_TYPE_IP4` | an IPv4 address type
`GST_NET_TYPE_IP6` | and IPv6 address type

### GST_NETADDRESS_MAX_LEN

    #define GST_NETADDRESS_MAX_LEN 64

The maximum length of a string representation of a GstNetAddress as produced by `gst_netaddress_to_string()`.

Since 0.10.24

### struct GstNetAddress

    struct GstNetAddress {
    };

An opaque network address as used in GstNetBuffer.

### gst_netbuffer_new ()

    GstNetBuffer *      gst_netbuffer_new                   (void);

Create a new network buffer.

Returns : | a new GstNetBuffer.

### gst_netaddress_get_net_type ()

    GstNetType          gst_netaddress_get_net_type         (const GstNetAddress *naddr);

Get the type of address stored in `naddr`.

`naddr` : | a network address
Returns : | the network type stored in `naddr`.

### gst_netaddress_set_ip4_address ()

    void                gst_netaddress_set_ip4_address      (GstNetAddress *naddr,
                                                             guint32 address,
                                                             guint16 port);

Set `naddr` with the IPv4 `address` and `port` pair.

Note that `port` and `address` must be expressed in network byte order, use `g_htons()` and `g_htonl()` to convert them to network byte order.

`naddr` : | a network address
`address` : | an IPv4 network address.
`port` : | a port number to set.

### gst_netaddress_get_ip4_address ()

    gboolean            gst_netaddress_get_ip4_address      (const GstNetAddress *naddr,
                                                             guint32 *address,
                                                             guint16 *port);

Get the IPv4 address stored in `naddr` into `address`. This function requires that the address type of `naddr` is of type GST_NET_TYPE_IP4.

Note that `port` and `address` are expressed in network byte order, use `g_ntohs()` and `g_ntohl()` to convert them to host order.

`naddr` : | a network address
`address` : | a location to store the address.
`port` : | a location to store the port.
Returns : | TRUE if the address could be retrieved.

### gst_netaddress_set_ip6_address ()

    void                gst_netaddress_set_ip6_address      (GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 port);

Set `naddr` with the IPv6 `address` and `port` pair.

Note that `port` must be expressed in network byte order, use `g_htons()` to convert it to network byte order.

`naddr` : | a network address
`address` : | an IPv6 network address.
`port` : | a port number to set.

### gst_netaddress_get_ip6_address ()

    gboolean            gst_netaddress_get_ip6_address      (const GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 *port);

Get the IPv6 address stored in `naddr` into `address`.

If `naddr` is of type GST_NET_TYPE_IP4, the transitional IP6 address is returned.

Note that `port` is expressed in network byte order, use `g_ntohs()` to convert it to host order.

`naddr` : | a network address
`address` : | a location to store the result.
`port` : | a location to store the port.
Returns : | TRUE if the address could be retrieved.

### gst_netaddress_get_address_bytes ()

    gint                gst_netaddress_get_address_bytes    (const GstNetAddress *naddr,
                                                             guint8 address[16],
                                                             guint16 *port);

Get just the address bytes stored in `naddr` into `address`.

Note that `port` is expressed in network byte order, use `g_ntohs()` to convert it to host order. IP4 addresses are also stored in network byte order.

`naddr` : | a network address
`address` : | a location to store the result.
`port` : | a location to store the port.
Returns : | number of bytes actually copied

Since 0.10.22

### gst_netaddress_set_address_bytes ()

    gint                gst_netaddress_set_address_bytes    (GstNetAddress *naddr,
                                                             GstNetType type,
                                                             guint8 address[16],
                                                             guint16 port);

Set just the address bytes stored in `naddr` into `address`.

Note that `port` must be expressed in network byte order, use `g_htons()` to convert it to network byte order. IP4 address bytes must also be stored in network byte order.

`naddr` : | a network address
`type` : | the address type (IPv4 or IPV6)
`address` : | a location to store the result.
`port` : | a location to store the port.
Returns : | number of bytes actually copied

Since 0.10.22

### gst_netaddress_equal ()

    gboolean            gst_netaddress_equal                (const GstNetAddress *naddr1,
                                                             const GstNetAddress *naddr2);

Compare two GstNetAddress structures

`naddr1` : | The first GstNetAddress
`naddr2` : | The second GstNetAddress
Returns : | TRUE if they are identical, FALSE otherwise

Since 0.10.18

### gst_netaddress_to_string ()

    gint                gst_netaddress_to_string            (const GstNetAddress *naddr,
                                                             gchar *dest,
                                                             gulong len);

Copies a string representation of `naddr` into `dest`. Up to `len` bytes are copied.

`naddr` : | a GstNetAddress
`dest` : | destination
`len` : | len of `dest`
Returns : | the number of bytes which would be produced if the buffer was large enough

Since 0.10.24