]> git.proxmox.com Git - mirror_iproute2.git/blobdiff - tc/m_pedit.h
bridge: fdb: add support for src_vni option
[mirror_iproute2.git] / tc / m_pedit.h
index 1698c954e999e7d593eb6e683c515fb84c6a365f..5d3628a70b99fafaf24c8eab7c2658f2a93bf0e3 100644 (file)
@@ -16,7 +16,6 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include <unistd.h>
-#include <syslog.h>
 #include <fcntl.h>
 #include <sys/socket.h>
 #include <netinet/in.h>
@@ -32,6 +31,7 @@
 #define TIPV6 2
 #define TINT 3
 #define TU32 4
+#define TMAC 5
 
 #define RU32 0xFFFFFFFF
 #define RU16 0xFFFF
 
 #define PEDITKINDSIZ 16
 
-struct m_pedit_util
-{
-       struct m_pedit_util *next;
-       char    id[PEDITKINDSIZ];
-       int     (*parse_peopt)(int *argc_p, char ***argv_p,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
+struct m_pedit_key {
+       __u32           mask;  /* AND */
+       __u32           val;   /*XOR */
+       __u32           off;  /*offset */
+       __u32           at;
+       __u32           offmask;
+       __u32           shift;
+
+       enum pedit_header_type htype;
+       enum pedit_cmd cmd;
 };
 
+struct m_pedit_key_ex {
+       enum pedit_header_type htype;
+       enum pedit_cmd cmd;
+};
 
-extern int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type,__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int pack_key(struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int pack_key32(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int pack_key16(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int pack_key8(__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int parse_val(int *argc_p, char ***argv_p, __u32 * val, int type);
-extern int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type,__u32 retain,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-extern int parse_offset(int *argc_p, char ***argv_p,struct tc_pedit_sel *sel,struct tc_pedit_key *tkey);
-int parse_pedit(struct action_util *a, int *argc_p, char ***argv_p, int tca_id, struct nlmsghdr *n);
-extern int print_pedit(struct action_util *au,FILE * f, struct rtattr *arg);
-extern int pedit_print_xstats(struct action_util *au, FILE *f, struct rtattr *xstats);
+struct m_pedit_sel {
+       struct tc_pedit_sel sel;
+       struct tc_pedit_key keys[MAX_OFFS];
+       struct m_pedit_key_ex keys_ex[MAX_OFFS];
+       bool extended;
+};
+
+struct m_pedit_util {
+       struct m_pedit_util *next;
+       char    id[PEDITKINDSIZ];
+       int     (*parse_peopt)(int *argc_p, char ***argv_p,
+                              struct m_pedit_sel *sel,
+                              struct m_pedit_key *tkey);
+};
 
+int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type,
+             __u32 retain,
+             struct m_pedit_sel *sel, struct m_pedit_key *tkey);
 #endif