1223637Sbz/* $OpenBSD: pfctl.h,v 1.42 2007/12/05 12:01:47 chl Exp $ */ 2126353Smlaier 3330449Seadler/*- 4330449Seadler * SPDX-License-Identifier: BSD-2-Clause 5330449Seadler * 6126353Smlaier * Copyright (c) 2001 Daniel Hartmeier 7126353Smlaier * All rights reserved. 8126353Smlaier * 9126353Smlaier * Redistribution and use in source and binary forms, with or without 10126353Smlaier * modification, are permitted provided that the following conditions 11126353Smlaier * are met: 12126353Smlaier * 13126353Smlaier * - Redistributions of source code must retain the above copyright 14126353Smlaier * notice, this list of conditions and the following disclaimer. 15126353Smlaier * - Redistributions in binary form must reproduce the above 16126353Smlaier * copyright notice, this list of conditions and the following 17126353Smlaier * disclaimer in the documentation and/or other materials provided 18126353Smlaier * with the distribution. 19126353Smlaier * 20126353Smlaier * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21126353Smlaier * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22126353Smlaier * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 23126353Smlaier * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 24126353Smlaier * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 25126353Smlaier * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 26126353Smlaier * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 27126353Smlaier * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 28126353Smlaier * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29126353Smlaier * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 30126353Smlaier * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31126353Smlaier * POSSIBILITY OF SUCH DAMAGE. 32126353Smlaier * 33127082Sobrien * $FreeBSD: stable/11/sbin/pfctl/pfctl.h 330449 2018-03-05 07:26:05Z eadler $ 34126353Smlaier */ 35126353Smlaier 36126353Smlaier#ifndef _PFCTL_H_ 37126353Smlaier#define _PFCTL_H_ 38126353Smlaier 39171172Smlaierenum pfctl_show { PFCTL_SHOW_RULES, PFCTL_SHOW_LABELS, PFCTL_SHOW_NOTHING }; 40171172Smlaier 41130617Smlaierenum { PFRB_TABLES = 1, PFRB_TSTATS, PFRB_ADDRS, PFRB_ASTATS, 42130617Smlaier PFRB_IFACES, PFRB_TRANS, PFRB_MAX }; 43126353Smlaierstruct pfr_buffer { 44126353Smlaier int pfrb_type; /* type of content, see enum above */ 45126353Smlaier int pfrb_size; /* number of objects in buffer */ 46126353Smlaier int pfrb_msize; /* maximum number of objects in buffer */ 47126353Smlaier void *pfrb_caddr; /* malloc'ated memory area */ 48126353Smlaier}; 49126353Smlaier#define PFRB_FOREACH(var, buf) \ 50126353Smlaier for ((var) = pfr_buf_next((buf), NULL); \ 51126353Smlaier (var) != NULL; \ 52126353Smlaier (var) = pfr_buf_next((buf), (var))) 53126353Smlaier 54126353Smlaierint pfr_get_fd(void); 55126353Smlaierint pfr_clr_tables(struct pfr_table *, int *, int); 56126353Smlaierint pfr_add_tables(struct pfr_table *, int, int *, int); 57126353Smlaierint pfr_del_tables(struct pfr_table *, int, int *, int); 58126353Smlaierint pfr_get_tables(struct pfr_table *, struct pfr_table *, int *, int); 59126353Smlaierint pfr_get_tstats(struct pfr_table *, struct pfr_tstats *, int *, int); 60126353Smlaierint pfr_clr_tstats(struct pfr_table *, int, int *, int); 61126353Smlaierint pfr_clr_addrs(struct pfr_table *, int *, int); 62126353Smlaierint pfr_add_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 63126353Smlaierint pfr_del_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 64126353Smlaierint pfr_set_addrs(struct pfr_table *, struct pfr_addr *, int, int *, 65130617Smlaier int *, int *, int *, int); 66126353Smlaierint pfr_get_addrs(struct pfr_table *, struct pfr_addr *, int *, int); 67126353Smlaierint pfr_get_astats(struct pfr_table *, struct pfr_astats *, int *, int); 68126353Smlaierint pfr_tst_addrs(struct pfr_table *, struct pfr_addr *, int, int *, int); 69126353Smlaierint pfr_ina_define(struct pfr_table *, struct pfr_addr *, int, int *, 70126353Smlaier int *, int, int); 71126353Smlaiervoid pfr_buf_clear(struct pfr_buffer *); 72126353Smlaierint pfr_buf_add(struct pfr_buffer *, const void *); 73126353Smlaiervoid *pfr_buf_next(struct pfr_buffer *, const void *); 74126353Smlaierint pfr_buf_grow(struct pfr_buffer *, int); 75126353Smlaierint pfr_buf_load(struct pfr_buffer *, char *, int, 76126353Smlaier int (*)(struct pfr_buffer *, char *, int)); 77126353Smlaierchar *pfr_strerror(int); 78171172Smlaierint pfi_get_ifaces(const char *, struct pfi_kif *, int *); 79130617Smlaierint pfi_clr_istats(const char *, int *, int); 80126353Smlaier 81130617Smlaiervoid pfctl_print_title(char *); 82145840Smlaierint pfctl_clear_tables(const char *, int); 83145840Smlaierint pfctl_show_tables(const char *, int); 84126353Smlaierint pfctl_command_tables(int, char *[], char *, const char *, char *, 85145840Smlaier const char *, int); 86130617Smlaierint pfctl_show_altq(int, const char *, int, int); 87126353Smlaiervoid warn_namespace_collision(const char *); 88130617Smlaierint pfctl_show_ifaces(const char *, int); 89145840SmlaierFILE *pfctl_fopen(const char *, const char *); 90126353Smlaier 91127024Smlaier#ifdef __FreeBSD__ 92126355Smlaierextern int altqsupport; 93223637Sbzextern int dummynetsupport; 94223637Sbz#define HTONL(x) (x) = htonl((__uint32_t)(x)) 95126355Smlaier#endif 96126355Smlaier 97126353Smlaier#ifndef DEFAULT_PRIORITY 98126353Smlaier#define DEFAULT_PRIORITY 1 99126353Smlaier#endif 100126353Smlaier 101126353Smlaier#ifndef DEFAULT_QLIMIT 102126353Smlaier#define DEFAULT_QLIMIT 50 103126353Smlaier#endif 104126353Smlaier 105126353Smlaier/* 106126353Smlaier * generalized service curve used for admission control 107126353Smlaier */ 108126353Smlaierstruct segment { 109126353Smlaier LIST_ENTRY(segment) _next; 110126353Smlaier double x, y, d, m; 111126353Smlaier}; 112126353Smlaier 113145840Smlaierextern int loadopt; 114145840Smlaier 115126353Smlaierint check_commit_altq(int, int); 116126353Smlaiervoid pfaltq_store(struct pf_altq *); 117126353Smlaierstruct pf_altq *pfaltq_lookup(const char *); 118126353Smlaierchar *rate2str(double); 119126353Smlaier 120126353Smlaiervoid print_addr(struct pf_addr_wrap *, sa_family_t, int); 121223637Sbzvoid print_host(struct pf_addr *, u_int16_t p, sa_family_t, int); 122223637Sbzvoid print_seq(struct pfsync_state_peer *); 123223637Sbzvoid print_state(struct pfsync_state *, int); 124126353Smlaierint unmask(struct pf_addr *, sa_family_t); 125126353Smlaier 126126353Smlaierint pfctl_cmdline_symset(char *); 127145840Smlaierint pfctl_add_trans(struct pfr_buffer *, int, const char *); 128130617Smlaieru_int32_t 129145840Smlaier pfctl_get_ticket(struct pfr_buffer *, int, const char *); 130130617Smlaierint pfctl_trans(int, struct pfr_buffer *, u_long, int); 131126353Smlaier 132126353Smlaier#endif /* _PFCTL_H_ */ 133