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