1ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf/*
2ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf * src/cls-utils.h     Classifier Helpers
3ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf *
4ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf *	This library is free software; you can redistribute it and/or
5ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf *	modify it under the terms of the GNU General Public License as
6ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf *	published by the Free Software Foundation version 2 of the License.
7ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf *
8ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf * Copyright (c) 2008-2009 Thomas Graf <tgraf@suug.ch>
9ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf */
10ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
11ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#ifndef __CLS_UTILS_H_
12ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#define __CLS_UTILS_H_
13ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
14ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#include "../utils.h"
15ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#include <netlink/route/classifier-modules.h>
16ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#include <netlink/route/cls/ematch.h>
17ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
18ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafstruct cls_module
19ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf{
20ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	const char *		name;
21ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	struct rtnl_cls_ops *	ops;
22ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	void		      (*parse_argv)(struct rtnl_cls *, int, char **);
23ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	struct nl_list_head	list;
24ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf};
25ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
26ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern struct cls_module *lookup_cls_mod(struct rtnl_cls_ops *);
27ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void register_cls_module(struct cls_module *);
28ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void unregister_cls_module(struct cls_module *);
29ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
30ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafstruct ematch_module
31ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf{
32ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	int kind;
33ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	struct rtnl_ematch_ops *ops;
34ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	void (*parse_argv)(struct rtnl_ematch *, int, char **);
35ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf	struct nl_list_head list;
36ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf};
37ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
38ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern struct ematch_module *lookup_ematch_mod(struct rtnl_ematch_ops *);
39ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void register_ematch_module(struct ematch_module *);
40ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void unregister_ematch_module(struct ematch_module *);
41ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
42ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern struct rtnl_cls *nlt_alloc_cls(void);
43ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void parse_dev(struct rtnl_cls *, struct nl_cache *, char *);
44ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void parse_prio(struct rtnl_cls *, char *);
45ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void parse_parent(struct rtnl_cls *, char *);
46ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void parse_handle(struct rtnl_cls *, char *);
47ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern void parse_proto(struct rtnl_cls *, char *);
48ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
49ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Grafextern int parse_ematch_syntax(const char *, struct rtnl_ematch_tree **);
50ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf
51ef858fb492dfe98e3ae194264fbc73649cf8493aThomas Graf#endif
52