12#ifndef NETLINK_LINK_H_
13#define NETLINK_LINK_H_
15#include <netlink/netlink.h>
16#include <netlink/cache.h>
17#include <netlink/addr.h>
34 RTNL_LINK_RX_COMPRESSED,
35 RTNL_LINK_TX_COMPRESSED,
36 RTNL_LINK_RX_FIFO_ERR,
37 RTNL_LINK_TX_FIFO_ERR,
39 RTNL_LINK_RX_OVER_ERR,
41 RTNL_LINK_RX_FRAME_ERR,
42 RTNL_LINK_RX_MISSED_ERR,
43 RTNL_LINK_TX_ABORT_ERR,
44 RTNL_LINK_TX_CARRIER_ERR,
45 RTNL_LINK_TX_HBEAT_ERR,
47 RTNL_LINK_TX_COLLISIONS,
49 __RTNL_LINK_STATS_MAX,
52#define RTNL_LINK_STATS_MAX (__RTNL_LINK_STATS_MAX - 1)
58#define RTNL_LINK_NOT_FOUND -1
61extern struct rtnl_link * rtnl_link_alloc(
void);
62extern void rtnl_link_put(
struct rtnl_link *);
63extern void rtnl_link_free(
struct rtnl_link *);
67extern struct rtnl_link *
rtnl_link_get(
struct nl_cache *,
int);
78 struct rtnl_link *,
int);
87extern char * rtnl_link_stat2str(
int,
char *,
size_t);
88extern int rtnl_link_str2stat(
const char *);
91extern char * rtnl_link_flags2str(
int,
char *,
size_t);
92extern int rtnl_link_str2flags(
const char *);
94extern char * rtnl_link_operstate2str(
int,
char *,
size_t);
95extern int rtnl_link_str2operstate(
const char *);
97extern char * rtnl_link_mode2str(
int,
char *,
size_t);
98extern int rtnl_link_str2mode(
const char *);
101extern void rtnl_link_set_qdisc(
struct rtnl_link *,
103extern char * rtnl_link_get_qdisc(
struct rtnl_link *);
105extern void rtnl_link_set_name(
struct rtnl_link *,
107extern char * rtnl_link_get_name(
struct rtnl_link *);
109extern void rtnl_link_set_flags(
struct rtnl_link *,
111extern void rtnl_link_unset_flags(
struct rtnl_link *,
113extern unsigned int rtnl_link_get_flags(
struct rtnl_link *);
115extern void rtnl_link_set_mtu(
struct rtnl_link *,
117extern unsigned int rtnl_link_get_mtu(
struct rtnl_link *);
119extern void rtnl_link_set_txqlen(
struct rtnl_link *,
121extern unsigned int rtnl_link_get_txqlen(
struct rtnl_link *);
123extern void rtnl_link_set_weight(
struct rtnl_link *,
125extern unsigned int rtnl_link_get_weight(
struct rtnl_link *);
127extern void rtnl_link_set_ifindex(
struct rtnl_link *,
int);
128extern int rtnl_link_get_ifindex(
struct rtnl_link *);
130extern void rtnl_link_set_family(
struct rtnl_link *,
int);
131extern int rtnl_link_get_family(
struct rtnl_link *);
133extern void rtnl_link_set_arptype(
struct rtnl_link *,
135extern unsigned int rtnl_link_get_arptype(
struct rtnl_link *);
137extern void rtnl_link_set_addr(
struct rtnl_link *,
139extern struct nl_addr * rtnl_link_get_addr(
struct rtnl_link *);
141extern void rtnl_link_set_broadcast(
struct rtnl_link *,
143extern struct nl_addr * rtnl_link_get_broadcast(
struct rtnl_link *);
145extern void rtnl_link_set_link(
struct rtnl_link *,
int);
146extern int rtnl_link_get_link(
struct rtnl_link *);
148extern void rtnl_link_set_master(
struct rtnl_link *,
int);
149extern int rtnl_link_get_master(
struct rtnl_link *);
151extern void rtnl_link_set_operstate(
struct rtnl_link *,
153extern uint8_t rtnl_link_get_operstate(
struct rtnl_link *);
155extern void rtnl_link_set_linkmode(
struct rtnl_link *,
157extern uint8_t rtnl_link_get_linkmode(
struct rtnl_link *);
159extern uint64_t rtnl_link_get_stat(
struct rtnl_link *,
int);
struct rtnl_link * rtnl_link_get_by_name(struct nl_cache *, const char *)
Look up link by link name in the provided cache.
int rtnl_link_name2i(struct nl_cache *, const char *)
Translate a link name to the corresponding interface index.
struct nl_msg * rtnl_link_build_change_request(struct rtnl_link *, struct rtnl_link *, int)
Builds a netlink change request message to change link attributes.
struct rtnl_link * rtnl_link_get(struct nl_cache *, int)
Look up link by interface index in the provided cache.
int rtnl_link_change(struct nl_handle *, struct rtnl_link *, struct rtnl_link *, int)
Change link attributes.
char * rtnl_link_get_info_type(struct rtnl_link *)
Return info type of a link.
char * rtnl_link_i2name(struct nl_cache *, int, char *, size_t)
Translate an interface index to the corresponding link name.
int rtnl_link_set_info_type(struct rtnl_link *, const char *)
Specify the info type of a link.
struct nl_cache * rtnl_link_alloc_cache(struct nl_handle *)
Allocate link cache and fill in all configured links.