libnl: Bridging

libnl 3.7.0

Macros | Enumerations | Functions
Bridging
Routing Library (libnl-route) » Links (Interfaces)

## Macros
#define | VLAN_VID_MASK 0x0fff /* VLAN Identifier */

## Enumerations
enum | rtnl_link_bridge_flags { RTNL_BRIDGE_HAIRPIN_MODE = 0x0001 , RTNL_BRIDGE_BPDU_GUARD = 0x0002 , RTNL_BRIDGE_ROOT_BLOCK = 0x0004 , RTNL_BRIDGE_FAST_LEAVE = 0x0008 , RTNL_BRIDGE_UNICAST_FLOOD = 0x0010 , RTNL_BRIDGE_LEARNING = 0x0020 , RTNL_BRIDGE_LEARNING_SYNC = 0x0040 }
| Bridge flags.

## Functions
struct rtnl_link * | rtnl_link_bridge_alloc (void)
| Allocate link object of type bridge. More...
int | rtnl_link_bridge_add (struct nl_sock *sk, const char *name)
| Create a new kernel bridge device. More...
int | rtnl_link_is_bridge (struct rtnl_link *link)
| Check if a link is a bridge. More...
int | rtnl_link_bridge_has_ext_info (struct rtnl_link *link)
| Check if bridge has extended information. More...
int | rtnl_link_bridge_set_port_state (struct rtnl_link *link, uint8_t state)
| Set Spanning Tree Protocol (STP) port state. More...
int | rtnl_link_bridge_get_port_state (struct rtnl_link *link)
| Get Spanning Tree Protocol (STP) port state. More...
int | rtnl_link_bridge_set_priority (struct rtnl_link *link, uint16_t prio)
| Set priority. More...
int | rtnl_link_bridge_get_priority (struct rtnl_link *link)
| Get priority. More...
int | rtnl_link_bridge_set_cost (struct rtnl_link *link, uint32_t cost)
| Set Spanning Tree Protocol (STP) path cost. More...
int | rtnl_link_bridge_get_cost (struct rtnl_link *link, uint32_t *cost)
| Get Spanning Tree Protocol (STP) path cost. More...
int | rtnl_link_bridge_unset_flags (struct rtnl_link *link, unsigned int flags)
| Unset flags. More...
int | rtnl_link_bridge_set_flags (struct rtnl_link *link, unsigned int flags)
| Set flags. More...
int | rtnl_link_bridge_get_flags (struct rtnl_link *link)
| Get flags. More...
int | rtnl_link_bridge_set_self (struct rtnl_link *link)
| Set link change type to self. More...
int | rtnl_link_bridge_get_hwmode (struct rtnl_link *link, uint16_t *hwmode)
| Get hardware mode. More...
int | rtnl_link_bridge_set_hwmode (struct rtnl_link *link, uint16_t hwmode)
| Set hardware mode. More...
int | rtnl_link_bridge_pvid (struct rtnl_link *link)
int | rtnl_link_bridge_has_vlan (struct rtnl_link *link)
struct rtnl_link_bridge_vlan * | rtnl_link_bridge_get_port_vlan (struct rtnl_link *link)

## Flag Translation
char * | rtnl_link_bridge_flags2str (int flags, char *buf, size_t len)
int | rtnl_link_bridge_str2flags (const char *name)

## Port State Translation
char * | rtnl_link_bridge_portstate2str (int st, char *buf, size_t len)
int | rtnl_link_bridge_str2portstate (const char *name)

## Hardware Mode Translation
char * | rtnl_link_bridge_hwmode2str (uint16_t st, char *buf, size_t len)
uint16_t | rtnl_link_bridge_str2hwmode (const char *name)

## Detailed Description

## Function Documentation

## ◆ rtnl_link_bridge_alloc()

struct rtnl_link* rtnl_link_bridge_alloc | ( | void |  | ) |

Allocate link object of type bridge.

Returns
  Allocated link object or NULL.

Definition at line 458 of file bridge.c.

References rtnl_link_alloc(), rtnl_link_put(), and rtnl_link_set_type().

Referenced by rtnl_link_bridge_add().

