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