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