2 #include <netlink-local.h>
3 #include <netlink-tc.h>
4 #include <netlink/netlink.h>
5 #include <netlink/utils.h>
6 #include <netlink/route/pktloc.h>
12 %name-prefix "pktloc_"
14 %parse-param {void *scanner}
15 %lex-param {void *scanner}
18 struct rtnl_pktloc *l;
24 extern int pktloc_lex(YYSTYPE *, YYLTYPE *, void *);
25 extern void rtnl_pktloc_add(struct rtnl_pktloc *);
27 static void yyerror(YYLTYPE *locp, void *scanner, const char *msg)
33 %token <i> ERROR NUMBER LAYER
39 %destructor { free($$); } NAME
58 NAME NAME layer NUMBER mask
60 struct rtnl_pktloc *loc;
62 if (!(loc = calloc(1, sizeof(*loc)))) {
66 if (!strcasecmp($2, "u8"))
67 loc->align = TCF_EM_ALIGN_U8;
68 else if (!strcasecmp($2, "h8")) {
69 loc->align = TCF_EM_ALIGN_U8;
70 loc->flags = TCF_EM_CMP_TRANS;
71 } else if (!strcasecmp($2, "u16"))
72 loc->align = TCF_EM_ALIGN_U16;
73 else if (!strcasecmp($2, "h16")) {
74 loc->align = TCF_EM_ALIGN_U16;
75 loc->flags = TCF_EM_CMP_TRANS;
76 } else if (!strcasecmp($2, "u32"))
77 loc->align = TCF_EM_ALIGN_U32;
78 else if (!strcasecmp($2, "h32")) {
79 loc->align = TCF_EM_ALIGN_U32;
80 loc->flags = TCF_EM_CMP_TRANS;
98 { $$ = TCF_LAYER_NETWORK; }