1*ebe9f48dSDavid van Moolenbroek /* $NetBSD: pfctl.h,v 1.5 2008/06/18 09:06:26 yamt Exp $ */ 2*ebe9f48dSDavid van Moolenbroek /* $OpenBSD: pfctl.h,v 1.41 2007/05/31 04:13:37 mcbride Exp $ */ 3*ebe9f48dSDavid van Moolenbroek 4*ebe9f48dSDavid van Moolenbroek /* 5*ebe9f48dSDavid van Moolenbroek * Copyright (c) 2001 Daniel Hartmeier 6*ebe9f48dSDavid van Moolenbroek * All rights reserved. 7*ebe9f48dSDavid van Moolenbroek * 8*ebe9f48dSDavid van Moolenbroek * Redistribution and use in source and binary forms, with or without 9*ebe9f48dSDavid van Moolenbroek * modification, are permitted provided that the following conditions 10*ebe9f48dSDavid van Moolenbroek * are met: 11*ebe9f48dSDavid van Moolenbroek * 12*ebe9f48dSDavid van Moolenbroek * - Redistributions of source code must retain the above copyright 13*ebe9f48dSDavid van Moolenbroek * notice, this list of conditions and the following disclaimer. 14*ebe9f48dSDavid van Moolenbroek * - Redistributions in binary form must reproduce the above 15*ebe9f48dSDavid van Moolenbroek * copyright notice, this list of conditions and the following 16*ebe9f48dSDavid van Moolenbroek * disclaimer in the documentation and/or other materials provided 17*ebe9f48dSDavid van Moolenbroek * with the distribution. 18*ebe9f48dSDavid van Moolenbroek * 19*ebe9f48dSDavid van Moolenbroek * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 20*ebe9f48dSDavid van Moolenbroek * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 21*ebe9f48dSDavid van Moolenbroek * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 22*ebe9f48dSDavid van Moolenbroek * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 23*ebe9f48dSDavid van Moolenbroek * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 24*ebe9f48dSDavid van Moolenbroek * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 25*ebe9f48dSDavid van Moolenbroek * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 26*ebe9f48dSDavid van Moolenbroek * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 27*ebe9f48dSDavid van Moolenbroek * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 28*ebe9f48dSDavid van Moolenbroek * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 29*ebe9f48dSDavid van Moolenbroek * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 30*ebe9f48dSDavid van Moolenbroek * POSSIBILITY OF SUCH DAMAGE. 31*ebe9f48dSDavid van Moolenbroek * 32*ebe9f48dSDavid van Moolenbroek */ 33*ebe9f48dSDavid van Moolenbroek 34*ebe9f48dSDavid van Moolenbroek #ifndef _PFCTL_H_ 35*ebe9f48dSDavid van Moolenbroek #define _PFCTL_H_ 36*ebe9f48dSDavid van Moolenbroek 37*ebe9f48dSDavid van Moolenbroek enum pfctl_show { PFCTL_SHOW_RULES, PFCTL_SHOW_LABELS, PFCTL_SHOW_NOTHING }; 38*ebe9f48dSDavid van Moolenbroek 39*ebe9f48dSDavid van Moolenbroek enum { PFRB_TABLES = 1, PFRB_TSTATS, PFRB_ADDRS, PFRB_ASTATS, 40*ebe9f48dSDavid van Moolenbroek PFRB_IFACES, PFRB_TRANS, PFRB_MAX }; 41*ebe9f48dSDavid van Moolenbroek struct pfr_buffer { 42*ebe9f48dSDavid van Moolenbroek int pfrb_type; /* type of content, see enum above */ 43*ebe9f48dSDavid van Moolenbroek int pfrb_size; /* number of objects in buffer */ 44*ebe9f48dSDavid van Moolenbroek int pfrb_msize; /* maximum number of objects in buffer */ 45*ebe9f48dSDavid van Moolenbroek void *pfrb_caddr; /* malloc'ated memory area */ 46*ebe9f48dSDavid van Moolenbroek }; 47*ebe9f48dSDavid van Moolenbroek #define PFRB_FOREACH(var, buf) \ 48*ebe9f48dSDavid van Moolenbroek for ((var) = pfr_buf_next((buf), NULL); \ 49*ebe9f48dSDavid van Moolenbroek (var) != NULL; \ 50*ebe9f48dSDavid van Moolenbroek (var) = pfr_buf_next((buf), (var))) 51*ebe9f48dSDavid van Moolenbroek 52*ebe9f48dSDavid van Moolenbroek void pfr_set_fd(int); 53*ebe9f48dSDavid van Moolenbroek int pfr_get_fd(void); 54*ebe9f48dSDavid van Moolenbroek int pfr_clr_tables(struct pfr_table *, int *, int); 55*ebe9f48dSDavid van Moolenbroek int pfr_add_tables(struct pfr_table *, int, int *, int); 56*ebe9f48dSDavid van Moolenbroek int pfr_del_tables(struct pfr_table *, int, int *, int); 57*ebe9f48dSDavid van Moolenbroek int pfr_get_tables(struct pfr_table *, struct pfr_table *, int *, int); 58*ebe9f48dSDavid van Moolenbroek int pfr_get_tstats(struct pfr_table *, struct pfr_tstats *, int *, int); 59*ebe9f48dSDavid van Moolenbroek int pfr_clr_tstats(struct pfr_table *, int, int *, int); 60*ebe9f48dSDavid van Moolenbroek int pfr_clr_addrs(struct pfr_table *, int *, int); 61*ebe9f48dSDavid van Moolenbroek int pfr_add_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 62*ebe9f48dSDavid van Moolenbroek int pfr_del_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 63*ebe9f48dSDavid van Moolenbroek int pfr_set_addrs(struct pfr_table *, struct pfr_addr *, int, int *, 64*ebe9f48dSDavid van Moolenbroek int *, int *, int *, int); 65*ebe9f48dSDavid van Moolenbroek int pfr_get_addrs(struct pfr_table *, struct pfr_addr *, int *, int); 66*ebe9f48dSDavid van Moolenbroek int pfr_get_astats(struct pfr_table *, struct pfr_astats *, int *, int); 67*ebe9f48dSDavid van Moolenbroek int pfr_clr_astats(struct pfr_table *, struct pfr_addr *, int, int *, int); 68*ebe9f48dSDavid van Moolenbroek int pfr_tst_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 69*ebe9f48dSDavid van Moolenbroek int pfr_set_tflags(struct pfr_table *, int, int, int, int *, int *, int); 70*ebe9f48dSDavid van Moolenbroek int pfr_ina_define(struct pfr_table *, struct pfr_addr *, int, int *, 71*ebe9f48dSDavid van Moolenbroek int *, int, int); 72*ebe9f48dSDavid van Moolenbroek void pfr_buf_clear(struct pfr_buffer *); 73*ebe9f48dSDavid van Moolenbroek int pfr_buf_add(struct pfr_buffer *, const void *); 74*ebe9f48dSDavid van Moolenbroek void *pfr_buf_next(struct pfr_buffer *, const void *); 75*ebe9f48dSDavid van Moolenbroek int pfr_buf_grow(struct pfr_buffer *, int); 76*ebe9f48dSDavid van Moolenbroek int pfr_buf_load(struct pfr_buffer *, char *, int, 77*ebe9f48dSDavid van Moolenbroek int (*)(struct pfr_buffer *, char *, int)); 78*ebe9f48dSDavid van Moolenbroek char *pfr_strerror(int); 79*ebe9f48dSDavid van Moolenbroek int pfi_get_ifaces(const char *, struct pfi_kif *, int *); 80*ebe9f48dSDavid van Moolenbroek int pfi_clr_istats(const char *, int *, int); 81*ebe9f48dSDavid van Moolenbroek 82*ebe9f48dSDavid van Moolenbroek void pfctl_print_title(char *); 83*ebe9f48dSDavid van Moolenbroek int pfctl_clear_tables(const char *, int); 84*ebe9f48dSDavid van Moolenbroek int pfctl_show_tables(const char *, int); 85*ebe9f48dSDavid van Moolenbroek int pfctl_command_tables(int, char *[], char *, const char *, char *, 86*ebe9f48dSDavid van Moolenbroek const char *, int); 87*ebe9f48dSDavid van Moolenbroek int pfctl_show_altq(int, const char *, int, int); 88*ebe9f48dSDavid van Moolenbroek void warn_namespace_collision(const char *); 89*ebe9f48dSDavid van Moolenbroek int pfctl_show_ifaces(const char *, int); 90*ebe9f48dSDavid van Moolenbroek FILE *pfctl_fopen(const char *, const char *); 91*ebe9f48dSDavid van Moolenbroek 92*ebe9f48dSDavid van Moolenbroek #ifndef DEFAULT_PRIORITY 93*ebe9f48dSDavid van Moolenbroek #define DEFAULT_PRIORITY 1 94*ebe9f48dSDavid van Moolenbroek #endif 95*ebe9f48dSDavid van Moolenbroek 96*ebe9f48dSDavid van Moolenbroek #ifndef DEFAULT_QLIMIT 97*ebe9f48dSDavid van Moolenbroek #define DEFAULT_QLIMIT 50 98*ebe9f48dSDavid van Moolenbroek #endif 99*ebe9f48dSDavid van Moolenbroek 100*ebe9f48dSDavid van Moolenbroek /* 101*ebe9f48dSDavid van Moolenbroek * generalized service curve used for admission control 102*ebe9f48dSDavid van Moolenbroek */ 103*ebe9f48dSDavid van Moolenbroek struct segment { 104*ebe9f48dSDavid van Moolenbroek LIST_ENTRY(segment) _next; 105*ebe9f48dSDavid van Moolenbroek double x, y, d, m; 106*ebe9f48dSDavid van Moolenbroek }; 107*ebe9f48dSDavid van Moolenbroek 108*ebe9f48dSDavid van Moolenbroek extern int loadopt; 109*ebe9f48dSDavid van Moolenbroek 110*ebe9f48dSDavid van Moolenbroek int check_commit_altq(int, int); 111*ebe9f48dSDavid van Moolenbroek void pfaltq_store(struct pf_altq *); 112*ebe9f48dSDavid van Moolenbroek struct pf_altq *pfaltq_lookup(const char *); 113*ebe9f48dSDavid van Moolenbroek char *rate2str(double); 114*ebe9f48dSDavid van Moolenbroek 115*ebe9f48dSDavid van Moolenbroek void print_addr(struct pf_addr_wrap *, sa_family_t, int); 116*ebe9f48dSDavid van Moolenbroek void print_host(struct pfsync_state_host *, sa_family_t, int); 117*ebe9f48dSDavid van Moolenbroek void print_seq(struct pfsync_state_peer *); 118*ebe9f48dSDavid van Moolenbroek void print_state(struct pfsync_state *, int); 119*ebe9f48dSDavid van Moolenbroek int unmask(struct pf_addr *, sa_family_t); 120*ebe9f48dSDavid van Moolenbroek 121*ebe9f48dSDavid van Moolenbroek int pfctl_cmdline_symset(char *); 122*ebe9f48dSDavid van Moolenbroek int pfctl_add_trans(struct pfr_buffer *, int, const char *); 123*ebe9f48dSDavid van Moolenbroek u_int32_t 124*ebe9f48dSDavid van Moolenbroek pfctl_get_ticket(struct pfr_buffer *, int, const char *); 125*ebe9f48dSDavid van Moolenbroek int pfctl_trans(int, struct pfr_buffer *, u_long, int); 126*ebe9f48dSDavid van Moolenbroek 127*ebe9f48dSDavid van Moolenbroek #endif /* _PFCTL_H_ */ 128