Here is the call graph for this function:
Here is the caller graph for this function:

## ◆ rtnl_link_bridge_add()

int rtnl_link_bridge_add | ( | struct nl_sock * | sk,
|  | const char * | name
| ) |  |

Create a new kernel bridge device.

Parameters

  sk | netlink socket
  name | name of the bridge device or NULL

Creates a new bridge device in the kernel. If no name is provided, the kernel will automatically pick a name of the form "type%d" (e.g. bridge0, vlan1, etc.)

Returns
  0 on success or a negative error code

Definition at line 484 of file bridge.c.

References rtnl_link_add(), rtnl_link_bridge_alloc(), rtnl_link_put(), and rtnl_link_set_name().

Here is the call graph for this function:

## ◆ rtnl_link_is_bridge()

int rtnl_link_is_bridge | ( | struct rtnl_link * | link | ) |

Check if a link is a bridge.

Parameters

  link | Link object

Returns
  1 if the link is a bridge, 0 otherwise.

Definition at line 507 of file bridge.c.

Referenced by rtnl_link_bridge_has_ext_info().

Here is the caller graph for this function:

## ◆ rtnl_link_bridge_has_ext_info()

int rtnl_link_bridge_has_ext_info | ( | struct rtnl_link * | link | ) |

Check if bridge has extended information.

Parameters

  link | Link object of type bridge

Checks if the bridge object has been constructed based on information that is only available in newer kernels. This affectes the following functions:

- rtnl_link_bridge_get_cost()
- rtnl_link_bridge_get_priority()
- rtnl_link_bridge_get_flags()

Returns
  1 if extended information is available, otherwise 0 is returned.

Definition at line 526 of file bridge.c.

References rtnl_link_is_bridge().

Here is the call graph for this function:

## ◆ rtnl_link_bridge_set_port_state()

int rtnl_link_bridge_set_port_state | ( | struct rtnl_link * | link,
|  | uint8_t | state
| ) |  |

Set Spanning Tree Protocol (STP) port state.

Parameters

  link | Link object of type bridge
  state | New STP port state

The value of state must be one of the following:

- BR_STATE_DISABLED
- BR_STATE_LISTENING
- BR_STATE_LEARNING
- BR_STATE_FORWARDING
- BR_STATE_BLOCKING

See also
  rtnl_link_bridge_get_port_state()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge
  -NLE_INVAL | Invalid state value (0..BR_STATE_BLOCKING)

Definition at line 555 of file bridge.c.

## ◆ rtnl_link_bridge_get_port_state()

int rtnl_link_bridge_get_port_state | ( | struct rtnl_link * | link | ) |

Get Spanning Tree Protocol (STP) port state.

Parameters

  link | Link object of type bridge

See also
  rtnl_link_bridge_set_port_state()

Returns
  The STP port state or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 579 of file bridge.c.

## ◆ rtnl_link_bridge_set_priority()

int rtnl_link_bridge_set_priority | ( | struct rtnl_link * | link,
|  | uint16_t | prio
| ) |  |

Set priority.

Parameters

  link | Link object of type bridge
  prio | Bridge priority

See also
  rtnl_link_bridge_get_priority()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 598 of file bridge.c.

## ◆ rtnl_link_bridge_get_priority()

int rtnl_link_bridge_get_priority | ( | struct rtnl_link * | link | ) |

Get priority.

Parameters

  link | Link object of type bridge

See also
  rtnl_link_bridge_set_priority()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 619 of file bridge.c.

## ◆ rtnl_link_bridge_set_cost()

int rtnl_link_bridge_set_cost | ( | struct rtnl_link * | link,
|  | uint32_t | cost
| ) |  |

Set Spanning Tree Protocol (STP) path cost.

Parameters

  link | Link object of type bridge
  cost | New STP path cost value

See also
  rtnl_link_bridge_get_cost()

Returns
  The bridge priority or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 638 of file bridge.c.

## ◆ rtnl_link_bridge_get_cost()

int rtnl_link_bridge_get_cost | ( | struct rtnl_link * | link,
|  | uint32_t * | cost
| ) |  |

