xref: /openbsd/sbin/pfctl/pfctl_parser.h (revision bc795af0)
1*bc795af0Shugh /*	$OpenBSD: pfctl_parser.h,v 1.16 2002/06/01 04:06:47 hugh Exp $ */
214a9b182Skjell 
314a9b182Skjell /*
4fd3c3a0cSderaadt  * Copyright (c) 2001 Daniel Hartmeier
514a9b182Skjell  * All rights reserved.
614a9b182Skjell  *
714a9b182Skjell  * Redistribution and use in source and binary forms, with or without
814a9b182Skjell  * modification, are permitted provided that the following conditions
914a9b182Skjell  * are met:
1014a9b182Skjell  *
1114a9b182Skjell  *    - Redistributions of source code must retain the above copyright
1214a9b182Skjell  *      notice, this list of conditions and the following disclaimer.
1314a9b182Skjell  *    - Redistributions in binary form must reproduce the above
1414a9b182Skjell  *      copyright notice, this list of conditions and the following
1514a9b182Skjell  *      disclaimer in the documentation and/or other materials provided
1614a9b182Skjell  *      with the distribution.
1714a9b182Skjell  *
1814a9b182Skjell  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1914a9b182Skjell  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
2014a9b182Skjell  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
2114a9b182Skjell  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
225974bd37Sdhartmei  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
2314a9b182Skjell  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
2414a9b182Skjell  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
2514a9b182Skjell  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
2614a9b182Skjell  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2714a9b182Skjell  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
2814a9b182Skjell  * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2914a9b182Skjell  * POSSIBILITY OF SUCH DAMAGE.
3014a9b182Skjell  *
3114a9b182Skjell  */
3214a9b182Skjell 
33a6d3c168Sdhartmei #ifndef _PFCTL_PARSER_H_
34a6d3c168Sdhartmei #define _PFCTL_PARSER_H_
3514a9b182Skjell 
36533ca421Smarkus #define PF_OPT_DISABLE		0x0001
37533ca421Smarkus #define PF_OPT_ENABLE		0x0002
38533ca421Smarkus #define PF_OPT_VERBOSE		0x0004
39533ca421Smarkus #define PF_OPT_NOACTION		0x0008
40533ca421Smarkus #define PF_OPT_QUIET		0x0010
41455ef0c1Sdhartmei #define PF_OPT_CLRRULECTRS	0x0020
420eed2997Sdhartmei #define PF_OPT_USEDNS		0x0040
43533ca421Smarkus 
44*bc795af0Shugh #define PF_TH_ALL		0xFF
45*bc795af0Shugh 
46ff352a37Smarkus struct pfctl {
47ff352a37Smarkus 	int dev;
48ff352a37Smarkus 	int opts;
49928dece9Sdhartmei 	u_int16_t rule_nr;
50ff352a37Smarkus 	struct pfioc_rule *prule;
51ff352a37Smarkus 	struct pfioc_nat *pnat;
52a3e657d0Sjasoni 	struct pfioc_binat *pbinat;
53ff352a37Smarkus 	struct pfioc_rdr *prdr;
54ff352a37Smarkus };
55ff352a37Smarkus 
56ff352a37Smarkus int	 pfctl_add_rule(struct pfctl *, struct pf_rule *);
57ff352a37Smarkus int	 pfctl_add_nat(struct pfctl *, struct pf_nat *);
58a3e657d0Sjasoni int	 pfctl_add_binat(struct pfctl *, struct pf_binat *);
59ff352a37Smarkus int	 pfctl_add_rdr(struct pfctl *, struct pf_rdr *);
60ff352a37Smarkus 
61ff352a37Smarkus int	 parse_rules(FILE *, struct pfctl *);
62ff352a37Smarkus int	 parse_nat(FILE *, struct pfctl *);
63ff352a37Smarkus int	 parse_flags(char *);
64ff352a37Smarkus 
6581a15e5dSderaadt void	 print_rule(struct pf_rule *);
6681a15e5dSderaadt void	 print_nat(struct pf_nat *);
67a3e657d0Sjasoni void	 print_binat(struct pf_binat *);
6881a15e5dSderaadt void	 print_rdr(struct pf_rdr *);
69fdd4db37Sdhartmei void	 print_state(struct pf_state *, int);
7081a15e5dSderaadt void	 print_status(struct pf_status *);
7114a9b182Skjell 
72ff352a37Smarkus struct icmptypeent {
73ff352a37Smarkus 	char *name;
74ff352a37Smarkus 	u_int8_t type;
75ff352a37Smarkus };
76ff352a37Smarkus 
77ff352a37Smarkus struct icmpcodeent {
78ff352a37Smarkus 	char *name;
79ff352a37Smarkus 	u_int8_t type;
80ff352a37Smarkus 	u_int8_t code;
81ff352a37Smarkus };
82ff352a37Smarkus 
8330620b12Sfrantzen struct icmptypeent	 *geticmptypebynumber(u_int8_t, u_int8_t);
8430620b12Sfrantzen struct icmptypeent	 *geticmptypebyname(char *, u_int8_t);
8530620b12Sfrantzen struct icmpcodeent	 *geticmpcodebynumber(u_int8_t, u_int8_t, u_int8_t);
8630620b12Sfrantzen struct icmpcodeent	 *geticmpcodebyname(u_long, char *, u_int8_t);
870eed2997Sdhartmei struct hostent		 *getpfhostname(const char *);
88ff352a37Smarkus 
89a6d3c168Sdhartmei #endif /* _PFCTL_PARSER_H_ */
90