RTNL objects — pyroute2 0.9.4 documentation

# RTNL objects

## General structure

The NDB objects are dictionary-like structures that represent network objects -- interfaces, routes, addresses etc. They support the common dict API, like item getting, setting, iteration through key and values. In addition to that, NDB object add specific calls, see the API section below.

Most of the NDB object types store all attributes in a flat one level dictionary. Some, like multihop routes, implement nested structures. In addition to that, some objects like Interface provide views on the DB that list only related objects -- addresses, routes and neighbours. More on these topic see in the corresponding sections.

## NDB objects and RTNL API

The dictionary fields represent RTNL messages fields and NLA names, and the objects are used as argument dictionaries to normal IPRoute methods like link() or route(). Thus everything described for the IPRoute methods is valid here as well.

See also: IPRoute and related modules

    # create a vlan interface with IPRoute
    eth0 = 2
    with IPRoute() as ipr:
        ipr.link("add",
                 ifname="vlan1108",
                 kind="vlan",
                 link=eth0,
                 vlan_id=1108)

    # same with NDB:
    with NDB(log="stderr") as ndb:
        vlan = ndb.interfaces.create(
            ifname="vlan1108",
            kind="vlan",
            link="eth0",
            vlan_id=1108,
        )
        vlan.commit()

Slightly simplifying, if a network object doesn't exist, NDB will run an RTNL method with "add" argument, if exists -- "set", and to remove an object NDB will call the method with "del" argument.

## API

class pyroute2.ndb.objects.RTNL_Object
  property table
  property etable
  property key
  apply(rollback: bool = False, req_filter: None | Callable[[dict[str, str | int]], dict[str, str | int]] = None, mode: str = 'apply') → SyncBase
  commit() → SyncBase
  complete_key(key)
  create(**spec)
  exists(key)
  load_sql(table=None, ctxid=None, set_state=True)
  load_value(key, value)
  set(key, value)
  show(fmt)
  snapshot(ctxid=None)
  rollback(snapshot=None)