7#ifndef __LIB_ROUTE_NL_ROUTE_H__
8#define __LIB_ROUTE_NL_ROUTE_H__
10#include <netlink/route/tc.h>
12#include "nl-priv-dynamic-core/object-api.h"
13#include "nl-priv-dynamic-route/nl-priv-dynamic-route.h"
14#include "nl-aux-core/nl-core.h"
19 uint64_t lm_mem_start;
21 uint64_t lm_base_addr;
32 char l_name[IFNAMSIZ];
40 int32_t l_link_netnsid;
44 struct nl_addr *l_addr;
45 struct nl_addr *l_bcast;
46 struct nl_addr *l_paddr;
47 char l_qdisc[IFQDISCSIZ];
49 uint64_t l_stats[RTNL_LINK_STATS_MAX + 1];
56 char *l_info_slave_kind;
58 void *l_af_data[AF_MAX];
61 uint32_t l_promiscuity;
62 uint32_t l_num_tx_queues;
63 uint32_t l_num_rx_queues;
64 uint32_t l_gso_max_segs;
65 uint32_t l_gso_max_size;
69 uint32_t l_carrier_changes;
71 struct nl_data *l_phys_port_id;
72 char l_phys_port_name[IFNAMSIZ];
73 struct nl_data *l_phys_switch_id;
87 int16_t rs_cell_align;
94#define NL_TC_GENERIC(pre) \
96 uint32_t pre##_family; \
97 uint32_t pre##_ifindex; \
98 uint32_t pre##_handle; \
99 uint32_t pre##_parent; \
100 uint32_t pre##_info; \
101 uint32_t pre##_mtu; \
102 uint32_t pre##_mpu; \
103 uint32_t pre##_overhead; \
104 uint32_t pre##_linktype; \
105 char pre##_kind[TCKINDSIZ]; \
106 struct nl_data *pre##_opts; \
107 uint64_t pre##_stats[RTNL_TC_STATS_MAX + 1]; \
108 struct nl_data *pre##_xstats; \
109 struct nl_data *pre##_subdata; \
110 struct rtnl_link *pre##_link; \
111 struct rtnl_tc_ops *pre##_ops; \
112 enum rtnl_tc_type pre##_type; \
130static inline void rtnl_copy_ratespec(
struct rtnl_ratespec *dst,
131 struct tc_ratespec *src)
133 dst->rs_cell_log = src->cell_log;
134 dst->rs_overhead = src->overhead;
135 dst->rs_cell_align = src->cell_align;
136 dst->rs_mpu = src->mpu;
137 dst->rs_rate64 = src->rate;
140static inline void rtnl_rcopy_ratespec(
struct tc_ratespec *dst,
143 dst->cell_log = src->rs_cell_log;
144 dst->overhead = src->rs_overhead;
145 dst->cell_align = src->rs_cell_align;
146 dst->mpu = src->rs_mpu;
147 dst->rate = src->rs_rate64 > 0xFFFFFFFFull ? 0xFFFFFFFFull :
148 (uint32_t)src->rs_rate64;
153static inline int build_sysconf_path(
char **strp,
const char *filename)
157 sysconfdir = getenv(
"NLSYSCONFDIR");
160 sysconfdir = _NL_SYSCONFDIR_LIBNL;
162 return asprintf(strp,
"%s/%s", sysconfdir, filename);
167static inline int rtnl_tc_calc_txtime64(
int bufsize, uint64_t rate)
169 return ((
double)bufsize / (
double)rate) * 1000000.0;
172static inline int rtnl_tc_calc_bufsize64(
int txtime, uint64_t rate)
174 return ((
double)txtime * (
double)rate) / 1000000.0;
Available operations to modules implementing a link address family.
Available operations to modules implementing a link info type.