libnl
3.2.24-rc1
Main Page
Related Pages
Modules
Data Structures
libnl
ematch.h
1
/*
2
* netlink/route/cls/ematch.h Extended Matches
3
*
4
* This library is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU Lesser General Public
6
* License as published by the Free Software Foundation version 2.1
7
* of the License.
8
*
9
* Copyright (c) 2008-2010 Thomas Graf <tgraf@suug.ch>
10
*/
11
12
#ifndef NETLINK_CLS_EMATCH_H_
13
#define NETLINK_CLS_EMATCH_H_
14
15
#include <netlink/netlink.h>
16
#include <netlink/msg.h>
17
#include <netlink/route/classifier.h>
18
#include <linux/pkt_cls.h>
19
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
24
/* FIXME: Should be moved to the kernel header at some point */
25
#define RTNL_EMATCH_PROGID 2
26
27
struct
rtnl_ematch;
28
struct
rtnl_ematch_tree;
29
30
/**
31
* Extended Match Operations
32
*/
33
struct
rtnl_ematch_ops
34
{
35
int
eo_kind;
36
const
char
* eo_name;
37
size_t
eo_minlen;
38
size_t
eo_datalen;
39
40
int (*eo_parse)(
struct
rtnl_ematch *,
void
*, size_t);
41
void (*eo_dump)(
struct
rtnl_ematch *,
42
struct
nl_dump_params
*);
43
int (*eo_fill)(
struct
rtnl_ematch *,
struct
nl_msg *);
44
void (*eo_free)(
struct
rtnl_ematch *);
45
struct
nl_list_head
eo_list;
46
};
47
48
extern
int
rtnl_ematch_register
(
struct
rtnl_ematch_ops
*);
49
extern
struct
rtnl_ematch_ops
*
rtnl_ematch_lookup_ops
(
int
);
50
extern
struct
rtnl_ematch_ops
*
rtnl_ematch_lookup_ops_by_name
(
const
char
*);
51
52
extern
struct
rtnl_ematch *
rtnl_ematch_alloc
(
void
);
53
extern
int
rtnl_ematch_add_child
(
struct
rtnl_ematch *,
54
struct
rtnl_ematch *);
55
extern
void
rtnl_ematch_unlink
(
struct
rtnl_ematch *);
56
extern
void
rtnl_ematch_free(
struct
rtnl_ematch *);
57
58
extern
void
* rtnl_ematch_data(
struct
rtnl_ematch *);
59
extern
void
rtnl_ematch_set_flags(
struct
rtnl_ematch *,
60
uint16_t);
61
extern
void
rtnl_ematch_unset_flags(
struct
rtnl_ematch *,
62
uint16_t);
63
extern
uint16_t rtnl_ematch_get_flags(
struct
rtnl_ematch *);
64
extern
int
rtnl_ematch_set_ops(
struct
rtnl_ematch *,
65
struct
rtnl_ematch_ops
*);
66
extern
int
rtnl_ematch_set_kind(
struct
rtnl_ematch *,
67
uint16_t);
68
extern
int
rtnl_ematch_set_name(
struct
rtnl_ematch *,
69
const
char
*);
70
71
extern
struct
rtnl_ematch_tree *
rtnl_ematch_tree_alloc
(uint16_t);
72
extern
void
rtnl_ematch_tree_free
(
struct
rtnl_ematch_tree *);
73
extern
void
rtnl_ematch_tree_add
(
struct
rtnl_ematch_tree *,
74
struct
rtnl_ematch *);
75
76
extern
int
rtnl_ematch_parse_attr
(
struct
nlattr *,
77
struct
rtnl_ematch_tree **);
78
extern
int
rtnl_ematch_fill_attr(
struct
nl_msg *,
int
,
79
struct
rtnl_ematch_tree *);
80
extern
void
rtnl_ematch_tree_dump(
struct
rtnl_ematch_tree *,
81
struct
nl_dump_params
*);
82
83
84
extern
int
rtnl_ematch_parse_expr(
const
char
*,
char
**,
85
struct
rtnl_ematch_tree **);
86
87
extern
char
* rtnl_ematch_offset2txt(uint8_t, uint16_t,
88
char
*,
size_t
);
89
extern
char
* rtnl_ematch_opnd2txt(uint8_t,
char
*,
size_t
);
90
91
#ifdef __cplusplus
92
}
93
#endif
94
95
#endif
include
netlink
route
cls
ematch.h
Generated on Tue Jan 21 2014 20:35:45 for libnl by
1.8.3.1