ip6tables.h revision 79dee0702b18c8ea1d1f7a2b1f6b29349466986b
179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell#ifndef _IP6TABLES_USER_H 279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell#define _IP6TABLES_USER_H 379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell#include "iptables_common.h" 579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell#include "libiptc/libip6tc.h" 679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell/* Include file for additions: new matches and targets. */ 879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellstruct ip6tables_match 979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell{ 1079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6tables_match *next; 1179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 1279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell ip6t_chainlabel name; 1379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 1479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const char *version; 1579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 1679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Size of match data. */ 1779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell size_t size; 1879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 1979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Function which prints out usage message. */ 2079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*help)(void); 2179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 2279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Initialize the match. */ 2379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*init)(struct ip6t_entry_match *m, unsigned int *nfcache); 2479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 2579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Function which parses command options; returns true if it 2679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell ate an option */ 2779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell int (*parse)(int c, char **argv, int invert, unsigned int *flags, 2879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry *entry, 2979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell unsigned int *nfcache, 3079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6t_entry_match **match); 3179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 3279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Final check; exit if not ok. */ 3379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*final_check)(unsigned int flags); 3479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 3579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Prints out the match iff non-NULL: put space at end */ 3679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*print)(const struct ip6t_ip6 *ip, 3779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry_match *match, int numeric); 3879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 3979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Saves the union ipt_matchinfo in parsable form to stdout. */ 4079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*save)(const struct ip6t_ip6 *ip, 4179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry_match *match); 4279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 4379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Pointer to list of extra command-line options */ 4479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct option *extra_opts; 4579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 4679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Ignore these men behind the curtain: */ 4779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell unsigned int option_offset; 4879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6t_entry_match *m; 4979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell unsigned int mflags; 5079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell}; 5179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 5279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellstruct ip6tables_target 5379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell{ 5479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6tables_target *next; 5579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 5679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell ip6t_chainlabel name; 5779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 5879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const char *version; 5979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 6079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Size of target data. */ 6179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell size_t size; 6279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 6379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Function which prints out usage message. */ 6479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*help)(void); 6579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 6679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Initialize the target. */ 6779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*init)(struct ip6t_entry_target *t, unsigned int *nfcache); 6879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 6979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Function which parses command options; returns true if it 7079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell ate an option */ 7179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell int (*parse)(int c, char **argv, int invert, unsigned int *flags, 7279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry *entry, 7379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6t_entry_target **target); 7479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 7579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Final check; exit if not ok. */ 7679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*final_check)(unsigned int flags); 7779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 7879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Prints out the target iff non-NULL: put space at end */ 7979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*print)(const struct ip6t_ip6 *ip, 8079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry_target *target, int numeric); 8179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 8279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Saves the targinfo in parsable form to stdout. */ 8379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell void (*save)(const struct ip6t_ip6 *ip, 8479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell const struct ip6t_entry_target *target); 8579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 8679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Pointer to list of extra command-line options */ 8779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct option *extra_opts; 8879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 8979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell /* Ignore these men behind the curtain: */ 9079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell unsigned int option_offset; 9179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell struct ip6t_entry_target *t; 9279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell unsigned int tflags; 9379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell}; 9479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 9579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell/* Your shared library should call one of these. */ 9679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern void register_match6(struct ip6tables_match *me); 9779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern void register_target6(struct ip6tables_target *me); 9879dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 9979dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern int do_command6(int argc, char *argv[], char **table, 10079dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell ip6tc_handle_t *handle); 10179dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell/* Keeping track of external matches and targets: linked lists. */ 10279dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern struct ip6tables_match *ip6tables_matches; 10379dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern struct ip6tables_target *ip6tables_targets; 10479dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell 10579dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern struct ip6tables_target *find_target6(const char *name, int tryload); 10679dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russellextern struct ip6tables_match *find_match6(const char *name, int tryload); 10779dee0702b18c8ea1d1f7a2b1f6b29349466986bRusty Russell#endif /*_IP6TABLES_USER_H*/ 108