14d723e5aSJoerg Sonnenberger /* $KAME: altq_var.h,v 1.17 2004/04/20 05:09:08 kjc Exp $ */ 24d723e5aSJoerg Sonnenberger 34d723e5aSJoerg Sonnenberger /* 44d723e5aSJoerg Sonnenberger * Copyright (C) 1998-2003 54d723e5aSJoerg Sonnenberger * Sony Computer Science Laboratories Inc. All rights reserved. 64d723e5aSJoerg Sonnenberger * 74d723e5aSJoerg Sonnenberger * Redistribution and use in source and binary forms, with or without 84d723e5aSJoerg Sonnenberger * modification, are permitted provided that the following conditions 94d723e5aSJoerg Sonnenberger * are met: 104d723e5aSJoerg Sonnenberger * 1. Redistributions of source code must retain the above copyright 114d723e5aSJoerg Sonnenberger * notice, this list of conditions and the following disclaimer. 124d723e5aSJoerg Sonnenberger * 2. Redistributions in binary form must reproduce the above copyright 134d723e5aSJoerg Sonnenberger * notice, this list of conditions and the following disclaimer in the 144d723e5aSJoerg Sonnenberger * documentation and/or other materials provided with the distribution. 154d723e5aSJoerg Sonnenberger * 164d723e5aSJoerg Sonnenberger * THIS SOFTWARE IS PROVIDED BY SONY CSL AND CONTRIBUTORS ``AS IS'' AND 174d723e5aSJoerg Sonnenberger * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 184d723e5aSJoerg Sonnenberger * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 194d723e5aSJoerg Sonnenberger * ARE DISCLAIMED. IN NO EVENT SHALL SONY CSL OR CONTRIBUTORS BE LIABLE 204d723e5aSJoerg Sonnenberger * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 214d723e5aSJoerg Sonnenberger * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 224d723e5aSJoerg Sonnenberger * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 234d723e5aSJoerg Sonnenberger * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 244d723e5aSJoerg Sonnenberger * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 254d723e5aSJoerg Sonnenberger * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 264d723e5aSJoerg Sonnenberger * SUCH DAMAGE. 274d723e5aSJoerg Sonnenberger */ 284d723e5aSJoerg Sonnenberger #ifndef _ALTQ_ALTQ_VAR_H_ 294d723e5aSJoerg Sonnenberger #define _ALTQ_ALTQ_VAR_H_ 304d723e5aSJoerg Sonnenberger 314d723e5aSJoerg Sonnenberger #ifdef _KERNEL 324d723e5aSJoerg Sonnenberger 3303d6a592SMatthew Dillon #ifndef _SYS_PARAM_H_ 344d723e5aSJoerg Sonnenberger #include <sys/param.h> 3503d6a592SMatthew Dillon #endif 3603d6a592SMatthew Dillon #ifndef _SYS_KERNEL_H_ 374d723e5aSJoerg Sonnenberger #include <sys/kernel.h> 3803d6a592SMatthew Dillon #endif 3903d6a592SMatthew Dillon #ifndef _SYS_QUEUE_H_ 404d723e5aSJoerg Sonnenberger #include <sys/queue.h> 4103d6a592SMatthew Dillon #endif 424d723e5aSJoerg Sonnenberger 43*805c8e8eSzrj #ifdef MALLOC_DECLARE 444d723e5aSJoerg Sonnenberger MALLOC_DECLARE(M_ALTQ); 45*805c8e8eSzrj #endif 464d723e5aSJoerg Sonnenberger 474d723e5aSJoerg Sonnenberger /* 484d723e5aSJoerg Sonnenberger * machine dependent clock 494d723e5aSJoerg Sonnenberger * a 64bit high resolution time counter. 504d723e5aSJoerg Sonnenberger */ 51870b0161SMatthew Dillon extern uint64_t machclk_freq; 524d723e5aSJoerg Sonnenberger extern uint32_t machclk_per_tick; 534d723e5aSJoerg Sonnenberger 544d723e5aSJoerg Sonnenberger void init_machclk(void); 554d723e5aSJoerg Sonnenberger uint64_t read_machclk(void); 564d723e5aSJoerg Sonnenberger 574d723e5aSJoerg Sonnenberger #define m_pktlen(m) ((m)->m_pkthdr.len) 584d723e5aSJoerg Sonnenberger 594d723e5aSJoerg Sonnenberger extern int pfaltq_running; 604d723e5aSJoerg Sonnenberger 614d723e5aSJoerg Sonnenberger struct ifnet; 624d723e5aSJoerg Sonnenberger struct mbuf; 634d723e5aSJoerg Sonnenberger struct pf_altq; 6470224baaSJan Lentfer struct pf_mtag; 654d723e5aSJoerg Sonnenberger 664d723e5aSJoerg Sonnenberger void *altq_lookup(const char *, int); 674d723e5aSJoerg Sonnenberger uint8_t read_dsfield(struct mbuf *, struct altq_pktattr *); 684d723e5aSJoerg Sonnenberger void write_dsfield(struct mbuf *, struct altq_pktattr *, uint8_t); 694d723e5aSJoerg Sonnenberger int tbr_set(struct ifaltq *, struct tb_profile *); 704d723e5aSJoerg Sonnenberger int tbr_get(struct ifaltq *, struct tb_profile *); 714d723e5aSJoerg Sonnenberger 724d723e5aSJoerg Sonnenberger int altq_pfattach(struct pf_altq *); 734d723e5aSJoerg Sonnenberger int altq_pfdetach(struct pf_altq *); 744d723e5aSJoerg Sonnenberger int altq_add(struct pf_altq *); 754d723e5aSJoerg Sonnenberger int altq_remove(struct pf_altq *); 764d723e5aSJoerg Sonnenberger int altq_add_queue(struct pf_altq *); 774d723e5aSJoerg Sonnenberger int altq_remove_queue(struct pf_altq *); 784d723e5aSJoerg Sonnenberger int altq_getqstats(struct pf_altq *, void *, int *); 794d723e5aSJoerg Sonnenberger 809db4b353SSepherosa Ziehau int cbq_pfattach(struct pf_altq *, struct ifaltq *); 814d723e5aSJoerg Sonnenberger int cbq_add_altq(struct pf_altq *); 824d723e5aSJoerg Sonnenberger int cbq_remove_altq(struct pf_altq *); 834d723e5aSJoerg Sonnenberger int cbq_add_queue(struct pf_altq *); 844d723e5aSJoerg Sonnenberger int cbq_remove_queue(struct pf_altq *); 854d723e5aSJoerg Sonnenberger int cbq_getqstats(struct pf_altq *, void *, int *); 864d723e5aSJoerg Sonnenberger 879db4b353SSepherosa Ziehau int priq_pfattach(struct pf_altq *, struct ifaltq *); 884d723e5aSJoerg Sonnenberger int priq_add_altq(struct pf_altq *); 894d723e5aSJoerg Sonnenberger int priq_remove_altq(struct pf_altq *); 904d723e5aSJoerg Sonnenberger int priq_add_queue(struct pf_altq *); 914d723e5aSJoerg Sonnenberger int priq_remove_queue(struct pf_altq *); 924d723e5aSJoerg Sonnenberger int priq_getqstats(struct pf_altq *, void *, int *); 934d723e5aSJoerg Sonnenberger 949db4b353SSepherosa Ziehau int hfsc_pfattach(struct pf_altq *, struct ifaltq *); 954d723e5aSJoerg Sonnenberger int hfsc_add_altq(struct pf_altq *); 964d723e5aSJoerg Sonnenberger int hfsc_remove_altq(struct pf_altq *); 974d723e5aSJoerg Sonnenberger int hfsc_add_queue(struct pf_altq *); 984d723e5aSJoerg Sonnenberger int hfsc_remove_queue(struct pf_altq *); 994d723e5aSJoerg Sonnenberger int hfsc_getqstats(struct pf_altq *, void *, int *); 1004d723e5aSJoerg Sonnenberger 1019db4b353SSepherosa Ziehau int fairq_pfattach(struct pf_altq *, struct ifaltq *); 1025950bf01SMatthew Dillon int fairq_add_altq(struct pf_altq *); 1035950bf01SMatthew Dillon int fairq_remove_altq(struct pf_altq *); 1045950bf01SMatthew Dillon int fairq_add_queue(struct pf_altq *); 1055950bf01SMatthew Dillon int fairq_remove_queue(struct pf_altq *); 1065950bf01SMatthew Dillon int fairq_getqstats(struct pf_altq *, void *, int *); 1075950bf01SMatthew Dillon 1084d723e5aSJoerg Sonnenberger #endif /* _KERNEL */ 1094d723e5aSJoerg Sonnenberger #endif /* _ALTQ_ALTQ_VAR_H_ */ 110