Get Spanning Tree Protocol (STP) path cost.

Parameters

  link | Link object of type bridge
  cost | Pointer to store STP cost value

See also
  rtnl_link_bridge_set_cost()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge
  -NLE_INVAL | `cost` is not a valid pointer

Definition at line 661 of file bridge.c.

## ◆ rtnl_link_bridge_unset_flags()

int rtnl_link_bridge_unset_flags | ( | struct rtnl_link * | link,
|  | unsigned int | flags
| ) |  |

Unset flags.

Parameters

  link | Link object of type bridge
  flags | Bridging flags to unset

See also
  rtnl_link_bridge_set_flags()
  rtnl_link_bridge_get_flags()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 686 of file bridge.c.

## ◆ rtnl_link_bridge_set_flags()

int rtnl_link_bridge_set_flags | ( | struct rtnl_link * | link,
|  | unsigned int | flags
| ) |  |

Set flags.

Parameters

  link | Link object of type bridge
  flags | Bridging flags to set

Valid flags are:

- RTNL_BRIDGE_HAIRPIN_MODE
- RTNL_BRIDGE_BPDU_GUARD
- RTNL_BRIDGE_ROOT_BLOCK
- RTNL_BRIDGE_FAST_LEAVE
- RTNL_BRIDGE_UNICAST_FLOOD
- RTNL_BRIDGE_LEARNING
- RTNL_BRIDGE_LEARNING_SYNC

See also
  rtnl_link_bridge_unset_flags()
  rtnl_link_bridge_get_flags()

Returns
  0 on success or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 719 of file bridge.c.

## ◆ rtnl_link_bridge_get_flags()

int rtnl_link_bridge_get_flags | ( | struct rtnl_link * | link | ) |

Get flags.

Parameters

  link | Link object of type bridge

See also
  rtnl_link_bridge_set_flags()
  rtnl_link_bridge_unset_flags()

Returns
  Flags or a negative error code.

Return values

  -NLE_OPNOTSUPP | Link is not a bridge

Definition at line 742 of file bridge.c.

## ◆ rtnl_link_bridge_set_self()

int rtnl_link_bridge_set_self | ( | struct rtnl_link * | link | ) |

Set link change type to self.

Parameters

  link | Link Object of type bridge

This will set the bridge change flag to self, meaning that changes to be applied with this link object will be applied directly to the physical device in a bridge instead of the virtual device.

Returns
  0 on success or negative error code
  -NLE_OPNOTSUP Link is not a bridge

Definition at line 762 of file bridge.c.

Referenced by rtnl_link_bridge_set_hwmode().

Here is the caller graph for this function:

## ◆ rtnl_link_bridge_get_hwmode()

int rtnl_link_bridge_get_hwmode | ( | struct rtnl_link * | link,
|  | uint16_t * | hwmode
| ) |  |

Get hardware mode.

Parameters

  link | Link object of type bridge
  hwmode | Output argument.

See also
  rtnl_link_bridge_set_hwmode()

Returns
  0 if hardware mode is present and returned in hwmode
  -NLE_NOATTR if hardware mode is not present
  -NLE_OPNOTSUP Link is not a bridge

Definition at line 785 of file bridge.c.

## ◆ rtnl_link_bridge_set_hwmode()

int rtnl_link_bridge_set_hwmode | ( | struct rtnl_link * | link,
|  | uint16_t | hwmode
| ) |  |

Set hardware mode.

Parameters

  link | Link object of type bridge
  hwmode | Hardware mode to set on link

This will set the hardware mode of a link when it supports hardware offloads for bridging.

See also
  rtnl_link_bridge_get_hwmode()

Valid modes are:

- RTNL_BRIDGE_HWMODE_VEB
- RTNL_BRIDGE_HWMODE_VEPA

When setting hardware mode, the change type will be set to self.

See also
  rtnl_link_bridge_set_self()

Returns
  0 on success or negative error code
  -NLE_OPNOTSUP Link is not a bridge
  -NLE_INVAL when specified hwmode is unsupported.

Definition at line 818 of file bridge.c.

References rtnl_link_bridge_set_self().

Here is the call graph for this function: