libnl  3.2.3
Links (Interfaces)

Data Structures

struct  rtnl_link
 Link object. More...

Modules

 Link Modules API
 

API for modules implementing specific link types/semantics.


 Bonding
 Dummy
 VLAN
 

Virtual LAN link module.


Enumerations

enum  rtnl_link_stat_id_t {
  RTNL_LINK_RX_PACKETS,
  RTNL_LINK_TX_PACKETS,
  RTNL_LINK_RX_BYTES,
  RTNL_LINK_TX_BYTES,
  RTNL_LINK_RX_ERRORS,
  RTNL_LINK_TX_ERRORS,
  RTNL_LINK_RX_DROPPED,
  RTNL_LINK_TX_DROPPED,
  RTNL_LINK_RX_COMPRESSED,
  RTNL_LINK_TX_COMPRESSED,
  RTNL_LINK_RX_FIFO_ERR,
  RTNL_LINK_TX_FIFO_ERR,
  RTNL_LINK_RX_LEN_ERR,
  RTNL_LINK_RX_OVER_ERR,
  RTNL_LINK_RX_CRC_ERR,
  RTNL_LINK_RX_FRAME_ERR,
  RTNL_LINK_RX_MISSED_ERR,
  RTNL_LINK_TX_ABORT_ERR,
  RTNL_LINK_TX_CARRIER_ERR,
  RTNL_LINK_TX_HBEAT_ERR,
  RTNL_LINK_TX_WIN_ERR,
  RTNL_LINK_COLLISIONS,
  RTNL_LINK_MULTICAST,
  RTNL_LINK_IP6_INPKTS,
  RTNL_LINK_IP6_INHDRERRORS,
  RTNL_LINK_IP6_INTOOBIGERRORS,
  RTNL_LINK_IP6_INNOROUTES,
  RTNL_LINK_IP6_INADDRERRORS,
  RTNL_LINK_IP6_INUNKNOWNPROTOS,
  RTNL_LINK_IP6_INTRUNCATEDPKTS,
  RTNL_LINK_IP6_INDISCARDS,
  RTNL_LINK_IP6_INDELIVERS,
  RTNL_LINK_IP6_OUTFORWDATAGRAMS,
  RTNL_LINK_IP6_OUTPKTS,
  RTNL_LINK_IP6_OUTDISCARDS,
  RTNL_LINK_IP6_OUTNOROUTES,
  RTNL_LINK_IP6_REASMTIMEOUT,
  RTNL_LINK_IP6_REASMREQDS,
  RTNL_LINK_IP6_REASMOKS,
  RTNL_LINK_IP6_REASMFAILS,
  RTNL_LINK_IP6_FRAGOKS,
  RTNL_LINK_IP6_FRAGFAILS,
  RTNL_LINK_IP6_FRAGCREATES,
  RTNL_LINK_IP6_INMCASTPKTS,
  RTNL_LINK_IP6_OUTMCASTPKTS,
  RTNL_LINK_IP6_INBCASTPKTS,
  RTNL_LINK_IP6_OUTBCASTPKTS,
  RTNL_LINK_IP6_INOCTETS,
  RTNL_LINK_IP6_OUTOCTETS,
  RTNL_LINK_IP6_INMCASTOCTETS,
  RTNL_LINK_IP6_OUTMCASTOCTETS,
  RTNL_LINK_IP6_INBCASTOCTETS,
  RTNL_LINK_IP6_OUTBCASTOCTETS,
  RTNL_LINK_ICMP6_INMSGS,
  RTNL_LINK_ICMP6_INERRORS,
  RTNL_LINK_ICMP6_OUTMSGS,
  RTNL_LINK_ICMP6_OUTERRORS,
  __RTNL_LINK_STATS_MAX
}

Get / List

int rtnl_link_alloc_cache (struct nl_sock *sk, int family, struct nl_cache **result)
 Allocate link cache and fill in all configured links.
struct rtnl_linkrtnl_link_get (struct nl_cache *cache, int ifindex)
 Lookup link in cache by interface index.
struct rtnl_linkrtnl_link_get_by_name (struct nl_cache *cache, const char *name)
 Lookup link in cache by link name.
int rtnl_link_build_get_request (int ifindex, const char *name, struct nl_msg **result)
 Construct RTM_GETLINK netlink message.
int rtnl_link_get_kernel (struct nl_sock *sk, int ifindex, const char *name, struct rtnl_link **result)
 Get a link object directly from kernel.
char * rtnl_link_i2name (struct nl_cache *cache, int ifindex, char *dst, size_t len)
 Translate interface index to corresponding link name.
int rtnl_link_name2i (struct nl_cache *cache, const char *name)
 Translate link name to corresponding interface index.

Add / Modify

int rtnl_link_build_add_request (struct rtnl_link *link, int flags, struct nl_msg **result)
 Build a netlink message requesting the addition of new virtual link.
int rtnl_link_add (struct nl_sock *sk, struct rtnl_link *link, int flags)
 Add virtual link.
int rtnl_link_build_change_request (struct rtnl_link *orig, struct rtnl_link *changes, int flags, struct nl_msg **result)
 Build a netlink message requesting the modification of link.
int rtnl_link_change (struct nl_sock *sk, struct rtnl_link *orig, struct rtnl_link *changes, int flags)
 Change link.

Delete

int rtnl_link_build_delete_request (const struct rtnl_link *link, struct nl_msg **result)
 Build a netlink message requesting the deletion of a link.
int rtnl_link_delete (struct nl_sock *sk, const struct rtnl_link *link)
 Delete link.

Link Object

struct rtnl_linkrtnl_link_alloc (void)
 Allocate link object.
void rtnl_link_put (struct rtnl_link *link)
 Return a link object reference.
void rtnl_link_set_name (struct rtnl_link *link, const char *name)
 Set name of link object.
char * rtnl_link_get_name (struct rtnl_link *link)
 Return name of link object.
void rtnl_link_set_addr (struct rtnl_link *link, struct nl_addr *addr)
 Set link layer address of link object.
struct nl_addr * rtnl_link_get_addr (struct rtnl_link *link)
 Return link layer address of link object.
void rtnl_link_set_broadcast (struct rtnl_link *link, struct nl_addr *addr)
 Set link layer broadcast address of link object.
struct nl_addr * rtnl_link_get_broadcast (struct rtnl_link *link)
 Return link layer broadcast address of link object.
void rtnl_link_set_flags (struct rtnl_link *link, unsigned int flags)
 Set flags of link object.
void rtnl_link_unset_flags (struct rtnl_link *link, unsigned int flags)
 Unset flags of link object.
unsigned int rtnl_link_get_flags (struct rtnl_link *link)
 Return flags of link object.
void rtnl_link_set_family (struct rtnl_link *link, int family)
 Set address family of link object.
int rtnl_link_get_family (struct rtnl_link *link)
 Return address family of link object.
void rtnl_link_set_arptype (struct rtnl_link *link, unsigned int arptype)
 Set hardware type of link object.
unsigned int rtnl_link_get_arptype (struct rtnl_link *link)
 Get hardware type of link object.
void rtnl_link_set_ifindex (struct rtnl_link *link, int ifindex)
 Set interface index of link object.
int rtnl_link_get_ifindex (struct rtnl_link *link)
 Return interface index of link object.
void rtnl_link_set_mtu (struct rtnl_link *link, unsigned int mtu)
 Set Maximum Transmission Unit of link object.
unsigned int rtnl_link_get_mtu (struct rtnl_link *link)
 Return maximum transmission unit of link object.
void rtnl_link_set_txqlen (struct rtnl_link *link, unsigned int txqlen)
 Set transmission queue length.
unsigned int rtnl_link_get_txqlen (struct rtnl_link *link)
 Return transmission queue length.
void rtnl_link_set_link (struct rtnl_link *link, int ifindex)
int rtnl_link_get_link (struct rtnl_link *link)
void rtnl_link_set_master (struct rtnl_link *link, int ifindex)
 Set master link of link object.
int rtnl_link_get_master (struct rtnl_link *link)
 Return master link of link object.
void rtnl_link_set_operstate (struct rtnl_link *link, uint8_t status)
 Set operational status of link object.
uint8_t rtnl_link_get_operstate (struct rtnl_link *link)
 Return operational status of link object.
void rtnl_link_set_linkmode (struct rtnl_link *link, uint8_t mode)
 Set link mode of link object.
uint8_t rtnl_link_get_linkmode (struct rtnl_link *link)
 Return link mode of link object.
const char * rtnl_link_get_ifalias (struct rtnl_link *link)
 Return alias name of link object (SNMP IfAlias)
void rtnl_link_set_ifalias (struct rtnl_link *link, const char *alias)
 Set alias name of link object (SNMP IfAlias)
void rtnl_link_set_qdisc (struct rtnl_link *link, const char *name)
 Set queueing discipline name of link object.
char * rtnl_link_get_qdisc (struct rtnl_link *link)
 Return name of queueing discipline of link object.
int rtnl_link_get_num_vf (struct rtnl_link *link, uint32_t *num_vf)
 Return number of PCI virtual functions of link object.
uint64_t rtnl_link_get_stat (struct rtnl_link *link, rtnl_link_stat_id_t id)
 Return value of link statistics counter.
int rtnl_link_set_stat (struct rtnl_link *link, rtnl_link_stat_id_t id, const uint64_t value)
 Set value of link statistics counter.
int rtnl_link_set_type (struct rtnl_link *link, const char *type)
 Set type of link object.
char * rtnl_link_get_type (struct rtnl_link *link)
 Return type of link.

Master/Slave

int rtnl_link_enslave_ifindex (struct nl_sock *sock, int master, int slave)
 Enslave slave link to master link.
int rtnl_link_enslave (struct nl_sock *sock, struct rtnl_link *master, struct rtnl_link *slave)
 Enslave slave link to master link.
int rtnl_link_release_ifindex (struct nl_sock *sock, int slave)
 Release slave link from its master.
int rtnl_link_release (struct nl_sock *sock, struct rtnl_link *slave)
 Release slave link from its master.

Utilities

char * rtnl_link_flags2str (int flags, char *buf, size_t len)
int rtnl_link_str2flags (const char *name)
char * rtnl_link_stat2str (int st, char *buf, size_t len)
int rtnl_link_str2stat (const char *name)
char * rtnl_link_operstate2str (uint8_t st, char *buf, size_t len)
int rtnl_link_str2operstate (const char *name)
char * rtnl_link_mode2str (uint8_t st, char *buf, size_t len)
int rtnl_link_str2mode (const char *name)

Deprecated Functions

int rtnl_link_set_info_type (struct rtnl_link *link, const char *type)
char * rtnl_link_get_info_type (struct rtnl_link *link)
void rtnl_link_set_weight (struct rtnl_link *link, unsigned int weight)
unsigned int rtnl_link_get_weight (struct rtnl_link *link)

Detailed Description

Related Documentation:
Link Documentation (Routing Family Library)

Enumeration Type Documentation

Enumerator:
RTNL_LINK_RX_PACKETS 

Packets received

RTNL_LINK_TX_PACKETS 

Packets sent

RTNL_LINK_RX_BYTES 

Bytes received

RTNL_LINK_TX_BYTES 

Bytes sent

RTNL_LINK_RX_ERRORS 

Receive errors

RTNL_LINK_TX_ERRORS 

Send errors

RTNL_LINK_RX_DROPPED 

Received packets dropped

RTNL_LINK_TX_DROPPED 

Packets dropped during transmit

RTNL_LINK_RX_COMPRESSED 

Compressed packets received

RTNL_LINK_TX_COMPRESSED 

Compressed packets sent

RTNL_LINK_RX_FIFO_ERR 

Receive FIFO errors

RTNL_LINK_TX_FIFO_ERR 

Send FIFO errors

RTNL_LINK_RX_LEN_ERR 

Length errors

RTNL_LINK_RX_OVER_ERR 

Over errors

RTNL_LINK_RX_CRC_ERR 

CRC errors

RTNL_LINK_RX_FRAME_ERR 

Frame errors

RTNL_LINK_RX_MISSED_ERR 

Missed errors

RTNL_LINK_TX_ABORT_ERR 

Aborted errors

RTNL_LINK_TX_CARRIER_ERR 

Carrier errors

RTNL_LINK_TX_HBEAT_ERR 

Heartbeat errors

RTNL_LINK_TX_WIN_ERR 

Window errors

RTNL_LINK_COLLISIONS 

Send collisions

RTNL_LINK_MULTICAST 

Multicast

RTNL_LINK_IP6_INPKTS 

IPv6 SNMP InReceives

RTNL_LINK_IP6_INHDRERRORS 

IPv6 SNMP InHdrErrors

RTNL_LINK_IP6_INTOOBIGERRORS 

IPv6 SNMP InTooBigErrors

RTNL_LINK_IP6_INNOROUTES 

IPv6 SNMP InNoRoutes

RTNL_LINK_IP6_INADDRERRORS 

IPv6 SNMP InAddrErrors

RTNL_LINK_IP6_INUNKNOWNPROTOS 

IPv6 SNMP InUnknownProtos

RTNL_LINK_IP6_INTRUNCATEDPKTS 

IPv6 SNMP InTruncatedPkts

RTNL_LINK_IP6_INDISCARDS 

IPv6 SNMP InDiscards

RTNL_LINK_IP6_INDELIVERS 

IPv6 SNMP InDelivers

RTNL_LINK_IP6_OUTFORWDATAGRAMS 

IPv6 SNMP OutForwDatagrams

RTNL_LINK_IP6_OUTPKTS 

IPv6 SNMP OutRequests

RTNL_LINK_IP6_OUTDISCARDS 

IPv6 SNMP OutDiscards

RTNL_LINK_IP6_OUTNOROUTES 

IPv6 SNMP OutNoRoutes

RTNL_LINK_IP6_REASMTIMEOUT 

IPv6 SNMP ReasmTimeout

RTNL_LINK_IP6_REASMREQDS 

IPv6 SNMP ReasmReqds

RTNL_LINK_IP6_REASMOKS 

IPv6 SNMP ReasmOKs

RTNL_LINK_IP6_REASMFAILS 

IPv6 SNMP ReasmFails

RTNL_LINK_IP6_FRAGOKS 

IPv6 SNMP FragOKs

RTNL_LINK_IP6_FRAGFAILS 

IPv6 SNMP FragFails

RTNL_LINK_IP6_FRAGCREATES 

IPv6 SNMP FragCreates

RTNL_LINK_IP6_INMCASTPKTS 

IPv6 SNMP InMcastPkts

RTNL_LINK_IP6_OUTMCASTPKTS 

IPv6 SNMP OutMcastPkts

RTNL_LINK_IP6_INBCASTPKTS 

IPv6 SNMP InBcastPkts

RTNL_LINK_IP6_OUTBCASTPKTS 

IPv6 SNMP OutBcastPkts

RTNL_LINK_IP6_INOCTETS 

IPv6 SNMP InOctets

RTNL_LINK_IP6_OUTOCTETS 

IPv6 SNMP OutOctets

RTNL_LINK_IP6_INMCASTOCTETS 

IPv6 SNMP InMcastOctets

RTNL_LINK_IP6_OUTMCASTOCTETS 

IPv6 SNMP OutMcastOctets

RTNL_LINK_IP6_INBCASTOCTETS 

IPv6 SNMP InBcastOctets

RTNL_LINK_IP6_OUTBCASTOCTETS 

IPv6 SNMP OutBcastOctets

RTNL_LINK_ICMP6_INMSGS 

ICMPv6 SNMP InMsgs

RTNL_LINK_ICMP6_INERRORS 

ICMPv6 SNMP InErrors

RTNL_LINK_ICMP6_OUTMSGS 

ICMPv6 SNMP OutMsgs

RTNL_LINK_ICMP6_OUTERRORS 

ICMPv6 SNMP OutErrors

Definition at line 37 of file link.h.


Function Documentation

int rtnl_link_alloc_cache ( struct nl_sock *  sk,
int  family,
struct nl_cache **  result 
)

Allocate link cache and fill in all configured links.

Parameters:
skNetlink socket.
familyLink address family or AF_UNSPEC
resultPointer to store resulting cache.

Allocates and initializes a new link cache. A netlink message is sent to the kernel requesting a full dump of all configured links. The returned messages are parsed and filled into the cache. If the operation succeeds the resulting cache will a link object for each link configured in the kernel.

If family is set to an address family other than AF_UNSPEC the contents of the cache can be limited to a specific address family. Currently the following address families are supported:

  • AF_BRIDGE
  • AF_INET6
Related Documentation:
Get List of Links (Routing Family Library)
See also:
rtnl_link_get()
rtnl_link_get_by_name()
Returns:
0 on success or a negative error code.

Definition at line 843 of file link.c.

References nl_cache_alloc(), nl_cache_free(), and nl_cache_refill().

+ Here is the call graph for this function:

struct rtnl_link* rtnl_link_get ( struct nl_cache *  cache,
int  ifindex 
) [read]

Lookup link in cache by interface index.

Parameters:
cacheLink cache
ifindexInterface index

Searches through the provided cache looking for a link with matching interface index.

Attention:
The reference counter of the returned link object will be incremented. Use rtnl_link_put() to release the reference.
Related Documentation:
Get List of Links (Routing Family Library)
See also:
rtnl_link_get_by_name()
Returns:
Link object or NULL if no match was found.

Definition at line 878 of file link.c.

References nl_object_get().

Referenced by rtnl_link_i2name().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

struct rtnl_link* rtnl_link_get_by_name ( struct nl_cache *  cache,
const char *  name 
) [read]

Lookup link in cache by link name.

Parameters:
cacheLink cache
nameName of link

Searches through the provided cache looking for a link with matching link name

Attention:
The reference counter of the returned link object will be incremented. Use rtnl_link_put() to release the reference.
Related Documentation:
Get List of Links (Routing Family Library)
See also:
rtnl_link_get()
Returns:
Link object or NULL if no match was found.

Definition at line 910 of file link.c.

References nl_object_get().

Referenced by rtnl_link_name2i().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_build_get_request ( int  ifindex,
const char *  name,
struct nl_msg **  result 
)

Construct RTM_GETLINK netlink message.

Parameters:
ifindexInterface index
nameName of link
resultPointer to store resulting netlink message

The behaviour of this function is identical to rtnl_link_get_kernel() with the exception that it will not send the message but return it in the provided return pointer instead.

See also:
rtnl_link_get_kernel()
Returns:
0 on success or a negative error code.

Definition at line 942 of file link.c.

References NLA_PUT_STRING, nlmsg_alloc_simple(), nlmsg_append(), and nlmsg_free().

Referenced by rtnl_link_get_kernel().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_get_kernel ( struct nl_sock *  sk,
int  ifindex,
const char *  name,
struct rtnl_link **  result 
)

Get a link object directly from kernel.

Parameters:
skNetlink socket
ifindexInterface index
nameName of link
resultPointer to store resulting link object

This function builds a RTM_GETLINK netlink message to request a specific link directly from the kernel. The returned answer is parsed into a struct rtnl_link object and returned via the result pointer or -NLE_OBJ_NOTFOUND is returned if no matching link was found.

Related Documentation:
Lookup Single Link (Direct Lookup) (Routing Family Library)
Returns:
0 on success or a negative error code.

Definition at line 991 of file link.c.

References nl_pickup(), nl_send_auto(), nl_wait_for_ack(), nlmsg_free(), and rtnl_link_build_get_request().

Referenced by rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char* rtnl_link_i2name ( struct nl_cache *  cache,
int  ifindex,
char *  dst,
size_t  len 
)

Translate interface index to corresponding link name.

Parameters:
cacheLink cache
ifindexInterface index
dstString to store name
lenLength of destination string

Translates the specified interface index to the corresponding link name and stores the name in the destination string.

Related Documentation:
Translating interface index to link name (Routing Family Library)
See also:
rtnl_link_name2i()
Returns:
Name of link or NULL if no match was found.

Definition at line 1033 of file link.c.

References rtnl_link_get(), and rtnl_link_put().

+ Here is the call graph for this function:

int rtnl_link_name2i ( struct nl_cache *  cache,
const char *  name 
)

Translate link name to corresponding interface index.

Parameters:
cacheLink cache
nameName of link
Related Documentation:
Translating interface index to link name (Routing Family Library)
See also:
rtnl_link_i2name()
Returns:
Interface index or 0 if no match was found.

Definition at line 1056 of file link.c.

References rtnl_link_get_by_name(), and rtnl_link_put().

+ Here is the call graph for this function:

int rtnl_link_build_add_request ( struct rtnl_link link,
int  flags,
struct nl_msg **  result 
)

Build a netlink message requesting the addition of new virtual link.

Parameters:
linknew link to add
flagsadditional netlink message flags
resultpointer to store resulting netlink message

The behaviour of this function is identical to rtnl_link_add() with the exception that it will not send the message but return it in the provided return pointer instead.

See also:
rtnl_link_add()
Note:
This operation is not supported on all kernel versions.
Returns:
0 on success or a negative error code.

Definition at line 1170 of file link.c.

Referenced by rtnl_link_add().

+ Here is the caller graph for this function:

int rtnl_link_add ( struct nl_sock *  sk,
struct rtnl_link link,
int  flags 
)

Add virtual link.

Parameters:
sknetlink socket.
linknew link to add
flagsadditional netlink message flags

Builds a RTM_NEWLINK netlink message requesting the addition of a new virtual link.

After sending, the function will wait for the ACK or an eventual error message to be received and will therefore block until the operation has been completed.

Returns:
0 on success or a negative error code.

Definition at line 1199 of file link.c.

References nl_send_sync(), and rtnl_link_build_add_request().

Referenced by rtnl_link_bond_add().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_build_change_request ( struct rtnl_link orig,
struct rtnl_link changes,
int  flags,
struct nl_msg **  result 
)

Build a netlink message requesting the modification of link.

Parameters:
origoriginal link to change
changeslink containing the changes to be made
flagsadditional netlink message flags
resultpointer to store resulting netlink message

The behaviour of this function is identical to rtnl_link_change() with the exception that it will not send the message but return it in the provided return pointer instead.

See also:
rtnl_link_change()
Note:
The resulting message will have message type set to RTM_NEWLINK which may not work with older kernels. You may have to modify it to RTM_SETLINK (does not allow changing link info attributes) to have the change request work with older kernels.
Returns:
0 on success or a negative error code.

Definition at line 1231 of file link.c.

Referenced by rtnl_link_change().

+ Here is the caller graph for this function:

int rtnl_link_change ( struct nl_sock *  sk,
struct rtnl_link orig,
struct rtnl_link changes,
int  flags 
)

Change link.

Parameters:
sknetlink socket.
origoriginal link to be changed
changeslink containing the changes to be made
flagsadditional netlink message flags

Builds a RTM_NEWLINK netlink message requesting the change of a network link. If -EOPNOTSUPP is returned by the kernel, the message type will be changed to RTM_SETLINK and the message is resent to work around older kernel versions.

The link to be changed is looked up based on the interface index supplied in the orig link. Optionaly the link name is used but only if no interface index is provided, otherwise providing an link name will result in the link name being changed.

If no matching link exists, the function will return -NLE_OBJ_NOTFOUND.

After sending, the function will wait for the ACK or an eventual error message to be received and will therefore block until the operation has been completed.

Note:
The link name can only be changed if the link has been put in opertional down state. (~IF_UP)
Returns:
0 on success or a negative error code.

Definition at line 1298 of file link.c.

References nlmsg_free(), and rtnl_link_build_change_request().

Referenced by rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_build_delete_request ( const struct rtnl_link link,
struct nl_msg **  result 
)

Build a netlink message requesting the deletion of a link.

Parameters:
linkLink to delete
resultPointer to store resulting netlink message

The behaviour of this function is identical to rtnl_link_delete() with the exception that it will not send the message but return it in the provided return pointer instead.

See also:
rtnl_link_delete()
Returns:
0 on success or a negative error code.

Definition at line 1344 of file link.c.

References NLA_PUT_STRING, nlmsg_alloc_simple(), nlmsg_append(), and nlmsg_free().

Referenced by rtnl_link_delete().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_delete ( struct nl_sock *  sk,
const struct rtnl_link link 
)

Delete link.

Parameters:
skNetlink socket
linkLink to delete

Builds a RTM_DELLINK netlink message requesting the deletion of a network link which has been previously added to the kernel and sends the message to the kernel.

If no matching link exists, the function will return -NLE_OBJ_NOTFOUND.

After sending, the function will wait for the ACK or an eventual error message to be received and will therefore block until the operation has been completed.

Note:
Only virtual links such as dummy interface or vlan interfaces can be deleted. It is not possible to delete physical interfaces such as ethernet interfaces or the loopback device.
Returns:
0 on success or a negative error code.

Definition at line 1398 of file link.c.

References nl_send_sync(), and rtnl_link_build_delete_request().

+ Here is the call graph for this function:

struct rtnl_link* rtnl_link_alloc ( void  ) [read]

Allocate link object.

See also:
rtnl_link_put()
Returns:
New link object or NULL if allocation failed

Definition at line 1422 of file link.c.

References nl_object_alloc().

Referenced by rtnl_link_bond_add(), rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void rtnl_link_put ( struct rtnl_link link)

Return a link object reference.

Parameters:
objobject to release reference from

Definition at line 1432 of file link.c.

References nl_object_put().

Referenced by rtnl_link_bond_add(), rtnl_link_bond_enslave_ifindex(), rtnl_link_enslave_ifindex(), rtnl_link_i2name(), rtnl_link_name2i(), rtnl_tc_set_ifindex(), and rtnl_tc_set_link().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void rtnl_link_set_name ( struct rtnl_link link,
const char *  name 
)

Set name of link object.

Parameters:
linkLink object
nameNew name
Note:
To change the name of a link in the kernel, set the interface index to the link you wish to change, modify the link name using this function and pass the link object to rtnl_link_change() or rtnl_link_add().
Related Documentation:
Link Name (Routing Family Library)
See also:
rtnl_link_get_name()
rtnl_link_set_ifindex()

