## NMSettingVlan NMSettingVlan — Describes connection properties for VLAN interfaces |

## Synopsis

    #include <nm-setting-vlan.h>

    #define             NM_SETTING_VLAN_SETTING_NAME
    enum                NMSettingVlanError;
    #define             NM_SETTING_VLAN_ERROR
    GQuark              nm_setting_vlan_error_quark         (void);
    #define             NM_SETTING_VLAN_INTERFACE_NAME
    #define             NM_SETTING_VLAN_PARENT
    #define             NM_SETTING_VLAN_ID
    #define             NM_SETTING_VLAN_FLAGS
    #define             NM_SETTING_VLAN_INGRESS_PRIORITY_MAP
    #define             NM_SETTING_VLAN_EGRESS_PRIORITY_MAP
                        NMSettingVlan;
                        NMSettingVlanClass;
    enum                NMVlanPriorityMap;
    enum                NMVlanFlags;
    NMSetting *         nm_setting_vlan_new                 (void);
    const char *        nm_setting_vlan_get_interface_name  (NMSettingVlan *setting);
    const char *        nm_setting_vlan_get_parent          (NMSettingVlan *setting);
    guint32             nm_setting_vlan_get_id              (NMSettingVlan *setting);
    guint32             nm_setting_vlan_get_flags           (NMSettingVlan *setting);
    gint32              nm_setting_vlan_get_num_priorities  (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map);
    gboolean            nm_setting_vlan_get_priority        (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 idx,
                                                             guint32 *out_from,
                                                             guint32 *out_to);
    gboolean            nm_setting_vlan_add_priority        (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 from,
                                                             guint32 to);
    void                nm_setting_vlan_remove_priority     (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 idx);
    gboolean            nm_setting_vlan_remove_priority_by_value
                                                            (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 from,
                                                             guint32 to);
    gboolean            nm_setting_vlan_remove_priority_str_by_value
                                                            (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             const char *str);
    void                nm_setting_vlan_clear_priorities    (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map);
    gboolean            nm_setting_vlan_add_priority_str    (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             const char *str);

## Object Hierarchy

      GEnum
       +----NMSettingVlanError

      GObject
       +----NMSetting
             +----NMSettingVlan

      GEnum
       +----NMVlanPriorityMap

      GEnum
       +----NMVlanFlags

## Properties

      "egress-priority-map"      GSList_gchararray_*   : Read / Write
      "flags"                    guint                 : Read / Write / Construct
      "id"                       guint                 : Read / Write / Construct
      "ingress-priority-map"     GSList_gchararray_*   : Read / Write
      "interface-name"           gchar*                : Read / Write / Construct
      "parent"                   gchar*                : Read / Write / Construct

## Description

The NMSettingVlan object is a NMSetting subclass that describes properties necessary for connection to VLAN interfaces.

## Details

### NM_SETTING_VLAN_SETTING_NAME

    #define NM_SETTING_VLAN_SETTING_NAME "vlan"

### enum NMSettingVlanError

    typedef enum {
    	NM_SETTING_VLAN_ERROR_UNKNOWN = 0,      /*< nick=Unknown >*/
    	NM_SETTING_VLAN_ERROR_INVALID_PROPERTY, /*< nick=InvalidProperty >*/
    	NM_SETTING_VLAN_ERROR_MISSING_PROPERTY, /*< nick=MissingProperty >*/
    	NM_SETTING_VLAN_ERROR_INVALID_PARENT    /*< nick=InvalidParent >*/
    } NMSettingVlanError;

`NM_SETTING_VLAN_ERROR_UNKNOWN` | unknown or unclassified error
`NM_SETTING_VLAN_ERROR_INVALID_PROPERTY` | the property was invalid
`NM_SETTING_VLAN_ERROR_MISSING_PROPERTY` | the property was missing and is required
`NM_SETTING_VLAN_ERROR_INVALID_PARENT` | the VLAN parent was specified inconsistently

### NM_SETTING_VLAN_ERROR

    #define NM_SETTING_VLAN_ERROR nm_setting_vlan_error_quark ()

### nm_setting_vlan_error_quark ()

    GQuark              nm_setting_vlan_error_quark         (void);

Registers an error quark for NMSettingVlan if necessary.

Returns : | the error quark used for NMSettingVlan errors.

### NM_SETTING_VLAN_INTERFACE_NAME

    #define NM_SETTING_VLAN_INTERFACE_NAME       "interface-name"

### NM_SETTING_VLAN_PARENT

    #define NM_SETTING_VLAN_PARENT               "parent"

