13#include "nl-default.h"
15#include <netlink/netlink.h>
16#include <netlink/attr.h>
17#include <netlink/utils.h>
18#include <netlink/route/act/gact.h>
23 struct tc_gact g_parm;
30static int gact_msg_parser(
struct rtnl_tc *tc,
void *data)
33 struct nlattr *tb[TCA_GACT_MAX + 1];
36 err = tca_parse(tb, TCA_GACT_MAX, tc, gact_policy);
40 if (!tb[TCA_GACT_PARMS])
41 return -NLE_MISSING_ATTR;
43 nla_memcpy(&u->g_parm, tb[TCA_GACT_PARMS],
sizeof(u->g_parm));
48static void gact_free_data(
struct rtnl_tc *tc,
void *data)
52static void gact_dump_line(
struct rtnl_tc *tc,
void *data,
60 switch(u->g_parm.action){
67 case TC_ACT_RECLASSIFY:
77static void gact_dump_details(
struct rtnl_tc *tc,
void *data,
82static void gact_dump_stats(
struct rtnl_tc *tc,
void *data,
93static int gact_msg_fill(
struct rtnl_tc *tc,
void *data,
struct nl_msg *msg)
100 NLA_PUT(msg, TCA_GACT_PARMS,
sizeof(u->g_parm), &u->g_parm);
113int rtnl_gact_set_action(
struct rtnl_act *act,
int action)
120 u->g_parm.action = action;
125int rtnl_gact_get_action(
struct rtnl_act *act)
131 return u->g_parm.action;
137static struct rtnl_tc_ops gact_ops = {
139 .to_type = RTNL_TC_TYPE_ACT,
141 .to_msg_parser = gact_msg_parser,
142 .to_free_data = gact_free_data,
144 .to_msg_fill = gact_msg_fill,
152static void _nl_init gact_init(
void)
157static void _nl_exit gact_exit(
void)
#define NLA_PUT(msg, attrtype, attrlen, data)
Add unspecific attribute to netlink message.
int nla_memcpy(void *dest, const struct nlattr *src, int count)
Copy attribute payload to another memory area.
#define TC_CAST(ptr)
Macro to cast qdisc/class/classifier to tc object.
void * rtnl_tc_data(struct rtnl_tc *)
Return pointer to private data of traffic control object.
int rtnl_tc_register(struct rtnl_tc_ops *)
Register a traffic control module.
void rtnl_tc_unregister(struct rtnl_tc_ops *)
Unregister a traffic control module.
void nl_dump(struct nl_dump_params *params, const char *fmt,...)
Dump a formatted character string.
@ NL_DUMP_STATS
Dump all attributes including statistics.
@ NL_DUMP_LINE
Dump object briefly on one line.
@ NL_DUMP_DETAILS
Dump all attributes but no statistics.
Attribute validation policy.
uint16_t minlen
Minimal length of payload required.
uint16_t type
Type of attribute or NLA_UNSPEC.