Definition at line 1451 of file link.c.

Referenced by rtnl_link_bond_add().

+ Here is the caller graph for this function:

char* rtnl_link_get_name ( struct rtnl_link link)

Return name of link object.

Parameters:
linkLink object
Related Documentation:
Link Name (Routing Family Library)
See also:
rtnl_link_set_name()
Returns:
Link name or NULL if name is not specified

Definition at line 1465 of file link.c.

Referenced by rtnl_link_bond_add().

+ Here is the caller graph for this function:

void rtnl_link_set_addr ( struct rtnl_link link,
struct nl_addr *  addr 
)

Set link layer address of link object.

Parameters:
linkLink object
addrNew link layer address

The function increments the reference counter of the address object and overwrites any existing link layer address previously assigned.

Related Documentation:
Link layer address (Routing Family Library)
See also:
rtnl_link_get_addr()

Definition at line 1493 of file link.c.

struct nl_addr* rtnl_link_get_addr ( struct rtnl_link link) [read]

Return link layer address of link object.

Parameters:
linkLink object
Related Documentation:
Link Layer Address (Routing Family Library)
See also:
rtnl_link_set_addr()
Returns:
Link layer address or NULL if not set.

Definition at line 1507 of file link.c.

void rtnl_link_set_broadcast ( struct rtnl_link link,
struct nl_addr *  addr 
)

Set link layer broadcast address of link object.

Parameters:
linkLink object
addrNew broadcast address

The function increments the reference counter of the address object and overwrites any existing link layer broadcast address previously assigned.

Related Documentation:
Link Layer Broadcast Address (Routing Family Library)
See also:
rtnl_link_get_broadcast()

Definition at line 1524 of file link.c.

struct nl_addr* rtnl_link_get_broadcast ( struct rtnl_link link) [read]

Return link layer broadcast address of link object.

Parameters:
linkLink object
Related Documentation:
Link Layer Address (Routing Family Library)
See also:
rtnl_link_set_broadcast()
Returns:
Link layer address or NULL if not set.

Definition at line 1538 of file link.c.

void rtnl_link_set_flags ( struct rtnl_link link,
unsigned int  flags 
)

Set flags of link object.

Parameters:
linkLink object
flagsFlags
See also:
rtnl_link_get_flags()
rtnl_link_unset_flags()

Definition at line 1551 of file link.c.

void rtnl_link_unset_flags ( struct rtnl_link link,
unsigned int  flags 
)

Unset flags of link object.

Parameters:
linkLink object
flagsFlags
See also:
rtnl_link_set_flags()
rtnl_link_get_flags()

Definition at line 1566 of file link.c.

unsigned int rtnl_link_get_flags ( struct rtnl_link link)

Return flags of link object.

Parameters:
linkLink object
Related Documentation:
Link Flags (Routing Family Library)
See also:
rtnl_link_set_flags()
rtnl_link_unset_flags()
Returns:
Link flags or 0 if none have been set.

Definition at line 1582 of file link.c.

void rtnl_link_set_family ( struct rtnl_link link,
int  family 
)

Set address family of link object.

See also:
rtnl_link_get_family()

Definition at line 1592 of file link.c.

int rtnl_link_get_family ( struct rtnl_link link)

Return address family of link object.

Parameters:
linkLink object
See also:
rtnl_link_set_family()
Returns:
Address family or AF_UNSPEC if not specified.

Definition at line 1605 of file link.c.

void rtnl_link_set_arptype ( struct rtnl_link link,
unsigned int  arptype 
)

Set hardware type of link object.

Parameters:
linkLink object
arptypeNew hardware type (ARPHRD_*)
Related Documentation:
Hardware Type (Routing Family Library)
See also:
rtnl_link_get_arptype()

Definition at line 1619 of file link.c.

unsigned int rtnl_link_get_arptype ( struct rtnl_link link)

Get hardware type of link object.

Parameters:
linkLink object
Related Documentation:
Hardware Type (Routing Family Library)
See also:
rtnl_link_set_arptype()
Returns:
Hardware type (ARPHRD_ETHER *) or ARPHRD_VOID

Definition at line 1633 of file link.c.

void rtnl_link_set_ifindex ( struct rtnl_link link,
int  ifindex 
)

Set interface index of link object.

Parameters:
linkLink object
ifindexInterface index
Related Documentation:
Interface Index (Routing Family Library)
See also:
rtnl_link_get_ifindex()

Definition at line 1649 of file link.c.

Referenced by rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the caller graph for this function:

int rtnl_link_get_ifindex ( struct rtnl_link link)

Return interface index of link object.

Parameters:
linkLink object
Related Documentation:
Interface Index (Routing Family Library)
See also:
rtnl_link_set_ifindex()
Returns:
Interface index or 0 if not set.

Definition at line 1664 of file link.c.

Referenced by rtnl_link_bond_enslave(), rtnl_link_bond_release(), rtnl_link_enslave(), and rtnl_link_release().

+ Here is the caller graph for this function:

void rtnl_link_set_mtu ( struct rtnl_link link,
unsigned int  mtu 
)

Set Maximum Transmission Unit of link object.