### NM_SETTING_VLAN_ID

    #define NM_SETTING_VLAN_ID                   "id"

### NM_SETTING_VLAN_FLAGS

    #define NM_SETTING_VLAN_FLAGS                "flags"

### NM_SETTING_VLAN_INGRESS_PRIORITY_MAP

    #define NM_SETTING_VLAN_INGRESS_PRIORITY_MAP "ingress-priority-map"

### NM_SETTING_VLAN_EGRESS_PRIORITY_MAP

    #define NM_SETTING_VLAN_EGRESS_PRIORITY_MAP  "egress-priority-map"

### NMSettingVlan

    typedef struct _NMSettingVlan NMSettingVlan;

### NMSettingVlanClass

    typedef struct {
    	NMSettingClass parent;

    	/* Padding for future expansion */
    	void (*_reserved1) (void);
    	void (*_reserved2) (void);
    	void (*_reserved3) (void);
    	void (*_reserved4) (void);
    } NMSettingVlanClass;

### enum NMVlanPriorityMap

    typedef enum {
    	NM_VLAN_INGRESS_MAP,
    	NM_VLAN_EGRESS_MAP
    } NMVlanPriorityMap;

A selector for traffic priority maps; these map Linux SKB priorities to 802.1p priorities used in VLANs.

`NM_VLAN_INGRESS_MAP` | map for incoming data
`NM_VLAN_EGRESS_MAP` | map for outgoing data

### enum NMVlanFlags

    typedef enum {
    	NM_VLAN_FLAG_REORDER_HEADERS = 0x1,
    	NM_VLAN_FLAG_GVRP            = 0x2,
    	NM_VLAN_FLAG_LOOSE_BINDING   = 0x4,

    	/* NOTE: if adding flags update nm-setting-vlan.c::verify() */
    } NMVlanFlags;

NMVlanFlags values control the behavior of the VLAN interface.

`NM_VLAN_FLAG_REORDER_HEADERS` | indicates that this interface should reorder outgoing packet headers to look more like a non-VLAN Ethernet interface
`NM_VLAN_FLAG_GVRP` | indicates that this interface should use GVRP to register itself with it's switch
`NM_VLAN_FLAG_LOOSE_BINDING` | indicates that this interface's operating state is tied to the underlying network interface but other details (like routing) are not.

### nm_setting_vlan_new ()

    NMSetting *         nm_setting_vlan_new                 (void);

Creates a new NMSettingVlan object with default values.

Returns : | the new empty NMSettingVlan object. [transfer full]

### nm_setting_vlan_get_interface_name ()

    const char *        nm_setting_vlan_get_interface_name  (NMSettingVlan *setting);

`setting` : | the NMSettingVlan
Returns : | the "interface_name" property of the setting

### nm_setting_vlan_get_parent ()

    const char *        nm_setting_vlan_get_parent          (NMSettingVlan *setting);

`setting` : | the NMSettingVlan
Returns : | the "parent" property of the setting

### nm_setting_vlan_get_id ()

    guint32             nm_setting_vlan_get_id              (NMSettingVlan *setting);

`setting` : | the NMSettingVlan
Returns : | the "id" property of the setting

### nm_setting_vlan_get_flags ()

    guint32             nm_setting_vlan_get_flags           (NMSettingVlan *setting);

`setting` : | the NMSettingVlan
Returns : | the "flags" property of the setting

### nm_setting_vlan_get_num_priorities ()

    gint32              nm_setting_vlan_get_num_priorities  (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map);

Returns the number of entires in the "ingress_priority_map" or "egress_priority_map" properties of this setting.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
Returns : | return the number of ingress/egress priority entries, -1 if error

### nm_setting_vlan_get_priority ()

    gboolean            nm_setting_vlan_get_priority        (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 idx,
                                                             guint32 *out_from,
                                                             guint32 *out_to);

Retrieve one of the entries of the "ingress_priority_map" or "egress_priority_map" properties of this setting.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`idx` : | the zero-based index of the ingress/egress priority map entry
`out_from` : | on return the value of the priority map's 'from' item. [out]
`out_to` : | on return the value of priority map's 'to' item. [out]
Returns : | `TRUE` if a priority map was returned, `FALSE` if error

### nm_setting_vlan_add_priority ()

    gboolean            nm_setting_vlan_add_priority        (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 from,
                                                             guint32 to);

Adds a priority mapping to the "ingress_priority_map" or "egress_priority_map" properties of the setting. If `from` is already in the given priority map, this function will overwrite the existing entry with the new `to`.

