## NMSettingBond NMSettingBond — Describes connection properties for bonds |

## Functions

NMSetting * | nm_setting_bond_new ()
guint32 | nm_setting_bond_get_num_options ()
gboolean | nm_setting_bond_get_option ()
const char * | nm_setting_bond_get_option_by_name ()
gboolean | nm_setting_bond_add_option ()
gboolean | nm_setting_bond_remove_option ()
gboolean | nm_setting_bond_validate_option ()
const char ** | nm_setting_bond_get_valid_options ()
const char * | nm_setting_bond_get_option_default ()
const char * | nm_setting_bond_get_option_normalized ()

## Types and Values

#define | NM_SETTING_BOND_SETTING_NAME
#define | NM_SETTING_BOND_OPTIONS
#define | NM_SETTING_BOND_OPTION_MODE
#define | NM_SETTING_BOND_OPTION_MIIMON
#define | NM_SETTING_BOND_OPTION_DOWNDELAY
#define | NM_SETTING_BOND_OPTION_UPDELAY
#define | NM_SETTING_BOND_OPTION_ARP_INTERVAL
#define | NM_SETTING_BOND_OPTION_ARP_IP_TARGET
#define | NM_SETTING_BOND_OPTION_ARP_VALIDATE
#define | NM_SETTING_BOND_OPTION_PRIMARY
#define | NM_SETTING_BOND_OPTION_PRIMARY_RESELECT
#define | NM_SETTING_BOND_OPTION_FAIL_OVER_MAC
#define | NM_SETTING_BOND_OPTION_USE_CARRIER
#define | NM_SETTING_BOND_OPTION_AD_SELECT
#define | NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY
#define | NM_SETTING_BOND_OPTION_RESEND_IGMP
#define | NM_SETTING_BOND_OPTION_LACP_RATE
#define | NM_SETTING_BOND_OPTION_ACTIVE_SLAVE
#define | NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO
#define | NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM
#define | NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY
#define | NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE
#define | NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS
#define | NM_SETTING_BOND_OPTION_MIN_LINKS
#define | NM_SETTING_BOND_OPTION_NUM_GRAT_ARP
#define | NM_SETTING_BOND_OPTION_NUM_UNSOL_NA
#define | NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE
#define | NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB
#define | NM_SETTING_BOND_OPTION_LP_INTERVAL
#define | NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY

## Description

The NMSettingBond object is a NMSetting subclass that describes properties necessary for bond connections.

## Functions

### nm_setting_bond_new ()

    NMSetting *
    nm_setting_bond_new (void);

Creates a new NMSettingBond object with default values.

#### Returns

the new empty NMSettingBond object.

[transfer full]

### nm_setting_bond_get_num_options ()

    guint32
    nm_setting_bond_get_num_options (NMSettingBond *setting);

Returns the number of options that should be set for this bond when it is activated. This can be used to retrieve each option individually using `nm_setting_bond_get_option()`.

#### Parameters

setting | the NMSettingBond |

#### Returns

the number of bonding options

### nm_setting_bond_get_option ()

    gboolean
    nm_setting_bond_get_option (NMSettingBond *setting,
                                guint32 idx,
                                const char **out_name,
                                const char **out_value);

Given an index, return the value of the bonding option at that index. Indexes are *not* guaranteed to be static across modifications to options done by `nm_setting_bond_add_option()` and `nm_setting_bond_remove_option()`, and should not be used to refer to options except for short periods of time such as during option iteration.

#### Parameters

setting | the NMSettingBond |
idx | index of the desired option, from 0 to `nm_setting_bond_get_num_options()` - 1 |
out_name | on return, the name of the bonding option; this value is owned by the setting and should not be modified. | [out][transfer none]
out_value | on return, the value of the name of the bonding option; this value is owned by the setting and should not be modified. | [out][transfer none]

#### Returns

`TRUE` on success if the index was valid and an option was found, `FALSE` if the index was invalid (ie, greater than the number of options currently held by the setting)

### nm_setting_bond_get_option_by_name ()

    const char *
    nm_setting_bond_get_option_by_name (NMSettingBond *setting,
                                        const char *name);

Returns the value associated with the bonding option specified by `name` , if it exists.

#### Parameters

setting | the NMSettingBond |
name | the option name for which to retrieve the value |

#### Returns

the value, or `NULL` if the key/value pair was never added to the setting; the value is owned by the setting and must not be modified

### nm_setting_bond_add_option ()

    gboolean
    nm_setting_bond_add_option (NMSettingBond *setting,
                                const char *name,
                                const char *value);

Add an option to the table. Adding a new name replaces any existing name/value pair that may already exist.

#### Parameters

setting | the NMSettingBond |
name | name for the option |
value | value for the option |

#### Returns

returns `FALSE` if either `name` or `value` is `NULL`, in that case the option is not set. Otherwise, the function does not fail and does not validate the arguments. All validation happens via `nm_connection_verify()` or do basic validation yourself with `nm_setting_bond_validate_option()`.

Note: Before 1.30, libnm would perform basic validation of the name and the value via `nm_setting_bond_validate_option()` and reject the request by returning FALSE. Since 1.30, libnm no longer rejects any values as the setter is not supposed to perform validation.

### nm_setting_bond_remove_option ()

    gboolean
    nm_setting_bond_remove_option (NMSettingBond *setting,
                                   const char *name);

Remove the bonding option referenced by `name` from the internal option list.

#### Parameters

setting | the NMSettingBond |
name | name of the option to remove |

#### Returns

`TRUE` if the option was found and removed from the internal option list, `FALSE` if it was not.

### nm_setting_bond_validate_option ()

    gboolean
    nm_setting_bond_validate_option (const char *name,
                                     const char *value);

Checks whether `name` is a valid bond option and `value` is a valid value for the `name` . If `value` is `NULL`, the function only validates the option name.

#### Parameters

name | the name of the option to validate |
value (allow-none) | the value of the option to validate. |

#### Returns

`TRUE`, if the `value` is valid for the given name. If the `name` is not a valid option, `FALSE` will be returned.

### nm_setting_bond_get_valid_options ()

    const char **
    nm_setting_bond_get_valid_options (NMSettingBond *setting);

Returns a list of valid bond options.

The `setting` argument is unused and may be passed as `NULL`.

#### Parameters

setting | the NMSettingBond. | [allow-none]

#### Returns

a `NULL`-terminated array of strings of valid bond options.

[transfer none]

### nm_setting_bond_get_option_default ()

    const char *
    nm_setting_bond_get_option_default (NMSettingBond *setting,
                                        const char *name);

#### Parameters

setting | the NMSettingBond |
name | the name of the option |

#### Returns

the value of the bond option if not overridden by an entry in the “options” property.

### nm_setting_bond_get_option_normalized ()

    const char *
    nm_setting_bond_get_option_normalized (NMSettingBond *setting,
                                           const char *name);

#### Parameters

setting | the NMSettingBond |
name | the name of the option |

#### Returns

the value of the bond option after normalization, which is what NetworkManager will actually apply when activating the connection. `NULL` if the option won't be applied to the connection.

Since: 1.24

## Types and Values

### NM_SETTING_BOND_SETTING_NAME

    #define NM_SETTING_BOND_SETTING_NAME "bond"

### NM_SETTING_BOND_OPTIONS

    #define NM_SETTING_BOND_OPTIONS "options"

### NM_SETTING_BOND_OPTION_MODE

    #define NM_SETTING_BOND_OPTION_MODE              "mode"

### NM_SETTING_BOND_OPTION_MIIMON

    #define NM_SETTING_BOND_OPTION_MIIMON            "miimon"

### NM_SETTING_BOND_OPTION_DOWNDELAY

    #define NM_SETTING_BOND_OPTION_DOWNDELAY         "downdelay"

### NM_SETTING_BOND_OPTION_UPDELAY

    #define NM_SETTING_BOND_OPTION_UPDELAY           "updelay"

### NM_SETTING_BOND_OPTION_ARP_INTERVAL

    #define NM_SETTING_BOND_OPTION_ARP_INTERVAL      "arp_interval"

### NM_SETTING_BOND_OPTION_ARP_IP_TARGET

    #define NM_SETTING_BOND_OPTION_ARP_IP_TARGET     "arp_ip_target"

### NM_SETTING_BOND_OPTION_ARP_VALIDATE

    #define NM_SETTING_BOND_OPTION_ARP_VALIDATE      "arp_validate"

### NM_SETTING_BOND_OPTION_PRIMARY

    #define NM_SETTING_BOND_OPTION_PRIMARY           "primary"

### NM_SETTING_BOND_OPTION_PRIMARY_RESELECT

    #define NM_SETTING_BOND_OPTION_PRIMARY_RESELECT  "primary_reselect"

### NM_SETTING_BOND_OPTION_FAIL_OVER_MAC

    #define NM_SETTING_BOND_OPTION_FAIL_OVER_MAC     "fail_over_mac"

### NM_SETTING_BOND_OPTION_USE_CARRIER

    #define NM_SETTING_BOND_OPTION_USE_CARRIER       "use_carrier"

### NM_SETTING_BOND_OPTION_AD_SELECT

    #define NM_SETTING_BOND_OPTION_AD_SELECT         "ad_select"

### NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY

    #define NM_SETTING_BOND_OPTION_XMIT_HASH_POLICY  "xmit_hash_policy"

### NM_SETTING_BOND_OPTION_RESEND_IGMP

    #define NM_SETTING_BOND_OPTION_RESEND_IGMP       "resend_igmp"

### NM_SETTING_BOND_OPTION_LACP_RATE

    #define NM_SETTING_BOND_OPTION_LACP_RATE         "lacp_rate"

### NM_SETTING_BOND_OPTION_ACTIVE_SLAVE

    #define NM_SETTING_BOND_OPTION_ACTIVE_SLAVE      "active_slave"

### NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO

    #define NM_SETTING_BOND_OPTION_AD_ACTOR_SYS_PRIO "ad_actor_sys_prio"

### NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM

    #define NM_SETTING_BOND_OPTION_AD_ACTOR_SYSTEM   "ad_actor_system"

### NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY

    #define NM_SETTING_BOND_OPTION_AD_USER_PORT_KEY  "ad_user_port_key"

### NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE

    #define NM_SETTING_BOND_OPTION_ALL_SLAVES_ACTIVE "all_slaves_active"

### NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS

    #define NM_SETTING_BOND_OPTION_ARP_ALL_TARGETS   "arp_all_targets"

### NM_SETTING_BOND_OPTION_MIN_LINKS

    #define NM_SETTING_BOND_OPTION_MIN_LINKS         "min_links"

### NM_SETTING_BOND_OPTION_NUM_GRAT_ARP

    #define NM_SETTING_BOND_OPTION_NUM_GRAT_ARP      "num_grat_arp"

### NM_SETTING_BOND_OPTION_NUM_UNSOL_NA

    #define NM_SETTING_BOND_OPTION_NUM_UNSOL_NA      "num_unsol_na"

### NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE

    #define NM_SETTING_BOND_OPTION_PACKETS_PER_SLAVE "packets_per_slave"

### NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB

    #define NM_SETTING_BOND_OPTION_TLB_DYNAMIC_LB    "tlb_dynamic_lb"

### NM_SETTING_BOND_OPTION_LP_INTERVAL

    #define NM_SETTING_BOND_OPTION_LP_INTERVAL       "lp_interval"

### NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY

    #define NM_SETTING_BOND_OPTION_PEER_NOTIF_DELAY  "peer_notif_delay"