Parameters:
linkLink object
mtuNew MTU value in number of bytes
Related Documentation:
Maximum Transmission Unit (Routing Family Library)
See also:
rtnl_link_get_mtu()

Definition at line 1677 of file link.c.

unsigned int rtnl_link_get_mtu ( struct rtnl_link link)

Return maximum transmission unit of link object.

Parameters:
linkLink object
Related Documentation:
Maximum Transmission Unit (Routing Family Library)
See also:
rtnl_link_set_mtu()
Returns:
MTU in bytes or 0 if not set

Definition at line 1691 of file link.c.

void rtnl_link_set_txqlen ( struct rtnl_link link,
unsigned int  txqlen 
)

Set transmission queue length.

Parameters:
linkLink object
txqlenNew queue length

The unit is dependant on the link type. The most common units is number of packets.

Related Documentation:
Transmission Queue Length (Routing Family Library)

Definition at line 1706 of file link.c.

unsigned int rtnl_link_get_txqlen ( struct rtnl_link link)

Return transmission queue length.

Parameters:
linkLink object

The unit is dependant on the link type. The most common units is number of packets.

Related Documentation:
Transmission Queue Length (Routing Family Library)
Returns:
queue length or 0 if not specified.

Definition at line 1722 of file link.c.

void rtnl_link_set_master ( struct rtnl_link link,
int  ifindex 
)

Set master link of link object.

Parameters:
linkLink object
ifindexInterface index of master link
See also:
rtnl_link_get_master()

Definition at line 1745 of file link.c.

Referenced by rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the caller graph for this function:

int rtnl_link_get_master ( struct rtnl_link link)

Return master link of link object.

Parameters:
linkLink object
See also:
rtnl_link_set_master()
Returns:
Interface index of master link or 0 if not specified

Definition at line 1758 of file link.c.

Referenced by rtnl_link_bond_enslave_ifindex(), and rtnl_link_enslave_ifindex().

+ Here is the caller graph for this function:

void rtnl_link_set_operstate ( struct rtnl_link link,
uint8_t  status 
)

Set operational status of link object.

Parameters:
linkLink object
statusNew opertional status
Related Documentation:
Operational Status (Routing Family Library)}
See also:
rtnl_link_get_operstate()

Definition at line 1771 of file link.c.

uint8_t rtnl_link_get_operstate ( struct rtnl_link link)

Return operational status of link object.

Parameters:
linkLink object
Related Documentation:
Operational Status (Routing Family Library)
See also:
rtnl_link_set_operstate()
Returns:
Opertional state or IF_OPER_UNKNOWN

Definition at line 1785 of file link.c.

void rtnl_link_set_linkmode ( struct rtnl_link link,
uint8_t  mode 
)

Set link mode of link object.

Parameters:
linkLink object
modeNew link mode
Related Documentation:
Mode (Routing Family Library)
See also:
rtnl_link_get_linkmode()

Definition at line 1798 of file link.c.

uint8_t rtnl_link_get_linkmode ( struct rtnl_link link)

Return link mode of link object.

Parameters:
linkLink object
Related Documentation:
Mode (Routing Family Library)
See also:
rtnl_link_get_linkmode()
Returns:
Link mode or IF_LINK_MODE_DEFAULT

Definition at line 1812 of file link.c.

const char* rtnl_link_get_ifalias ( struct rtnl_link link)

Return alias name of link object (SNMP IfAlias)

Parameters:
linkLink object
Related Documentation:
Alias (Routing Family Library)
See also:
rtnl_link_set_ifalias()
Returns:
Alias name or NULL if not set.

Definition at line 1825 of file link.c.

void rtnl_link_set_ifalias ( struct rtnl_link link,
const char *  alias 
)

Set alias name of link object (SNMP IfAlias)

Parameters:
linkLink object
aliasAlias name or NULL to unset

Sets the alias name of the link to the specified name. The alias name can be unset by specyfing NULL as the alias. The name will be strdup()ed, so no need to provide a persistent character string.

Related Documentation:
Alias (Routing Family Library)
See also:
rtnl_link_get_ifalias()

Definition at line 1842 of file link.c.

void rtnl_link_set_qdisc ( struct rtnl_link link,
const char *  name 
)

Set queueing discipline name of link object.

Parameters:
linkLink object
nameName of queueing discipline

For more information on how to modify the qdisc of a link, see section Traffic Control (Routing Family Library).

Related Documentation:
Queueing Discipline Name (Routing Family Library)
See also:
rtnl_link_get_qdisc()

Definition at line 1866 of file link.c.

char* rtnl_link_get_qdisc ( struct rtnl_link link)

Return name of queueing discipline of link object.

Parameters:
linkLink object
Related Documentation:
Queueing Discipline Name (Routing Family Library)
See also:
rtnl_link_set_qdisc()
Returns:
Name of qdisc or NULL if not specified.

Definition at line 1880 of file link.c.

int rtnl_link_get_num_vf ( struct rtnl_link link,
uint32_t *  num_vf 
)

Return number of PCI virtual functions of link object.

Parameters:
linkLink object
num_vfPointer to store number of VFs
Returns:
0 on success or -NLE_OPNOTSUPP if not available

Definition at line 1893 of file link.c.

uint64_t rtnl_link_get_stat ( struct rtnl_link link,
rtnl_link_stat_id_t  id 
)

Return value of link statistics counter.

Parameters:
linkLink object
idIdentifier of statistical counter
Returns:
Value of counter or 0 if not specified.

Definition at line 1909 of file link.c.

int rtnl_link_set_stat ( struct rtnl_link link,
rtnl_link_stat_id_t  id,
const uint64_t  value 
)

Set value of link statistics counter.

Parameters:
linkLink object
idIdentifier of statistical counter
valueNew value
Note:
Changing the value of a statistical counter will not change the value in the kernel.
Returns:
0 on success or a negative error code

Definition at line 1928 of file link.c.

int rtnl_link_set_type ( struct rtnl_link link,
const char *  type 
)

Set type of link object.

Parameters:
linkLink object
typeName of link type

Looks up the link type module and prepares the link to store type specific attributes. If a type has been assigned already it will be released with all link type specific attributes lost.

Related Documentation:
Link Modules (Routing Family Library)
Returns:
0 on success or a negative errror code.

Definition at line 1951 of file link.c.

References rtnl_link_info_ops::io_alloc, and rtnl_link_info_ops_lookup().

Referenced by rtnl_link_bond_add(), rtnl_link_bond_enslave_ifindex(), and rtnl_link_set_info_type().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

char* rtnl_link_get_type ( struct rtnl_link link)

Return type of link.

Parameters:
linkLink object
Related Documentation:
Link Modules (Routing Family Library)
Returns:
Name of link type or NULL if not specified.

Definition at line 1978 of file link.c.

Referenced by rtnl_link_get_info_type().

+ Here is the caller graph for this function:

int rtnl_link_enslave_ifindex ( struct nl_sock *  sock,
int  master,
int  slave 
)

Enslave slave link to master link.

Parameters:
socknetlink socket
masterifindex of master link
slaveifindex of slave link

This function is identical to rtnl_link_enslave() except that it takes interface indices instead of rtnl_link objects.

See also:
rtnl_link_enslave()
Returns:
0 on success or a negative error code.

Definition at line 2003 of file link.c.

References rtnl_link_alloc(), rtnl_link_change(), rtnl_link_get_kernel(), rtnl_link_get_master(), rtnl_link_put(), rtnl_link_set_ifindex(), and rtnl_link_set_master().

Referenced by rtnl_link_enslave(), and rtnl_link_release_ifindex().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_enslave ( struct nl_sock *  sock,
struct rtnl_link master,
struct rtnl_link slave 
)

Enslave slave link to master link.

Parameters:
socknetlink socket
mastermaster link
slaveslave link

Constructs a RTM_NEWLINK or RTM_SETLINK message adding the slave to the master and sends the request via the specified netlink socket.

Note:
The feature of enslaving/releasing via netlink has only been added recently to the kernel (Feb 2011). Also, the kernel does not signal if the operation is not supported. Therefore this function will verify if the master assignment has changed and will return -NLE_OPNOTSUPP if it did not.
See also:
rtnl_link_enslave_ifindex()
rtnl_link_release()
Returns:
0 on success or a negative error code.

Definition at line 2058 of file link.c.

References rtnl_link_enslave_ifindex(), and rtnl_link_get_ifindex().

+ Here is the call graph for this function:

int rtnl_link_release_ifindex ( struct nl_sock *  sock,
int  slave 
)

Release slave link from its master.

Parameters:
socknetlink socket
slaveslave link

This function is identical to rtnl_link_release() except that it takes an interface index instead of a rtnl_link object.

See also:
rtnl_link_release()
Returns:
0 on success or a negative error code.

Definition at line 2077 of file link.c.

References rtnl_link_enslave_ifindex().

Referenced by rtnl_link_release().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

int rtnl_link_release ( struct nl_sock *  sock,
struct rtnl_link slave 
)

Release slave link from its master.

Parameters:
socknetlink socket
slaveslave link

Constructs a RTM_NEWLINK or RTM_SETLINK message releasing the slave from its master and sends the request via the specified netlink socket.

Note:
The feature of enslaving/releasing via netlink has only been added recently to the kernel (Feb 2011). Also, the kernel does not signal if the operation is not supported. Therefore this function will verify if the master assignment has changed and will return -NLE_OPNOTSUPP if it did not.
See also:
rtnl_link_release_ifindex()
rtnl_link_enslave()
Returns:
0 on success or a negative error code.

Definition at line 2101 of file link.c.

References rtnl_link_get_ifindex(), and rtnl_link_release_ifindex().

+ Here is the call graph for this function:

int rtnl_link_set_info_type ( struct rtnl_link link,
const char *  type 
)
Deprecated:
Use of this function is deprecated, use rtnl_link_set_type()

Definition at line 2262 of file link.c.

References rtnl_link_set_type().

+ Here is the call graph for this function:

char* rtnl_link_get_info_type ( struct rtnl_link link)
Deprecated:
Use of this function is deprecated, use rtnl_link_get_type()

Definition at line 2270 of file link.c.

References rtnl_link_get_type().

+ Here is the call graph for this function:

void rtnl_link_set_weight ( struct rtnl_link link,
unsigned int  weight 
)
Deprecated:
The weight attribute is unused and obsoleted in all recent kernels

Definition at line 2278 of file link.c.

unsigned int rtnl_link_get_weight ( struct rtnl_link link)
Deprecated:
The weight attribute is unused and obsoleted in all recent kernels

Definition at line 2287 of file link.c.