If `map` is NM_VLAN_INGRESS_MAP then `from` is the incoming 802.1q VLAN Priority Code Point (PCP) value, and `to` is the Linux SKB priority value.

If `map` is NM_VLAN_EGRESS_MAP then `from` is the Linux SKB priority value and `to` is the outgoing 802.1q VLAN Priority Code Point (PCP) value.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`from` : | the priority to map to `to`
`to` : | the priority to map `from` to
Returns : | `TRUE` if the new priority mapping was successfully added to the list, `FALSE` if error

### nm_setting_vlan_remove_priority ()

    void                nm_setting_vlan_remove_priority     (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 idx);

Removes the priority map at index `idx` from the "ingress_priority_map" or "egress_priority_map" properties.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`idx` : | the zero-based index of the priority map to remove

### nm_setting_vlan_remove_priority_by_value ()

    gboolean            nm_setting_vlan_remove_priority_by_value
                                                            (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             guint32 from,
                                                             guint32 to);

Removes the priority map `form`:`to` from the "ingress_priority_map" or "egress_priority_map" (according to `map` argument) properties.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`from` : | the priority to map to `to`
`to` : | the priority to map `from` to
Returns : | `TRUE` if the priority mapping was found and removed; `FALSE` if it was not.

Since 0.9.10

### nm_setting_vlan_remove_priority_str_by_value ()

    gboolean            nm_setting_vlan_remove_priority_str_by_value
                                                            (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             const char *str);

Removes the priority map `str` from the "ingress_priority_map" or "egress_priority_map" (according to `map` argument) properties.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`str` : | the string which contains a priority map, like "3:7"
Returns : | `TRUE` if the priority mapping was found and removed; `FALSE` if it was not.

Since 0.9.10

### nm_setting_vlan_clear_priorities ()

    void                nm_setting_vlan_clear_priorities    (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map);

Clear all the entires from "ingress_priority_map" or "egress_priority_map" properties.

`setting` : | the NMSettingVlan
`map` : | the type of priority map

### nm_setting_vlan_add_priority_str ()

    gboolean            nm_setting_vlan_add_priority_str    (NMSettingVlan *setting,
                                                             NMVlanPriorityMap map,
                                                             const char *str);

Adds a priority map entry into either the "ingress_priority_map" or the "egress_priority_map" properties. The priority map maps the Linux SKB priorities to 802.1p priorities.

`setting` : | the NMSettingVlan
`map` : | the type of priority map
`str` : | the string which contains a priority map, like "3:7"
Returns : | `TRUE` if the entry was successfully added to the list, or it overwrote the old value, `FALSE` if error

## Property Details

### The `"egress-priority-map"` property

      "egress-priority-map"      GSList_gchararray_*   : Read / Write

For outgoing packets, a list of mappings from Linux SKB priorities to 802.1p priorities. The mapping is given in the format "from:to" where both "from" and "to" are unsigned integers, ie "7:3".

### The `"flags"` property

      "flags"                    guint                 : Read / Write / Construct

One or more flags which control the behavior and features of the VLAN interface. Flags include `NM_VLAN_FLAG_REORDER_HEADERS` (reordering of output packet headers), `NM_VLAN_FLAG_GVRP` (use of the GVRP protocol), and `NM_VLAN_FLAG_LOOSE_BINDING` (loose binding of the interface to its master device's operating state).

Default value: 0

### The `"id"` property

      "id"                       guint                 : Read / Write / Construct

The VLAN identifier that the interface created by this connection should be assigned.

Allowed values: <= 4095

Default value: 0

### The `"ingress-priority-map"` property

      "ingress-priority-map"     GSList_gchararray_*   : Read / Write

For incoming packets, a list of mappings from 802.1p priorities to Linux SKB priorities. The mapping is given in the format "from:to" where both "from" and "to" are unsigned integers, ie "7:3".

### The `"interface-name"` property

      "interface-name"           gchar*                : Read / Write / Construct

If given, specifies the kernel name of the VLAN interface. If not given, a default name will be constructed from the interface described by the parent interface and the "id" property, eg "eth2.1". The parent interface may be given by the "parent" property or by the "mac-address" property of an NMSettingWired setting.

Default value: NULL

### The `"parent"` property

      "parent"                   gchar*                : Read / Write / Construct

If given, specifies the parent interface name or parent connection UUID from which this VLAN interface should be created. If this property is not specified, the connection must contain an NMSettingWired setting with a "mac-address" property.

Default value: NULL