]>
Commit | Line | Data |
---|---|---|
1 | /* | |
2 | * m_pedit.h generic packet editor actions module | |
3 | * | |
4 | * This program is free software; you can distribute it and/or | |
5 | * modify it under the terms of the GNU General Public License | |
6 | * as published by the Free Software Foundation; either version | |
7 | * 2 of the License, or (at your option) any later version. | |
8 | * | |
9 | * Authors: J Hadi Salim (hadi@cyberus.ca) | |
10 | * | |
11 | */ | |
12 | ||
13 | #ifndef _ACT_PEDIT_H_ | |
14 | #define _ACT_PEDIT_H_ 1 | |
15 | ||
16 | #include <stdio.h> | |
17 | #include <stdlib.h> | |
18 | #include <unistd.h> | |
19 | #include <fcntl.h> | |
20 | #include <sys/socket.h> | |
21 | #include <netinet/in.h> | |
22 | #include <arpa/inet.h> | |
23 | #include <string.h> | |
24 | #include "utils.h" | |
25 | #include "tc_util.h" | |
26 | #include <linux/tc_act/tc_pedit.h> | |
27 | ||
28 | #define MAX_OFFS 128 | |
29 | ||
30 | #define TIPV4 1 | |
31 | #define TIPV6 2 | |
32 | #define TINT 3 | |
33 | #define TU32 4 | |
34 | #define TMAC 5 | |
35 | ||
36 | #define RU32 0xFFFFFFFF | |
37 | #define RU16 0xFFFF | |
38 | #define RU8 0xFF | |
39 | ||
40 | #define PEDITKINDSIZ 16 | |
41 | ||
42 | struct m_pedit_key { | |
43 | __u32 mask; /* AND */ | |
44 | __u32 val; /*XOR */ | |
45 | __u32 off; /*offset */ | |
46 | __u32 at; | |
47 | __u32 offmask; | |
48 | __u32 shift; | |
49 | ||
50 | enum pedit_header_type htype; | |
51 | enum pedit_cmd cmd; | |
52 | }; | |
53 | ||
54 | struct m_pedit_key_ex { | |
55 | enum pedit_header_type htype; | |
56 | enum pedit_cmd cmd; | |
57 | }; | |
58 | ||
59 | struct m_pedit_sel { | |
60 | struct tc_pedit_sel sel; | |
61 | struct tc_pedit_key keys[MAX_OFFS]; | |
62 | struct m_pedit_key_ex keys_ex[MAX_OFFS]; | |
63 | bool extended; | |
64 | }; | |
65 | ||
66 | struct m_pedit_util { | |
67 | struct m_pedit_util *next; | |
68 | char id[PEDITKINDSIZ]; | |
69 | int (*parse_peopt)(int *argc_p, char ***argv_p, | |
70 | struct m_pedit_sel *sel, | |
71 | struct m_pedit_key *tkey); | |
72 | }; | |
73 | ||
74 | int parse_cmd(int *argc_p, char ***argv_p, __u32 len, int type, | |
75 | __u32 retain, | |
76 | struct m_pedit_sel *sel, struct m_pedit_key *tkey); | |
77 | #endif |