From owner-svn-src-projects@FreeBSD.ORG Mon Jul 28 19:01:28 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8A631B1C; Mon, 28 Jul 2014 19:01:28 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 6B1952473; Mon, 28 Jul 2014 19:01:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6SJ1Sx9031895; Mon, 28 Jul 2014 19:01:28 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6SJ1QI3031877; Mon, 28 Jul 2014 19:01:26 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407281901.s6SJ1QI3031877@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Mon, 28 Jul 2014 19:01:25 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269195 - in projects/ipfw: sbin/ipfw sys/conf sys/modules/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 28 Jul 2014 19:01:28 -0000 Author: melifaro Date: Mon Jul 28 19:01:25 2014 New Revision: 269195 URL: http://svnweb.freebsd.org/changeset/base/269195 Log: * Add generic ipfw interface tracking API * Rewrite interface tables to use interface indexes Kernel changes: * Add generic interface tracking API: - ipfw_iface_ref (must call unlocked, performs lazy init if needed, allocates state & bumps ref) - ipfw_iface_add_ntfy(UH_WLOCK+WLOCK, links comsumer & runs its callback to update ifindex) - ipfw_iface_del_ntfy(UH_WLOCK+WLOCK, unlinks consumer) - ipfw_iface_unref(unlocked, drops reference) Additionally, consumer callbacks are called in interface withdrawal/departure. * Rewrite interface tables to use iface tracking API. Currently tables are implemented the following way: runtime data is stored as sorted array of {ifidx, val} for existing interfaces full data is stored inside namedobj instance (chained hashed table). * Add IP_FW_XIFLIST opcode to dump status of tracked interfaces * Pass @chain ptr to most non-locked algorithm callbacks: (prepare_add, prepare_del, flush_entry ..). This may be needed for better interaction of given algorithm an other ipfw subsystems * Add optional "change_ti" algorithm handler to permit updating of cached table_info pointer (happens in case of table_max resize) * Fix small bug in ipfw_list_tables() * Add badd (insert into sorted array) and bdel (remove from sorted array) funcs Userland changes: * Add "iflist" cmd to print status of currently tracked interface * Add stringnum_cmp for better interface/table names sorting Added: projects/ipfw/sys/netpfil/ipfw/ip_fw_iface.c Modified: projects/ipfw/sbin/ipfw/ipfw2.c projects/ipfw/sbin/ipfw/ipfw2.h projects/ipfw/sbin/ipfw/main.c projects/ipfw/sbin/ipfw/tables.c projects/ipfw/sys/conf/files projects/ipfw/sys/modules/ipfw/Makefile projects/ipfw/sys/netinet/ip_fw.h projects/ipfw/sys/netpfil/ipfw/ip_fw2.c projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sbin/ipfw/ipfw2.c ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sbin/ipfw/ipfw2.c Mon Jul 28 19:01:25 2014 (r269195) @@ -520,6 +520,26 @@ safe_realloc(void *ptr, size_t size) } /* + * Compare things like interface or table names. + */ +int +stringnum_cmp(const char *a, const char *b) +{ + int la, lb; + + la = strlen(a); + lb = strlen(b); + + if (la > lb) + return (1); + else if (la < lb) + return (-01); + + return (strcmp(a, b)); +} + + +/* * conditionally runs the command. * Selected options or negative -> getsockopt */ @@ -4682,3 +4702,78 @@ ipfw_flush(int force) printf("Flushed all %s.\n", co.do_pipe ? "pipes" : "rules"); } +int +ipfw_get_tracked_ifaces(ipfw_obj_lheader **polh) +{ + ipfw_obj_lheader req, *olh; + size_t sz; + int error; + + memset(&req, 0, sizeof(req)); + sz = sizeof(req); + + error = do_get3(IP_FW_XIFLIST, &req.opheader, &sz); + if (error != 0 && error != ENOMEM) + return (error); + + sz = req.size; + if ((olh = calloc(1, sz)) == NULL) + return (ENOMEM); + + olh->size = sz; + if ((error = do_get3(IP_FW_XIFLIST, &olh->opheader, &sz)) != 0) { + free(olh); + return (error); + } + + *polh = olh; + return (0); +} + +static int +ifinfo_cmp(const void *a, const void *b) +{ + ipfw_iface_info *ia, *ib; + + ia = (ipfw_iface_info *)a; + ib = (ipfw_iface_info *)b; + + return (stringnum_cmp(ia->ifname, ib->ifname)); +} + +/* + * Retrieves table list from kernel, + * optionally sorts it and calls requested function for each table. + * Returns 0 on success. + */ +void +ipfw_list_tifaces() +{ + ipfw_obj_lheader *olh; + ipfw_iface_info *info; + int i, error; + + if ((error = ipfw_get_tracked_ifaces(&olh)) != 0) + err(EX_OSERR, "Unable to request ipfw tracked interface list"); + + + qsort(olh + 1, olh->count, olh->objsize, ifinfo_cmp); + + info = (ipfw_iface_info *)(olh + 1); + for (i = 0; i < olh->count; i++) { + if (info->flags & IPFW_IFFLAG_RESOLVED) + printf("%s ifindex: %d refcount: %u changes: %u\n", + info->ifname, info->ifindex, info->refcnt, + info->gencnt); + else + printf("%s ifindex: unresolved refcount: %u changes: %u\n", + info->ifname, info->refcnt, info->gencnt); + info = (ipfw_iface_info *)((caddr_t)info + olh->objsize); + } + + free(olh); +} + + + + Modified: projects/ipfw/sbin/ipfw/ipfw2.h ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.h Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sbin/ipfw/ipfw2.h Mon Jul 28 19:01:25 2014 (r269195) @@ -246,6 +246,7 @@ void *safe_realloc(void *ptr, size_t siz /* string comparison functions used for historical compatibility */ int _substrcmp(const char *str1, const char* str2); int _substrcmp2(const char *str1, const char* str2, const char* str3); +int stringnum_cmp(const char *a, const char *b); /* utility functions */ int match_token(struct _s_x *table, char *string); @@ -295,6 +296,7 @@ void ipfw_delete(char *av[]); void ipfw_flush(int force); void ipfw_zero(int ac, char *av[], int optname); void ipfw_list(int ac, char *av[], int show_counters); +void ipfw_list_tifaces(void); #ifdef PF /* altq.c */ Modified: projects/ipfw/sbin/ipfw/main.c ============================================================================== --- projects/ipfw/sbin/ipfw/main.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sbin/ipfw/main.c Mon Jul 28 19:01:25 2014 (r269195) @@ -438,6 +438,8 @@ ipfw_main(int oldac, char **oldav) ipfw_list(ac, av, 1 /* show counters */); else if (_substrcmp(*av, "table") == 0) ipfw_table_handler(ac, av); + else if (_substrcmp(*av, "iflist") == 0) + ipfw_list_tifaces(); else errx(EX_USAGE, "bad command `%s'", *av); } Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sbin/ipfw/tables.c Mon Jul 28 19:01:25 2014 (r269195) @@ -767,19 +767,11 @@ static int tablename_cmp(const void *a, const void *b) { ipfw_xtable_info *ia, *ib; - int la, lb; ia = (ipfw_xtable_info *)a; ib = (ipfw_xtable_info *)b; - la = strlen(ia->tablename); - lb = strlen(ib->tablename); - if (la > lb) - return (1); - else if (la < lb) - return (-01); - - return (strcmp(ia->tablename, ib->tablename)); + return (stringnum_cmp(ia->tablename, ib->tablename)); } /* Modified: projects/ipfw/sys/conf/files ============================================================================== --- projects/ipfw/sys/conf/files Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/conf/files Mon Jul 28 19:01:25 2014 (r269195) @@ -3450,6 +3450,7 @@ netpfil/ipfw/ip_fw_pfil.c optional inet netpfil/ipfw/ip_fw_sockopt.c optional inet ipfirewall netpfil/ipfw/ip_fw_table.c optional inet ipfirewall netpfil/ipfw/ip_fw_table_algo.c optional inet ipfirewall +netpfil/ipfw/ip_fw_iface.c optional inet ipfirewall netpfil/ipfw/ip_fw_nat.c optional inet ipfirewall_nat netpfil/pf/if_pflog.c optional pflog pf inet netpfil/pf/if_pfsync.c optional pfsync pf inet Modified: projects/ipfw/sys/modules/ipfw/Makefile ============================================================================== --- projects/ipfw/sys/modules/ipfw/Makefile Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/modules/ipfw/Makefile Mon Jul 28 19:01:25 2014 (r269195) @@ -7,7 +7,7 @@ KMOD= ipfw SRCS= ip_fw2.c ip_fw_pfil.c SRCS+= ip_fw_dynamic.c ip_fw_log.c -SRCS+= ip_fw_sockopt.c ip_fw_table.c ip_fw_table_algo.c +SRCS+= ip_fw_sockopt.c ip_fw_table.c ip_fw_table_algo.c ip_fw_iface.c SRCS+= opt_inet.h opt_inet6.h opt_ipdivert.h opt_ipfw.h opt_ipsec.h CFLAGS+= -DIPFIREWALL Modified: projects/ipfw/sys/netinet/ip_fw.h ============================================================================== --- projects/ipfw/sys/netinet/ip_fw.h Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/netinet/ip_fw.h Mon Jul 28 19:01:25 2014 (r269195) @@ -88,6 +88,7 @@ typedef struct _ip_fw3_opheader { #define IP_FW_XGET 97 /* Retrieve configuration */ #define IP_FW_XADD 98 /* add entry */ #define IP_FW_TABLE_XFIND 99 /* finds an entry */ +#define IP_FW_XIFLIST 100 /* list tracked interfaces */ /* * Usage guidelines: @@ -729,6 +730,7 @@ typedef struct _ipfw_obj_tlv { #define IPFW_TLV_TBL_ENT 5 #define IPFW_TLV_DYN_ENT 6 #define IPFW_TLV_RULE_ENT 7 +#define IPFW_TLV_TBLENT_LIST 8 /* Object name TLV */ typedef struct _ipfw_obj_ntlv { @@ -787,6 +789,16 @@ typedef struct _ipfw_xtable_info { char algoname[32]; /* algorithm name */ } ipfw_xtable_info; +typedef struct _ipfw_iface_info { + char ifname[64]; /* interface name */ + uint32_t ifindex; /* interface index */ + uint32_t flags; /* flags */ + uint32_t refcnt; /* number of references */ + uint32_t gencnt; /* number of changes */ + uint64_t spare; +} ipfw_iface_info; +#define IPFW_IFFLAG_RESOLVED 0x01 /* Interface exists */ + #define IPFW_OBJTYPE_TABLE 1 typedef struct _ipfw_obj_header { ip_fw3_opheader opheader; /* IP_FW3 opcode */ @@ -801,7 +813,7 @@ typedef struct _ipfw_obj_lheader { ip_fw3_opheader opheader; /* IP_FW3 opcode */ uint32_t set_mask; /* disabled set mask */ uint32_t count; /* Total objects count */ - uint32_t size; /* Total objects size */ + uint32_t size; /* Total size (incl. header) */ uint32_t objsize; /* Size of one object */ } ipfw_obj_lheader; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Mon Jul 28 19:01:25 2014 (r269195) @@ -357,15 +357,18 @@ tcpopts_match(struct tcphdr *tcp, ipfw_i } static int -iface_match(struct ifnet *ifp, ipfw_insn_if *cmd, struct ip_fw_chain *chain, uint32_t *tablearg) +iface_match(struct ifnet *ifp, ipfw_insn_if *cmd, struct ip_fw_chain *chain, + uint32_t *tablearg) { + if (ifp == NULL) /* no iface with this packet, match fails */ - return 0; + return (0); + /* Check by name or by IP address */ if (cmd->name[0] != '\0') { /* match by name */ if (cmd->name[0] == '\1') /* use tablearg to match */ return ipfw_lookup_table_extended(chain, cmd->p.glob, 0, - ifp->if_xname, tablearg); + &ifp->if_index, tablearg); /* Check name */ if (cmd->p.glob) { if (fnmatch(cmd->name, ifp->if_xname, 0) == 0) @@ -2608,6 +2611,7 @@ ipfw_init(void) default_fw_tables = IPFW_TABLES_MAX; ipfw_log_bpf(1); /* init */ + ipfw_iface_init(); return (error); } @@ -2618,6 +2622,7 @@ static void ipfw_destroy(void) { + ipfw_iface_destroy(); ipfw_log_bpf(0); /* uninit */ printf("IP firewall unloaded\n"); } @@ -2740,6 +2745,7 @@ vnet_ipfw_uninit(const void *unused) ipfw_destroy_tables(chain); if (reap != NULL) ipfw_reap_rules(reap); + vnet_ipfw_iface_destroy(chain); IPFW_LOCK_DESTROY(chain); ipfw_dyn_uninit(1); /* free the remaining parts */ ipfw_destroy_counters(); Added: projects/ipfw/sys/netpfil/ipfw/ip_fw_iface.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_iface.c Mon Jul 28 19:01:25 2014 (r269195) @@ -0,0 +1,529 @@ +/*- + * Copyright (c) 2014 Yandex LLC. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD: projects/ipfw/sys/netpfil/ipfw/ip_fw_iface.c 267384 2014-06-12 09:59:11Z melifaro $"); + +/* + * Kernel interface tracking API. + * + */ + +#include "opt_ipfw.h" +#include "opt_inet.h" +#ifndef INET +#error IPFIREWALL requires INET. +#endif /* INET */ +#include "opt_inet6.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include /* struct ipfw_rule_ref */ +#include + +#include + +#define CHAIN_TO_II(ch) ((struct namedobj_instance *)ch->ifcfg) + +#define DEFAULT_IFACES 128 + +static void handle_ifdetach(struct ip_fw_chain *ch, struct ipfw_iface *iif, + uint16_t ifindex); +static void handle_ifattach(struct ip_fw_chain *ch, struct ipfw_iface *iif, + uint16_t ifindex); + +/* + * FreeBSD Kernel interface. + */ + +static void ipfw_kifhandler(void *arg, struct ifnet *ifp); +static int ipfw_kiflookup(char *name); +static void iface_khandler_register(void); +static void iface_khandler_deregister(void); + +static eventhandler_tag ipfw_ifdetach_event, ipfw_ifattach_event; +static int num_vnets = 0; +struct mtx vnet_mtx; + +/* + * Checks if kernel interface is contained in our tracked + * interface list and calls attach/detach handler. + */ +static void +ipfw_kifhandler(void *arg, struct ifnet *ifp) +{ + struct ip_fw_chain *ch; + struct ipfw_iface *iif; + struct namedobj_instance *ii; + uintptr_t htype; + + ch = &V_layer3_chain; + htype = (uintptr_t)arg; + + if (ch == NULL) + return; + + IPFW_UH_WLOCK(ch); + ii = CHAIN_TO_II(ch); + if (ii == NULL) { + IPFW_UH_WUNLOCK(ch); + return; + } + iif = (struct ipfw_iface*)ipfw_objhash_lookup_name(ii, 0,ifp->if_xname); + if (iif != NULL) { + if (htype == 1) + handle_ifattach(ch, iif, ifp->if_index); + else + handle_ifdetach(ch, iif, ifp->if_index); + } + IPFW_UH_WUNLOCK(ch); +} + +/* + * Reference current VNET as iface tracking API user. + * Registers interface tracking handlers for first VNET. + */ +static void +iface_khandler_register() +{ + int create; + + create = 0; + + mtx_lock(&vnet_mtx); + if (num_vnets == 0) + create = 1; + num_vnets++; + mtx_unlock(&vnet_mtx); + + if (create == 0) + return; + + printf("IPFW: starting up interface tracker\n"); + + ipfw_ifdetach_event = EVENTHANDLER_REGISTER( + ifnet_departure_event, ipfw_kifhandler, NULL, + EVENTHANDLER_PRI_ANY); + ipfw_ifattach_event = EVENTHANDLER_REGISTER( + ifnet_arrival_event, ipfw_kifhandler, (void*)((uintptr_t)1), + EVENTHANDLER_PRI_ANY); +} + +/* + * + * Detach interface event handlers on last VNET instance + * detach. + */ +static void +iface_khandler_deregister() +{ + int destroy; + + destroy = 0; + mtx_lock(&vnet_mtx); + if (--num_vnets == 0) + destroy = 1; + mtx_unlock(&vnet_mtx); + + if (destroy == 0) + return; + + EVENTHANDLER_DEREGISTER(ifnet_arrival_event, + ipfw_ifattach_event); + EVENTHANDLER_DEREGISTER(ifnet_departure_event, + ipfw_ifdetach_event); +} + +/* + * Retrieves ifindex for given @name. + * + * Returns ifindex or 0. + */ +static int +ipfw_kiflookup(char *name) +{ + struct ifnet *ifp; + int ifindex; + + ifindex = 0; + + if ((ifp = ifunit_ref(name)) != NULL) { + ifindex = ifp->if_index; + if_rele(ifp); + } + + return (ifindex); +} + + + +/* + * Global ipfw startup hook. + * Since we perform lazy initialization, do nothing except + * mutex init. + */ +int +ipfw_iface_init() +{ + + mtx_init(&vnet_mtx, "IPFW ifhandler mtx", NULL, MTX_DEF); + return (0); +} + +/* + * Global ipfw destroy hook. + * Unregister khandlers iff init has been done. + */ +void +ipfw_iface_destroy() +{ + + mtx_destroy(&vnet_mtx); +} + +/* + * Perform actual init on internal request. + * Inits both namehash and global khandler. + */ +static void +vnet_ipfw_iface_init(struct ip_fw_chain *ch) +{ + struct namedobj_instance *ii; + + ii = ipfw_objhash_create(DEFAULT_IFACES); + IPFW_UH_WLOCK(ch); + if (ch->ifcfg == NULL) { + ch->ifcfg = ii; + ii = NULL; + } + IPFW_UH_WUNLOCK(ch); + + if (ii != NULL) { + /* Already initialized. Free namehash. */ + ipfw_objhash_destroy(ii); + } else { + /* We're the first ones. Init kernel hooks. */ + iface_khandler_register(); + } +} + +static void +destroy_iface(struct namedobj_instance *ii, struct named_object *no, + void *arg) +{ + struct ipfw_iface *iif; + struct ip_fw_chain *ch; + + ch = (struct ip_fw_chain *)arg; + iif = (struct ipfw_iface *)no; + + /* Assume all consumers have been already detached */ + free(iif, M_IPFW); +} + +/* + * Per-VNET ipfw detach hook. + * + */ +void +vnet_ipfw_iface_destroy(struct ip_fw_chain *ch) +{ + struct namedobj_instance *ii; + + IPFW_UH_WLOCK(ch); + ii = CHAIN_TO_II(ch); + ch->ifcfg = NULL; + IPFW_UH_WUNLOCK(ch); + + if (ii != NULL) { + ipfw_objhash_foreach(ii, destroy_iface, ch); + ipfw_objhash_destroy(ii); + iface_khandler_deregister(); + } +} + +/* + * Notify the subsystem that we are interested in tracking + * interface @name. This function has to be called without + * holding any locks to permit allocating the necessary states + * for proper interface tracking. + * + * Returns 0 on success. + */ +int +ipfw_iface_ref(struct ip_fw_chain *ch, char *name, + struct ipfw_ifc *ic) +{ + struct namedobj_instance *ii; + struct ipfw_iface *iif, *tmp; + + if (strlen(name) >= sizeof(iif->ifname)) + return (EINVAL); + + IPFW_UH_WLOCK(ch); + + ii = CHAIN_TO_II(ch); + if (ii == NULL) { + + /* + * First request to subsystem. + * Let's perform init. + */ + IPFW_UH_WUNLOCK(ch); + vnet_ipfw_iface_init(ch); + IPFW_UH_WLOCK(ch); + ii = CHAIN_TO_II(ch); + } + + iif = (struct ipfw_iface *)ipfw_objhash_lookup_name(ii, 0, name); + + if (iif != NULL) { + iif->no.refcnt++; + ic->iface = iif; + IPFW_UH_WUNLOCK(ch); + return (0); + } + + IPFW_UH_WUNLOCK(ch); + + /* Not found. Let's create one */ + iif = malloc(sizeof(struct ipfw_iface), M_IPFW, M_WAITOK | M_ZERO); + TAILQ_INIT(&iif->consumers); + iif->no.name = iif->ifname; + strlcpy(iif->ifname, name, sizeof(iif->ifname)); + + /* + * Ref & link to the list. + * + * We assume ifnet_arrival_event / ifnet_departure_event + * are not holding any locks. + */ + iif->no.refcnt = 1; + IPFW_UH_WLOCK(ch); + + tmp = (struct ipfw_iface *)ipfw_objhash_lookup_name(ii, 0, name); + if (tmp != NULL) { + /* Interface has been created since unlock. Ref and return */ + tmp->no.refcnt++; + ic->iface = tmp; + IPFW_UH_WUNLOCK(ch); + free(iif, M_IPFW); + return (0); + } + + iif->ifindex = ipfw_kiflookup(name); + if (iif->ifindex != 0) + iif->resolved = 1; + + ipfw_objhash_add(ii, &iif->no); + ic->iface = iif; + + IPFW_UH_WUNLOCK(ch); + + return (0); +} + +/* + * Adds @ic to the list of iif interface consumers. + * Must be called with holding both UH+WLOCK. + * Callback may be immediately called (if interface exists). + */ +void +ipfw_iface_add_notify(struct ip_fw_chain *ch, struct ipfw_ifc *ic) +{ + struct ipfw_iface *iif; + + IPFW_UH_WLOCK_ASSERT(ch); + IPFW_WLOCK_ASSERT(ch); + + iif = ic->iface; + + TAILQ_INSERT_TAIL(&iif->consumers, ic, next); + if (iif->resolved != 0) + ic->cb(ch, ic->cbdata, iif->ifindex); +} + +/* + * Unlinks interface tracker object @ic from interface. + * Must be called whi holding UH lock. + */ +void +ipfw_iface_del_notify(struct ip_fw_chain *ch, struct ipfw_ifc *ic) +{ + struct ipfw_iface *iif; + + IPFW_UH_WLOCK_ASSERT(ch); + + iif = ic->iface; + if (ic->linked != 0) + TAILQ_REMOVE(&iif->consumers, ic, next); +} + +/* + * Unreference interface specified by @ic. + * Must be called without holding any locks. + */ +void +ipfw_iface_unref(struct ip_fw_chain *ch, struct ipfw_ifc *ic) +{ + struct ipfw_iface *iif; + + iif = ic->iface; + ic->iface = NULL; + + IPFW_UH_WLOCK(ch); + iif->no.refcnt--; + /* TODO: check for references & delete */ + IPFW_UH_WUNLOCK(ch); +} + +/* + * Interface arrival handler. + */ +static void +handle_ifattach(struct ip_fw_chain *ch, struct ipfw_iface *iif, + uint16_t ifindex) +{ + struct ipfw_ifc *ic; + + IPFW_UH_WLOCK_ASSERT(ch); + + iif->gencnt++; + iif->resolved = 1; + iif->ifindex = ifindex; + + IPFW_WLOCK(ch); + TAILQ_FOREACH(ic, &iif->consumers, next) + ic->cb(ch, ic->cbdata, iif->ifindex); + IPFW_WUNLOCK(ch); +} + +/* + * Interface departure handler. + */ +static void +handle_ifdetach(struct ip_fw_chain *ch, struct ipfw_iface *iif, + uint16_t ifindex) +{ + struct ipfw_ifc *ic; + + IPFW_UH_WLOCK_ASSERT(ch); + + IPFW_WLOCK(ch); + TAILQ_FOREACH(ic, &iif->consumers, next) + ic->cb(ch, ic->cbdata, 0); + IPFW_WUNLOCK(ch); + + iif->gencnt++; + iif->resolved = 0; + iif->ifindex = 0; +} + +struct dump_iface_args { + struct ip_fw_chain *ch; + struct sockopt_data *sd; +}; + +static void +export_iface_internal(struct namedobj_instance *ii, struct named_object *no, + void *arg) +{ + ipfw_iface_info *i; + struct dump_iface_args *da; + struct ipfw_iface *iif; + + da = (struct dump_iface_args *)arg; + + i = (ipfw_iface_info *)ipfw_get_sopt_space(da->sd, sizeof(*i)); + KASSERT(i != 0, ("previously checked buffer is not enough")); + + iif = (struct ipfw_iface *)no; + + strlcpy(i->ifname, iif->ifname, sizeof(i->ifname)); + if (iif->resolved) + i->flags |= IPFW_IFFLAG_RESOLVED; + i->ifindex = iif->ifindex; + i->refcnt = iif->no.refcnt; + i->gencnt = iif->gencnt; +} + +/* + * Lists all interface currently tracked by ipfw. + * Data layout (v0)(current): + * Request: [ ipfw_obj_lheader ], size = ipfw_obj_lheader.size + * Reply: [ ipfw_obj_lheader ipfw_iface_info x N ] + * + * Returns 0 on success + */ +int +ipfw_list_ifaces(struct ip_fw_chain *ch, struct sockopt_data *sd) +{ + struct _ipfw_obj_lheader *olh; + struct dump_iface_args da; + uint32_t count, size; + + olh = (struct _ipfw_obj_lheader *)ipfw_get_sopt_header(sd,sizeof(*olh)); + if (olh == NULL) + return (EINVAL); + if (sd->valsize < olh->size) + return (EINVAL); + + IPFW_UH_RLOCK(ch); + count = ipfw_objhash_count(CHAIN_TO_II(ch)); + size = count * sizeof(ipfw_iface_info) + sizeof(ipfw_obj_lheader); + + /* Fill in header regadless of buffer size */ + olh->count = count; + olh->objsize = sizeof(ipfw_iface_info); + + if (size > olh->size) { + olh->size = size; + IPFW_UH_RUNLOCK(ch); + return (ENOMEM); + } + olh->size = size; + + da.ch = ch; + da.sd = sd; + + ipfw_objhash_foreach(CHAIN_TO_II(ch), export_iface_internal, &da); + IPFW_UH_RUNLOCK(ch); + + return (0); +} + + Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Mon Jul 28 19:01:25 2014 (r269195) @@ -274,6 +274,7 @@ struct ip_fw_chain { struct ip_fw *reap; /* list of rules to reap */ struct ip_fw *default_rule; struct tables_config *tblcfg; /* tables module data */ + void *ifcfg; /* interface module data */ #if defined( __linux__ ) || defined( _WIN32 ) spinlock_t uh_lock; #else @@ -281,6 +282,21 @@ struct ip_fw_chain { #endif }; +struct namedobj_instance; + +struct named_object { + TAILQ_ENTRY(named_object) nn_next; /* namehash */ + TAILQ_ENTRY(named_object) nv_next; /* valuehash */ + char *name; /* object name */ + uint8_t type; /* object type */ + uint8_t compat; /* Object name is number */ + uint16_t kidx; /* object kernel index */ + uint16_t uidx; /* userland idx for compat records */ + uint32_t set; /* set object belongs to */ + uint32_t refcnt; /* number of references */ +}; +TAILQ_HEAD(namedobjects_head, named_object); + struct sockopt; /* used by tcp_var.h */ struct sockopt_data { caddr_t kbuf; /* allocated buffer */ @@ -292,6 +308,30 @@ struct sockopt_data { size_t valsize; /* original data size */ }; +struct ipfw_ifc; + +typedef void (ipfw_ifc_cb)(struct ip_fw_chain *ch, void *cbdata, + uint16_t ifindex); + +struct ipfw_iface { + struct named_object no; + char ifname[64]; + int resolved; + uint16_t ifindex; + uint16_t spare; + uint64_t gencnt; + TAILQ_HEAD(, ipfw_ifc) consumers; +}; + +struct ipfw_ifc { + TAILQ_ENTRY(ipfw_ifc) next; + struct ipfw_iface *iface; + ipfw_ifc_cb *cb; + void *cbdata; + int linked; + int spare; +}; + /* Macro for working with various counters */ #ifdef USERSPACE #define IPFW_INC_RULE_COUNTER(_cntr, _bytes) do { \ @@ -442,6 +482,17 @@ struct ip_fw_bcounter0 { #define RULEKSIZE1(r) roundup2((sizeof(struct ip_fw) + (r)->cmd_len*4 - 4), 8) +/* In ip_fw_iface.c */ +int ipfw_iface_init(void); +void ipfw_iface_destroy(void); +void vnet_ipfw_iface_destroy(struct ip_fw_chain *ch); +int ipfw_iface_ref(struct ip_fw_chain *ch, char *name, + struct ipfw_ifc *ic); +void ipfw_iface_unref(struct ip_fw_chain *ch, struct ipfw_ifc *ic); +void ipfw_iface_add_notify(struct ip_fw_chain *ch, struct ipfw_ifc *ic); +void ipfw_iface_del_notify(struct ip_fw_chain *ch, struct ipfw_ifc *ic); +int ipfw_list_ifaces(struct ip_fw_chain *ch, struct sockopt_data *sd); + /* In ip_fw_sockopt.c */ int ipfw_find_rule(struct ip_fw_chain *chain, uint32_t key, uint32_t id); int ipfw_ctl(struct sockopt *sopt); @@ -454,21 +505,6 @@ struct ip_fw *ipfw_alloc_rule(struct ip_ caddr_t ipfw_get_sopt_space(struct sockopt_data *sd, size_t needed); caddr_t ipfw_get_sopt_header(struct sockopt_data *sd, size_t needed); -struct namedobj_instance; - -struct named_object { - TAILQ_ENTRY(named_object) nn_next; /* namehash */ - TAILQ_ENTRY(named_object) nv_next; /* valuehash */ - char *name; /* object name */ - uint8_t type; /* object type */ - uint8_t compat; /* Object name is number */ - uint16_t kidx; /* object kernel index */ - uint16_t uidx; /* userland idx for compat records */ - uint32_t set; /* set object belongs to */ - uint32_t refcnt; /* number of references */ -}; -TAILQ_HEAD(namedobjects_head, named_object); - typedef void (objhash_cb_t)(struct namedobj_instance *ni, struct named_object *, void *arg); struct namedobj_instance *ipfw_objhash_create(uint32_t items); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Mon Jul 28 19:01:25 2014 (r269195) @@ -1859,6 +1859,10 @@ ipfw_ctl(struct sockopt *sopt) error = dump_config(chain, &sdata); break; + case IP_FW_XIFLIST: /* IP_FW3 */ + error = ipfw_list_ifaces(chain, &sdata); + break; + case IP_FW_XADD: /* IP_FW3 */ error = add_entry(chain, &sdata); break; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Mon Jul 28 14:41:22 2014 (r269194) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Mon Jul 28 19:01:25 2014 (r269195) @@ -94,7 +94,7 @@ struct tables_config { static struct table_config *find_table(struct namedobj_instance *ni, struct tid_info *ti); -static struct table_config *alloc_table_config(struct namedobj_instance *ni, +static struct table_config *alloc_table_config(struct ip_fw_chain *ch, struct tid_info *ti, struct table_algo *ta, char *adata, uint8_t vtype); static void free_table_config(struct namedobj_instance *ni, struct table_config *tc); @@ -206,7 +206,7 @@ add_table_entry(struct ip_fw_chain *ch, /* Prepare record (allocate memory) */ memset(&ta_buf, 0, sizeof(ta_buf)); - error = ta->prepare_add(tei, &ta_buf); + error = ta->prepare_add(ch, tei, &ta_buf); if (error != 0) return (error); @@ -238,7 +238,7 @@ add_table_entry(struct ip_fw_chain *ch, IPFW_UH_WUNLOCK(ch); /* Run cleaning callback anyway */ - ta->flush_entry(tei, &ta_buf); + ta->flush_entry(ch, tei, &ta_buf); return (error); } @@ -296,7 +296,7 @@ del_table_entry(struct ip_fw_chain *ch, * prepare_del() key, so we're running under UH_LOCK here. */ memset(&ta_buf, 0, sizeof(ta_buf)); - if ((error = ta->prepare_del(tei, &ta_buf)) != 0) { + if ((error = ta->prepare_del(ch, tei, &ta_buf)) != 0) { IPFW_UH_WUNLOCK(ch); return (error); } @@ -313,7 +313,7 @@ del_table_entry(struct ip_fw_chain *ch, IPFW_UH_WUNLOCK(ch); - ta->flush_entry(tei, &ta_buf); + ta->flush_entry(ch, tei, &ta_buf); return (error); } @@ -341,7 +341,7 @@ modify_table(struct ip_fw_chain *ch, str IPFW_UH_WLOCK(ch); ti = KIDX_TO_TI(ch, tc->no.kidx); - error = ta->fill_mod(tc->astate, ti, &ta_buf, &pflags); + error = ta->fill_mod(tc->astate, ti, ta_buf, &pflags); /* * prepare_mofify may return zero in @pflags to @@ -351,7 +351,7 @@ modify_table(struct ip_fw_chain *ch, str if (error == 0 && pflags != 0) { /* Do actual modification */ IPFW_WLOCK(ch); - ta->modify(tc->astate, ti, &ta_buf, pflags); + ta->modify(tc->astate, ti, ta_buf, pflags); IPFW_WUNLOCK(ch); } @@ -666,7 +666,7 @@ flush_table(struct ip_fw_chain *ch, stru * TODO: pass startup parametes somehow. */ memset(&ti_new, 0, sizeof(struct table_info)); - if ((error = ta->init(&astate_new, &ti_new, NULL)) != 0) { + if ((error = ta->init(ch, &astate_new, &ti_new, NULL)) != 0) { IPFW_UH_WLOCK(ch); tc->no.refcnt--; IPFW_UH_WUNLOCK(ch); @@ -803,7 +803,9 @@ ipfw_resize_tables(struct ip_fw_chain *c unsigned int ntables_old, tbl; struct namedobj_instance *ni; void *new_idx, *old_tablestate, *tablestate; - int new_blocks; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Tue Jul 29 08:00:14 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1CD2E979; Tue, 29 Jul 2014 08:00:14 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0A5CB25B7; Tue, 29 Jul 2014 08:00:14 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6T80DRx023604; Tue, 29 Jul 2014 08:00:13 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6T80Dr4023600; Tue, 29 Jul 2014 08:00:13 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407290800.s6T80Dr4023600@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 29 Jul 2014 08:00:13 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269227 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 08:00:14 -0000 Author: melifaro Date: Tue Jul 29 08:00:13 2014 New Revision: 269227 URL: http://svnweb.freebsd.org/changeset/base/269227 Log: * Change algorthm names to "type:algo" (e.g. "iface:array", "cidr:radix") format. * Pass number of items changed in add/del hooks to permit adding/deleting multiple values at once. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 07:40:14 2014 (r269226) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 08:00:13 2014 (r269227) @@ -139,6 +139,7 @@ add_table_entry(struct ip_fw_chain *ch, struct namedobj_instance *ni; uint16_t kidx; int error; + uint32_t num; uint64_t aflags; char ta_buf[128]; @@ -222,16 +223,16 @@ add_table_entry(struct ip_fw_chain *ch, /* We've got valid table in @tc. Let's add data */ kidx = tc->no.kidx; ta = tc->ta; + num = 0; IPFW_WLOCK(ch); - - error = ta->add(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, &aflags); - + error = ta->add(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, + &aflags, &num); IPFW_WUNLOCK(ch); /* Update number of records. */ - if (error == 0 && (tei->flags & TEI_FLAGS_UPDATED) == 0) - tc->count++; + if (error == 0) + tc->count += num; tc->flags = aflags; @@ -252,6 +253,7 @@ del_table_entry(struct ip_fw_chain *ch, struct namedobj_instance *ni; uint16_t kidx; int error; + uint32_t num; uint64_t aflags; char ta_buf[128]; @@ -302,13 +304,15 @@ del_table_entry(struct ip_fw_chain *ch, } kidx = tc->no.kidx; + num = 0; IPFW_WLOCK(ch); - error = ta->del(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf,&aflags); + error = ta->del(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, + &aflags, &num); IPFW_WUNLOCK(ch); if (error == 0) - tc->count--; + tc->count -= num; tc->flags = aflags; IPFW_UH_WUNLOCK(ch); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 07:40:14 2014 (r269226) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 08:00:13 2014 (r269227) @@ -70,9 +70,9 @@ typedef int (ta_prepare_add)(struct ip_f typedef int (ta_prepare_del)(struct ip_fw_chain *ch, struct tentry_info *tei, void *ta_buf); typedef int (ta_add)(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags); + struct tentry_info *tei, void *ta_buf, uint64_t *pflags, uint32_t *pnum); typedef int (ta_del)(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags); + struct tentry_info *tei, void *ta_buf, uint64_t *pflags, uint32_t *pnum); typedef void (ta_flush_entry)(struct ip_fw_chain *ch, struct tentry_info *tei, void *ta_buf); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 07:40:14 2014 (r269226) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 08:00:13 2014 (r269227) @@ -365,8 +365,8 @@ ta_prepare_add_cidr(struct ip_fw_chain * } static int -ta_add_cidr(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags) +ta_add_cidr(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) { struct radix_node_head *rnh; struct radix_node *rn; @@ -408,11 +408,13 @@ ta_add_cidr(void *ta_state, struct table /* Indicate that update has happened instead of addition */ tei->flags |= TEI_FLAGS_UPDATED; + *pnum = 0; return (0); } tb->ent_ptr = NULL; + *pnum = 1; return (0); } @@ -474,8 +476,8 @@ ta_prepare_del_cidr(struct ip_fw_chain * } static int -ta_del_cidr(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags) +ta_del_cidr(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) { struct radix_node_head *rnh; struct radix_node *rn; @@ -495,6 +497,8 @@ ta_del_cidr(void *ta_state, struct table if (rn == NULL) return (ENOENT); + *pnum = 1; + return (0); } @@ -511,7 +515,7 @@ ta_flush_cidr_entry(struct ip_fw_chain * } struct table_algo radix_cidr = { - .name = "radix_cidr", + .name = "cidr:radix", .lookup = ta_lookup_radix, .init = ta_init_radix, .destroy = ta_destroy_radix, @@ -808,8 +812,8 @@ ta_prepare_add_ifidx(struct ip_fw_chain } static int -ta_add_ifidx(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags) +ta_add_ifidx(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) { struct iftable_cfg *icfg; struct ifentry *ife, *tmp; @@ -843,6 +847,7 @@ ta_add_ifidx(void *ta_state, struct tabl /* Indicate that update has happened instead of addition */ tei->flags |= TEI_FLAGS_UPDATED; + *pnum = 0; return (0); } @@ -859,6 +864,7 @@ ta_add_ifidx(void *ta_state, struct tabl } tb->ife = NULL; + *pnum = 1; return (0); } @@ -890,8 +896,8 @@ ta_prepare_del_ifidx(struct ip_fw_chain * runtime array. Removed interface notification. */ static int -ta_del_ifidx(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags) +ta_del_ifidx(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) { struct iftable_cfg *icfg; struct ifentry *ife; @@ -931,6 +937,7 @@ ta_del_ifidx(void *ta_state, struct tabl icfg->count--; tb->ife = ife; + *pnum = 1; return (0); } @@ -1161,7 +1168,7 @@ ta_foreach_ifidx(void *ta_state, struct } struct table_algo idx_iface = { - .name = "idx_iface", + .name = "iface:array", .lookup = ta_lookup_ifidx, .init = ta_init_ifidx, .destroy = ta_destroy_ifidx, From owner-svn-src-projects@FreeBSD.ORG Tue Jul 29 19:49:39 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id C3129E94; Tue, 29 Jul 2014 19:49:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A3D092B9D; Tue, 29 Jul 2014 19:49:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6TJndNh016816; Tue, 29 Jul 2014 19:49:39 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6TJndEa016811; Tue, 29 Jul 2014 19:49:39 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407291949.s6TJndEa016811@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 29 Jul 2014 19:49:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269252 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 19:49:39 -0000 Author: melifaro Date: Tue Jul 29 19:49:38 2014 New Revision: 269252 URL: http://svnweb.freebsd.org/changeset/base/269252 Log: * Add new ipfw cidr algorihm: hash table. Algorithm works with both IPv4 and IPv6 prefixes, /32 and /128 ranges are assumed by default. It works the following way: input IP address is masked to specified mask, hashed and searched inside hash bucket. Current implementation does not support "lookup" method and hash auto-resize. This will be changed soon. some examples: ipfw table mi_test2 create type cidr algo cidr:hash ipfw table mi_test create type cidr algo "cidr:hash masks=/30,/64" ipfw table mi_test2 info +++ table(mi_test2), set(0) +++ type: cidr, kindex: 7 valtype: number, references: 0 algorithm: cidr:hash items: 0, size: 220 ipfw table mi_test info +++ table(mi_test), set(0) +++ type: cidr, kindex: 6 valtype: number, references: 0 algorithm: cidr:hash masks=/30,/64 items: 0, size: 220 ipfw table mi_test add 10.0.0.5/30 ipfw table mi_test add 10.0.0.8/30 ipfw table mi_test add 2a02:6b8:b010::1/64 25 ipfw table mi_test list +++ table(mi_test), set(0) +++ 10.0.0.4/30 0 10.0.0.8/30 0 2a02:6b8:b010::/64 25 Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 19:49:27 2014 (r269251) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 19:49:38 2014 (r269252) @@ -1592,10 +1592,9 @@ find_table_algo(struct tables_config *tc /* Search by type */ switch (ti->type) { case IPFW_TABLE_CIDR: - return (&radix_cidr); + return (&cidr_radix); case IPFW_TABLE_INTERFACE: - return (&idx_iface); - //return (&radix_iface); + return (&iface_idx); } return (NULL); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 19:49:27 2014 (r269251) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 19:49:38 2014 (r269252) @@ -118,7 +118,7 @@ struct table_algo { }; void ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta); -extern struct table_algo radix_cidr, idx_iface; +extern struct table_algo cidr_radix, iface_idx; void ipfw_table_algo_init(struct ip_fw_chain *chain); void ipfw_table_algo_destroy(struct ip_fw_chain *chain); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 19:49:27 2014 (r269251) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 19:49:38 2014 (r269252) @@ -514,7 +514,7 @@ ta_flush_cidr_entry(struct ip_fw_chain * free(tb->ent_ptr, M_IPFW_TBL); } -struct table_algo radix_cidr = { +struct table_algo cidr_radix = { .name = "cidr:radix", .lookup = ta_lookup_radix, .init = ta_init_radix, @@ -531,6 +531,686 @@ struct table_algo radix_cidr = { /* + * cidr:hash cmds + * + * + * ti->data: + * [inv.mask4][inv.mask6][log2hsize4][log2hsize6] + * [ 8][ 8[ 8][ 8] + * + * inv.mask4: 32 - mask + * inv.mask6: + * 1) _slow lookup: mask + * 2) _aligned: (128 - mask) / 8 + * 3) _64: 8 + */ + +struct chashentry; + +SLIST_HEAD(chashbhead, chashentry); + +struct chash_cfg { + struct chashbhead *head4; + struct chashbhead *head6; + size_t size4; + size_t size6; + size_t items; + uint8_t mask4; + uint8_t mask6; +}; + +struct chashentry { + SLIST_ENTRY(chashentry) next; + uint32_t value; + uint32_t type; + union { + uint32_t a4; /* Host format */ + struct in6_addr a6; /* Network format */ + } a; +}; + +static __inline uint32_t +hash_ip(uint32_t addr, int hsize) +{ + + return (addr % (hsize - 1)); +} + +static __inline uint32_t +hash_ip6(struct in6_addr *addr6, int hsize) +{ + uint32_t i; + + i = addr6->s6_addr32[0] ^ addr6->s6_addr32[1] ^ + addr6->s6_addr32[2] ^ addr6->s6_addr32[3]; + + return (i % (hsize - 1)); +} + + +static __inline uint16_t +hash_ip64(struct in6_addr *addr6, int hsize) +{ + uint32_t i; + + i = addr6->s6_addr32[0] ^ addr6->s6_addr32[1]; + + return (i % (hsize - 1)); +} + + +static __inline uint32_t +hash_ip6_slow(struct in6_addr *addr6, void *key, int mask, int hsize) +{ + struct in6_addr mask6; + + ipv6_writemask(&mask6, mask); + memcpy(addr6, key, sizeof(struct in6_addr)); + APPLY_MASK(addr6, &mask6); + return (hash_ip6(addr6, hsize)); +} + +static __inline uint32_t +hash_ip6_al(struct in6_addr *addr6, void *key, int mask, int hsize) +{ + uint64_t *paddr; + + paddr = (uint64_t *)addr6; + *paddr = 0; + *(paddr + 1) = 0; + memcpy(addr6, key, mask); + return (hash_ip6(addr6, hsize)); +} + +static int +ta_lookup_chash_slow(struct table_info *ti, void *key, uint32_t keylen, + uint32_t *val) +{ + struct chashbhead *head; + struct chashentry *ent; + uint16_t hash, hsize; + uint8_t imask; + + if (keylen == sizeof(in_addr_t)) { + head = (struct chashbhead *)ti->state; + imask = ti->data >> 24; + hsize = 1 << ((ti->data & 0xFFFF) >> 8); + uint32_t a; + a = ntohl(*((in_addr_t *)key)); + a = a >> imask; + hash = hash_ip(a, hsize); + SLIST_FOREACH(ent, &head[hash], next) { + if (ent->a.a4 == a) { + *val = ent->value; + return (1); + } + } + } else { + /* IPv6: worst scenario: non-round mask */ + struct in6_addr addr6; + head = (struct chashbhead *)ti->xstate; + imask = (ti->data & 0xFF0000) >> 16; + hsize = 1 << (ti->data & 0xFF); + hash = hash_ip6_slow(&addr6, key, imask, hsize); + SLIST_FOREACH(ent, &head[hash], next) { + if (memcmp(&ent->a.a6, &addr6, 16) == 0) { + *val = ent->value; + return (1); + } + } + } + + return (0); +} + +static int +ta_lookup_chash_aligned(struct table_info *ti, void *key, uint32_t keylen, + uint32_t *val) +{ + struct chashbhead *head; + struct chashentry *ent; + uint16_t hash, hsize; + uint8_t imask; + + if (keylen == sizeof(in_addr_t)) { + head = (struct chashbhead *)ti->state; + imask = ti->data >> 24; + hsize = 1 << ((ti->data & 0xFFFF) >> 8); + uint32_t a; + a = ntohl(*((in_addr_t *)key)); + a = a >> imask; + hash = hash_ip(a, hsize); + SLIST_FOREACH(ent, &head[hash], next) { + if (ent->a.a4 == a) { + *val = ent->value; + return (1); + } + } + } else { + /* IPv6: aligned to 8bit mask */ + struct in6_addr addr6; + uint64_t *paddr, *ptmp; + head = (struct chashbhead *)ti->xstate; + imask = (ti->data & 0xFF0000) >> 16; + hsize = 1 << (ti->data & 0xFF); + + hash = hash_ip6_al(&addr6, key, imask, hsize); + paddr = (uint64_t *)&addr6; + SLIST_FOREACH(ent, &head[hash], next) { + ptmp = (uint64_t *)&ent->a.a6; + if (paddr[0] == ptmp[0] && paddr[1] == ptmp[1]) { + *val = ent->value; + return (1); + } + } + } + + return (0); +} + +static int +ta_lookup_chash_64(struct table_info *ti, void *key, uint32_t keylen, + uint32_t *val) +{ + struct chashbhead *head; + struct chashentry *ent; + uint16_t hash, hsize; + uint8_t imask; + + if (keylen == sizeof(in_addr_t)) { + head = (struct chashbhead *)ti->state; + imask = ti->data >> 24; + hsize = 1 << ((ti->data & 0xFFFF) >> 8); + uint32_t a; + a = ntohl(*((in_addr_t *)key)); + a = a >> imask; + hash = hash_ip(a, hsize); + SLIST_FOREACH(ent, &head[hash], next) { + if (ent->a.a4 == a) { + *val = ent->value; + return (1); + } + } + } else { + /* IPv6: /64 */ + uint64_t a6, *paddr; + head = (struct chashbhead *)ti->xstate; + paddr = (uint64_t *)key; + hsize = 1 << (ti->data & 0xFF); + a6 = *paddr; + hash = hash_ip64((struct in6_addr *)key, hsize); + SLIST_FOREACH(ent, &head[hash], next) { + paddr = (uint64_t *)&ent->a.a6; + if (a6 == *paddr) { + *val = ent->value; + return (1); + } + } + } + + return (0); +} + +static int +chash_parse_opts(struct chash_cfg *ccfg, char *data) +{ + char *pdel, *pend, *s; + int mask4, mask6; + + mask4 = ccfg->mask4; + mask6 = ccfg->mask6; + + if (data == NULL) + return (0); + if ((pdel = strchr(data, ' ')) == NULL) + return (0); + while (*pdel == ' ') + pdel++; + if (strncmp(pdel, "masks=", 6) != 0) + return (EINVAL); + if ((s = strchr(pdel, ' ')) != NULL) + *s++ = '\0'; + + pdel += 6; + /* Need /XX[,/YY] */ + if (*pdel++ != '/') + return (EINVAL); + mask4 = strtol(pdel, &pend, 10); + if (*pend == ',') { + /* ,/YY */ + pdel = pend + 1; + if (*pdel++ != '/') + return (EINVAL); + mask6 = strtol(pdel, &pend, 10); + if (*pend != '\0') + return (EINVAL); + } else if (*pend != '\0') + return (EINVAL); + + if (mask4 < 0 || mask4 > 32 || mask6 < 0 || mask6 > 128) + return (EINVAL); + + ccfg->mask4 = mask4; + ccfg->mask6 = mask6; + + return (0); +} + +static void +ta_print_chash_config(void *ta_state, struct table_info *ti, char *buf, + size_t bufsize) +{ + struct chash_cfg *ccfg; + + ccfg = (struct chash_cfg *)ta_state; + + if (ccfg->mask4 != 32 || ccfg->mask6 != 128) + snprintf(buf, bufsize, "%s masks=/%d,/%d", "cidr:hash", + ccfg->mask4, ccfg->mask6); + else + snprintf(buf, bufsize, "%s", "cidr:hash"); +} + + +/* + * New table. + * We assume 'data' to be either NULL or the following format: + * 'cidr:hash [masks=/32[,/128]]' + */ +static int +ta_init_chash(struct ip_fw_chain *ch, void **ta_state, struct table_info *ti, + char *data) +{ + int error, i; + int v4, v6; + struct chash_cfg *ccfg; + + ccfg = malloc(sizeof(struct chash_cfg), M_IPFW, M_WAITOK | M_ZERO); + + ccfg->mask4 = 32; + ccfg->mask6 = 128; + + if ((error = chash_parse_opts(ccfg, data)) != 0) { + free(ccfg, M_IPFW); + return (error); + } + + v4 = 7; + v6 = 7; + ccfg->size4 = 1 << v4; + ccfg->size6 = 1 << v6; + + ccfg->head4 = malloc(sizeof(struct chashbhead) * ccfg->size4, M_IPFW, + M_WAITOK | M_ZERO); + ccfg->head6 = malloc(sizeof(struct chashbhead) * ccfg->size6, M_IPFW, + M_WAITOK | M_ZERO); + for (i = 0; i < ccfg->size4; i++) + SLIST_INIT(&ccfg->head4[i]); + for (i = 0; i < ccfg->size6; i++) + SLIST_INIT(&ccfg->head6[i]); + + + *ta_state = ccfg; + ti->state = ccfg->head4; + ti->xstate = ccfg->head6; + + /* Store data depending on v6 mask length */ + if (ccfg->mask6 == 64) { + ti->data = (32 - ccfg->mask4) << 24 | (128 - ccfg->mask6) << 16 | + v4 << 8 | v6; + ti->lookup = ta_lookup_chash_64; + } else if ((ccfg->mask6 % 8) == 0) { + ti->data = (32 - ccfg->mask4) << 24 | + ccfg->mask6 << 13 | v4 << 8 | v6; + ti->lookup = ta_lookup_chash_aligned; + } else { + /* don't do that! */ + ti->data = (32 - ccfg->mask4) << 24 | + ccfg->mask6 << 16 | v4 << 8 | v6; + ti->lookup = ta_lookup_chash_slow; + } + + return (0); +} + +static void +ta_destroy_chash(void *ta_state, struct table_info *ti) +{ + struct chash_cfg *ccfg; + struct chashentry *ent, *ent_next; + int i; + + ccfg = (struct chash_cfg *)ta_state; + + for (i = 0; i < ccfg->size4; i++) + SLIST_FOREACH_SAFE(ent, &ccfg->head4[i], next, ent_next) + free(ent, M_IPFW_TBL); + + for (i = 0; i < ccfg->size6; i++) + SLIST_FOREACH_SAFE(ent, &ccfg->head6[i], next, ent_next) + free(ent, M_IPFW_TBL); + + free(ccfg->head4, M_IPFW); + free(ccfg->head6, M_IPFW); +} + +static int +ta_dump_chash_tentry(void *ta_state, struct table_info *ti, void *e, + ipfw_obj_tentry *tent) +{ + struct chash_cfg *ccfg; + struct chashentry *ent; + + ccfg = (struct chash_cfg *)ta_state; + ent = (struct chashentry *)e; + + if (ent->type == AF_INET) { + tent->k.addr.s_addr = htonl(ent->a.a4 << (32 - ccfg->mask4)); + tent->masklen = ccfg->mask4; + tent->subtype = AF_INET; + tent->value = ent->value; +#ifdef INET6 + } else { + memcpy(&tent->k, &ent->a.a6, sizeof(struct in6_addr)); + tent->masklen = ccfg->mask6; + tent->subtype = AF_INET6; + tent->value = ent->value; +#endif + } + + return (0); +} + +static int +ta_find_chash_tentry(void *ta_state, struct table_info *ti, void *key, + uint32_t keylen, ipfw_obj_tentry *tent) +{ +#if 0 + struct radix_node_head *rnh; + void *e; + + e = NULL; + if (keylen == sizeof(in_addr_t)) { + struct sockaddr_in sa; + KEY_LEN(sa) = KEY_LEN_INET; + sa.sin_addr.s_addr = *((in_addr_t *)key); + rnh = (struct radix_node_head *)ti->state; + e = rnh->rnh_matchaddr(&sa, rnh); + } else { + struct sa_in6 sa6; + KEY_LEN(sa6) = KEY_LEN_INET6; + memcpy(&sa6.sin6_addr, key, sizeof(struct in6_addr)); + rnh = (struct radix_node_head *)ti->xstate; + e = rnh->rnh_matchaddr(&sa6, rnh); + } + + if (e != NULL) { + ta_dump_radix_tentry(ta_state, ti, e, tent); + return (0); + } +#endif + return (ENOENT); +} + +static void +ta_foreach_chash(void *ta_state, struct table_info *ti, ta_foreach_f *f, + void *arg) +{ + struct chash_cfg *ccfg; + struct chashentry *ent, *ent_next; + int i; + + ccfg = (struct chash_cfg *)ta_state; + + for (i = 0; i < ccfg->size4; i++) + SLIST_FOREACH_SAFE(ent, &ccfg->head4[i], next, ent_next) + f(ent, arg); + + for (i = 0; i < ccfg->size6; i++) + SLIST_FOREACH_SAFE(ent, &ccfg->head6[i], next, ent_next) + f(ent, arg); +} + + +struct ta_buf_chash +{ + void *ent_ptr; + int type; + union { + uint32_t a4; + struct in6_addr a6; + } a; +}; + +static int +ta_prepare_add_chash(struct ip_fw_chain *ch, struct tentry_info *tei, + void *ta_buf) +{ + struct ta_buf_chash *tb; + struct chashentry *ent; + int mlen; + struct in6_addr mask6; + + tb = (struct ta_buf_chash *)ta_buf; + memset(tb, 0, sizeof(struct ta_buf_chash)); + + mlen = tei->masklen; + + if (tei->subtype == AF_INET) { +#ifdef INET + if (mlen > 32) + return (EINVAL); + ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); + ent->value = tei->value; + ent->type = AF_INET; + + /* Calculate mask */ + ent->a.a4 = ntohl(*((in_addr_t *)tei->paddr)) >> (32 - mlen); + tb->ent_ptr = ent; +#endif +#ifdef INET6 + } else if (tei->subtype == AF_INET6) { + /* IPv6 case */ + if (mlen > 128) + return (EINVAL); + ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); + ent->value = tei->value; + ent->type = AF_INET6; + + ipv6_writemask(&mask6, mlen); + memcpy(&ent->a.a6, tei->paddr, sizeof(struct in6_addr)); + APPLY_MASK(&ent->a.a6, &mask6); + tb->ent_ptr = ent; +#endif + } else { + /* Unknown CIDR type */ + return (EINVAL); + } + + return (0); +} + +static int +ta_add_chash(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) +{ + struct chash_cfg *ccfg; + struct chashbhead *head; + struct chashentry *ent, *tmp; + struct ta_buf_chash *tb; + int exists; + uint32_t hash; + + ccfg = (struct chash_cfg *)ta_state; + tb = (struct ta_buf_chash *)ta_buf; + ent = (struct chashentry *)tb->ent_ptr; + hash = 0; + exists = 0; + + if (tei->subtype == AF_INET) { + if (tei->masklen != ccfg->mask4) + return (EINVAL); + head = ccfg->head4; + hash = hash_ip(ent->a.a4, ccfg->size4); + /* Check for existence */ + SLIST_FOREACH(tmp, &head[hash], next) { + if (tmp->a.a4 == ent->a.a4) { + exists = 1; + break; + } + } + } else { + if (tei->masklen != ccfg->mask6) + return (EINVAL); + head = ccfg->head6; + if (tei->masklen == 64) + hash = hash_ip64(&ent->a.a6, ccfg->size6); + else + hash = hash_ip6(&ent->a.a6, ccfg->size6); + /* Check for existence */ + SLIST_FOREACH(tmp, &head[hash], next) { + if (memcmp(&tmp->a.a6, &ent->a.a6, 16)) { + exists = 1; + break; + } + } + } + + if (exists == 1) { + if ((tei->flags & TEI_FLAGS_UPDATE) == 0) + return (EEXIST); + /* Record already exists. Update value if we're asked to */ + tmp->value = tei->value; + /* Indicate that update has happened instead of addition */ + tei->flags |= TEI_FLAGS_UPDATED; + *pnum = 0; + } else { + SLIST_INSERT_HEAD(&head[hash], ent, next); + tb->ent_ptr = NULL; + *pnum = 1; + } + + return (0); +} + +static int +ta_prepare_del_chash(struct ip_fw_chain *ch, struct tentry_info *tei, + void *ta_buf) +{ + struct ta_buf_chash *tb; + int mlen; + struct in6_addr mask6; + + tb = (struct ta_buf_chash *)ta_buf; + memset(tb, 0, sizeof(struct ta_buf_chash)); + + mlen = tei->masklen; + + if (tei->subtype == AF_INET) { +#ifdef INET + if (mlen > 32) + return (EINVAL); + tb->type = AF_INET; + + /* Calculate masked address */ + tb->a.a4 = ntohl(*((in_addr_t *)tei->paddr)) >> (32 - mlen); +#endif +#ifdef INET6 + } else if (tei->subtype == AF_INET6) { + /* IPv6 case */ + if (mlen > 128) + return (EINVAL); + tb->type = AF_INET6; + + ipv6_writemask(&mask6, mlen); + memcpy(&tb->a.a6, tei->paddr, sizeof(struct in6_addr)); + APPLY_MASK(&tb->a.a6, &mask6); +#endif + } else { + /* Unknown CIDR type */ + return (EINVAL); + } + + return (0); +} + +static int +ta_del_chash(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) +{ + struct chash_cfg *ccfg; + struct chashbhead *head; + struct chashentry *ent, *tmp_next; + struct ta_buf_chash *tb; + uint32_t hash; + + ccfg = (struct chash_cfg *)ta_state; + tb = (struct ta_buf_chash *)ta_buf; + + if (tei->subtype == AF_INET) { + if (tei->masklen != ccfg->mask4) + return (EINVAL); + head = ccfg->head4; + hash = hash_ip(tb->a.a4, ccfg->size4); + + SLIST_FOREACH_SAFE(ent, &head[hash], next, tmp_next) { + if (ent->a.a4 == tb->a.a4) { + SLIST_REMOVE(&head[hash], ent, chashentry,next); + *pnum = 1; + return (0); + } + } + } else { + if (tei->masklen != ccfg->mask6) + return (EINVAL); + head = ccfg->head6; + if (tei->masklen == 64) + hash = hash_ip64(&tb->a.a6, ccfg->size6); + else + hash = hash_ip6(&tb->a.a6, ccfg->size6); + + SLIST_FOREACH_SAFE(ent, &head[hash], next, tmp_next) { + if (memcmp(&ent->a.a6, &tb->a.a6, 16)) { + SLIST_REMOVE(&head[hash], ent, chashentry,next); + *pnum = 1; + return (0); + } + } + } + + return (ENOENT); +} + +static void +ta_flush_chash_entry(struct ip_fw_chain *ch, struct tentry_info *tei, + void *ta_buf) +{ + struct ta_buf_chash *tb; + + tb = (struct ta_buf_chash *)ta_buf; + + if (tb->ent_ptr != NULL) + free(tb->ent_ptr, M_IPFW_TBL); +} + +struct table_algo cidr_hash = { + .name = "cidr:hash", + .lookup = ta_lookup_chash_slow, + .init = ta_init_chash, + .destroy = ta_destroy_chash, + .prepare_add = ta_prepare_add_chash, + .prepare_del = ta_prepare_del_chash, + .add = ta_add_chash, + .del = ta_del_chash, + .flush_entry = ta_flush_chash_entry, + .foreach = ta_foreach_chash, + .dump_tentry = ta_dump_chash_tentry, + .find_tentry = ta_find_chash_tentry, + .print_config = ta_print_chash_config, +}; + + +/* * Iface table cmds. * * Implementation: @@ -560,7 +1240,6 @@ struct ifentry { struct named_object no; struct ipfw_ifc ic; struct iftable_cfg *icfg; - TAILQ_ENTRY(ifentry) next; uint32_t value; int linked; }; @@ -788,7 +1467,7 @@ ta_prepare_add_ifidx(struct ip_fw_chain struct ifentry *ife; tb = (struct ta_buf_ifidx *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_cidr)); + memset(tb, 0, sizeof(struct ta_buf_ifidx)); /* Check if string is terminated */ ifname = (char *)tei->paddr; @@ -877,11 +1556,11 @@ static int ta_prepare_del_ifidx(struct ip_fw_chain *ch, struct tentry_info *tei, void *ta_buf) { - struct ta_buf_iface *tb; + struct ta_buf_ifidx *tb; char *ifname; - tb = (struct ta_buf_iface *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_cidr)); + tb = (struct ta_buf_ifidx *)ta_buf; + memset(tb, 0, sizeof(struct ta_buf_ifidx)); /* Check if string is terminated */ ifname = (char *)tei->paddr; @@ -1167,7 +1846,7 @@ ta_foreach_ifidx(void *ta_state, struct ipfw_objhash_foreach(icfg->ii, foreach_ifidx, &wa); } -struct table_algo idx_iface = { +struct table_algo iface_idx = { .name = "iface:array", .lookup = ta_lookup_ifidx, .init = ta_init_ifidx, @@ -1193,8 +1872,9 @@ ipfw_table_algo_init(struct ip_fw_chain /* * Register all algorithms presented here. */ - ipfw_add_table_algo(chain, &radix_cidr); - ipfw_add_table_algo(chain, &idx_iface); + ipfw_add_table_algo(chain, &cidr_radix); + ipfw_add_table_algo(chain, &cidr_hash); + ipfw_add_table_algo(chain, &iface_idx); } void From owner-svn-src-projects@FreeBSD.ORG Tue Jul 29 21:38:07 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8A945D0D; Tue, 29 Jul 2014 21:38:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 77E1628A2; Tue, 29 Jul 2014 21:38:07 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6TLc7kq074232; Tue, 29 Jul 2014 21:38:07 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6TLc6FO074228; Tue, 29 Jul 2014 21:38:06 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407292138.s6TLc6FO074228@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 29 Jul 2014 21:38:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269265 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 21:38:07 -0000 Author: melifaro Date: Tue Jul 29 21:38:06 2014 New Revision: 269265 URL: http://svnweb.freebsd.org/changeset/base/269265 Log: * Copy ta structures to stable storage to ease future extension. * Remove algo .lookup field since table lookup function is set by algo code. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 21:22:33 2014 (r269264) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 21:38:06 2014 (r269265) @@ -1600,17 +1600,45 @@ find_table_algo(struct tables_config *tc return (NULL); } -void -ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta) +int +ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta, size_t size, + int *idx) { struct tables_config *tcfg; + struct table_algo *ta_new; + + if (size > sizeof(struct table_algo)) + return (EINVAL); + + ta_new = malloc(sizeof(struct table_algo), M_IPFW, M_WAITOK | M_ZERO); + memcpy(ta_new, ta, size); tcfg = CHAIN_TO_TCFG(ch); KASSERT(tcfg->algo_count < 255, ("Increase algo array size")); - tcfg->algo[++tcfg->algo_count] = ta; - ta->idx = tcfg->algo_count; + tcfg->algo[++tcfg->algo_count] = ta_new; + ta_new->idx = tcfg->algo_count; + + *idx = ta_new->idx; + + return (0); +} + +void +ipfw_del_table_algo(struct ip_fw_chain *ch, int idx) +{ + struct tables_config *tcfg; + struct table_algo *ta; + + tcfg = CHAIN_TO_TCFG(ch); + + KASSERT(idx <= tcfg->algo_count, ("algo idx %d out of rage 1..%d", idx, + tcfg->algo_count)); + + ta = tcfg->algo[idx]; + KASSERT(ta != NULL, ("algo idx %d is NULL", idx)); + free(ta, M_IPFW); } Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 21:22:33 2014 (r269264) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 21:38:06 2014 (r269265) @@ -100,7 +100,6 @@ struct table_algo { int idx; ta_init *init; ta_destroy *destroy; - table_lookup_t *lookup; ta_prepare_add *prepare_add; ta_prepare_del *prepare_del; ta_add *add; @@ -117,7 +116,9 @@ struct table_algo { ta_change_ti *change_ti; }; -void ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta); +int ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta, + size_t size, int *idx); +void ipfw_del_table_algo(struct ip_fw_chain *ch, int idx); extern struct table_algo cidr_radix, iface_idx; void ipfw_table_algo_init(struct ip_fw_chain *chain); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 21:22:33 2014 (r269264) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 21:38:06 2014 (r269265) @@ -516,7 +516,6 @@ ta_flush_cidr_entry(struct ip_fw_chain * struct table_algo cidr_radix = { .name = "cidr:radix", - .lookup = ta_lookup_radix, .init = ta_init_radix, .destroy = ta_destroy_radix, .prepare_add = ta_prepare_add_cidr, @@ -1195,7 +1194,6 @@ ta_flush_chash_entry(struct ip_fw_chain struct table_algo cidr_hash = { .name = "cidr:hash", - .lookup = ta_lookup_chash_slow, .init = ta_init_chash, .destroy = ta_destroy_chash, .prepare_add = ta_prepare_add_chash, @@ -1848,7 +1846,6 @@ ta_foreach_ifidx(void *ta_state, struct struct table_algo iface_idx = { .name = "iface:array", - .lookup = ta_lookup_ifidx, .init = ta_init_ifidx, .destroy = ta_destroy_ifidx, .prepare_add = ta_prepare_add_ifidx, @@ -1867,20 +1864,26 @@ struct table_algo iface_idx = { }; void -ipfw_table_algo_init(struct ip_fw_chain *chain) +ipfw_table_algo_init(struct ip_fw_chain *ch) { + size_t sz; + /* * Register all algorithms presented here. */ - ipfw_add_table_algo(chain, &cidr_radix); - ipfw_add_table_algo(chain, &cidr_hash); - ipfw_add_table_algo(chain, &iface_idx); + sz = sizeof(struct table_algo); + ipfw_add_table_algo(ch, &cidr_radix, sz, &cidr_radix.idx); + ipfw_add_table_algo(ch, &cidr_hash, sz, &cidr_hash.idx); + ipfw_add_table_algo(ch, &iface_idx, sz, &iface_idx.idx); } void -ipfw_table_algo_destroy(struct ip_fw_chain *chain) +ipfw_table_algo_destroy(struct ip_fw_chain *ch) { - /* Do nothing */ + + ipfw_del_table_algo(ch, cidr_radix.idx); + ipfw_del_table_algo(ch, cidr_hash.idx); + ipfw_del_table_algo(ch, iface_idx.idx); } From owner-svn-src-projects@FreeBSD.ORG Tue Jul 29 22:44:28 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B4DE6FE5; Tue, 29 Jul 2014 22:44:28 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A12FA20EC; Tue, 29 Jul 2014 22:44:28 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6TMiSPp010821; Tue, 29 Jul 2014 22:44:28 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6TMiR8l010807; Tue, 29 Jul 2014 22:44:27 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407292244.s6TMiR8l010807@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 29 Jul 2014 22:44:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269276 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 22:44:28 -0000 Author: melifaro Date: Tue Jul 29 22:44:26 2014 New Revision: 269276 URL: http://svnweb.freebsd.org/changeset/base/269276 Log: * Dump available table algorithms via "ipfw talist" cmd. Kernel changes: * Add type/refcount fields to table algo instances. * Add IP_FW_TABLES_ALIST opcode to export available algorihms to userland. Userland changes: * Fix cores on empty input inside "ipfw table" handler. * Add "ipfw talist" cmd to print availabled kernel algorithms. * Change "table info" output to reflect long algorithm config lines. Modified: projects/ipfw/sbin/ipfw/ipfw2.h projects/ipfw/sbin/ipfw/main.c projects/ipfw/sbin/ipfw/tables.c projects/ipfw/sys/netinet/ip_fw.h projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sbin/ipfw/ipfw2.h ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.h Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sbin/ipfw/ipfw2.h Tue Jul 29 22:44:26 2014 (r269276) @@ -297,6 +297,7 @@ void ipfw_flush(int force); void ipfw_zero(int ac, char *av[], int optname); void ipfw_list(int ac, char *av[], int show_counters); void ipfw_list_tifaces(void); +void ipfw_list_ta(int ac, char *av[]); #ifdef PF /* altq.c */ Modified: projects/ipfw/sbin/ipfw/main.c ============================================================================== --- projects/ipfw/sbin/ipfw/main.c Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sbin/ipfw/main.c Tue Jul 29 22:44:26 2014 (r269276) @@ -440,6 +440,8 @@ ipfw_main(int oldac, char **oldav) ipfw_table_handler(ac, av); else if (_substrcmp(*av, "iflist") == 0) ipfw_list_tifaces(); + else if (_substrcmp(*av, "talist") == 0) + ipfw_list_ta(ac, av); else errx(EX_USAGE, "bad command `%s'", *av); } Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sbin/ipfw/tables.c Tue Jul 29 22:44:26 2014 (r269276) @@ -146,6 +146,7 @@ ipfw_table_handler(int ac, char *av[]) set = 0; ac--; av++; + NEED1("table needs name"); tablename = *av; if (table_check_name(tablename) == 0) { @@ -158,11 +159,11 @@ ipfw_table_handler(int ac, char *av[]) errx(EX_USAGE, "table name %s is invalid", tablename); } ac--; av++; + NEED1("table needs command"); if ((tcmd = match_token(tablecmds, *av)) == -1) errx(EX_USAGE, "invalid table command %s", *av); - NEED1("table needs command"); switch (tcmd) { case TOK_LIST: case TOK_INFO: @@ -416,8 +417,8 @@ table_show_info(ipfw_xtable_info *i, voi vtype = "unknown"; printf(" type: %s, kindex: %d\n", ttype, i->kidx); - printf(" valtype: %s, algorithm: %s\n", vtype, i->algoname); - printf(" references: %u\n", i->refcnt); + printf(" valtype: %s, references: %u\n", vtype, i->refcnt); + printf(" algorithm: %s\n", i->algoname); printf(" items: %u, size: %u\n", i->count, i->size); return (0); @@ -901,6 +902,59 @@ table_show_entry(ipfw_xtable_info *i, ip } } +static int +table_do_get_algolist(ipfw_obj_lheader **polh) +{ + ipfw_obj_lheader req, *olh; + size_t sz; + int error; + + memset(&req, 0, sizeof(req)); + sz = sizeof(req); + + error = do_get3(IP_FW_TABLES_ALIST, &req.opheader, &sz); + if (error != 0 && error != ENOMEM) + return (error); + + sz = req.size; + if ((olh = calloc(1, sz)) == NULL) + return (ENOMEM); + + olh->size = sz; + if ((error = do_get3(IP_FW_TABLES_ALIST, &olh->opheader, &sz)) != 0) { + free(olh); + return (error); + } + + *polh = olh; + return (0); +} + +void +ipfw_list_ta(int ac, char *av[]) +{ + ipfw_obj_lheader *olh; + ipfw_ta_info *info; + int error, i; + const char *atype; + + error = table_do_get_algolist(&olh); + if (error != 0) + err(EX_OSERR, "Unable to request algorithm list"); + + info = (ipfw_ta_info *)(olh + 1); + for (i = 0; i < olh->count; i++) { + if ((atype = match_value(tabletypes, info->type)) == NULL) + atype = "unknown"; + + printf("%s type: %s references: %u\n", info->algoname, + atype, info->refcnt); + info = (ipfw_ta_info *)((caddr_t)info + olh->objsize); + } + + free(olh); +} + int compare_ntlv(const void *_a, const void *_b) { Modified: projects/ipfw/sys/netinet/ip_fw.h ============================================================================== --- projects/ipfw/sys/netinet/ip_fw.h Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sys/netinet/ip_fw.h Tue Jul 29 22:44:26 2014 (r269276) @@ -89,6 +89,7 @@ typedef struct _ip_fw3_opheader { #define IP_FW_XADD 98 /* add entry */ #define IP_FW_TABLE_XFIND 99 /* finds an entry */ #define IP_FW_XIFLIST 100 /* list tracked interfaces */ +#define IP_FW_TABLES_ALIST 101 /* list table algorithms */ /* * Usage guidelines: @@ -799,6 +800,15 @@ typedef struct _ipfw_iface_info { } ipfw_iface_info; #define IPFW_IFFLAG_RESOLVED 0x01 /* Interface exists */ +typedef struct _ipfw_ta_info { + char algoname[32]; /* algorithm name */ + uint32_t type; /* lookup type */ + uint32_t flags; + uint32_t refcnt; + uint32_t spare0; + uint64_t spare1; +} ipfw_ta_info; + #define IPFW_OBJTYPE_TABLE 1 typedef struct _ipfw_obj_header { ip_fw3_opheader opheader; /* IP_FW3 opcode */ Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Tue Jul 29 22:44:26 2014 (r269276) @@ -2001,6 +2001,9 @@ ipfw_ctl(struct sockopt *sopt) case IP_FW_TABLE_XFIND: /* IP_FW3 */ error = ipfw_find_table_entry(chain, op3, &sdata); break; + case IP_FW_TABLES_ALIST: /* IP_FW3 */ + error = ipfw_list_table_algo(chain, &sdata); + break; /*--- LEGACY API ---*/ case IP_FW_TABLE_ADD: Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Tue Jul 29 22:44:26 2014 (r269276) @@ -1641,6 +1641,59 @@ ipfw_del_table_algo(struct ip_fw_chain * free(ta, M_IPFW); } +/* + * Lists all table algorithms currently available. + * Data layout (v0)(current): + * Request: [ ipfw_obj_lheader ], size = ipfw_obj_lheader.size + * Reply: [ ipfw_obj_lheader ipfw_ta_info x N ] + * + * Returns 0 on success + */ +int +ipfw_list_table_algo(struct ip_fw_chain *ch, struct sockopt_data *sd) +{ + struct _ipfw_obj_lheader *olh; + struct tables_config *tcfg; + ipfw_ta_info *i; + struct table_algo *ta; + uint32_t count, n, size; + + olh = (struct _ipfw_obj_lheader *)ipfw_get_sopt_header(sd,sizeof(*olh)); + if (olh == NULL) + return (EINVAL); + if (sd->valsize < olh->size) + return (EINVAL); + + IPFW_UH_RLOCK(ch); + tcfg = CHAIN_TO_TCFG(ch); + count = tcfg->algo_count; + size = count * sizeof(ipfw_ta_info) + sizeof(ipfw_obj_lheader); + + /* Fill in header regadless of buffer size */ + olh->count = count; + olh->objsize = sizeof(ipfw_ta_info); + + if (size > olh->size) { + olh->size = size; + IPFW_UH_RUNLOCK(ch); + return (ENOMEM); + } + olh->size = size; + + for (n = 1; n <= count; n++) { + i = (ipfw_ta_info *)ipfw_get_sopt_space(sd, sizeof(*i)); + KASSERT(i != 0, ("previously checked buffer is not enough")); + ta = tcfg->algo[n]; + strlcpy(i->algoname, ta->name, sizeof(i->algoname)); + i->type = ta->type; + i->refcnt = ta->refcnt; + } + + IPFW_UH_RUNLOCK(ch); + + return (0); +} + /* * Tables rewriting code @@ -1925,6 +1978,7 @@ link_table(struct ip_fw_chain *ch, struc tc->ta->change_ti(tc->astate, ti); tc->linked = 1; + tc->ta->refcnt++; } /* @@ -1949,6 +2003,7 @@ unlink_table(struct ip_fw_chain *ch, str ti = KIDX_TO_TI(ch, kidx); memset(ti, 0, sizeof(struct table_info)); tc->linked = 0; + tc->ta->refcnt--; /* Notify algo on real @ti address */ if (tc->ta->change_ti != NULL) Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Tue Jul 29 22:44:26 2014 (r269276) @@ -98,6 +98,9 @@ typedef int ta_find_tentry(void *ta_stat struct table_algo { char name[16]; int idx; + int type; + int refcnt; + int spare; ta_init *init; ta_destroy *destroy; ta_prepare_add *prepare_add; @@ -140,6 +143,7 @@ int ipfw_manage_table_ent(struct ip_fw_c struct sockopt_data *sd); int ipfw_flush_table(struct ip_fw_chain *ch, ip_fw3_opheader *op3, struct sockopt_data *sd); +int ipfw_list_table_algo(struct ip_fw_chain *ch, struct sockopt_data *sd); /* Exported to support legacy opcodes */ int add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, struct tentry_info *tei); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 22:29:32 2014 (r269275) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Tue Jul 29 22:44:26 2014 (r269276) @@ -516,6 +516,7 @@ ta_flush_cidr_entry(struct ip_fw_chain * struct table_algo cidr_radix = { .name = "cidr:radix", + .type = IPFW_TABLE_CIDR, .init = ta_init_radix, .destroy = ta_destroy_radix, .prepare_add = ta_prepare_add_cidr, @@ -1194,6 +1195,7 @@ ta_flush_chash_entry(struct ip_fw_chain struct table_algo cidr_hash = { .name = "cidr:hash", + .type = IPFW_TABLE_CIDR, .init = ta_init_chash, .destroy = ta_destroy_chash, .prepare_add = ta_prepare_add_chash, @@ -1846,6 +1848,7 @@ ta_foreach_ifidx(void *ta_state, struct struct table_algo iface_idx = { .name = "iface:array", + .type = IPFW_TABLE_INTERFACE, .init = ta_init_ifidx, .destroy = ta_destroy_ifidx, .prepare_add = ta_prepare_add_ifidx, From owner-svn-src-projects@FreeBSD.ORG Tue Jul 29 23:06:07 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 066D06ED; Tue, 29 Jul 2014 23:06:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id DCFB222B4; Tue, 29 Jul 2014 23:06:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6TN66fw020758; Tue, 29 Jul 2014 23:06:06 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6TN660F020755; Tue, 29 Jul 2014 23:06:06 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407292306.s6TN660F020755@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Tue, 29 Jul 2014 23:06:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269277 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 29 Jul 2014 23:06:07 -0000 Author: melifaro Date: Tue Jul 29 23:06:06 2014 New Revision: 269277 URL: http://svnweb.freebsd.org/changeset/base/269277 Log: * Introduce ipfw_ctl3() handler and move all IP_FW3 opcodes there. The long-term goal is to switch remaining opcodes to IP_FW3 versions and use ipfw_ctl3() as default handler simplifying ipfw(4) interaction with external world. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Tue Jul 29 22:44:26 2014 (r269276) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Tue Jul 29 23:06:06 2014 (r269277) @@ -496,6 +496,7 @@ int ipfw_list_ifaces(struct ip_fw_chain /* In ip_fw_sockopt.c */ int ipfw_find_rule(struct ip_fw_chain *chain, uint32_t key, uint32_t id); int ipfw_ctl(struct sockopt *sopt); +int ipfw_ctl3(struct sockopt *sopt); int ipfw_chk(struct ip_fw_args *args); void ipfw_reap_rules(struct ip_fw *head); void ipfw_init_counters(void); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Tue Jul 29 22:44:26 2014 (r269276) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Tue Jul 29 23:06:06 2014 (r269277) @@ -1719,28 +1719,26 @@ add_entry(struct ip_fw_chain *chain, str return (error); } -/** - * {set|get}sockopt parser. - */ int -ipfw_ctl(struct sockopt *sopt) +ipfw_ctl3(struct sockopt *sopt) { -#define RULE_MAXSIZE (256*sizeof(u_int32_t)) int error; size_t bsize_max, size, valsize; - struct ip_fw *buf; - struct ip_fw_rule0 *rule; struct ip_fw_chain *chain; - u_int32_t rulenum[2]; uint32_t opt; char xbuf[128]; struct sockopt_data sdata; ip_fw3_opheader *op3 = NULL; - struct rule_check_info ci; + /* Do not check privs twice untile we're called from ipfw_ctl() */ +#if 0 error = priv_check(sopt->sopt_td, PRIV_NETINET_IPFW); - if (error) + if (error != 0) return (error); +#endif + + if (sopt->sopt_name != IP_FW3) + return (ENOTSUP); chain = &V_layer3_chain; error = 0; @@ -1749,14 +1747,12 @@ ipfw_ctl(struct sockopt *sopt) valsize = sopt->sopt_valsize; memset(&sdata, 0, sizeof(sdata)); /* Read op3 header first to determine actual operation */ - if ((opt = sopt->sopt_name) == IP_FW3) { - op3 = (ip_fw3_opheader *)xbuf; - error = sooptcopyin(sopt, op3, sizeof(*op3), sizeof(*op3)); - if (error != 0) - return (error); - opt = op3->opcode; - sopt->sopt_valsize = valsize; - } + op3 = (ip_fw3_opheader *)xbuf; + error = sooptcopyin(sopt, op3, sizeof(*op3), sizeof(*op3)); + if (error != 0) + return (error); + opt = op3->opcode; + sopt->sopt_valsize = valsize; /* * Disallow modifications in really-really secure mode, but still allow @@ -1765,59 +1761,186 @@ ipfw_ctl(struct sockopt *sopt) if (opt == IP_FW_ADD || (sopt->sopt_dir == SOPT_SET && opt != IP_FW_RESETLOG)) { error = securelevel_ge(sopt->sopt_td->td_ucred, 3); - if (error != 0) { - if (sdata.kbuf != xbuf) - free(sdata.kbuf, M_TEMP); + if (error != 0) return (error); - } } - if (op3 != NULL) { + /* + * Determine buffer size: + * use on-stack xbuf for short request, + * allocate sliding-window buf for data export or + * contigious buffer for special ops. + */ + bsize_max = IP_FW3_WRITEBUF; + if (opt == IP_FW_ADD) + bsize_max = IP_FW3_READBUF; - /* - * Determine buffer size: - * use on-stack xbuf for short request, - * allocate sliding-window buf for data export or - * contigious buffer for special ops. - */ - bsize_max = IP_FW3_WRITEBUF; - if (opt == IP_FW_ADD) - bsize_max = IP_FW3_READBUF; + /* + * Fill in sockopt_data structure that may be useful for + * IP_FW3 get requests. + */ - /* - * Fill in sockopt_data structure that may be useful for - * IP_FW3 get requests. - */ + if (valsize <= sizeof(xbuf)) { + sdata.kbuf = xbuf; + sdata.ksize = sizeof(xbuf); + sdata.kavail = valsize; + } else { + if (valsize < bsize_max) + size = valsize; + else + size = bsize_max; + + sdata.kbuf = malloc(size, M_TEMP, M_WAITOK | M_ZERO); + sdata.ksize = size; + sdata.kavail = size; + } + + sdata.sopt = sopt; + sdata.valsize = valsize; + + /* + * Copy either all request (if valsize < bsize_max) + * or first bsize_max bytes to guarantee most consumers + * that all necessary data has been copied). + * Anyway, copy not less than sizeof(ip_fw3_opheader). + */ + if ((error = sooptcopyin(sopt, sdata.kbuf, sdata.ksize, + sizeof(ip_fw3_opheader))) != 0) + return (error); + op3 = (ip_fw3_opheader *)sdata.kbuf; + opt = op3->opcode; + + switch (opt) { + case IP_FW_XGET: + error = dump_config(chain, &sdata); + break; + + case IP_FW_XIFLIST: + error = ipfw_list_ifaces(chain, &sdata); + break; + + case IP_FW_XADD: + error = add_entry(chain, &sdata); + break; + /*--- TABLE opcodes ---*/ + case IP_FW_TABLE_XCREATE: + error = ipfw_create_table(chain, op3, &sdata); + break; + + case IP_FW_TABLE_XDESTROY: + case IP_FW_TABLE_XFLUSH: + error = ipfw_flush_table(chain, op3, &sdata); + break; - if (valsize <= sizeof(xbuf)) { - sdata.kbuf = xbuf; - sdata.ksize = sizeof(xbuf); - sdata.kavail = valsize; - } else { - if (valsize < bsize_max) - size = valsize; - else - size = bsize_max; - - sdata.kbuf = malloc(size, M_TEMP, M_WAITOK | M_ZERO); - sdata.ksize = size; - sdata.kavail = size; + case IP_FW_TABLE_XINFO: + error = ipfw_describe_table(chain, &sdata); + break; + + case IP_FW_TABLES_XGETSIZE: + error = ipfw_listsize_tables(chain, &sdata); + break; + + case IP_FW_TABLES_XLIST: + error = ipfw_list_tables(chain, &sdata); + break; + + case IP_FW_TABLE_XLIST: + error = ipfw_dump_table(chain, op3, &sdata); + break; + + case IP_FW_TABLE_XADD: + case IP_FW_TABLE_XDEL: + error = ipfw_manage_table_ent(chain, op3, &sdata); + break; + + case IP_FW_TABLE_XFIND: + error = ipfw_find_table_entry(chain, op3, &sdata); + break; + + case IP_FW_TABLES_ALIST: + error = ipfw_list_table_algo(chain, &sdata); + break; + + case IP_FW_TABLE_XGETSIZE: + { + uint32_t *tbl; + struct tid_info ti; + + if (IP_FW3_OPLENGTH(sopt) < sizeof(uint32_t)) { + error = EINVAL; + break; + } + + tbl = (uint32_t *)(op3 + 1); + + memset(&ti, 0, sizeof(ti)); + ti.uidx = *tbl; + IPFW_UH_RLOCK(chain); + error = ipfw_count_xtable(chain, &ti, tbl); + IPFW_UH_RUNLOCK(chain); + if (error) + break; + error = sooptcopyout(sopt, op3, sopt->sopt_valsize); } + break; + + default: + printf("ipfw: ipfw_ctl3 invalid option %d\n", opt); + error = EINVAL; + } + + /* Flush state and free buffers */ + if (error == 0) + error = ipfw_flush_sopt_data(&sdata); + else + ipfw_flush_sopt_data(&sdata); - sdata.sopt = sopt; - sdata.valsize = valsize; + if (sdata.kbuf != xbuf) + free(sdata.kbuf, M_TEMP); - /* - * Copy either all request (if valsize < bsize_max) - * or first bsize_max bytes to guarantee most consumers - * that all necessary data has been copied). - * Anyway, copy not less than sizeof(ip_fw3_opheader). - */ - if ((error = sooptcopyin(sopt, sdata.kbuf, sdata.ksize, - sizeof(ip_fw3_opheader))) != 0) + return (error); +} + +/** + * {set|get}sockopt parser. + */ +int +ipfw_ctl(struct sockopt *sopt) +{ +#define RULE_MAXSIZE (256*sizeof(u_int32_t)) + int error; + size_t size, valsize; + struct ip_fw *buf; + struct ip_fw_rule0 *rule; + struct ip_fw_chain *chain; + u_int32_t rulenum[2]; + uint32_t opt; + struct rule_check_info ci; + + error = priv_check(sopt->sopt_td, PRIV_NETINET_IPFW); + if (error) + return (error); + + chain = &V_layer3_chain; + error = 0; + + /* Save original valsize before it is altered via sooptcopyin() */ + valsize = sopt->sopt_valsize; + opt = sopt->sopt_name; + + /* Pass IP_FW3 to a new handler */ + if (opt == IP_FW3) + return (ipfw_ctl3(sopt)); + + /* + * Disallow modifications in really-really secure mode, but still allow + * the logging counters to be reset. + */ + if (opt == IP_FW_ADD || + (sopt->sopt_dir == SOPT_SET && opt != IP_FW_RESETLOG)) { + error = securelevel_ge(sopt->sopt_td->td_ucred, 3); + if (error != 0) return (error); - op3 = (ip_fw3_opheader *)sdata.kbuf; - opt = op3->opcode; } switch (opt) { @@ -1855,18 +1978,6 @@ ipfw_ctl(struct sockopt *sopt) } break; - case IP_FW_XGET: /* IP_FW3 */ - error = dump_config(chain, &sdata); - break; - - case IP_FW_XIFLIST: /* IP_FW3 */ - error = ipfw_list_ifaces(chain, &sdata); - break; - - case IP_FW_XADD: /* IP_FW3 */ - error = add_entry(chain, &sdata); - break; - case IP_FW_FLUSH: /* locking is done within del_entry() */ error = del_entry(chain, 0); /* special case, rule=0, cmd=0 means all */ @@ -1969,43 +2080,6 @@ ipfw_ctl(struct sockopt *sopt) break; /*--- TABLE opcodes ---*/ - case IP_FW_TABLE_XCREATE: /* IP_FW3 */ - error = ipfw_create_table(chain, op3, &sdata); - break; - - case IP_FW_TABLE_XDESTROY: /* IP_FW3 */ - case IP_FW_TABLE_XFLUSH: /* IP_FW3 */ - error = ipfw_flush_table(chain, op3, &sdata); - break; - - case IP_FW_TABLE_XINFO: /* IP_FW3 */ - error = ipfw_describe_table(chain, &sdata); - break; - - case IP_FW_TABLES_XGETSIZE: /* IP_FW3 */ - error = ipfw_listsize_tables(chain, &sdata); - break; - - case IP_FW_TABLES_XLIST: /* IP_FW3 */ - error = ipfw_list_tables(chain, &sdata); - break; - - case IP_FW_TABLE_XLIST: /* IP_FW3 */ - error = ipfw_dump_table(chain, op3, &sdata); - break; - - case IP_FW_TABLE_XADD: /* IP_FW3 */ - case IP_FW_TABLE_XDEL: /* IP_FW3 */ - error = ipfw_manage_table_ent(chain, op3, &sdata); - break; - case IP_FW_TABLE_XFIND: /* IP_FW3 */ - error = ipfw_find_table_entry(chain, op3, &sdata); - break; - case IP_FW_TABLES_ALIST: /* IP_FW3 */ - error = ipfw_list_table_algo(chain, &sdata); - break; - - /*--- LEGACY API ---*/ case IP_FW_TABLE_ADD: case IP_FW_TABLE_DEL: { @@ -2100,28 +2174,6 @@ ipfw_ctl(struct sockopt *sopt) } break; - case IP_FW_TABLE_XGETSIZE: /* IP_FW3 */ - { - uint32_t *tbl; - struct tid_info ti; - - if (IP_FW3_OPLENGTH(sopt) < sizeof(uint32_t)) { - error = EINVAL; - break; - } - - tbl = (uint32_t *)(op3 + 1); - - memset(&ti, 0, sizeof(ti)); - ti.uidx = *tbl; - IPFW_UH_RLOCK(chain); - error = ipfw_count_xtable(chain, &ti, tbl); - IPFW_UH_RUNLOCK(chain); - if (error) - break; - error = sooptcopyout(sopt, op3, sopt->sopt_valsize); - } - break; /*--- NAT operations are protected by the IPFW_LOCK ---*/ case IP_FW_NAT_CFG: if (IPFW_NAT_LOADED) @@ -2168,17 +2220,6 @@ ipfw_ctl(struct sockopt *sopt) error = EINVAL; } - if (op3 != NULL) { - /* Flush state and free buffers */ - if (error == 0) - error = ipfw_flush_sopt_data(&sdata); - else - ipfw_flush_sopt_data(&sdata); - - if (sdata.kbuf != xbuf) - free(sdata.kbuf, M_TEMP); - } - return (error); #undef RULE_MAXSIZE } From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 09:17:41 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 49302748; Wed, 30 Jul 2014 09:17:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 36B2E215F; Wed, 30 Jul 2014 09:17:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6U9HfwS009738; Wed, 30 Jul 2014 09:17:41 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6U9Hf7D009737; Wed, 30 Jul 2014 09:17:41 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407300917.s6U9Hf7D009737@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 30 Jul 2014 09:17:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269300 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 09:17:41 -0000 Author: melifaro Date: Wed Jul 30 09:17:40 2014 New Revision: 269300 URL: http://svnweb.freebsd.org/changeset/base/269300 Log: Fix "flush" cmd for algorithms wih non-default parameters. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Wed Jul 30 08:36:48 2014 (r269299) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Wed Jul 30 09:17:40 2014 (r269300) @@ -648,6 +648,7 @@ flush_table(struct ip_fw_chain *ch, stru struct table_algo *ta; struct table_info ti_old, ti_new, *tablestate; void *astate_old, *astate_new; + char algostate[32], *pstate; int error; uint16_t kidx; @@ -663,14 +664,20 @@ flush_table(struct ip_fw_chain *ch, stru } ta = tc->ta; tc->no.refcnt++; + /* Save statup algo parameters */ + if (ta->print_config != NULL) { + ta->print_config(tc->astate, KIDX_TO_TI(ch, tc->no.kidx), + algostate, sizeof(algostate)); + pstate = algostate; + } else + pstate = NULL; IPFW_UH_WUNLOCK(ch); /* * Stage 2: allocate new table instance using same algo. - * TODO: pass startup parametes somehow. */ memset(&ti_new, 0, sizeof(struct table_info)); - if ((error = ta->init(ch, &astate_new, &ti_new, NULL)) != 0) { + if ((error = ta->init(ch, &astate_new, &ti_new, pstate)) != 0) { IPFW_UH_WLOCK(ch); tc->no.refcnt--; IPFW_UH_WUNLOCK(ch); From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 12:39:50 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E00A181B; Wed, 30 Jul 2014 12:39:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 42C982783; Wed, 30 Jul 2014 12:39:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UCdonx001096; Wed, 30 Jul 2014 12:39:50 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UCdoaR001095; Wed, 30 Jul 2014 12:39:50 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407301239.s6UCdoaR001095@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 30 Jul 2014 12:39:50 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269301 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 12:39:51 -0000 Author: melifaro Date: Wed Jul 30 12:39:49 2014 New Revision: 269301 URL: http://svnweb.freebsd.org/changeset/base/269301 Log: * Add "lookup" method for cidr:hash algorithm type. * Add auoto-grow ability to cidr:hash type. * Fix some bugs / simplify implementation for cidr:hash. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Wed Jul 30 09:17:40 2014 (r269300) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Wed Jul 30 12:39:49 2014 (r269301) @@ -543,6 +543,11 @@ struct table_algo cidr_radix = { * 1) _slow lookup: mask * 2) _aligned: (128 - mask) / 8 * 3) _64: 8 + * + * + * pflags: + * [v4=1/v6=0][hsize] + * [ 32][ 32] */ struct chashentry; @@ -554,7 +559,8 @@ struct chash_cfg { struct chashbhead *head6; size_t size4; size_t size6; - size_t items; + size_t items4; + size_t items6; uint8_t mask4; uint8_t mask6; }; @@ -835,8 +841,8 @@ ta_init_chash(struct ip_fw_chain *ch, vo return (error); } - v4 = 7; - v6 = 7; + v4 = 6; + v6 = 6; ccfg->size4 = 1 << v4; ccfg->size6 = 1 << v6; @@ -892,6 +898,8 @@ ta_destroy_chash(void *ta_state, struct free(ccfg->head4, M_IPFW); free(ccfg->head6, M_IPFW); + + free(ccfg, M_IPFW); } static int @@ -921,34 +929,115 @@ ta_dump_chash_tentry(void *ta_state, str return (0); } +static uint32_t +hash_ent(struct chashentry *ent, int af, int mlen, uint32_t size) +{ + uint32_t hash; + + if (af == AF_INET) { + hash = hash_ip(ent->a.a4, size); + } else { + if (mlen == 64) + hash = hash_ip64(&ent->a.a6, size); + else + hash = hash_ip6(&ent->a.a6, size); + } + + return (hash); +} + +static int +tei_to_chash_ent(struct tentry_info *tei, struct chashentry *ent) +{ + struct in6_addr mask6; + int mlen; + + + mlen = tei->masklen; + + if (tei->subtype == AF_INET) { +#ifdef INET + if (mlen > 32) + return (EINVAL); + ent->type = AF_INET; + + /* Calculate masked address */ + ent->a.a4 = ntohl(*((in_addr_t *)tei->paddr)) >> (32 - mlen); +#endif +#ifdef INET6 + } else if (tei->subtype == AF_INET6) { + /* IPv6 case */ + if (mlen > 128) + return (EINVAL); + ent->type = AF_INET6; + + ipv6_writemask(&mask6, mlen); + memcpy(&ent->a.a6, tei->paddr, sizeof(struct in6_addr)); + APPLY_MASK(&ent->a.a6, &mask6); +#endif + } else { + /* Unknown CIDR type */ + return (EINVAL); + } + ent->value = tei->value; + + return (0); +} + + static int ta_find_chash_tentry(void *ta_state, struct table_info *ti, void *key, uint32_t keylen, ipfw_obj_tentry *tent) { -#if 0 - struct radix_node_head *rnh; - void *e; + struct chash_cfg *ccfg; + struct chashbhead *head; + struct chashentry ent, *tmp; + struct tentry_info tei; + int error; + uint32_t hash; - e = NULL; - if (keylen == sizeof(in_addr_t)) { - struct sockaddr_in sa; - KEY_LEN(sa) = KEY_LEN_INET; - sa.sin_addr.s_addr = *((in_addr_t *)key); - rnh = (struct radix_node_head *)ti->state; - e = rnh->rnh_matchaddr(&sa, rnh); + ccfg = (struct chash_cfg *)ta_state; + + memset(&ent, 0, sizeof(ent)); + memset(&tei, 0, sizeof(tei)); + + if (keylen == sizeof(in_addr_t)) { + tei.paddr = key; + tei.masklen = ccfg->mask4; + tei.subtype = AF_INET; + + if ((error = tei_to_chash_ent(&tei, &ent)) != 0) + return (error); + + head = ccfg->head4; + hash = hash_ent(&ent, AF_INET, ccfg->mask4, ccfg->size4); + /* Check for existence */ + SLIST_FOREACH(tmp, &head[hash], next) { + if (tmp->a.a4 != ent.a.a4) + continue; + + ta_dump_chash_tentry(ta_state, ti, tmp, tent); + return (0); + } } else { - struct sa_in6 sa6; - KEY_LEN(sa6) = KEY_LEN_INET6; - memcpy(&sa6.sin6_addr, key, sizeof(struct in6_addr)); - rnh = (struct radix_node_head *)ti->xstate; - e = rnh->rnh_matchaddr(&sa6, rnh); - } + tei.paddr = key; + tei.masklen = ccfg->mask6; + tei.subtype = AF_INET6; - if (e != NULL) { - ta_dump_radix_tentry(ta_state, ti, e, tent); - return (0); + if ((error = tei_to_chash_ent(&tei, &ent)) != 0) + return (error); + + head = ccfg->head6; + hash = hash_ent(&ent, AF_INET6, ccfg->mask6, ccfg->size6); + /* Check for existence */ + SLIST_FOREACH(tmp, &head[hash], next) { + if (memcmp(&tmp->a.a6, &ent.a.a6, 16) != 0) + continue; + ta_dump_chash_tentry(ta_state, ti, tmp, tent); + return (0); + } } -#endif + return (ENOENT); } @@ -975,11 +1064,7 @@ ta_foreach_chash(void *ta_state, struct struct ta_buf_chash { void *ent_ptr; - int type; - union { - uint32_t a4; - struct in6_addr a6; - } a; + struct chashentry ent; }; static int @@ -988,44 +1073,19 @@ ta_prepare_add_chash(struct ip_fw_chain { struct ta_buf_chash *tb; struct chashentry *ent; - int mlen; - struct in6_addr mask6; + int error; tb = (struct ta_buf_chash *)ta_buf; memset(tb, 0, sizeof(struct ta_buf_chash)); - mlen = tei->masklen; - - if (tei->subtype == AF_INET) { -#ifdef INET - if (mlen > 32) - return (EINVAL); - ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); - ent->value = tei->value; - ent->type = AF_INET; + ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); - /* Calculate mask */ - ent->a.a4 = ntohl(*((in_addr_t *)tei->paddr)) >> (32 - mlen); - tb->ent_ptr = ent; -#endif -#ifdef INET6 - } else if (tei->subtype == AF_INET6) { - /* IPv6 case */ - if (mlen > 128) - return (EINVAL); - ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); - ent->value = tei->value; - ent->type = AF_INET6; - - ipv6_writemask(&mask6, mlen); - memcpy(&ent->a.a6, tei->paddr, sizeof(struct in6_addr)); - APPLY_MASK(&ent->a.a6, &mask6); - tb->ent_ptr = ent; -#endif - } else { - /* Unknown CIDR type */ - return (EINVAL); + error = tei_to_chash_ent(tei, ent); + if (error != 0) { + free(ent, M_IPFW_TBL); + return (error); } + tb->ent_ptr = ent; return (0); } @@ -1051,7 +1111,8 @@ ta_add_chash(void *ta_state, struct tabl if (tei->masklen != ccfg->mask4) return (EINVAL); head = ccfg->head4; - hash = hash_ip(ent->a.a4, ccfg->size4); + hash = hash_ent(ent, AF_INET, ccfg->mask4, ccfg->size4); + /* Check for existence */ SLIST_FOREACH(tmp, &head[hash], next) { if (tmp->a.a4 == ent->a.a4) { @@ -1063,13 +1124,10 @@ ta_add_chash(void *ta_state, struct tabl if (tei->masklen != ccfg->mask6) return (EINVAL); head = ccfg->head6; - if (tei->masklen == 64) - hash = hash_ip64(&ent->a.a6, ccfg->size6); - else - hash = hash_ip6(&ent->a.a6, ccfg->size6); + hash = hash_ent(ent, AF_INET6, ccfg->mask6, ccfg->size6); /* Check for existence */ SLIST_FOREACH(tmp, &head[hash], next) { - if (memcmp(&tmp->a.a6, &ent->a.a6, 16)) { + if (memcmp(&tmp->a.a6, &ent->a.a6, 16) == 0) { exists = 1; break; } @@ -1088,6 +1146,17 @@ ta_add_chash(void *ta_state, struct tabl SLIST_INSERT_HEAD(&head[hash], ent, next); tb->ent_ptr = NULL; *pnum = 1; + + /* Update counters and check if we need to grow hash */ + if (tei->subtype == AF_INET) { + ccfg->items4++; + if (ccfg->items4 > ccfg->size4 && ccfg->size4 < 65536) + *pflags = (ccfg->size4 * 2) | (1UL << 32); + } else { + ccfg->items6++; + if (ccfg->items6 > ccfg->size6 && ccfg->size6 < 65536) + *pflags = ccfg->size6 * 2; + } } return (0); @@ -1098,40 +1167,11 @@ ta_prepare_del_chash(struct ip_fw_chain void *ta_buf) { struct ta_buf_chash *tb; - int mlen; - struct in6_addr mask6; tb = (struct ta_buf_chash *)ta_buf; memset(tb, 0, sizeof(struct ta_buf_chash)); - mlen = tei->masklen; - - if (tei->subtype == AF_INET) { -#ifdef INET - if (mlen > 32) - return (EINVAL); - tb->type = AF_INET; - - /* Calculate masked address */ - tb->a.a4 = ntohl(*((in_addr_t *)tei->paddr)) >> (32 - mlen); -#endif -#ifdef INET6 - } else if (tei->subtype == AF_INET6) { - /* IPv6 case */ - if (mlen > 128) - return (EINVAL); - tb->type = AF_INET6; - - ipv6_writemask(&mask6, mlen); - memcpy(&tb->a.a6, tei->paddr, sizeof(struct in6_addr)); - APPLY_MASK(&tb->a.a6, &mask6); -#endif - } else { - /* Unknown CIDR type */ - return (EINVAL); - } - - return (0); + return (tei_to_chash_ent(tei, &tb->ent)); } static int @@ -1140,23 +1180,25 @@ ta_del_chash(void *ta_state, struct tabl { struct chash_cfg *ccfg; struct chashbhead *head; - struct chashentry *ent, *tmp_next; + struct chashentry *ent, *tmp_next, *dent; struct ta_buf_chash *tb; uint32_t hash; ccfg = (struct chash_cfg *)ta_state; tb = (struct ta_buf_chash *)ta_buf; + dent = &tb->ent; if (tei->subtype == AF_INET) { if (tei->masklen != ccfg->mask4) return (EINVAL); head = ccfg->head4; - hash = hash_ip(tb->a.a4, ccfg->size4); + hash = hash_ent(dent, AF_INET, ccfg->mask4, ccfg->size4); SLIST_FOREACH_SAFE(ent, &head[hash], next, tmp_next) { - if (ent->a.a4 == tb->a.a4) { + if (ent->a.a4 == dent->a.a4) { SLIST_REMOVE(&head[hash], ent, chashentry,next); *pnum = 1; + ccfg->items4--; return (0); } } @@ -1164,14 +1206,11 @@ ta_del_chash(void *ta_state, struct tabl if (tei->masklen != ccfg->mask6) return (EINVAL); head = ccfg->head6; - if (tei->masklen == 64) - hash = hash_ip64(&tb->a.a6, ccfg->size6); - else - hash = hash_ip6(&tb->a.a6, ccfg->size6); - + hash = hash_ent(dent, AF_INET6, ccfg->mask6, ccfg->size6); SLIST_FOREACH_SAFE(ent, &head[hash], next, tmp_next) { - if (memcmp(&ent->a.a6, &tb->a.a6, 16)) { + if (memcmp(&ent->a.a6, &dent->a.a6, 16) == 0) { SLIST_REMOVE(&head[hash], ent, chashentry,next); + ccfg->items6--; *pnum = 1; return (0); } @@ -1193,6 +1232,122 @@ ta_flush_chash_entry(struct ip_fw_chain free(tb->ent_ptr, M_IPFW_TBL); } +/* + * Hash growing callbacks. + */ + +struct mod_item { + void *main_ptr; + size_t size; +}; + +/* + * Allocate new, larger chash. + */ +static int +ta_prepare_mod_chash(void *ta_buf, uint64_t *pflags) +{ + struct mod_item *mi; + struct chashbhead *head; + int i; + + mi = (struct mod_item *)ta_buf; + + memset(mi, 0, sizeof(struct mod_item)); + mi->size = *pflags & 0xFFFFFFFF; + head = malloc(sizeof(struct chashbhead) * mi->size, M_IPFW, + M_WAITOK | M_ZERO); + for (i = 0; i < mi->size; i++) + SLIST_INIT(&head[i]); + + mi->main_ptr = head; + + return (0); +} + +/* + * Copy data from old runtime array to new one. + */ +static int +ta_fill_mod_chash(void *ta_state, struct table_info *ti, void *ta_buf, + uint64_t *pflags) +{ + + /* In is not possible to do rehash if we're not holidng WLOCK. */ + return (0); +} + + +/* + * Switch old & new arrays. + */ +static int +ta_modify_chash(void *ta_state, struct table_info *ti, void *ta_buf, + uint64_t pflags) +{ + struct mod_item *mi; + struct chash_cfg *ccfg; + struct chashbhead *old_head, *new_head; + struct chashentry *ent, *ent_next; + int af, i, mlen; + uint32_t nhash; + size_t old_size; + + mi = (struct mod_item *)ta_buf; + ccfg = (struct chash_cfg *)ta_state; + + /* Check which hash we need to grow and do we still need that */ + if ((pflags >> 32) == 1) { + old_size = ccfg->size4; + old_head = ti->state; + mlen = ccfg->mask4; + af = AF_INET; + } else { + old_size = ccfg->size6; + old_head = ti->xstate; + mlen = ccfg->mask6; + af = AF_INET6; + } + + if (old_size >= mi->size) + return (0); + + new_head = (struct chashbhead *)mi->main_ptr; + for (i = 0; i < old_size; i++) { + SLIST_FOREACH_SAFE(ent, &old_head[i], next, ent_next) { + nhash = hash_ent(ent, af, mlen, mi->size); + SLIST_INSERT_HEAD(&new_head[nhash], ent, next); + } + } + + if (af == AF_INET) { + ti->state = new_head; + ccfg->head4 = new_head; + ccfg->size4 = mi->size; + } else { + ti->xstate = new_head; + ccfg->head6 = new_head; + ccfg->size6 = mi->size; + } + + mi->main_ptr = old_head; + + return (0); +} + +/* + * Free unneded array. + */ +static void +ta_flush_mod_chash(void *ta_buf) +{ + struct mod_item *mi; + + mi = (struct mod_item *)ta_buf; + if (mi->main_ptr != NULL) + free(mi->main_ptr, M_IPFW); +} + struct table_algo cidr_hash = { .name = "cidr:hash", .type = IPFW_TABLE_CIDR, @@ -1207,6 +1362,10 @@ struct table_algo cidr_hash = { .dump_tentry = ta_dump_chash_tentry, .find_tentry = ta_find_chash_tentry, .print_config = ta_print_chash_config, + .prepare_mod = ta_prepare_mod_chash, + .fill_mod = ta_fill_mod_chash, + .modify = ta_modify_chash, + .flush_mod = ta_flush_mod_chash, }; From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 14:52:28 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id EB5D49FB; Wed, 30 Jul 2014 14:52:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id D7AC928F8; Wed, 30 Jul 2014 14:52:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UEqRwb064643; Wed, 30 Jul 2014 14:52:27 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UEqQxm064634; Wed, 30 Jul 2014 14:52:26 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407301452.s6UEqQxm064634@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 30 Jul 2014 14:52:26 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269304 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 14:52:28 -0000 Author: melifaro Date: Wed Jul 30 14:52:26 2014 New Revision: 269304 URL: http://svnweb.freebsd.org/changeset/base/269304 Log: * Add number:array algorithm lookup method. Kernel changes: * s/IPFW_TABLE_U32/IPFW_TABLE_NUMBER/ * Force "lookup " to be IPFW_TABLE_NUMBER * Support "lookup" method for number tables * Add number:array algorihm (i32 as key, auto-growing). Userland changes: * Support named tables in "lookup Table" * Fix handling of "table(NAME,val)" case * Support printing "number" table data. Modified: projects/ipfw/sbin/ipfw/ipfw2.c projects/ipfw/sbin/ipfw/tables.c projects/ipfw/sys/netinet/ip_fw.h projects/ipfw/sys/netpfil/ipfw/ip_fw2.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sbin/ipfw/ipfw2.c ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.c Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sbin/ipfw/ipfw2.c Wed Jul 30 14:52:26 2014 (r269304) @@ -1096,6 +1096,7 @@ print_ip(struct format_opts *fo, ipfw_in struct hostent *he = NULL; uint32_t len = F_LEN((ipfw_insn *)cmd); uint32_t *a = ((ipfw_insn_u32 *)cmd)->d; + char *t; if (cmd->o.opcode == O_IP_DST_LOOKUP && len > F_INSN_SIZE(ipfw_insn_u32)) { uint32_t d = a[1]; @@ -1103,8 +1104,9 @@ print_ip(struct format_opts *fo, ipfw_in if (d < sizeof(lookup_key)/sizeof(lookup_key[0])) arg = match_value(rule_options, lookup_key[d]); - printf("%s lookup %s %d", cmd->o.len & F_NOT ? " not": "", - arg, cmd->o.arg1); + t = table_search_ctlv(fo->tstate, ((ipfw_insn *)cmd)->arg1); + printf("%s lookup %s %s", cmd->o.len & F_NOT ? " not": "", + arg, t); return; } printf("%s%s ", cmd->o.len & F_NOT ? " not": "", s); @@ -1115,7 +1117,6 @@ print_ip(struct format_opts *fo, ipfw_in } if (cmd->o.opcode == O_IP_SRC_LOOKUP || cmd->o.opcode == O_IP_DST_LOOKUP) { - char *t; t = table_search_ctlv(fo->tstate, ((ipfw_insn *)cmd)->arg1); printf("table(%s", t); if (len == F_INSN_SIZE(ipfw_insn_u32)) @@ -2624,14 +2625,9 @@ struct tidx { static uint16_t pack_table(struct tidx *tstate, char *name, uint32_t set) { - char *p; int i; ipfw_obj_ntlv *ntlv; - if ((p = strchr(name, ')')) == NULL) - return (0); - *p = '\0'; - if (table_check_name(name) != 0) return (0); @@ -2694,6 +2690,9 @@ fill_ip(ipfw_insn_ip *cmd, char *av, int } if (strncmp(av, "table(", 6) == 0) { + if ((p = strchr(av + 6, ')')) == NULL) + errx(EX_DATAERR, "forgotten parenthesis: '%s'", av); + *p = '\0'; p = strchr(av + 6, ','); if (p) *p++ = '\0'; @@ -2983,6 +2982,7 @@ ipfw_delete(char *av[]) static void fill_iface(ipfw_insn_if *cmd, char *arg, int cblen, struct tidx *tstate) { + char *p; uint16_t uidx; cmd->name[0] = '\0'; @@ -2994,7 +2994,10 @@ fill_iface(ipfw_insn_if *cmd, char *arg, if (strcmp(arg, "any") == 0) cmd->o.len = 0; /* effectively ignore this command */ else if (strncmp(arg, "table(", 6) == 0) { - char *p = strchr(arg + 6, ','); + if ((p = strchr(arg + 6, ')')) == NULL) + errx(EX_DATAERR, "forgotten parenthesis: '%s'", arg); + *p = '\0'; + p = strchr(arg + 6, ','); if (p) *p++ = '\0'; if ((uidx = pack_table(tstate, arg + 6, 0)) == 0) @@ -4381,7 +4384,6 @@ read_options: case TOK_LOOKUP: { ipfw_insn_u32 *c = (ipfw_insn_u32 *)cmd; - char *p; int j; if (!av[0] || !av[1]) @@ -4397,9 +4399,11 @@ read_options: errx(EX_USAGE, "format: cannot lookup on %s", *av); __PAST_END(c->d, 1) = j; // i converted to option av++; - cmd->arg1 = strtoul(*av, &p, 0); - if (p && *p) - errx(EX_USAGE, "format: lookup argument tablenum"); + + if ((j = pack_table(tstate, *av, 0)) == 0) + errx(EX_DATAERR, "Invalid table name: %s", *av); + + cmd->arg1 = j; av++; } break; Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sbin/ipfw/tables.c Wed Jul 30 14:52:26 2014 (r269304) @@ -82,7 +82,7 @@ static int tables_foreach(table_cb_t *f, static struct _s_x tabletypes[] = { { "cidr", IPFW_TABLE_CIDR }, { "iface", IPFW_TABLE_INTERFACE }, - { "u32", IPFW_TABLE_U32 }, + { "number", IPFW_TABLE_NUMBER }, { NULL, 0 } }; @@ -654,7 +654,7 @@ tentry_fill_key_type(char *arg, ipfw_obj /* Set mask to exact match */ masklen = 8 * IF_NAMESIZE; break; - case IPFW_TABLE_U32: + case IPFW_TABLE_NUMBER: /* Port or any other key */ key = strtol(arg, &p, 10); if (*p != '\0') @@ -899,6 +899,16 @@ table_show_entry(ipfw_xtable_info *i, ip inet_ntoa(*(struct in_addr *)&tval)); } else printf("%s %u\n", tent->k.iface, tval); + break; + case IPFW_TABLE_NUMBER: + /* numbers */ + if (co.do_value_as_ip) { + tval = htonl(tval); + printf("%u %s\n", tent->k.key, + inet_ntoa(*(struct in_addr *)&tval)); + } else + printf("%u %u\n", tent->k.key, tval); + break; } } Modified: projects/ipfw/sys/netinet/ip_fw.h ============================================================================== --- projects/ipfw/sys/netinet/ip_fw.h Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sys/netinet/ip_fw.h Wed Jul 30 14:52:26 2014 (r269304) @@ -674,7 +674,7 @@ struct _ipfw_dyn_rule { #define IPFW_TABLE_CIDR 1 /* Table for holding IPv4/IPv6 prefixes */ #define IPFW_TABLE_INTERFACE 2 /* Table for holding interface names */ -#define IPFW_TABLE_U32 3 /* Table for holidng ports/uid/gid/etc */ +#define IPFW_TABLE_NUMBER 3 /* Table for holding ports/uid/gid/etc */ #define IPFW_TABLE_MAXTYPE 3 /* Maximum valid number */ #define IPFW_VTYPE_U32 1 /* Skipto/tablearg integer */ Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Wed Jul 30 14:52:26 2014 (r269304) @@ -1473,9 +1473,9 @@ do { \ proto != IPPROTO_UDP) break; else if (v == 2) - key = htonl(dst_port); + key = dst_port; else if (v == 3) - key = htonl(src_port); + key = src_port; #ifndef USERSPACE else if (v == 4 || v == 5) { check_uidgid( @@ -1494,7 +1494,6 @@ do { \ else if (v == 5 /* O_JAIL */) key = ucred_cache.xid; #endif /* !__FreeBSD__ */ - key = htonl(key); } else #endif /* !USERSPACE */ break; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Wed Jul 30 14:52:26 2014 (r269304) @@ -593,6 +593,9 @@ ipfw_find_table_entry(struct ip_fw_chain IPFW_UH_RUNLOCK(ch); return (EINVAL); } + case IPFW_TABLE_NUMBER: + plen = sizeof(uint32_t); + break; break; default: @@ -1744,17 +1747,19 @@ classify_table_opcode(ipfw_insn *cmd, ui case 2: case 3: /* src/dst port */ - //type = IPFW_TABLE_U16; + *ptype = IPFW_TABLE_NUMBER; break; case 4: /* uid/gid */ - //type = IPFW_TABLE_U32; + *ptype = IPFW_TABLE_NUMBER; + break; case 5: - //type = IPFW_TABLE_U32; /* jid */ + *ptype = IPFW_TABLE_NUMBER; + break; case 6: - //type = IPFW_TABLE_U16; /* dscp */ + *ptype = IPFW_TABLE_NUMBER; break; } } Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Wed Jul 30 14:52:04 2014 (r269303) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Wed Jul 30 14:52:26 2014 (r269304) @@ -1376,7 +1376,7 @@ struct table_algo cidr_hash = { * * Runtime part: * - sorted array of "struct ifidx" pointed by ti->state. - * Array is allocated with routing up to IFIDX_CHUNK. Only existing + * Array is allocated with rounding up to IFIDX_CHUNK. Only existing * interfaces are stored in array, however its allocated size is * sufficient to hold all table records if needed. * - current array size is stored in ti->data @@ -2025,6 +2025,368 @@ struct table_algo iface_idx = { .change_ti = ta_change_ti_ifidx, }; +/* + * Number array cmds. + * + * Implementation: + * + * Runtime part: + * - sorted array of "struct numarray" pointed by ti->state. + * Array is allocated with rounding up to NUMARRAY_CHUNK. + * - current array size is stored in ti->data + * + */ + +struct numarray { + uint32_t number; + uint32_t value; +}; + +struct numarray_cfg { + void *main_ptr; + size_t size; /* Number of items allocated in array */ + size_t used; /* Number of items _active_ now */ +}; + +#define NUMARRAY_CHUNK 16 + +int compare_numarray(const void *k, const void *v); + +int +compare_numarray(const void *k, const void *v) +{ + struct numarray *na; + uint32_t key; + + key = *((uint32_t *)k); + na = (struct numarray *)v; + + if (key < na->number) + return (-1); + else if (key > na->number) + return (1); + + return (0); +} + +static struct numarray * +numarray_find(struct table_info *ti, void *key) +{ + struct numarray *ri; + + ri = bsearch(key, ti->state, ti->data, sizeof(struct numarray), + compare_ifidx); + + return (ri); +} + +static int +ta_lookup_numarray(struct table_info *ti, void *key, uint32_t keylen, + uint32_t *val) +{ + struct numarray *ri; + + ri = numarray_find(ti, key); + + if (ri != NULL) { + *val = ri->value; + return (1); + } + + return (0); +} + +static int +ta_init_numarray(struct ip_fw_chain *ch, void **ta_state, struct table_info *ti, + char *data) +{ + struct numarray_cfg *cfg; + + cfg = malloc(sizeof(*cfg), M_IPFW, M_WAITOK | M_ZERO); + + cfg->size = NUMARRAY_CHUNK; + cfg->main_ptr = malloc(sizeof(struct numarray) * cfg->size, M_IPFW, + M_WAITOK | M_ZERO); + + *ta_state = cfg; + ti->state = cfg->main_ptr; + ti->lookup = ta_lookup_numarray; + + return (0); +} + +/* + * Destroys table @ti + */ +static void +ta_destroy_numarray(void *ta_state, struct table_info *ti) +{ + struct numarray_cfg *cfg; + + cfg = (struct numarray_cfg *)ta_state; + + if (cfg->main_ptr != NULL) + free(cfg->main_ptr, M_IPFW); + + free(cfg, M_IPFW); +} + +struct ta_buf_numarray +{ + struct numarray na; +}; + +/* + * Prepare for addition/deletion to an array. + */ +static int +ta_prepare_add_numarray(struct ip_fw_chain *ch, struct tentry_info *tei, + void *ta_buf) +{ + struct ta_buf_numarray *tb; + + tb = (struct ta_buf_numarray *)ta_buf; + memset(tb, 0, sizeof(*tb)); + + tb->na.number = *((uint32_t *)tei->paddr); + tb->na.value = tei->value; + + return (0); +} + +static int +ta_add_numarray(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) +{ + struct numarray_cfg *cfg; + struct ta_buf_numarray *tb; + struct numarray *ri; + int res; + + tb = (struct ta_buf_numarray*)ta_buf; + cfg = (struct numarray_cfg *)ta_state; + + ri = numarray_find(ti, &tb->na.number); + + if (ri != NULL) { + if ((tei->flags & TEI_FLAGS_UPDATE) == 0) + return (EEXIST); + + /* We need to update value */ + ri->value = tb->na.value; + /* Indicate that update has happened instead of addition */ + tei->flags |= TEI_FLAGS_UPDATED; + *pnum = 0; + return (0); + } + + res = badd(&tb->na.number, &tb->na, cfg->main_ptr, cfg->used, + sizeof(struct numarray), compare_numarray); + + KASSERT(res == 1, ("number %d already exists", tb->na.number)); + cfg->used++; + ti->data = cfg->used; + + if (cfg->used + 1 == cfg->size) { + /* Notify core we need to grow */ + *pflags = cfg->size + NUMARRAY_CHUNK; + } + *pnum = 1; + + return (0); +} + +/* + * Remove key from both configuration list and + * runtime array. Removed interface notification. + */ +static int +ta_del_numarray(void *ta_state, struct table_info *ti, struct tentry_info *tei, + void *ta_buf, uint64_t *pflags, uint32_t *pnum) +{ + struct numarray_cfg *cfg; + struct ta_buf_numarray *tb; + struct numarray *ri; + int res; + + tb = (struct ta_buf_numarray *)ta_buf; + cfg = (struct numarray_cfg *)ta_state; + + ri = numarray_find(ti, &tb->na.number); + if (ri == NULL) + return (ENOENT); + + res = bdel(&tb->na.number, cfg->main_ptr, cfg->used, + sizeof(struct numarray), compare_numarray); + + KASSERT(res == 1, ("number %u does not exist", tb->na.number)); + cfg->used--; + ti->data = cfg->used; + + *pnum = 1; + + return (0); +} + +static void +ta_flush_numarray_entry(struct ip_fw_chain *ch, struct tentry_info *tei, + void *ta_buf) +{ + + /* Do nothing */ +} + + +/* + * Table growing callbacks. + */ + +/* + * Allocate ned, larger runtime numarray array. + */ +static int +ta_prepare_mod_numarray(void *ta_buf, uint64_t *pflags) +{ + struct mod_item *mi; + + mi = (struct mod_item *)ta_buf; + + memset(mi, 0, sizeof(struct mod_item)); + mi->size = *pflags; + mi->main_ptr = malloc(sizeof(struct numarray) * mi->size, M_IPFW, + M_WAITOK | M_ZERO); + + return (0); +} + +/* + * Copy data from old runtime array to new one. + */ +static int +ta_fill_mod_numarray(void *ta_state, struct table_info *ti, void *ta_buf, + uint64_t *pflags) +{ + struct mod_item *mi; + struct numarray_cfg *cfg; + + mi = (struct mod_item *)ta_buf; + cfg = (struct numarray_cfg *)ta_state; + + /* Check if we still need to grow array */ + if (cfg->size >= mi->size) { + *pflags = 0; + return (0); + } + + memcpy(mi->main_ptr, cfg->main_ptr, cfg->used * sizeof(struct numarray)); + + return (0); +} + +/* + * Switch old & new arrays. + */ +static int +ta_modify_numarray(void *ta_state, struct table_info *ti, void *ta_buf, + uint64_t pflags) +{ + struct mod_item *mi; + struct numarray_cfg *cfg; + void *old_ptr; + + mi = (struct mod_item *)ta_buf; + cfg = (struct numarray_cfg *)ta_state; + + old_ptr = cfg->main_ptr; + cfg->main_ptr = mi->main_ptr; + cfg->size = mi->size; + ti->state = cfg->main_ptr; + + mi->main_ptr = old_ptr; + + return (0); +} + +/* + * Free unneded array. + */ +static void +ta_flush_mod_numarray(void *ta_buf) +{ + struct mod_item *mi; + + mi = (struct mod_item *)ta_buf; + if (mi->main_ptr != NULL) + free(mi->main_ptr, M_IPFW); +} + +static int +ta_dump_numarray_tentry(void *ta_state, struct table_info *ti, void *e, + ipfw_obj_tentry *tent) +{ + struct numarray *na; + + na = (struct numarray *)e; + + tent->k.key = na->number; + tent->value = na->value; + + return (0); +} + +static int +ta_find_numarray_tentry(void *ta_state, struct table_info *ti, void *key, + uint32_t keylen, ipfw_obj_tentry *tent) +{ + struct numarray_cfg *cfg; + struct numarray *ri; + + cfg = (struct numarray_cfg *)ta_state; + + ri = numarray_find(ti, key); + + if (ri != NULL) { + ta_dump_numarray_tentry(ta_state, ti, ri, tent); + return (0); + } + + return (ENOENT); +} + +static void +ta_foreach_numarray(void *ta_state, struct table_info *ti, ta_foreach_f *f, + void *arg) +{ + struct numarray_cfg *cfg; + struct numarray *array; + int i; + + cfg = (struct numarray_cfg *)ta_state; + array = cfg->main_ptr; + + for (i = 0; i < cfg->used; i++) + f(&array[i], arg); +} + +struct table_algo number_array = { + .name = "number:array", + .type = IPFW_TABLE_NUMBER, + .init = ta_init_numarray, + .destroy = ta_destroy_numarray, + .prepare_add = ta_prepare_add_numarray, + .prepare_del = ta_prepare_add_numarray, + .add = ta_add_numarray, + .del = ta_del_numarray, + .flush_entry = ta_flush_numarray_entry, + .foreach = ta_foreach_numarray, + .dump_tentry = ta_dump_numarray_tentry, + .find_tentry = ta_find_numarray_tentry, + .prepare_mod = ta_prepare_mod_numarray, + .fill_mod = ta_fill_mod_numarray, + .modify = ta_modify_numarray, + .flush_mod = ta_flush_mod_numarray, +}; + void ipfw_table_algo_init(struct ip_fw_chain *ch) { @@ -2037,6 +2399,7 @@ ipfw_table_algo_init(struct ip_fw_chain ipfw_add_table_algo(ch, &cidr_radix, sz, &cidr_radix.idx); ipfw_add_table_algo(ch, &cidr_hash, sz, &cidr_hash.idx); ipfw_add_table_algo(ch, &iface_idx, sz, &iface_idx.idx); + ipfw_add_table_algo(ch, &number_array, sz, &number_array.idx); } void @@ -2046,6 +2409,7 @@ ipfw_table_algo_destroy(struct ip_fw_cha ipfw_del_table_algo(ch, cidr_radix.idx); ipfw_del_table_algo(ch, cidr_hash.idx); ipfw_del_table_algo(ch, iface_idx.idx); + ipfw_del_table_algo(ch, number_array.idx); } From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 15:01:33 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 78756EB0; Wed, 30 Jul 2014 15:01:33 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 666FD29FF; Wed, 30 Jul 2014 15:01:33 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UF1XHM068837; Wed, 30 Jul 2014 15:01:33 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UF1X5Z068836; Wed, 30 Jul 2014 15:01:33 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407301501.s6UF1X5Z068836@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Wed, 30 Jul 2014 15:01:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269305 - projects/ipfw/sbin/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 15:01:33 -0000 Author: melifaro Date: Wed Jul 30 15:01:32 2014 New Revision: 269305 URL: http://svnweb.freebsd.org/changeset/base/269305 Log: Improve "ipfw talist" readability. Modified: projects/ipfw/sbin/ipfw/tables.c Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Wed Jul 30 14:52:26 2014 (r269304) +++ projects/ipfw/sbin/ipfw/tables.c Wed Jul 30 15:01:32 2014 (r269305) @@ -956,9 +956,9 @@ ipfw_list_ta(int ac, char *av[]) for (i = 0; i < olh->count; i++) { if ((atype = match_value(tabletypes, info->type)) == NULL) atype = "unknown"; + printf("--- %s ---\n", info->algoname); + printf(" type: %s\n refcount: %u\n", atype, info->refcnt); - printf("%s type: %s references: %u\n", info->algoname, - atype, info->refcnt); info = (ipfw_ta_info *)((caddr_t)info + olh->objsize); } From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 17:37:46 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 58AB930A; Wed, 30 Jul 2014 17:37:46 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3A5222CF7; Wed, 30 Jul 2014 17:37:46 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UHbkVV039398; Wed, 30 Jul 2014 17:37:46 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UHbj8b039394; Wed, 30 Jul 2014 17:37:45 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407301737.s6UHbj8b039394@svn.freebsd.org> From: Andrew Turner Date: Wed, 30 Jul 2014 17:37:45 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269310 - in projects/arm64/sys/arm64: arm64 include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 17:37:46 -0000 Author: andrew Date: Wed Jul 30 17:37:45 2014 New Revision: 269310 URL: http://svnweb.freebsd.org/changeset/base/269310 Log: Store and restore the frame around exceptions Modified: projects/arm64/sys/arm64/arm64/exception.S projects/arm64/sys/arm64/include/cpu.h projects/arm64/sys/arm64/include/frame.h Modified: projects/arm64/sys/arm64/arm64/exception.S ============================================================================== --- projects/arm64/sys/arm64/arm64/exception.S Wed Jul 30 17:19:11 2014 (r269309) +++ projects/arm64/sys/arm64/arm64/exception.S Wed Jul 30 17:37:45 2014 (r269310) @@ -50,6 +50,59 @@ sintrcnt: mov x1, 0x1c090000; \ str x0, [x1]; +.macro save_registers + stp x28, x29, [sp, #-16]! + stp x26, x27, [sp, #-16]! + stp x24, x25, [sp, #-16]! + stp x22, x23, [sp, #-16]! + stp x20, x21, [sp, #-16]! + stp x18, x19, [sp, #-16]! + stp x16, x17, [sp, #-16]! + stp x14, x15, [sp, #-16]! + stp x12, x13, [sp, #-16]! + stp x10, x11, [sp, #-16]! + stp x8, x9, [sp, #-16]! + stp x6, x7, [sp, #-16]! + stp x4, x5, [sp, #-16]! + stp x2, x3, [sp, #-16]! + stp x0, x1, [sp, #-16]! + mrs x10, elr_el1 + mrs x11, spsr_el1 + mov x12, sp + stp x10, x11, [sp, #-16]! + stp x12, lr, [sp, #-16]! +.endm + +.macro restore_registers + ldp x12, lr, [sp], #16 + ldp x10, x11, [sp], #16 + mov sp, x12 + msr spsr_el1, x11 + msr elr_el1, x10 + ldp x0, x1, [sp], #16 + ldp x2, x3, [sp], #16 + ldp x4, x5, [sp], #16 + ldp x6, x7, [sp], #16 + ldp x8, x9, [sp], #16 + ldp x10, x11, [sp], #16 + ldp x12, x13, [sp], #16 + ldp x14, x15, [sp], #16 + ldp x16, x17, [sp], #16 + ldp x18, x19, [sp], #16 + ldp x20, x21, [sp], #16 + ldp x22, x23, [sp], #16 + ldp x24, x25, [sp], #16 + ldp x26, x27, [sp], #16 + ldp x28, x29, [sp], #16 +.endm + +handle_el1h_sync: + save_registers + mov x0, sp + bl do_el1h_sync + restore_registers + eret + .macro vempty .align 7 EMIT('Z'); @@ -58,8 +111,7 @@ sintrcnt: .macro el1h_sync .align 7 - EMIT('B'); - 1: b 1b + b handle_el1h_sync .endm .macro el1h_error Modified: projects/arm64/sys/arm64/include/cpu.h ============================================================================== --- projects/arm64/sys/arm64/include/cpu.h Wed Jul 30 17:19:11 2014 (r269309) +++ projects/arm64/sys/arm64/include/cpu.h Wed Jul 30 17:37:45 2014 (r269310) @@ -39,7 +39,7 @@ #include -#define TRAPF_PC(tfp) ((tfp)->tf_pc) +#define TRAPF_PC(tfp) ((tfp)->tf_lr) #define TRAPF_USERMODE(tfp) (0) /* TODO: Fix */ #define cpu_getstack(td) ((td)->td_frame->tf_sp) Modified: projects/arm64/sys/arm64/include/frame.h ============================================================================== --- projects/arm64/sys/arm64/include/frame.h Wed Jul 30 17:19:11 2014 (r269309) +++ projects/arm64/sys/arm64/include/frame.h Wed Jul 30 17:37:45 2014 (r269310) @@ -35,10 +35,11 @@ * NOTE: keep this structure in sync with struct reg and struct mcontext. */ struct trapframe { - uint64_t tf_x[31]; uint64_t tf_sp; - uint64_t tf_pc; + uint64_t tf_lr; + uint64_t tf_elr; uint64_t tf_spsr; + uint64_t tf_x[30]; }; /* From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 17:40:21 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0BA16420; Wed, 30 Jul 2014 17:40:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id ECBD42D0B; Wed, 30 Jul 2014 17:40:20 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UHeKrH039828; Wed, 30 Jul 2014 17:40:20 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UHeKZO039827; Wed, 30 Jul 2014 17:40:20 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407301740.s6UHeKZO039827@svn.freebsd.org> From: Andrew Turner Date: Wed, 30 Jul 2014 17:40:20 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269311 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 17:40:21 -0000 Author: andrew Date: Wed Jul 30 17:40:20 2014 New Revision: 269311 URL: http://svnweb.freebsd.org/changeset/base/269311 Log: Reduce the noise in pmap to regular levels Modified: projects/arm64/sys/arm64/arm64/pmap.c Modified: projects/arm64/sys/arm64/arm64/pmap.c ============================================================================== --- projects/arm64/sys/arm64/arm64/pmap.c Wed Jul 30 17:37:45 2014 (r269310) +++ projects/arm64/sys/arm64/arm64/pmap.c Wed Jul 30 17:40:20 2014 (r269311) @@ -42,7 +42,9 @@ __FBSDID("$FreeBSD$"); #include #include +/* #define PMAP_DEBUG +*/ #if !defined(DIAGNOSTIC) #ifdef __GNUC_GNU_INLINE__ @@ -748,12 +750,8 @@ pmap_enter(pmap_t pmap, vm_offset_t va, vm_paddr_t pa; pt_entry_t *l3, opte; - printf("TODO: pmap_enter\n"); - PMAP_LOCK(pmap); pa = VM_PAGE_TO_PHYS(m); - printf("pmap_enter: %llx -> %llx (%x %x %u)\n", va, pa, access, - prot, wired); l3 = pmap_l3(pmap, va); KASSERT(l3 != NULL, ("TODO: grow va")); KASSERT(pmap == pmap_kernel(), ("Only kernel mappings for now")); From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 17:41:16 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id F3842520; Wed, 30 Jul 2014 17:41:15 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E0E3B2E89; Wed, 30 Jul 2014 17:41:15 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UHfFJs042134; Wed, 30 Jul 2014 17:41:15 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UHfFaI042133; Wed, 30 Jul 2014 17:41:15 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407301741.s6UHfFaI042133@svn.freebsd.org> From: Andrew Turner Date: Wed, 30 Jul 2014 17:41:15 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269312 - projects/arm64/sys/arm64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 17:41:16 -0000 Author: andrew Date: Wed Jul 30 17:41:15 2014 New Revision: 269312 URL: http://svnweb.freebsd.org/changeset/base/269312 Log: Remove unneeded bits of machine/bus.h on arm64 Modified: projects/arm64/sys/arm64/include/bus.h Modified: projects/arm64/sys/arm64/include/bus.h ============================================================================== --- projects/arm64/sys/arm64/include/bus.h Wed Jul 30 17:40:20 2014 (r269311) +++ projects/arm64/sys/arm64/include/bus.h Wed Jul 30 17:41:15 2014 (r269312) @@ -70,17 +70,26 @@ #include -/* - * int bus_space_map (bus_space_tag_t t, bus_addr_t addr, - * bus_size_t size, int flags, bus_space_handle_t *bshp); - * - * Map a region of bus space. - */ +#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t) + +#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFFUL +#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFFUL +#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFFUL +#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFFUL + +#define BUS_SPACE_MAXADDR 0xFFFFFFFFFFFFFFFFUL +#define BUS_SPACE_MAXSIZE 0xFFFFFFFFFFFFFFFFUL #define BUS_SPACE_MAP_CACHEABLE 0x01 #define BUS_SPACE_MAP_LINEAR 0x02 #define BUS_SPACE_MAP_PREFETCHABLE 0x04 +#define BUS_SPACE_UNRESTRICTED (~0) + +#define BUS_SPACE_BARRIER_READ 0x01 +#define BUS_SPACE_BARRIER_WRITE 0x02 + + struct bus_space { /* cookie */ void *bs_cookie; @@ -104,7 +113,7 @@ struct bus_space { void (*bs_barrier) (void *, bus_space_handle_t, bus_size_t, bus_size_t, int); - /* read (single) */ + /* read single */ u_int8_t (*bs_r_1) (void *, bus_space_handle_t, bus_size_t); u_int16_t (*bs_r_2) (void *, bus_space_handle_t, bus_size_t); u_int32_t (*bs_r_4) (void *, bus_space_handle_t, bus_size_t); @@ -130,7 +139,7 @@ struct bus_space { void (*bs_rr_8) (void *, bus_space_handle_t, bus_size_t, u_int64_t *, bus_size_t); - /* write (single) */ + /* write single */ void (*bs_w_1) (void *, bus_space_handle_t, bus_size_t, u_int8_t); void (*bs_w_2) (void *, bus_space_handle_t, @@ -190,7 +199,7 @@ struct bus_space { void (*bs_c_8) (void *, bus_space_handle_t, bus_size_t, bus_space_handle_t, bus_size_t, bus_size_t); - /* read stream (single) */ + /* read single stream */ u_int8_t (*bs_r_1_s) (void *, bus_space_handle_t, bus_size_t); u_int16_t (*bs_r_2_s) (void *, bus_space_handle_t, bus_size_t); u_int32_t (*bs_r_4_s) (void *, bus_space_handle_t, bus_size_t); @@ -300,8 +309,7 @@ struct bus_space { #define bus_space_barrier(t, h, o, l, f) \ (*(t)->bs_barrier)((t)->bs_cookie, (h), (o), (l), (f)) -#define BUS_SPACE_BARRIER_READ 0x01 -#define BUS_SPACE_BARRIER_WRITE 0x02 + /* * Bus read (single) operations. @@ -456,277 +464,9 @@ struct bus_space { #define bus_space_copy_region_8(t, h1, o1, h2, o2, c) \ __bs_copy(8, t, h1, o1, h2, o2, c) -/* - * Macros to provide prototypes for all the functions used in the - * bus_space structure - */ - -#define bs_map_proto(f) \ -int __bs_c(f,_bs_map) (void *t, bus_addr_t addr, \ - bus_size_t size, int cacheable, bus_space_handle_t *bshp); - -#define bs_unmap_proto(f) \ -void __bs_c(f,_bs_unmap) (void *t, bus_space_handle_t bsh, \ - bus_size_t size); - -#define bs_subregion_proto(f) \ -int __bs_c(f,_bs_subregion) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, bus_size_t size, \ - bus_space_handle_t *nbshp); - -#define bs_alloc_proto(f) \ -int __bs_c(f,_bs_alloc) (void *t, bus_addr_t rstart, \ - bus_addr_t rend, bus_size_t size, bus_size_t align, \ - bus_size_t boundary, int cacheable, bus_addr_t *addrp, \ - bus_space_handle_t *bshp); - -#define bs_free_proto(f) \ -void __bs_c(f,_bs_free) (void *t, bus_space_handle_t bsh, \ - bus_size_t size); - -#define bs_mmap_proto(f) \ -int __bs_c(f,_bs_mmap) (struct cdev *, vm_offset_t, vm_paddr_t *, int); - -#define bs_barrier_proto(f) \ -void __bs_c(f,_bs_barrier) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, bus_size_t len, int flags); - -#define bs_r_1_proto(f) \ -u_int8_t __bs_c(f,_bs_r_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_2_proto(f) \ -u_int16_t __bs_c(f,_bs_r_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_4_proto(f) \ -u_int32_t __bs_c(f,_bs_r_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_8_proto(f) \ -u_int64_t __bs_c(f,_bs_r_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_1_s_proto(f) \ -u_int8_t __bs_c(f,_bs_r_1_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_2_s_proto(f) \ -u_int16_t __bs_c(f,_bs_r_2_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_r_4_s_proto(f) \ -u_int32_t __bs_c(f,_bs_r_4_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset); - -#define bs_w_1_proto(f) \ -void __bs_c(f,_bs_w_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t value); - -#define bs_w_2_proto(f) \ -void __bs_c(f,_bs_w_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t value); - -#define bs_w_4_proto(f) \ -void __bs_c(f,_bs_w_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t value); - -#define bs_w_8_proto(f) \ -void __bs_c(f,_bs_w_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int64_t value); - -#define bs_w_1_s_proto(f) \ -void __bs_c(f,_bs_w_1_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t value); - -#define bs_w_2_s_proto(f) \ -void __bs_c(f,_bs_w_2_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t value); - -#define bs_w_4_s_proto(f) \ -void __bs_c(f,_bs_w_4_s) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t value); - -#define bs_rm_1_proto(f) \ -void __bs_c(f,_bs_rm_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t *addr, bus_size_t count); - -#define bs_rm_2_proto(f) \ -void __bs_c(f,_bs_rm_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t *addr, bus_size_t count); - -#define bs_rm_4_proto(f) \ -void __bs_c(f,_bs_rm_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t *addr, bus_size_t count); - -#define bs_rm_8_proto(f) \ -void __bs_c(f,_bs_rm_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int64_t *addr, bus_size_t count); - -#define bs_wm_1_proto(f) \ -void __bs_c(f,_bs_wm_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int8_t *addr, bus_size_t count); - -#define bs_wm_2_proto(f) \ -void __bs_c(f,_bs_wm_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int16_t *addr, bus_size_t count); - -#define bs_wm_4_proto(f) \ -void __bs_c(f,_bs_wm_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int32_t *addr, bus_size_t count); - -#define bs_wm_8_proto(f) \ -void __bs_c(f,_bs_wm_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int64_t *addr, bus_size_t count); - -#define bs_rr_1_proto(f) \ -void __bs_c(f, _bs_rr_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t *addr, bus_size_t count); - -#define bs_rr_2_proto(f) \ -void __bs_c(f, _bs_rr_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t *addr, bus_size_t count); - -#define bs_rr_4_proto(f) \ -void __bs_c(f, _bs_rr_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t *addr, bus_size_t count); - -#define bs_rr_8_proto(f) \ -void __bs_c(f, _bs_rr_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int64_t *addr, bus_size_t count); - -#define bs_wr_1_proto(f) \ -void __bs_c(f, _bs_wr_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int8_t *addr, bus_size_t count); - -#define bs_wr_2_proto(f) \ -void __bs_c(f, _bs_wr_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int16_t *addr, bus_size_t count); - -#define bs_wr_4_proto(f) \ -void __bs_c(f, _bs_wr_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int32_t *addr, bus_size_t count); - -#define bs_wr_8_proto(f) \ -void __bs_c(f, _bs_wr_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, const u_int64_t *addr, bus_size_t count); - -#define bs_sm_1_proto(f) \ -void __bs_c(f,_bs_sm_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t value, bus_size_t count); - -#define bs_sm_2_proto(f) \ -void __bs_c(f,_bs_sm_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t value, bus_size_t count); - -#define bs_sm_4_proto(f) \ -void __bs_c(f,_bs_sm_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t value, bus_size_t count); - -#define bs_sm_8_proto(f) \ -void __bs_c(f,_bs_sm_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int64_t value, bus_size_t count); - -#define bs_sr_1_proto(f) \ -void __bs_c(f,_bs_sr_1) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int8_t value, bus_size_t count); - -#define bs_sr_2_proto(f) \ -void __bs_c(f,_bs_sr_2) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int16_t value, bus_size_t count); - -#define bs_sr_4_proto(f) \ -void __bs_c(f,_bs_sr_4) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int32_t value, bus_size_t count); - -#define bs_sr_8_proto(f) \ -void __bs_c(f,_bs_sr_8) (void *t, bus_space_handle_t bsh, \ - bus_size_t offset, u_int64_t value, bus_size_t count); - -#define bs_c_1_proto(f) \ -void __bs_c(f,_bs_c_1) (void *t, bus_space_handle_t bsh1, \ - bus_size_t offset1, bus_space_handle_t bsh2, \ - bus_size_t offset2, bus_size_t count); - -#define bs_c_2_proto(f) \ -void __bs_c(f,_bs_c_2) (void *t, bus_space_handle_t bsh1, \ - bus_size_t offset1, bus_space_handle_t bsh2, \ - bus_size_t offset2, bus_size_t count); - -#define bs_c_4_proto(f) \ -void __bs_c(f,_bs_c_4) (void *t, bus_space_handle_t bsh1, \ - bus_size_t offset1, bus_space_handle_t bsh2, \ - bus_size_t offset2, bus_size_t count); - -#define bs_c_8_proto(f) \ -void __bs_c(f,_bs_c_8) (void *t, bus_space_handle_t bsh1, \ - bus_size_t offset1, bus_space_handle_t bsh2, \ - bus_size_t offset2, bus_size_t count); - -#define bs_protos(f) \ -bs_map_proto(f); \ -bs_unmap_proto(f); \ -bs_subregion_proto(f); \ -bs_alloc_proto(f); \ -bs_free_proto(f); \ -bs_mmap_proto(f); \ -bs_barrier_proto(f); \ -bs_r_1_proto(f); \ -bs_r_2_proto(f); \ -bs_r_4_proto(f); \ -bs_r_8_proto(f); \ -bs_r_1_s_proto(f); \ -bs_r_2_s_proto(f); \ -bs_r_4_s_proto(f); \ -bs_w_1_proto(f); \ -bs_w_2_proto(f); \ -bs_w_4_proto(f); \ -bs_w_8_proto(f); \ -bs_w_1_s_proto(f); \ -bs_w_2_s_proto(f); \ -bs_w_4_s_proto(f); \ -bs_rm_1_proto(f); \ -bs_rm_2_proto(f); \ -bs_rm_4_proto(f); \ -bs_rm_8_proto(f); \ -bs_wm_1_proto(f); \ -bs_wm_2_proto(f); \ -bs_wm_4_proto(f); \ -bs_wm_8_proto(f); \ -bs_rr_1_proto(f); \ -bs_rr_2_proto(f); \ -bs_rr_4_proto(f); \ -bs_rr_8_proto(f); \ -bs_wr_1_proto(f); \ -bs_wr_2_proto(f); \ -bs_wr_4_proto(f); \ -bs_wr_8_proto(f); \ -bs_sm_1_proto(f); \ -bs_sm_2_proto(f); \ -bs_sm_4_proto(f); \ -bs_sm_8_proto(f); \ -bs_sr_1_proto(f); \ -bs_sr_2_proto(f); \ -bs_sr_4_proto(f); \ -bs_sr_8_proto(f); \ -bs_c_1_proto(f); \ -bs_c_2_proto(f); \ -bs_c_4_proto(f); \ -bs_c_8_proto(f); - -#define BUS_SPACE_ALIGNED_POINTER(p, t) ALIGNED_POINTER(p, t) - -#define BUS_SPACE_MAXADDR_24BIT 0xFFFFFF -#define BUS_SPACE_MAXADDR_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXADDR 0xFFFFFFFF -#define BUS_SPACE_MAXSIZE_24BIT 0xFFFFFF -#define BUS_SPACE_MAXSIZE_32BIT 0xFFFFFFFF -#define BUS_SPACE_MAXSIZE 0xFFFFFFFF - -#define BUS_SPACE_UNRESTRICTED (~0) - #include +#if 0 /* * Get the physical address of a bus space memory-mapped resource. * Doing this as a macro is a temporary solution until a more robust fix is @@ -734,5 +474,6 @@ bs_c_8_proto(f); */ #define BUS_SPACE_PHYSADDR(res, offs) \ ((u_int)(rman_get_start(res)+(offs))) +#endif #endif /* _MACHINE_BUS_H_ */ From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 17:57:37 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BD259A2A; Wed, 30 Jul 2014 17:57:37 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 915162047; Wed, 30 Jul 2014 17:57:37 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UHvboF048392; Wed, 30 Jul 2014 17:57:37 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UHvbh3048389; Wed, 30 Jul 2014 17:57:37 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407301757.s6UHvbh3048389@svn.freebsd.org> From: Andrew Turner Date: Wed, 30 Jul 2014 17:57:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269313 - in projects/arm64/sys: arm64/arm64 conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 17:57:37 -0000 Author: andrew Date: Wed Jul 30 17:57:36 2014 New Revision: 269313 URL: http://svnweb.freebsd.org/changeset/base/269313 Log: Add the start of the bus_space handling code Added: projects/arm64/sys/arm64/arm64/bus_machdep.c (contents, props changed) Modified: projects/arm64/sys/conf/files.arm64 Added: projects/arm64/sys/arm64/arm64/bus_machdep.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm64/sys/arm64/arm64/bus_machdep.c Wed Jul 30 17:57:36 2014 (r269313) @@ -0,0 +1,35 @@ +/*- + * Copyright (c) 2014 Andrew Turner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include +__FBSDID("$FreeBSD$"); + +#include + +struct bus_space memmap_bus = { + .bs_cookie = NULL, +}; Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Wed Jul 30 17:41:15 2014 (r269312) +++ projects/arm64/sys/conf/files.arm64 Wed Jul 30 17:57:36 2014 (r269313) @@ -1,6 +1,7 @@ arm64/arm64/autoconf.c standard arm64/arm64/bcopy.c standard +arm64/arm64/bus_machdep.c standard arm64/arm64/busdma_machdep.c standard arm64/arm64/clock.c standard arm64/arm64/copyinout.c standard From owner-svn-src-projects@FreeBSD.ORG Wed Jul 30 17:59:38 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 1E545D9D; Wed, 30 Jul 2014 17:59:38 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0C7572066; Wed, 30 Jul 2014 17:59:38 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6UHxbCN048740; Wed, 30 Jul 2014 17:59:37 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6UHxbB6048739; Wed, 30 Jul 2014 17:59:37 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407301759.s6UHxbB6048739@svn.freebsd.org> From: Andrew Turner Date: Wed, 30 Jul 2014 17:59:37 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269315 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 30 Jul 2014 17:59:38 -0000 Author: andrew Date: Wed Jul 30 17:59:37 2014 New Revision: 269315 URL: http://svnweb.freebsd.org/changeset/base/269315 Log: Add do_el1h_sync. For now it prints the exception details. Modified: projects/arm64/sys/arm64/arm64/trap.c Modified: projects/arm64/sys/arm64/arm64/trap.c ============================================================================== --- projects/arm64/sys/arm64/arm64/trap.c Wed Jul 30 17:58:17 2014 (r269314) +++ projects/arm64/sys/arm64/arm64/trap.c Wed Jul 30 17:59:37 2014 (r269315) @@ -32,6 +32,8 @@ __FBSDID("$FreeBSD$"); #include #include +#include + int cpu_fetch_syscall_args(struct thread *td, struct syscall_args *sa) { @@ -39,3 +41,27 @@ cpu_fetch_syscall_args(struct thread *td panic("cpu_fetch_syscall_args"); } +void do_el1h_sync(struct trapframe *frame); +void do_el1h_sync(struct trapframe *frame) +{ + uint32_t exception; + uint64_t esr; + + /* Read the esr register to get the exception details */ + __asm __volatile("mrs %x0, esr_el1" : "=&r"(esr)); + KASSERT((esr & (1 << 25)) != 0, + ("Invalid instruction length in exception")); + + exception = (esr >> 26) & 0x3f; + + printf("In do_el1h_sync %llx %llx %x\n", frame->tf_elr, esr, exception); + switch(exception) { + case 0x3c: + printf("Breakpoint %u\n", (uint32_t)(esr & 0xffffff)); + break; + default: + panic("Unknown exception %x\n", exception); + } + frame->tf_elr += 4; +} + From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 12:58:39 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 6F9D3168; Thu, 31 Jul 2014 12:58:39 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 5DAE82904; Thu, 31 Jul 2014 12:58:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VCwdFE076751; Thu, 31 Jul 2014 12:58:39 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VCwdGW076750; Thu, 31 Jul 2014 12:58:39 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311258.s6VCwdGW076750@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 12:58:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269329 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 12:58:39 -0000 Author: andrew Date: Thu Jul 31 12:58:38 2014 New Revision: 269329 URL: http://svnweb.freebsd.org/changeset/base/269329 Log: Add a comment for tha mair attributes Modified: projects/arm64/sys/arm64/arm64/locore.S Modified: projects/arm64/sys/arm64/arm64/locore.S ============================================================================== --- projects/arm64/sys/arm64/arm64/locore.S Thu Jul 31 09:18:29 2014 (r269328) +++ projects/arm64/sys/arm64/arm64/locore.S Thu Jul 31 12:58:38 2014 (r269329) @@ -448,7 +448,8 @@ start_mmu: _exception_vectors: .quad exception_vectors mair: - .quad MAIR(0x00, 0) | MAIR(0x44, 1) | MAIR(0xff, 2) + /* Device Normal, no cache Normal, write-back */ + .quad MAIR(0x00, 0) | MAIR(0x44, 1) | MAIR(0xff, 2) tcr: .quad (TCR_TxSZ(63 - VIRT_BITS) | TCR_ASID_16 | TCR_IPS_40BIT | \ TCR_TG1_4K) From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 13:00:43 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0984D2BD; Thu, 31 Jul 2014 13:00:43 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id EC0E2292B; Thu, 31 Jul 2014 13:00:42 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VD0g1Z079815; Thu, 31 Jul 2014 13:00:42 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VD0g4A079814; Thu, 31 Jul 2014 13:00:42 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311300.s6VD0g4A079814@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 13:00:42 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269330 - projects/arm64/sys/arm64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 13:00:43 -0000 Author: andrew Date: Thu Jul 31 13:00:42 2014 New Revision: 269330 URL: http://svnweb.freebsd.org/changeset/base/269330 Log: Fix the location of the attribute index field in the lower attributes. Modified: projects/arm64/sys/arm64/include/pte.h Modified: projects/arm64/sys/arm64/include/pte.h ============================================================================== --- projects/arm64/sys/arm64/include/pte.h Thu Jul 31 12:58:38 2014 (r269329) +++ projects/arm64/sys/arm64/include/pte.h Thu Jul 31 13:00:42 2014 (r269330) @@ -56,7 +56,7 @@ typedef uint64_t pt_entry_t; /* page ta #define ATTR_AP_RW (1 << 1) #define ATTR_AP_USER (1 << 0) #define ATTR_NS (1 << 5) -#define ATTR_IDX(x) ((x) << 3) +#define ATTR_IDX(x) ((x) << 2) #define ATTR_DESCR_MASK 3 From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 13:02:57 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 004F8440; Thu, 31 Jul 2014 13:02:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E0B5829ED; Thu, 31 Jul 2014 13:02:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VD2uUJ080767; Thu, 31 Jul 2014 13:02:56 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VD2uSe080764; Thu, 31 Jul 2014 13:02:56 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311302.s6VD2uSe080764@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 13:02:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269331 - in projects/arm64/sys/arm64: arm64 include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 13:02:57 -0000 Author: andrew Date: Thu Jul 31 13:02:56 2014 New Revision: 269331 URL: http://svnweb.freebsd.org/changeset/base/269331 Log: Fix the attribute, we should now be using normal memory in pmap when backed by physical memory. While here add pmap_kenter_device to insert a page of device memory. Modified: projects/arm64/sys/arm64/arm64/pmap.c projects/arm64/sys/arm64/include/pmap.h Modified: projects/arm64/sys/arm64/arm64/pmap.c ============================================================================== --- projects/arm64/sys/arm64/arm64/pmap.c Thu Jul 31 13:00:42 2014 (r269330) +++ projects/arm64/sys/arm64/arm64/pmap.c Thu Jul 31 13:02:56 2014 (r269331) @@ -56,6 +56,13 @@ __FBSDID("$FreeBSD$"); #define PMAP_INLINE #endif +/* + * These are configured by the mair_el1 register. This is set up in locore.S + */ +#define DEVICE_MEMORY 0 +#define UNCACHED_MEMORY 1 +#define CACHED_MEMORY 2 + vm_offset_t virtual_avail; /* VA of first avail page (after kernel bss) */ vm_offset_t virtual_end; /* VA of last avail page (end of kernel AS) */ vm_offset_t kernel_vm_end = 0; @@ -168,7 +175,12 @@ pmap_bootstrap_dmap(vm_offset_t l1pt) pa += L1_SIZE, va += L1_SIZE, l1_slot++) { KASSERT(l1_slot < Ln_ENTRIES, ("Invalid L1 index")); - l1[l1_slot] = (pa & ~L1_OFFSET) | ATTR_AF | L1_BLOCK; + /* + * TODO: Turn the cache on here when we have cache + * flushing code. + */ + l1[l1_slot] = (pa & ~L1_OFFSET) | ATTR_AF | L1_BLOCK | + ATTR_IDX(UNCACHED_MEMORY); } } @@ -306,7 +318,12 @@ pmap_bootstrap(vm_offset_t l1pt, vm_padd ("Physical slot too small")); } - l2[l2_slot] = (pa & ~L2_OFFSET) | ATTR_AF | L2_BLOCK; + /* + * TODO: Turn the cache on here when we have cache + * flushing code. + */ + l2[l2_slot] = (pa & ~L2_OFFSET) | ATTR_AF | L2_BLOCK | + ATTR_IDX(UNCACHED_MEMORY); va += L2_SIZE; pa += L2_SIZE; @@ -472,7 +489,7 @@ pmap_extract_and_hold(pmap_t pmap, vm_of * This function may be used before pmap_bootstrap() is called. */ PMAP_INLINE void -pmap_kenter(vm_offset_t va, vm_paddr_t pa) +pmap_kenter_internal(vm_offset_t va, vm_paddr_t pa, int type) { pt_entry_t *l3; @@ -482,7 +499,24 @@ pmap_kenter(vm_offset_t va, vm_paddr_t p l3 = pmap_l3(kernel_pmap, va); KASSERT(l3 != NULL, ("Invalid page table")); - *l3 = (pa & ~L3_OFFSET) | ATTR_AF | L3_PAGE; + *l3 = (pa & ~L3_OFFSET) | ATTR_AF | L3_PAGE | ATTR_IDX(type); +} + +void +pmap_kenter(vm_offset_t va, vm_paddr_t pa) +{ + + /* + * TODO: Turn the cache on here when we have cache flushing code. + */ + pmap_kenter_internal(va, pa, UNCACHED_MEMORY); +} + +void +pmap_kenter_device(vm_offset_t va, vm_paddr_t pa) +{ + + pmap_kenter_internal(va, pa, DEVICE_MEMORY); } /* Modified: projects/arm64/sys/arm64/include/pmap.h ============================================================================== --- projects/arm64/sys/arm64/include/pmap.h Thu Jul 31 13:00:42 2014 (r269330) +++ projects/arm64/sys/arm64/include/pmap.h Thu Jul 31 13:02:56 2014 (r269331) @@ -121,7 +121,8 @@ extern vm_offset_t virtual_end; ((((va) | (pa)) & L1_OFFSET) == 0 && (size) >= L1_SIZE) void pmap_bootstrap(vm_offset_t, vm_paddr_t, vm_size_t); -void pmap_kenter(vm_offset_t va, vm_paddr_t pa); +void pmap_kenter(vm_offset_t, vm_paddr_t); +void pmap_kenter_device(vm_offset_t, vm_paddr_t); vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t); From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 14:47:27 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 94DE4680; Thu, 31 Jul 2014 14:47:27 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 68B89289D; Thu, 31 Jul 2014 14:47:27 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VElRvZ027046; Thu, 31 Jul 2014 14:47:27 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VElRCA027044; Thu, 31 Jul 2014 14:47:27 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311447.s6VElRCA027044@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 14:47:27 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269332 - in projects/arm64/sys: arm/arm conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 14:47:27 -0000 Author: andrew Date: Thu Jul 31 14:47:26 2014 New Revision: 269332 URL: http://svnweb.freebsd.org/changeset/base/269332 Log: Use arm/arm/devmap.c to get pmap_{un,}mapdev. As we don't yet need the rest of the code, for now, comment it out. Modified: projects/arm64/sys/arm/arm/devmap.c projects/arm64/sys/conf/files.arm64 Modified: projects/arm64/sys/arm/arm/devmap.c ============================================================================== --- projects/arm64/sys/arm/arm/devmap.c Thu Jul 31 13:02:56 2014 (r269331) +++ projects/arm64/sys/arm/arm/devmap.c Thu Jul 31 14:47:26 2014 (r269332) @@ -39,6 +39,8 @@ __FBSDID("$FreeBSD$"); #include #include #include + +#if 0 #include static const struct arm_devmap_entry *devmap_table; @@ -232,6 +234,7 @@ arm_devmap_vtop(void * vpva, vm_size_t s return (DEVMAP_PADDR_NOTFOUND); } +#endif /* * Map a set of physical memory pages into the kernel virtual address space. @@ -247,11 +250,13 @@ void * pmap_mapdev(vm_offset_t pa, vm_size_t size) { vm_offset_t va, tmpva, offset; +#if 0 void * rva; /* First look in the static mapping table. */ if ((rva = arm_devmap_ptov(pa, size)) != NULL) return (rva); +#endif offset = pa & PAGE_MASK; pa = trunc_page(pa); @@ -280,9 +285,11 @@ pmap_unmapdev(vm_offset_t va, vm_size_t vm_offset_t tmpva, offset; vm_size_t origsize; +#if 0 /* Nothing to do if we find the mapping in the static table. */ if (arm_devmap_vtop((void*)va, size) != DEVMAP_PADDR_NOTFOUND) return; +#endif origsize = size; offset = va & PAGE_MASK; @@ -298,6 +305,7 @@ pmap_unmapdev(vm_offset_t va, vm_size_t kva_free(va, origsize); } +#if 0 #ifdef DDB #include @@ -307,4 +315,5 @@ DB_SHOW_COMMAND(devmap, db_show_devmap) } #endif /* DDB */ +#endif Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Thu Jul 31 13:02:56 2014 (r269331) +++ projects/arm64/sys/conf/files.arm64 Thu Jul 31 14:47:26 2014 (r269332) @@ -1,4 +1,5 @@ +arm/arm/devmap.c standard arm64/arm64/autoconf.c standard arm64/arm64/bcopy.c standard arm64/arm64/bus_machdep.c standard From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 14:48:36 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 10F9178A; Thu, 31 Jul 2014 14:48:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id F380028AC; Thu, 31 Jul 2014 14:48:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VEmZso027241; Thu, 31 Jul 2014 14:48:35 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VEmZMS027240; Thu, 31 Jul 2014 14:48:35 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311448.s6VEmZMS027240@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 14:48:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269333 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 14:48:36 -0000 Author: andrew Date: Thu Jul 31 14:48:35 2014 New Revision: 269333 URL: http://svnweb.freebsd.org/changeset/base/269333 Log: Implement the map and unmap functions. Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c ============================================================================== --- projects/arm64/sys/arm64/arm64/bus_machdep.c Thu Jul 31 14:47:26 2014 (r269332) +++ projects/arm64/sys/arm64/arm64/bus_machdep.c Thu Jul 31 14:48:35 2014 (r269333) @@ -28,8 +28,36 @@ #include __FBSDID("$FreeBSD$"); +#include +#include + #include +static int +generic_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags, + bus_space_handle_t *bshp) +{ + void *va; + + va = pmap_mapdev(bpa, size); + if (va == NULL) + return (ENOMEM); + *bshp = (bus_space_handle_t)va; + return (0); +} + +static void +generic_bs_unmap(void *t, bus_space_handle_t bsh, bus_size_t size) +{ + + pmap_unmapdev(bsh, size); +} + struct bus_space memmap_bus = { + /* cookie */ .bs_cookie = NULL, + + /* mapping/unmapping */ + .bs_map = generic_bs_map, + .bs_unmap = generic_bs_unmap, }; From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 15:12:56 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BDF8174F; Thu, 31 Jul 2014 15:12:56 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id ABC9D2B6C; Thu, 31 Jul 2014 15:12:56 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VFCudx041972; Thu, 31 Jul 2014 15:12:56 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VFCuBi041971; Thu, 31 Jul 2014 15:12:56 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311512.s6VFCuBi041971@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 15:12:56 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269335 - projects/arm64/sys/arm64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 15:12:56 -0000 Author: andrew Date: Thu Jul 31 15:12:56 2014 New Revision: 269335 URL: http://svnweb.freebsd.org/changeset/base/269335 Log: Add pmap_{un,}mapdev to the required header. Modified: projects/arm64/sys/arm64/include/pmap.h Modified: projects/arm64/sys/arm64/include/pmap.h ============================================================================== --- projects/arm64/sys/arm64/include/pmap.h Thu Jul 31 14:53:07 2014 (r269334) +++ projects/arm64/sys/arm64/include/pmap.h Thu Jul 31 15:12:56 2014 (r269335) @@ -126,6 +126,9 @@ void pmap_kenter_device(vm_offset_t, vm_ vm_paddr_t pmap_kextract(vm_offset_t va); void pmap_kremove(vm_offset_t); +void *pmap_mapdev(vm_offset_t, vm_size_t); +void pmap_unmapdev(vm_offset_t, vm_size_t); + #endif /* _KERNEL */ #endif /* !LOCORE */ From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 15:15:47 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id DA9F2656; Thu, 31 Jul 2014 15:15:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id BB6692BAE; Thu, 31 Jul 2014 15:15:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VFFlsi044272; Thu, 31 Jul 2014 15:15:47 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VFFkFl044267; Thu, 31 Jul 2014 15:15:46 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311515.s6VFFkFl044267@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 15:15:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269336 - in projects/arm64/sys: arm64/arm64 arm64/include conf dev/fdt X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 15:15:47 -0000 Author: andrew Date: Thu Jul 31 15:15:46 2014 New Revision: 269336 URL: http://svnweb.freebsd.org/changeset/base/269336 Log: Add the start of support for FDT as it is likely it will be used for device enumeration on some SoCs. Added: projects/arm64/sys/arm64/include/fdt.h (contents, props changed) projects/arm64/sys/arm64/include/ofw_machdep.h (contents, props changed) projects/arm64/sys/dev/fdt/fdt_arm64.c (contents, props changed) Modified: projects/arm64/sys/arm64/arm64/nexus.c projects/arm64/sys/conf/files.arm64 Modified: projects/arm64/sys/arm64/arm64/nexus.c ============================================================================== --- projects/arm64/sys/arm64/arm64/nexus.c Thu Jul 31 15:12:56 2014 (r269335) +++ projects/arm64/sys/arm64/arm64/nexus.c Thu Jul 31 15:15:46 2014 (r269336) @@ -113,9 +113,11 @@ static device_method_t nexus_methods[] = DEVMETHOD(bus_deactivate_resource, nexus_deactivate_resource), DEVMETHOD(bus_setup_intr, nexus_setup_intr), DEVMETHOD(bus_teardown_intr, nexus_teardown_intr), +#if 0 #ifdef FDT DEVMETHOD(ofw_bus_map_intr, nexus_ofw_map_intr), #endif +#endif { 0, 0 } }; @@ -342,6 +344,7 @@ nexus_deactivate_resource(device_t bus, return (rman_deactivate_resource(r)); } +#if 0 #ifdef FDT static int nexus_ofw_map_intr(device_t dev, device_t child, phandle_t iparent, int icells, @@ -372,4 +375,5 @@ nexus_ofw_map_intr(device_t dev, device_ return (interrupt); } #endif - +#endif + Added: projects/arm64/sys/arm64/include/fdt.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm64/sys/arm64/include/fdt.h Thu Jul 31 15:15:46 2014 (r269336) @@ -0,0 +1,60 @@ +/*- + * Copyright (c) 2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MACHINE_FDT_H_ +#define _MACHINE_FDT_H_ + +#if 0 +#include + +#include +#include + +#include +#include + +/* Max interrupt number */ +#define FDT_INTR_MAX NIRQ + +/* Map phandle/intpin pair to global IRQ number */ +#define FDT_MAP_IRQ(node, pin) (pin) + +/* + * Bus space tag. XXX endianess info needs to be derived from the blob. + */ +extern bus_space_tag_t fdtbus_bs_tag; + +struct arm_devmap_entry; + +int fdt_localbus_devmap(phandle_t, struct arm_devmap_entry *, int, int *); +#endif + +#endif /* _MACHINE_FDT_H_ */ Added: projects/arm64/sys/arm64/include/ofw_machdep.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm64/sys/arm64/include/ofw_machdep.h Thu Jul 31 15:15:46 2014 (r269336) @@ -0,0 +1,44 @@ +/*- + * Copyright (c) 2009 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef _MACHINE_OFW_MACHDEP_H_ +#define _MACHINE_OFW_MACHDEP_H_ + +#include + +typedef uint32_t cell_t; + +struct mem_region { + vm_offset_t mr_start; + vm_size_t mr_size; +}; + +#endif /* _MACHINE_OFW_MACHDEP_H_ */ Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Thu Jul 31 15:12:56 2014 (r269335) +++ projects/arm64/sys/conf/files.arm64 Thu Jul 31 15:15:46 2014 (r269336) @@ -24,6 +24,7 @@ arm64/arm64/sys_machdep.c standard arm64/arm64/trap.c standard arm64/arm64/uio_machdep.c standard arm64/arm64/vm_machdep.c standard +dev/fdt/fdt_arm64.c optional fdt kern/kern_clocksource.c standard kern/subr_dummy_vdso_tc.c standard libkern/bcmp.c standard Added: projects/arm64/sys/dev/fdt/fdt_arm64.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm64/sys/dev/fdt/fdt_arm64.c Thu Jul 31 15:15:46 2014 (r269336) @@ -0,0 +1,49 @@ +/*- + * Copyright (c) 2009-2010 The FreeBSD Foundation + * All rights reserved. + * + * This software was developed by Semihalf under sponsorship from + * the FreeBSD Foundation. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ofw_bus_if.h" +#include "fdt_common.h" + +struct fdt_fixup_entry fdt_fixup_table[] = { + { NULL, NULL } +}; + From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 15:17:36 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 4A3F5752; Thu, 31 Jul 2014 15:17:36 +0000 (UTC) Received: from i3mail.icecube.wisc.edu (i3mail.icecube.wisc.edu [128.104.255.23]) by mx1.freebsd.org (Postfix) with ESMTP id 1EE7F2BB9; Thu, 31 Jul 2014 15:17:35 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by i3mail.icecube.wisc.edu (Postfix) with ESMTP id 6F1FC38079; Thu, 31 Jul 2014 10:17:29 -0500 (CDT) X-Virus-Scanned: amavisd-new at icecube.wisc.edu Received: from i3mail.icecube.wisc.edu ([127.0.0.1]) by localhost (i3mail.icecube.wisc.edu [127.0.0.1]) (amavisd-new, port 10030) with ESMTP id DnbYYxDisWNe; Thu, 31 Jul 2014 10:17:29 -0500 (CDT) Received: from comporellon.tachypleus.net (polaris.tachypleus.net [75.101.50.44]) by i3mail.icecube.wisc.edu (Postfix) with ESMTPSA id 0957538075; Thu, 31 Jul 2014 10:17:28 -0500 (CDT) Message-ID: <53DA5E08.5020506@freebsd.org> Date: Thu, 31 Jul 2014 08:17:28 -0700 From: Nathan Whitehorn User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: Andrew Turner , src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: Re: svn commit: r269336 - in projects/arm64/sys: arm64/arm64 arm64/include conf dev/fdt References: <201407311515.s6VFFkFl044267@svn.freebsd.org> In-Reply-To: <201407311515.s6VFFkFl044267@svn.freebsd.org> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 15:17:36 -0000 On 07/31/14 08:15, Andrew Turner wrote: > Author: andrew > Date: Thu Jul 31 15:15:46 2014 > New Revision: 269336 > URL: http://svnweb.freebsd.org/changeset/base/269336 > > Log: > Add the start of support for FDT as it is likely it will be used for > device enumeration on some SoCs. > > Added: > projects/arm64/sys/arm64/include/fdt.h (contents, props changed) > projects/arm64/sys/arm64/include/ofw_machdep.h (contents, props changed) > projects/arm64/sys/dev/fdt/fdt_arm64.c (contents, props changed) > Modified: > projects/arm64/sys/arm64/arm64/nexus.c > projects/arm64/sys/conf/files.arm64 > There's no particular reason you need a machine/fdt.h, by the way. Assuming you plan to unify the headers later with ARM, it might be good to use the same conventions, but it's an ARM-specific thing, not a general FDT thing. -Nathan From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 18:54:41 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 489A8524; Thu, 31 Jul 2014 18:54:41 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 36B8C2859; Thu, 31 Jul 2014 18:54:41 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VIsfsB049109; Thu, 31 Jul 2014 18:54:41 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VIsfDC049108; Thu, 31 Jul 2014 18:54:41 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407311854.s6VIsfDC049108@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 18:54:41 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269346 - projects/arm64/sys/boot/efi/libefi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 18:54:41 -0000 Author: andrew Date: Thu Jul 31 18:54:40 2014 New Revision: 269346 URL: http://svnweb.freebsd.org/changeset/base/269346 Log: Work around a bug with the Semihosting FS driver where it returns EFI_ABORTED there is no data to read. Modified: projects/arm64/sys/boot/efi/libefi/efisimplefs.c Modified: projects/arm64/sys/boot/efi/libefi/efisimplefs.c ============================================================================== --- projects/arm64/sys/boot/efi/libefi/efisimplefs.c Thu Jul 31 18:02:38 2014 (r269345) +++ projects/arm64/sys/boot/efi/libefi/efisimplefs.c Thu Jul 31 18:54:40 2014 (r269346) @@ -38,6 +38,8 @@ __FBSDID("$FreeBSD$"); #include #include +#define SEMIHOSTING_HACKS + static EFI_GUID sfs_guid = SIMPLE_FILE_SYSTEM_PROTOCOL; static EFI_GUID file_info_guid = EFI_FILE_INFO_ID; @@ -145,6 +147,16 @@ efifs_read(struct open_file *f, void *bu read_size = size; status = file->Read(file, &read_size, buf); +#ifdef SEMIHOSTING_HACKS + if (status == EFI_ABORTED) { + /* + * Semihosting incorrectly returns EFI_ABORTED on EOF + * with nothing to read. + */ + *resid = size; + return (0); + } +#endif if (EFI_ERROR(status)) return (efi_status_to_errno(status)); From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 20:08:21 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2AE60508; Thu, 31 Jul 2014 20:08:21 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 0CB722125; Thu, 31 Jul 2014 20:08:21 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VK8LFV083972; Thu, 31 Jul 2014 20:08:21 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VK8J9R083960; Thu, 31 Jul 2014 20:08:19 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201407312008.s6VK8J9R083960@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Thu, 31 Jul 2014 20:08:19 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269348 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 20:08:21 -0000 Author: melifaro Date: Thu Jul 31 20:08:19 2014 New Revision: 269348 URL: http://svnweb.freebsd.org/changeset/base/269348 Log: * Add new "flow" table type to support N=1..5-tuple lookups * Add "flow:hash" algorithm Kernel changes: * Add O_IP_FLOW_LOOKUP opcode to support "flow" lookups * Add IPFW_TABLE_FLOW table type * Add "struct tflow_entry" as strage for 6-tuple flows * Add "flow:hash" algorithm. Basically it is auto-growing chained hash table. Additionally, we store mask of fields we need to compare in each instance/ * Increase ipfw_obj_tentry size by adding struct tflow_entry * Add per-algorithm stat (ifpw_ta_tinfo) to ipfw_xtable_info * Increase algoname length: 32 -> 64 (algo options passed there as string) * Assume every table type can be customized by flags, use u8 to store "tflags" field. * Simplify ipfw_find_table_entry() by providing @tentry directly to algo callback. * Fix bug in cidr:chash resize procedure. Userland changes: * add "flow table(NAME)" syntax to support n-tuple checking tables. * make fill_flags() separate function to ease working with _s_x arrays * change "table info" output to reflect longer "type" fields Syntax: ipfw table fl2 create type flow:[src-ip][,proto][,src-port][,dst-ip][dst-port] [algo flow:hash] Examples: 0:02 [2] zfscurr0# ipfw table fl2 create type flow:src-ip,proto,dst-port algo flow:hash 0:02 [2] zfscurr0# ipfw table fl2 info +++ table(fl2), set(0) +++ kindex: 0, type: flow:src-ip,proto,dst-port valtype: number, references: 0 algorithm: flow:hash items: 0, size: 280 0:02 [2] zfscurr0# ipfw table fl2 add 2a02:6b8::333,tcp,443 45000 0:02 [2] zfscurr0# ipfw table fl2 add 10.0.0.92,tcp,80 22000 0:02 [2] zfscurr0# ipfw table fl2 list +++ table(fl2), set(0) +++ 2a02:6b8::333,6,443 45000 10.0.0.92,6,80 22000 0:02 [2] zfscurr0# ipfw add 200 count tcp from me to 78.46.89.105 80 flow 'table(fl2)' 00200 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) 0:03 [2] zfscurr0# ipfw show 00200 0 0 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) 65535 617 59416 allow ip from any to any 0:03 [2] zfscurr0# telnet -s 10.0.0.92 78.46.89.105 80 Trying 78.46.89.105... .. 0:04 [2] zfscurr0# ipfw show 00200 5 272 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) 65535 682 66733 allow ip from any to any Modified: projects/ipfw/sbin/ipfw/ipfw2.c projects/ipfw/sbin/ipfw/ipfw2.h projects/ipfw/sbin/ipfw/tables.c projects/ipfw/sys/netinet/ip_fw.h projects/ipfw/sys/netpfil/ipfw/ip_fw2.c projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sbin/ipfw/ipfw2.c ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.c Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sbin/ipfw/ipfw2.c Thu Jul 31 20:08:19 2014 (r269348) @@ -364,6 +364,7 @@ static struct _s_x rule_options[] = { { "src-ipv6", TOK_SRCIP6}, { "src-ip6", TOK_SRCIP6}, { "lookup", TOK_LOOKUP}, + { "flow", TOK_FLOW}, { "//", TOK_COMMENT }, { "not", TOK_NOT }, /* pseudo option */ @@ -707,6 +708,54 @@ concat_tokens(char *buf, size_t bufsize, } /* + * helper function to process a set of flags and set bits in the + * appropriate masks. + */ +void +fill_flags(struct _s_x *flags, char *p, uint8_t *set, uint8_t *clear) +{ + char *q; /* points to the separator */ + int val; + uint8_t *which; /* mask we are working on */ + + while (p && *p) { + if (*p == '!') { + p++; + which = clear; + } else + which = set; + q = strchr(p, ','); + if (q) + *q++ = '\0'; + val = match_token(flags, p); + if (val <= 0) + errx(EX_DATAERR, "invalid flag %s", p); + *which |= (uint8_t)val; + p = q; + } +} + +void +print_flags_buffer(char *buf, size_t sz, struct _s_x *list, uint8_t set) +{ + char const *comma = ""; + int i, l; + + for (i = 0; list[i].x != 0; i++) { + if ((set & list[i].x) == 0) + continue; + + set &= ~list[i].x; + l = snprintf(buf, sz, "%s%s", comma, list[i].s); + if (l >= sz) + return; + comma = ","; + buf += l; + sz -=l; + } +} + +/* * _substrcmp takes two strings and returns 1 if they do not match, * and 0 if they match exactly or the first string is a sub-string * of the second. A warning is printed to stderr in the case that the @@ -1087,6 +1136,7 @@ print_flags(char const *name, ipfw_insn } } + /* * Print the ip address contained in a command. */ @@ -1795,6 +1845,18 @@ show_static_rule(struct cmdline_opts *co break; } + case O_IP_FLOW_LOOKUP: + { + char *t; + + t = table_search_ctlv(fo->tstate, cmd->arg1); + printf(" flow table(%s", t); + if (F_LEN(cmd) == F_INSN_SIZE(ipfw_insn_u32)) + printf(",%u", + ((ipfw_insn_u32 *)cmd)->d[0]); + printf(")"); + break; + } case O_IPID: if (F_LEN(cmd) == 1) printf(" ipid %u", cmd->arg1 ); @@ -2660,6 +2722,33 @@ pack_table(struct tidx *tstate, char *na return (ntlv->idx); } +static void +fill_table(ipfw_insn *cmd, char *av, uint8_t opcode, struct tidx *tstate) +{ + uint32_t *d = ((ipfw_insn_u32 *)cmd)->d; + uint16_t uidx; + char *p; + + if ((p = strchr(av + 6, ')')) == NULL) + errx(EX_DATAERR, "forgotten parenthesis: '%s'", av); + *p = '\0'; + p = strchr(av + 6, ','); + if (p) + *p++ = '\0'; + + if ((uidx = pack_table(tstate, av + 6, 0)) == 0) + errx(EX_DATAERR, "Invalid table name: %s", av + 6); + + cmd->opcode = opcode; + cmd->arg1 = uidx; + if (p) { + cmd->len |= F_INSN_SIZE(ipfw_insn_u32); + d[0] = strtoul(p, NULL, 0); + } else + cmd->len |= F_INSN_SIZE(ipfw_insn); +} + + /* * fills the addr and mask fields in the instruction as appropriate from av. * Update length as appropriate. @@ -2676,8 +2765,6 @@ fill_ip(ipfw_insn_ip *cmd, char *av, int { int len = 0; uint32_t *d = ((ipfw_insn_u32 *)cmd)->d; - uint16_t uidx; - char *p; cmd->o.len &= ~F_LEN_MASK; /* zero len */ @@ -2690,23 +2777,7 @@ fill_ip(ipfw_insn_ip *cmd, char *av, int } if (strncmp(av, "table(", 6) == 0) { - if ((p = strchr(av + 6, ')')) == NULL) - errx(EX_DATAERR, "forgotten parenthesis: '%s'", av); - *p = '\0'; - p = strchr(av + 6, ','); - if (p) - *p++ = '\0'; - - if ((uidx = pack_table(tstate, av + 6, 0)) == 0) - errx(EX_DATAERR, "Invalid table name: %s", av + 6); - - cmd->o.opcode = O_IP_DST_LOOKUP; - cmd->o.arg1 = uidx; - if (p) { - cmd->o.len |= F_INSN_SIZE(ipfw_insn_u32); - d[0] = strtoul(p, NULL, 0); - } else - cmd->o.len |= F_INSN_SIZE(ipfw_insn); + fill_table(&cmd->o, av, O_IP_DST_LOOKUP, tstate); return; } @@ -2887,35 +2958,14 @@ n2mask(struct in6_addr *mask, int n) return; } -/* - * helper function to process a set of flags and set bits in the - * appropriate masks. - */ static void -fill_flags(ipfw_insn *cmd, enum ipfw_opcodes opcode, +fill_flags_cmd(ipfw_insn *cmd, enum ipfw_opcodes opcode, struct _s_x *flags, char *p) { - uint8_t set=0, clear=0; + uint8_t set = 0, clear = 0; - while (p && *p) { - char *q; /* points to the separator */ - int val; - uint8_t *which; /* mask we are working on */ + fill_flags(flags, p, &set, &clear); - if (*p == '!') { - p++; - which = &clear; - } else - which = &set; - q = strchr(p, ','); - if (q) - *q++ = '\0'; - val = match_token(flags, p); - if (val <= 0) - errx(EX_DATAERR, "invalid flag %s", p); - *which |= (uint8_t)val; - p = q; - } cmd->opcode = opcode; cmd->len = (cmd->len & (F_NOT | F_OR)) | 1; cmd->arg1 = (set & 0xff) | ( (clear & 0xff) << 8); @@ -4087,13 +4137,13 @@ read_options: case TOK_IPOPTS: NEED1("missing argument for ipoptions"); - fill_flags(cmd, O_IPOPT, f_ipopts, *av); + fill_flags_cmd(cmd, O_IPOPT, f_ipopts, *av); av++; break; case TOK_IPTOS: NEED1("missing argument for iptos"); - fill_flags(cmd, O_IPTOS, f_iptos, *av); + fill_flags_cmd(cmd, O_IPTOS, f_iptos, *av); av++; break; @@ -4171,7 +4221,7 @@ read_options: case TOK_TCPOPTS: NEED1("missing argument for tcpoptions"); - fill_flags(cmd, O_TCPOPTS, f_tcpopts, *av); + fill_flags_cmd(cmd, O_TCPOPTS, f_tcpopts, *av); av++; break; @@ -4198,7 +4248,7 @@ read_options: case TOK_TCPFLAGS: NEED1("missing argument for tcpflags"); cmd->opcode = O_TCPFLAGS; - fill_flags(cmd, O_TCPFLAGS, f_tcpflags, *av); + fill_flags_cmd(cmd, O_TCPFLAGS, f_tcpflags, *av); av++; break; @@ -4407,6 +4457,14 @@ read_options: av++; } break; + case TOK_FLOW: + NEED1("missing table name"); + if (strncmp(*av, "table(", 6) != 0) + errx(EX_DATAERR, + "enclose table name into \"table()\""); + fill_table(cmd, *av, O_IP_FLOW_LOOKUP, tstate); + av++; + break; default: errx(EX_USAGE, "unrecognised option [%d] %s\n", i, s); Modified: projects/ipfw/sbin/ipfw/ipfw2.h ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.h Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sbin/ipfw/ipfw2.h Thu Jul 31 20:08:19 2014 (r269348) @@ -217,6 +217,7 @@ enum tokens { TOK_DEL, TOK_VALTYPE, TOK_ALGO, + TOK_FLOW, }; /* * the following macro returns an error message if we run out of @@ -253,6 +254,10 @@ int match_token(struct _s_x *table, char char const *match_value(struct _s_x *p, int value); size_t concat_tokens(char *buf, size_t bufsize, struct _s_x *table, char *delimiter); +void fill_flags(struct _s_x *flags, char *p, uint8_t *set, uint8_t *clear); +void print_flags(char const *name, struct _s_x *list, uint8_t set, + uint8_t clear); +void print_flags_buffer(char *buf, size_t sz, struct _s_x *list, uint8_t set); struct _ip_fw3_opheader; int do_cmd(int optname, void *optval, uintptr_t optlen); Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sbin/ipfw/tables.c Thu Jul 31 20:08:19 2014 (r269348) @@ -83,6 +83,7 @@ static struct _s_x tabletypes[] = { { "cidr", IPFW_TABLE_CIDR }, { "iface", IPFW_TABLE_INTERFACE }, { "number", IPFW_TABLE_NUMBER }, + { "flow", IPFW_TABLE_FLOW }, { NULL, 0 } }; @@ -256,6 +257,59 @@ static struct _s_x tablenewcmds[] = { { NULL, 0 } }; +static struct _s_x flowtypecmds[] = { + { "src-ip", IPFW_TFFLAG_SRCIP }, + { "proto", IPFW_TFFLAG_PROTO }, + { "src-port", IPFW_TFFLAG_SRCPORT }, + { "dst-ip", IPFW_TFFLAG_DSTIP }, + { "dst-port", IPFW_TFFLAG_DSTPORT }, + { NULL, 0 } +}; + +int +table_parse_type(uint8_t ttype, char *p, uint8_t *tflags) +{ + uint8_t fset, fclear; + + /* Parse type options */ + switch(ttype) { + case IPFW_TABLE_FLOW: + fset = fclear = 0; + fill_flags(flowtypecmds, p, &fset, + &fclear); + *tflags = fset; + break; + default: + return (EX_USAGE); + } + + return (0); +} + +void +table_print_type(char *tbuf, size_t size, uint8_t type, uint8_t tflags) +{ + const char *tname; + int l; + + if ((tname = match_value(tabletypes, type)) == NULL) + tname = "unknown"; + + l = snprintf(tbuf, size, "%s", tname); + tbuf += l; + size -= l; + + switch(type) { + case IPFW_TABLE_FLOW: + if (tflags != 0) { + *tbuf++ = ':'; + l--; + print_flags_buffer(tbuf, size, flowtypecmds, tflags); + } + break; + } +} + /* * Creates new table * @@ -271,6 +325,7 @@ table_create(ipfw_obj_header *oh, int ac ipfw_xtable_info xi; int error, tcmd, val; size_t sz; + char *p; char tbuf[128]; sz = sizeof(tbuf); @@ -288,15 +343,25 @@ table_create(ipfw_obj_header *oh, int ac switch (tcmd) { case TOK_TYPE: NEED1("table type required"); + /* Type may have suboptions after ':' */ + if ((p = strchr(*av, ':')) != NULL) + *p++ = '\0'; val = match_token(tabletypes, *av); - if (val != -1) { - xi.type = val; - ac--; av++; - break; + if (val == -1) { + concat_tokens(tbuf, sizeof(tbuf), tabletypes, + ", "); + errx(EX_USAGE, + "Unknown tabletype: %s. Supported: %s", + *av, tbuf); } - concat_tokens(tbuf, sizeof(tbuf), tabletypes, ", "); - errx(EX_USAGE, "Unknown tabletype: %s. Supported: %s", - *av, tbuf); + xi.type = val; + if (p != NULL) { + error = table_parse_type(val, p, &xi.tflags); + if (error != 0) + errx(EX_USAGE, + "Unsupported suboptions: %s", p); + } + ac--; av++; break; case TOK_VALTYPE: NEED1("table value type required"); @@ -408,15 +473,15 @@ table_get_info(ipfw_obj_header *oh, ipfw static int table_show_info(ipfw_xtable_info *i, void *arg) { - const char *ttype, *vtype; + const char *vtype; + char ttype[64]; - printf("--- table(%s), set(%u) ---\n", i->tablename, i->set); - if ((ttype = match_value(tabletypes, i->type)) == NULL) - ttype = "unknown"; + table_print_type(ttype, sizeof(ttype), i->type, i->tflags); if ((vtype = match_value(tablevaltypes, i->vtype)) == NULL) vtype = "unknown"; - printf(" type: %s, kindex: %d\n", ttype, i->kidx); + printf("--- table(%s), set(%u) ---\n", i->tablename, i->set); + printf(" kindex: %d, type: %s\n", i->kidx, ttype); printf(" valtype: %s, references: %u\n", vtype, i->refcnt); printf(" algorithm: %s\n", i->algoname); printf(" items: %u, size: %u\n", i->count, i->size); @@ -575,12 +640,15 @@ table_lookup(ipfw_obj_header *oh, int ac { ipfw_obj_tentry xtent; ipfw_xtable_info xi; + char key[64]; int error; if (ac == 0) errx(EX_USAGE, "address required"); - error = table_do_lookup(oh, *av, &xi, &xtent); + strlcpy(key, *av, sizeof(key)); + + error = table_do_lookup(oh, key, &xi, &xtent); switch (error) { case 0: @@ -600,12 +668,17 @@ table_lookup(ipfw_obj_header *oh, int ac } static void -tentry_fill_key_type(char *arg, ipfw_obj_tentry *tentry, uint8_t type) +tentry_fill_key_type(char *arg, ipfw_obj_tentry *tentry, uint8_t type, + uint8_t tflags) { - char *p; + char *p, *pp; int mask, af; - struct in6_addr *paddr; + struct in6_addr *paddr, tmp; + struct tflow_entry *tfe; uint32_t key, *pkey; + uint16_t port; + struct protoent *pent; + struct servent *sent; int masklen; masklen = 0; @@ -664,6 +737,117 @@ tentry_fill_key_type(char *arg, ipfw_obj *pkey = key; masklen = 32; break; + case IPFW_TABLE_FLOW: + /* Assume [src-ip][,proto][,src-port][,dst-ip][,dst-port] */ + tfe = &tentry->k.flow; + af = 0; + + /* Handle */ + if ((tflags & IPFW_TFFLAG_SRCIP) != 0) { + if ((p = strchr(arg, ',')) != NULL) + *p++ = '\0'; + /* Determine family using temporary storage */ + if (inet_pton(AF_INET, arg, &tmp) == 1) { + if (af != 0 && af != AF_INET) + errx(EX_DATAERR, + "Inconsistent address family\n"); + af = AF_INET; + memcpy(&tfe->a.a4.sip, &tmp, 4); + } else if (inet_pton(AF_INET6, arg, &tmp) == 1) { + if (af != 0 && af != AF_INET6) + errx(EX_DATAERR, + "Inconsistent address family\n"); + af = AF_INET6; + memcpy(&tfe->a.a6.sip6, &tmp, 16); + } + + arg = p; + } + + /* Handle */ + if ((tflags & IPFW_TFFLAG_PROTO) != 0) { + if ((p = strchr(arg, ',')) != NULL) + *p++ = '\0'; + + key = strtol(arg, &pp, 10); + if (*pp != '\0') { + if ((pent = getprotobyname(arg)) == NULL) + errx(EX_DATAERR, "Unknown proto: %s", + arg); + else + key = pent->p_proto; + } + + if (key > 255) + errx(EX_DATAERR, "Bad protocol number: %u",key); + + tfe->proto = key; + + arg = p; + } + + /* Handle */ + if ((tflags & IPFW_TFFLAG_SRCPORT) != 0) { + if ((p = strchr(arg, ',')) != NULL) + *p++ = '\0'; + + if ((port = htons(strtol(arg, NULL, 10))) == 0) { + if ((sent = getservbyname(arg, NULL)) == NULL) + errx(EX_DATAERR, "Unknown service: %s", + arg); + else + key = sent->s_port; + } + + tfe->sport = port; + + arg = p; + } + + /* Handle */ + if ((tflags & IPFW_TFFLAG_DSTIP) != 0) { + if ((p = strchr(arg, ',')) != NULL) + *p++ = '\0'; + /* Determine family using temporary storage */ + if (inet_pton(AF_INET, arg, &tmp) == 1) { + if (af != 0 && af != AF_INET) + errx(EX_DATAERR, + "Inconsistent address family"); + af = AF_INET; + memcpy(&tfe->a.a4.dip, &tmp, 4); + } else if (inet_pton(AF_INET6, arg, &tmp) == 1) { + if (af != 0 && af != AF_INET6) + errx(EX_DATAERR, + "Inconsistent address family"); + af = AF_INET6; + memcpy(&tfe->a.a6.dip6, &tmp, 16); + } + + arg = p; + } + + /* Handle */ + if ((tflags & IPFW_TFFLAG_DSTPORT) != 0) { + if ((p = strchr(arg, ',')) != NULL) + *p++ = '\0'; + + if ((port = htons(strtol(arg, NULL, 10))) == 0) { + if ((sent = getservbyname(arg, NULL)) == NULL) + errx(EX_DATAERR, "Unknown service: %s", + arg); + else + key = sent->s_port; + } + + tfe->dport = port; + + arg = p; + } + + tfe->af = af; + + break; + default: errx(EX_DATAERR, "Unsupported table type: %d", type); } @@ -676,11 +860,12 @@ static void tentry_fill_key(ipfw_obj_header *oh, ipfw_obj_tentry *tent, char *key, uint8_t *ptype, uint8_t *pvtype, ipfw_xtable_info *xi) { - uint8_t type, vtype; + uint8_t type, tflags, vtype; int error; char *del; type = 0; + tflags = 0; vtype = 0; error = table_get_info(oh, xi); @@ -688,6 +873,7 @@ tentry_fill_key(ipfw_obj_header *oh, ipf if (error == 0) { /* Table found. */ type = xi->type; + tflags = xi->tflags; vtype = xi->vtype; } else { if (error != ESRCH) @@ -718,7 +904,7 @@ tentry_fill_key(ipfw_obj_header *oh, ipf *del = '/'; } - tentry_fill_key_type(key, tent, type); + tentry_fill_key_type(key, tent, type, tflags); *ptype = type; *pvtype = vtype; @@ -874,41 +1060,75 @@ table_show_list(ipfw_obj_header *oh, int static void table_show_entry(ipfw_xtable_info *i, ipfw_obj_tentry *tent) { - char tbuf[128]; + char *comma, tbuf[128], pval[32]; + void *paddr; uint32_t tval; + struct tflow_entry *tfe; tval = tent->value; + if (co.do_value_as_ip) { + tval = htonl(tval); + inet_ntop(AF_INET, &tval, pval, sizeof(pval)); + } else + snprintf(pval, sizeof(pval), "%u", tval); + switch (i->type) { case IPFW_TABLE_CIDR: /* IPv4 or IPv6 prefixes */ inet_ntop(tent->subtype, &tent->k, tbuf, sizeof(tbuf)); - - if (co.do_value_as_ip) { - tval = htonl(tval); - printf("%s/%u %s\n", tbuf, tent->masklen, - inet_ntoa(*(struct in_addr *)&tval)); - } else - printf("%s/%u %u\n", tbuf, tent->masklen, tval); + printf("%s/%u %s\n", tbuf, tent->masklen, pval); break; case IPFW_TABLE_INTERFACE: /* Interface names */ - if (co.do_value_as_ip) { - tval = htonl(tval); - printf("%s %s\n", tent->k.iface, - inet_ntoa(*(struct in_addr *)&tval)); - } else - printf("%s %u\n", tent->k.iface, tval); + printf("%s %s\n", tent->k.iface, pval); break; case IPFW_TABLE_NUMBER: /* numbers */ - if (co.do_value_as_ip) { - tval = htonl(tval); - printf("%u %s\n", tent->k.key, - inet_ntoa(*(struct in_addr *)&tval)); - } else - printf("%u %u\n", tent->k.key, tval); + printf("%u %s\n", tent->k.key, pval); break; + case IPFW_TABLE_FLOW: + /* flows */ + tfe = &tent->k.flow; + comma = ""; + + if ((i->tflags & IPFW_TFFLAG_SRCIP) != 0) { + if (tfe->af == AF_INET) + paddr = &tfe->a.a4.sip; + else + paddr = &tfe->a.a6.sip6; + + inet_ntop(tfe->af, paddr, tbuf, sizeof(tbuf)); + printf("%s%s", comma, tbuf); + comma = ","; + } + + if ((i->tflags & IPFW_TFFLAG_PROTO) != 0) { + printf("%s%d", comma, tfe->proto); + comma = ","; + } + + if ((i->tflags & IPFW_TFFLAG_SRCPORT) != 0) { + printf("%s%d", comma, ntohs(tfe->sport)); + comma = ","; + } + if ((i->tflags & IPFW_TFFLAG_DSTIP) != 0) { + if (tfe->af == AF_INET) + paddr = &tfe->a.a4.dip; + else + paddr = &tfe->a.a6.dip6; + + inet_ntop(tfe->af, paddr, tbuf, sizeof(tbuf)); + printf("%s%s", comma, tbuf); + comma = ","; + } + + if ((i->tflags & IPFW_TFFLAG_DSTPORT) != 0) { + printf("%s%d", comma, ntohs(tfe->dport)); + comma = ","; + } + + printf(" %s\n", pval); } } Modified: projects/ipfw/sys/netinet/ip_fw.h ============================================================================== --- projects/ipfw/sys/netinet/ip_fw.h Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sys/netinet/ip_fw.h Thu Jul 31 20:08:19 2014 (r269348) @@ -262,6 +262,7 @@ enum ipfw_opcodes { /* arguments (4 byt O_DSCP, /* 2 u32 = DSCP mask */ O_SETDSCP, /* arg1=DSCP value */ + O_IP_FLOW_LOOKUP, /* arg1=table number, u32=value */ O_LAST_OPCODE /* not an opcode! */ }; @@ -675,7 +676,8 @@ struct _ipfw_dyn_rule { #define IPFW_TABLE_CIDR 1 /* Table for holding IPv4/IPv6 prefixes */ #define IPFW_TABLE_INTERFACE 2 /* Table for holding interface names */ #define IPFW_TABLE_NUMBER 3 /* Table for holding ports/uid/gid/etc */ -#define IPFW_TABLE_MAXTYPE 3 /* Maximum valid number */ +#define IPFW_TABLE_FLOW 4 /* Table for holding flow data */ +#define IPFW_TABLE_MAXTYPE 4 /* Maximum valid number */ #define IPFW_VTYPE_U32 1 /* Skipto/tablearg integer */ #define IPFW_VTYPE_IP 2 /* Nexthop IP address */ @@ -743,6 +745,25 @@ typedef struct _ipfw_obj_ntlv { char name[64]; /* Null-terminated name */ } ipfw_obj_ntlv; +/* IPv4/IPv6 L4 flow description */ +struct tflow_entry { + uint8_t af; + uint8_t proto; + uint16_t spare; + uint16_t sport; + uint16_t dport; + union { + struct { + struct in_addr sip; + struct in_addr dip; + } a4; + struct { + struct in6_addr sip6; + struct in6_addr dip6; + } a6; + } a; +}; + /* Table entry TLV */ typedef struct _ipfw_obj_tentry { ipfw_obj_tlv head; /* TLV header */ @@ -753,10 +774,11 @@ typedef struct _ipfw_obj_tentry { uint64_t spare; union { /* Longest field needs to be aligned by 8-byte boundary */ - struct in_addr addr; /* IPv4 address */ - uint32_t key; /* uid/gid/port */ - struct in6_addr addr6; /* IPv6 address */ + struct in_addr addr; /* IPv4 address */ + uint32_t key; /* uid/gid/port */ + struct in6_addr addr6; /* IPv6 address */ char iface[IF_NAMESIZE]; /* interface name */ + struct tflow_entry flow; } k; } ipfw_obj_tentry; #define IPFW_TF_UPDATE 0x01 /* Update record if exists */ @@ -776,19 +798,44 @@ typedef struct _ipfw_obj_ctlv { uint8_t spare; } ipfw_obj_ctlv; +typedef struct _ifpw_ta_tinfo { + uint32_t flags; /* Format flags */ + uint8_t taclass; /* algorithm class */ + uint8_t spare0; + uint16_t spare1; + uint32_t rssize4; /* runtime structure size */ + uint32_t rcount4; /* number of items in runtime */ + uint32_t rsize4; /* item size in runtime */ + uint32_t rssize6; /* runtime structure size */ + uint32_t rcount6; /* number of items in runtime */ + uint32_t rsize6; /* item size in runtime */ +} ifpw_ta_tinfo; +#define IPFW_TACLASS_HASH 1 /* algo is based on hash */ +#define IPFW_TACLASS_ARRAY 2 /* algo is based on array */ +#define IPFW_TACLASS_RADIX 3 /* algo is based on radix tree */ + +#define IPFW_TATFLAGS_DATA 0x0001 /* Has data filled in */ +#define IPFW_TATFLAGS_AF 0x0002 /* Separate data per AF */ + typedef struct _ipfw_xtable_info { uint8_t type; /* table type (cidr,iface,..) */ + uint8_t tflags; /* type flags */ uint8_t ftype; /* table value format type */ uint8_t vtype; /* value type */ - uint16_t spare0; uint32_t set; /* set table is in */ uint32_t kidx; /* kernel index */ uint32_t refcnt; /* number of references */ uint32_t count; /* Number of records */ - uint32_t size; /* Total size of records */ + uint32_t size; /* Total size of records(export)*/ char tablename[64]; /* table name */ - char algoname[32]; /* algorithm name */ + char algoname[64]; /* algorithm name */ + ifpw_ta_tinfo ta_info; /* additional algo stats */ } ipfw_xtable_info; +#define IPFW_TFFLAG_SRCIP 0x01 +#define IPFW_TFFLAG_DSTIP 0x02 +#define IPFW_TFFLAG_SRCPORT 0x04 +#define IPFW_TFFLAG_DSTPORT 0x08 +#define IPFW_TFFLAG_PROTO 0x10 typedef struct _ipfw_iface_info { char ifname[64]; /* interface name */ @@ -801,7 +848,7 @@ typedef struct _ipfw_iface_info { #define IPFW_IFFLAG_RESOLVED 0x01 /* Interface exists */ typedef struct _ipfw_ta_info { - char algoname[32]; /* algorithm name */ + char algoname[64]; /* algorithm name */ uint32_t type; /* lookup type */ uint32_t flags; uint32_t refcnt; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw2.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw2.c Thu Jul 31 20:08:19 2014 (r269348) @@ -1522,6 +1522,17 @@ do { \ } break; + case O_IP_FLOW_LOOKUP: + { + uint32_t v = 0; + match = ipfw_lookup_table_extended(chain, + cmd->arg1, 0, &args->f_id, &v); + if (cmdlen == F_INSN_SIZE(ipfw_insn_u32)) + match = ((ipfw_insn_u32 *)cmd)->d[0] == v; + if (match) + tablearg = v; + } + break; case O_IP_SRC_MASK: case O_IP_DST_MASK: if (is_ipv4) { Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Thu Jul 31 20:08:19 2014 (r269348) @@ -1011,6 +1011,17 @@ check_ipfw_rule_body(ipfw_insn *cmd, int goto bad_size; ci->table_opcodes++; break; + case O_IP_FLOW_LOOKUP: + if (cmd->arg1 >= V_fw_tables_max) { + printf("ipfw: invalid table number %d\n", + cmd->arg1); + return (EINVAL); + } + if (cmdlen != F_INSN_SIZE(ipfw_insn) && + cmdlen != F_INSN_SIZE(ipfw_insn_u32)) + goto bad_size; + ci->table_opcodes++; + break; case O_MACADDR2: if (cmdlen != F_INSN_SIZE(ipfw_insn_mac)) goto bad_size; @@ -1726,7 +1737,7 @@ ipfw_ctl3(struct sockopt *sopt) size_t bsize_max, size, valsize; struct ip_fw_chain *chain; uint32_t opt; - char xbuf[128]; + char xbuf[256]; struct sockopt_data sdata; ip_fw3_opheader *op3 = NULL; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Thu Jul 31 19:24:44 2014 (r269347) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Thu Jul 31 20:08:19 2014 (r269348) @@ -77,7 +77,8 @@ struct table_config { struct named_object no; uint8_t vtype; /* format table type */ uint8_t linked; /* 1 if already linked */ - uint16_t spare; + uint8_t tflags; /* type flags */ + uint8_t spare; uint32_t count; /* Number of records */ uint64_t flags; /* state flags */ char tablename[64]; /* table name */ @@ -95,11 +96,12 @@ struct tables_config { static struct table_config *find_table(struct namedobj_instance *ni, struct tid_info *ti); static struct table_config *alloc_table_config(struct ip_fw_chain *ch, - struct tid_info *ti, struct table_algo *ta, char *adata, uint8_t vtype); + struct tid_info *ti, struct table_algo *ta, char *adata, uint8_t tflags, + uint8_t vtype); static void free_table_config(struct namedobj_instance *ni, struct table_config *tc); static int create_table_internal(struct ip_fw_chain *ch, struct tid_info *ti, - char *aname, uint8_t vtype); + char *aname, uint8_t tflags, uint8_t vtype); static void link_table(struct ip_fw_chain *chain, struct table_config *tc); static void unlink_table(struct ip_fw_chain *chain, struct table_config *tc); static void free_table_state(void **state, void **xstate, uint8_t type); @@ -169,7 +171,7 @@ add_table_entry(struct ip_fw_chain *ch, if ((tei->flags & TEI_FLAGS_COMPAT) == 0) return (ESRCH); - error = create_table_internal(ch, ti, NULL, IPFW_VTYPE_U32); + error = create_table_internal(ch, ti, NULL, 0, IPFW_VTYPE_U32); if (error != 0) return (error); @@ -533,8 +535,7 @@ ipfw_find_table_entry(struct ip_fw_chain struct table_algo *ta; struct table_info *kti; struct namedobj_instance *ni; - int error, plen; - void *paddr; + int error; size_t sz; /* Check minimum header size */ @@ -571,41 +572,13 @@ ipfw_find_table_entry(struct ip_fw_chain return (EINVAL); } - /* Check lookup key for validness */ - plen = 0; - paddr = &tent->k; - switch (ti.type) - { - case IPFW_TABLE_CIDR: - if (tent->subtype == AF_INET) - plen = sizeof(struct in_addr); - else if (tent->subtype == AF_INET6) - plen = sizeof(struct in6_addr); - else { - IPFW_UH_RUNLOCK(ch); - return (EINVAL); - } - break; - case IPFW_TABLE_INTERFACE: - /* Check key first */ - plen = sizeof(tent->k.iface); - if (strnlen(tent->k.iface, plen) == plen) { - IPFW_UH_RUNLOCK(ch); - return (EINVAL); - } - case IPFW_TABLE_NUMBER: - plen = sizeof(uint32_t); - break; - - break; - default: - IPFW_UH_RUNLOCK(ch); - return (ENOTSUP); - } kti = KIDX_TO_TI(ch, tc->no.kidx); ta = tc->ta; - error = ta->find_tentry(tc->astate, kti, paddr, plen, tent); + if (ta->find_tentry == NULL) + return (ENOTSUP); + + error = ta->find_tentry(tc->astate, kti, tent); IPFW_UH_RUNLOCK(ch); @@ -651,9 +624,10 @@ flush_table(struct ip_fw_chain *ch, stru struct table_algo *ta; struct table_info ti_old, ti_new, *tablestate; void *astate_old, *astate_new; - char algostate[32], *pstate; + char algostate[64], *pstate; int error; uint16_t kidx; + uint8_t tflags; /* * Stage 1: save table algoritm. @@ -674,13 +648,14 @@ flush_table(struct ip_fw_chain *ch, stru pstate = algostate; } else pstate = NULL; + tflags = tc->tflags; IPFW_UH_WUNLOCK(ch); /* * Stage 2: allocate new table instance using same algo. */ memset(&ti_new, 0, sizeof(struct table_info)); - if ((error = ta->init(ch, &astate_new, &ti_new, pstate)) != 0) { + if ((error = ta->init(ch, &astate_new, &ti_new, pstate, tflags)) != 0) { IPFW_UH_WLOCK(ch); tc->no.refcnt--; IPFW_UH_WUNLOCK(ch); @@ -1211,7 +1186,7 @@ ipfw_create_table(struct ip_fw_chain *ch } IPFW_UH_RUNLOCK(ch); - return (create_table_internal(ch, &ti, aname, i->vtype)); + return (create_table_internal(ch, &ti, aname, i->tflags, i->vtype)); } /* @@ -1224,7 +1199,7 @@ ipfw_create_table(struct ip_fw_chain *ch */ static int create_table_internal(struct ip_fw_chain *ch, struct tid_info *ti, - char *aname, uint8_t vtype) + char *aname, uint8_t tflags, uint8_t vtype) { struct namedobj_instance *ni; struct table_config *tc; @@ -1237,7 +1212,7 @@ create_table_internal(struct ip_fw_chain if (ta == NULL) return (ENOTSUP); - if ((tc = alloc_table_config(ch, ti, ta, aname, vtype)) == NULL) + if ((tc = alloc_table_config(ch, ti, ta, aname, tflags, vtype)) == NULL) return (ENOMEM); IPFW_UH_WLOCK(ch); @@ -1311,6 +1286,7 @@ export_table_info(struct ip_fw_chain *ch struct table_info *ti; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 20:28:18 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8803CF96; Thu, 31 Jul 2014 20:28:18 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 75E882411; Thu, 31 Jul 2014 20:28:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VKSIgp093194; Thu, 31 Jul 2014 20:28:18 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VKSIUk093193; Thu, 31 Jul 2014 20:28:18 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407312028.s6VKSIUk093193@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 20:28:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269349 - in projects/arm64/sys/arm64: arm64 include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 20:28:18 -0000 Author: andrew Date: Thu Jul 31 20:28:17 2014 New Revision: 269349 URL: http://svnweb.freebsd.org/changeset/base/269349 Log: Nexus doesn't need machine/fdt.h remove the include and file. Deleted: projects/arm64/sys/arm64/include/fdt.h Modified: projects/arm64/sys/arm64/arm64/nexus.c Modified: projects/arm64/sys/arm64/arm64/nexus.c ============================================================================== --- projects/arm64/sys/arm64/arm64/nexus.c Thu Jul 31 20:08:19 2014 (r269348) +++ projects/arm64/sys/arm64/arm64/nexus.c Thu Jul 31 20:28:17 2014 (r269349) @@ -64,7 +64,6 @@ __FBSDID("$FreeBSD$"); #ifdef FDT #include -#include #include "ofw_bus_if.h" #endif From owner-svn-src-projects@FreeBSD.ORG Thu Jul 31 20:55:07 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0C54E7AF; Thu, 31 Jul 2014 20:55:07 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id ED848269B; Thu, 31 Jul 2014 20:55:06 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s6VKt61E006640; Thu, 31 Jul 2014 20:55:06 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s6VKt6Ma006634; Thu, 31 Jul 2014 20:55:06 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201407312055.s6VKt6Ma006634@svn.freebsd.org> From: Andrew Turner Date: Thu, 31 Jul 2014 20:55:06 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269350 - in projects/arm64/sys: arm64/arm64 arm64/include boot/arm64/efi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Jul 2014 20:55:07 -0000 Author: andrew Date: Thu Jul 31 20:55:05 2014 New Revision: 269350 URL: http://svnweb.freebsd.org/changeset/base/269350 Log: Pass the dtb from loader to the kernel. For now loader tries to load foundation.dtb from the disk and pass this to the kernel. The dtb is expected to be after the kernel and the data passed in is its offset from the start of the kernel. Modified: projects/arm64/sys/arm64/arm64/machdep.c projects/arm64/sys/arm64/include/metadata.h projects/arm64/sys/boot/arm64/efi/autoload.c projects/arm64/sys/boot/arm64/efi/bootinfo.c Modified: projects/arm64/sys/arm64/arm64/machdep.c ============================================================================== --- projects/arm64/sys/arm64/arm64/machdep.c Thu Jul 31 20:28:17 2014 (r269349) +++ projects/arm64/sys/arm64/arm64/machdep.c Thu Jul 31 20:55:05 2014 (r269350) @@ -62,6 +62,10 @@ __FBSDID("$FreeBSD$"); #include #include +#include + +#include "opt_platform.h" + struct pcpu __pcpu[MAXCPU]; struct pcpu *pcpup = &__pcpu[0]; @@ -484,6 +488,28 @@ add_efi_map_entries(struct efi_map_heade } } +#ifdef FDT +static void +try_load_dtb(caddr_t kmdp) +{ + vm_offset_t dtboff; + void *dtbp; + + dtboff = MD_FETCH(kmdp, MODINFOMD_DTB_OFF, vm_offset_t); + if (dtboff == 0) + return; + + dtbp = (void *)(KERNBASE + dtboff); + printf("dtbp = %llx\n", *(uint64_t *)(KERNBASE + dtboff)); + + if (OF_install(OFW_FDT, 0) == FALSE) + panic("Cannot install FDT"); + + if (OF_init((void *)dtbp) != 0) + panic("OF_init failed with the found device tree"); +} +#endif + void initarm(struct arm64_bootparams *abp) { @@ -503,6 +529,10 @@ initarm(struct arm64_bootparams *abp) if (kmdp == NULL) kmdp = preload_search_by_type("elf64 kernel"); +#ifdef FDT + try_load_dtb(kmdp); +#endif + /* Find the address to start allocating from */ lastaddr = MD_FETCH(kmdp, MODINFOMD_KERNEND, vm_offset_t); Modified: projects/arm64/sys/arm64/include/metadata.h ============================================================================== --- projects/arm64/sys/arm64/include/metadata.h Thu Jul 31 20:28:17 2014 (r269349) +++ projects/arm64/sys/arm64/include/metadata.h Thu Jul 31 20:55:05 2014 (r269350) @@ -30,6 +30,7 @@ #define _MACHINE_METADATA_H_ #define MODINFOMD_EFI_MAP 0x1001 +#define MODINFOMD_DTB_OFF 0x1002 struct efi_map_header { size_t memory_size; Modified: projects/arm64/sys/boot/arm64/efi/autoload.c ============================================================================== --- projects/arm64/sys/boot/arm64/efi/autoload.c Thu Jul 31 20:28:17 2014 (r269349) +++ projects/arm64/sys/boot/arm64/efi/autoload.c Thu Jul 31 20:55:05 2014 (r269350) @@ -27,9 +27,37 @@ #include __FBSDID("$FreeBSD$"); +#if 1 +#include +#include "bootstrap.h" + +/* HACK: Load the foundation model dtb from disk */ +static int +load_dtb_file(const char *filename) +{ + struct preloaded_file *bfp, *oldbfp; + int err; + + oldbfp = file_findfile(NULL, "dtb"); + + /* Attempt to load and validate a new dtb from a file. */ + if ((bfp = file_loadraw(filename, "dtb")) == NULL) { + printf("failed to load file '%s': %s\n", filename, command_errbuf); + return (1); + } + + /* A new dtb was validated, discard any previous file. */ + if (oldbfp) + file_discard(oldbfp); + return (0); +} +#endif + int amd64_autoload(void) { + load_dtb_file("/foundation.dtb"); + return (0); } Modified: projects/arm64/sys/boot/arm64/efi/bootinfo.c ============================================================================== --- projects/arm64/sys/boot/arm64/efi/bootinfo.c Thu Jul 31 20:28:17 2014 (r269349) +++ projects/arm64/sys/boot/arm64/efi/bootinfo.c Thu Jul 31 20:55:05 2014 (r269350) @@ -198,10 +198,11 @@ bi_load_efi_data(struct preloaded_file * int bi_load(char *args, vm_offset_t *modulep, vm_offset_t *kernendp) { - struct preloaded_file *xp, *kfp; + struct preloaded_file *xp, *kfp, *dtbfp; struct file_metadata *md; uint64_t kernend; vm_offset_t addr, size; + vm_offset_t dtbp; /* find the last module in the chain */ addr = 0; @@ -218,6 +219,15 @@ bi_load(char *args, vm_offset_t *modulep if (kfp == NULL) panic("can't find kernel file"); kernend = 0; /* fill it in later */ + + dtbfp = file_findfile(NULL, "dtb"); + if (dtbfp != NULL) { + printf("dtbfp = %llx %lld\n", dtbfp->f_addr, dtbfp->f_addr - kfp->f_addr); + + dtbp = dtbfp->f_addr - kfp->f_addr; + file_addmetadata(kfp, MODINFOMD_DTB_OFF, sizeof dtbp, &dtbp); + } + file_addmetadata(kfp, MODINFOMD_KERNEND, sizeof kernend, &kernend); bi_load_efi_data(kfp); From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 00:34:53 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 2BF9921F; Fri, 1 Aug 2014 00:34:53 +0000 (UTC) Received: from mx1.sbone.de (bird.sbone.de [46.4.1.90]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (Client CN "mx1.sbone.de", Issuer "SBone.DE" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id A757F2089; Fri, 1 Aug 2014 00:34:52 +0000 (UTC) Received: from mail.sbone.de (mail.sbone.de [IPv6:fde9:577b:c1a9:31::2013:587]) (using TLSv1 with cipher ADH-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by mx1.sbone.de (Postfix) with ESMTPS id D971525D3897; Fri, 1 Aug 2014 00:34:48 +0000 (UTC) Received: from content-filter.sbone.de (content-filter.sbone.de [IPv6:fde9:577b:c1a9:31::2013:2742]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPS id B3AF3C22E51; Fri, 1 Aug 2014 00:34:46 +0000 (UTC) X-Virus-Scanned: amavisd-new at sbone.de Received: from mail.sbone.de ([IPv6:fde9:577b:c1a9:31::2013:587]) by content-filter.sbone.de (content-filter.sbone.de [fde9:577b:c1a9:31::2013:2742]) (amavisd-new, port 10024) with ESMTP id 5ZIv7OMnkhAB; Fri, 1 Aug 2014 00:34:43 +0000 (UTC) Received: from [IPv6:fde9:577b:c1a9:4410:ccf7:cad:ed3d:dbb0] (unknown [IPv6:fde9:577b:c1a9:4410:ccf7:cad:ed3d:dbb0]) (using TLSv1 with cipher AES128-SHA (128/128 bits)) (No client certificate requested) by mail.sbone.de (Postfix) with ESMTPSA id 2015CC22E50; Fri, 1 Aug 2014 00:34:41 +0000 (UTC) Content-Type: text/plain; charset=windows-1252 Mime-Version: 1.0 (Mac OS X Mail 7.3 \(1878.6\)) Subject: Re: svn commit: r269348 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw From: "Bjoern A. Zeeb" In-Reply-To: <201407312008.s6VK8J9R083960@svn.freebsd.org> Date: Fri, 1 Aug 2014 00:34:33 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <6499BC58-1C21-4D47-91F8-BF7FC9834169@FreeBSD.org> References: <201407312008.s6VK8J9R083960@svn.freebsd.org> To: "Alexander V. Chernikov" X-Mailer: Apple Mail (2.1878.6) Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 00:34:53 -0000 On 31 Jul 2014, at 20:08 , Alexander V. Chernikov = wrote: > Author: melifaro > Date: Thu Jul 31 20:08:19 2014 > New Revision: 269348 > URL: http://svnweb.freebsd.org/changeset/base/269348 >=20 > Log: > * Add new "flow" table type to support N=3D1..5-tuple lookups > * Add "flow:hash" algorithm >=20 > Kernel changes: > * Add O_IP_FLOW_LOOKUP opcode to support "flow" lookups > * Add IPFW_TABLE_FLOW table type > * Add "struct tflow_entry" as strage for 6-tuple flows > * Add "flow:hash" algorithm. Basically it is auto-growing chained = hash table. > Additionally, we store mask of fields we need to compare in each = instance/ >=20 > * Increase ipfw_obj_tentry size by adding struct tflow_entry > * Add per-algorithm stat (ifpw_ta_tinfo) to ipfw_xtable_info > * Increase algoname length: 32 -> 64 (algo options passed there as = string) > * Assume every table type can be customized by flags, use u8 to store = "tflags" field. > * Simplify ipfw_find_table_entry() by providing @tentry directly to = algo callback. > * Fix bug in cidr:chash resize procedure. >=20 > Userland changes: > * add "flow table(NAME)" syntax to support n-tuple checking tables. > * make fill_flags() separate function to ease working with _s_x = arrays > * change "table info" output to reflect longer "type" fields >=20 > Syntax: > ipfw table fl2 create type = flow:[src-ip][,proto][,src-port][,dst-ip][dst-port] [algo flow:hash] >=20 > Examples: >=20 > 0:02 [2] zfscurr0# ipfw table fl2 create type = flow:src-ip,proto,dst-port algo flow:hash > 0:02 [2] zfscurr0# ipfw table fl2 info > +++ table(fl2), set(0) +++ > kindex: 0, type: flow:src-ip,proto,dst-port > valtype: number, references: 0 > algorithm: flow:hash > items: 0, size: 280 > 0:02 [2] zfscurr0# ipfw table fl2 add 2a02:6b8::333,tcp,443 45000 > 0:02 [2] zfscurr0# ipfw table fl2 add 10.0.0.92,tcp,80 22000 > 0:02 [2] zfscurr0# ipfw table fl2 list > +++ table(fl2), set(0) +++ > 2a02:6b8::333,6,443 45000 > 10.0.0.92,6,80 22000 > 0:02 [2] zfscurr0# ipfw add 200 count tcp from me to 78.46.89.105 80 = flow 'table(fl2)' > 00200 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) > 0:03 [2] zfscurr0# ipfw show > 00200 0 0 count tcp from me to 78.46.89.105 dst-port 80 flow = table(fl2) > 65535 617 59416 allow ip from any to any > 0:03 [2] zfscurr0# telnet -s 10.0.0.92 78.46.89.105 80 > Trying 78.46.89.105... > .. > 0:04 [2] zfscurr0# ipfw show > 00200 5 272 count tcp from me to 78.46.89.105 dst-port 80 flow = table(fl2) > 65535 682 66733 allow ip from any to any >=20 > Modified: > projects/ipfw/sbin/ipfw/ipfw2.c > projects/ipfw/sbin/ipfw/ipfw2.h > projects/ipfw/sbin/ipfw/tables.c > projects/ipfw/sys/netinet/ip_fw.h > projects/ipfw/sys/netpfil/ipfw/ip_fw2.c > projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c > projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c > projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h > projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Only in case you plan merging this to head (but even if not it might be = a good idea;-) I see no changes to the man page. Please update the documentation; = this is were syntax and example belong and not into the commit message. = Feel free to grab someone from docs@ in case you don=92t want to do it = all yourself; they are always more than willing to assist. =97=20 Bjoern A. Zeeb "Come on. Learn, goddamn it.", WarGames, 1983 From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 05:56:01 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D68B165D; Fri, 1 Aug 2014 05:56:01 +0000 (UTC) Received: from mail.ipfw.ru (mail.ipfw.ru [IPv6:2a01:4f8:120:6141::2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 994612900; Fri, 1 Aug 2014 05:56:01 +0000 (UTC) Received: from v6.mpls.in ([2a02:978:2::5] helo=ws.su29.net) by mail.ipfw.ru with esmtpsa (TLSv1:DHE-RSA-AES128-SHA:128) (Exim 4.82 (FreeBSD)) (envelope-from ) id 1XD1ru-000B64-OI; Fri, 01 Aug 2014 05:42:50 +0400 Message-ID: <53DB2BC8.90706@FreeBSD.org> Date: Fri, 01 Aug 2014 09:55:20 +0400 From: "Alexander V. Chernikov" User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:24.0) Gecko/20100101 Thunderbird/24.6.0 MIME-Version: 1.0 To: "Bjoern A. Zeeb" Subject: Re: svn commit: r269348 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw References: <201407312008.s6VK8J9R083960@svn.freebsd.org> <6499BC58-1C21-4D47-91F8-BF7FC9834169@FreeBSD.org> In-Reply-To: <6499BC58-1C21-4D47-91F8-BF7FC9834169@FreeBSD.org> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=windows-1252 Content-Transfer-Encoding: 8bit Cc: svn-src-projects@freebsd.org, src-committers@freebsd.org X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 05:56:02 -0000 On 01.08.2014 04:34, Bjoern A. Zeeb wrote: > > On 31 Jul 2014, at 20:08 , Alexander V. Chernikov wrote: > >> Author: melifaro >> Date: Thu Jul 31 20:08:19 2014 >> New Revision: 269348 >> URL: http://svnweb.freebsd.org/changeset/base/269348 >> >> Log: >> * Add new "flow" table type to support N=1..5-tuple lookups >> * Add "flow:hash" algorithm >> >> Kernel changes: >> * Add O_IP_FLOW_LOOKUP opcode to support "flow" lookups >> * Add IPFW_TABLE_FLOW table type >> * Add "struct tflow_entry" as strage for 6-tuple flows >> * Add "flow:hash" algorithm. Basically it is auto-growing chained hash table. >> Additionally, we store mask of fields we need to compare in each instance/ >> >> * Increase ipfw_obj_tentry size by adding struct tflow_entry >> * Add per-algorithm stat (ifpw_ta_tinfo) to ipfw_xtable_info >> * Increase algoname length: 32 -> 64 (algo options passed there as string) >> * Assume every table type can be customized by flags, use u8 to store "tflags" field. >> * Simplify ipfw_find_table_entry() by providing @tentry directly to algo callback. >> * Fix bug in cidr:chash resize procedure. >> >> Userland changes: >> * add "flow table(NAME)" syntax to support n-tuple checking tables. >> * make fill_flags() separate function to ease working with _s_x arrays >> * change "table info" output to reflect longer "type" fields >> >> Syntax: >> ipfw table fl2 create type flow:[src-ip][,proto][,src-port][,dst-ip][dst-port] [algo flow:hash] >> >> Examples: >> >> 0:02 [2] zfscurr0# ipfw table fl2 create type flow:src-ip,proto,dst-port algo flow:hash >> 0:02 [2] zfscurr0# ipfw table fl2 info >> +++ table(fl2), set(0) +++ >> kindex: 0, type: flow:src-ip,proto,dst-port >> valtype: number, references: 0 >> algorithm: flow:hash >> items: 0, size: 280 >> 0:02 [2] zfscurr0# ipfw table fl2 add 2a02:6b8::333,tcp,443 45000 >> 0:02 [2] zfscurr0# ipfw table fl2 add 10.0.0.92,tcp,80 22000 >> 0:02 [2] zfscurr0# ipfw table fl2 list >> +++ table(fl2), set(0) +++ >> 2a02:6b8::333,6,443 45000 >> 10.0.0.92,6,80 22000 >> 0:02 [2] zfscurr0# ipfw add 200 count tcp from me to 78.46.89.105 80 flow 'table(fl2)' >> 00200 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) >> 0:03 [2] zfscurr0# ipfw show >> 00200 0 0 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) >> 65535 617 59416 allow ip from any to any >> 0:03 [2] zfscurr0# telnet -s 10.0.0.92 78.46.89.105 80 >> Trying 78.46.89.105... >> .. >> 0:04 [2] zfscurr0# ipfw show >> 00200 5 272 count tcp from me to 78.46.89.105 dst-port 80 flow table(fl2) >> 65535 682 66733 allow ip from any to any >> >> Modified: >> projects/ipfw/sbin/ipfw/ipfw2.c >> projects/ipfw/sbin/ipfw/ipfw2.h >> projects/ipfw/sbin/ipfw/tables.c >> projects/ipfw/sys/netinet/ip_fw.h >> projects/ipfw/sys/netpfil/ipfw/ip_fw2.c >> projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c >> projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c >> projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h >> projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c > > Only in case you plan merging this to head (but even if not it might be a good idea;-) > Yes, I'm going to merge this sooner or later :) > I see no changes to the man page. Please update the documentation; this is were syntax and example belong and not into the commit message. Feel free to grab someone from docs@ in case you don’t want to do it all yourself; they are always more than willing to assist. Of course. I'm currently concentrated on making this work in general. I'm not going to commit all these without a single docs change :) > > > — > Bjoern A. Zeeb "Come on. Learn, goddamn it.", WarGames, 1983 > > From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 07:35:19 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0CF184EE; Fri, 1 Aug 2014 07:35:19 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E21552570; Fri, 1 Aug 2014 07:35:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s717ZIhi030499; Fri, 1 Aug 2014 07:35:18 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s717ZI0T030495; Fri, 1 Aug 2014 07:35:18 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201408010735.s717ZI0T030495@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 1 Aug 2014 07:35:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269370 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 07:35:19 -0000 Author: melifaro Date: Fri Aug 1 07:35:17 2014 New Revision: 269370 URL: http://svnweb.freebsd.org/changeset/base/269370 Log: * Use TA_FLAG_DEFAULT for default algorithm selection instead of exporting algorithm structures directly. * Pass needed state buffer size in algo structures as preparation for tables add/del requests batching. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Fri Aug 1 06:20:25 2014 (r269369) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Fri Aug 1 07:35:17 2014 (r269370) @@ -91,6 +91,7 @@ struct tables_config { struct namedobj_instance *namehash; int algo_count; struct table_algo *algo[256]; + struct table_algo *def_algo[IPFW_TABLE_MAXTYPE + 1]; }; static struct table_config *find_table(struct namedobj_instance *ni, @@ -1544,6 +1545,9 @@ find_table_algo(struct tables_config *tc int i, l; struct table_algo *ta; + if (ti->type > IPFW_TABLE_MAXTYPE) + return (NULL); + /* Search by index */ if (ti->atype != 0) { if (ti->atype > tcfg->algo_count) @@ -1575,19 +1579,8 @@ find_table_algo(struct tables_config *tc return (NULL); } - /* Search by type */ - switch (ti->type) { - case IPFW_TABLE_CIDR: - return (&cidr_radix); - case IPFW_TABLE_INTERFACE: - return (&iface_idx); - case IPFW_TABLE_NUMBER: - return (&number_array); - case IPFW_TABLE_FLOW: - return (&flow_hash); - } - - return (NULL); + /* Return default algorithm for given type if set */ + return (tcfg->def_algo[ti->type]); } int @@ -1600,6 +1593,8 @@ ipfw_add_table_algo(struct ip_fw_chain * if (size > sizeof(struct table_algo)) return (EINVAL); + KASSERT(ta->type >= IPFW_TABLE_MAXTYPE,("Increase IPFW_TABLE_MAXTYPE")); + ta_new = malloc(sizeof(struct table_algo), M_IPFW, M_WAITOK | M_ZERO); memcpy(ta_new, ta, size); @@ -1610,6 +1605,11 @@ ipfw_add_table_algo(struct ip_fw_chain * tcfg->algo[++tcfg->algo_count] = ta_new; ta_new->idx = tcfg->algo_count; + /* Set algorithm as default one for given type */ + if ((ta_new->flags & TA_FLAG_DEFAULT) != 0 && + tcfg->def_algo[ta_new->type] == NULL) + tcfg->def_algo[ta_new->type] = ta_new; + *idx = ta_new->idx; return (0); @@ -1628,6 +1628,10 @@ ipfw_del_table_algo(struct ip_fw_chain * ta = tcfg->algo[idx]; KASSERT(ta != NULL, ("algo idx %d is NULL", idx)); + + if (tcfg->def_algo[ta->type] == ta) + tcfg->def_algo[ta->type] = NULL; + free(ta, M_IPFW); } Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Fri Aug 1 06:20:25 2014 (r269369) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Fri Aug 1 07:35:17 2014 (r269370) @@ -99,10 +99,11 @@ typedef int ta_dump_tinfo(void *ta_state struct table_algo { char name[16]; - int idx; - int type; - int refcnt; - int spare; + uint32_t idx; + uint32_t type; + uint32_t refcnt; + uint32_t flags; + size_t ta_buf_size; ta_init *init; ta_destroy *destroy; ta_prepare_add *prepare_add; @@ -121,13 +122,12 @@ struct table_algo { ta_print_config *print_config; ta_dump_tinfo *dump_tinfo; }; +#define TA_FLAG_DEFAULT 0x01 /* Algorithm is default for given type */ int ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta, size_t size, int *idx); void ipfw_del_table_algo(struct ip_fw_chain *ch, int idx); -extern struct table_algo cidr_radix, iface_idx, number_array, flow_hash; - void ipfw_table_algo_init(struct ip_fw_chain *chain); void ipfw_table_algo_destroy(struct ip_fw_chain *chain); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 06:20:25 2014 (r269369) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 07:35:17 2014 (r269370) @@ -517,6 +517,8 @@ ta_flush_cidr_entry(struct ip_fw_chain * struct table_algo cidr_radix = { .name = "cidr:radix", .type = IPFW_TABLE_CIDR, + .flags = TA_FLAG_DEFAULT, + .ta_buf_size = sizeof(struct ta_buf_cidr), .init = ta_init_radix, .destroy = ta_destroy_radix, .prepare_add = ta_prepare_add_cidr, @@ -1364,6 +1366,7 @@ ta_flush_mod_chash(void *ta_buf) struct table_algo cidr_hash = { .name = "cidr:hash", .type = IPFW_TABLE_CIDR, + .ta_buf_size = sizeof(struct ta_buf_chash), .init = ta_init_chash, .destroy = ta_destroy_chash, .prepare_add = ta_prepare_add_chash, @@ -2021,6 +2024,8 @@ ta_foreach_ifidx(void *ta_state, struct struct table_algo iface_idx = { .name = "iface:array", .type = IPFW_TABLE_INTERFACE, + .flags = TA_FLAG_DEFAULT, + .ta_buf_size = sizeof(struct ta_buf_ifidx), .init = ta_init_ifidx, .destroy = ta_destroy_ifidx, .prepare_add = ta_prepare_add_ifidx, @@ -2384,6 +2389,7 @@ ta_foreach_numarray(void *ta_state, stru struct table_algo number_array = { .name = "number:array", .type = IPFW_TABLE_NUMBER, + .ta_buf_size = sizeof(struct ta_buf_numarray), .init = ta_init_numarray, .destroy = ta_destroy_numarray, .prepare_add = ta_prepare_add_numarray, @@ -3051,6 +3057,8 @@ ta_flush_mod_fhash(void *ta_buf) struct table_algo flow_hash = { .name = "flow:hash", .type = IPFW_TABLE_FLOW, + .flags = TA_FLAG_DEFAULT, + .ta_buf_size = sizeof(struct ta_buf_fhash), .init = ta_init_fhash, .destroy = ta_destroy_fhash, .prepare_add = ta_prepare_add_fhash, From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 08:28:18 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D2B04D4F; Fri, 1 Aug 2014 08:28:18 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id C04DC29E6; Fri, 1 Aug 2014 08:28:18 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s718SIZR054349; Fri, 1 Aug 2014 08:28:18 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s718SINn054348; Fri, 1 Aug 2014 08:28:18 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201408010828.s718SINn054348@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 1 Aug 2014 08:28:18 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269371 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 08:28:19 -0000 Author: melifaro Date: Fri Aug 1 08:28:18 2014 New Revision: 269371 URL: http://svnweb.freebsd.org/changeset/base/269371 Log: Simplify radix operations: use unified tei_to_sockaddr_ent() to generate keys for add/delete calls. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 07:35:17 2014 (r269370) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 08:28:18 2014 (r269371) @@ -293,6 +293,53 @@ ipv6_writemask(struct in6_addr *addr6, u } #endif +static void +tei_to_sockaddr_ent(struct tentry_info *tei, struct sockaddr *sa, + struct sockaddr *ma, int *set_mask) +{ + int mlen; + struct sockaddr_in *addr, *mask; + struct sockaddr_in6 *addr6, *mask6; + in_addr_t a4; + + mlen = tei->masklen; + + if (tei->subtype == AF_INET) { +#ifdef INET + addr = (struct sockaddr_in *)sa; + mask = (struct sockaddr_in *)ma; + /* Set 'total' structure length */ + KEY_LEN(*addr) = KEY_LEN_INET; + KEY_LEN(*mask) = KEY_LEN_INET; + addr->sin_family = AF_INET; + mask->sin_addr.s_addr = + htonl(mlen ? ~((1 << (32 - mlen)) - 1) : 0); + a4 = *((in_addr_t *)tei->paddr); + addr->sin_addr.s_addr = a4 & mask->sin_addr.s_addr; + if (mlen != 32) + *set_mask = 1; + else + *set_mask = 0; +#endif +#ifdef INET6 + } else if (tei->subtype == AF_INET6) { + /* IPv6 case */ + addr6 = (struct sockaddr_in6 *)sa; + mask6 = (struct sockaddr_in6 *)ma; + /* Set 'total' structure length */ + KEY_LEN(*addr6) = KEY_LEN_INET6; + KEY_LEN(*mask6) = KEY_LEN_INET6; + addr6->sin6_family = AF_INET6; + ipv6_writemask(&mask6->sin6_addr, mlen); + memcpy(&addr6->sin6_addr, tei->paddr, sizeof(struct in6_addr)); + APPLY_MASK(&addr6->sin6_addr, &mask6->sin6_addr); + if (mlen != 128) + *set_mask = 1; + else + *set_mask = 0; + } +#endif +} static int ta_prepare_add_cidr(struct ip_fw_chain *ch, struct tentry_info *tei, @@ -301,15 +348,14 @@ ta_prepare_add_cidr(struct ip_fw_chain * struct ta_buf_cidr *tb; struct radix_cidr_entry *ent; struct radix_cidr_xentry *xent; - in_addr_t addr; - struct sockaddr_in *mask; - struct sa_in6 *mask6; - int mlen; + struct sockaddr *addr, *mask; + int mlen, set_mask; tb = (struct ta_buf_cidr *)ta_buf; memset(tb, 0, sizeof(struct ta_buf_cidr)); mlen = tei->masklen; + set_mask = 0; if (tei->subtype == AF_INET) { #ifdef INET @@ -317,21 +363,11 @@ ta_prepare_add_cidr(struct ip_fw_chain * return (EINVAL); ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); ent->value = tei->value; - mask = &tb->addr.a4.ma; - /* Set 'total' structure length */ - KEY_LEN(ent->addr) = KEY_LEN_INET; - KEY_LEN(*mask) = KEY_LEN_INET; - ent->addr.sin_family = AF_INET; - mask->sin_addr.s_addr = - htonl(mlen ? ~((1 << (32 - mlen)) - 1) : 0); - addr = *((in_addr_t *)tei->paddr); - ent->addr.sin_addr.s_addr = addr & mask->sin_addr.s_addr; ent->masklen = mlen; - /* Set pointers */ + + addr = (struct sockaddr *)&ent->addr; + mask = (struct sockaddr *)&tb->addr.a4.ma; tb->ent_ptr = ent; - tb->addr_ptr = (struct sockaddr *)&ent->addr; - if (mlen != 32) - tb->mask_ptr = (struct sockaddr *)mask; #endif #ifdef INET6 } else if (tei->subtype == AF_INET6) { @@ -340,27 +376,23 @@ ta_prepare_add_cidr(struct ip_fw_chain * return (EINVAL); xent = malloc(sizeof(*xent), M_IPFW_TBL, M_WAITOK | M_ZERO); xent->value = tei->value; - mask6 = &tb->addr.a6.ma; - /* Set 'total' structure length */ - KEY_LEN(xent->addr6) = KEY_LEN_INET6; - KEY_LEN(*mask6) = KEY_LEN_INET6; - xent->addr6.sin6_family = AF_INET6; - ipv6_writemask(&mask6->sin6_addr, mlen); - memcpy(&xent->addr6.sin6_addr, tei->paddr, - sizeof(struct in6_addr)); - APPLY_MASK(&xent->addr6.sin6_addr, &mask6->sin6_addr); xent->masklen = mlen; - /* Set pointers */ + + addr = (struct sockaddr *)&xent->addr6; + mask = (struct sockaddr *)&tb->addr.a6.ma; tb->ent_ptr = xent; - tb->addr_ptr = (struct sockaddr *)&xent->addr6; - if (mlen != 128) - tb->mask_ptr = (struct sockaddr *)mask6; #endif } else { /* Unknown CIDR type */ return (EINVAL); } + tei_to_sockaddr_ent(tei, addr, mask, &set_mask); + /* Set pointers */ + tb->addr_ptr = addr; + if (set_mask != 0) + tb->mask_ptr = mask; + return (0); } @@ -424,54 +456,37 @@ ta_prepare_del_cidr(struct ip_fw_chain * void *ta_buf) { struct ta_buf_cidr *tb; - struct sockaddr_in sa, mask; - struct sa_in6 sa6, mask6; - in_addr_t addr; - int mlen; + struct sockaddr *addr, *mask; + int mlen, set_mask; tb = (struct ta_buf_cidr *)ta_buf; memset(tb, 0, sizeof(struct ta_buf_cidr)); mlen = tei->masklen; + set_mask = 0; if (tei->subtype == AF_INET) { if (mlen > 32) return (EINVAL); - memset(&sa, 0, sizeof(struct sockaddr_in)); - memset(&mask, 0, sizeof(struct sockaddr_in)); - /* Set 'total' structure length */ - KEY_LEN(sa) = KEY_LEN_INET; - KEY_LEN(mask) = KEY_LEN_INET; - mask.sin_addr.s_addr = htonl(mlen ? ~((1 << (32 - mlen)) - 1) : 0); - addr = *((in_addr_t *)tei->paddr); - sa.sin_addr.s_addr = addr & mask.sin_addr.s_addr; - tb->addr.a4.sa = sa; - tb->addr.a4.ma = mask; - tb->addr_ptr = (struct sockaddr *)&tb->addr.a4.sa; - if (mlen != 32) - tb->mask_ptr = (struct sockaddr *)&tb->addr.a4.ma; + + addr = (struct sockaddr *)&tb->addr.a4.sa; + mask = (struct sockaddr *)&tb->addr.a4.ma; #ifdef INET6 } else if (tei->subtype == AF_INET6) { if (mlen > 128) return (EINVAL); - memset(&sa6, 0, sizeof(struct sa_in6)); - memset(&mask6, 0, sizeof(struct sa_in6)); - /* Set 'total' structure length */ - KEY_LEN(sa6) = KEY_LEN_INET6; - KEY_LEN(mask6) = KEY_LEN_INET6; - ipv6_writemask(&mask6.sin6_addr, mlen); - memcpy(&sa6.sin6_addr, tei->paddr, - sizeof(struct in6_addr)); - APPLY_MASK(&sa6.sin6_addr, &mask6.sin6_addr); - tb->addr.a6.sa = sa6; - tb->addr.a6.ma = mask6; - tb->addr_ptr = (struct sockaddr *)&tb->addr.a6.sa; - if (mlen != 128) - tb->mask_ptr = (struct sockaddr *)&tb->addr.a6.ma; + + addr = (struct sockaddr *)&tb->addr.a6.sa; + mask = (struct sockaddr *)&tb->addr.a6.ma; #endif } else return (EINVAL); + tei_to_sockaddr_ent(tei, addr, mask, &set_mask); + tb->addr_ptr = addr; + if (set_mask != 0) + tb->mask_ptr = mask; + return (0); } From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 08:39:48 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 67AAFF3F; Fri, 1 Aug 2014 08:39:48 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 3B9EB2B00; Fri, 1 Aug 2014 08:39:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s718dmuj059140; Fri, 1 Aug 2014 08:39:48 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s718dmon059139; Fri, 1 Aug 2014 08:39:48 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201408010839.s718dmon059139@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 1 Aug 2014 08:39:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269372 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 08:39:48 -0000 Author: melifaro Date: Fri Aug 1 08:39:47 2014 New Revision: 269372 URL: http://svnweb.freebsd.org/changeset/base/269372 Log: Do not perform memset() on ta_buf in algo callbacks: it is already zeroed by base code. Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 08:28:18 2014 (r269371) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 08:39:47 2014 (r269372) @@ -266,9 +266,9 @@ ta_foreach_radix(void *ta_state, struct struct ta_buf_cidr { + void *ent_ptr; struct sockaddr *addr_ptr; struct sockaddr *mask_ptr; - void *ent_ptr; union { struct { struct sockaddr_in sa; @@ -352,7 +352,6 @@ ta_prepare_add_cidr(struct ip_fw_chain * int mlen, set_mask; tb = (struct ta_buf_cidr *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_cidr)); mlen = tei->masklen; set_mask = 0; @@ -460,7 +459,6 @@ ta_prepare_del_cidr(struct ip_fw_chain * int mlen, set_mask; tb = (struct ta_buf_cidr *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_cidr)); mlen = tei->masklen; set_mask = 0; @@ -1103,7 +1101,6 @@ ta_prepare_add_chash(struct ip_fw_chain int error; tb = (struct ta_buf_chash *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_chash)); ent = malloc(sizeof(*ent), M_IPFW_TBL, M_WAITOK | M_ZERO); @@ -1196,7 +1193,6 @@ ta_prepare_del_chash(struct ip_fw_chain struct ta_buf_chash *tb; tb = (struct ta_buf_chash *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_chash)); return (tei_to_chash_ent(tei, &tb->ent)); } @@ -1657,7 +1653,6 @@ ta_prepare_add_ifidx(struct ip_fw_chain struct ifentry *ife; tb = (struct ta_buf_ifidx *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_ifidx)); /* Check if string is terminated */ ifname = (char *)tei->paddr; @@ -1750,7 +1745,6 @@ ta_prepare_del_ifidx(struct ip_fw_chain char *ifname; tb = (struct ta_buf_ifidx *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_ifidx)); /* Check if string is terminated */ ifname = (char *)tei->paddr; @@ -2179,7 +2173,6 @@ ta_prepare_add_numarray(struct ip_fw_cha struct ta_buf_numarray *tb; tb = (struct ta_buf_numarray *)ta_buf; - memset(tb, 0, sizeof(*tb)); tb->na.number = *((uint32_t *)tei->paddr); tb->na.value = tei->value; @@ -2836,7 +2829,6 @@ ta_prepare_add_fhash(struct ip_fw_chain int error; tb = (struct ta_buf_fhash *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_fhash)); if (tei->subtype == AF_INET) sz = sizeof(struct fhashentry4); @@ -2919,7 +2911,6 @@ ta_prepare_del_fhash(struct ip_fw_chain struct ta_buf_fhash *tb; tb = (struct ta_buf_fhash *)ta_buf; - memset(tb, 0, sizeof(struct ta_buf_fhash)); return (tei_to_fhash_ent(tei, &tb->fe6.e)); } From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 09:54:12 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 499F8CC4; Fri, 1 Aug 2014 09:54:12 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2AE40251F; Fri, 1 Aug 2014 09:54:12 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s719sCNT094538; Fri, 1 Aug 2014 09:54:12 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s719sBSn094536; Fri, 1 Aug 2014 09:54:11 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408010954.s719sBSn094536@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 09:54:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269373 - in projects/arm64/sys: arm64/arm64 boot/arm64/efi X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 09:54:12 -0000 Author: andrew Date: Fri Aug 1 09:54:11 2014 New Revision: 269373 URL: http://svnweb.freebsd.org/changeset/base/269373 Log: Allow us to set verbose boot, along with the other flags loaders boot command takes. Modified: projects/arm64/sys/arm64/arm64/machdep.c projects/arm64/sys/boot/arm64/efi/bootinfo.c Modified: projects/arm64/sys/arm64/arm64/machdep.c ============================================================================== --- projects/arm64/sys/arm64/arm64/machdep.c Fri Aug 1 08:39:47 2014 (r269372) +++ projects/arm64/sys/arm64/arm64/machdep.c Fri Aug 1 09:54:11 2014 (r269373) @@ -529,6 +529,7 @@ initarm(struct arm64_bootparams *abp) if (kmdp == NULL) kmdp = preload_search_by_type("elf64 kernel"); + boothowto = MD_FETCH(kmdp, MODINFOMD_HOWTO, int); #ifdef FDT try_load_dtb(kmdp); #endif Modified: projects/arm64/sys/boot/arm64/efi/bootinfo.c ============================================================================== --- projects/arm64/sys/boot/arm64/efi/bootinfo.c Fri Aug 1 08:39:47 2014 (r269372) +++ projects/arm64/sys/boot/arm64/efi/bootinfo.c Fri Aug 1 09:54:11 2014 (r269373) @@ -29,7 +29,9 @@ __FBSDID("$FreeBSD$"); #include +#include #include +#include #include @@ -100,6 +102,81 @@ UINTN arm64_efi_mapkey; COPY32(0, a, c); \ } +static int +bi_getboothowto(char *kargs) +{ + char *cp; + char *p; + int howto; + int active; + int i; + + /* Parse kargs */ + howto = 0; + if (kargs != NULL) { + cp = kargs; + active = 0; + while (*cp != 0) { + if (!active && (*cp == '-')) + active = 1; + else if (active) + switch (*cp) { + case 'a': + howto |= RB_ASKNAME; + break; + case 'C': + howto |= RB_CDROM; + break; + case 'd': + howto |= RB_KDB; + break; + case 'D': + howto |= RB_MULTIPLE; + break; + case 'm': + howto |= RB_MUTE; + break; + case 'g': + howto |= RB_GDB; + break; + case 'h': + howto |= RB_SERIAL; + break; + case 'p': + howto |= RB_PAUSE; + break; + case 'r': + howto |= RB_DFLTROOT; + break; + case 's': + howto |= RB_SINGLE; + break; + case 'v': + howto |= RB_VERBOSE; + break; + default: + active = 0; + break; + } + cp++; + } + } + + /* get equivalents from the environment */ + for (i = 0; howto_names[i].ev != NULL; i++) { + if (getenv(howto_names[i].ev) != NULL) + howto |= howto_names[i].mask; + } + if ((p = getenv("console"))) { + if (!strcmp(p, "comconsole")) + howto |= RB_SERIAL; + if (!strcmp(p, "nullconsole")) + howto |= RB_MUTE; + } + + return(howto); +} + static vm_offset_t bi_copymodules(vm_offset_t addr) { @@ -203,6 +280,9 @@ bi_load(char *args, vm_offset_t *modulep uint64_t kernend; vm_offset_t addr, size; vm_offset_t dtbp; + int howto; + + howto = bi_getboothowto(args); /* find the last module in the chain */ addr = 0; @@ -220,6 +300,8 @@ bi_load(char *args, vm_offset_t *modulep panic("can't find kernel file"); kernend = 0; /* fill it in later */ + file_addmetadata(kfp, MODINFOMD_HOWTO, sizeof howto, &howto); + dtbfp = file_findfile(NULL, "dtb"); if (dtbfp != NULL) { printf("dtbfp = %llx %lld\n", dtbfp->f_addr, dtbfp->f_addr - kfp->f_addr); From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 10:32:40 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 05AA34CE; Fri, 1 Aug 2014 10:32:40 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CE5F0295D; Fri, 1 Aug 2014 10:32:39 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71AWdfH012967; Fri, 1 Aug 2014 10:32:39 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71AWdJT012966; Fri, 1 Aug 2014 10:32:39 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201408011032.s71AWdJT012966@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 1 Aug 2014 10:32:39 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269374 - projects/counters X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 10:32:40 -0000 Author: glebius Date: Fri Aug 1 10:32:39 2014 New Revision: 269374 URL: http://svnweb.freebsd.org/changeset/base/269374 Log: Delete branch that was dedicated to pre-head counter(9) development. Deleted: projects/counters/ From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 10:35:35 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id D8FBB608; Fri, 1 Aug 2014 10:35:35 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id AE4082988; Fri, 1 Aug 2014 10:35:35 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71AZZb2013417; Fri, 1 Aug 2014 10:35:35 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71AZZ71013416; Fri, 1 Aug 2014 10:35:35 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201408011035.s71AZZ71013416@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 1 Aug 2014 10:35:35 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269375 - projects/lwref X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 10:35:35 -0000 Author: glebius Date: Fri Aug 1 10:35:35 2014 New Revision: 269375 URL: http://svnweb.freebsd.org/changeset/base/269375 Log: Create branch for light weight reference counting mechanism. Added: - copied from r269374, head/ Directory Properties: projects/lwref/ (props changed) From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 13:33:49 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 3F8C6EE9; Fri, 1 Aug 2014 13:33:49 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 20850205C; Fri, 1 Aug 2014 13:33:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71DXmbt096658; Fri, 1 Aug 2014 13:33:48 GMT (envelope-from glebius@svn.freebsd.org) Received: (from glebius@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71DXldw096650; Fri, 1 Aug 2014 13:33:47 GMT (envelope-from glebius@svn.freebsd.org) Message-Id: <201408011333.s71DXldw096650@svn.freebsd.org> From: Gleb Smirnoff Date: Fri, 1 Aug 2014 13:33:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269377 - in projects/lwref/sys: amd64/amd64 conf kern sys X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 13:33:49 -0000 Author: glebius Date: Fri Aug 1 13:33:47 2014 New Revision: 269377 URL: http://svnweb.freebsd.org/changeset/base/269377 Log: Drop into subversion the proof-of-concept unfinished and dirty implementation of light weight reference counting mechanism. Added: projects/lwref/sys/amd64/amd64/lwref.S (contents, props changed) projects/lwref/sys/kern/subr_lwref.c (contents, props changed) projects/lwref/sys/sys/lwref.h (contents, props changed) Modified: projects/lwref/sys/amd64/amd64/apic_vector.S projects/lwref/sys/conf/files projects/lwref/sys/conf/files.amd64 projects/lwref/sys/kern/sched_ule.c projects/lwref/sys/sys/sched.h Modified: projects/lwref/sys/amd64/amd64/apic_vector.S ============================================================================== --- projects/lwref/sys/amd64/amd64/apic_vector.S Fri Aug 1 12:42:37 2014 (r269376) +++ projects/lwref/sys/amd64/amd64/apic_vector.S Fri Aug 1 13:33:47 2014 (r269377) @@ -70,6 +70,8 @@ IDTVEC(vec_name) ; \ movq %rsp, %rsi ; \ movl %eax, %edi ; /* pass the IRQ */ \ call lapic_handle_intr ; \ +.globl vec_name ## _ret ; \ +vec_name ## _ret : ; \ 1: ; \ MEXITCOUNT ; \ jmp doreti @@ -107,6 +109,8 @@ IDTVEC(timerint) FAKE_MCOUNT(TF_RIP(%rsp)) movq %rsp, %rdi call lapic_handle_timer +.globl timerint_ret +timerint_ret: MEXITCOUNT jmp doreti @@ -234,6 +238,8 @@ IDTVEC(ipi_intr_bitmap_handler) FAKE_MCOUNT(TF_RIP(%rsp)) call ipi_bitmap_handler +.globl ipi_intr_bitmap_handler_ret +ipi_intr_bitmap_handler_ret: MEXITCOUNT jmp doreti Added: projects/lwref/sys/amd64/amd64/lwref.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/lwref/sys/amd64/amd64/lwref.S Fri Aug 1 13:33:47 2014 (r269377) @@ -0,0 +1,32 @@ +#include + +/* + * void *lwref_acquire(lwref_t lwr, counter_u64_t *cp) + * { + * void *ptr; + * + * ptr = lwr->ptr; + * cp = &lwr->refs; + * + * counter_u64_add(*cp, 1); + * + * return (ptr); + * } + */ + +ENTRY(lwref_acquire) + mov (%rdi), %rax + mov 0x8(%rdi), %rcx + mov %rcx, (%rsi) + mov $__pcpu, %rdx + sub %rdx, %rcx + mov $100000, %r10 +cycle: + sub $1, %r10 + cmpq $0, %r10 + jne cycle + addq $1, %gs:(%rcx) +.globl lwref_acquire_ponr +lwref_acquire_ponr: + ret +END(lwref_acquire) Modified: projects/lwref/sys/conf/files ============================================================================== --- projects/lwref/sys/conf/files Fri Aug 1 12:42:37 2014 (r269376) +++ projects/lwref/sys/conf/files Fri Aug 1 13:33:47 2014 (r269377) @@ -2972,6 +2972,7 @@ kern/subr_kdb.c standard kern/subr_kobj.c standard kern/subr_lock.c standard kern/subr_log.c standard +kern/subr_lwref.c standard kern/subr_mbpool.c optional libmbpool kern/subr_mchain.c optional libmchain kern/subr_module.c standard Modified: projects/lwref/sys/conf/files.amd64 ============================================================================== --- projects/lwref/sys/conf/files.amd64 Fri Aug 1 12:42:37 2014 (r269376) +++ projects/lwref/sys/conf/files.amd64 Fri Aug 1 13:33:47 2014 (r269377) @@ -109,6 +109,7 @@ amd64/amd64/initcpu.c standard amd64/amd64/io.c optional io amd64/amd64/locore.S standard no-obj amd64/amd64/xen-locore.S optional xenhvm +amd64/amd64/lwref.S standard amd64/amd64/machdep.c standard amd64/amd64/mem.c optional mem amd64/amd64/minidump_machdep.c standard Modified: projects/lwref/sys/kern/sched_ule.c ============================================================================== --- projects/lwref/sys/kern/sched_ule.c Fri Aug 1 12:42:37 2014 (r269376) +++ projects/lwref/sys/kern/sched_ule.c Fri Aug 1 13:33:47 2014 (r269377) @@ -2707,6 +2707,27 @@ sched_fork_exit(struct thread *td) } /* + * Apply a function to every thread on runqueue. + */ +void +sched_foreach_on_runq(void(*func)(void *)) +{ + struct tdq *tdq; + struct thread *td; + + tdq = TDQ_SELF(); + + for (int i = 0; i < RQ_NQS; i++) { + TAILQ_FOREACH(td, &tdq->tdq_realtime.rq_queues[i], td_runq) + (func)(td); + TAILQ_FOREACH(td, &tdq->tdq_timeshare.rq_queues[i], td_runq) + (func)(td); + TAILQ_FOREACH(td, &tdq->tdq_idle.rq_queues[i], td_runq) + (func)(td); + } +} + +/* * Create on first use to catch odd startup conditons. */ char * Added: projects/lwref/sys/kern/subr_lwref.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/lwref/sys/kern/subr_lwref.c Fri Aug 1 13:33:47 2014 (r269377) @@ -0,0 +1,208 @@ +/*- + * Copyright (c) 2014 Gleb Smirnoff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +#include +#include +#include +#include /* XXXGL: M_TEMP */ +#include +#include +#include +#include +#include +#include + +#include +#include + +struct lwref { + void *ptr; + counter_u64_t refcnt; + struct mtx mtx; +}; + +static void lwref_change_action(void *v); + +#ifdef INVARIANTS +extern void Xrendezvous(void); +extern void Xtimerint(void); +#endif + +lwref_t +lwref_alloc(void *ptr, int flags) +{ + lwref_t lwr; + + lwr = malloc(sizeof(*lwr), M_TEMP, flags | M_ZERO); + if (lwr == NULL) + return (NULL); + lwr->refcnt = counter_u64_alloc(flags); + if (lwr->refcnt == NULL) { + free(lwr, M_TEMP); + return (NULL); + } + lwr->ptr = ptr; + mtx_init(&lwr->mtx, "lwref", NULL, MTX_DEF); + + return (lwr); +} + +struct lwref_change_ctx { + lwref_t lwr; + void *newptr; + counter_u64_t newcnt; + u_int cpu; + u_int oldcnt; +}; + +static void +lwref_fixup_rip(register_t *rip, const char *p) +{ + + if (*rip >= (register_t )lwref_acquire && + *rip < (register_t )lwref_acquire_ponr) { + if (p) + printf("%s: %p\n", p, (void *)*rip); + *rip = (register_t )lwref_acquire; + } +} + +static void +lwref_fixup_td(void *arg) +{ + struct thread *td = arg; + register_t *rbp; + + /* + * The timer interrupt trapframe is 3 functions deep: + * Xtimerint -> lapic_handle_timer -> mi_switch -> sched_switch, + * so in 99% this would work: + * + * tf = (struct trapframe *) + * ((register_t *)(***(void ****)(td->td_pcb->pcb_rbp)) + 2); + * + */ + for (rbp = (register_t *)td->td_pcb->pcb_rbp; + rbp && rbp < (register_t *)*rbp; + rbp = (register_t *)*rbp) { + struct trapframe *tf; + register_t rip = (register_t )*(rbp + 1); + + if ( + rip == (register_t )timerint_ret || + rip == (register_t )apic_isr1_ret || + rip == (register_t )apic_isr2_ret || + rip == (register_t )apic_isr3_ret || + rip == (register_t )apic_isr4_ret || + rip == (register_t )apic_isr5_ret || + rip == (register_t )apic_isr6_ret || + rip == (register_t )apic_isr7_ret || + rip == (register_t )ipi_intr_bitmap_handler_ret + ) { + struct trapframe *tf; + + tf = (struct trapframe *)(rbp + 2); + lwref_fixup_rip(&tf->tf_rip, __func__); + } + + tf = (struct trapframe *)(rbp + 2); + if (tf->tf_rip > (register_t )lwref_acquire && + tf->tf_rip < (register_t )lwref_acquire_ponr) + panic("lwref deteceted\n"); + } +} + +static void +lwref_change_action(void *v) +{ + struct lwref_change_ctx *ctx = v; + lwref_t lwr = ctx->lwr; + struct trapframe *tf; + + atomic_add_int(&ctx->oldcnt, *(uint64_t *)zpcpu_get(lwr->refcnt)); + + lwr->ptr = ctx->newptr; + lwr->refcnt = ctx->newcnt; + + sched_foreach_on_runq(lwref_fixup_td); + + if (ctx->cpu == curcpu) + /* We are not in IPI. */ + return; + + /* + * We are in IPI and we need to check the trap frame of + * the IPI, whether we interrupted lwref_acquire(). + * + * We are two functions deep below the trap frame: + * Xrendezvous -> smp_rendezvous_action -> lwref_change_action + */ + KASSERT(__builtin_return_address(0) > (void *)&smp_rendezvous_action && + __builtin_return_address(0) <= (void *)((char *)&smp_rendezvous_action + 506) && + __builtin_return_address(1) > (void *)&Xrendezvous && + __builtin_return_address(1) <= (void *)((char *)&Xrendezvous + 201), + ("%p called via invalid path: 0 %p 1 %p", __func__, + __builtin_return_address(0), __builtin_return_address(1))); + + /* After pushed %rbp and %rip begins the trap frame. */ + tf = (struct trapframe *) + ((register_t *)__builtin_frame_address(1) + 2); + lwref_fixup_rip(&tf->tf_rip, __func__); +} + +int +lwref_change(lwref_t lwr, void *newptr, void (*freefn)(void *, void *), + void *freearg) +{ + struct lwref_change_ctx ctx; + counter_u64_t orefcnt; + void *optr; + + ctx.newcnt = counter_u64_alloc(M_WAITOK); /* XXXGL */ + ctx.oldcnt = 0; + + mtx_lock(&lwr->mtx); + optr = lwr->ptr; + orefcnt = lwr->refcnt; + ctx.lwr = lwr; + ctx.newptr = newptr; + ctx.cpu = curcpu; /* XXXGL: race */ + smp_rendezvous(smp_no_rendevous_barrier, lwref_change_action, + smp_no_rendevous_barrier, &ctx); + mtx_unlock(&lwr->mtx); + + if (ctx.oldcnt == 0) { + (freefn)(freearg, optr); + counter_u64_free(orefcnt); + } else + printf("Leaking %p with cnt %p %u (%ju) refs\n", + optr, orefcnt, ctx.oldcnt, (uintmax_t )counter_u64_fetch(orefcnt)); + + return (0); +} Added: projects/lwref/sys/sys/lwref.h ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/lwref/sys/sys/lwref.h Fri Aug 1 13:33:47 2014 (r269377) @@ -0,0 +1,63 @@ +/*- + * Copyright (c) 2014 Gleb Smirnoff + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +#ifndef __SYS_LWREF_H__ +#define __SYS_LWREF_H__ + +#include + +struct lwref; +typedef struct lwref * lwref_t; + +lwref_t lwref_alloc(void *, int); +int lwref_change(lwref_t, void *, void(*)(void *, void *), void *); + +/* asm */ +void *lwref_acquire(lwref_t, counter_u64_t *); +extern char lwref_acquire_ponr[]; + +extern char timerint_ret[]; +extern char apic_isr1_ret[]; +extern char apic_isr2_ret[]; +extern char apic_isr3_ret[]; +extern char apic_isr4_ret[]; +extern char apic_isr5_ret[]; +extern char apic_isr6_ret[]; +extern char apic_isr7_ret[]; +extern char ipi_intr_bitmap_handler_ret[]; + +#ifdef INVARIANTS +#define lwref_release(p, c) do { \ + p = NULL; \ + counter_u64_add(c, -1); \ +} while (0) +#else +#define lwref_release(p, c) counter_u64_add(c, -1) +#endif + +#endif /* ! __SYS_LWREF_H__ */ Modified: projects/lwref/sys/sys/sched.h ============================================================================== --- projects/lwref/sys/sys/sched.h Fri Aug 1 12:42:37 2014 (r269376) +++ projects/lwref/sys/sys/sched.h Fri Aug 1 13:33:47 2014 (r269377) @@ -147,6 +147,11 @@ char *sched_tdname(struct thread *td); void sched_clear_tdname(struct thread *td); #endif +/* + * Used for lwref fixups. + */ +void sched_foreach_on_runq(void(*)(void *)); + static __inline void sched_pin(void) { From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 13:38:11 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 05D5E119; Fri, 1 Aug 2014 13:38:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E855F20B2; Fri, 1 Aug 2014 13:38:10 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71DcAZP097321; Fri, 1 Aug 2014 13:38:10 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71DcAr1097320; Fri, 1 Aug 2014 13:38:10 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011338.s71DcAr1097320@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 13:38:10 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269378 - projects/arm64/sys/arm64/include X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 13:38:11 -0000 Author: andrew Date: Fri Aug 1 13:38:10 2014 New Revision: 269378 URL: http://svnweb.freebsd.org/changeset/base/269378 Log: Adjust a comment to put the words in the correct order Modified: projects/arm64/sys/arm64/include/bus.h Modified: projects/arm64/sys/arm64/include/bus.h ============================================================================== --- projects/arm64/sys/arm64/include/bus.h Fri Aug 1 13:33:47 2014 (r269377) +++ projects/arm64/sys/arm64/include/bus.h Fri Aug 1 13:38:10 2014 (r269378) @@ -225,7 +225,7 @@ struct bus_space { void (*bs_rr_8_s) (void *, bus_space_handle_t, bus_size_t, u_int64_t *, bus_size_t); - /* write stream (single) */ + /* write single stream */ void (*bs_w_1_s) (void *, bus_space_handle_t, bus_size_t, u_int8_t); void (*bs_w_2_s) (void *, bus_space_handle_t, From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 13:39:50 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 0FFF43C4; Fri, 1 Aug 2014 13:39:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id E67AA20D6; Fri, 1 Aug 2014 13:39:49 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71DdnWA097725; Fri, 1 Aug 2014 13:39:49 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71Ddn1E097720; Fri, 1 Aug 2014 13:39:49 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011339.s71Ddn1E097720@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 13:39:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269379 - in projects/arm64/sys: arm64/arm64 conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 13:39:50 -0000 Author: andrew Date: Fri Aug 1 13:39:49 2014 New Revision: 269379 URL: http://svnweb.freebsd.org/changeset/base/269379 Log: Add entries for all bus_space functions, most are still NULL. Added: projects/arm64/sys/arm64/arm64/bus_space_asm.S (contents, props changed) Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c projects/arm64/sys/conf/files.arm64 Modified: projects/arm64/sys/arm64/arm64/bus_machdep.c ============================================================================== --- projects/arm64/sys/arm64/arm64/bus_machdep.c Fri Aug 1 13:38:10 2014 (r269378) +++ projects/arm64/sys/arm64/arm64/bus_machdep.c Fri Aug 1 13:39:49 2014 (r269379) @@ -33,6 +33,16 @@ __FBSDID("$FreeBSD$"); #include +uint8_t generic_bs_r_1(void *, bus_space_handle_t, bus_size_t); +uint16_t generic_bs_r_2(void *, bus_space_handle_t, bus_size_t); +uint32_t generic_bs_r_4(void *, bus_space_handle_t, bus_size_t); +uint64_t generic_bs_r_8(void *, bus_space_handle_t, bus_size_t); + +void generic_bs_w_1(void *, bus_space_handle_t, bus_size_t, uint8_t); +void generic_bs_w_2(void *, bus_space_handle_t, bus_size_t, uint16_t); +void generic_bs_w_4(void *, bus_space_handle_t, bus_size_t, uint32_t); +void generic_bs_w_8(void *, bus_space_handle_t, bus_size_t, uint64_t); + static int generic_bs_map(void *t, bus_addr_t bpa, bus_size_t size, int flags, bus_space_handle_t *bshp) @@ -60,4 +70,96 @@ struct bus_space memmap_bus = { /* mapping/unmapping */ .bs_map = generic_bs_map, .bs_unmap = generic_bs_unmap, + .bs_subregion = NULL, + + /* allocation/deallocation */ + .bs_alloc = NULL, + .bs_free = NULL, + + /* barrier */ + .bs_barrier = NULL, + + /* read single */ + .bs_r_1 = generic_bs_r_1, + .bs_r_2 = generic_bs_r_2, + .bs_r_4 = generic_bs_r_4, + .bs_r_8 = generic_bs_r_8, + + /* read multiple */ + .bs_rm_1 = NULL, + .bs_rm_2 = NULL, + .bs_rm_4 = NULL, + .bs_rm_8 = NULL, + + /* write single */ + .bs_w_1 = generic_bs_w_1, + .bs_w_2 = generic_bs_w_2, + .bs_w_4 = generic_bs_w_4, + .bs_w_8 = generic_bs_w_8, + + /* write multiple */ + .bs_wm_1 = NULL, + .bs_wm_2 = NULL, + .bs_wm_4 = NULL, + .bs_wm_8 = NULL, + + /* write region */ + .bs_wr_1 = NULL, + .bs_wr_2 = NULL, + .bs_wr_4 = NULL, + .bs_wr_8 = NULL, + + /* set multiple */ + .bs_sm_1 = NULL, + .bs_sm_2 = NULL, + .bs_sm_4 = NULL, + .bs_sm_8 = NULL, + + /* set region */ + .bs_sr_1 = NULL, + .bs_sr_2 = NULL, + .bs_sr_4 = NULL, + .bs_sr_8 = NULL, + + /* copy */ + .bs_c_1 = NULL, + .bs_c_2 = NULL, + .bs_c_4 = NULL, + .bs_c_8 = NULL, + + /* read single stream */ + .bs_r_1_s = NULL, + .bs_r_2_s = NULL, + .bs_r_4_s = NULL, + .bs_r_8_s = NULL, + + /* read multiple stream */ + .bs_rm_1_s = NULL, + .bs_rm_2_s = NULL, + .bs_rm_4_s = NULL, + .bs_rm_8_s = NULL, + + /* read region stream */ + .bs_rr_1_s = NULL, + .bs_rr_2_s = NULL, + .bs_rr_4_s = NULL, + .bs_rr_8_s = NULL, + + /* write single stream */ + .bs_w_1_s = NULL, + .bs_w_2_s = NULL, + .bs_w_4_s = NULL, + .bs_w_8_s = NULL, + + /* write multiple stream */ + .bs_wm_1_s = NULL, + .bs_wm_2_s = NULL, + .bs_wm_4_s = NULL, + .bs_wm_8_s = NULL, + + /* write region stream */ + .bs_wr_1_s = NULL, + .bs_wr_2_s = NULL, + .bs_wr_4_s = NULL, + .bs_wr_8_s = NULL, }; Added: projects/arm64/sys/arm64/arm64/bus_space_asm.S ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/arm64/sys/arm64/arm64/bus_space_asm.S Fri Aug 1 13:39:49 2014 (r269379) @@ -0,0 +1,71 @@ +/*- + * Copyright (c) 2014 Andrew Turner + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + */ + +#include + +__FBSDID("$FreeBSD$"); + +ENTRY(generic_bs_r_1) + ldrb w0, [x1, x2] + ret +END(generic_bs_r_1) + +ENTRY(generic_bs_r_2) + ldrh w0, [x1, x2] + ret +END(generic_bs_r_2) + +ENTRY(generic_bs_r_4) + ldr w0, [x1, x2] + ret +END(generic_bs_r_4) + +ENTRY(generic_bs_r_8) + ldr x0, [x1, x2] + ret +END(generic_bs_r_8) + +ENTRY(generic_bs_w_1) + strb w3, [x1, x2] + ret +END(generic_bs_w_1) + +ENTRY(generic_bs_w_2) + strh w3, [x1, x2] + ret +END(generic_bs_w_2) + +ENTRY(generic_bs_w_4) + str w3, [x1, x2] + ret +END(generic_bs_w_4) + +ENTRY(generic_bs_w_8) + str x3, [x1, x2] + ret +END(generic_bs_r_8) + Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Fri Aug 1 13:38:10 2014 (r269378) +++ projects/arm64/sys/conf/files.arm64 Fri Aug 1 13:39:49 2014 (r269379) @@ -3,6 +3,7 @@ arm/arm/devmap.c standard arm64/arm64/autoconf.c standard arm64/arm64/bcopy.c standard arm64/arm64/bus_machdep.c standard +arm64/arm64/bus_space_asm.S standard arm64/arm64/busdma_machdep.c standard arm64/arm64/clock.c standard arm64/arm64/copyinout.c standard From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 13:44:34 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 5450556F; Fri, 1 Aug 2014 13:44:34 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 2823421A1; Fri, 1 Aug 2014 13:44:34 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71DiYbp001672; Fri, 1 Aug 2014 13:44:34 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71DiX4B001671; Fri, 1 Aug 2014 13:44:33 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011344.s71DiX4B001671@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 13:44:33 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269380 - projects/arm64/sys/arm64/arm64 X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 13:44:34 -0000 Author: andrew Date: Fri Aug 1 13:44:33 2014 New Revision: 269380 URL: http://svnweb.freebsd.org/changeset/base/269380 Log: Use the memmap_bus tag in nexus Modified: projects/arm64/sys/arm64/arm64/nexus.c Modified: projects/arm64/sys/arm64/arm64/nexus.c ============================================================================== --- projects/arm64/sys/arm64/arm64/nexus.c Fri Aug 1 13:39:49 2014 (r269379) +++ projects/arm64/sys/arm64/arm64/nexus.c Fri Aug 1 13:44:33 2014 (r269380) @@ -67,6 +67,8 @@ __FBSDID("$FreeBSD$"); #include "ofw_bus_if.h" #endif +extern struct bus_space memmap_bus; + static MALLOC_DEFINE(M_NEXUSDEV, "nexusdev", "Nexus device"); struct nexus_device { @@ -273,7 +275,6 @@ nexus_teardown_intr(device_t dev, device panic("nexus_teardown_intr"); } - static int nexus_activate_resource(device_t bus, device_t child, int type, int rid, struct resource *r) @@ -292,25 +293,12 @@ nexus_activate_resource(device_t bus, de if (type == SYS_RES_MEMORY || type == SYS_RES_IOPORT) { paddr = (bus_addr_t)rman_get_start(r); psize = (bus_size_t)rman_get_size(r); -#if 0 -#ifdef FDT - err = bus_space_map(fdtbus_bs_tag, paddr, psize, 0, &vaddr); + err = bus_space_map(&memmap_bus, paddr, psize, 0, &vaddr); if (err != 0) { rman_deactivate_resource(r); return (err); } - rman_set_bustag(r, fdtbus_bs_tag); -#else - vaddr = (bus_space_handle_t)pmap_mapdev((vm_offset_t)paddr, - (vm_size_t)psize); - if (vaddr == 0) { - rman_deactivate_resource(r); - return (ENOMEM); - } - rman_set_bustag(r, (void *)1); -#endif -#endif - panic("nexus_activate_resource"); + rman_set_bustag(r, &memmap_bus); rman_set_virtual(r, (void *)vaddr); rman_set_bushandle(r, vaddr); } @@ -328,14 +316,7 @@ nexus_deactivate_resource(device_t bus, vaddr = rman_get_bushandle(r); if (vaddr != 0) { -#if 0 -#ifdef FDT - bus_space_unmap(fdtbus_bs_tag, vaddr, psize); -#else - pmap_unmapdev((vm_offset_t)vaddr, (vm_size_t)psize); -#endif -#endif - panic("nexus_deactivate_resource"); + bus_space_unmap(&memmap_bus, vaddr, psize); rman_set_virtual(r, NULL); rman_set_bushandle(r, 0); } From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 13:54:59 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 72A889A3; Fri, 1 Aug 2014 13:54:59 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 60BB422CD; Fri, 1 Aug 2014 13:54:59 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71Dsx5Z006246; Fri, 1 Aug 2014 13:54:59 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71DsxTp006220; Fri, 1 Aug 2014 13:54:59 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011354.s71DsxTp006220@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 13:54:59 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269381 - projects/arm64/sys/arm64/conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 13:54:59 -0000 Author: andrew Date: Fri Aug 1 13:54:58 2014 New Revision: 269381 URL: http://svnweb.freebsd.org/changeset/base/269381 Log: Add FDT to the kernel now it's supported. Modified: projects/arm64/sys/arm64/conf/GENERIC Modified: projects/arm64/sys/arm64/conf/GENERIC ============================================================================== --- projects/arm64/sys/arm64/conf/GENERIC Fri Aug 1 13:44:33 2014 (r269380) +++ projects/arm64/sys/arm64/conf/GENERIC Fri Aug 1 13:54:58 2014 (r269381) @@ -100,3 +100,4 @@ device firmware # firmware assist modul # Note that 'bpf' is required for DHCP. device bpf # Berkeley packet filter +options FDT From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 14:10:11 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 9A8A1EE4; Fri, 1 Aug 2014 14:10:11 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 7B762252F; Fri, 1 Aug 2014 14:10:11 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71EABdk012215; Fri, 1 Aug 2014 14:10:11 GMT (envelope-from andrew@svn.freebsd.org) Received: (from andrew@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71EAB7M012213; Fri, 1 Aug 2014 14:10:11 GMT (envelope-from andrew@svn.freebsd.org) Message-Id: <201408011410.s71EAB7M012213@svn.freebsd.org> From: Andrew Turner Date: Fri, 1 Aug 2014 14:10:11 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269382 - in projects/arm64/sys: arm/arm conf X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 14:10:11 -0000 Author: andrew Date: Fri Aug 1 14:10:10 2014 New Revision: 269382 URL: http://svnweb.freebsd.org/changeset/base/269382 Log: Alos use the GICv2 driver on arm64. No interrupts are working yet as we are still missing the code to handle the correct exception. Modified: projects/arm64/sys/arm/arm/gic.c projects/arm64/sys/conf/files.arm64 Modified: projects/arm64/sys/arm/arm/gic.c ============================================================================== --- projects/arm64/sys/arm/arm/gic.c Fri Aug 1 13:54:58 2014 (r269381) +++ projects/arm64/sys/arm/arm/gic.c Fri Aug 1 14:10:10 2014 (r269382) @@ -47,7 +47,9 @@ __FBSDID("$FreeBSD$"); #include #include #include +#if 0 #include +#endif #include #include @@ -104,6 +106,12 @@ struct arm_gic_softc { uint32_t nirqs; }; +static struct ofw_compat_data compat_data[] = { + { "arm,cortex-a9-gic", 1 }, + { "arm,gic", 1 }, + { NULL, 0 }, +}; + static struct resource_spec arm_gic_spec[] = { { SYS_RES_MEMORY, 0, RF_ACTIVE }, /* Distributor registers */ { SYS_RES_MEMORY, 1, RF_ACTIVE }, /* CPU Interrupt Intf. registers */ @@ -132,12 +140,14 @@ arm_gic_probe(device_t dev) if (!ofw_bus_status_okay(dev)) return (ENXIO); - if (!ofw_bus_is_compatible(dev, "arm,gic")) + if (!ofw_bus_search_compatible(dev, compat_data)->ocd_data) return (ENXIO); + device_set_desc(dev, "ARM Generic Interrupt Controller"); return (BUS_PROBE_DEFAULT); } +#if 0 void gic_init_secondary(void) { @@ -167,6 +177,7 @@ gic_init_secondary(void) /* Activate IRQ 29, ie private timer IRQ*/ gic_d_write_4(GICD_ISENABLER(29 >> 5), (1UL << (29 & 0x1F))); } +#endif static int arm_gic_attach(device_t dev) @@ -206,9 +217,11 @@ arm_gic_attach(device_t dev) sc->nirqs = gic_d_read_4(GICD_TYPER); sc->nirqs = 32 * ((sc->nirqs & 0x1f) + 1); +#if 0 /* Set up function pointers */ arm_post_filter = gic_post_filter; arm_config_irq = gic_config_irq; +#endif icciidr = gic_c_read_4(GICC_IIDR); device_printf(dev,"pn 0x%x, arch 0x%x, rev 0x%x, implementer 0x%x sc->nirqs %u\n", @@ -262,6 +275,7 @@ static driver_t arm_gic_driver = { static devclass_t arm_gic_devclass; DRIVER_MODULE(gic, simplebus, arm_gic_driver, arm_gic_devclass, 0, 0); +DRIVER_MODULE(gic, ofwbus, arm_gic_driver, arm_gic_devclass, 0, 0); static void gic_post_filter(void *arg) @@ -271,6 +285,7 @@ gic_post_filter(void *arg) gic_c_write_4(GICC_EOIR, irq); } +#if 0 int arm_get_next_irq(int last_irq) { @@ -311,6 +326,7 @@ arm_unmask_irq(uintptr_t nb) gic_d_write_4(GICD_ISENABLER(nb >> 5), (1UL << (nb & 0x1F))); } +#endif static int gic_config_irq(int irq, enum intr_trigger trig, Modified: projects/arm64/sys/conf/files.arm64 ============================================================================== --- projects/arm64/sys/conf/files.arm64 Fri Aug 1 13:54:58 2014 (r269381) +++ projects/arm64/sys/conf/files.arm64 Fri Aug 1 14:10:10 2014 (r269382) @@ -1,5 +1,6 @@ arm/arm/devmap.c standard +arm/arm/gic.c standard arm64/arm64/autoconf.c standard arm64/arm64/bcopy.c standard arm64/arm64/bus_machdep.c standard From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 15:17:47 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id E9A323F0; Fri, 1 Aug 2014 15:17:47 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id CAA3D2D19; Fri, 1 Aug 2014 15:17:47 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71FHlk5044329; Fri, 1 Aug 2014 15:17:47 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71FHkkI044319; Fri, 1 Aug 2014 15:17:46 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201408011517.s71FHkkI044319@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Fri, 1 Aug 2014 15:17:46 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269386 - in projects/ipfw: sbin/ipfw sys/netinet sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 15:17:48 -0000 Author: melifaro Date: Fri Aug 1 15:17:46 2014 New Revision: 269386 URL: http://svnweb.freebsd.org/changeset/base/269386 Log: * Permit limiting number of items in table. Kernel changes: * Add TEI_FLAGS_DONTADD entry flag to indicate that insert is not possible * Support given flag in all algorithms * Add "limit" field to ipfw_xtable_info * Add actual limiting code into add_table_entry() Userland changes: * Add "limit" option as "create" table sub-option. Limit modification is currently impossible. * Print human-readable errors in table enry addition/deletion code. Modified: projects/ipfw/sbin/ipfw/ipfw2.c projects/ipfw/sbin/ipfw/ipfw2.h projects/ipfw/sbin/ipfw/tables.c projects/ipfw/sys/netinet/ip_fw.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sbin/ipfw/ipfw2.c ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.c Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sbin/ipfw/ipfw2.c Fri Aug 1 15:17:46 2014 (r269386) @@ -580,11 +580,12 @@ do_cmd(int optname, void *optval, uintpt * * Assumes op3 header is already embedded. * Calls setsockopt() with IP_FW3 as kernel-visible opcode. - * Returns 0 on success or -1 otherwise. + * Returns 0 on success or errno otherwise. */ int do_set3(int optname, ip_fw3_opheader *op3, uintptr_t optlen) { + int errno; if (co.test_only) return (0); @@ -596,7 +597,10 @@ do_set3(int optname, ip_fw3_opheader *op op3->opcode = optname; - return (setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen)); + if (setsockopt(ipfw_socket, IPPROTO_IP, IP_FW3, op3, optlen) != 0) + return (errno); + + return (0); } int Modified: projects/ipfw/sbin/ipfw/ipfw2.h ============================================================================== --- projects/ipfw/sbin/ipfw/ipfw2.h Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sbin/ipfw/ipfw2.h Fri Aug 1 15:17:46 2014 (r269386) @@ -255,8 +255,6 @@ char const *match_value(struct _s_x *p, size_t concat_tokens(char *buf, size_t bufsize, struct _s_x *table, char *delimiter); void fill_flags(struct _s_x *flags, char *p, uint8_t *set, uint8_t *clear); -void print_flags(char const *name, struct _s_x *list, uint8_t set, - uint8_t clear); void print_flags_buffer(char *buf, size_t sz, struct _s_x *list, uint8_t set); struct _ip_fw3_opheader; Modified: projects/ipfw/sbin/ipfw/tables.c ============================================================================== --- projects/ipfw/sbin/ipfw/tables.c Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sbin/ipfw/tables.c Fri Aug 1 15:17:46 2014 (r269386) @@ -251,9 +251,10 @@ table_fill_objheader(ipfw_obj_header *oh } static struct _s_x tablenewcmds[] = { - { "type", TOK_TYPE}, + { "type", TOK_TYPE }, { "valtype", TOK_VALTYPE }, { "algo", TOK_ALGO }, + { "limit", TOK_LIMIT }, { NULL, 0 } }; @@ -341,6 +342,11 @@ table_create(ipfw_obj_header *oh, int ac ac--; av++; switch (tcmd) { + case TOK_LIMIT: + NEED1("limit value required"); + xi.limit = strtol(*av, NULL, 10); + ac--; av++; + break; case TOK_TYPE: NEED1("table type required"); /* Type may have suboptions after ':' */ @@ -485,6 +491,8 @@ table_show_info(ipfw_xtable_info *i, voi printf(" valtype: %s, references: %u\n", vtype, i->refcnt); printf(" algorithm: %s\n", i->algoname); printf(" items: %u, size: %u\n", i->count, i->size); + if (i->limit > 0) + printf(" limit: %u\n", i->limit); return (0); } @@ -561,8 +569,8 @@ table_modify_record(ipfw_obj_header *oh, ipfw_obj_tentry tent; ipfw_xtable_info xi; uint8_t type, vtype; - int cmd; - char *texterr; + int cmd, error; + char *texterr, *etxt; if (ac == 0) errx(EX_USAGE, "address required"); @@ -592,14 +600,34 @@ table_modify_record(ipfw_obj_header *oh, if (ac > 0) tentry_fill_value(oh, &tent, *av, type, vtype); cmd = IP_FW_TABLE_XADD; - texterr = "setsockopt(IP_FW_TABLE_XADD)"; + texterr = "Adding record failed"; } else { cmd = IP_FW_TABLE_XDEL; - texterr = "setsockopt(IP_FW_TABLE_XDEL)"; + texterr = "Deleting record failed"; + } + + if ((error = table_do_modify_record(cmd, oh, &tent, update)) == 0) + return; + + /* Try to provide more human-readable error */ + switch (error) { + case EEXIST: + etxt = "record already exists"; + break; + case EFBIG: + etxt = "limit hit"; + break; + case ESRCH: + etxt = "table not found"; + break; + case ENOENT: + etxt = "record not found"; + break; + default: + etxt = strerror(error); } - if (table_do_modify_record(cmd, oh, &tent, update) != 0) - err(EX_OSERR, "%s", texterr); + errx(EX_OSERR, "%s: %s", texterr, etxt); } static int Modified: projects/ipfw/sys/netinet/ip_fw.h ============================================================================== --- projects/ipfw/sys/netinet/ip_fw.h Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sys/netinet/ip_fw.h Fri Aug 1 15:17:46 2014 (r269386) @@ -827,6 +827,8 @@ typedef struct _ipfw_xtable_info { uint32_t refcnt; /* number of references */ uint32_t count; /* Number of records */ uint32_t size; /* Total size of records(export)*/ + uint32_t limit; /* Max number of records */ + uint32_t spare; char tablename[64]; /* table name */ char algoname[64]; /* algorithm name */ ifpw_ta_tinfo ta_info; /* additional algo stats */ Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Fri Aug 1 15:17:46 2014 (r269386) @@ -78,8 +78,9 @@ struct table_config { uint8_t vtype; /* format table type */ uint8_t linked; /* 1 if already linked */ uint8_t tflags; /* type flags */ - uint8_t spare; + uint8_t spare; uint32_t count; /* Number of records */ + uint32_t limit; /* Max number of records */ uint64_t flags; /* state flags */ char tablename[64]; /* table name */ struct table_algo *ta; /* Callbacks for given algo */ @@ -102,7 +103,7 @@ static struct table_config *alloc_table_ static void free_table_config(struct namedobj_instance *ni, struct table_config *tc); static int create_table_internal(struct ip_fw_chain *ch, struct tid_info *ti, - char *aname, uint8_t tflags, uint8_t vtype); + char *aname, ipfw_xtable_info *i); static void link_table(struct ip_fw_chain *chain, struct table_config *tc); static void unlink_table(struct ip_fw_chain *chain, struct table_config *tc); static void free_table_state(void **state, void **xstate, uint8_t type); @@ -132,7 +133,6 @@ static struct table_algo *find_table_alg #define KIDX_TO_TI(ch, k) (&(((struct table_info *)(ch)->tablestate)[k])) - int add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, struct tentry_info *tei) @@ -144,6 +144,7 @@ add_table_entry(struct ip_fw_chain *ch, int error; uint32_t num; uint64_t aflags; + ipfw_xtable_info xi; char ta_buf[128]; IPFW_UH_WLOCK(ch); @@ -160,6 +161,13 @@ add_table_entry(struct ip_fw_chain *ch, return (EINVAL); } + /* Try to exit early on limit hit */ + if (tc->limit != 0 && tc->count == tc->limit && + (tei->flags & TEI_FLAGS_UPDATE) == 0) { + IPFW_UH_WUNLOCK(ch); + return (EFBIG); + } + /* Reference and unlock */ tc->no.refcnt++; ta = tc->ta; @@ -172,7 +180,10 @@ add_table_entry(struct ip_fw_chain *ch, if ((tei->flags & TEI_FLAGS_COMPAT) == 0) return (ESRCH); - error = create_table_internal(ch, ti, NULL, 0, IPFW_VTYPE_U32); + memset(&xi, 0, sizeof(xi)); + xi.vtype = IPFW_VTYPE_U32; + + error = create_table_internal(ch, ti, NULL, &xi); if (error != 0) return (error); @@ -223,6 +234,22 @@ add_table_entry(struct ip_fw_chain *ch, /* Update aflags since it can be changed after previous read */ aflags = tc->flags; + /* Check limit before adding */ + if (tc->limit != 0 && tc->count == tc->limit) { + if ((tei->flags & TEI_FLAGS_UPDATE) == 0) { + IPFW_UH_WUNLOCK(ch); + return (EFBIG); + } + + /* + * We have UPDATE flag set. + * Permit updating record (if found), + * but restrict adding new one since we've + * already hit the limit. + */ + tei->flags |= TEI_FLAGS_DONTADD; + } + /* We've got valid table in @tc. Let's add data */ kidx = tc->no.kidx; ta = tc->ta; @@ -1187,7 +1214,7 @@ ipfw_create_table(struct ip_fw_chain *ch } IPFW_UH_RUNLOCK(ch); - return (create_table_internal(ch, &ti, aname, i->tflags, i->vtype)); + return (create_table_internal(ch, &ti, aname, i)); } /* @@ -1200,7 +1227,7 @@ ipfw_create_table(struct ip_fw_chain *ch */ static int create_table_internal(struct ip_fw_chain *ch, struct tid_info *ti, - char *aname, uint8_t tflags, uint8_t vtype) + char *aname, ipfw_xtable_info *i) { struct namedobj_instance *ni; struct table_config *tc; @@ -1212,10 +1239,13 @@ create_table_internal(struct ip_fw_chain ta = find_table_algo(CHAIN_TO_TCFG(ch), ti, aname); if (ta == NULL) return (ENOTSUP); - - if ((tc = alloc_table_config(ch, ti, ta, aname, tflags, vtype)) == NULL) + + tc = alloc_table_config(ch, ti, ta, aname, i->tflags, i->vtype); + if (tc == NULL) return (ENOMEM); + tc->limit = i->limit; + IPFW_UH_WLOCK(ch); /* Check if table has been already created */ @@ -1293,6 +1323,7 @@ export_table_info(struct ip_fw_chain *ch i->kidx = tc->no.kidx; i->refcnt = tc->no.refcnt; i->count = tc->count; + i->limit = tc->limit; i->size = tc->count * sizeof(ipfw_obj_tentry); i->size += sizeof(ipfw_obj_header) + sizeof(ipfw_xtable_info); strlcpy(i->tablename, tc->tablename, sizeof(i->tablename)); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Fri Aug 1 15:17:46 2014 (r269386) @@ -58,9 +58,10 @@ struct tentry_info { uint16_t flags; /* record flags */ uint32_t value; /* value */ }; -#define TEI_FLAGS_UPDATE 0x01 /* Update record if exists */ +#define TEI_FLAGS_UPDATE 0x01 /* Add or update rec if exists */ #define TEI_FLAGS_UPDATED 0x02 /* Entry has been updated */ #define TEI_FLAGS_COMPAT 0x04 /* Called from old ABI */ +#define TEI_FLAGS_DONTADD 0x08 /* Do not create new rec */ typedef int (ta_init)(struct ip_fw_chain *ch, void **ta_state, struct table_info *ti, char *data, uint8_t tflags); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 15:10:55 2014 (r269385) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Fri Aug 1 15:17:46 2014 (r269386) @@ -411,22 +411,12 @@ ta_add_cidr(void *ta_state, struct table else rnh = ti->xstate; - rn = rnh->rnh_addaddr(tb->addr_ptr, tb->mask_ptr, rnh, tb->ent_ptr); - - if (rn == NULL) { + /* Search for an entry first */ + rn = rnh->rnh_lookup(tb->addr_ptr, tb->mask_ptr, rnh); + if (rn != NULL) { if ((tei->flags & TEI_FLAGS_UPDATE) == 0) return (EEXIST); /* Record already exists. Update value if we're asked to */ - rn = rnh->rnh_lookup(tb->addr_ptr, tb->mask_ptr, rnh); - if (rn == NULL) { - - /* - * Radix may have failed addition for other reasons - * like failure in mask allocation code. - */ - return (EINVAL); - } - if (tei->subtype == AF_INET) { /* IPv4. */ value = ((struct radix_cidr_entry *)tb->ent_ptr)->value; @@ -444,6 +434,15 @@ ta_add_cidr(void *ta_state, struct table return (0); } + if ((tei->flags & TEI_FLAGS_DONTADD) != 0) + return (EFBIG); + + rn = rnh->rnh_addaddr(tb->addr_ptr, tb->mask_ptr, rnh, tb->ent_ptr); + if (rn == NULL) { + /* Unknown error */ + return (EINVAL); + } + tb->ent_ptr = NULL; *pnum = 1; @@ -1167,6 +1166,8 @@ ta_add_chash(void *ta_state, struct tabl tei->flags |= TEI_FLAGS_UPDATED; *pnum = 0; } else { + if ((tei->flags & TEI_FLAGS_DONTADD) != 0) + return (EFBIG); SLIST_INSERT_HEAD(&head[hash], ent, next); tb->ent_ptr = NULL; *pnum = 1; @@ -1715,6 +1716,9 @@ ta_add_ifidx(void *ta_state, struct tabl return (0); } + if ((tei->flags & TEI_FLAGS_DONTADD) != 0) + return (EFBIG); + /* Link to internal list */ ipfw_objhash_add(icfg->ii, &ife->no); @@ -2206,6 +2210,9 @@ ta_add_numarray(void *ta_state, struct t return (0); } + if ((tei->flags & TEI_FLAGS_DONTADD) != 0) + return (EFBIG); + res = badd(&tb->na.number, &tb->na, cfg->main_ptr, cfg->used, sizeof(struct numarray), compare_numarray); @@ -2891,6 +2898,9 @@ ta_add_fhash(void *ta_state, struct tabl tei->flags |= TEI_FLAGS_UPDATED; *pnum = 0; } else { + if ((tei->flags & TEI_FLAGS_DONTADD) != 0) + return (EFBIG); + SLIST_INSERT_HEAD(&head[hash], ent, next); tb->ent_ptr = NULL; *pnum = 1; From owner-svn-src-projects@FreeBSD.ORG Fri Aug 1 17:24:50 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id BC26DBB2; Fri, 1 Aug 2014 17:24:50 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A351F2C6D; Fri, 1 Aug 2014 17:24:50 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s71HOoPp006031; Fri, 1 Aug 2014 17:24:50 GMT (envelope-from jmg@svn.freebsd.org) Received: (from jmg@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s71HOiRU005871; Fri, 1 Aug 2014 17:24:44 GMT (envelope-from jmg@svn.freebsd.org) Message-Id: <201408011724.s71HOiRU005871@svn.freebsd.org> From: John-Mark Gurney Date: Fri, 1 Aug 2014 17:24:44 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269389 - in projects/pciehp: . bin/chio bin/csh bin/ed bin/freebsd-version bin/ls bin/mv bin/pkill bin/ps bin/rm bin/rmail bin/setfacl bin/sh bin/sh/tests/builtins bin/sh/tests/paramet... X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Aug 2014 17:24:50 -0000 Author: jmg Date: Fri Aug 1 17:24:36 2014 New Revision: 269389 URL: http://svnweb.freebsd.org/changeset/base/269389 Log: merge @269363 Added: projects/pciehp/.arclint - copied unchanged from r269363, head/.arclint projects/pciehp/bin/sh/tests/builtins/break6.0 - copied unchanged from r269363, head/bin/sh/tests/builtins/break6.0 projects/pciehp/bin/sh/tests/parameters/positional3.0 - copied unchanged from r269363, head/bin/sh/tests/parameters/positional3.0 projects/pciehp/bin/sh/tests/parameters/positional4.0 - copied unchanged from r269363, head/bin/sh/tests/parameters/positional4.0 projects/pciehp/bin/sh/tests/parameters/positional5.0 - copied unchanged from r269363, head/bin/sh/tests/parameters/positional5.0 projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggencoding.d - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggencoding.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggencoding.d.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggencoding.d.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.agghist.d - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.agghist.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.agghist.d.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.agghist.d.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpack.d - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpack.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpack.d.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpack.d.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackbanner.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackbanner.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackbanner.ksh.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackbanner.ksh.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackzoom.d - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackzoom.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackzoom.d.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggpackzoom.d.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggzoom.d - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggzoom.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggzoom.d.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.aggzoom.d.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/ - copied from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/json/ projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.fds.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.fds.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.getf.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.getf.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.procpriv.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.procpriv.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.providers.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.providers.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/strtoll/ - copied from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/strtoll/ projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/ - copied from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/uctf/ projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.multiprov.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.multiprov.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.multiprov.ksh.out - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.multiprov.ksh.out projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noprobes.ksh - copied unchanged from r269363, head/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/usdt/tst.noprobes.ksh projects/pciehp/cddl/contrib/opensolaris/common/util/ - copied from r269363, head/cddl/contrib/opensolaris/common/util/ projects/pciehp/contrib/apr/CMakeLists.txt - copied unchanged from r269363, head/contrib/apr/CMakeLists.txt projects/pciehp/contrib/apr/README.cmake - copied unchanged from r269363, head/contrib/apr/README.cmake projects/pciehp/contrib/apr/encoding/ - copied from r269363, head/contrib/apr/encoding/ projects/pciehp/contrib/apr/include/apr.hwc - copied unchanged from r269363, head/contrib/apr/include/apr.hwc projects/pciehp/contrib/apr/include/apr_escape.h - copied unchanged from r269363, head/contrib/apr/include/apr_escape.h projects/pciehp/contrib/apr/include/apr_skiplist.h - copied unchanged from r269363, head/contrib/apr/include/apr_skiplist.h projects/pciehp/contrib/apr/include/private/ - copied from r269363, head/contrib/apr/include/private/ projects/pciehp/contrib/apr/poll/unix/z_asio.c - copied unchanged from r269363, head/contrib/apr/poll/unix/z_asio.c projects/pciehp/contrib/apr/tables/apr_skiplist.c - copied unchanged from r269363, head/contrib/apr/tables/apr_skiplist.c projects/pciehp/contrib/apr/tools/ - copied from r269363, head/contrib/apr/tools/ projects/pciehp/contrib/file/config.guess - copied unchanged from r269363, head/contrib/file/config.guess projects/pciehp/contrib/file/config.sub - copied unchanged from r269363, head/contrib/file/config.sub projects/pciehp/contrib/file/depcomp - copied unchanged from r269363, head/contrib/file/depcomp projects/pciehp/contrib/file/doc/ - copied from r269363, head/contrib/file/doc/ projects/pciehp/contrib/file/ltmain.sh - copied unchanged from r269363, head/contrib/file/ltmain.sh projects/pciehp/contrib/file/m4/ - copied from r269363, head/contrib/file/m4/ projects/pciehp/contrib/file/magic/ - copied from r269363, head/contrib/file/magic/ projects/pciehp/contrib/file/missing - copied unchanged from r269363, head/contrib/file/missing projects/pciehp/contrib/file/python/ - copied from r269363, head/contrib/file/python/ projects/pciehp/contrib/file/src/ - copied from r269363, head/contrib/file/src/ projects/pciehp/contrib/file/tests/escapevel.result - copied unchanged from r269363, head/contrib/file/tests/escapevel.result projects/pciehp/contrib/file/tests/escapevel.testfile - copied unchanged from r269363, head/contrib/file/tests/escapevel.testfile projects/pciehp/contrib/file/tests/issue311docx.result - copied unchanged from r269363, head/contrib/file/tests/issue311docx.result projects/pciehp/contrib/file/tests/issue311docx.testfile - copied unchanged from r269363, head/contrib/file/tests/issue311docx.testfile projects/pciehp/contrib/libucl/ChangeLog.md - copied unchanged from r269363, head/contrib/libucl/ChangeLog.md projects/pciehp/contrib/libucl/src/ucl_emitter_streamline.c - copied unchanged from r269363, head/contrib/libucl/src/ucl_emitter_streamline.c projects/pciehp/contrib/libucl/src/ucl_emitter_utils.c - copied unchanged from r269363, head/contrib/libucl/src/ucl_emitter_utils.c projects/pciehp/contrib/libucl/tests/basic/11.in - copied unchanged from r269363, head/contrib/libucl/tests/basic/11.in projects/pciehp/contrib/libucl/tests/basic/11.res - copied unchanged from r269363, head/contrib/libucl/tests/basic/11.res projects/pciehp/contrib/libucl/tests/streamline.res - copied unchanged from r269363, head/contrib/libucl/tests/streamline.res projects/pciehp/contrib/libucl/tests/streamline.test - copied unchanged from r269363, head/contrib/libucl/tests/streamline.test projects/pciehp/contrib/libucl/tests/test_streamline.c - copied unchanged from r269363, head/contrib/libucl/tests/test_streamline.c projects/pciehp/contrib/llvm/patches/patch-r265477-clang-r198655-standalone-debug.diff - copied unchanged from r269363, head/contrib/llvm/patches/patch-r265477-clang-r198655-standalone-debug.diff projects/pciehp/contrib/llvm/patches/patch-r266674-clang-r209489-fix-xmmintrin.diff - copied unchanged from r269363, head/contrib/llvm/patches/patch-r266674-clang-r209489-fix-xmmintrin.diff projects/pciehp/contrib/llvm/patches/patch-r267704-llvm-r211435-fix-avx-backend.diff - copied unchanged from r269363, head/contrib/llvm/patches/patch-r267704-llvm-r211435-fix-avx-backend.diff projects/pciehp/contrib/llvm/patches/patch-r267981-llvm-r211435-fix-ppc-fctiduz.diff - copied unchanged from r269363, head/contrib/llvm/patches/patch-r267981-llvm-r211435-fix-ppc-fctiduz.diff projects/pciehp/crypto/openssl/ssl/heartbeat_test.c - copied unchanged from r269363, head/crypto/openssl/ssl/heartbeat_test.c projects/pciehp/include/xlocale/_strings.h - copied unchanged from r269363, head/include/xlocale/_strings.h projects/pciehp/lib/libc/arm/aeabi/aeabi_unwind_exidx.c - copied unchanged from r269363, head/lib/libc/arm/aeabi/aeabi_unwind_exidx.c projects/pciehp/lib/libcuse/ - copied from r269363, head/lib/libcuse/ projects/pciehp/lib/libedit/TEST/tc1.c - copied unchanged from r269363, head/lib/libedit/TEST/tc1.c projects/pciehp/lib/libstand/pkgfs.c - copied unchanged from r269363, head/lib/libstand/pkgfs.c projects/pciehp/lib/libthr/plockstat.d - copied unchanged from r269363, head/lib/libthr/plockstat.d projects/pciehp/lib/libz/zlib.pc - copied unchanged from r269363, head/lib/libz/zlib.pc projects/pciehp/lib/msun/ld128/s_erfl.c - copied unchanged from r269363, head/lib/msun/ld128/s_erfl.c projects/pciehp/lib/msun/ld80/s_erfl.c - copied unchanged from r269363, head/lib/msun/ld80/s_erfl.c projects/pciehp/libexec/atf/atf-sh/ - copied from r269363, head/libexec/atf/atf-sh/ projects/pciehp/libexec/rtld-elf/tests/ - copied from r269363, head/libexec/rtld-elf/tests/ projects/pciehp/sbin/camcontrol/persist.c - copied unchanged from r269363, head/sbin/camcontrol/persist.c projects/pciehp/share/examples/hwpmc/Makefile - copied unchanged from r269363, head/share/examples/hwpmc/Makefile projects/pciehp/share/examples/hwpmc/overhead.c - copied unchanged from r269363, head/share/examples/hwpmc/overhead.c projects/pciehp/share/man/man4/ismt.4 - copied unchanged from r269363, head/share/man/man4/ismt.4 projects/pciehp/share/man/man9/PCBGROUP.9 - copied unchanged from r269363, head/share/man/man9/PCBGROUP.9 projects/pciehp/share/man/man9/fpu_kern.9 - copied unchanged from r269363, head/share/man/man9/fpu_kern.9 projects/pciehp/share/man/man9/pmap_protect.9 - copied unchanged from r269363, head/share/man/man9/pmap_protect.9 projects/pciehp/share/man/man9/pmap_unwire.9 - copied unchanged from r269363, head/share/man/man9/pmap_unwire.9 projects/pciehp/share/vt/ - copied from r269363, head/share/vt/ projects/pciehp/sys/arm/conf/APALIS-IMX6 - copied unchanged from r269363, head/sys/arm/conf/APALIS-IMX6 projects/pciehp/sys/arm/conf/ARNDALE-OCTA - copied unchanged from r269363, head/sys/arm/conf/ARNDALE-OCTA projects/pciehp/sys/arm/conf/CHROMEBOOK-SNOW - copied unchanged from r269363, head/sys/arm/conf/CHROMEBOOK-SNOW projects/pciehp/sys/arm/conf/CHROMEBOOK-SPRING - copied unchanged from r269363, head/sys/arm/conf/CHROMEBOOK-SPRING projects/pciehp/sys/arm/conf/EXYNOS5.common - copied unchanged from r269363, head/sys/arm/conf/EXYNOS5.common projects/pciehp/sys/arm/conf/EXYNOS5250 - copied unchanged from r269363, head/sys/arm/conf/EXYNOS5250 projects/pciehp/sys/arm/conf/EXYNOS5420 - copied unchanged from r269363, head/sys/arm/conf/EXYNOS5420 projects/pciehp/sys/arm/conf/RADXA-LITE - copied unchanged from r269363, head/sys/arm/conf/RADXA-LITE projects/pciehp/sys/arm/conf/RK3188 - copied unchanged from r269363, head/sys/arm/conf/RK3188 projects/pciehp/sys/arm/freescale/imx/imx_gpio.c - copied unchanged from r269363, head/sys/arm/freescale/imx/imx_gpio.c projects/pciehp/sys/arm/freescale/imx/imx_i2c.c - copied unchanged from r269363, head/sys/arm/freescale/imx/imx_i2c.c projects/pciehp/sys/arm/freescale/vybrid/vf_adc.c - copied unchanged from r269363, head/sys/arm/freescale/vybrid/vf_adc.c projects/pciehp/sys/arm/freescale/vybrid/vf_adc.h - copied unchanged from r269363, head/sys/arm/freescale/vybrid/vf_adc.h projects/pciehp/sys/arm/freescale/vybrid/vf_spi.c - copied unchanged from r269363, head/sys/arm/freescale/vybrid/vf_spi.c projects/pciehp/sys/arm/samsung/exynos/exynos_uart.c - copied unchanged from r269363, head/sys/arm/samsung/exynos/exynos_uart.c projects/pciehp/sys/arm/samsung/exynos/exynos_uart.h - copied unchanged from r269363, head/sys/arm/samsung/exynos/exynos_uart.h projects/pciehp/sys/arm/samsung/exynos/std.exynos5250 - copied unchanged from r269363, head/sys/arm/samsung/exynos/std.exynos5250 projects/pciehp/sys/arm/samsung/exynos/std.exynos5420 - copied unchanged from r269363, head/sys/arm/samsung/exynos/std.exynos5420 projects/pciehp/sys/boot/fdt/dts/Makefile - copied unchanged from r269363, head/sys/boot/fdt/dts/Makefile projects/pciehp/sys/boot/fdt/dts/Makefile.inc - copied unchanged from r269363, head/sys/boot/fdt/dts/Makefile.inc projects/pciehp/sys/boot/fdt/dts/arm/Makefile - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/Makefile projects/pciehp/sys/boot/fdt/dts/arm/apalis-imx6.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/apalis-imx6.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5.dtsi - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/exynos5.dtsi projects/pciehp/sys/boot/fdt/dts/arm/exynos5250-chromebook-snow.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/exynos5250-chromebook-snow.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5250-chromebook-spring.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/exynos5250-chromebook-spring.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5420-arndale-octa.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/exynos5420-arndale-octa.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5420.dtsi - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/exynos5420.dtsi projects/pciehp/sys/boot/fdt/dts/arm/rk3188-radxa-lite.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/arm/rk3188-radxa-lite.dts projects/pciehp/sys/boot/fdt/dts/mips/Makefile - copied unchanged from r269363, head/sys/boot/fdt/dts/mips/Makefile projects/pciehp/sys/boot/fdt/dts/powerpc/Makefile - copied unchanged from r269363, head/sys/boot/fdt/dts/powerpc/Makefile projects/pciehp/sys/boot/fdt/dts/powerpc/p2041rdb.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/powerpc/p2041rdb.dts projects/pciehp/sys/boot/fdt/dts/powerpc/p3041ds.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/powerpc/p3041ds.dts projects/pciehp/sys/boot/fdt/dts/powerpc/p5020ds.dts - copied unchanged from r269363, head/sys/boot/fdt/dts/powerpc/p5020ds.dts projects/pciehp/sys/boot/usb/storage/ - copied from r269363, head/sys/boot/usb/storage/ projects/pciehp/sys/cam/ctl/ctl_tpc.c - copied unchanged from r269363, head/sys/cam/ctl/ctl_tpc.c projects/pciehp/sys/cam/ctl/ctl_tpc.h - copied unchanged from r269363, head/sys/cam/ctl/ctl_tpc.h projects/pciehp/sys/cam/ctl/ctl_tpc_local.c - copied unchanged from r269363, head/sys/cam/ctl/ctl_tpc_local.c projects/pciehp/sys/cddl/boot/zfs/blkptr.c - copied unchanged from r269363, head/sys/cddl/boot/zfs/blkptr.c projects/pciehp/sys/cddl/contrib/opensolaris/common/util/ - copied from r269363, head/sys/cddl/contrib/opensolaris/common/util/ projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/blkptr.c - copied unchanged from r269363, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/blkptr.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/blkptr.h - copied unchanged from r269363, head/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/blkptr.h projects/pciehp/sys/dev/cxgbe/firmware/t4fw-1.11.27.0.bin.uu - copied unchanged from r269363, head/sys/dev/cxgbe/firmware/t4fw-1.11.27.0.bin.uu projects/pciehp/sys/dev/cxgbe/firmware/t5fw-1.11.27.0.bin.uu - copied unchanged from r269363, head/sys/dev/cxgbe/firmware/t5fw-1.11.27.0.bin.uu projects/pciehp/sys/dev/cxgbe/t4_netmap.c - copied unchanged from r269363, head/sys/dev/cxgbe/t4_netmap.c projects/pciehp/sys/dev/i40e/README - copied unchanged from r269363, head/sys/dev/i40e/README projects/pciehp/sys/dev/ismt/ - copied from r269363, head/sys/dev/ismt/ projects/pciehp/sys/dev/usb/controller/saf1761_otg_boot.c - copied unchanged from r269363, head/sys/dev/usb/controller/saf1761_otg_boot.c projects/pciehp/sys/dev/virtio/virtio_config.h - copied unchanged from r269363, head/sys/dev/virtio/virtio_config.h projects/pciehp/sys/dev/virtio/virtio_ids.h - copied unchanged from r269363, head/sys/dev/virtio/virtio_ids.h projects/pciehp/sys/dev/vt/hw/vga/vt_vga.c - copied unchanged from r269363, head/sys/dev/vt/hw/vga/vt_vga.c projects/pciehp/sys/dev/vt/hw/vga/vt_vga_reg.h - copied unchanged from r269363, head/sys/dev/vt/hw/vga/vt_vga_reg.h projects/pciehp/sys/dev/xen/pvcpu/ - copied from r269363, head/sys/dev/xen/pvcpu/ projects/pciehp/sys/fs/cuse/ - copied from r269363, head/sys/fs/cuse/ projects/pciehp/sys/geom/part/g_part_bsd64.c - copied unchanged from r269363, head/sys/geom/part/g_part_bsd64.c projects/pciehp/sys/modules/cuse/ - copied from r269363, head/sys/modules/cuse/ projects/pciehp/sys/modules/geom/geom_part/geom_part_bsd64/ - copied from r269363, head/sys/modules/geom/geom_part/geom_part_bsd64/ projects/pciehp/sys/modules/i2c/controllers/ismt/ - copied from r269363, head/sys/modules/i2c/controllers/ismt/ projects/pciehp/sys/modules/tsec/ - copied from r269363, head/sys/modules/tsec/ projects/pciehp/sys/modules/usb/saf1761otg/ - copied from r269363, head/sys/modules/usb/saf1761otg/ projects/pciehp/sys/rpc/clnt_bck.c - copied unchanged from r269363, head/sys/rpc/clnt_bck.c projects/pciehp/sys/x86/xen/xen_apic.c - copied unchanged from r269363, head/sys/x86/xen/xen_apic.c projects/pciehp/sys/x86/xen/xen_nexus.c - copied unchanged from r269363, head/sys/x86/xen/xen_nexus.c projects/pciehp/sys/x86/xen/xenpv.c - copied unchanged from r269363, head/sys/x86/xen/xenpv.c projects/pciehp/sys/xen/xen_pv.h - copied unchanged from r269363, head/sys/xen/xen_pv.h projects/pciehp/tools/build/options/WITHOUT_VT - copied unchanged from r269363, head/tools/build/options/WITHOUT_VT projects/pciehp/tools/build/options/WITH_INFO - copied unchanged from r269363, head/tools/build/options/WITH_INFO projects/pciehp/tools/build/options/WITH_PIE - copied unchanged from r269363, head/tools/build/options/WITH_PIE projects/pciehp/tools/ifnet/ - copied from r269363, head/tools/ifnet/ projects/pciehp/tools/tools/nanobsd/rescue/R32 - copied unchanged from r269363, head/tools/tools/nanobsd/rescue/R32 projects/pciehp/tools/tools/nanobsd/rescue/R64 - copied unchanged from r269363, head/tools/tools/nanobsd/rescue/R64 projects/pciehp/usr.bin/gcore/elf32core.c - copied unchanged from r269363, head/usr.bin/gcore/elf32core.c projects/pciehp/usr.bin/m4/lib/ohash.c - copied unchanged from r269363, head/usr.bin/m4/lib/ohash.c projects/pciehp/usr.bin/mkimg/vhd.c - copied unchanged from r269363, head/usr.bin/mkimg/vhd.c projects/pciehp/usr.bin/printf/tests/regress.missingpos1.out - copied unchanged from r269363, head/usr.bin/printf/tests/regress.missingpos1.out projects/pciehp/usr.bin/send-pr/ - copied from r269363, head/usr.bin/send-pr/ projects/pciehp/usr.bin/timeout/ - copied from r269363, head/usr.bin/timeout/ projects/pciehp/usr.bin/truncate/tests/ - copied from r269363, head/usr.bin/truncate/tests/ projects/pciehp/usr.bin/units/tests/ - copied from r269363, head/usr.bin/units/tests/ projects/pciehp/usr.bin/users/users.cc - copied unchanged from r269363, head/usr.bin/users/users.cc projects/pciehp/usr.bin/vtfontcvt/ - copied from r269363, head/usr.bin/vtfontcvt/ projects/pciehp/usr.bin/yacc/tests/yacc_tests.sh - copied unchanged from r269363, head/usr.bin/yacc/tests/yacc_tests.sh projects/pciehp/usr.sbin/bhyve/task_switch.c - copied unchanged from r269363, head/usr.sbin/bhyve/task_switch.c projects/pciehp/usr.sbin/bsdconfig/examples/add_some_packages.sh - copied unchanged from r269363, head/usr.sbin/bsdconfig/examples/add_some_packages.sh projects/pciehp/usr.sbin/bsdconfig/share/packages/musthavepkg.subr - copied unchanged from r269363, head/usr.sbin/bsdconfig/share/packages/musthavepkg.subr projects/pciehp/usr.sbin/bsnmpd/modules/snmp_lm75/ - copied from r269363, head/usr.sbin/bsnmpd/modules/snmp_lm75/ projects/pciehp/usr.sbin/chown/tests/ - copied from r269363, head/usr.sbin/chown/tests/ Replaced: projects/pciehp/release/amd64/make-memstick.sh - copied unchanged from r269363, head/release/amd64/make-memstick.sh projects/pciehp/sys/dev/iicbus/iic.h - copied unchanged from r269363, head/sys/dev/iicbus/iic.h projects/pciehp/tools/build/options/WITHOUT_TESTS - copied unchanged from r269363, head/tools/build/options/WITHOUT_TESTS Deleted: projects/pciehp/contrib/atf/atf-c++/atf-c++.m4 projects/pciehp/contrib/atf/atf-c++/atf-c++.pc.in projects/pciehp/contrib/atf/atf-c/atf-c.m4 projects/pciehp/contrib/atf/atf-c/atf-c.pc.in projects/pciehp/contrib/atf/atf-c/atf-common.m4 projects/pciehp/contrib/atf/atf-sh/atf-sh.m4 projects/pciehp/contrib/atf/atf-sh/atf-sh.pc.in projects/pciehp/contrib/byacc/NOTES-btyacc-Changes projects/pciehp/contrib/byacc/NOTES-btyacc-Disposition projects/pciehp/contrib/file/Header projects/pciehp/contrib/file/Localstuff projects/pciehp/contrib/file/Magdir/ projects/pciehp/contrib/file/Makefile.am-src projects/pciehp/contrib/file/apprentice.c projects/pciehp/contrib/file/apptype.c projects/pciehp/contrib/file/ascmagic.c projects/pciehp/contrib/file/asprintf.c projects/pciehp/contrib/file/cdf.c projects/pciehp/contrib/file/cdf.h projects/pciehp/contrib/file/cdf_time.c projects/pciehp/contrib/file/compress.c projects/pciehp/contrib/file/elfclass.h projects/pciehp/contrib/file/encoding.c projects/pciehp/contrib/file/file.c projects/pciehp/contrib/file/file.h projects/pciehp/contrib/file/file.man projects/pciehp/contrib/file/file_opts.h projects/pciehp/contrib/file/fsmagic.c projects/pciehp/contrib/file/funcs.c projects/pciehp/contrib/file/getline.c projects/pciehp/contrib/file/getopt_long.c projects/pciehp/contrib/file/is_tar.c projects/pciehp/contrib/file/libmagic.man projects/pciehp/contrib/file/magic.c projects/pciehp/contrib/file/magic.h projects/pciehp/contrib/file/magic.man projects/pciehp/contrib/file/magic2mime projects/pciehp/contrib/file/mygetopt.h projects/pciehp/contrib/file/names.h projects/pciehp/contrib/file/print.c projects/pciehp/contrib/file/readcdf.c projects/pciehp/contrib/file/readelf.c projects/pciehp/contrib/file/readelf.h projects/pciehp/contrib/file/softmagic.c projects/pciehp/contrib/file/strlcat.c projects/pciehp/contrib/file/strlcpy.c projects/pciehp/contrib/file/tar.h projects/pciehp/contrib/file/tests/gedcom.magic projects/pciehp/contrib/file/vasprintf.c projects/pciehp/contrib/unbound/util/configlexer.c projects/pciehp/contrib/unbound/util/configparser.c projects/pciehp/contrib/unbound/util/configparser.h projects/pciehp/etc/etc.ia64/ projects/pciehp/gnu/lib/libreadline/history/ projects/pciehp/gnu/lib/libreadline/readline/doc/ projects/pciehp/gnu/usr.bin/binutils/as/ia64-freebsd/ projects/pciehp/gnu/usr.bin/binutils/ld/Makefile.ia64 projects/pciehp/gnu/usr.bin/binutils/ld/elf64_ia64_fbsd.sh projects/pciehp/gnu/usr.bin/binutils/libbfd/Makefile.ia64 projects/pciehp/gnu/usr.bin/binutils/libopcodes/Makefile.ia64 projects/pciehp/gnu/usr.bin/gdb/arch/ia64/ projects/pciehp/gnu/usr.bin/gdb/kgdb/trgt_ia64.c projects/pciehp/gnu/usr.bin/send-pr/ projects/pciehp/lib/clang/include/IA64GenAsmWriter.inc projects/pciehp/lib/clang/include/IA64GenDAGISel.inc projects/pciehp/lib/clang/include/IA64GenInstrInfo.inc projects/pciehp/lib/clang/include/IA64GenRegisterInfo.inc projects/pciehp/lib/csu/ia64/ projects/pciehp/lib/libc/ia64/ projects/pciehp/lib/libc/string/strcspn.3 projects/pciehp/lib/libedit/TEST/test.c projects/pciehp/lib/libkvm/kvm_ia64.c projects/pciehp/lib/libthr/arch/ia64/ projects/pciehp/lib/libthread_db/arch/ia64/ projects/pciehp/lib/msun/ia64/ projects/pciehp/libexec/rtld-elf/ia64/ projects/pciehp/release/amd64/make-uefi-memstick.sh projects/pciehp/release/amd64/mkisoimages-uefi.sh projects/pciehp/release/ia64/ projects/pciehp/sbin/Makefile.ia64 projects/pciehp/sbin/mca/ projects/pciehp/secure/lib/libcrypto/opensslconf-ia64.h projects/pciehp/share/examples/cvsup/ projects/pciehp/share/man/man9/VOP_GETVOBJECT.9 projects/pciehp/share/man/man9/pmap_page_protect.9 projects/pciehp/share/man/man9/zero_copy.9 projects/pciehp/share/mk/bsd.dtrace.mk projects/pciehp/sys/amd64/conf/VT projects/pciehp/sys/arm/conf/AC100 projects/pciehp/sys/arm/conf/EXYNOS5250.common projects/pciehp/sys/arm/freescale/imx/i2c.c projects/pciehp/sys/arm/freescale/imx/imx51_gpio.c projects/pciehp/sys/arm/samsung/exynos/std.exynos5 projects/pciehp/sys/arm/samsung/exynos/uart.c projects/pciehp/sys/arm/samsung/exynos/uart.h projects/pciehp/sys/arm/tegra/ projects/pciehp/sys/boot/Makefile.ia64 projects/pciehp/sys/boot/efi/include/ia64/ projects/pciehp/sys/boot/fdt/dts/arm/exynos5250-chromebook.dts projects/pciehp/sys/boot/fdt/dts/arm/p2041rdb.dts projects/pciehp/sys/boot/fdt/dts/arm/p3041ds.dts projects/pciehp/sys/boot/fdt/dts/arm/p5020ds.dts projects/pciehp/sys/boot/ficl/ia64/ projects/pciehp/sys/boot/ia64/ projects/pciehp/sys/cddl/contrib/opensolaris/common/atomic/ia64/ projects/pciehp/sys/cddl/dev/dtrace/dtrace_clone.c projects/pciehp/sys/conf/Makefile.ia64 projects/pciehp/sys/conf/files.ia64 projects/pciehp/sys/conf/ldscript.ia64 projects/pciehp/sys/conf/options.ia64 projects/pciehp/sys/contrib/ia64/ projects/pciehp/sys/dev/cxgbe/firmware/t4fw-1.9.12.0.bin.uu projects/pciehp/sys/dev/cxgbe/firmware/t5fw-1.9.12.0.bin.uu projects/pciehp/sys/dev/hwpmc/hwpmc_ia64.c projects/pciehp/sys/dev/uart/uart_cpu_ia64.c projects/pciehp/sys/dev/vt/hw/vga/vga.c projects/pciehp/sys/dev/vt/hw/vga/vga_reg.h projects/pciehp/sys/dev/vt/hw/xboxfb/ projects/pciehp/sys/i386/conf/VT projects/pciehp/sys/ia64/ projects/pciehp/sys/libkern/ia64/ projects/pciehp/sys/modules/usb/saf1761/ projects/pciehp/sys/xen/interface/arch-ia64/ projects/pciehp/sys/xen/interface/arch-ia64.h projects/pciehp/tools/build/options/WITH_TESTS projects/pciehp/tools/regression/ia64/ projects/pciehp/tools/tools/gdb_regofs/ia64.c projects/pciehp/tools/tools/prstats/ projects/pciehp/tools/tools/vt/fontcvt/Makefile projects/pciehp/tools/tools/vt/fontcvt/fontcvt.c projects/pciehp/usr.bin/Makefile.ia64 projects/pciehp/usr.bin/atf/ projects/pciehp/usr.bin/csup/ projects/pciehp/usr.bin/gprof/ia64.h projects/pciehp/usr.bin/m4/lib/ohash_create_entry.c projects/pciehp/usr.bin/m4/lib/ohash_delete.c projects/pciehp/usr.bin/m4/lib/ohash_do.c projects/pciehp/usr.bin/m4/lib/ohash_entries.c projects/pciehp/usr.bin/m4/lib/ohash_enum.c projects/pciehp/usr.bin/m4/lib/ohash_init.c projects/pciehp/usr.bin/m4/lib/ohash_int.h projects/pciehp/usr.bin/m4/lib/ohash_interval.c projects/pciehp/usr.bin/m4/lib/ohash_lookup_interval.c projects/pciehp/usr.bin/m4/lib/ohash_lookup_memory.c projects/pciehp/usr.bin/m4/lib/ohash_qlookup.c projects/pciehp/usr.bin/m4/lib/ohash_qlookupi.c projects/pciehp/usr.bin/truss/ia64-fbsd.c projects/pciehp/usr.bin/users/users.c projects/pciehp/usr.bin/xlint/arch/ia64/ projects/pciehp/usr.bin/yacc/tests/calc.y projects/pciehp/usr.bin/yacc/tests/calc1.y projects/pciehp/usr.bin/yacc/tests/calc2.y projects/pciehp/usr.bin/yacc/tests/calc3.y projects/pciehp/usr.bin/yacc/tests/code_calc.y projects/pciehp/usr.bin/yacc/tests/code_error.y projects/pciehp/usr.bin/yacc/tests/error.y projects/pciehp/usr.bin/yacc/tests/ftp.y projects/pciehp/usr.bin/yacc/tests/grammar.y projects/pciehp/usr.bin/yacc/tests/legacy_test.sh projects/pciehp/usr.bin/yacc/tests/pure_calc.y projects/pciehp/usr.bin/yacc/tests/pure_error.y projects/pciehp/usr.bin/yacc/tests/quote_calc.y projects/pciehp/usr.bin/yacc/tests/quote_calc2.y projects/pciehp/usr.bin/yacc/tests/quote_calc3.y projects/pciehp/usr.bin/yacc/tests/quote_calc4.y projects/pciehp/usr.bin/yacc/tests/regress.00.out projects/pciehp/usr.bin/yacc/tests/regress.01.out projects/pciehp/usr.bin/yacc/tests/regress.02.out projects/pciehp/usr.bin/yacc/tests/regress.03.out projects/pciehp/usr.bin/yacc/tests/regress.04.out projects/pciehp/usr.bin/yacc/tests/regress.05.out projects/pciehp/usr.bin/yacc/tests/regress.06.out projects/pciehp/usr.bin/yacc/tests/regress.07.out projects/pciehp/usr.bin/yacc/tests/regress.08.out projects/pciehp/usr.bin/yacc/tests/regress.09.out projects/pciehp/usr.bin/yacc/tests/regress.10.out projects/pciehp/usr.bin/yacc/tests/regress.11.out projects/pciehp/usr.bin/yacc/tests/regress.12.out projects/pciehp/usr.bin/yacc/tests/regress.13.out projects/pciehp/usr.bin/yacc/tests/regress.14.out projects/pciehp/usr.bin/yacc/tests/regress.sh projects/pciehp/usr.bin/yacc/tests/undefined.y projects/pciehp/usr.sbin/Makefile.ia64 projects/pciehp/usr.sbin/bsdconfig/examples/browse_packages_ftp.sh projects/pciehp/usr.sbin/ctm/mkCTM/ctm_conf.gnats Modified: projects/pciehp/.arcconfig projects/pciehp/MAINTAINERS (contents, props changed) projects/pciehp/Makefile projects/pciehp/Makefile.inc1 projects/pciehp/ObsoleteFiles.inc projects/pciehp/UPDATING projects/pciehp/bin/chio/chio.1 projects/pciehp/bin/csh/Makefile projects/pciehp/bin/ed/Makefile projects/pciehp/bin/freebsd-version/freebsd-version.1 projects/pciehp/bin/ls/Makefile projects/pciehp/bin/mv/mv.c projects/pciehp/bin/pkill/pkill.1 projects/pciehp/bin/ps/keyword.c projects/pciehp/bin/ps/ps.1 projects/pciehp/bin/rm/rm.1 projects/pciehp/bin/rm/rm.c projects/pciehp/bin/rmail/Makefile projects/pciehp/bin/setfacl/setfacl.1 projects/pciehp/bin/sh/Makefile projects/pciehp/bin/sh/arith_yacc.c projects/pciehp/bin/sh/eval.c projects/pciehp/bin/sh/exec.c projects/pciehp/bin/sh/expand.c projects/pciehp/bin/sh/jobs.c projects/pciehp/bin/sh/miscbltin.c projects/pciehp/bin/sh/mystring.c projects/pciehp/bin/sh/mystring.h projects/pciehp/bin/sh/tests/builtins/Makefile projects/pciehp/bin/sh/tests/parameters/Makefile projects/pciehp/cddl/contrib/dtracetoolkit/Apps/shellsnoop projects/pciehp/cddl/contrib/dtracetoolkit/rwsnoop projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/aggs/tst.subr.d projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/dtraceUtil/tst.ZeroModuleProbes.d.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/privs/tst.func_access.ksh projects/pciehp/cddl/contrib/opensolaris/cmd/zdb/zdb.8 projects/pciehp/cddl/contrib/opensolaris/cmd/zdb/zdb.c projects/pciehp/cddl/contrib/opensolaris/cmd/zdb/zdb_il.c projects/pciehp/cddl/contrib/opensolaris/cmd/zfs/zfs.8 projects/pciehp/cddl/contrib/opensolaris/cmd/zfs/zfs_main.c projects/pciehp/cddl/contrib/opensolaris/cmd/zhack/zhack.c projects/pciehp/cddl/contrib/opensolaris/cmd/zpool/zpool-features.7 projects/pciehp/cddl/contrib/opensolaris/cmd/zpool/zpool.8 projects/pciehp/cddl/contrib/opensolaris/cmd/zpool/zpool_main.c projects/pciehp/cddl/contrib/opensolaris/cmd/zstreamdump/zstreamdump.c projects/pciehp/cddl/contrib/opensolaris/cmd/ztest/ztest.c projects/pciehp/cddl/contrib/opensolaris/common/avl/avl.c projects/pciehp/cddl/contrib/opensolaris/common/ctf/ctf_open.c projects/pciehp/cddl/contrib/opensolaris/common/ctf/ctf_types.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_aggregate.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_as.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_consume.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_decl.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_decl.h projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_dis.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_error.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_grammar.y projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_ident.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_impl.h projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_lex.l projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_link.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_module.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_module.h projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_options.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_parser.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_parser.h projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pid.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_pid.h projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_print.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_printf.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_provider.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dt_xlator.c projects/pciehp/cddl/contrib/opensolaris/lib/libdtrace/common/dtrace.h projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs.h projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_compat.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_dataset.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_mount.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_pool.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/common/libzfs_sendrecv.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.c projects/pciehp/cddl/contrib/opensolaris/lib/libzfs_core/common/libzfs_core.h projects/pciehp/cddl/contrib/opensolaris/lib/libzpool/common/kernel.c projects/pciehp/cddl/contrib/opensolaris/lib/libzpool/common/sys/zfs_context.h projects/pciehp/cddl/lib/libdtrace/libproc_compat.h projects/pciehp/cddl/lib/libzfs/Makefile projects/pciehp/cddl/lib/libzpool/Makefile projects/pciehp/cddl/sbin/zpool/Makefile projects/pciehp/cddl/usr.bin/zinject/Makefile projects/pciehp/cddl/usr.sbin/zdb/Makefile projects/pciehp/cddl/usr.sbin/zhack/Makefile projects/pciehp/contrib/apr/CHANGES projects/pciehp/contrib/apr/LICENSE projects/pciehp/contrib/apr/Makefile.in projects/pciehp/contrib/apr/Makefile.win projects/pciehp/contrib/apr/NOTICE projects/pciehp/contrib/apr/apr.dep projects/pciehp/contrib/apr/apr.dsp projects/pciehp/contrib/apr/apr.mak projects/pciehp/contrib/apr/apr.spec projects/pciehp/contrib/apr/build-outputs.mk projects/pciehp/contrib/apr/build.conf projects/pciehp/contrib/apr/configure projects/pciehp/contrib/apr/configure.in projects/pciehp/contrib/apr/docs/canonical_filenames.html projects/pciehp/contrib/apr/file_io/unix/filedup.c projects/pciehp/contrib/apr/file_io/unix/filestat.c projects/pciehp/contrib/apr/file_io/unix/mktemp.c projects/pciehp/contrib/apr/file_io/unix/open.c projects/pciehp/contrib/apr/file_io/unix/pipe.c projects/pciehp/contrib/apr/file_io/unix/readwrite.c projects/pciehp/contrib/apr/include/apr.h.in projects/pciehp/contrib/apr/include/apr_allocator.h projects/pciehp/contrib/apr/include/apr_errno.h projects/pciehp/contrib/apr/include/apr_file_info.h projects/pciehp/contrib/apr/include/apr_file_io.h projects/pciehp/contrib/apr/include/apr_fnmatch.h projects/pciehp/contrib/apr/include/apr_hash.h projects/pciehp/contrib/apr/include/apr_inherit.h projects/pciehp/contrib/apr/include/apr_lib.h projects/pciehp/contrib/apr/include/apr_mmap.h projects/pciehp/contrib/apr/include/apr_network_io.h projects/pciehp/contrib/apr/include/apr_poll.h projects/pciehp/contrib/apr/include/apr_pools.h projects/pciehp/contrib/apr/include/apr_shm.h projects/pciehp/contrib/apr/include/apr_strings.h projects/pciehp/contrib/apr/include/apr_tables.h projects/pciehp/contrib/apr/include/apr_thread_mutex.h projects/pciehp/contrib/apr/include/apr_thread_proc.h projects/pciehp/contrib/apr/include/apr_time.h projects/pciehp/contrib/apr/include/apr_user.h projects/pciehp/contrib/apr/include/apr_version.h projects/pciehp/contrib/apr/include/arch/unix/apr_arch_poll_private.h projects/pciehp/contrib/apr/include/arch/unix/apr_arch_threadproc.h projects/pciehp/contrib/apr/include/arch/unix/apr_private.h.in projects/pciehp/contrib/apr/libapr.dep projects/pciehp/contrib/apr/libapr.dsp projects/pciehp/contrib/apr/libapr.mak projects/pciehp/contrib/apr/locks/unix/proc_mutex.c projects/pciehp/contrib/apr/network_io/unix/sendrecv.c projects/pciehp/contrib/apr/network_io/unix/sockaddr.c projects/pciehp/contrib/apr/network_io/unix/socket_util.c projects/pciehp/contrib/apr/network_io/unix/sockets.c projects/pciehp/contrib/apr/network_io/unix/sockopt.c projects/pciehp/contrib/apr/passwd/apr_getpass.c projects/pciehp/contrib/apr/poll/unix/pollcb.c projects/pciehp/contrib/apr/poll/unix/pollset.c projects/pciehp/contrib/apr/shmem/unix/shm.c projects/pciehp/contrib/apr/strings/apr_cpystrn.c projects/pciehp/contrib/apr/strings/apr_strings.c projects/pciehp/contrib/apr/support/unix/waitio.c projects/pciehp/contrib/apr/tables/apr_hash.c projects/pciehp/contrib/apr/tables/apr_tables.c projects/pciehp/contrib/atf/FREEBSD-Xlist projects/pciehp/contrib/bmake/ChangeLog projects/pciehp/contrib/bmake/Makefile projects/pciehp/contrib/bmake/README projects/pciehp/contrib/bmake/bmake.1 projects/pciehp/contrib/bmake/bmake.cat1 projects/pciehp/contrib/bmake/boot-strap projects/pciehp/contrib/bmake/bsd.after-import.mk projects/pciehp/contrib/bmake/config.h.in projects/pciehp/contrib/bmake/configure projects/pciehp/contrib/bmake/configure.in projects/pciehp/contrib/bmake/main.c projects/pciehp/contrib/bmake/make.1 projects/pciehp/contrib/bmake/mk/ChangeLog projects/pciehp/contrib/bmake/mk/autodep.mk projects/pciehp/contrib/bmake/mk/dirdeps.mk projects/pciehp/contrib/bmake/mk/dpadd.mk projects/pciehp/contrib/bmake/mk/gendirdeps.mk projects/pciehp/contrib/bmake/mk/host-target.mk projects/pciehp/contrib/bmake/mk/install-mk projects/pciehp/contrib/bmake/mk/lib.mk projects/pciehp/contrib/bmake/mk/meta.autodep.mk projects/pciehp/contrib/bmake/mk/meta2deps.py projects/pciehp/contrib/bmake/mk/meta2deps.sh projects/pciehp/contrib/bmake/mk/options.mk projects/pciehp/contrib/bmake/mk/rst2htm.mk projects/pciehp/contrib/bmake/mk/sys.mk projects/pciehp/contrib/bmake/mk/sys/SunOS.mk projects/pciehp/contrib/bmake/mk/target-flags.mk projects/pciehp/contrib/bmake/mk/warnings.mk projects/pciehp/contrib/bmake/os.sh projects/pciehp/contrib/bmake/parse.c projects/pciehp/contrib/bmake/str.c projects/pciehp/contrib/bmake/var.c projects/pciehp/contrib/byacc/CHANGES projects/pciehp/contrib/byacc/MANIFEST projects/pciehp/contrib/byacc/README.BTYACC projects/pciehp/contrib/byacc/VERSION projects/pciehp/contrib/byacc/aclocal.m4 projects/pciehp/contrib/byacc/config.guess projects/pciehp/contrib/byacc/config.sub projects/pciehp/contrib/byacc/config_h.in projects/pciehp/contrib/byacc/configure projects/pciehp/contrib/byacc/configure.in projects/pciehp/contrib/byacc/defs.h projects/pciehp/contrib/byacc/main.c projects/pciehp/contrib/byacc/mstring.c projects/pciehp/contrib/byacc/output.c projects/pciehp/contrib/byacc/package/byacc.spec projects/pciehp/contrib/byacc/package/debian/changelog projects/pciehp/contrib/byacc/package/mingw-byacc.spec projects/pciehp/contrib/byacc/package/pkgsrc/Makefile projects/pciehp/contrib/byacc/test/btyacc/big_b.output projects/pciehp/contrib/byacc/test/btyacc/big_l.output projects/pciehp/contrib/byacc/test/btyacc/err_inherit1.error projects/pciehp/contrib/byacc/test/btyacc/err_inherit2.error projects/pciehp/contrib/byacc/test/btyacc/err_inherit3.error projects/pciehp/contrib/byacc/test/btyacc/err_inherit4.error projects/pciehp/contrib/byacc/test/btyacc/err_inherit5.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax1.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax10.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax11.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax12.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax13.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax14.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax15.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax16.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax17.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax18.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax19.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax2.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax21.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax22.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax23.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax24.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax25.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax26.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax27.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax3.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax4.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax5.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax6.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax7.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax7a.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax7b.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax8.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax8a.error projects/pciehp/contrib/byacc/test/btyacc/err_syntax9.error projects/pciehp/contrib/byacc/test/btyacc/help.output projects/pciehp/contrib/byacc/test/btyacc/no_b_opt.output projects/pciehp/contrib/byacc/test/btyacc/no_output2.output projects/pciehp/contrib/byacc/test/btyacc/no_p_opt.output projects/pciehp/contrib/byacc/test/btyacc/nostdin.output projects/pciehp/contrib/byacc/test/run_test.sh projects/pciehp/contrib/byacc/test/yacc/big_b.output projects/pciehp/contrib/byacc/test/yacc/big_l.output projects/pciehp/contrib/byacc/test/yacc/err_syntax1.error projects/pciehp/contrib/byacc/test/yacc/err_syntax10.error projects/pciehp/contrib/byacc/test/yacc/err_syntax11.error projects/pciehp/contrib/byacc/test/yacc/err_syntax12.error projects/pciehp/contrib/byacc/test/yacc/err_syntax13.error projects/pciehp/contrib/byacc/test/yacc/err_syntax14.error projects/pciehp/contrib/byacc/test/yacc/err_syntax15.error projects/pciehp/contrib/byacc/test/yacc/err_syntax16.error projects/pciehp/contrib/byacc/test/yacc/err_syntax17.error projects/pciehp/contrib/byacc/test/yacc/err_syntax18.error projects/pciehp/contrib/byacc/test/yacc/err_syntax19.error projects/pciehp/contrib/byacc/test/yacc/err_syntax2.error projects/pciehp/contrib/byacc/test/yacc/err_syntax21.error projects/pciehp/contrib/byacc/test/yacc/err_syntax22.error projects/pciehp/contrib/byacc/test/yacc/err_syntax23.error projects/pciehp/contrib/byacc/test/yacc/err_syntax24.error projects/pciehp/contrib/byacc/test/yacc/err_syntax25.error projects/pciehp/contrib/byacc/test/yacc/err_syntax26.error projects/pciehp/contrib/byacc/test/yacc/err_syntax27.error projects/pciehp/contrib/byacc/test/yacc/err_syntax3.error projects/pciehp/contrib/byacc/test/yacc/err_syntax4.error projects/pciehp/contrib/byacc/test/yacc/err_syntax5.error projects/pciehp/contrib/byacc/test/yacc/err_syntax6.error projects/pciehp/contrib/byacc/test/yacc/err_syntax7.error projects/pciehp/contrib/byacc/test/yacc/err_syntax7a.error projects/pciehp/contrib/byacc/test/yacc/err_syntax7b.error projects/pciehp/contrib/byacc/test/yacc/err_syntax8.error projects/pciehp/contrib/byacc/test/yacc/err_syntax8a.error projects/pciehp/contrib/byacc/test/yacc/err_syntax9.error projects/pciehp/contrib/byacc/test/yacc/help.output projects/pciehp/contrib/byacc/test/yacc/no_b_opt.output projects/pciehp/contrib/byacc/test/yacc/no_output2.output projects/pciehp/contrib/byacc/test/yacc/no_p_opt.output projects/pciehp/contrib/byacc/test/yacc/nostdin.output projects/pciehp/contrib/file/ChangeLog projects/pciehp/contrib/file/Makefile.am projects/pciehp/contrib/file/Makefile.in projects/pciehp/contrib/file/README projects/pciehp/contrib/file/TODO projects/pciehp/contrib/file/aclocal.m4 projects/pciehp/contrib/file/compile projects/pciehp/contrib/file/config.h.in projects/pciehp/contrib/file/configure projects/pciehp/contrib/file/configure.ac projects/pciehp/contrib/file/install-sh projects/pciehp/contrib/file/tests/Makefile.am projects/pciehp/contrib/file/tests/Makefile.in projects/pciehp/contrib/file/tests/README projects/pciehp/contrib/file/tests/gedcom.result projects/pciehp/contrib/gcc/config/arm/unwind-arm.h projects/pciehp/contrib/gcc/version.c projects/pciehp/contrib/ipfilter/lib/printhost.c projects/pciehp/contrib/ipfilter/lib/printhostmask.c projects/pciehp/contrib/ipfilter/lib/printipfexpr.c projects/pciehp/contrib/ipfilter/lib/save_v1trap.c projects/pciehp/contrib/ipfilter/lib/save_v2trap.c projects/pciehp/contrib/libstdc++/libsupc++/unwind-cxx.h projects/pciehp/contrib/libucl/configure.ac projects/pciehp/contrib/libucl/doc/api.md projects/pciehp/contrib/libucl/doc/libucl.3 projects/pciehp/contrib/libucl/doc/pandoc.template projects/pciehp/contrib/libucl/include/ucl.h projects/pciehp/contrib/libucl/src/Makefile.am projects/pciehp/contrib/libucl/src/ucl_emitter.c projects/pciehp/contrib/libucl/src/ucl_internal.h projects/pciehp/contrib/libucl/src/ucl_parser.c projects/pciehp/contrib/libucl/src/ucl_util.c projects/pciehp/contrib/libucl/tests/Makefile.am projects/pciehp/contrib/libucl/tests/test_basic.c projects/pciehp/contrib/libucl/tests/test_generate.c projects/pciehp/contrib/libucl/uthash/utstring.h projects/pciehp/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeTypes.h projects/pciehp/contrib/llvm/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp projects/pciehp/contrib/llvm/lib/Target/PowerPC/PPCFastISel.cpp projects/pciehp/contrib/llvm/patches/patch-r208961-clang-version-include.diff projects/pciehp/contrib/llvm/patches/patch-r208987-format-extensions.diff projects/pciehp/contrib/llvm/patches/patch-r209107-clang-vendor-suffix.diff projects/pciehp/contrib/llvm/patches/patch-r213492-amd64-multi-os-dot.diff projects/pciehp/contrib/llvm/patches/patch-r221503-default-target-triple.diff projects/pciehp/contrib/llvm/patches/patch-r243830-arm-disable-clear-cache.diff projects/pciehp/contrib/llvm/patches/patch-r252503-arm-transient-stack-alignment.diff projects/pciehp/contrib/llvm/patches/patch-r257109-add-CC-aliases.diff projects/pciehp/contrib/llvm/patches/patch-r259053-gcc-installation-detector.diff projects/pciehp/contrib/llvm/patches/patch-r259498-add-fxsave.diff projects/pciehp/contrib/llvm/patches/patch-r261680-clang-r200899-fix-security-quantis.diff projects/pciehp/contrib/llvm/patches/patch-r261991-llvm-r195391-fix-dwarf2.diff projects/pciehp/contrib/llvm/patches/patch-r261991-llvm-r198385-fix-dwarf2.diff projects/pciehp/contrib/llvm/patches/patch-r261991-llvm-r198389-fix-dwarf2.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198028-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198029-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198030-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198145-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198149-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198157-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198280-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198281-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198286-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198480-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198484-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198533-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198565-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198567-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198580-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198591-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198592-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198658-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198681-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198738-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198739-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198740-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198893-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198909-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r198910-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199014-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199024-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199028-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199031-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199033-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199061-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199186-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199187-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199775-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199781-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199786-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199940-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199974-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199975-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r199977-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200103-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200104-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200112-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200130-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200131-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200141-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200282-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200368-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200373-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200376-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200509-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200617-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200960-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200961-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200962-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200963-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262261-llvm-r200965-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198311-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198312-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198911-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198912-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198918-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r198923-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r199012-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r199034-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r199037-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r199188-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r199399-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262262-clang-r200452-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262264-llvm-r200453-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262265-llvm-r201718-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262303-enable-ppc-integrated-as.diff projects/pciehp/contrib/llvm/patches/patch-r262415-llvm-r201994-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262460-llvm-r202059-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262535-clang-r202177-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262536-clang-r202179-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262582-llvm-r202422-sparc.diff projects/pciehp/contrib/llvm/patches/patch-r262611-llvm-r196874-fix-invalid-pwd-crash.diff projects/pciehp/contrib/llvm/patches/patch-r263048-clang-r203624-fix-CC-aliases.diff projects/pciehp/contrib/llvm/patches/patch-r263312-llvm-r169939-inline-asm-with-realign.diff projects/pciehp/contrib/llvm/patches/patch-r263312-llvm-r196940-update-inline-asm-test.diff projects/pciehp/contrib/llvm/patches/patch-r263312-llvm-r196986-allow-realign-alloca.diff projects/pciehp/contrib/llvm/patches/patch-r263312-llvm-r202930-fix-alloca-esi-clobber.diff projects/pciehp/contrib/llvm/patches/patch-r263313-llvm-r203311-fix-sse1-oom.diff projects/pciehp/contrib/llvm/patches/patch-r263619-clang-r201662-arm-gnueabihf.diff projects/pciehp/contrib/llvm/patches/patch-r264826-llvm-r202188-variadic-fn-debug-info.diff projects/pciehp/contrib/llvm/patches/patch-r264827-clang-r202185-variadic-fn-debug-info.diff projects/pciehp/contrib/llvm/tools/clang/lib/Headers/xmmintrin.h projects/pciehp/contrib/llvm/tools/lldb/tools/driver/Platform.h projects/pciehp/contrib/openbsm/libbsm/bsm_io.c projects/pciehp/contrib/openpam/lib/libpam/openpam_configure.c projects/pciehp/contrib/sendmail/CACerts projects/pciehp/contrib/sendmail/FAQ projects/pciehp/contrib/sendmail/FREEBSD-upgrade projects/pciehp/contrib/sendmail/INSTALL projects/pciehp/contrib/sendmail/KNOWNBUGS projects/pciehp/contrib/sendmail/LICENSE projects/pciehp/contrib/sendmail/Makefile projects/pciehp/contrib/sendmail/PGPKEYS projects/pciehp/contrib/sendmail/README projects/pciehp/contrib/sendmail/RELEASE_NOTES projects/pciehp/contrib/sendmail/cf/README projects/pciehp/contrib/sendmail/cf/cf/Makefile projects/pciehp/contrib/sendmail/cf/cf/README projects/pciehp/contrib/sendmail/cf/cf/chez.cs.mc projects/pciehp/contrib/sendmail/cf/cf/clientproto.mc projects/pciehp/contrib/sendmail/cf/cf/cs-hpux10.mc projects/pciehp/contrib/sendmail/cf/cf/cs-hpux9.mc projects/pciehp/contrib/sendmail/cf/cf/cs-osf1.mc projects/pciehp/contrib/sendmail/cf/cf/cs-solaris2.mc projects/pciehp/contrib/sendmail/cf/cf/cs-sunos4.1.mc projects/pciehp/contrib/sendmail/cf/cf/cs-ultrix4.mc projects/pciehp/contrib/sendmail/cf/cf/cyrusproto.mc projects/pciehp/contrib/sendmail/cf/cf/generic-bsd4.4.mc projects/pciehp/contrib/sendmail/cf/cf/generic-hpux10.mc projects/pciehp/contrib/sendmail/cf/cf/generic-hpux9.mc projects/pciehp/contrib/sendmail/cf/cf/generic-linux.mc projects/pciehp/contrib/sendmail/cf/cf/generic-mpeix.mc projects/pciehp/contrib/sendmail/cf/cf/generic-nextstep3.3.mc projects/pciehp/contrib/sendmail/cf/cf/generic-osf1.mc projects/pciehp/contrib/sendmail/cf/cf/generic-solaris.mc projects/pciehp/contrib/sendmail/cf/cf/generic-sunos4.1.mc projects/pciehp/contrib/sendmail/cf/cf/generic-ultrix4.mc projects/pciehp/contrib/sendmail/cf/cf/huginn.cs.mc projects/pciehp/contrib/sendmail/cf/cf/knecht.mc projects/pciehp/contrib/sendmail/cf/cf/mail.cs.mc projects/pciehp/contrib/sendmail/cf/cf/mail.eecs.mc projects/pciehp/contrib/sendmail/cf/cf/mailspool.cs.mc projects/pciehp/contrib/sendmail/cf/cf/python.cs.mc projects/pciehp/contrib/sendmail/cf/cf/s2k-osf1.mc projects/pciehp/contrib/sendmail/cf/cf/s2k-ultrix4.mc projects/pciehp/contrib/sendmail/cf/cf/submit.cf projects/pciehp/contrib/sendmail/cf/cf/submit.mc projects/pciehp/contrib/sendmail/cf/cf/tcpproto.mc projects/pciehp/contrib/sendmail/cf/cf/ucbarpa.mc projects/pciehp/contrib/sendmail/cf/cf/ucbvax.mc projects/pciehp/contrib/sendmail/cf/cf/uucpproto.mc projects/pciehp/contrib/sendmail/cf/cf/vangogh.cs.mc projects/pciehp/contrib/sendmail/cf/domain/Berkeley.EDU.m4 projects/pciehp/contrib/sendmail/cf/domain/CS.Berkeley.EDU.m4 projects/pciehp/contrib/sendmail/cf/domain/EECS.Berkeley.EDU.m4 projects/pciehp/contrib/sendmail/cf/domain/S2K.Berkeley.EDU.m4 projects/pciehp/contrib/sendmail/cf/domain/berkeley-only.m4 projects/pciehp/contrib/sendmail/cf/domain/generic.m4 projects/pciehp/contrib/sendmail/cf/feature/accept_unqualified_senders.m4 projects/pciehp/contrib/sendmail/cf/feature/accept_unresolvable_domains.m4 projects/pciehp/contrib/sendmail/cf/feature/access_db.m4 projects/pciehp/contrib/sendmail/cf/feature/allmasquerade.m4 projects/pciehp/contrib/sendmail/cf/feature/always_add_domain.m4 projects/pciehp/contrib/sendmail/cf/feature/authinfo.m4 projects/pciehp/contrib/sendmail/cf/feature/badmx.m4 projects/pciehp/contrib/sendmail/cf/feature/bestmx_is_local.m4 projects/pciehp/contrib/sendmail/cf/feature/bitdomain.m4 projects/pciehp/contrib/sendmail/cf/feature/blacklist_recipients.m4 projects/pciehp/contrib/sendmail/cf/feature/block_bad_helo.m4 projects/pciehp/contrib/sendmail/cf/feature/compat_check.m4 projects/pciehp/contrib/sendmail/cf/feature/conncontrol.m4 projects/pciehp/contrib/sendmail/cf/feature/delay_checks.m4 projects/pciehp/contrib/sendmail/cf/feature/dnsbl.m4 projects/pciehp/contrib/sendmail/cf/feature/domaintable.m4 projects/pciehp/contrib/sendmail/cf/feature/enhdnsbl.m4 projects/pciehp/contrib/sendmail/cf/feature/generics_entire_domain.m4 projects/pciehp/contrib/sendmail/cf/feature/genericstable.m4 projects/pciehp/contrib/sendmail/cf/feature/greet_pause.m4 projects/pciehp/contrib/sendmail/cf/feature/ldap_routing.m4 projects/pciehp/contrib/sendmail/cf/feature/limited_masquerade.m4 projects/pciehp/contrib/sendmail/cf/feature/local_lmtp.m4 projects/pciehp/contrib/sendmail/cf/feature/local_no_masquerade.m4 projects/pciehp/contrib/sendmail/cf/feature/local_procmail.m4 projects/pciehp/contrib/sendmail/cf/feature/lookupdotdomain.m4 projects/pciehp/contrib/sendmail/cf/feature/loose_relay_check.m4 projects/pciehp/contrib/sendmail/cf/feature/mailertable.m4 projects/pciehp/contrib/sendmail/cf/feature/masquerade_entire_domain.m4 projects/pciehp/contrib/sendmail/cf/feature/masquerade_envelope.m4 projects/pciehp/contrib/sendmail/cf/feature/msp.m4 projects/pciehp/contrib/sendmail/cf/feature/mtamark.m4 projects/pciehp/contrib/sendmail/cf/feature/no_default_msa.m4 projects/pciehp/contrib/sendmail/cf/feature/nocanonify.m4 projects/pciehp/contrib/sendmail/cf/feature/notsticky.m4 projects/pciehp/contrib/sendmail/cf/feature/nouucp.m4 projects/pciehp/contrib/sendmail/cf/feature/nullclient.m4 projects/pciehp/contrib/sendmail/cf/feature/preserve_local_plus_detail.m4 projects/pciehp/contrib/sendmail/cf/feature/preserve_luser_host.m4 projects/pciehp/contrib/sendmail/cf/feature/promiscuous_relay.m4 projects/pciehp/contrib/sendmail/cf/feature/queuegroup.m4 projects/pciehp/contrib/sendmail/cf/feature/ratecontrol.m4 projects/pciehp/contrib/sendmail/cf/feature/redirect.m4 projects/pciehp/contrib/sendmail/cf/feature/relay_based_on_MX.m4 projects/pciehp/contrib/sendmail/cf/feature/relay_entire_domain.m4 projects/pciehp/contrib/sendmail/cf/feature/relay_hosts_only.m4 projects/pciehp/contrib/sendmail/cf/feature/relay_local_from.m4 projects/pciehp/contrib/sendmail/cf/feature/relay_mail_from.m4 projects/pciehp/contrib/sendmail/cf/feature/require_rdns.m4 projects/pciehp/contrib/sendmail/cf/feature/smrsh.m4 projects/pciehp/contrib/sendmail/cf/feature/stickyhost.m4 projects/pciehp/contrib/sendmail/cf/feature/use_client_ptr.m4 projects/pciehp/contrib/sendmail/cf/feature/use_ct_file.m4 projects/pciehp/contrib/sendmail/cf/feature/use_cw_file.m4 projects/pciehp/contrib/sendmail/cf/feature/uucpdomain.m4 projects/pciehp/contrib/sendmail/cf/feature/virtuser_entire_domain.m4 projects/pciehp/contrib/sendmail/cf/feature/virtusertable.m4 projects/pciehp/contrib/sendmail/cf/hack/cssubdomain.m4 projects/pciehp/contrib/sendmail/cf/m4/cf.m4 projects/pciehp/contrib/sendmail/cf/m4/cfhead.m4 projects/pciehp/contrib/sendmail/cf/m4/proto.m4 projects/pciehp/contrib/sendmail/cf/m4/version.m4 projects/pciehp/contrib/sendmail/cf/mailer/cyrus.m4 projects/pciehp/contrib/sendmail/cf/mailer/cyrusv2.m4 projects/pciehp/contrib/sendmail/cf/mailer/fax.m4 projects/pciehp/contrib/sendmail/cf/mailer/local.m4 projects/pciehp/contrib/sendmail/cf/mailer/mail11.m4 projects/pciehp/contrib/sendmail/cf/mailer/phquery.m4 projects/pciehp/contrib/sendmail/cf/mailer/pop.m4 projects/pciehp/contrib/sendmail/cf/mailer/procmail.m4 projects/pciehp/contrib/sendmail/cf/mailer/qpage.m4 projects/pciehp/contrib/sendmail/cf/mailer/smtp.m4 projects/pciehp/contrib/sendmail/cf/mailer/usenet.m4 projects/pciehp/contrib/sendmail/cf/mailer/uucp.m4 projects/pciehp/contrib/sendmail/cf/ostype/a-ux.m4 projects/pciehp/contrib/sendmail/cf/ostype/aix3.m4 projects/pciehp/contrib/sendmail/cf/ostype/aix4.m4 projects/pciehp/contrib/sendmail/cf/ostype/aix5.m4 projects/pciehp/contrib/sendmail/cf/ostype/altos.m4 projects/pciehp/contrib/sendmail/cf/ostype/amdahl-uts.m4 projects/pciehp/contrib/sendmail/cf/ostype/bsd4.3.m4 projects/pciehp/contrib/sendmail/cf/ostype/bsd4.4.m4 projects/pciehp/contrib/sendmail/cf/ostype/bsdi.m4 projects/pciehp/contrib/sendmail/cf/ostype/bsdi1.0.m4 projects/pciehp/contrib/sendmail/cf/ostype/bsdi2.0.m4 projects/pciehp/contrib/sendmail/cf/ostype/darwin.m4 projects/pciehp/contrib/sendmail/cf/ostype/dgux.m4 projects/pciehp/contrib/sendmail/cf/ostype/domainos.m4 projects/pciehp/contrib/sendmail/cf/ostype/dragonfly.m4 projects/pciehp/contrib/sendmail/cf/ostype/dynix3.2.m4 projects/pciehp/contrib/sendmail/cf/ostype/freebsd4.m4 projects/pciehp/contrib/sendmail/cf/ostype/freebsd5.m4 projects/pciehp/contrib/sendmail/cf/ostype/freebsd6.m4 projects/pciehp/contrib/sendmail/cf/ostype/gnu.m4 projects/pciehp/contrib/sendmail/cf/ostype/hpux10.m4 projects/pciehp/contrib/sendmail/cf/ostype/hpux11.m4 projects/pciehp/contrib/sendmail/cf/ostype/hpux9.m4 projects/pciehp/contrib/sendmail/cf/ostype/irix4.m4 projects/pciehp/contrib/sendmail/cf/ostype/irix5.m4 projects/pciehp/contrib/sendmail/cf/ostype/irix6.m4 projects/pciehp/contrib/sendmail/cf/ostype/isc4.1.m4 projects/pciehp/contrib/sendmail/cf/ostype/linux.m4 projects/pciehp/contrib/sendmail/cf/ostype/maxion.m4 projects/pciehp/contrib/sendmail/cf/ostype/mklinux.m4 projects/pciehp/contrib/sendmail/cf/ostype/mpeix.m4 projects/pciehp/contrib/sendmail/cf/ostype/nextstep.m4 projects/pciehp/contrib/sendmail/cf/ostype/openbsd.m4 projects/pciehp/contrib/sendmail/cf/ostype/osf1.m4 projects/pciehp/contrib/sendmail/cf/ostype/powerux.m4 projects/pciehp/contrib/sendmail/cf/ostype/ptx2.m4 projects/pciehp/contrib/sendmail/cf/ostype/qnx.m4 projects/pciehp/contrib/sendmail/cf/ostype/riscos4.5.m4 projects/pciehp/contrib/sendmail/cf/ostype/sco-uw-2.1.m4 projects/pciehp/contrib/sendmail/cf/ostype/sco3.2.m4 projects/pciehp/contrib/sendmail/cf/ostype/sinix.m4 projects/pciehp/contrib/sendmail/cf/ostype/solaris11.m4 projects/pciehp/contrib/sendmail/cf/ostype/solaris2.m4 projects/pciehp/contrib/sendmail/cf/ostype/solaris2.ml.m4 projects/pciehp/contrib/sendmail/cf/ostype/solaris2.pre5.m4 projects/pciehp/contrib/sendmail/cf/ostype/solaris8.m4 projects/pciehp/contrib/sendmail/cf/ostype/sunos3.5.m4 projects/pciehp/contrib/sendmail/cf/ostype/sunos4.1.m4 projects/pciehp/contrib/sendmail/cf/ostype/svr4.m4 projects/pciehp/contrib/sendmail/cf/ostype/ultrix4.m4 projects/pciehp/contrib/sendmail/cf/ostype/unicos.m4 projects/pciehp/contrib/sendmail/cf/ostype/unicosmk.m4 projects/pciehp/contrib/sendmail/cf/ostype/unicosmp.m4 projects/pciehp/contrib/sendmail/cf/ostype/unixware7.m4 projects/pciehp/contrib/sendmail/cf/ostype/unknown.m4 projects/pciehp/contrib/sendmail/cf/ostype/uxpds.m4 projects/pciehp/contrib/sendmail/cf/sendmail.schema projects/pciehp/contrib/sendmail/cf/sh/makeinfo.sh projects/pciehp/contrib/sendmail/contrib/README projects/pciehp/contrib/sendmail/contrib/bsdi.mc projects/pciehp/contrib/sendmail/contrib/buildvirtuser projects/pciehp/contrib/sendmail/contrib/cidrexpand projects/pciehp/contrib/sendmail/contrib/dnsblaccess.m4 projects/pciehp/contrib/sendmail/contrib/link_hash.sh projects/pciehp/contrib/sendmail/contrib/qtool.8 projects/pciehp/contrib/sendmail/contrib/qtool.pl projects/pciehp/contrib/sendmail/contrib/smcontrol.pl projects/pciehp/contrib/sendmail/contrib/socketmapClient.pl projects/pciehp/contrib/sendmail/contrib/socketmapServer.pl projects/pciehp/contrib/sendmail/doc/op/Makefile projects/pciehp/contrib/sendmail/doc/op/README projects/pciehp/contrib/sendmail/doc/op/op.me projects/pciehp/contrib/sendmail/editmap/Makefile projects/pciehp/contrib/sendmail/editmap/Makefile.m4 projects/pciehp/contrib/sendmail/editmap/editmap.8 projects/pciehp/contrib/sendmail/editmap/editmap.c projects/pciehp/contrib/sendmail/include/libmilter/mfapi.h projects/pciehp/contrib/sendmail/include/libmilter/mfdef.h projects/pciehp/contrib/sendmail/include/libmilter/milter.h projects/pciehp/contrib/sendmail/include/libsmdb/smdb.h projects/pciehp/contrib/sendmail/include/sendmail/mailstats.h projects/pciehp/contrib/sendmail/include/sendmail/pathnames.h projects/pciehp/contrib/sendmail/include/sendmail/sendmail.h projects/pciehp/contrib/sendmail/include/sm/assert.h projects/pciehp/contrib/sendmail/include/sm/bdb.h projects/pciehp/contrib/sendmail/include/sm/bitops.h projects/pciehp/contrib/sendmail/include/sm/cdefs.h projects/pciehp/contrib/sendmail/include/sm/cf.h projects/pciehp/contrib/sendmail/include/sm/clock.h projects/pciehp/contrib/sendmail/include/sm/conf.h projects/pciehp/contrib/sendmail/include/sm/config.h projects/pciehp/contrib/sendmail/include/sm/debug.h projects/pciehp/contrib/sendmail/include/sm/errstring.h projects/pciehp/contrib/sendmail/include/sm/exc.h projects/pciehp/contrib/sendmail/include/sm/fdset.h projects/pciehp/contrib/sendmail/include/sm/gen.h projects/pciehp/contrib/sendmail/include/sm/heap.h projects/pciehp/contrib/sendmail/include/sm/io.h projects/pciehp/contrib/sendmail/include/sm/ldap.h projects/pciehp/contrib/sendmail/include/sm/limits.h projects/pciehp/contrib/sendmail/include/sm/mbdb.h projects/pciehp/contrib/sendmail/include/sm/misc.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_aix.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_dragonfly.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_freebsd.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_hp.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_irix.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_linux.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_mpeix.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_next.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_openbsd.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_openunix.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_osf1.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_qnx.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_sunos.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_ultrix.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_unicos.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_unicosmk.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_unicosmp.h projects/pciehp/contrib/sendmail/include/sm/os/sm_os_unixware.h projects/pciehp/contrib/sendmail/include/sm/path.h projects/pciehp/contrib/sendmail/include/sm/rpool.h projects/pciehp/contrib/sendmail/include/sm/sem.h projects/pciehp/contrib/sendmail/include/sm/setjmp.h projects/pciehp/contrib/sendmail/include/sm/shm.h projects/pciehp/contrib/sendmail/include/sm/signal.h projects/pciehp/contrib/sendmail/include/sm/string.h projects/pciehp/contrib/sendmail/include/sm/sysexits.h projects/pciehp/contrib/sendmail/include/sm/tailq.h projects/pciehp/contrib/sendmail/include/sm/test.h projects/pciehp/contrib/sendmail/include/sm/time.h projects/pciehp/contrib/sendmail/include/sm/types.h projects/pciehp/contrib/sendmail/include/sm/varargs.h projects/pciehp/contrib/sendmail/include/sm/xtrap.h projects/pciehp/contrib/sendmail/libmilter/Makefile projects/pciehp/contrib/sendmail/libmilter/Makefile.m4 projects/pciehp/contrib/sendmail/libmilter/README projects/pciehp/contrib/sendmail/libmilter/comm.c projects/pciehp/contrib/sendmail/libmilter/docs/api.html projects/pciehp/contrib/sendmail/libmilter/docs/design.html projects/pciehp/contrib/sendmail/libmilter/docs/index.html projects/pciehp/contrib/sendmail/libmilter/docs/installation.html projects/pciehp/contrib/sendmail/libmilter/docs/other.html projects/pciehp/contrib/sendmail/libmilter/docs/overview.html projects/pciehp/contrib/sendmail/libmilter/docs/sample.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_addheader.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_addrcpt.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_addrcpt_par.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_chgfrom.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_chgheader.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_delrcpt.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_getpriv.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_getsymval.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_insheader.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_main.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_opensocket.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_progress.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_quarantine.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_register.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_replacebody.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setbacklog.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setconn.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setdbg.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setmlreply.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setpriv.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setreply.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_setsymlist.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_settimeout.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_stop.html projects/pciehp/contrib/sendmail/libmilter/docs/smfi_version.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_abort.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_body.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_close.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_connect.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_data.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_envfrom.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_envrcpt.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_eoh.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_eom.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_header.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_helo.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_negotiate.html projects/pciehp/contrib/sendmail/libmilter/docs/xxfi_unknown.html projects/pciehp/contrib/sendmail/libmilter/engine.c projects/pciehp/contrib/sendmail/libmilter/example.c projects/pciehp/contrib/sendmail/libmilter/handler.c projects/pciehp/contrib/sendmail/libmilter/libmilter.h projects/pciehp/contrib/sendmail/libmilter/listener.c projects/pciehp/contrib/sendmail/libmilter/main.c projects/pciehp/contrib/sendmail/libmilter/monitor.c projects/pciehp/contrib/sendmail/libmilter/signal.c projects/pciehp/contrib/sendmail/libmilter/sm_gethost.c projects/pciehp/contrib/sendmail/libmilter/smfi.c projects/pciehp/contrib/sendmail/libmilter/worker.c projects/pciehp/contrib/sendmail/libsm/Makefile projects/pciehp/contrib/sendmail/libsm/Makefile.m4 projects/pciehp/contrib/sendmail/libsm/README projects/pciehp/contrib/sendmail/libsm/assert.c projects/pciehp/contrib/sendmail/libsm/assert.html projects/pciehp/contrib/sendmail/libsm/b-strcmp.c projects/pciehp/contrib/sendmail/libsm/b-strl.c projects/pciehp/contrib/sendmail/libsm/cdefs.html projects/pciehp/contrib/sendmail/libsm/cf.c projects/pciehp/contrib/sendmail/libsm/clock.c projects/pciehp/contrib/sendmail/libsm/clrerr.c projects/pciehp/contrib/sendmail/libsm/config.c projects/pciehp/contrib/sendmail/libsm/debug.c projects/pciehp/contrib/sendmail/libsm/debug.html projects/pciehp/contrib/sendmail/libsm/errstring.c projects/pciehp/contrib/sendmail/libsm/exc.c projects/pciehp/contrib/sendmail/libsm/exc.html projects/pciehp/contrib/sendmail/libsm/fclose.c projects/pciehp/contrib/sendmail/libsm/feof.c projects/pciehp/contrib/sendmail/libsm/ferror.c projects/pciehp/contrib/sendmail/libsm/fflush.c projects/pciehp/contrib/sendmail/libsm/fget.c projects/pciehp/contrib/sendmail/libsm/findfp.c projects/pciehp/contrib/sendmail/libsm/flags.c projects/pciehp/contrib/sendmail/libsm/fopen.c projects/pciehp/contrib/sendmail/libsm/fpos.c projects/pciehp/contrib/sendmail/libsm/fprintf.c projects/pciehp/contrib/sendmail/libsm/fpurge.c projects/pciehp/contrib/sendmail/libsm/fput.c projects/pciehp/contrib/sendmail/libsm/fread.c projects/pciehp/contrib/sendmail/libsm/fscanf.c projects/pciehp/contrib/sendmail/libsm/fseek.c projects/pciehp/contrib/sendmail/libsm/fvwrite.c projects/pciehp/contrib/sendmail/libsm/fvwrite.h projects/pciehp/contrib/sendmail/libsm/fwalk.c projects/pciehp/contrib/sendmail/libsm/fwrite.c projects/pciehp/contrib/sendmail/libsm/gen.html projects/pciehp/contrib/sendmail/libsm/get.c projects/pciehp/contrib/sendmail/libsm/glue.h projects/pciehp/contrib/sendmail/libsm/heap.c projects/pciehp/contrib/sendmail/libsm/heap.html projects/pciehp/contrib/sendmail/libsm/index.html projects/pciehp/contrib/sendmail/libsm/inet6_ntop.c projects/pciehp/contrib/sendmail/libsm/io.html projects/pciehp/contrib/sendmail/libsm/ldap.c projects/pciehp/contrib/sendmail/libsm/local.h projects/pciehp/contrib/sendmail/libsm/makebuf.c projects/pciehp/contrib/sendmail/libsm/match.c projects/pciehp/contrib/sendmail/libsm/mbdb.c projects/pciehp/contrib/sendmail/libsm/memstat.c projects/pciehp/contrib/sendmail/libsm/mpeix.c projects/pciehp/contrib/sendmail/libsm/niprop.c projects/pciehp/contrib/sendmail/libsm/path.c projects/pciehp/contrib/sendmail/libsm/put.c projects/pciehp/contrib/sendmail/libsm/refill.c projects/pciehp/contrib/sendmail/libsm/rewind.c projects/pciehp/contrib/sendmail/libsm/rpool.c projects/pciehp/contrib/sendmail/libsm/rpool.html projects/pciehp/contrib/sendmail/libsm/sem.c projects/pciehp/contrib/sendmail/libsm/setvbuf.c projects/pciehp/contrib/sendmail/libsm/shm.c projects/pciehp/contrib/sendmail/libsm/signal.c projects/pciehp/contrib/sendmail/libsm/smstdio.c projects/pciehp/contrib/sendmail/libsm/snprintf.c projects/pciehp/contrib/sendmail/libsm/sscanf.c projects/pciehp/contrib/sendmail/libsm/stdio.c projects/pciehp/contrib/sendmail/libsm/strcasecmp.c projects/pciehp/contrib/sendmail/libsm/strdup.c projects/pciehp/contrib/sendmail/libsm/strerror.c projects/pciehp/contrib/sendmail/libsm/strexit.c projects/pciehp/contrib/sendmail/libsm/string.c projects/pciehp/contrib/sendmail/libsm/stringf.c projects/pciehp/contrib/sendmail/libsm/strio.c projects/pciehp/contrib/sendmail/libsm/strl.c projects/pciehp/contrib/sendmail/libsm/strrevcmp.c projects/pciehp/contrib/sendmail/libsm/strto.c projects/pciehp/contrib/sendmail/libsm/syslogio.c projects/pciehp/contrib/sendmail/libsm/t-cf.c projects/pciehp/contrib/sendmail/libsm/t-event.c projects/pciehp/contrib/sendmail/libsm/t-exc.c projects/pciehp/contrib/sendmail/libsm/t-fget.c projects/pciehp/contrib/sendmail/libsm/t-float.c projects/pciehp/contrib/sendmail/libsm/t-fopen.c projects/pciehp/contrib/sendmail/libsm/t-heap.c projects/pciehp/contrib/sendmail/libsm/t-inet6_ntop.c projects/pciehp/contrib/sendmail/libsm/t-match.c projects/pciehp/contrib/sendmail/libsm/t-memstat.c projects/pciehp/contrib/sendmail/libsm/t-path.c projects/pciehp/contrib/sendmail/libsm/t-qic.c projects/pciehp/contrib/sendmail/libsm/t-rpool.c projects/pciehp/contrib/sendmail/libsm/t-scanf.c projects/pciehp/contrib/sendmail/libsm/t-sem.c projects/pciehp/contrib/sendmail/libsm/t-shm.c projects/pciehp/contrib/sendmail/libsm/t-smstdio.c projects/pciehp/contrib/sendmail/libsm/t-string.c projects/pciehp/contrib/sendmail/libsm/t-strio.c projects/pciehp/contrib/sendmail/libsm/t-strl.c projects/pciehp/contrib/sendmail/libsm/t-strrevcmp.c projects/pciehp/contrib/sendmail/libsm/t-types.c projects/pciehp/contrib/sendmail/libsm/test.c projects/pciehp/contrib/sendmail/libsm/ungetc.c projects/pciehp/contrib/sendmail/libsm/util.c projects/pciehp/contrib/sendmail/libsm/vasprintf.c projects/pciehp/contrib/sendmail/libsm/vfprintf.c projects/pciehp/contrib/sendmail/libsm/vfscanf.c projects/pciehp/contrib/sendmail/libsm/vprintf.c projects/pciehp/contrib/sendmail/libsm/vsnprintf.c projects/pciehp/contrib/sendmail/libsm/wbuf.c projects/pciehp/contrib/sendmail/libsm/wsetup.c projects/pciehp/contrib/sendmail/libsm/xtrap.c projects/pciehp/contrib/sendmail/libsmdb/Makefile projects/pciehp/contrib/sendmail/libsmdb/Makefile.m4 projects/pciehp/contrib/sendmail/libsmdb/smdb.c projects/pciehp/contrib/sendmail/libsmdb/smdb1.c projects/pciehp/contrib/sendmail/libsmdb/smdb2.c projects/pciehp/contrib/sendmail/libsmdb/smndbm.c projects/pciehp/contrib/sendmail/libsmutil/Makefile projects/pciehp/contrib/sendmail/libsmutil/Makefile.m4 projects/pciehp/contrib/sendmail/libsmutil/cf.c projects/pciehp/contrib/sendmail/libsmutil/debug.c projects/pciehp/contrib/sendmail/libsmutil/err.c projects/pciehp/contrib/sendmail/libsmutil/lockfile.c projects/pciehp/contrib/sendmail/libsmutil/safefile.c projects/pciehp/contrib/sendmail/libsmutil/snprintf.c projects/pciehp/contrib/sendmail/mail.local/Makefile projects/pciehp/contrib/sendmail/mail.local/Makefile.m4 projects/pciehp/contrib/sendmail/mail.local/README projects/pciehp/contrib/sendmail/mail.local/mail.local.8 projects/pciehp/contrib/sendmail/mail.local/mail.local.c projects/pciehp/contrib/sendmail/mailstats/Makefile projects/pciehp/contrib/sendmail/mailstats/Makefile.m4 projects/pciehp/contrib/sendmail/mailstats/mailstats.8 projects/pciehp/contrib/sendmail/mailstats/mailstats.c projects/pciehp/contrib/sendmail/makemap/Makefile projects/pciehp/contrib/sendmail/makemap/Makefile.m4 projects/pciehp/contrib/sendmail/makemap/makemap.8 projects/pciehp/contrib/sendmail/makemap/makemap.c projects/pciehp/contrib/sendmail/praliases/Makefile projects/pciehp/contrib/sendmail/praliases/Makefile.m4 projects/pciehp/contrib/sendmail/praliases/praliases.8 projects/pciehp/contrib/sendmail/praliases/praliases.c projects/pciehp/contrib/sendmail/rmail/Makefile projects/pciehp/contrib/sendmail/rmail/Makefile.m4 projects/pciehp/contrib/sendmail/rmail/rmail.8 projects/pciehp/contrib/sendmail/rmail/rmail.c projects/pciehp/contrib/sendmail/smrsh/Makefile projects/pciehp/contrib/sendmail/smrsh/Makefile.m4 projects/pciehp/contrib/sendmail/smrsh/README projects/pciehp/contrib/sendmail/smrsh/smrsh.8 projects/pciehp/contrib/sendmail/smrsh/smrsh.c projects/pciehp/contrib/sendmail/src/Makefile projects/pciehp/contrib/sendmail/src/Makefile.m4 projects/pciehp/contrib/sendmail/src/README projects/pciehp/contrib/sendmail/src/SECURITY projects/pciehp/contrib/sendmail/src/TRACEFLAGS projects/pciehp/contrib/sendmail/src/TUNING projects/pciehp/contrib/sendmail/src/alias.c projects/pciehp/contrib/sendmail/src/aliases projects/pciehp/contrib/sendmail/src/aliases.5 projects/pciehp/contrib/sendmail/src/arpadate.c projects/pciehp/contrib/sendmail/src/bf.c projects/pciehp/contrib/sendmail/src/bf.h projects/pciehp/contrib/sendmail/src/collect.c projects/pciehp/contrib/sendmail/src/conf.c projects/pciehp/contrib/sendmail/src/conf.h projects/pciehp/contrib/sendmail/src/control.c projects/pciehp/contrib/sendmail/src/convtime.c projects/pciehp/contrib/sendmail/src/daemon.c projects/pciehp/contrib/sendmail/src/daemon.h projects/pciehp/contrib/sendmail/src/deliver.c projects/pciehp/contrib/sendmail/src/domain.c projects/pciehp/contrib/sendmail/src/envelope.c projects/pciehp/contrib/sendmail/src/err.c projects/pciehp/contrib/sendmail/src/headers.c projects/pciehp/contrib/sendmail/src/helpfile projects/pciehp/contrib/sendmail/src/macro.c projects/pciehp/contrib/sendmail/src/mailq.1 projects/pciehp/contrib/sendmail/src/main.c projects/pciehp/contrib/sendmail/src/map.c projects/pciehp/contrib/sendmail/src/map.h projects/pciehp/contrib/sendmail/src/mci.c projects/pciehp/contrib/sendmail/src/milter.c projects/pciehp/contrib/sendmail/src/mime.c projects/pciehp/contrib/sendmail/src/newaliases.1 projects/pciehp/contrib/sendmail/src/parseaddr.c projects/pciehp/contrib/sendmail/src/queue.c projects/pciehp/contrib/sendmail/src/ratectrl.c projects/pciehp/contrib/sendmail/src/readcf.c projects/pciehp/contrib/sendmail/src/recipient.c projects/pciehp/contrib/sendmail/src/sasl.c projects/pciehp/contrib/sendmail/src/savemail.c projects/pciehp/contrib/sendmail/src/sendmail.8 projects/pciehp/contrib/sendmail/src/sendmail.h projects/pciehp/contrib/sendmail/src/sfsasl.c projects/pciehp/contrib/sendmail/src/sfsasl.h projects/pciehp/contrib/sendmail/src/shmticklib.c projects/pciehp/contrib/sendmail/src/sm_resolve.c projects/pciehp/contrib/sendmail/src/sm_resolve.h projects/pciehp/contrib/sendmail/src/srvrsmtp.c projects/pciehp/contrib/sendmail/src/stab.c projects/pciehp/contrib/sendmail/src/stats.c projects/pciehp/contrib/sendmail/src/statusd_shm.h projects/pciehp/contrib/sendmail/src/sysexits.c projects/pciehp/contrib/sendmail/src/timers.c projects/pciehp/contrib/sendmail/src/timers.h projects/pciehp/contrib/sendmail/src/tls.c projects/pciehp/contrib/sendmail/src/trace.c projects/pciehp/contrib/sendmail/src/udb.c projects/pciehp/contrib/sendmail/src/usersmtp.c projects/pciehp/contrib/sendmail/src/util.c projects/pciehp/contrib/sendmail/src/version.c projects/pciehp/contrib/sendmail/test/Makefile projects/pciehp/contrib/sendmail/test/Makefile.m4 projects/pciehp/contrib/sendmail/test/README projects/pciehp/contrib/sendmail/test/Results projects/pciehp/contrib/sendmail/test/t_dropgid.c projects/pciehp/contrib/sendmail/test/t_exclopen.c projects/pciehp/contrib/sendmail/test/t_pathconf.c projects/pciehp/contrib/sendmail/test/t_seteuid.c projects/pciehp/contrib/sendmail/test/t_setgid.c projects/pciehp/contrib/sendmail/test/t_setreuid.c projects/pciehp/contrib/sendmail/test/t_setuid.c projects/pciehp/contrib/sendmail/test/t_snprintf.c projects/pciehp/contrib/sendmail/vacation/Makefile projects/pciehp/contrib/sendmail/vacation/Makefile.m4 projects/pciehp/contrib/sendmail/vacation/vacation.1 projects/pciehp/contrib/sendmail/vacation/vacation.c projects/pciehp/contrib/serf/CHANGES projects/pciehp/contrib/serf/auth/auth_spnego.c projects/pciehp/contrib/serf/serf.h projects/pciehp/contrib/serf/ssltunnel.c projects/pciehp/contrib/subversion/CHANGES projects/pciehp/contrib/subversion/NOTICE projects/pciehp/contrib/subversion/build-outputs.mk projects/pciehp/contrib/subversion/configure projects/pciehp/contrib/subversion/configure.ac projects/pciehp/contrib/subversion/subversion/include/private/svn_cache.h projects/pciehp/contrib/subversion/subversion/include/private/svn_dep_compat.h projects/pciehp/contrib/subversion/subversion/include/svn_version.h projects/pciehp/contrib/subversion/subversion/libsvn_client/commit_util.c projects/pciehp/contrib/subversion/subversion/libsvn_client/export.c projects/pciehp/contrib/subversion/subversion/libsvn_client/merge.c projects/pciehp/contrib/subversion/subversion/libsvn_client/prop_commands.c projects/pciehp/contrib/subversion/subversion/libsvn_delta/svndiff.c projects/pciehp/contrib/subversion/subversion/libsvn_fs_fs/fs.c projects/pciehp/contrib/subversion/subversion/libsvn_fs_fs/fs.h projects/pciehp/contrib/subversion/subversion/libsvn_fs_fs/rep-cache-db.h projects/pciehp/contrib/subversion/subversion/libsvn_ra_serf/getlocks.c projects/pciehp/contrib/subversion/subversion/libsvn_ra_serf/inherited_props.c projects/pciehp/contrib/subversion/subversion/libsvn_ra_serf/locks.c projects/pciehp/contrib/subversion/subversion/libsvn_ra_serf/log.c projects/pciehp/contrib/subversion/subversion/libsvn_ra_serf/update.c projects/pciehp/contrib/subversion/subversion/libsvn_ra_svn/protocol projects/pciehp/contrib/subversion/subversion/libsvn_repos/dump.c projects/pciehp/contrib/subversion/subversion/libsvn_repos/fs-wrap.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/cache-memcache.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/config_file.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/internal_statements.h projects/pciehp/contrib/subversion/subversion/libsvn_subr/io.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/prompt.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/sysinfo.c projects/pciehp/contrib/subversion/subversion/libsvn_subr/version.c projects/pciehp/contrib/subversion/subversion/libsvn_wc/status.c projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc-checks.h projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc-metadata.h projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc-metadata.sql projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc-queries.h projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc-queries.sql projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc_db.c projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc_db.h projects/pciehp/contrib/subversion/subversion/libsvn_wc/wc_db_wcroot.c projects/pciehp/contrib/subversion/subversion/svn/conflict-callbacks.c projects/pciehp/contrib/subversion/subversion/svn/util.c projects/pciehp/contrib/subversion/subversion/svndumpfilter/svndumpfilter.c projects/pciehp/contrib/subversion/subversion/svnrdump/util.c projects/pciehp/contrib/subversion/subversion/svnserve/serve.c projects/pciehp/contrib/tzdata/africa projects/pciehp/contrib/tzdata/australasia projects/pciehp/contrib/tzdata/europe projects/pciehp/contrib/tzdata/northamerica projects/pciehp/contrib/unbound/doc/example.conf.in projects/pciehp/contrib/unbound/doc/unbound.conf.5 projects/pciehp/contrib/unbound/doc/unbound.conf.5.in projects/pciehp/contrib/unbound/freebsd-configure.sh projects/pciehp/contrib/unbound/libunbound/libworker.h projects/pciehp/contrib/unbound/libunbound/worker.h projects/pciehp/contrib/unbound/services/localzone.c projects/pciehp/contrib/unbound/util/config_file.c projects/pciehp/contrib/unbound/util/config_file.h projects/pciehp/contrib/unbound/util/configlexer.lex projects/pciehp/contrib/unbound/util/configparser.y projects/pciehp/contrib/wpa/src/utils/os_unix.c projects/pciehp/crypto/openssh/sshd_config projects/pciehp/crypto/openssl/ACKNOWLEDGMENTS projects/pciehp/crypto/openssl/CHANGES projects/pciehp/crypto/openssl/Makefile projects/pciehp/crypto/openssl/NEWS projects/pciehp/crypto/openssl/README projects/pciehp/crypto/openssl/apps/enc.c projects/pciehp/crypto/openssl/apps/ocsp.c projects/pciehp/crypto/openssl/apps/req.c projects/pciehp/crypto/openssl/apps/s_cb.c projects/pciehp/crypto/openssl/apps/s_socket.c projects/pciehp/crypto/openssl/apps/smime.c projects/pciehp/crypto/openssl/crypto/asn1/a_strnid.c projects/pciehp/crypto/openssl/crypto/bio/bss_dgram.c projects/pciehp/crypto/openssl/crypto/bn/bn_mont.c projects/pciehp/crypto/openssl/crypto/cms/cms_env.c projects/pciehp/crypto/openssl/crypto/cms/cms_sd.c projects/pciehp/crypto/openssl/crypto/cms/cms_smime.c projects/pciehp/crypto/openssl/crypto/dso/dso_dlfcn.c projects/pciehp/crypto/openssl/crypto/ec/ec_ameth.c projects/pciehp/crypto/openssl/crypto/ec/ec_asn1.c projects/pciehp/crypto/openssl/crypto/ec/ec_lcl.h projects/pciehp/crypto/openssl/crypto/evp/bio_b64.c projects/pciehp/crypto/openssl/crypto/evp/encode.c projects/pciehp/crypto/openssl/crypto/opensslv.h projects/pciehp/crypto/openssl/crypto/pkcs12/p12_crt.c projects/pciehp/crypto/openssl/crypto/pkcs12/p12_kiss.c projects/pciehp/crypto/openssl/crypto/pkcs7/pk7_doit.c projects/pciehp/crypto/openssl/crypto/pkcs7/pkcs7.h projects/pciehp/crypto/openssl/crypto/pkcs7/pkcs7err.c projects/pciehp/crypto/openssl/crypto/rsa/rsa_ameth.c projects/pciehp/crypto/openssl/crypto/srp/srp_vfy.c projects/pciehp/crypto/openssl/crypto/ts/ts_rsp_verify.c projects/pciehp/crypto/openssl/crypto/x509v3/v3_purp.c projects/pciehp/crypto/openssl/doc/apps/cms.pod projects/pciehp/crypto/openssl/doc/apps/enc.pod projects/pciehp/crypto/openssl/doc/apps/s_server.pod projects/pciehp/crypto/openssl/doc/apps/smime.pod projects/pciehp/crypto/openssl/doc/apps/verify.pod projects/pciehp/crypto/openssl/doc/apps/version.pod projects/pciehp/crypto/openssl/doc/apps/x509v3_config.pod projects/pciehp/crypto/openssl/doc/crypto/CMS_decrypt.pod projects/pciehp/crypto/openssl/doc/crypto/CONF_modules_free.pod projects/pciehp/crypto/openssl/doc/crypto/CONF_modules_load_file.pod projects/pciehp/crypto/openssl/doc/crypto/OPENSSL_config.pod projects/pciehp/crypto/openssl/doc/crypto/X509_NAME_ENTRY_get_object.pod projects/pciehp/crypto/openssl/doc/crypto/X509_STORE_CTX_get_ex_new_index.pod projects/pciehp/crypto/openssl/doc/fingerprints.txt projects/pciehp/crypto/openssl/doc/ssl/SSL_CTX_set_msg_callback.pod projects/pciehp/crypto/openssl/doc/ssl/SSL_CTX_set_options.pod projects/pciehp/crypto/openssl/doc/ssl/SSL_get_peer_cert_chain.pod projects/pciehp/crypto/openssl/engines/ccgost/gost_ameth.c projects/pciehp/crypto/openssl/ssl/Makefile projects/pciehp/crypto/openssl/ssl/d1_both.c projects/pciehp/crypto/openssl/ssl/d1_lib.c projects/pciehp/crypto/openssl/ssl/d1_pkt.c projects/pciehp/crypto/openssl/ssl/d1_srvr.c projects/pciehp/crypto/openssl/ssl/s3_clnt.c projects/pciehp/crypto/openssl/ssl/s3_pkt.c projects/pciehp/crypto/openssl/ssl/s3_srvr.c projects/pciehp/crypto/openssl/ssl/ssl.h projects/pciehp/crypto/openssl/ssl/ssl3.h projects/pciehp/crypto/openssl/ssl/ssl_asn1.c projects/pciehp/crypto/openssl/ssl/ssl_err.c projects/pciehp/crypto/openssl/ssl/ssl_lib.c projects/pciehp/crypto/openssl/ssl/t1_enc.c projects/pciehp/crypto/openssl/ssl/t1_lib.c projects/pciehp/etc/Makefile projects/pciehp/etc/etc.amd64/ttys projects/pciehp/etc/etc.i386/ttys projects/pciehp/etc/mtree/BSD.include.dist projects/pciehp/etc/mtree/BSD.root.dist projects/pciehp/etc/mtree/BSD.tests.dist projects/pciehp/etc/mtree/BSD.usr.dist projects/pciehp/etc/mtree/BSD.var.dist projects/pciehp/etc/network.subr projects/pciehp/etc/newsyslog.conf projects/pciehp/etc/sendmail/freebsd.mc projects/pciehp/etc/sendmail/freebsd.submit.mc projects/pciehp/etc/snmpd.config projects/pciehp/games/fortune/datfiles/fortunes projects/pciehp/games/fortune/datfiles/freebsd-tips projects/pciehp/games/fortune/fortune/pathnames.h projects/pciehp/games/grdc/Makefile projects/pciehp/games/morse/morse.6 projects/pciehp/games/random/random.6 projects/pciehp/gnu/lib/Makefile projects/pciehp/gnu/lib/csu/Makefile projects/pciehp/gnu/lib/libgcc/Makefile projects/pciehp/gnu/lib/libgcov/Makefile projects/pciehp/gnu/lib/libreadline/Makefile projects/pciehp/gnu/lib/libreadline/readline/Makefile projects/pciehp/gnu/usr.bin/Makefile projects/pciehp/gnu/usr.bin/binutils/addr2line/Makefile projects/pciehp/gnu/usr.bin/binutils/ld/Makefile projects/pciehp/gnu/usr.bin/binutils/libbfd/Makefile projects/pciehp/gnu/usr.bin/binutils/libbfd/bfd.h projects/pciehp/gnu/usr.bin/binutils/nm/Makefile projects/pciehp/gnu/usr.bin/binutils/objcopy/Makefile projects/pciehp/gnu/usr.bin/binutils/objdump/Makefile projects/pciehp/gnu/usr.bin/binutils/readelf/Makefile projects/pciehp/gnu/usr.bin/binutils/size/Makefile projects/pciehp/gnu/usr.bin/binutils/strings/Makefile projects/pciehp/gnu/usr.bin/binutils/strip/Makefile projects/pciehp/gnu/usr.bin/cc/Makefile projects/pciehp/gnu/usr.bin/cc/Makefile.tgt projects/pciehp/gnu/usr.bin/cc/include/Makefile projects/pciehp/gnu/usr.bin/gdb/Makefile.inc projects/pciehp/gnu/usr.bin/gdb/gdb/Makefile projects/pciehp/gnu/usr.bin/gdb/gdbtui/Makefile projects/pciehp/gnu/usr.bin/gdb/kgdb/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grodvi/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grohtml/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grolbp/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grolj4/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grops/Makefile projects/pciehp/gnu/usr.bin/groff/src/devices/grotty/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/eqn/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/grn/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/html/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/pic/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/refer/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/soelim/Makefile projects/pciehp/gnu/usr.bin/groff/src/preproc/tbl/Makefile projects/pciehp/gnu/usr.bin/groff/src/roff/groff/Makefile projects/pciehp/gnu/usr.bin/groff/src/roff/troff/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/addftinfo/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/hpftodit/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/indxbib/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/lkbib/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/lookbib/Makefile projects/pciehp/gnu/usr.bin/groff/src/utils/tfmtodit/Makefile projects/pciehp/gnu/usr.bin/groff/tmac/mdoc.local projects/pciehp/gnu/usr.bin/rcs/Makefile.inc projects/pciehp/gnu/usr.bin/texinfo/info/Makefile projects/pciehp/gnu/usr.bin/texinfo/infokey/Makefile projects/pciehp/gnu/usr.bin/texinfo/install-info/Makefile projects/pciehp/gnu/usr.bin/texinfo/makeinfo/Makefile projects/pciehp/gnu/usr.bin/texinfo/texindex/Makefile projects/pciehp/include/Makefile projects/pciehp/include/dirent.h projects/pciehp/include/search.h projects/pciehp/include/strings.h projects/pciehp/include/xlocale/Makefile projects/pciehp/include/xlocale/_string.h projects/pciehp/kerberos5/libexec/digest-service/Makefile projects/pciehp/kerberos5/libexec/hprop/Makefile projects/pciehp/kerberos5/libexec/hpropd/Makefile projects/pciehp/kerberos5/libexec/ipropd-master/Makefile projects/pciehp/kerberos5/libexec/ipropd-slave/Makefile projects/pciehp/kerberos5/libexec/kadmind/Makefile projects/pciehp/kerberos5/libexec/kcm/Makefile projects/pciehp/kerberos5/libexec/kdc/Makefile projects/pciehp/kerberos5/libexec/kdigest/Makefile projects/pciehp/kerberos5/libexec/kfd/Makefile projects/pciehp/kerberos5/libexec/kimpersonate/Makefile projects/pciehp/kerberos5/libexec/kpasswdd/Makefile projects/pciehp/kerberos5/tools/asn1_compile/Makefile projects/pciehp/kerberos5/tools/slc/Makefile projects/pciehp/kerberos5/usr.bin/hxtool/Makefile projects/pciehp/kerberos5/usr.bin/kadmin/Makefile projects/pciehp/kerberos5/usr.bin/kcc/Makefile projects/pciehp/kerberos5/usr.bin/kdestroy/Makefile projects/pciehp/kerberos5/usr.bin/kf/Makefile projects/pciehp/kerberos5/usr.bin/kgetcred/Makefile projects/pciehp/kerberos5/usr.bin/kinit/Makefile projects/pciehp/kerberos5/usr.bin/kpasswd/Makefile projects/pciehp/kerberos5/usr.bin/ksu/Makefile projects/pciehp/kerberos5/usr.bin/string2key/Makefile projects/pciehp/kerberos5/usr.bin/verify_krb5_conf/Makefile projects/pciehp/kerberos5/usr.sbin/iprop-log/Makefile projects/pciehp/kerberos5/usr.sbin/kstash/Makefile projects/pciehp/kerberos5/usr.sbin/ktutil/Makefile projects/pciehp/lib/Makefile projects/pciehp/lib/atf/libatf-c++/Makefile projects/pciehp/lib/atf/libatf-c++/tests/Makefile projects/pciehp/lib/atf/libatf-c/Makefile projects/pciehp/lib/atf/libatf-c/tests/Makefile projects/pciehp/lib/clang/clang.build.mk projects/pciehp/lib/csu/amd64/Makefile projects/pciehp/lib/csu/i386-elf/Makefile projects/pciehp/lib/libarchive/Makefile projects/pciehp/lib/libarchive/config_freebsd.h projects/pciehp/lib/libbluetooth/bluetooth.3 projects/pciehp/lib/libc/Makefile projects/pciehp/lib/libc/amd64/gen/sigsetjmp.S projects/pciehp/lib/libc/arm/Symbol.map projects/pciehp/lib/libc/arm/aeabi/Makefile.inc projects/pciehp/lib/libc/capability/cap_rights_init.3 projects/pciehp/lib/libc/gen/arc4random.c projects/pciehp/lib/libc/gen/cap_rights_get.3 projects/pciehp/lib/libc/gen/cap_sandboxed.3 projects/pciehp/lib/libc/gen/check_utility_compat.3 projects/pciehp/lib/libc/gen/clock_getcpuclockid.3 projects/pciehp/lib/libc/gen/directory.3 projects/pciehp/lib/libc/gen/dlinfo.3 projects/pciehp/lib/libc/gen/ftok.3 projects/pciehp/lib/libc/gen/gen-private.h projects/pciehp/lib/libc/gen/getpagesizes.3 projects/pciehp/lib/libc/gen/getutxent.3 projects/pciehp/lib/libc/gen/opendir.c projects/pciehp/lib/libc/gen/posix_spawn.3 projects/pciehp/lib/libc/gen/posix_spawn_file_actions_addopen.3 projects/pciehp/lib/libc/gen/posix_spawn_file_actions_init.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getflags.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getpgroup.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getschedparam.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getschedpolicy.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getsigdefault.3 projects/pciehp/lib/libc/gen/posix_spawnattr_getsigmask.3 projects/pciehp/lib/libc/gen/posix_spawnattr_init.3 projects/pciehp/lib/libc/gen/readdir.c projects/pciehp/lib/libc/gen/readpassphrase.c projects/pciehp/lib/libc/gen/rewinddir.c projects/pciehp/lib/libc/gen/sem_wait.3 projects/pciehp/lib/libc/gen/setproctitle.3 projects/pciehp/lib/libc/gen/statvfs.3 projects/pciehp/lib/libc/gen/sysconf.c projects/pciehp/lib/libc/gen/telldir.c projects/pciehp/lib/libc/gen/telldir.h projects/pciehp/lib/libc/gen/tls.c projects/pciehp/lib/libc/gen/ttyname.3 projects/pciehp/lib/libc/i386/gen/sigsetjmp.S projects/pciehp/lib/libc/iconv/__iconv_get_list.3 projects/pciehp/lib/libc/iconv/bsd_iconv.c projects/pciehp/lib/libc/iconv/citrus_db_factory.c projects/pciehp/lib/libc/iconv/citrus_iconv.c projects/pciehp/lib/libc/iconv/iconv_canonicalize.3 projects/pciehp/lib/libc/iconv/iconvctl.3 projects/pciehp/lib/libc/iconv/iconvlist.3 projects/pciehp/lib/libc/locale/utf8.c projects/pciehp/lib/libc/mips/arith.h projects/pciehp/lib/libc/net/Makefile.inc projects/pciehp/lib/libc/net/getaddrinfo.c projects/pciehp/lib/libc/net/nsdispatch.3 projects/pciehp/lib/libc/net/sourcefilter.3 projects/pciehp/lib/libc/net/sourcefilter.c projects/pciehp/lib/libc/posix1e/acl_add_flag_np.3 projects/pciehp/lib/libc/posix1e/acl_add_perm.3 projects/pciehp/lib/libc/posix1e/acl_calc_mask.3 projects/pciehp/lib/libc/posix1e/acl_clear_flags_np.3 projects/pciehp/lib/libc/posix1e/acl_clear_perms.3 projects/pciehp/lib/libc/posix1e/acl_copy_entry.3 projects/pciehp/lib/libc/posix1e/acl_create_entry.3 projects/pciehp/lib/libc/posix1e/acl_delete_entry.3 projects/pciehp/lib/libc/posix1e/acl_delete_flag_np.3 projects/pciehp/lib/libc/posix1e/acl_delete_perm.3 projects/pciehp/lib/libc/posix1e/acl_get_brand_np.3 projects/pciehp/lib/libc/posix1e/acl_get_entry.3 projects/pciehp/lib/libc/posix1e/acl_get_entry_type_np.3 projects/pciehp/lib/libc/posix1e/acl_get_flag_np.3 projects/pciehp/lib/libc/posix1e/acl_get_flagset_np.3 projects/pciehp/lib/libc/posix1e/acl_get_perm_np.3 projects/pciehp/lib/libc/posix1e/acl_get_permset.3 projects/pciehp/lib/libc/posix1e/acl_get_qualifier.3 projects/pciehp/lib/libc/posix1e/acl_get_tag_type.3 projects/pciehp/lib/libc/posix1e/acl_is_trivial_np.3 projects/pciehp/lib/libc/posix1e/acl_set_entry_type_np.3 projects/pciehp/lib/libc/posix1e/acl_set_flagset_np.3 projects/pciehp/lib/libc/posix1e/acl_set_permset.3 projects/pciehp/lib/libc/posix1e/acl_set_qualifier.3 projects/pciehp/lib/libc/posix1e/acl_set_tag_type.3 projects/pciehp/lib/libc/posix1e/acl_strip_np.3 projects/pciehp/lib/libc/regex/re_format.7 projects/pciehp/lib/libc/regex/regcomp.c projects/pciehp/lib/libc/stdio/fflush.c projects/pciehp/lib/libc/stdio/fmemopen.c projects/pciehp/lib/libc/stdio/fopen.3 projects/pciehp/lib/libc/stdio/fputs.c projects/pciehp/lib/libc/stdio/fputws.c projects/pciehp/lib/libc/stdio/freopen.c projects/pciehp/lib/libc/stdio/ftell.c projects/pciehp/lib/libc/stdio/getline.3 projects/pciehp/lib/libc/stdio/gets.c projects/pciehp/lib/libc/stdio/printf.3 projects/pciehp/lib/libc/stdio/puts.c projects/pciehp/lib/libc/stdio/putw.c projects/pciehp/lib/libc/stdio/rewind.c projects/pciehp/lib/libc/stdio/vfprintf.c projects/pciehp/lib/libc/stdio/vfwprintf.c projects/pciehp/lib/libc/stdio/wbuf.c projects/pciehp/lib/libc/stdlib/Makefile.inc projects/pciehp/lib/libc/stdlib/Symbol.map projects/pciehp/lib/libc/stdlib/a64l.3 projects/pciehp/lib/libc/stdlib/getopt.3 projects/pciehp/lib/libc/stdlib/getopt.c projects/pciehp/lib/libc/stdlib/getopt_long.c projects/pciehp/lib/libc/stdlib/hcreate.3 projects/pciehp/lib/libc/stdlib/hcreate.c projects/pciehp/lib/libc/stdlib/strfmon.3 projects/pciehp/lib/libc/stdlib/strfmon.c projects/pciehp/lib/libc/stdlib/tsearch.c projects/pciehp/lib/libc/stdlib/twalk.c projects/pciehp/lib/libc/stdtime/strftime.3 projects/pciehp/lib/libc/stdtime/strftime.c projects/pciehp/lib/libc/stdtime/strptime.c projects/pciehp/lib/libc/stdtime/timelocal.c projects/pciehp/lib/libc/string/Makefile.inc projects/pciehp/lib/libc/string/memmem.3 projects/pciehp/lib/libc/string/strcasecmp.3 projects/pciehp/lib/libc/string/strerror.3 projects/pciehp/lib/libc/string/strspn.3 projects/pciehp/lib/libc/string/strtok.3 projects/pciehp/lib/libc/sys/abort2.2 projects/pciehp/lib/libc/sys/aio_cancel.2 projects/pciehp/lib/libc/sys/aio_error.2 projects/pciehp/lib/libc/sys/aio_mlock.2 projects/pciehp/lib/libc/sys/aio_read.2 projects/pciehp/lib/libc/sys/aio_return.2 projects/pciehp/lib/libc/sys/aio_suspend.2 projects/pciehp/lib/libc/sys/aio_waitcomplete.2 projects/pciehp/lib/libc/sys/aio_write.2 projects/pciehp/lib/libc/sys/bind.2 projects/pciehp/lib/libc/sys/bindat.2 projects/pciehp/lib/libc/sys/cap_fcntls_limit.2 projects/pciehp/lib/libc/sys/cap_ioctls_limit.2 projects/pciehp/lib/libc/sys/cap_rights_limit.2 projects/pciehp/lib/libc/sys/connect.2 projects/pciehp/lib/libc/sys/connectat.2 projects/pciehp/lib/libc/sys/cpuset.2 projects/pciehp/lib/libc/sys/cpuset_getaffinity.2 projects/pciehp/lib/libc/sys/ffclock.2 projects/pciehp/lib/libc/sys/intro.2 projects/pciehp/lib/libc/sys/kenv.2 projects/pciehp/lib/libc/sys/kqueue.2 projects/pciehp/lib/libc/sys/kse.2 projects/pciehp/lib/libc/sys/listen.2 projects/pciehp/lib/libc/sys/mlock.2 projects/pciehp/lib/libc/sys/mmap.2 projects/pciehp/lib/libc/sys/mmap.c projects/pciehp/lib/libc/sys/pdfork.2 projects/pciehp/lib/libc/sys/posix_fallocate.2 projects/pciehp/lib/libc/sys/posix_openpt.2 projects/pciehp/lib/libc/sys/procctl.2 projects/pciehp/lib/libc/sys/pselect.2 projects/pciehp/lib/libc/sys/rtprio.2 projects/pciehp/lib/libc/sys/sendfile.2 projects/pciehp/lib/libc/sys/shm_open.2 projects/pciehp/lib/libc/sys/shutdown.2 projects/pciehp/lib/libc/sys/socket.2 projects/pciehp/lib/libc/sys/utimes.2 projects/pciehp/lib/libc/xdr/xdr_float.c projects/pciehp/lib/libcalendar/calendar.3 projects/pciehp/lib/libcam/cam.3 projects/pciehp/lib/libcapsicum/libcapsicum.3 projects/pciehp/lib/libcrypt/crypt.3 projects/pciehp/lib/libcrypt/crypt.c projects/pciehp/lib/libdevinfo/devinfo.3 projects/pciehp/lib/libdevstat/devstat.3 projects/pciehp/lib/libedit/Makefile projects/pciehp/lib/libedit/common.c projects/pciehp/lib/libedit/emacs.c projects/pciehp/lib/libedit/filecomplete.h projects/pciehp/lib/libedit/histedit.h projects/pciehp/lib/libedit/prompt.c projects/pciehp/lib/libedit/prompt.h projects/pciehp/lib/libedit/read.h projects/pciehp/lib/libedit/sys.h projects/pciehp/lib/libedit/term.h projects/pciehp/lib/libedit/tty.c projects/pciehp/lib/libefi/libefi.3 projects/pciehp/lib/libexpat/libbsdxml.3 projects/pciehp/lib/libfetch/common.c projects/pciehp/lib/libfetch/common.h projects/pciehp/lib/libfetch/fetch.3 projects/pciehp/lib/libfetch/fetch.h projects/pciehp/lib/libfetch/http.c projects/pciehp/lib/libgeom/libgeom.3 projects/pciehp/lib/libgssapi/mech.5 projects/pciehp/lib/libiconv_modules/HZ/citrus_hz.c projects/pciehp/lib/libkvm/kvm_amd64.c projects/pciehp/lib/libkvm/kvm_i386.c projects/pciehp/lib/libmagic/Makefile projects/pciehp/lib/libmagic/config.h projects/pciehp/lib/libmd/mdX.3 projects/pciehp/lib/libmemstat/libmemstat.3 projects/pciehp/lib/libnetgraph/netgraph.3 projects/pciehp/lib/libnv/nv.3 projects/pciehp/lib/libpam/modules/pam_group/pam_group.8 projects/pciehp/lib/libpam/modules/pam_group/pam_group.c projects/pciehp/lib/libpam/modules/pam_lastlog/pam_lastlog.c projects/pciehp/lib/libpam/modules/pam_passwdqc/pam_passwdqc.8 projects/pciehp/lib/libpam/modules/pam_radius/pam_radius.8 projects/pciehp/lib/libpam/modules/pam_ssh/pam_ssh.8 projects/pciehp/lib/libpam/modules/pam_tacplus/pam_tacplus.8 projects/pciehp/lib/libpmc/libpmc.c projects/pciehp/lib/libpmc/pmc.3 projects/pciehp/lib/libpmc/pmc.atom.3 projects/pciehp/lib/libpmc/pmc.atomsilvermont.3 projects/pciehp/lib/libpmc/pmc.core.3 projects/pciehp/lib/libpmc/pmc.core2.3 projects/pciehp/lib/libpmc/pmc.corei7.3 projects/pciehp/lib/libpmc/pmc.corei7uc.3 projects/pciehp/lib/libpmc/pmc.haswell.3 projects/pciehp/lib/libpmc/pmc.haswelluc.3 projects/pciehp/lib/libpmc/pmc.iaf.3 projects/pciehp/lib/libpmc/pmc.ivybridge.3 projects/pciehp/lib/libpmc/pmc.ivybridgexeon.3 projects/pciehp/lib/libpmc/pmc.k7.3 projects/pciehp/lib/libpmc/pmc.k8.3 projects/pciehp/lib/libpmc/pmc.mips24k.3 projects/pciehp/lib/libpmc/pmc.octeon.3 projects/pciehp/lib/libpmc/pmc.p4.3 projects/pciehp/lib/libpmc/pmc.p5.3 projects/pciehp/lib/libpmc/pmc.p6.3 projects/pciehp/lib/libpmc/pmc.sandybridge.3 projects/pciehp/lib/libpmc/pmc.sandybridgeuc.3 projects/pciehp/lib/libpmc/pmc.sandybridgexeon.3 projects/pciehp/lib/libpmc/pmc.soft.3 projects/pciehp/lib/libpmc/pmc.tsc.3 projects/pciehp/lib/libpmc/pmc.ucf.3 projects/pciehp/lib/libpmc/pmc.westmere.3 projects/pciehp/lib/libpmc/pmc.westmereuc.3 projects/pciehp/lib/libpmc/pmc.xscale.3 projects/pciehp/lib/libproc/Makefile projects/pciehp/lib/libproc/proc_sym.c projects/pciehp/lib/libprocstat/libprocstat.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_get_error.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_get_mech_info.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_get_mechanisms.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_get_principal_name.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_get_versions.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_getcred.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_is_installed.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_max_data_length.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_mech_to_oid.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_oid_to_mech.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_qop_to_num.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_seccreate.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_set_callback.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_set_defaults.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_set_svc_name.3 projects/pciehp/lib/librpcsec_gss/rpc_gss_svc_max_data_length.3 projects/pciehp/lib/librpcsec_gss/rpcsec_gss.3 projects/pciehp/lib/librtld_db/librtld_db.3 projects/pciehp/lib/libsdp/sdp.3 projects/pciehp/lib/libstand/Makefile projects/pciehp/lib/libstand/libstand.3 projects/pciehp/lib/libstand/open.c projects/pciehp/lib/libstand/printf.c projects/pciehp/lib/libstand/qdivrem.c projects/pciehp/lib/libstand/quad.h projects/pciehp/lib/libstand/stand.h projects/pciehp/lib/libstdthreads/thrd_create.3 projects/pciehp/lib/libtelnet/Makefile projects/pciehp/lib/libthr/libthr.3 projects/pciehp/lib/libthr/thread/thr_fork.c projects/pciehp/lib/libthr/thread/thr_rtld.c projects/pciehp/lib/libucl/Makefile projects/pciehp/lib/libufs/bread.3 projects/pciehp/lib/libufs/cgread.3 projects/pciehp/lib/libufs/libufs.3 projects/pciehp/lib/libufs/sbread.3 projects/pciehp/lib/libufs/ufs_disk_close.3 projects/pciehp/lib/libunbound/Makefile projects/pciehp/lib/libusb/libusb-1.0.pc projects/pciehp/lib/libusb/libusb.h projects/pciehp/lib/libutil/flopen.3 projects/pciehp/lib/libutil/fparseln.3 projects/pciehp/lib/libutil/fparseln.c projects/pciehp/lib/libutil/kld.3 projects/pciehp/lib/libutil/login_class.3 projects/pciehp/lib/libutil/pidfile.3 projects/pciehp/lib/libutil/pw_util.3 projects/pciehp/lib/libutil/quotafile.3 projects/pciehp/lib/libvgl/vgl.3 projects/pciehp/lib/libvmmapi/vmmapi.c projects/pciehp/lib/libvmmapi/vmmapi.h projects/pciehp/lib/libz/Makefile projects/pciehp/lib/msun/Makefile projects/pciehp/lib/msun/Symbol.map projects/pciehp/lib/msun/man/erf.3 projects/pciehp/lib/msun/sparc64/fenv.h projects/pciehp/lib/msun/src/e_pow.c projects/pciehp/lib/msun/src/imprecise.c projects/pciehp/lib/msun/src/math.h projects/pciehp/lib/msun/src/s_erf.c projects/pciehp/lib/msun/src/s_erff.c projects/pciehp/lib/ncurses/ncurses/Makefile projects/pciehp/libexec/atf/Makefile projects/pciehp/libexec/atf/Makefile.inc projects/pciehp/libexec/atf/atf-check/Makefile projects/pciehp/libexec/bootpd/bootpd.8 projects/pciehp/libexec/bootpd/tools/bootptest/bootptest.8 projects/pciehp/libexec/mail.local/Makefile projects/pciehp/libexec/mknetid/mknetid.8 projects/pciehp/libexec/mknetid/netid.5 projects/pciehp/libexec/pppoed/pppoed.8 projects/pciehp/libexec/revnetgroup/revnetgroup.8 projects/pciehp/libexec/rtld-elf/Makefile projects/pciehp/libexec/rtld-elf/arm/rtld_start.S projects/pciehp/libexec/rtld-elf/rtld.1 projects/pciehp/libexec/rtld-elf/rtld.c projects/pciehp/libexec/rtld-elf/rtld_lock.c projects/pciehp/libexec/rtld-elf/rtld_printf.c projects/pciehp/libexec/rtld-elf/rtld_printf.h projects/pciehp/libexec/save-entropy/save-entropy.sh projects/pciehp/libexec/smrsh/Makefile projects/pciehp/libexec/telnetd/Makefile projects/pciehp/libexec/ypxfr/ypxfr.8 projects/pciehp/release/Makefile projects/pciehp/release/amd64/mkisoimages.sh projects/pciehp/release/arm/release.sh projects/pciehp/release/doc/README projects/pciehp/release/doc/en_US.ISO8859-1/hardware/article.xml projects/pciehp/release/doc/en_US.ISO8859-1/readme/article.xml projects/pciehp/release/doc/en_US.ISO8859-1/relnotes/article.xml projects/pciehp/release/doc/share/examples/Makefile.relnotesng projects/pciehp/release/doc/share/misc/dev.archlist.txt projects/pciehp/release/doc/share/xml/release.ent projects/pciehp/release/doc/share/xml/sponsor.ent projects/pciehp/release/picobsd/bridge/crunch.conf projects/pciehp/release/picobsd/build/picobsd projects/pciehp/release/picobsd/floppy.tree/etc/ttys projects/pciehp/release/picobsd/mfs_tree/etc/gettytab projects/pciehp/release/picobsd/qemu/crunch.conf projects/pciehp/release/scripts/FreeBSD_install_cdrom.conf projects/pciehp/release/scripts/mm-mtree.sh projects/pciehp/release/scripts/pkg-stage.sh projects/pciehp/rescue/rescue/Makefile projects/pciehp/sbin/adjkerntz/adjkerntz.8 projects/pciehp/sbin/atm/atmconfig/atmconfig.8 projects/pciehp/sbin/bsdlabel/bsdlabel.8 projects/pciehp/sbin/bsdlabel/bsdlabel.c projects/pciehp/sbin/camcontrol/Makefile projects/pciehp/sbin/camcontrol/camcontrol.8 projects/pciehp/sbin/camcontrol/camcontrol.c projects/pciehp/sbin/camcontrol/camcontrol.h projects/pciehp/sbin/casperd/casperd.8 projects/pciehp/sbin/dhclient/bpf.c projects/pciehp/sbin/dhclient/dhclient-script.8 projects/pciehp/sbin/dhclient/dhclient.8 projects/pciehp/sbin/dhclient/dhclient.c projects/pciehp/sbin/dhclient/dhclient.conf.5 projects/pciehp/sbin/dhclient/dhclient.leases.5 projects/pciehp/sbin/dhclient/dhcp-options.5 projects/pciehp/sbin/etherswitchcfg/etherswitchcfg.c projects/pciehp/sbin/fdisk/fdisk.c projects/pciehp/sbin/ffsinfo/ffsinfo.8 projects/pciehp/sbin/fsck/Makefile projects/pciehp/sbin/fsck/fsck.8 projects/pciehp/sbin/fsck_msdosfs/check.c projects/pciehp/sbin/fsck_msdosfs/dir.c projects/pciehp/sbin/fsck_msdosfs/ext.h projects/pciehp/sbin/fsck_msdosfs/fat.c projects/pciehp/sbin/fsdb/Makefile projects/pciehp/sbin/fsirand/fsirand.8 projects/pciehp/sbin/gbde/gbde.8 projects/pciehp/sbin/geom/class/cache/gcache.8 projects/pciehp/sbin/geom/class/concat/gconcat.8 projects/pciehp/sbin/geom/class/eli/geli.8 projects/pciehp/sbin/geom/class/journal/gjournal.8 projects/pciehp/sbin/geom/class/label/glabel.8 projects/pciehp/sbin/geom/class/mirror/gmirror.8 projects/pciehp/sbin/geom/class/mountver/gmountver.8 projects/pciehp/sbin/geom/class/multipath/gmultipath.8 projects/pciehp/sbin/geom/class/nop/gnop.8 projects/pciehp/sbin/geom/class/part/gpart.8 projects/pciehp/sbin/geom/class/raid/graid.8 projects/pciehp/sbin/geom/class/raid3/graid3.8 projects/pciehp/sbin/geom/class/sched/gsched.8 projects/pciehp/sbin/geom/class/shsec/gshsec.8 projects/pciehp/sbin/geom/class/stripe/geom_stripe.c projects/pciehp/sbin/geom/class/stripe/gstripe.8 projects/pciehp/sbin/geom/class/virstor/gvirstor.8 projects/pciehp/sbin/geom/core/geom.8 projects/pciehp/sbin/ggate/ggatec/ggatec.8 projects/pciehp/sbin/ggate/ggated/ggated.8 projects/pciehp/sbin/ggate/ggatel/ggatel.8 projects/pciehp/sbin/growfs/growfs.8 projects/pciehp/sbin/gvinum/Makefile projects/pciehp/sbin/gvinum/gvinum.8 projects/pciehp/sbin/hastctl/hastctl.8 projects/pciehp/sbin/hastd/hast.conf.5 projects/pciehp/sbin/hastd/hastd.8 projects/pciehp/sbin/ifconfig/af_inet6.c projects/pciehp/sbin/ifconfig/ifconfig.8 projects/pciehp/sbin/ipf/ipf/Makefile projects/pciehp/sbin/ipf/ipfstat/Makefile projects/pciehp/sbin/ipf/ipftest/Makefile projects/pciehp/sbin/ipf/ipmon/Makefile projects/pciehp/sbin/ipf/ipnat/Makefile projects/pciehp/sbin/ipf/ippool/Makefile projects/pciehp/sbin/ipf/ipresend/Makefile projects/pciehp/sbin/ipfw/dummynet.c projects/pciehp/sbin/ipfw/ipfw.8 projects/pciehp/sbin/ipfw/ipfw2.h projects/pciehp/sbin/kldconfig/kldconfig.8 projects/pciehp/sbin/kldload/kldload.8 projects/pciehp/sbin/kldstat/kldstat.8 projects/pciehp/sbin/kldunload/kldunload.8 projects/pciehp/sbin/md5/md5.1 projects/pciehp/sbin/mdconfig/mdconfig.8 projects/pciehp/sbin/mount/mount.conf.8 projects/pciehp/sbin/mount_cd9660/mount_cd9660.8 projects/pciehp/sbin/mount_fusefs/mount_fusefs.8 projects/pciehp/sbin/mount_msdosfs/mount_msdosfs.8 projects/pciehp/sbin/mount_unionfs/mount_unionfs.8 projects/pciehp/sbin/natd/natd.8 projects/pciehp/sbin/newfs_msdos/newfs_msdos.8 projects/pciehp/sbin/newfs_nandfs/newfs_nandfs.8 projects/pciehp/sbin/nos-tun/nos-tun.8 projects/pciehp/sbin/nvmecontrol/nvmecontrol.8 projects/pciehp/sbin/pfctl/pfctl.8 projects/pciehp/sbin/ping6/ping6.c projects/pciehp/sbin/rcorder/Makefile projects/pciehp/sbin/rcorder/rcorder.8 projects/pciehp/sbin/reboot/boot_i386.8 projects/pciehp/sbin/reboot/nextboot.8 projects/pciehp/sbin/recoverdisk/recoverdisk.1 projects/pciehp/sbin/restore/tape.c projects/pciehp/sbin/sconfig/sconfig.8 projects/pciehp/sbin/setkey/setkey.8 projects/pciehp/sbin/sysctl/sysctl.c projects/pciehp/secure/lib/libcrypto/Makefile.inc projects/pciehp/secure/lib/libcrypto/man/ASN1_OBJECT_new.3 projects/pciehp/secure/lib/libcrypto/man/ASN1_STRING_length.3 projects/pciehp/secure/lib/libcrypto/man/ASN1_STRING_new.3 projects/pciehp/secure/lib/libcrypto/man/ASN1_STRING_print_ex.3 projects/pciehp/secure/lib/libcrypto/man/ASN1_generate_nconf.3 projects/pciehp/secure/lib/libcrypto/man/BIO_ctrl.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_base64.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_buffer.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_cipher.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_md.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_null.3 projects/pciehp/secure/lib/libcrypto/man/BIO_f_ssl.3 projects/pciehp/secure/lib/libcrypto/man/BIO_find_type.3 projects/pciehp/secure/lib/libcrypto/man/BIO_new.3 projects/pciehp/secure/lib/libcrypto/man/BIO_new_CMS.3 projects/pciehp/secure/lib/libcrypto/man/BIO_push.3 projects/pciehp/secure/lib/libcrypto/man/BIO_read.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_accept.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_bio.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_connect.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_fd.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_file.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_mem.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_null.3 projects/pciehp/secure/lib/libcrypto/man/BIO_s_socket.3 projects/pciehp/secure/lib/libcrypto/man/BIO_set_callback.3 projects/pciehp/secure/lib/libcrypto/man/BIO_should_retry.3 projects/pciehp/secure/lib/libcrypto/man/BN_BLINDING_new.3 projects/pciehp/secure/lib/libcrypto/man/BN_CTX_new.3 projects/pciehp/secure/lib/libcrypto/man/BN_CTX_start.3 projects/pciehp/secure/lib/libcrypto/man/BN_add.3 projects/pciehp/secure/lib/libcrypto/man/BN_add_word.3 projects/pciehp/secure/lib/libcrypto/man/BN_bn2bin.3 projects/pciehp/secure/lib/libcrypto/man/BN_cmp.3 projects/pciehp/secure/lib/libcrypto/man/BN_copy.3 projects/pciehp/secure/lib/libcrypto/man/BN_generate_prime.3 projects/pciehp/secure/lib/libcrypto/man/BN_mod_inverse.3 projects/pciehp/secure/lib/libcrypto/man/BN_mod_mul_montgomery.3 projects/pciehp/secure/lib/libcrypto/man/BN_mod_mul_reciprocal.3 projects/pciehp/secure/lib/libcrypto/man/BN_new.3 projects/pciehp/secure/lib/libcrypto/man/BN_num_bytes.3 projects/pciehp/secure/lib/libcrypto/man/BN_rand.3 projects/pciehp/secure/lib/libcrypto/man/BN_set_bit.3 projects/pciehp/secure/lib/libcrypto/man/BN_swap.3 projects/pciehp/secure/lib/libcrypto/man/BN_zero.3 projects/pciehp/secure/lib/libcrypto/man/CMS_add0_cert.3 projects/pciehp/secure/lib/libcrypto/man/CMS_add1_recipient_cert.3 projects/pciehp/secure/lib/libcrypto/man/CMS_compress.3 projects/pciehp/secure/lib/libcrypto/man/CMS_decrypt.3 projects/pciehp/secure/lib/libcrypto/man/CMS_encrypt.3 projects/pciehp/secure/lib/libcrypto/man/CMS_final.3 projects/pciehp/secure/lib/libcrypto/man/CMS_get0_RecipientInfos.3 projects/pciehp/secure/lib/libcrypto/man/CMS_get0_SignerInfos.3 projects/pciehp/secure/lib/libcrypto/man/CMS_get0_type.3 projects/pciehp/secure/lib/libcrypto/man/CMS_get1_ReceiptRequest.3 projects/pciehp/secure/lib/libcrypto/man/CMS_sign.3 projects/pciehp/secure/lib/libcrypto/man/CMS_sign_add1_signer.3 projects/pciehp/secure/lib/libcrypto/man/CMS_sign_receipt.3 projects/pciehp/secure/lib/libcrypto/man/CMS_uncompress.3 projects/pciehp/secure/lib/libcrypto/man/CMS_verify.3 projects/pciehp/secure/lib/libcrypto/man/CMS_verify_receipt.3 projects/pciehp/secure/lib/libcrypto/man/CONF_modules_free.3 projects/pciehp/secure/lib/libcrypto/man/CONF_modules_load_file.3 projects/pciehp/secure/lib/libcrypto/man/CRYPTO_set_ex_data.3 projects/pciehp/secure/lib/libcrypto/man/DH_generate_key.3 projects/pciehp/secure/lib/libcrypto/man/DH_generate_parameters.3 projects/pciehp/secure/lib/libcrypto/man/DH_get_ex_new_index.3 projects/pciehp/secure/lib/libcrypto/man/DH_new.3 projects/pciehp/secure/lib/libcrypto/man/DH_set_method.3 projects/pciehp/secure/lib/libcrypto/man/DH_size.3 projects/pciehp/secure/lib/libcrypto/man/DSA_SIG_new.3 projects/pciehp/secure/lib/libcrypto/man/DSA_do_sign.3 projects/pciehp/secure/lib/libcrypto/man/DSA_dup_DH.3 projects/pciehp/secure/lib/libcrypto/man/DSA_generate_key.3 projects/pciehp/secure/lib/libcrypto/man/DSA_generate_parameters.3 projects/pciehp/secure/lib/libcrypto/man/DSA_get_ex_new_index.3 projects/pciehp/secure/lib/libcrypto/man/DSA_new.3 projects/pciehp/secure/lib/libcrypto/man/DSA_set_method.3 projects/pciehp/secure/lib/libcrypto/man/DSA_sign.3 projects/pciehp/secure/lib/libcrypto/man/DSA_size.3 projects/pciehp/secure/lib/libcrypto/man/ERR_GET_LIB.3 projects/pciehp/secure/lib/libcrypto/man/ERR_clear_error.3 projects/pciehp/secure/lib/libcrypto/man/ERR_error_string.3 projects/pciehp/secure/lib/libcrypto/man/ERR_get_error.3 projects/pciehp/secure/lib/libcrypto/man/ERR_load_crypto_strings.3 projects/pciehp/secure/lib/libcrypto/man/ERR_load_strings.3 projects/pciehp/secure/lib/libcrypto/man/ERR_print_errors.3 projects/pciehp/secure/lib/libcrypto/man/ERR_put_error.3 projects/pciehp/secure/lib/libcrypto/man/ERR_remove_state.3 projects/pciehp/secure/lib/libcrypto/man/ERR_set_mark.3 projects/pciehp/secure/lib/libcrypto/man/EVP_BytesToKey.3 projects/pciehp/secure/lib/libcrypto/man/EVP_DigestInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_DigestSignInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_DigestVerifyInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_EncryptInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_OpenInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_CTX_ctrl.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_CTX_new.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_cmp.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_decrypt.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_derive.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_encrypt.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_get_default_digest.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_keygen.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_new.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_print_private.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_set1_RSA.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_sign.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_verify.3 projects/pciehp/secure/lib/libcrypto/man/EVP_PKEY_verify_recover.3 projects/pciehp/secure/lib/libcrypto/man/EVP_SealInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_SignInit.3 projects/pciehp/secure/lib/libcrypto/man/EVP_VerifyInit.3 projects/pciehp/secure/lib/libcrypto/man/OBJ_nid2obj.3 projects/pciehp/secure/lib/libcrypto/man/OPENSSL_Applink.3 projects/pciehp/secure/lib/libcrypto/man/OPENSSL_VERSION_NUMBER.3 projects/pciehp/secure/lib/libcrypto/man/OPENSSL_config.3 projects/pciehp/secure/lib/libcrypto/man/OPENSSL_ia32cap.3 projects/pciehp/secure/lib/libcrypto/man/OPENSSL_load_builtin_modules.3 projects/pciehp/secure/lib/libcrypto/man/OpenSSL_add_all_algorithms.3 projects/pciehp/secure/lib/libcrypto/man/PEM_write_bio_CMS_stream.3 projects/pciehp/secure/lib/libcrypto/man/PEM_write_bio_PKCS7_stream.3 projects/pciehp/secure/lib/libcrypto/man/PKCS12_create.3 projects/pciehp/secure/lib/libcrypto/man/PKCS12_parse.3 projects/pciehp/secure/lib/libcrypto/man/PKCS7_decrypt.3 projects/pciehp/secure/lib/libcrypto/man/PKCS7_encrypt.3 projects/pciehp/secure/lib/libcrypto/man/PKCS7_sign.3 projects/pciehp/secure/lib/libcrypto/man/PKCS7_sign_add_signer.3 projects/pciehp/secure/lib/libcrypto/man/PKCS7_verify.3 projects/pciehp/secure/lib/libcrypto/man/RAND_add.3 projects/pciehp/secure/lib/libcrypto/man/RAND_bytes.3 projects/pciehp/secure/lib/libcrypto/man/RAND_cleanup.3 projects/pciehp/secure/lib/libcrypto/man/RAND_egd.3 projects/pciehp/secure/lib/libcrypto/man/RAND_load_file.3 projects/pciehp/secure/lib/libcrypto/man/RAND_set_rand_method.3 projects/pciehp/secure/lib/libcrypto/man/RSA_blinding_on.3 projects/pciehp/secure/lib/libcrypto/man/RSA_check_key.3 projects/pciehp/secure/lib/libcrypto/man/RSA_generate_key.3 projects/pciehp/secure/lib/libcrypto/man/RSA_get_ex_new_index.3 projects/pciehp/secure/lib/libcrypto/man/RSA_new.3 projects/pciehp/secure/lib/libcrypto/man/RSA_padding_add_PKCS1_type_1.3 projects/pciehp/secure/lib/libcrypto/man/RSA_print.3 projects/pciehp/secure/lib/libcrypto/man/RSA_private_encrypt.3 projects/pciehp/secure/lib/libcrypto/man/RSA_public_encrypt.3 projects/pciehp/secure/lib/libcrypto/man/RSA_set_method.3 projects/pciehp/secure/lib/libcrypto/man/RSA_sign.3 projects/pciehp/secure/lib/libcrypto/man/RSA_sign_ASN1_OCTET_STRING.3 projects/pciehp/secure/lib/libcrypto/man/RSA_size.3 projects/pciehp/secure/lib/libcrypto/man/SMIME_read_CMS.3 projects/pciehp/secure/lib/libcrypto/man/SMIME_read_PKCS7.3 projects/pciehp/secure/lib/libcrypto/man/SMIME_write_CMS.3 projects/pciehp/secure/lib/libcrypto/man/SMIME_write_PKCS7.3 projects/pciehp/secure/lib/libcrypto/man/X509_NAME_ENTRY_get_object.3 projects/pciehp/secure/lib/libcrypto/man/X509_NAME_add_entry_by_txt.3 projects/pciehp/secure/lib/libcrypto/man/X509_NAME_get_index_by_NID.3 projects/pciehp/secure/lib/libcrypto/man/X509_NAME_print_ex.3 projects/pciehp/secure/lib/libcrypto/man/X509_STORE_CTX_get_error.3 projects/pciehp/secure/lib/libcrypto/man/X509_STORE_CTX_get_ex_new_index.3 projects/pciehp/secure/lib/libcrypto/man/X509_STORE_CTX_new.3 projects/pciehp/secure/lib/libcrypto/man/X509_STORE_CTX_set_verify_cb.3 projects/pciehp/secure/lib/libcrypto/man/X509_STORE_set_verify_cb_func.3 projects/pciehp/secure/lib/libcrypto/man/X509_VERIFY_PARAM_set_flags.3 projects/pciehp/secure/lib/libcrypto/man/X509_new.3 projects/pciehp/secure/lib/libcrypto/man/X509_verify_cert.3 projects/pciehp/secure/lib/libcrypto/man/bio.3 projects/pciehp/secure/lib/libcrypto/man/blowfish.3 projects/pciehp/secure/lib/libcrypto/man/bn.3 projects/pciehp/secure/lib/libcrypto/man/bn_internal.3 projects/pciehp/secure/lib/libcrypto/man/buffer.3 projects/pciehp/secure/lib/libcrypto/man/crypto.3 projects/pciehp/secure/lib/libcrypto/man/d2i_ASN1_OBJECT.3 projects/pciehp/secure/lib/libcrypto/man/d2i_DHparams.3 projects/pciehp/secure/lib/libcrypto/man/d2i_DSAPublicKey.3 projects/pciehp/secure/lib/libcrypto/man/d2i_PKCS8PrivateKey.3 projects/pciehp/secure/lib/libcrypto/man/d2i_RSAPublicKey.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509_ALGOR.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509_CRL.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509_NAME.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509_REQ.3 projects/pciehp/secure/lib/libcrypto/man/d2i_X509_SIG.3 projects/pciehp/secure/lib/libcrypto/man/des.3 projects/pciehp/secure/lib/libcrypto/man/dh.3 projects/pciehp/secure/lib/libcrypto/man/dsa.3 projects/pciehp/secure/lib/libcrypto/man/ecdsa.3 projects/pciehp/secure/lib/libcrypto/man/engine.3 projects/pciehp/secure/lib/libcrypto/man/err.3 projects/pciehp/secure/lib/libcrypto/man/evp.3 projects/pciehp/secure/lib/libcrypto/man/hmac.3 projects/pciehp/secure/lib/libcrypto/man/i2d_CMS_bio_stream.3 projects/pciehp/secure/lib/libcrypto/man/i2d_PKCS7_bio_stream.3 projects/pciehp/secure/lib/libcrypto/man/lh_stats.3 projects/pciehp/secure/lib/libcrypto/man/lhash.3 projects/pciehp/secure/lib/libcrypto/man/md5.3 projects/pciehp/secure/lib/libcrypto/man/mdc2.3 projects/pciehp/secure/lib/libcrypto/man/pem.3 projects/pciehp/secure/lib/libcrypto/man/rand.3 projects/pciehp/secure/lib/libcrypto/man/rc4.3 projects/pciehp/secure/lib/libcrypto/man/ripemd.3 projects/pciehp/secure/lib/libcrypto/man/rsa.3 projects/pciehp/secure/lib/libcrypto/man/sha.3 projects/pciehp/secure/lib/libcrypto/man/threads.3 projects/pciehp/secure/lib/libcrypto/man/ui.3 projects/pciehp/secure/lib/libcrypto/man/ui_compat.3 projects/pciehp/secure/lib/libcrypto/man/x509.3 projects/pciehp/secure/lib/libssl/man/SSL_CIPHER_get_name.3 projects/pciehp/secure/lib/libssl/man/SSL_COMP_add_compression_method.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_add_extra_chain_cert.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_add_session.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_ctrl.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_flush_sessions.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_free.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_get_ex_new_index.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_get_verify_mode.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_load_verify_locations.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_new.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_sess_number.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_sess_set_cache_size.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_sess_set_get_cb.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_sessions.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_cert_store.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_cert_verify_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_cipher_list.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_client_CA_list.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_client_cert_cb.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_default_passwd_cb.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_generate_session_id.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_info_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_max_cert_list.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_mode.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_msg_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_options.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_psk_client_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_quiet_shutdown.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_session_cache_mode.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_session_id_context.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_ssl_version.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_timeout.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_tmp_dh_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_tmp_rsa_callback.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_set_verify.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_use_certificate.3 projects/pciehp/secure/lib/libssl/man/SSL_CTX_use_psk_identity_hint.3 projects/pciehp/secure/lib/libssl/man/SSL_SESSION_free.3 projects/pciehp/secure/lib/libssl/man/SSL_SESSION_get_ex_new_index.3 projects/pciehp/secure/lib/libssl/man/SSL_SESSION_get_time.3 projects/pciehp/secure/lib/libssl/man/SSL_accept.3 projects/pciehp/secure/lib/libssl/man/SSL_alert_type_string.3 projects/pciehp/secure/lib/libssl/man/SSL_clear.3 projects/pciehp/secure/lib/libssl/man/SSL_connect.3 projects/pciehp/secure/lib/libssl/man/SSL_do_handshake.3 projects/pciehp/secure/lib/libssl/man/SSL_free.3 projects/pciehp/secure/lib/libssl/man/SSL_get_SSL_CTX.3 projects/pciehp/secure/lib/libssl/man/SSL_get_ciphers.3 projects/pciehp/secure/lib/libssl/man/SSL_get_client_CA_list.3 projects/pciehp/secure/lib/libssl/man/SSL_get_current_cipher.3 projects/pciehp/secure/lib/libssl/man/SSL_get_default_timeout.3 projects/pciehp/secure/lib/libssl/man/SSL_get_error.3 projects/pciehp/secure/lib/libssl/man/SSL_get_ex_data_X509_STORE_CTX_idx.3 projects/pciehp/secure/lib/libssl/man/SSL_get_ex_new_index.3 projects/pciehp/secure/lib/libssl/man/SSL_get_fd.3 projects/pciehp/secure/lib/libssl/man/SSL_get_peer_cert_chain.3 projects/pciehp/secure/lib/libssl/man/SSL_get_peer_certificate.3 projects/pciehp/secure/lib/libssl/man/SSL_get_psk_identity.3 projects/pciehp/secure/lib/libssl/man/SSL_get_rbio.3 projects/pciehp/secure/lib/libssl/man/SSL_get_session.3 projects/pciehp/secure/lib/libssl/man/SSL_get_verify_result.3 projects/pciehp/secure/lib/libssl/man/SSL_get_version.3 projects/pciehp/secure/lib/libssl/man/SSL_library_init.3 projects/pciehp/secure/lib/libssl/man/SSL_load_client_CA_file.3 projects/pciehp/secure/lib/libssl/man/SSL_new.3 projects/pciehp/secure/lib/libssl/man/SSL_pending.3 projects/pciehp/secure/lib/libssl/man/SSL_read.3 projects/pciehp/secure/lib/libssl/man/SSL_rstate_string.3 projects/pciehp/secure/lib/libssl/man/SSL_session_reused.3 projects/pciehp/secure/lib/libssl/man/SSL_set_bio.3 projects/pciehp/secure/lib/libssl/man/SSL_set_connect_state.3 projects/pciehp/secure/lib/libssl/man/SSL_set_fd.3 projects/pciehp/secure/lib/libssl/man/SSL_set_session.3 projects/pciehp/secure/lib/libssl/man/SSL_set_shutdown.3 projects/pciehp/secure/lib/libssl/man/SSL_set_verify_result.3 projects/pciehp/secure/lib/libssl/man/SSL_shutdown.3 projects/pciehp/secure/lib/libssl/man/SSL_state_string.3 projects/pciehp/secure/lib/libssl/man/SSL_want.3 projects/pciehp/secure/lib/libssl/man/SSL_write.3 projects/pciehp/secure/lib/libssl/man/d2i_SSL_SESSION.3 projects/pciehp/secure/lib/libssl/man/ssl.3 projects/pciehp/secure/usr.bin/openssl/man/CA.pl.1 projects/pciehp/secure/usr.bin/openssl/man/asn1parse.1 projects/pciehp/secure/usr.bin/openssl/man/ca.1 projects/pciehp/secure/usr.bin/openssl/man/ciphers.1 projects/pciehp/secure/usr.bin/openssl/man/cms.1 projects/pciehp/secure/usr.bin/openssl/man/crl.1 projects/pciehp/secure/usr.bin/openssl/man/crl2pkcs7.1 projects/pciehp/secure/usr.bin/openssl/man/dgst.1 projects/pciehp/secure/usr.bin/openssl/man/dhparam.1 projects/pciehp/secure/usr.bin/openssl/man/dsa.1 projects/pciehp/secure/usr.bin/openssl/man/dsaparam.1 projects/pciehp/secure/usr.bin/openssl/man/ec.1 projects/pciehp/secure/usr.bin/openssl/man/ecparam.1 projects/pciehp/secure/usr.bin/openssl/man/enc.1 projects/pciehp/secure/usr.bin/openssl/man/errstr.1 projects/pciehp/secure/usr.bin/openssl/man/gendsa.1 projects/pciehp/secure/usr.bin/openssl/man/genpkey.1 projects/pciehp/secure/usr.bin/openssl/man/genrsa.1 projects/pciehp/secure/usr.bin/openssl/man/nseq.1 projects/pciehp/secure/usr.bin/openssl/man/ocsp.1 projects/pciehp/secure/usr.bin/openssl/man/openssl.1 projects/pciehp/secure/usr.bin/openssl/man/passwd.1 projects/pciehp/secure/usr.bin/openssl/man/pkcs12.1 projects/pciehp/secure/usr.bin/openssl/man/pkcs7.1 projects/pciehp/secure/usr.bin/openssl/man/pkcs8.1 projects/pciehp/secure/usr.bin/openssl/man/pkey.1 projects/pciehp/secure/usr.bin/openssl/man/pkeyparam.1 projects/pciehp/secure/usr.bin/openssl/man/pkeyutl.1 projects/pciehp/secure/usr.bin/openssl/man/rand.1 projects/pciehp/secure/usr.bin/openssl/man/req.1 projects/pciehp/secure/usr.bin/openssl/man/rsa.1 projects/pciehp/secure/usr.bin/openssl/man/rsautl.1 projects/pciehp/secure/usr.bin/openssl/man/s_client.1 projects/pciehp/secure/usr.bin/openssl/man/s_server.1 projects/pciehp/secure/usr.bin/openssl/man/s_time.1 projects/pciehp/secure/usr.bin/openssl/man/sess_id.1 projects/pciehp/secure/usr.bin/openssl/man/smime.1 projects/pciehp/secure/usr.bin/openssl/man/speed.1 projects/pciehp/secure/usr.bin/openssl/man/spkac.1 projects/pciehp/secure/usr.bin/openssl/man/ts.1 projects/pciehp/secure/usr.bin/openssl/man/tsget.1 projects/pciehp/secure/usr.bin/openssl/man/verify.1 projects/pciehp/secure/usr.bin/openssl/man/version.1 projects/pciehp/secure/usr.bin/openssl/man/x509.1 projects/pciehp/secure/usr.bin/openssl/man/x509v3_config.1 projects/pciehp/secure/usr.bin/sftp/Makefile projects/pciehp/share/Makefile projects/pciehp/share/dict/freebsd projects/pciehp/share/dtrace/hotopen projects/pciehp/share/dtrace/nfsattrstats projects/pciehp/share/dtrace/nfsclienttime projects/pciehp/share/examples/Makefile projects/pciehp/share/examples/bhyve/vmrun.sh projects/pciehp/share/examples/etc/make.conf projects/pciehp/share/examples/hwpmc/README projects/pciehp/share/examples/mdoc/example.1 projects/pciehp/share/examples/mdoc/example.3 projects/pciehp/share/examples/mdoc/example.4 projects/pciehp/share/examples/mdoc/example.9 projects/pciehp/share/examples/scsi_target/scsi_target.8 projects/pciehp/share/man/man1/builtin.1 projects/pciehp/share/man/man3/ATOMIC_VAR_INIT.3 projects/pciehp/share/man/man3/Makefile projects/pciehp/share/man/man3/offsetof.3 projects/pciehp/share/man/man3/pthread_affinity_np.3 projects/pciehp/share/man/man3/pthread_atfork.3 projects/pciehp/share/man/man3/pthread_attr_affinity_np.3 projects/pciehp/share/man/man3/pthread_attr_get_np.3 projects/pciehp/share/man/man3/pthread_attr_setcreatesuspend_np.3 projects/pciehp/share/man/man3/pthread_cancel.3 projects/pciehp/share/man/man3/pthread_getcpuclockid.3 projects/pciehp/share/man/man3/pthread_getthreadid_np.3 projects/pciehp/share/man/man3/pthread_main_np.3 projects/pciehp/share/man/man3/pthread_multi_np.3 projects/pciehp/share/man/man3/pthread_resume_all_np.3 projects/pciehp/share/man/man3/pthread_resume_np.3 projects/pciehp/share/man/man3/pthread_set_name_np.3 projects/pciehp/share/man/man3/pthread_suspend_all_np.3 projects/pciehp/share/man/man3/pthread_suspend_np.3 projects/pciehp/share/man/man3/pthread_switch_add_np.3 projects/pciehp/share/man/man3/pthread_testcancel.3 projects/pciehp/share/man/man3/siginfo.3 projects/pciehp/share/man/man4/Makefile projects/pciehp/share/man/man4/aac.4 projects/pciehp/share/man/man4/aacraid.4 projects/pciehp/share/man/man4/acpi.4 projects/pciehp/share/man/man4/acpi_asus.4 projects/pciehp/share/man/man4/acpi_asus_wmi.4 projects/pciehp/share/man/man4/acpi_dock.4 projects/pciehp/share/man/man4/acpi_fujitsu.4 projects/pciehp/share/man/man4/acpi_hp.4 projects/pciehp/share/man/man4/acpi_ibm.4 projects/pciehp/share/man/man4/acpi_panasonic.4 projects/pciehp/share/man/man4/acpi_rapidstart.4 projects/pciehp/share/man/man4/acpi_sony.4 projects/pciehp/share/man/man4/acpi_toshiba.4 projects/pciehp/share/man/man4/acpi_video.4 projects/pciehp/share/man/man4/acpi_wmi.4 projects/pciehp/share/man/man4/ada.4 projects/pciehp/share/man/man4/ae.4 projects/pciehp/share/man/man4/aesni.4 projects/pciehp/share/man/man4/age.4 projects/pciehp/share/man/man4/ahci.4 projects/pciehp/share/man/man4/aibs.4 projects/pciehp/share/man/man4/alc.4 projects/pciehp/share/man/man4/ale.4 projects/pciehp/share/man/man4/alpm.4 projects/pciehp/share/man/man4/amdpm.4 projects/pciehp/share/man/man4/amdsbwd.4 projects/pciehp/share/man/man4/amdsmb.4 projects/pciehp/share/man/man4/amdtemp.4 projects/pciehp/share/man/man4/amr.4 projects/pciehp/share/man/man4/an.4 projects/pciehp/share/man/man4/aout.4 projects/pciehp/share/man/man4/arcmsr.4 projects/pciehp/share/man/man4/asmc.4 projects/pciehp/share/man/man4/asr.4 projects/pciehp/share/man/man4/ata.4 projects/pciehp/share/man/man4/atkbd.4 projects/pciehp/share/man/man4/atkbdc.4 projects/pciehp/share/man/man4/atp.4 projects/pciehp/share/man/man4/attimer.4 projects/pciehp/share/man/man4/audit.4 projects/pciehp/share/man/man4/auditpipe.4 projects/pciehp/share/man/man4/aue.4 projects/pciehp/share/man/man4/axe.4 projects/pciehp/share/man/man4/axge.4 projects/pciehp/share/man/man4/bce.4 projects/pciehp/share/man/man4/bge.4 projects/pciehp/share/man/man4/bhyve.4 (contents, props changed) projects/pciehp/share/man/man4/bktr.4 projects/pciehp/share/man/man4/bridge.4 projects/pciehp/share/man/man4/bwn.4 projects/pciehp/share/man/man4/bxe.4 projects/pciehp/share/man/man4/capsicum.4 projects/pciehp/share/man/man4/carp.4 projects/pciehp/share/man/man4/cas.4 projects/pciehp/share/man/man4/cc_cdg.4 projects/pciehp/share/man/man4/cc_chd.4 projects/pciehp/share/man/man4/cc_cubic.4 projects/pciehp/share/man/man4/cc_hd.4 projects/pciehp/share/man/man4/cc_htcp.4 projects/pciehp/share/man/man4/cc_newreno.4 projects/pciehp/share/man/man4/cc_vegas.4 projects/pciehp/share/man/man4/cdce.4 projects/pciehp/share/man/man4/ch.4 projects/pciehp/share/man/man4/ciss.4 projects/pciehp/share/man/man4/cm.4 projects/pciehp/share/man/man4/cmx.4 projects/pciehp/share/man/man4/coretemp.4 projects/pciehp/share/man/man4/cpuctl.4 projects/pciehp/share/man/man4/ctl.4 projects/pciehp/share/man/man4/cue.4 projects/pciehp/share/man/man4/cxgb.4 projects/pciehp/share/man/man4/cxgbe.4 projects/pciehp/share/man/man4/dc.4 projects/pciehp/share/man/man4/dcons.4 projects/pciehp/share/man/man4/dcons_crom.4 projects/pciehp/share/man/man4/ddb.4 projects/pciehp/share/man/man4/divert.4 projects/pciehp/share/man/man4/dummynet.4 projects/pciehp/share/man/man4/em.4 projects/pciehp/share/man/man4/esp.4 projects/pciehp/share/man/man4/est.4 projects/pciehp/share/man/man4/et.4 projects/pciehp/share/man/man4/fatm.4 projects/pciehp/share/man/man4/ffclock.4 projects/pciehp/share/man/man4/full.4 projects/pciehp/share/man/man4/gbde.4 projects/pciehp/share/man/man4/gdb.4 projects/pciehp/share/man/man4/gem.4 projects/pciehp/share/man/man4/geom.4 projects/pciehp/share/man/man4/geom_fox.4 projects/pciehp/share/man/man4/geom_linux_lvm.4 projects/pciehp/share/man/man4/geom_map.4 projects/pciehp/share/man/man4/geom_uncompress.4 projects/pciehp/share/man/man4/geom_uzip.4 projects/pciehp/share/man/man4/gpio.4 projects/pciehp/share/man/man4/gre.4 projects/pciehp/share/man/man4/h_ertt.4 projects/pciehp/share/man/man4/hatm.4 projects/pciehp/share/man/man4/hme.4 projects/pciehp/share/man/man4/hpt27xx.4 projects/pciehp/share/man/man4/hptiop.4 projects/pciehp/share/man/man4/hptnr.4 projects/pciehp/share/man/man4/hv_ata_pci_disengage.4 projects/pciehp/share/man/man4/hv_kvp.4 projects/pciehp/share/man/man4/hv_netvsc.4 projects/pciehp/share/man/man4/hv_storvsc.4 projects/pciehp/share/man/man4/hv_utils.4 projects/pciehp/share/man/man4/hv_vmbus.4 projects/pciehp/share/man/man4/hwpmc.4 projects/pciehp/share/man/man4/ichsmb.4 projects/pciehp/share/man/man4/ichwd.4 projects/pciehp/share/man/man4/ida.4 projects/pciehp/share/man/man4/igb.4 projects/pciehp/share/man/man4/iic.4 projects/pciehp/share/man/man4/iicbus.4 projects/pciehp/share/man/man4/iir.4 projects/pciehp/share/man/man4/inet.4 projects/pciehp/share/man/man4/intpm.4 projects/pciehp/share/man/man4/ipmi.4 projects/pciehp/share/man/man4/ips.4 projects/pciehp/share/man/man4/ipw.4 projects/pciehp/share/man/man4/isci.4 projects/pciehp/share/man/man4/iwi.4 projects/pciehp/share/man/man4/iwn.4 projects/pciehp/share/man/man4/ixgb.4 projects/pciehp/share/man/man4/ixgbe.4 projects/pciehp/share/man/man4/jme.4 projects/pciehp/share/man/man4/joy.4 projects/pciehp/share/man/man4/kbdmux.4 projects/pciehp/share/man/man4/keyboard.4 projects/pciehp/share/man/man4/kld.4 projects/pciehp/share/man/man4/ksyms.4 projects/pciehp/share/man/man4/kue.4 projects/pciehp/share/man/man4/lagg.4 projects/pciehp/share/man/man4/le.4 projects/pciehp/share/man/man4/led.4 projects/pciehp/share/man/man4/lge.4 projects/pciehp/share/man/man4/lm75.4 projects/pciehp/share/man/man4/lmc.4 projects/pciehp/share/man/man4/mac_bsdextended.4 projects/pciehp/share/man/man4/man4.arm/ti_adc.4 projects/pciehp/share/man/man4/man4.i386/CPU_ELAN.4 projects/pciehp/share/man/man4/man4.i386/ct.4 projects/pciehp/share/man/man4/man4.i386/fe.4 projects/pciehp/share/man/man4/man4.i386/glxiic.4 projects/pciehp/share/man/man4/man4.i386/glxsb.4 projects/pciehp/share/man/man4/man4.i386/longrun.4 projects/pciehp/share/man/man4/man4.i386/pae.4 projects/pciehp/share/man/man4/man4.i386/pbio.4 projects/pciehp/share/man/man4/man4.i386/smapi.4 projects/pciehp/share/man/man4/man4.i386/snc.4 projects/pciehp/share/man/man4/man4.i386/vpd.4 projects/pciehp/share/man/man4/man4.i386/vx.4 projects/pciehp/share/man/man4/man4.powerpc/adb.4 projects/pciehp/share/man/man4/man4.powerpc/akbd.4 projects/pciehp/share/man/man4/man4.powerpc/ams.4 projects/pciehp/share/man/man4/man4.powerpc/bm.4 projects/pciehp/share/man/man4/man4.powerpc/cuda.4 projects/pciehp/share/man/man4/man4.powerpc/pmu.4 projects/pciehp/share/man/man4/man4.powerpc/powermac_nvram.4 projects/pciehp/share/man/man4/man4.powerpc/smu.4 projects/pciehp/share/man/man4/man4.powerpc/snd_ai2s.4 projects/pciehp/share/man/man4/man4.powerpc/snd_davbus.4 projects/pciehp/share/man/man4/man4.sparc64/auxio.4 projects/pciehp/share/man/man4/man4.sparc64/central.4 projects/pciehp/share/man/man4/man4.sparc64/clkbrd.4 projects/pciehp/share/man/man4/man4.sparc64/creator.4 projects/pciehp/share/man/man4/man4.sparc64/ebus.4 projects/pciehp/share/man/man4/man4.sparc64/eeprom.4 projects/pciehp/share/man/man4/man4.sparc64/fhc.4 projects/pciehp/share/man/man4/man4.sparc64/machfb.4 projects/pciehp/share/man/man4/man4.sparc64/ofw_console.4 projects/pciehp/share/man/man4/man4.sparc64/openfirm.4 projects/pciehp/share/man/man4/man4.sparc64/openprom.4 projects/pciehp/share/man/man4/man4.sparc64/rtc.4 projects/pciehp/share/man/man4/man4.sparc64/sbus.4 projects/pciehp/share/man/man4/man4.sparc64/snd_audiocs.4 projects/pciehp/share/man/man4/md.4 projects/pciehp/share/man/man4/meteor.4 projects/pciehp/share/man/man4/mfi.4 projects/pciehp/share/man/man4/miibus.4 projects/pciehp/share/man/man4/mk48txx.4 projects/pciehp/share/man/man4/mlx.4 projects/pciehp/share/man/man4/mly.4 projects/pciehp/share/man/man4/mn.4 projects/pciehp/share/man/man4/mod_cc.4 projects/pciehp/share/man/man4/mouse.4 projects/pciehp/share/man/man4/mpr.4 projects/pciehp/share/man/man4/mps.4 projects/pciehp/share/man/man4/mpt.4 projects/pciehp/share/man/man4/mrsas.4 projects/pciehp/share/man/man4/msk.4 projects/pciehp/share/man/man4/mvs.4 projects/pciehp/share/man/man4/mxge.4 projects/pciehp/share/man/man4/my.4 projects/pciehp/share/man/man4/nand.4 projects/pciehp/share/man/man4/nandsim.4 projects/pciehp/share/man/man4/ncv.4 projects/pciehp/share/man/man4/ndis.4 projects/pciehp/share/man/man4/netgraph.4 projects/pciehp/share/man/man4/netmap.4 projects/pciehp/share/man/man4/nfe.4 projects/pciehp/share/man/man4/nfsmb.4 projects/pciehp/share/man/man4/ng_UI.4 projects/pciehp/share/man/man4/ng_async.4 projects/pciehp/share/man/man4/ng_atm.4 projects/pciehp/share/man/man4/ng_atmllc.4 projects/pciehp/share/man/man4/ng_bluetooth.4 projects/pciehp/share/man/man4/ng_bpf.4 projects/pciehp/share/man/man4/ng_bridge.4 projects/pciehp/share/man/man4/ng_bt3c.4 projects/pciehp/share/man/man4/ng_btsocket.4 projects/pciehp/share/man/man4/ng_car.4 projects/pciehp/share/man/man4/ng_ccatm.4 projects/pciehp/share/man/man4/ng_cisco.4 projects/pciehp/share/man/man4/ng_deflate.4 projects/pciehp/share/man/man4/ng_device.4 projects/pciehp/share/man/man4/ng_echo.4 projects/pciehp/share/man/man4/ng_etf.4 projects/pciehp/share/man/man4/ng_ether.4 projects/pciehp/share/man/man4/ng_ether_echo.4 projects/pciehp/share/man/man4/ng_frame_relay.4 projects/pciehp/share/man/man4/ng_gif.4 projects/pciehp/share/man/man4/ng_gif_demux.4 projects/pciehp/share/man/man4/ng_h4.4 projects/pciehp/share/man/man4/ng_hci.4 projects/pciehp/share/man/man4/ng_hole.4 projects/pciehp/share/man/man4/ng_hub.4 projects/pciehp/share/man/man4/ng_iface.4 projects/pciehp/share/man/man4/ng_ip_input.4 projects/pciehp/share/man/man4/ng_ipfw.4 projects/pciehp/share/man/man4/ng_ksocket.4 projects/pciehp/share/man/man4/ng_l2cap.4 projects/pciehp/share/man/man4/ng_l2tp.4 projects/pciehp/share/man/man4/ng_lmi.4 projects/pciehp/share/man/man4/ng_mppc.4 projects/pciehp/share/man/man4/ng_nat.4 projects/pciehp/share/man/man4/ng_netflow.4 projects/pciehp/share/man/man4/ng_one2many.4 projects/pciehp/share/man/man4/ng_patch.4 projects/pciehp/share/man/man4/ng_ppp.4 projects/pciehp/share/man/man4/ng_pppoe.4 projects/pciehp/share/man/man4/ng_pptpgre.4 projects/pciehp/share/man/man4/ng_pred1.4 projects/pciehp/share/man/man4/ng_rfc1490.4 projects/pciehp/share/man/man4/ng_socket.4 projects/pciehp/share/man/man4/ng_split.4 projects/pciehp/share/man/man4/ng_sppp.4 projects/pciehp/share/man/man4/ng_sscfu.4 projects/pciehp/share/man/man4/ng_sscop.4 projects/pciehp/share/man/man4/ng_tag.4 projects/pciehp/share/man/man4/ng_tcpmss.4 projects/pciehp/share/man/man4/ng_tee.4 projects/pciehp/share/man/man4/ng_tty.4 projects/pciehp/share/man/man4/ng_ubt.4 projects/pciehp/share/man/man4/ng_uni.4 projects/pciehp/share/man/man4/ng_vjc.4 projects/pciehp/share/man/man4/ng_vlan.4 projects/pciehp/share/man/man4/ngatmbase.4 projects/pciehp/share/man/man4/nge.4 projects/pciehp/share/man/man4/nsp.4 projects/pciehp/share/man/man4/ntb.4 projects/pciehp/share/man/man4/nvd.4 projects/pciehp/share/man/man4/nvme.4 projects/pciehp/share/man/man4/nvram2env.4 projects/pciehp/share/man/man4/nxge.4 projects/pciehp/share/man/man4/ohci.4 projects/pciehp/share/man/man4/orm.4 projects/pciehp/share/man/man4/padlock.4 projects/pciehp/share/man/man4/pass.4 projects/pciehp/share/man/man4/patm.4 projects/pciehp/share/man/man4/pci.4 projects/pciehp/share/man/man4/pcm.4 projects/pciehp/share/man/man4/pcn.4 projects/pciehp/share/man/man4/polling.4 projects/pciehp/share/man/man4/procdesc.4 projects/pciehp/share/man/man4/proto.4 projects/pciehp/share/man/man4/psm.4 projects/pciehp/share/man/man4/pst.4 projects/pciehp/share/man/man4/qlxgb.4 projects/pciehp/share/man/man4/qlxgbe.4 projects/pciehp/share/man/man4/qlxge.4 projects/pciehp/share/man/man4/ral.4 projects/pciehp/share/man/man4/rc.4 projects/pciehp/share/man/man4/re.4 projects/pciehp/share/man/man4/rights.4 projects/pciehp/share/man/man4/rl.4 projects/pciehp/share/man/man4/rp.4 projects/pciehp/share/man/man4/rsu.4 projects/pciehp/share/man/man4/rue.4 projects/pciehp/share/man/man4/rum.4 projects/pciehp/share/man/man4/run.4 projects/pciehp/share/man/man4/scc.4 projects/pciehp/share/man/man4/sched_ule.4 projects/pciehp/share/man/man4/screen.4 projects/pciehp/share/man/man4/scsi.4 projects/pciehp/share/man/man4/sdhci.4 projects/pciehp/share/man/man4/send.4 projects/pciehp/share/man/man4/sf.4 projects/pciehp/share/man/man4/sge.4 projects/pciehp/share/man/man4/si.4 projects/pciehp/share/man/man4/siba.4 projects/pciehp/share/man/man4/siftr.4 projects/pciehp/share/man/man4/siis.4 projects/pciehp/share/man/man4/sis.4 projects/pciehp/share/man/man4/sk.4 projects/pciehp/share/man/man4/smp.4 projects/pciehp/share/man/man4/snd_ad1816.4 projects/pciehp/share/man/man4/snd_als4000.4 projects/pciehp/share/man/man4/snd_atiixp.4 projects/pciehp/share/man/man4/snd_cmi.4 projects/pciehp/share/man/man4/snd_cs4281.4 projects/pciehp/share/man/man4/snd_csa.4 projects/pciehp/share/man/man4/snd_ds1.4 projects/pciehp/share/man/man4/snd_emu10k1.4 projects/pciehp/share/man/man4/snd_emu10kx.4 projects/pciehp/share/man/man4/snd_envy24.4 projects/pciehp/share/man/man4/snd_envy24ht.4 projects/pciehp/share/man/man4/snd_es137x.4 projects/pciehp/share/man/man4/snd_ess.4 projects/pciehp/share/man/man4/snd_fm801.4 projects/pciehp/share/man/man4/snd_gusc.4 projects/pciehp/share/man/man4/snd_hda.4 projects/pciehp/share/man/man4/snd_ich.4 projects/pciehp/share/man/man4/snd_maestro.4 projects/pciehp/share/man/man4/snd_maestro3.4 projects/pciehp/share/man/man4/snd_mss.4 projects/pciehp/share/man/man4/snd_neomagic.4 projects/pciehp/share/man/man4/snd_sbc.4 projects/pciehp/share/man/man4/snd_solo.4 projects/pciehp/share/man/man4/snd_spicds.4 projects/pciehp/share/man/man4/snd_t4dwave.4 projects/pciehp/share/man/man4/snd_uaudio.4 projects/pciehp/share/man/man4/snd_via8233.4 projects/pciehp/share/man/man4/snd_via82c686.4 projects/pciehp/share/man/man4/snd_vibes.4 projects/pciehp/share/man/man4/snp.4 projects/pciehp/share/man/man4/spic.4 projects/pciehp/share/man/man4/spkr.4 projects/pciehp/share/man/man4/splash.4 projects/pciehp/share/man/man4/sppp.4 projects/pciehp/share/man/man4/ste.4 projects/pciehp/share/man/man4/stge.4 projects/pciehp/share/man/man4/syncache.4 projects/pciehp/share/man/man4/syscons.4 projects/pciehp/share/man/man4/sysmouse.4 projects/pciehp/share/man/man4/targ.4 projects/pciehp/share/man/man4/tdfx.4 projects/pciehp/share/man/man4/ti.4 projects/pciehp/share/man/man4/tl.4 projects/pciehp/share/man/man4/trm.4 projects/pciehp/share/man/man4/tty.4 projects/pciehp/share/man/man4/twa.4 projects/pciehp/share/man/man4/twe.4 projects/pciehp/share/man/man4/tws.4 projects/pciehp/share/man/man4/u3g.4 projects/pciehp/share/man/man4/uark.4 projects/pciehp/share/man/man4/uart.4 projects/pciehp/share/man/man4/uath.4 projects/pciehp/share/man/man4/ubsa.4 projects/pciehp/share/man/man4/ubtbcmfw.4 projects/pciehp/share/man/man4/ucom.4 projects/pciehp/share/man/man4/ucycom.4 projects/pciehp/share/man/man4/udav.4 projects/pciehp/share/man/man4/udbp.4 projects/pciehp/share/man/man4/uep.4 projects/pciehp/share/man/man4/ufm.4 projects/pciehp/share/man/man4/uhci.4 projects/pciehp/share/man/man4/uhid.4 projects/pciehp/share/man/man4/uhso.4 projects/pciehp/share/man/man4/ukbd.4 projects/pciehp/share/man/man4/ulpt.4 projects/pciehp/share/man/man4/umass.4 projects/pciehp/share/man/man4/umcs.4 projects/pciehp/share/man/man4/umct.4 projects/pciehp/share/man/man4/umodem.4 projects/pciehp/share/man/man4/ums.4 projects/pciehp/share/man/man4/upgt.4 projects/pciehp/share/man/man4/uplcom.4 projects/pciehp/share/man/man4/ural.4 projects/pciehp/share/man/man4/urio.4 projects/pciehp/share/man/man4/urtw.4 projects/pciehp/share/man/man4/urtwn.4 projects/pciehp/share/man/man4/usb.4 projects/pciehp/share/man/man4/usb_quirk.4 projects/pciehp/share/man/man4/usb_template.4 projects/pciehp/share/man/man4/uslcom.4 projects/pciehp/share/man/man4/utopia.4 projects/pciehp/share/man/man4/uvisor.4 projects/pciehp/share/man/man4/uvscom.4 projects/pciehp/share/man/man4/vale.4 projects/pciehp/share/man/man4/vga.4 projects/pciehp/share/man/man4/vge.4 projects/pciehp/share/man/man4/viapm.4 projects/pciehp/share/man/man4/viawd.4 projects/pciehp/share/man/man4/virtio.4 projects/pciehp/share/man/man4/virtio_balloon.4 projects/pciehp/share/man/man4/virtio_blk.4 projects/pciehp/share/man/man4/virtio_random.4 projects/pciehp/share/man/man4/virtio_scsi.4 projects/pciehp/share/man/man4/vkbd.4 projects/pciehp/share/man/man4/vmx.4 projects/pciehp/share/man/man4/vr.4 projects/pciehp/share/man/man4/vt.4 projects/pciehp/share/man/man4/vte.4 projects/pciehp/share/man/man4/vtnet.4 projects/pciehp/share/man/man4/vxge.4 projects/pciehp/share/man/man4/watchdog.4 projects/pciehp/share/man/man4/wb.4 projects/pciehp/share/man/man4/wbwd.4 projects/pciehp/share/man/man4/wi.4 projects/pciehp/share/man/man4/wlan.4 projects/pciehp/share/man/man4/wpi.4 projects/pciehp/share/man/man4/wsp.4 projects/pciehp/share/man/man4/xe.4 projects/pciehp/share/man/man4/xen.4 projects/pciehp/share/man/man4/xl.4 projects/pciehp/share/man/man4/xnb.4 projects/pciehp/share/man/man4/xpt.4 projects/pciehp/share/man/man4/zyd.4 projects/pciehp/share/man/man5/bluetooth.device.conf.5 projects/pciehp/share/man/man5/bluetooth.hosts.5 projects/pciehp/share/man/man5/bluetooth.protocols.5 projects/pciehp/share/man/man5/boot.config.5 projects/pciehp/share/man/man5/devfs.5 projects/pciehp/share/man/man5/devfs.conf.5 projects/pciehp/share/man/man5/devfs.rules.5 projects/pciehp/share/man/man5/elf.5 projects/pciehp/share/man/man5/ext2fs.5 projects/pciehp/share/man/man5/fdescfs.5 projects/pciehp/share/man/man5/freebsd-update.conf.5 projects/pciehp/share/man/man5/libmap.conf.5 projects/pciehp/share/man/man5/mailer.conf.5 projects/pciehp/share/man/man5/make.conf.5 projects/pciehp/share/man/man5/mqueuefs.5 projects/pciehp/share/man/man5/msdosfs.5 projects/pciehp/share/man/man5/nandfs.5 projects/pciehp/share/man/man5/nsmb.conf.5 projects/pciehp/share/man/man5/nsswitch.conf.5 projects/pciehp/share/man/man5/nullfs.5 projects/pciehp/share/man/man5/passwd.5 projects/pciehp/share/man/man5/periodic.conf.5 projects/pciehp/share/man/man5/pf.conf.5 projects/pciehp/share/man/man5/portindex.5 projects/pciehp/share/man/man5/portsnap.conf.5 projects/pciehp/share/man/man5/rc.conf.5 projects/pciehp/share/man/man5/reiserfs.5 projects/pciehp/share/man/man5/src.conf.5 projects/pciehp/share/man/man5/tmpfs.5 projects/pciehp/share/man/man7/build.7 projects/pciehp/share/man/man7/c99.7 projects/pciehp/share/man/man7/development.7 projects/pciehp/share/man/man7/hier.7 projects/pciehp/share/man/man7/ports.7 projects/pciehp/share/man/man7/release.7 projects/pciehp/share/man/man7/sdoc.7 projects/pciehp/share/man/man7/sprog.7 projects/pciehp/share/man/man7/tests.7 projects/pciehp/share/man/man7/tuning.7 projects/pciehp/share/man/man8/hv_kvp_daemon.8 projects/pciehp/share/man/man8/nanobsd.8 projects/pciehp/share/man/man8/picobsd.8 projects/pciehp/share/man/man8/rescue.8 projects/pciehp/share/man/man9/BUF_ISLOCKED.9 projects/pciehp/share/man/man9/BUF_LOCK.9 projects/pciehp/share/man/man9/BUF_LOCKFREE.9 projects/pciehp/share/man/man9/BUF_LOCKINIT.9 projects/pciehp/share/man/man9/BUF_RECURSED.9 projects/pciehp/share/man/man9/BUF_TIMELOCK.9 projects/pciehp/share/man/man9/BUF_UNLOCK.9 projects/pciehp/share/man/man9/BUS_CONFIG_INTR.9 projects/pciehp/share/man/man9/BUS_SETUP_INTR.9 projects/pciehp/share/man/man9/CTASSERT.9 projects/pciehp/share/man/man9/DB_COMMAND.9 projects/pciehp/share/man/man9/DECLARE_GEOM_CLASS.9 projects/pciehp/share/man/man9/DECLARE_MODULE.9 projects/pciehp/share/man/man9/DEVICE_ATTACH.9 projects/pciehp/share/man/man9/DEVICE_IDENTIFY.9 projects/pciehp/share/man/man9/DEV_MODULE.9 projects/pciehp/share/man/man9/DRIVER_MODULE.9 projects/pciehp/share/man/man9/EVENTHANDLER.9 projects/pciehp/share/man/man9/KASSERT.9 projects/pciehp/share/man/man9/LOCK_PROFILING.9 projects/pciehp/share/man/man9/MODULE_DEPEND.9 projects/pciehp/share/man/man9/MODULE_VERSION.9 projects/pciehp/share/man/man9/Makefile projects/pciehp/share/man/man9/SDT.9 projects/pciehp/share/man/man9/SYSCALL_MODULE.9 projects/pciehp/share/man/man9/SYSINIT.9 projects/pciehp/share/man/man9/VFS_SET.9 projects/pciehp/share/man/man9/VOP_INACTIVE.9 projects/pciehp/share/man/man9/alq.9 projects/pciehp/share/man/man9/atomic.9 projects/pciehp/share/man/man9/bus_activate_resource.9 projects/pciehp/share/man/man9/bus_alloc_resource.9 projects/pciehp/share/man/man9/bus_child_present.9 projects/pciehp/share/man/man9/bus_release_resource.9 projects/pciehp/share/man/man9/bus_set_resource.9 projects/pciehp/share/man/man9/cd.9 projects/pciehp/share/man/man9/config_intrhook.9 projects/pciehp/share/man/man9/crypto.9 projects/pciehp/share/man/man9/devstat.9 projects/pciehp/share/man/man9/domain.9 projects/pciehp/share/man/man9/eventtimers.9 projects/pciehp/share/man/man9/fail.9 projects/pciehp/share/man/man9/firmware.9 projects/pciehp/share/man/man9/g_access.9 projects/pciehp/share/man/man9/g_attach.9 projects/pciehp/share/man/man9/g_bio.9 projects/pciehp/share/man/man9/g_consumer.9 projects/pciehp/share/man/man9/g_data.9 projects/pciehp/share/man/man9/g_event.9 projects/pciehp/share/man/man9/g_geom.9 projects/pciehp/share/man/man9/g_provider.9 projects/pciehp/share/man/man9/g_provider_by_name.9 projects/pciehp/share/man/man9/g_wither_geom.9 projects/pciehp/share/man/man9/get_cyclecount.9 projects/pciehp/share/man/man9/getnewvnode.9 projects/pciehp/share/man/man9/groupmember.9 projects/pciehp/share/man/man9/hhook.9 projects/pciehp/share/man/man9/ieee80211_radiotap.9 projects/pciehp/share/man/man9/ifnet.9 projects/pciehp/share/man/man9/insmntque.9 projects/pciehp/share/man/man9/kernel_mount.9 projects/pciehp/share/man/man9/khelp.9 projects/pciehp/share/man/man9/kqueue.9 projects/pciehp/share/man/man9/kthread.9 projects/pciehp/share/man/man9/lock.9 projects/pciehp/share/man/man9/mbchain.9 projects/pciehp/share/man/man9/mbpool.9 projects/pciehp/share/man/man9/mbuf.9 projects/pciehp/share/man/man9/mbuf_tags.9 projects/pciehp/share/man/man9/mdchain.9 projects/pciehp/share/man/man9/memguard.9 projects/pciehp/share/man/man9/microtime.9 projects/pciehp/share/man/man9/microuptime.9 projects/pciehp/share/man/man9/mod_cc.9 projects/pciehp/share/man/man9/module.9 projects/pciehp/share/man/man9/namei.9 projects/pciehp/share/man/man9/osd.9 projects/pciehp/share/man/man9/pbuf.9 projects/pciehp/share/man/man9/pci.9 projects/pciehp/share/man/man9/pfind.9 projects/pciehp/share/man/man9/pgfind.9 projects/pciehp/share/man/man9/pmap.9 projects/pciehp/share/man/man9/pmap_activate.9 projects/pciehp/share/man/man9/pmap_change_wiring.9 projects/pciehp/share/man/man9/pmap_clear_modify.9 projects/pciehp/share/man/man9/pmap_copy.9 projects/pciehp/share/man/man9/pmap_enter.9 projects/pciehp/share/man/man9/pmap_extract.9 projects/pciehp/share/man/man9/pmap_growkernel.9 projects/pciehp/share/man/man9/pmap_init.9 projects/pciehp/share/man/man9/pmap_is_modified.9 projects/pciehp/share/man/man9/pmap_is_prefaultable.9 projects/pciehp/share/man/man9/pmap_map.9 projects/pciehp/share/man/man9/pmap_mincore.9 projects/pciehp/share/man/man9/pmap_object_init_pt.9 projects/pciehp/share/man/man9/pmap_page_exists_quick.9 projects/pciehp/share/man/man9/pmap_page_init.9 projects/pciehp/share/man/man9/pmap_pinit.9 projects/pciehp/share/man/man9/pmap_qenter.9 projects/pciehp/share/man/man9/pmap_release.9 projects/pciehp/share/man/man9/pmap_remove.9 projects/pciehp/share/man/man9/pmap_resident_count.9 projects/pciehp/share/man/man9/pmap_zero_page.9 projects/pciehp/share/man/man9/pseudofs.9 projects/pciehp/share/man/man9/redzone.9 projects/pciehp/share/man/man9/resource_int_value.9 projects/pciehp/share/man/man9/rman.9 projects/pciehp/share/man/man9/sbuf.9 projects/pciehp/share/man/man9/selrecord.9 projects/pciehp/share/man/man9/signal.9 projects/pciehp/share/man/man9/sleep.9 projects/pciehp/share/man/man9/socket.9 projects/pciehp/share/man/man9/sysctl.9 projects/pciehp/share/man/man9/sysctl_add_oid.9 projects/pciehp/share/man/man9/sysctl_ctx_init.9 projects/pciehp/share/man/man9/taskqueue.9 projects/pciehp/share/man/man9/timeout.9 projects/pciehp/share/man/man9/tvtohz.9 projects/pciehp/share/man/man9/ucred.9 projects/pciehp/share/man/man9/uidinfo.9 projects/pciehp/share/man/man9/usbdi.9 projects/pciehp/share/man/man9/utopia.9 projects/pciehp/share/man/man9/vaccess_acl_nfs4.9 projects/pciehp/share/man/man9/vflush.9 projects/pciehp/share/man/man9/vfs_busy.9 projects/pciehp/share/man/man9/vfs_getnewfsid.9 projects/pciehp/share/man/man9/vfs_getopt.9 projects/pciehp/share/man/man9/vfs_getvfs.9 projects/pciehp/share/man/man9/vfs_mountedfrom.9 projects/pciehp/share/man/man9/vfs_rootmountalloc.9 projects/pciehp/share/man/man9/vfs_timestamp.9 projects/pciehp/share/man/man9/vfs_unbusy.9 projects/pciehp/share/man/man9/vfsconf.9 projects/pciehp/share/man/man9/vgone.9 projects/pciehp/share/man/man9/vhold.9 projects/pciehp/share/man/man9/vinvalbuf.9 projects/pciehp/share/man/man9/vm_fault_prefault.9 projects/pciehp/share/man/man9/vm_map.9 projects/pciehp/share/man/man9/vm_map_check_protection.9 projects/pciehp/share/man/man9/vm_map_create.9 projects/pciehp/share/man/man9/vm_map_delete.9 projects/pciehp/share/man/man9/vm_map_entry_resize_free.9 projects/pciehp/share/man/man9/vm_map_find.9 projects/pciehp/share/man/man9/vm_map_findspace.9 projects/pciehp/share/man/man9/vm_map_inherit.9 projects/pciehp/share/man/man9/vm_map_init.9 projects/pciehp/share/man/man9/vm_map_insert.9 projects/pciehp/share/man/man9/vm_map_lock.9 projects/pciehp/share/man/man9/vm_map_lookup.9 projects/pciehp/share/man/man9/vm_map_madvise.9 projects/pciehp/share/man/man9/vm_map_max.9 projects/pciehp/share/man/man9/vm_map_protect.9 projects/pciehp/share/man/man9/vm_map_remove.9 projects/pciehp/share/man/man9/vm_map_simplify_entry.9 projects/pciehp/share/man/man9/vm_map_stack.9 projects/pciehp/share/man/man9/vm_map_submap.9 projects/pciehp/share/man/man9/vm_map_sync.9 projects/pciehp/share/man/man9/vm_map_wire.9 projects/pciehp/share/man/man9/vm_page_aflag.9 projects/pciehp/share/man/man9/vm_page_alloc.9 projects/pciehp/share/man/man9/vm_page_bits.9 projects/pciehp/share/man/man9/vm_page_cache.9 projects/pciehp/share/man/man9/vm_page_deactivate.9 projects/pciehp/share/man/man9/vm_page_dontneed.9 projects/pciehp/share/man/man9/vm_page_free.9 projects/pciehp/share/man/man9/vm_page_grab.9 projects/pciehp/share/man/man9/vm_page_hold.9 projects/pciehp/share/man/man9/vm_page_insert.9 projects/pciehp/share/man/man9/vm_page_lookup.9 projects/pciehp/share/man/man9/vm_page_rename.9 projects/pciehp/share/man/man9/vm_page_wire.9 projects/pciehp/share/man/man9/vm_set_page_size.9 projects/pciehp/share/man/man9/vn_fullpath.9 projects/pciehp/share/man/man9/vn_isdisk.9 projects/pciehp/share/man/man9/vnode.9 projects/pciehp/share/man/man9/watchdog.9 projects/pciehp/share/man/man9/zone.9 projects/pciehp/share/misc/bsd-family-tree projects/pciehp/share/misc/committers-ports.dot projects/pciehp/share/misc/committers-src.dot projects/pciehp/share/misc/organization.dot projects/pciehp/share/mk/Makefile projects/pciehp/share/mk/atf.test.mk projects/pciehp/share/mk/bsd.README projects/pciehp/share/mk/bsd.compiler.mk projects/pciehp/share/mk/bsd.cpu.mk projects/pciehp/share/mk/bsd.dep.mk projects/pciehp/share/mk/bsd.endian.mk projects/pciehp/share/mk/bsd.files.mk projects/pciehp/share/mk/bsd.lib.mk projects/pciehp/share/mk/bsd.libnames.mk projects/pciehp/share/mk/bsd.obj.mk projects/pciehp/share/mk/bsd.opts.mk projects/pciehp/share/mk/bsd.own.mk projects/pciehp/share/mk/bsd.prog.mk projects/pciehp/share/mk/bsd.subdir.mk projects/pciehp/share/mk/bsd.sys.mk projects/pciehp/share/mk/bsd.test.mk projects/pciehp/share/mk/plain.test.mk projects/pciehp/share/mk/src.opts.mk projects/pciehp/share/mk/src.sys.mk projects/pciehp/share/mk/sys.mk projects/pciehp/share/mk/tap.test.mk projects/pciehp/share/termcap/termcap.src projects/pciehp/sys/Makefile projects/pciehp/sys/amd64/acpica/acpi_machdep.c projects/pciehp/sys/amd64/acpica/acpi_wakecode.S projects/pciehp/sys/amd64/amd64/amd64_mem.c projects/pciehp/sys/amd64/amd64/db_disasm.c projects/pciehp/sys/amd64/amd64/exception.S projects/pciehp/sys/amd64/amd64/fpu.c projects/pciehp/sys/amd64/amd64/identcpu.c projects/pciehp/sys/amd64/amd64/machdep.c projects/pciehp/sys/amd64/amd64/mp_machdep.c projects/pciehp/sys/amd64/amd64/mp_watchdog.c projects/pciehp/sys/amd64/amd64/mpboot.S projects/pciehp/sys/amd64/amd64/pmap.c projects/pciehp/sys/amd64/amd64/sys_machdep.c projects/pciehp/sys/amd64/amd64/trap.c projects/pciehp/sys/amd64/conf/GENERIC projects/pciehp/sys/amd64/conf/NOTES projects/pciehp/sys/amd64/include/cpu.h projects/pciehp/sys/amd64/include/fpu.h projects/pciehp/sys/amd64/include/vmm.h (contents, props changed) projects/pciehp/sys/amd64/include/vmm_dev.h (contents, props changed) projects/pciehp/sys/amd64/include/vmm_instruction_emul.h (contents, props changed) projects/pciehp/sys/amd64/pci/pci_cfgreg.c projects/pciehp/sys/amd64/vmm/intel/vmcs.c projects/pciehp/sys/amd64/vmm/intel/vmcs.h projects/pciehp/sys/amd64/vmm/intel/vmx.c projects/pciehp/sys/amd64/vmm/intel/vmx_msr.c projects/pciehp/sys/amd64/vmm/intel/vmx_msr.h projects/pciehp/sys/amd64/vmm/io/vatpic.c projects/pciehp/sys/amd64/vmm/io/vlapic.c projects/pciehp/sys/amd64/vmm/io/vlapic.h projects/pciehp/sys/amd64/vmm/vmm.c projects/pciehp/sys/amd64/vmm/vmm_dev.c projects/pciehp/sys/amd64/vmm/vmm_host.c projects/pciehp/sys/amd64/vmm/vmm_instruction_emul.c projects/pciehp/sys/amd64/vmm/vmm_ioport.c projects/pciehp/sys/amd64/vmm/vmm_ioport.h projects/pciehp/sys/amd64/vmm/vmm_ktr.h projects/pciehp/sys/amd64/vmm/vmm_stat.c projects/pciehp/sys/amd64/vmm/vmm_stat.h projects/pciehp/sys/amd64/vmm/x86.c projects/pciehp/sys/arm/arm/busdma_machdep-v6.c projects/pciehp/sys/arm/arm/busdma_machdep.c projects/pciehp/sys/arm/arm/cpufunc.c projects/pciehp/sys/arm/arm/cpufunc_asm_pj4b.S projects/pciehp/sys/arm/arm/dump_machdep.c projects/pciehp/sys/arm/arm/gic.c projects/pciehp/sys/arm/arm/intr.c projects/pciehp/sys/arm/arm/locore.S projects/pciehp/sys/arm/arm/platform.c projects/pciehp/sys/arm/arm/pmap-v6.c projects/pciehp/sys/arm/arm/pmap.c projects/pciehp/sys/arm/at91/board_tsc4370.c projects/pciehp/sys/arm/at91/if_ate.c projects/pciehp/sys/arm/at91/if_macb.c projects/pciehp/sys/arm/broadcom/bcm2835/bcm2835_bsc.c projects/pciehp/sys/arm/broadcom/bcm2835/bcm2835_intr.c projects/pciehp/sys/arm/broadcom/bcm2835/files.bcm2835 projects/pciehp/sys/arm/cavium/cns11xx/if_ece.c projects/pciehp/sys/arm/conf/ARNDALE projects/pciehp/sys/arm/conf/BEAGLEBONE projects/pciehp/sys/arm/conf/CHROMEBOOK projects/pciehp/sys/arm/conf/IMX6 projects/pciehp/sys/arm/conf/PANDABOARD projects/pciehp/sys/arm/conf/RADXA projects/pciehp/sys/arm/conf/RPI-B projects/pciehp/sys/arm/conf/VYBRID projects/pciehp/sys/arm/conf/ZEDBOARD projects/pciehp/sys/arm/freescale/imx/files.imx51 projects/pciehp/sys/arm/freescale/imx/files.imx53 projects/pciehp/sys/arm/freescale/imx/files.imx6 projects/pciehp/sys/arm/freescale/imx/imx6_anatop.c projects/pciehp/sys/arm/freescale/imx/imx6_mp.c projects/pciehp/sys/arm/freescale/imx/imx_sdhci.c projects/pciehp/sys/arm/freescale/vybrid/files.vybrid projects/pciehp/sys/arm/freescale/vybrid/vf_i2c.c projects/pciehp/sys/arm/include/cpu.h projects/pciehp/sys/arm/include/cpufunc.h projects/pciehp/sys/arm/include/elf.h projects/pciehp/sys/arm/include/intr.h projects/pciehp/sys/arm/include/ucontext.h projects/pciehp/sys/arm/mv/armadaxp/armadaxp_mp.c projects/pciehp/sys/arm/mv/armadaxp/mptramp.S projects/pciehp/sys/arm/rockchip/files.rk30xx projects/pciehp/sys/arm/samsung/exynos/chrome_ec.c projects/pciehp/sys/arm/samsung/exynos/chrome_kb.c projects/pciehp/sys/arm/samsung/exynos/chrome_kb.h projects/pciehp/sys/arm/samsung/exynos/exynos5_combiner.c projects/pciehp/sys/arm/samsung/exynos/exynos5_ehci.c projects/pciehp/sys/arm/samsung/exynos/exynos5_i2c.c projects/pciehp/sys/arm/samsung/exynos/exynos5_machdep.c projects/pciehp/sys/arm/samsung/exynos/exynos5_mp.c projects/pciehp/sys/arm/samsung/exynos/exynos5_pad.c projects/pciehp/sys/arm/samsung/exynos/files.exynos5 projects/pciehp/sys/arm/ti/aintc.c projects/pciehp/sys/arm/ti/am335x/am335x_lcd.c projects/pciehp/sys/arm/ti/am335x/am335x_prcm.c projects/pciehp/sys/arm/ti/am335x/am335x_pwm.c projects/pciehp/sys/arm/ti/am335x/am335x_scm_padconf.c projects/pciehp/sys/arm/ti/omap4/omap4_prcm_clks.c projects/pciehp/sys/arm/ti/omap4/omap4_scm_padconf.c projects/pciehp/sys/arm/ti/ti_adc.c projects/pciehp/sys/arm/ti/ti_adcreg.h projects/pciehp/sys/arm/ti/ti_adcvar.h projects/pciehp/sys/arm/ti/ti_gpio.c projects/pciehp/sys/arm/ti/ti_i2c.c projects/pciehp/sys/arm/ti/ti_prcm.c projects/pciehp/sys/arm/versatile/versatile_clcd.c projects/pciehp/sys/arm/xilinx/zy7_slcr.c projects/pciehp/sys/arm/xilinx/zy7_slcr.h projects/pciehp/sys/arm/xscale/i80321/ep80219_machdep.c projects/pciehp/sys/arm/xscale/i80321/iq31244_machdep.c projects/pciehp/sys/arm/xscale/i8134x/crb_machdep.c projects/pciehp/sys/arm/xscale/ixp425/avila_machdep.c projects/pciehp/sys/arm/xscale/ixp425/if_npe.c projects/pciehp/sys/arm/xscale/ixp425/ixp425_npe.c projects/pciehp/sys/arm/xscale/ixp425/ixp425_qmgr.c projects/pciehp/sys/arm/xscale/pxa/pxa_machdep.c projects/pciehp/sys/boot/amd64/boot1.efi/Makefile projects/pciehp/sys/boot/amd64/efi/bootinfo.c projects/pciehp/sys/boot/amd64/efi/main.c projects/pciehp/sys/boot/arm/at91/boot0/main.c projects/pciehp/sys/boot/arm/at91/boot0iic/main.c projects/pciehp/sys/boot/arm/at91/boot0spi/main.c projects/pciehp/sys/boot/arm/at91/boot2/boot2.c projects/pciehp/sys/boot/arm/at91/bootiic/main.c projects/pciehp/sys/boot/arm/at91/bootspi/main.c projects/pciehp/sys/boot/arm/at91/libat91/emac.c projects/pciehp/sys/boot/arm/at91/libat91/mci_device.h projects/pciehp/sys/boot/arm/at91/libat91/sd-card.c projects/pciehp/sys/boot/arm/at91/libat91/sd-card.h projects/pciehp/sys/boot/common/Makefile.inc projects/pciehp/sys/boot/common/bootstrap.h projects/pciehp/sys/boot/common/interp.c projects/pciehp/sys/boot/common/interp_forth.c projects/pciehp/sys/boot/efi/include/amd64/pe.h projects/pciehp/sys/boot/efi/include/efiapi.h projects/pciehp/sys/boot/efi/include/i386/pe.h projects/pciehp/sys/boot/efi/libefi/Makefile projects/pciehp/sys/boot/fdt/dts/arm/beaglebone-black.dts projects/pciehp/sys/boot/fdt/dts/arm/beaglebone.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5250-arndale.dts projects/pciehp/sys/boot/fdt/dts/arm/exynos5250.dtsi projects/pciehp/sys/boot/fdt/dts/arm/imx6.dtsi projects/pciehp/sys/boot/fdt/dts/arm/wandboard-dual.dts projects/pciehp/sys/boot/fdt/dts/arm/wandboard-quad.dts projects/pciehp/sys/boot/fdt/dts/arm/wandboard-solo.dts projects/pciehp/sys/boot/fdt/dts/arm/zedboard.dts projects/pciehp/sys/boot/fdt/dts/mips/beripad-de4.dts projects/pciehp/sys/boot/fdt/fdt_loader_cmd.c projects/pciehp/sys/boot/ficl/loader.c projects/pciehp/sys/boot/forth/brand.4th projects/pciehp/sys/boot/forth/loader.conf projects/pciehp/sys/boot/i386/boot2/Makefile projects/pciehp/sys/boot/i386/boot2/boot2.c projects/pciehp/sys/boot/i386/btx/btx/Makefile projects/pciehp/sys/boot/i386/btx/btxldr/Makefile projects/pciehp/sys/boot/i386/btx/lib/Makefile projects/pciehp/sys/boot/i386/gptboot/gptboot.8 projects/pciehp/sys/boot/i386/libi386/Makefile projects/pciehp/sys/boot/i386/libi386/amd64_tramp.S projects/pciehp/sys/boot/i386/libi386/libi386.h projects/pciehp/sys/boot/i386/libi386/pxe.c projects/pciehp/sys/boot/i386/loader/Makefile projects/pciehp/sys/boot/i386/loader/main.c projects/pciehp/sys/boot/libstand32/Makefile projects/pciehp/sys/boot/mips/beri/boot2/Makefile projects/pciehp/sys/boot/mips/beri/loader/Makefile projects/pciehp/sys/boot/mips/beri/loader/loader.ldscript projects/pciehp/sys/boot/mips/beri/loader/main.c projects/pciehp/sys/boot/ofw/common/main.c projects/pciehp/sys/boot/pc98/boot2/Makefile projects/pciehp/sys/boot/pc98/boot2/boot2.c projects/pciehp/sys/boot/pc98/btx/lib/Makefile projects/pciehp/sys/boot/pc98/loader/Makefile projects/pciehp/sys/boot/pc98/loader/main.c projects/pciehp/sys/boot/powerpc/ps3/main.c projects/pciehp/sys/boot/sparc64/boot1/Makefile projects/pciehp/sys/boot/sparc64/loader/Makefile projects/pciehp/sys/boot/sparc64/loader/main.c projects/pciehp/sys/boot/uboot/common/main.c projects/pciehp/sys/boot/usb/Makefile projects/pciehp/sys/boot/usb/bsd_kernel.c projects/pciehp/sys/boot/usb/bsd_kernel.h projects/pciehp/sys/boot/usb/bsd_usbloader_test.c projects/pciehp/sys/boot/usb/usb_busdma_loader.c projects/pciehp/sys/boot/userboot/libstand/Makefile projects/pciehp/sys/boot/userboot/test/test.c projects/pciehp/sys/boot/userboot/userboot/main.c projects/pciehp/sys/boot/zfs/zfsimpl.c projects/pciehp/sys/cam/ata/ata_da.c projects/pciehp/sys/cam/ata/ata_pmp.c projects/pciehp/sys/cam/cam.c projects/pciehp/sys/cam/cam_periph.c projects/pciehp/sys/cam/cam_xpt.c projects/pciehp/sys/cam/ctl/ctl.c projects/pciehp/sys/cam/ctl/ctl.h projects/pciehp/sys/cam/ctl/ctl_backend.c projects/pciehp/sys/cam/ctl/ctl_backend.h projects/pciehp/sys/cam/ctl/ctl_backend_block.c projects/pciehp/sys/cam/ctl/ctl_backend_ramdisk.c projects/pciehp/sys/cam/ctl/ctl_cmd_table.c projects/pciehp/sys/cam/ctl/ctl_error.c projects/pciehp/sys/cam/ctl/ctl_error.h projects/pciehp/sys/cam/ctl/ctl_frontend.c projects/pciehp/sys/cam/ctl/ctl_frontend.h projects/pciehp/sys/cam/ctl/ctl_frontend_cam_sim.c projects/pciehp/sys/cam/ctl/ctl_frontend_internal.c projects/pciehp/sys/cam/ctl/ctl_frontend_iscsi.c projects/pciehp/sys/cam/ctl/ctl_frontend_iscsi.h projects/pciehp/sys/cam/ctl/ctl_io.h projects/pciehp/sys/cam/ctl/ctl_ioctl.h projects/pciehp/sys/cam/ctl/ctl_private.h projects/pciehp/sys/cam/ctl/ctl_ser_table.c projects/pciehp/sys/cam/ctl/ctl_util.c projects/pciehp/sys/cam/ctl/scsi_ctl.c projects/pciehp/sys/cam/scsi/scsi_all.c projects/pciehp/sys/cam/scsi/scsi_all.h projects/pciehp/sys/cam/scsi/scsi_cd.c projects/pciehp/sys/cam/scsi/scsi_da.c projects/pciehp/sys/cam/scsi/scsi_da.h projects/pciehp/sys/cam/scsi/scsi_enc_safte.c projects/pciehp/sys/cam/scsi/scsi_sa.c projects/pciehp/sys/cam/scsi/scsi_sg.c projects/pciehp/sys/cam/scsi/scsi_sg.h projects/pciehp/sys/cam/scsi/scsi_xpt.c projects/pciehp/sys/cddl/boot/zfs/README projects/pciehp/sys/cddl/boot/zfs/zfsimpl.h projects/pciehp/sys/cddl/boot/zfs/zfssubr.c projects/pciehp/sys/cddl/compat/opensolaris/kern/opensolaris_kstat.c projects/pciehp/sys/cddl/contrib/opensolaris/common/avl/avl.c projects/pciehp/sys/cddl/contrib/opensolaris/common/unicode/u8_textprep.c projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.c projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zfeature_common.h projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.c projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zfs_ioctl_compat.h projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zfs_prop.c projects/pciehp/sys/cddl/contrib/opensolaris/common/zfs/zpool_prop.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/Makefile.files projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/dtrace/dtrace.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/dtrace/fasttrap.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/dtrace/sdt_subr.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/arc.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bpobj.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/bptree.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dbuf.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/ddt.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_diff.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_objset.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_send.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_traverse.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_tx.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dmu_zfetch.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dnode_sync.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_bookmark.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dataset.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_deleg.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_destroy.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_dir.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_pool.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_prop.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_scan.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_synctask.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/dsl_userhold.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/metaslab.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/range_tree.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/rrwlock.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sa.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_errlog.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_history.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/spa_misc.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/space_map.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/arc.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/bptree.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dbuf.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_impl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_objset.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_send.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dmu_traverse.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dnode.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_dir.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_pool.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_scan.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/dsl_synctask.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/metaslab_impl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/rrwlock.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/spa_impl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/space_map.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/txg.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/vdev_impl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_debug.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_ioctl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_vfsops.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zfs_znode.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/sys/zio_compress.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/trim_map.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/txg.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_cache.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_geom.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_mirror.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/vdev_queue.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_debug.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_dir.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_ioctl.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vfsops.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_vnops.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zfs_znode.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zil.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_compress.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zio_inject.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/fs/zfs/zvol.c projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/avl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/ctf_api.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/dtrace_impl.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/fs/zfs.h projects/pciehp/sys/cddl/contrib/opensolaris/uts/common/sys/isa_defs.h projects/pciehp/sys/cddl/dev/dtrace/amd64/dtrace_isa.c projects/pciehp/sys/cddl/dev/dtrace/amd64/dtrace_subr.c projects/pciehp/sys/cddl/dev/dtrace/dtrace_cddl.h projects/pciehp/sys/cddl/dev/dtrace/dtrace_ioctl.c projects/pciehp/sys/cddl/dev/dtrace/dtrace_load.c projects/pciehp/sys/cddl/dev/dtrace/dtrace_sysctl.c projects/pciehp/sys/cddl/dev/dtrace/dtrace_unload.c projects/pciehp/sys/cddl/dev/dtrace/i386/dtrace_asm.S projects/pciehp/sys/cddl/dev/dtrace/i386/dtrace_isa.c projects/pciehp/sys/cddl/dev/dtrace/i386/dtrace_subr.c projects/pciehp/sys/cddl/dev/dtrace/mips/dtrace_subr.c projects/pciehp/sys/cddl/dev/dtrace/powerpc/dtrace_subr.c projects/pciehp/sys/cddl/dev/fbt/fbt.c projects/pciehp/sys/cddl/dev/sdt/sdt.c projects/pciehp/sys/compat/freebsd32/freebsd32_ioctl.c projects/pciehp/sys/compat/freebsd32/freebsd32_ioctl.h projects/pciehp/sys/compat/freebsd32/freebsd32_misc.c projects/pciehp/sys/compat/freebsd32/freebsd32_util.h projects/pciehp/sys/compat/ia32/ia32_sysvec.c projects/pciehp/sys/compat/ia32/ia32_util.h projects/pciehp/sys/compat/linux/linux_futex.c projects/pciehp/sys/compat/linux/linux_ioctl.c projects/pciehp/sys/compat/ndis/kern_ndis.c projects/pciehp/sys/compat/ndis/ndis_var.h projects/pciehp/sys/compat/ndis/pe_var.h projects/pciehp/sys/compat/x86bios/x86bios.c projects/pciehp/sys/conf/Makefile.arm projects/pciehp/sys/conf/NOTES projects/pciehp/sys/conf/files projects/pciehp/sys/conf/files.amd64 projects/pciehp/sys/conf/files.i386 projects/pciehp/sys/conf/files.mips projects/pciehp/sys/conf/files.sparc64 projects/pciehp/sys/conf/kern.mk projects/pciehp/sys/conf/kern.opts.mk projects/pciehp/sys/conf/kern.pre.mk projects/pciehp/sys/conf/kmod.mk projects/pciehp/sys/conf/options projects/pciehp/sys/conf/options.amd64 projects/pciehp/sys/conf/options.i386 projects/pciehp/sys/conf/options.mips projects/pciehp/sys/contrib/dev/acpica/acpica_prep.sh projects/pciehp/sys/contrib/dev/ath/ath_hal/ar9300/ar9300_interrupts.c projects/pciehp/sys/contrib/ipfilter/netinet/ip_compat.h projects/pciehp/sys/contrib/ipfilter/netinet/ip_fil_freebsd.c (contents, props changed) projects/pciehp/sys/contrib/ipfilter/netinet/ip_log.c projects/pciehp/sys/contrib/x86emu/x86emu.c projects/pciehp/sys/crypto/aesni/aesni.c projects/pciehp/sys/crypto/aesni/aesni.h projects/pciehp/sys/crypto/aesni/aesni_wrap.c projects/pciehp/sys/crypto/via/padlock.c projects/pciehp/sys/crypto/via/padlock_cipher.c projects/pciehp/sys/crypto/via/padlock_hash.c projects/pciehp/sys/ddb/db_command.c projects/pciehp/sys/dev/aac/aac_pci.c projects/pciehp/sys/dev/acpica/Osd/OsdSchedule.c projects/pciehp/sys/dev/acpica/acpi.c projects/pciehp/sys/dev/acpica/acpi_cpu.c projects/pciehp/sys/dev/acpica/acpi_ec.c projects/pciehp/sys/dev/acpica/acpi_hpet.c projects/pciehp/sys/dev/acpica/acpi_powerres.c projects/pciehp/sys/dev/adb/adb_buttons.c projects/pciehp/sys/dev/adb/adb_kbd.c projects/pciehp/sys/dev/advansys/adwcam.c projects/pciehp/sys/dev/ae/if_ae.c projects/pciehp/sys/dev/age/if_age.c projects/pciehp/sys/dev/agp/agp.c projects/pciehp/sys/dev/agp/agp_i810.c projects/pciehp/sys/dev/aha/aha.c projects/pciehp/sys/dev/ahb/ahb.c projects/pciehp/sys/dev/ahci/ahci.c projects/pciehp/sys/dev/aic7xxx/aic79xx.c projects/pciehp/sys/dev/aic7xxx/aic7xxx.c projects/pciehp/sys/dev/alc/if_alc.c projects/pciehp/sys/dev/ale/if_ale.c projects/pciehp/sys/dev/amr/amr_pci.c projects/pciehp/sys/dev/amr/amrio.h projects/pciehp/sys/dev/an/if_an.c projects/pciehp/sys/dev/asmc/asmc.c projects/pciehp/sys/dev/asmc/asmcvar.h projects/pciehp/sys/dev/ata/ata-all.c projects/pciehp/sys/dev/ata/ata-dma.c projects/pciehp/sys/dev/ata/chipsets/ata-ati.c projects/pciehp/sys/dev/ath/ah_osdep.c projects/pciehp/sys/dev/ath/if_ath.c projects/pciehp/sys/dev/ath/if_ath_ahb.c projects/pciehp/sys/dev/ath/if_ath_debug.c projects/pciehp/sys/dev/ath/if_ath_pci.c projects/pciehp/sys/dev/atkbdc/atkbdc.c projects/pciehp/sys/dev/bce/if_bce.c projects/pciehp/sys/dev/bfe/if_bfe.c projects/pciehp/sys/dev/bge/if_bge.c projects/pciehp/sys/dev/buslogic/bt.c projects/pciehp/sys/dev/bwn/if_bwn.c projects/pciehp/sys/dev/bxe/bxe.c projects/pciehp/sys/dev/bxe/bxe.h projects/pciehp/sys/dev/bxe/bxe_debug.c projects/pciehp/sys/dev/bxe/bxe_stats.c projects/pciehp/sys/dev/bxe/ecore_reg.h projects/pciehp/sys/dev/bxe/ecore_sp.h projects/pciehp/sys/dev/cadence/if_cgem.c projects/pciehp/sys/dev/cardbus/cardbus.c projects/pciehp/sys/dev/cas/if_cas.c projects/pciehp/sys/dev/cfe/cfe_console.c projects/pciehp/sys/dev/ciss/ciss.c projects/pciehp/sys/dev/ciss/cissreg.h projects/pciehp/sys/dev/cpuctl/cpuctl.c projects/pciehp/sys/dev/cs/if_cs.c projects/pciehp/sys/dev/cxgb/cxgb_include.h projects/pciehp/sys/dev/cxgb/cxgb_main.c projects/pciehp/sys/dev/cxgb/cxgb_sge.c projects/pciehp/sys/dev/cxgb/ulp/iw_cxgb/iw_cxgb_cm.c projects/pciehp/sys/dev/cxgbe/adapter.h projects/pciehp/sys/dev/cxgbe/common/common.h projects/pciehp/sys/dev/cxgbe/common/t4_hw.c projects/pciehp/sys/dev/cxgbe/firmware/t4fw_cfg_uwire.txt projects/pciehp/sys/dev/cxgbe/firmware/t4fw_interface.h projects/pciehp/sys/dev/cxgbe/firmware/t5fw_cfg_uwire.txt projects/pciehp/sys/dev/cxgbe/iw_cxgbe/cm.c projects/pciehp/sys/dev/cxgbe/offload.h projects/pciehp/sys/dev/cxgbe/t4_main.c projects/pciehp/sys/dev/cxgbe/t4_sge.c projects/pciehp/sys/dev/cxgbe/t4_tracer.c projects/pciehp/sys/dev/cxgbe/tom/t4_cpl_io.c projects/pciehp/sys/dev/cxgbe/tom/t4_ddp.c projects/pciehp/sys/dev/cxgbe/tom/t4_listen.c projects/pciehp/sys/dev/cxgbe/tom/t4_tom.h projects/pciehp/sys/dev/dc/dcphy.c projects/pciehp/sys/dev/dc/if_dc.c projects/pciehp/sys/dev/dc/pnphy.c projects/pciehp/sys/dev/de/if_de.c projects/pciehp/sys/dev/dpt/dpt_scsi.c projects/pciehp/sys/dev/drm/ati_pcigart.c projects/pciehp/sys/dev/drm/drm.h projects/pciehp/sys/dev/drm/drm_drv.c projects/pciehp/sys/dev/drm/drm_pci.c projects/pciehp/sys/dev/drm/drm_sarea.h projects/pciehp/sys/dev/drm/drm_sysctl.c projects/pciehp/sys/dev/drm/via_dmablit.c projects/pciehp/sys/dev/drm2/drm.h projects/pciehp/sys/dev/drm2/drm_drv.c projects/pciehp/sys/dev/drm2/drm_fb_helper.c projects/pciehp/sys/dev/drm2/drm_pci.c projects/pciehp/sys/dev/drm2/drm_sarea.h projects/pciehp/sys/dev/drm2/drm_sysctl.c projects/pciehp/sys/dev/drm2/i915/i915_gem.c projects/pciehp/sys/dev/drm2/i915/i915_gem_gtt.c projects/pciehp/sys/dev/drm2/i915/intel_fb.c projects/pciehp/sys/dev/drm2/radeon/radeon_device.c projects/pciehp/sys/dev/drm2/radeon/rs690.c projects/pciehp/sys/dev/drm2/radeon/rv515.c projects/pciehp/sys/dev/drm2/ttm/ttm_page_alloc.c projects/pciehp/sys/dev/e1000/e1000_82542.c projects/pciehp/sys/dev/e1000/e1000_82571.c projects/pciehp/sys/dev/e1000/e1000_82575.c projects/pciehp/sys/dev/e1000/e1000_82575.h projects/pciehp/sys/dev/e1000/e1000_api.c projects/pciehp/sys/dev/e1000/e1000_api.h projects/pciehp/sys/dev/e1000/e1000_defines.h projects/pciehp/sys/dev/e1000/e1000_hw.h projects/pciehp/sys/dev/e1000/e1000_i210.c projects/pciehp/sys/dev/e1000/e1000_i210.h projects/pciehp/sys/dev/e1000/e1000_ich8lan.c projects/pciehp/sys/dev/e1000/e1000_ich8lan.h projects/pciehp/sys/dev/e1000/e1000_mac.c projects/pciehp/sys/dev/e1000/e1000_mac.h projects/pciehp/sys/dev/e1000/e1000_manage.c projects/pciehp/sys/dev/e1000/e1000_mbx.c projects/pciehp/sys/dev/e1000/e1000_mbx.h projects/pciehp/sys/dev/e1000/e1000_nvm.c projects/pciehp/sys/dev/e1000/e1000_osdep.h projects/pciehp/sys/dev/e1000/e1000_phy.c projects/pciehp/sys/dev/e1000/e1000_phy.h projects/pciehp/sys/dev/e1000/e1000_regs.h projects/pciehp/sys/dev/e1000/e1000_vf.c projects/pciehp/sys/dev/e1000/e1000_vf.h projects/pciehp/sys/dev/e1000/if_em.c projects/pciehp/sys/dev/e1000/if_em.h projects/pciehp/sys/dev/e1000/if_igb.c projects/pciehp/sys/dev/e1000/if_lem.c projects/pciehp/sys/dev/e1000/if_lem.h projects/pciehp/sys/dev/et/if_et.c projects/pciehp/sys/dev/etherswitch/arswitch/arswitch.c projects/pciehp/sys/dev/etherswitch/rtl8366/rtl8366rb.c projects/pciehp/sys/dev/etherswitch/rtl8366/rtl8366rbvar.h projects/pciehp/sys/dev/fb/fbd.c projects/pciehp/sys/dev/fb/fbreg.h projects/pciehp/sys/dev/fb/vesa.c projects/pciehp/sys/dev/firewire/fwohci.c projects/pciehp/sys/dev/firewire/if_fwe.c projects/pciehp/sys/dev/firewire/if_fwip.c projects/pciehp/sys/dev/firewire/sbp.c projects/pciehp/sys/dev/fxp/if_fxp.c projects/pciehp/sys/dev/fxp/if_fxpvar.h projects/pciehp/sys/dev/fxp/inphy.c projects/pciehp/sys/dev/glxiic/glxiic.c projects/pciehp/sys/dev/gpio/gpioiic.c projects/pciehp/sys/dev/hatm/if_hatm_intr.c projects/pciehp/sys/dev/hifn/hifn7751.c projects/pciehp/sys/dev/hpt27xx/hpt27xx_os_bsd.c projects/pciehp/sys/dev/hpt27xx/hpt27xx_osm_bsd.c projects/pciehp/sys/dev/hpt27xx/os_bsd.h projects/pciehp/sys/dev/hptmv/entry.c projects/pciehp/sys/dev/hptmv/hptproc.c projects/pciehp/sys/dev/hptrr/hptrr_os_bsd.c projects/pciehp/sys/dev/hptrr/hptrr_osm_bsd.c projects/pciehp/sys/dev/hwpmc/hwpmc_core.c projects/pciehp/sys/dev/hwpmc/hwpmc_intel.c projects/pciehp/sys/dev/hwpmc/hwpmc_logging.c projects/pciehp/sys/dev/hwpmc/hwpmc_mod.c projects/pciehp/sys/dev/hwpmc/hwpmc_powerpc.c projects/pciehp/sys/dev/hwpmc/pmc_events.h projects/pciehp/sys/dev/i40e/i40e.h projects/pciehp/sys/dev/i40e/i40e_adminq.c projects/pciehp/sys/dev/i40e/i40e_adminq.h projects/pciehp/sys/dev/i40e/i40e_adminq_cmd.h projects/pciehp/sys/dev/i40e/i40e_common.c projects/pciehp/sys/dev/i40e/i40e_hmc.h projects/pciehp/sys/dev/i40e/i40e_lan_hmc.c projects/pciehp/sys/dev/i40e/i40e_lan_hmc.h projects/pciehp/sys/dev/i40e/i40e_nvm.c projects/pciehp/sys/dev/i40e/i40e_osdep.c projects/pciehp/sys/dev/i40e/i40e_prototype.h projects/pciehp/sys/dev/i40e/i40e_register.h projects/pciehp/sys/dev/i40e/i40e_register_x710_int.h projects/pciehp/sys/dev/i40e/i40e_txrx.c projects/pciehp/sys/dev/i40e/i40e_type.h projects/pciehp/sys/dev/i40e/if_i40e.c projects/pciehp/sys/dev/iicbus/iic.c projects/pciehp/sys/dev/isci/isci.h projects/pciehp/sys/dev/isci/isci_controller.c projects/pciehp/sys/dev/isci/isci_sysctl.c projects/pciehp/sys/dev/isci/isci_task_request.c projects/pciehp/sys/dev/isci/scil/scic_sds_stp_request.c projects/pciehp/sys/dev/iscsi/icl.c projects/pciehp/sys/dev/iscsi/iscsi.c projects/pciehp/sys/dev/iscsi/iscsi.h projects/pciehp/sys/dev/iscsi/iscsi_ioctl.h projects/pciehp/sys/dev/iscsi_initiator/isc_soc.c projects/pciehp/sys/dev/iscsi_initiator/iscsi.c projects/pciehp/sys/dev/isp/isp_freebsd.c projects/pciehp/sys/dev/isp/isp_pci.c projects/pciehp/sys/dev/iwn/if_iwn.c projects/pciehp/sys/dev/iwn/if_iwn_chip_cfg.h projects/pciehp/sys/dev/iwn/if_iwn_devid.h projects/pciehp/sys/dev/iwn/if_iwnvar.h projects/pciehp/sys/dev/ixgb/if_ixgb.c projects/pciehp/sys/dev/ixgbe/ixgbe.c projects/pciehp/sys/dev/ixgbe/ixv.c projects/pciehp/sys/dev/jme/if_jme.c projects/pciehp/sys/dev/lge/if_lge.c projects/pciehp/sys/dev/malo/if_malo.c projects/pciehp/sys/dev/malo/if_malo_pci.c projects/pciehp/sys/dev/malo/if_malohal.c projects/pciehp/sys/dev/md/md.c projects/pciehp/sys/dev/mfi/mfi.c projects/pciehp/sys/dev/mfi/mfi_cam.c projects/pciehp/sys/dev/mfi/mfi_disk.c projects/pciehp/sys/dev/mfi/mfi_pci.c projects/pciehp/sys/dev/mfi/mfi_syspd.c projects/pciehp/sys/dev/mfi/mfi_tbolt.c projects/pciehp/sys/dev/mfi/mfivar.h projects/pciehp/sys/dev/mge/if_mge.c projects/pciehp/sys/dev/mii/brgphy.c projects/pciehp/sys/dev/mii/e1000phy.c projects/pciehp/sys/dev/mii/ip1000phy.c projects/pciehp/sys/dev/mii/jmphy.c projects/pciehp/sys/dev/mii/mii.c projects/pciehp/sys/dev/mii/miivar.h projects/pciehp/sys/dev/mii/nsphy.c projects/pciehp/sys/dev/mii/rgephy.c projects/pciehp/sys/dev/mii/truephy.c projects/pciehp/sys/dev/mlx/mlx.c projects/pciehp/sys/dev/mmc/mmc.c projects/pciehp/sys/dev/mmc/mmcsd.c projects/pciehp/sys/dev/mmc/mmcvar.h projects/pciehp/sys/dev/mpr/mpr_sas.c projects/pciehp/sys/dev/mps/mps.c projects/pciehp/sys/dev/mps/mps_mapping.c projects/pciehp/sys/dev/mps/mps_sas.c projects/pciehp/sys/dev/mps/mps_sas.h projects/pciehp/sys/dev/mps/mps_sas_lsi.c projects/pciehp/sys/dev/mps/mps_user.c projects/pciehp/sys/dev/mps/mpsvar.h projects/pciehp/sys/dev/mpt/mpt_cam.c projects/pciehp/sys/dev/mrsas/mrsas_fp.c projects/pciehp/sys/dev/msk/if_msk.c projects/pciehp/sys/dev/mvs/mvs.c projects/pciehp/sys/dev/mwl/if_mwl.c projects/pciehp/sys/dev/mwl/mwlhal.c projects/pciehp/sys/dev/nand/nand.c projects/pciehp/sys/dev/netfpga10g/nf10bmac/if_nf10bmac.c projects/pciehp/sys/dev/netfpga10g/nf10bmac/if_nf10bmac_fdt.c projects/pciehp/sys/dev/netmap/netmap.c projects/pciehp/sys/dev/netmap/netmap_freebsd.c projects/pciehp/sys/dev/netmap/netmap_generic.c projects/pciehp/sys/dev/netmap/netmap_kern.h projects/pciehp/sys/dev/netmap/netmap_mbq.c projects/pciehp/sys/dev/netmap/netmap_mbq.h projects/pciehp/sys/dev/netmap/netmap_mem2.c projects/pciehp/sys/dev/netmap/netmap_pipe.c projects/pciehp/sys/dev/netmap/netmap_vale.c projects/pciehp/sys/dev/nfe/if_nfe.c projects/pciehp/sys/dev/nge/if_nge.c projects/pciehp/sys/dev/nvme/nvme_ctrlr_cmd.c projects/pciehp/sys/dev/nxge/xge-osdep.h projects/pciehp/sys/dev/oce/oce_hw.c projects/pciehp/sys/dev/oce/oce_hw.h projects/pciehp/sys/dev/oce/oce_if.c projects/pciehp/sys/dev/oce/oce_if.h projects/pciehp/sys/dev/oce/oce_mbox.c projects/pciehp/sys/dev/oce/oce_util.c projects/pciehp/sys/dev/pccard/pccard.c projects/pciehp/sys/dev/pccbb/pccbb.c projects/pciehp/sys/dev/pccbb/pccbb_isa.c projects/pciehp/sys/dev/pci/pci.c projects/pciehp/sys/dev/pci/pci_pci.c projects/pciehp/sys/dev/pci/pcireg.h projects/pciehp/sys/dev/pci/vga_pci.c projects/pciehp/sys/dev/puc/puc_pci.c projects/pciehp/sys/dev/qlxgb/qla_os.c projects/pciehp/sys/dev/qlxgbe/ql_os.c projects/pciehp/sys/dev/qlxge/qls_os.c projects/pciehp/sys/dev/random/ivy.c projects/pciehp/sys/dev/re/if_re.c projects/pciehp/sys/dev/rt/if_rt.c projects/pciehp/sys/dev/safe/safe.c projects/pciehp/sys/dev/sdhci/sdhci.c projects/pciehp/sys/dev/sdhci/sdhci_pci.c projects/pciehp/sys/dev/sf/if_sf.c projects/pciehp/sys/dev/sge/if_sge.c projects/pciehp/sys/dev/si/si.c projects/pciehp/sys/dev/sio/sio.c projects/pciehp/sys/dev/sis/if_sis.c projects/pciehp/sys/dev/sk/if_sk.c projects/pciehp/sys/dev/sound/pci/atiixp.c projects/pciehp/sys/dev/sound/pci/emu10k1.c projects/pciehp/sys/dev/sound/pci/emu10kx.c projects/pciehp/sys/dev/sound/pci/envy24.c projects/pciehp/sys/dev/sound/pci/envy24ht.c projects/pciehp/sys/dev/sound/pci/hda/hdaa_patches.c projects/pciehp/sys/dev/sound/pci/hda/hdac.c projects/pciehp/sys/dev/sound/pci/hda/hdac.h projects/pciehp/sys/dev/sound/pci/hdspe.c projects/pciehp/sys/dev/sound/pci/maestro.c projects/pciehp/sys/dev/sound/pci/via8233.c projects/pciehp/sys/dev/sound/pci/via82c686.c projects/pciehp/sys/dev/sound/pcm/buffer.c projects/pciehp/sys/dev/sound/pcm/channel.c projects/pciehp/sys/dev/sound/pcm/feeder_chain.c projects/pciehp/sys/dev/sound/pcm/feeder_eq.c projects/pciehp/sys/dev/sound/pcm/feeder_rate.c projects/pciehp/sys/dev/sound/pcm/mixer.c projects/pciehp/sys/dev/sound/pcm/pcm.h projects/pciehp/sys/dev/sound/pcm/sound.c projects/pciehp/sys/dev/sound/usb/uaudio.c projects/pciehp/sys/dev/ste/if_ste.c projects/pciehp/sys/dev/stge/if_stge.c projects/pciehp/sys/dev/sym/sym_hipd.c projects/pciehp/sys/dev/syscons/syscons.c projects/pciehp/sys/dev/syscons/sysmouse.c projects/pciehp/sys/dev/terasic/mtl/terasic_mtl.h projects/pciehp/sys/dev/ti/if_ti.c projects/pciehp/sys/dev/trm/trm.c projects/pciehp/sys/dev/tsec/if_tsec_fdt.c projects/pciehp/sys/dev/tws/tws.c projects/pciehp/sys/dev/tx/if_tx.c projects/pciehp/sys/dev/txp/if_txp.c projects/pciehp/sys/dev/uart/uart_bus_pci.c projects/pciehp/sys/dev/uart/uart_cpu_powerpc.c projects/pciehp/sys/dev/uart/uart_dev_ns8250.c projects/pciehp/sys/dev/ubsec/ubsec.c projects/pciehp/sys/dev/usb/controller/dwc_otg.c projects/pciehp/sys/dev/usb/controller/dwc_otg.h projects/pciehp/sys/dev/usb/controller/ehci.c projects/pciehp/sys/dev/usb/controller/musb_otg.c projects/pciehp/sys/dev/usb/controller/musb_otg.h projects/pciehp/sys/dev/usb/controller/ohci.c projects/pciehp/sys/dev/usb/controller/saf1761_otg.c projects/pciehp/sys/dev/usb/controller/saf1761_otg.h projects/pciehp/sys/dev/usb/controller/saf1761_otg_fdt.c projects/pciehp/sys/dev/usb/controller/saf1761_otg_reg.h projects/pciehp/sys/dev/usb/controller/uhci.c projects/pciehp/sys/dev/usb/controller/usb_controller.c projects/pciehp/sys/dev/usb/controller/xhci.c projects/pciehp/sys/dev/usb/controller/xhci.h projects/pciehp/sys/dev/usb/controller/xhci_pci.c projects/pciehp/sys/dev/usb/controller/xhcireg.h projects/pciehp/sys/dev/usb/input/uhid.c projects/pciehp/sys/dev/usb/input/ukbd.c projects/pciehp/sys/dev/usb/net/if_axge.c projects/pciehp/sys/dev/usb/net/if_axgereg.h projects/pciehp/sys/dev/usb/net/uhso.c projects/pciehp/sys/dev/usb/serial/u3g.c projects/pciehp/sys/dev/usb/serial/uftdi.c projects/pciehp/sys/dev/usb/serial/usb_serial.c projects/pciehp/sys/dev/usb/serial/usb_serial.h projects/pciehp/sys/dev/usb/storage/umass.c projects/pciehp/sys/dev/usb/usb_busdma.h projects/pciehp/sys/dev/usb/usb_debug.c projects/pciehp/sys/dev/usb/usb_dev.c projects/pciehp/sys/dev/usb/usb_device.c projects/pciehp/sys/dev/usb/usb_device.h projects/pciehp/sys/dev/usb/usb_freebsd.h projects/pciehp/sys/dev/usb/usb_freebsd_loader.h projects/pciehp/sys/dev/usb/usb_generic.c projects/pciehp/sys/dev/usb/usb_hub.c projects/pciehp/sys/dev/usb/usb_hub.h projects/pciehp/sys/dev/usb/usb_msctest.c projects/pciehp/sys/dev/usb/usb_msctest.h projects/pciehp/sys/dev/usb/usb_process.c projects/pciehp/sys/dev/usb/usbdevs projects/pciehp/sys/dev/usb/usbdi.h projects/pciehp/sys/dev/usb/wlan/if_rsu.c projects/pciehp/sys/dev/usb/wlan/if_rsureg.h projects/pciehp/sys/dev/usb/wlan/if_rum.c projects/pciehp/sys/dev/usb/wlan/if_run.c projects/pciehp/sys/dev/usb/wlan/if_uath.c projects/pciehp/sys/dev/usb/wlan/if_upgt.c projects/pciehp/sys/dev/usb/wlan/if_ural.c projects/pciehp/sys/dev/usb/wlan/if_urtw.c projects/pciehp/sys/dev/usb/wlan/if_urtwn.c projects/pciehp/sys/dev/usb/wlan/if_zyd.c projects/pciehp/sys/dev/usb/wlan/if_zydreg.h projects/pciehp/sys/dev/vge/if_vge.c projects/pciehp/sys/dev/virtio/balloon/virtio_balloon.c projects/pciehp/sys/dev/virtio/block/virtio_blk.c projects/pciehp/sys/dev/virtio/network/if_vtnet.c projects/pciehp/sys/dev/virtio/network/if_vtnetvar.h projects/pciehp/sys/dev/virtio/pci/virtio_pci.c projects/pciehp/sys/dev/virtio/pci/virtio_pci.h projects/pciehp/sys/dev/virtio/virtio.c projects/pciehp/sys/dev/virtio/virtio.h projects/pciehp/sys/dev/virtio/virtqueue.c projects/pciehp/sys/dev/virtio/virtqueue.h projects/pciehp/sys/dev/vmware/vmxnet3/if_vmx.c projects/pciehp/sys/dev/vmware/vmxnet3/if_vmxvar.h projects/pciehp/sys/dev/vr/if_vr.c projects/pciehp/sys/dev/vt/font/vt_font_default.c projects/pciehp/sys/dev/vt/hw/efifb/efifb.c projects/pciehp/sys/dev/vt/hw/fb/vt_fb.c projects/pciehp/sys/dev/vt/hw/fb/vt_fb.h projects/pciehp/sys/dev/vt/hw/ofwfb/ofwfb.c projects/pciehp/sys/dev/vt/vt.h projects/pciehp/sys/dev/vt/vt_buf.c projects/pciehp/sys/dev/vt/vt_consolectl.c projects/pciehp/sys/dev/vt/vt_core.c projects/pciehp/sys/dev/vt/vt_sysmouse.c projects/pciehp/sys/dev/vte/if_vte.c projects/pciehp/sys/dev/vxge/vxge-osdep.h projects/pciehp/sys/dev/wb/if_wb.c projects/pciehp/sys/dev/wpi/if_wpi.c projects/pciehp/sys/dev/xen/balloon/balloon.c projects/pciehp/sys/dev/xen/console/console.c projects/pciehp/sys/dev/xen/control/control.c projects/pciehp/sys/dev/xen/timer/timer.c projects/pciehp/sys/dev/xen/xenpci/xenpci.c projects/pciehp/sys/dev/xen/xenpci/xenpcivar.h projects/pciehp/sys/fs/cd9660/cd9660_lookup.c projects/pciehp/sys/fs/devfs/devfs_vnops.c projects/pciehp/sys/fs/ext2fs/ext2_vnops.c projects/pciehp/sys/fs/msdosfs/msdosfs_lookup.c projects/pciehp/sys/fs/msdosfs/msdosfs_vnops.c projects/pciehp/sys/fs/nandfs/nandfs.h projects/pciehp/sys/fs/nandfs/nandfs_vnops.c projects/pciehp/sys/fs/nfs/nfs.h projects/pciehp/sys/fs/nfs/nfs_commonkrpc.c projects/pciehp/sys/fs/nfs/nfs_commonport.c projects/pciehp/sys/fs/nfs/nfs_commonsubs.c projects/pciehp/sys/fs/nfs/nfs_var.h projects/pciehp/sys/fs/nfs/nfsclstate.h projects/pciehp/sys/fs/nfs/nfsdport.h projects/pciehp/sys/fs/nfs/nfsport.h projects/pciehp/sys/fs/nfs/nfsproto.h projects/pciehp/sys/fs/nfs/nfsrvcache.h projects/pciehp/sys/fs/nfs/nfsrvstate.h projects/pciehp/sys/fs/nfsclient/nfs_clstate.c projects/pciehp/sys/fs/nfsclient/nfs_clvnops.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdcache.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdkrpc.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdport.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdserv.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdsocket.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdstate.c projects/pciehp/sys/fs/nfsserver/nfs_nfsdsubs.c projects/pciehp/sys/fs/nullfs/null_vnops.c projects/pciehp/sys/fs/tmpfs/tmpfs.h projects/pciehp/sys/fs/tmpfs/tmpfs_fifoops.c projects/pciehp/sys/fs/tmpfs/tmpfs_fifoops.h projects/pciehp/sys/fs/tmpfs/tmpfs_subr.c projects/pciehp/sys/fs/tmpfs/tmpfs_vfsops.c projects/pciehp/sys/fs/tmpfs/tmpfs_vnops.c projects/pciehp/sys/fs/tmpfs/tmpfs_vnops.h projects/pciehp/sys/gdb/gdb_cons.c projects/pciehp/sys/geom/concat/g_concat.c projects/pciehp/sys/geom/eli/g_eli.c projects/pciehp/sys/geom/eli/g_eli_key_cache.c projects/pciehp/sys/geom/gate/g_gate.c projects/pciehp/sys/geom/geom_disk.c projects/pciehp/sys/geom/geom_event.c projects/pciehp/sys/geom/geom_kern.c projects/pciehp/sys/geom/geom_subr.c projects/pciehp/sys/geom/journal/g_journal.c projects/pciehp/sys/geom/label/g_label.c projects/pciehp/sys/geom/label/g_label.h projects/pciehp/sys/geom/linux_lvm/g_linux_lvm.c projects/pciehp/sys/geom/mirror/g_mirror.c projects/pciehp/sys/geom/part/g_part.c projects/pciehp/sys/geom/part/g_part.h projects/pciehp/sys/geom/part/g_part_apm.c projects/pciehp/sys/geom/part/g_part_bsd.c projects/pciehp/sys/geom/part/g_part_gpt.c projects/pciehp/sys/geom/part/g_part_ldm.c projects/pciehp/sys/geom/part/g_part_mbr.c projects/pciehp/sys/geom/part/g_part_pc98.c projects/pciehp/sys/geom/raid/g_raid.c projects/pciehp/sys/geom/raid/g_raid.h projects/pciehp/sys/geom/raid/tr_raid1.c projects/pciehp/sys/geom/raid/tr_raid1e.c projects/pciehp/sys/geom/raid3/g_raid3.c projects/pciehp/sys/geom/shsec/g_shsec.c projects/pciehp/sys/geom/stripe/g_stripe.c projects/pciehp/sys/geom/uzip/g_uzip.c projects/pciehp/sys/geom/vinum/geom_vinum.c projects/pciehp/sys/geom/virstor/g_virstor.c projects/pciehp/sys/i386/acpica/acpi_machdep.c projects/pciehp/sys/i386/bios/apm.c projects/pciehp/sys/i386/conf/GENERIC projects/pciehp/sys/i386/conf/NOTES projects/pciehp/sys/i386/conf/PAE projects/pciehp/sys/i386/conf/XEN projects/pciehp/sys/i386/i386/i686_mem.c projects/pciehp/sys/i386/i386/machdep.c projects/pciehp/sys/i386/i386/mp_machdep.c projects/pciehp/sys/i386/i386/mp_watchdog.c projects/pciehp/sys/i386/i386/pmap.c projects/pciehp/sys/i386/i386/sys_machdep.c projects/pciehp/sys/i386/i386/trap.c projects/pciehp/sys/i386/include/cpu.h projects/pciehp/sys/i386/include/npx.h projects/pciehp/sys/i386/isa/npx.c projects/pciehp/sys/i386/pci/pci_cfgreg.c projects/pciehp/sys/i386/pci/pci_pir.c projects/pciehp/sys/i386/xen/pmap.c projects/pciehp/sys/kern/imgact_elf.c projects/pciehp/sys/kern/kern_clocksource.c projects/pciehp/sys/kern/kern_cons.c projects/pciehp/sys/kern/kern_cpu.c projects/pciehp/sys/kern/kern_cpuset.c projects/pciehp/sys/kern/kern_descrip.c projects/pciehp/sys/kern/kern_dtrace.c projects/pciehp/sys/kern/kern_event.c projects/pciehp/sys/kern/kern_exec.c projects/pciehp/sys/kern/kern_exit.c projects/pciehp/sys/kern/kern_fork.c projects/pciehp/sys/kern/kern_intr.c projects/pciehp/sys/kern/kern_ktr.c projects/pciehp/sys/kern/kern_ktrace.c projects/pciehp/sys/kern/kern_linker.c projects/pciehp/sys/kern/kern_lockf.c projects/pciehp/sys/kern/kern_malloc.c projects/pciehp/sys/kern/kern_mbuf.c projects/pciehp/sys/kern/kern_mib.c projects/pciehp/sys/kern/kern_ntptime.c projects/pciehp/sys/kern/kern_osd.c projects/pciehp/sys/kern/kern_pmc.c projects/pciehp/sys/kern/kern_poll.c projects/pciehp/sys/kern/kern_priv.c projects/pciehp/sys/kern/kern_proc.c projects/pciehp/sys/kern/kern_shutdown.c projects/pciehp/sys/kern/kern_sig.c projects/pciehp/sys/kern/kern_sysctl.c projects/pciehp/sys/kern/kern_tc.c projects/pciehp/sys/kern/kern_thread.c projects/pciehp/sys/kern/kern_timeout.c projects/pciehp/sys/kern/link_elf.c projects/pciehp/sys/kern/sched_ule.c projects/pciehp/sys/kern/subr_bus.c projects/pciehp/sys/kern/subr_capability.c projects/pciehp/sys/kern/subr_kdb.c projects/pciehp/sys/kern/subr_mbpool.c projects/pciehp/sys/kern/subr_msgbuf.c projects/pciehp/sys/kern/subr_param.c projects/pciehp/sys/kern/subr_prf.c projects/pciehp/sys/kern/subr_rman.c projects/pciehp/sys/kern/subr_sleepqueue.c projects/pciehp/sys/kern/subr_smp.c projects/pciehp/sys/kern/subr_taskqueue.c projects/pciehp/sys/kern/subr_terminal.c projects/pciehp/sys/kern/subr_witness.c projects/pciehp/sys/kern/sys_capability.c projects/pciehp/sys/kern/sys_generic.c projects/pciehp/sys/kern/sys_pipe.c projects/pciehp/sys/kern/sysv_msg.c projects/pciehp/sys/kern/sysv_sem.c projects/pciehp/sys/kern/sysv_shm.c projects/pciehp/sys/kern/tty.c projects/pciehp/sys/kern/uipc_accf.c projects/pciehp/sys/kern/uipc_mbuf.c projects/pciehp/sys/kern/uipc_shm.c projects/pciehp/sys/kern/uipc_sockbuf.c projects/pciehp/sys/kern/uipc_socket.c projects/pciehp/sys/kern/uipc_syscalls.c projects/pciehp/sys/kern/uipc_usrreq.c projects/pciehp/sys/kern/vfs_bio.c projects/pciehp/sys/kern/vfs_init.c projects/pciehp/sys/kern/vfs_lookup.c projects/pciehp/sys/kern/vfs_mountroot.c projects/pciehp/sys/kern/vfs_subr.c projects/pciehp/sys/kern/vfs_syscalls.c projects/pciehp/sys/kern/vfs_vnops.c projects/pciehp/sys/libkern/iconv.c projects/pciehp/sys/libkern/iconv_ucs.c projects/pciehp/sys/mips/atheros/if_arge.c projects/pciehp/sys/mips/atheros/uart_dev_ar933x.c projects/pciehp/sys/mips/cavium/usb/octusb.c projects/pciehp/sys/mips/conf/AP93.hints projects/pciehp/sys/mips/conf/AR933X_BASE projects/pciehp/sys/mips/conf/BERI_DE4_BASE projects/pciehp/sys/mips/conf/BERI_NETFPGA_MDROOT projects/pciehp/sys/mips/idt/if_kr.c projects/pciehp/sys/mips/include/elf.h projects/pciehp/sys/mips/mips/dump_machdep.c projects/pciehp/sys/mips/mips/pmap.c projects/pciehp/sys/mips/mips/trap.c projects/pciehp/sys/mips/rmi/rootfs_list.txt projects/pciehp/sys/mips/rt305x/uart_dev_rt305x.c projects/pciehp/sys/modules/Makefile projects/pciehp/sys/modules/acpi/acpi/Makefile projects/pciehp/sys/modules/agp/Makefile projects/pciehp/sys/modules/aic7xxx/ahd/Makefile projects/pciehp/sys/modules/bios/smapi/Makefile projects/pciehp/sys/modules/bxe/Makefile projects/pciehp/sys/modules/ctl/Makefile projects/pciehp/sys/modules/cxgbe/if_cxgbe/Makefile projects/pciehp/sys/modules/cxgbe/t4_firmware/Makefile projects/pciehp/sys/modules/cxgbe/t5_firmware/Makefile projects/pciehp/sys/modules/dtrace/dtrace/Makefile projects/pciehp/sys/modules/dtrace/fasttrap/Makefile projects/pciehp/sys/modules/geom/Makefile projects/pciehp/sys/modules/geom/geom_part/Makefile projects/pciehp/sys/modules/hwpmc/Makefile projects/pciehp/sys/modules/i2c/controllers/Makefile projects/pciehp/sys/modules/i40e/Makefile projects/pciehp/sys/modules/krpc/Makefile projects/pciehp/sys/modules/netfpga10g/nf10bmac/Makefile projects/pciehp/sys/modules/ppc/Makefile projects/pciehp/sys/modules/sound/driver/maestro/Makefile projects/pciehp/sys/modules/sound/sound/Makefile projects/pciehp/sys/modules/svr4/README projects/pciehp/sys/modules/ufs/Makefile projects/pciehp/sys/modules/usb/Makefile projects/pciehp/sys/modules/zfs/Makefile projects/pciehp/sys/net/bpf.c projects/pciehp/sys/net/bpf_zerocopy.c projects/pciehp/sys/net/ieee8023ad_lacp.c projects/pciehp/sys/net/ieee_oui.h projects/pciehp/sys/net/if.c projects/pciehp/sys/net/if.h projects/pciehp/sys/net/if_bridge.c projects/pciehp/sys/net/if_lagg.c projects/pciehp/sys/net/if_media.h projects/pciehp/sys/net/if_spppsubr.c projects/pciehp/sys/net/if_stf.c projects/pciehp/sys/net/if_tap.c projects/pciehp/sys/net/if_tun.c projects/pciehp/sys/net/if_var.h projects/pciehp/sys/net/ifq.h projects/pciehp/sys/net/netisr.c projects/pciehp/sys/net/netmap.h projects/pciehp/sys/net/netmap_user.h projects/pciehp/sys/net/route.c projects/pciehp/sys/net/rtsock.c projects/pciehp/sys/netgraph/bluetooth/socket/ng_btsocket_hci_raw.c projects/pciehp/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap.c projects/pciehp/sys/netgraph/bluetooth/socket/ng_btsocket_l2cap_raw.c projects/pciehp/sys/netgraph/bluetooth/socket/ng_btsocket_rfcomm.c projects/pciehp/sys/netgraph/bluetooth/socket/ng_btsocket_sco.c projects/pciehp/sys/netgraph/ng_base.c projects/pciehp/sys/netgraph/ng_eiface.c projects/pciehp/sys/netgraph/ng_mppc.c projects/pciehp/sys/netgraph/ng_pipe.c projects/pciehp/sys/netgraph/ng_socket.c projects/pciehp/sys/netinet/in.c projects/pciehp/sys/netinet/in.h projects/pciehp/sys/netinet/in_gif.c projects/pciehp/sys/netinet/in_mcast.c projects/pciehp/sys/netinet/in_pcb.c projects/pciehp/sys/netinet/in_pcb.h projects/pciehp/sys/netinet/in_pcbgroup.c projects/pciehp/sys/netinet/in_proto.c projects/pciehp/sys/netinet/in_rss.c projects/pciehp/sys/netinet/in_rss.h projects/pciehp/sys/netinet/ip_dummynet.h projects/pciehp/sys/netinet/ip_options.c projects/pciehp/sys/netinet/ip_output.c projects/pciehp/sys/netinet/sctp_asconf.c projects/pciehp/sys/netinet/sctp_auth.c projects/pciehp/sys/netinet/sctp_indata.c projects/pciehp/sys/netinet/sctp_input.c projects/pciehp/sys/netinet/sctp_os_bsd.h projects/pciehp/sys/netinet/sctp_output.c projects/pciehp/sys/netinet/sctp_pcb.c projects/pciehp/sys/netinet/sctp_sysctl.c projects/pciehp/sys/netinet/sctp_timer.c projects/pciehp/sys/netinet/sctp_uio.h projects/pciehp/sys/netinet/sctp_usrreq.c projects/pciehp/sys/netinet/sctp_var.h projects/pciehp/sys/netinet/sctputil.c projects/pciehp/sys/netinet/sctputil.h projects/pciehp/sys/netinet/tcp_input.c projects/pciehp/sys/netinet/tcp_output.c projects/pciehp/sys/netinet/tcp_subr.c projects/pciehp/sys/netinet/tcp_syncache.c projects/pciehp/sys/netinet/tcp_timer.c projects/pciehp/sys/netinet/tcp_timewait.c projects/pciehp/sys/netinet/tcp_var.h projects/pciehp/sys/netinet/udp_var.h projects/pciehp/sys/netinet6/in6.c projects/pciehp/sys/netinet6/in6.h projects/pciehp/sys/netinet6/in6_gif.c projects/pciehp/sys/netinet6/in6_mcast.c projects/pciehp/sys/netinet6/in6_pcb.c projects/pciehp/sys/netinet6/in6_pcbgroup.c projects/pciehp/sys/netinet6/in6_src.c projects/pciehp/sys/netinet6/ip6_forward.c projects/pciehp/sys/netinet6/ip6_ipsec.c projects/pciehp/sys/netinet6/ip6_ipsec.h projects/pciehp/sys/netinet6/ip6_output.c projects/pciehp/sys/netinet6/ip6_var.h projects/pciehp/sys/netinet6/ip6protosw.h projects/pciehp/sys/netinet6/mld6.c projects/pciehp/sys/netinet6/nd6.c projects/pciehp/sys/netinet6/nd6_nbr.c projects/pciehp/sys/netipsec/ipsec6.h projects/pciehp/sys/netipsec/ipsec_input.c projects/pciehp/sys/netipsec/ipsec_output.c projects/pciehp/sys/netipsec/key.c projects/pciehp/sys/netipsec/key_debug.c projects/pciehp/sys/netipsec/xform_ipip.c projects/pciehp/sys/netpfil/ipfw/ip_dn_io.c projects/pciehp/sys/netpfil/ipfw/ip_dummynet.c projects/pciehp/sys/netpfil/ipfw/ip_fw2.c projects/pciehp/sys/netpfil/pf/if_pfsync.c projects/pciehp/sys/netpfil/pf/pf.c projects/pciehp/sys/nfs/nfs_fha.c projects/pciehp/sys/nfsserver/nfs_serv.c projects/pciehp/sys/ofed/drivers/infiniband/hw/mlx4/main.c projects/pciehp/sys/ofed/drivers/infiniband/hw/mlx4/mcg.c projects/pciehp/sys/ofed/drivers/infiniband/hw/mlx4/qp.c projects/pciehp/sys/ofed/drivers/infiniband/ulp/sdp/sdp_main.c projects/pciehp/sys/ofed/drivers/net/mlx4/en_main.c projects/pciehp/sys/ofed/drivers/net/mlx4/en_netdev.c projects/pciehp/sys/ofed/drivers/net/mlx4/main.c projects/pciehp/sys/ofed/include/linux/bitops.h projects/pciehp/sys/ofed/include/linux/linux_compat.c projects/pciehp/sys/ofed/include/linux/module.h projects/pciehp/sys/pc98/cbus/sio.c projects/pciehp/sys/pc98/pc98/canbus.c projects/pciehp/sys/pc98/pc98/machdep.c projects/pciehp/sys/pc98/pc98/pc98_machdep.c projects/pciehp/sys/pci/if_rl.c projects/pciehp/sys/powerpc/aim/mmu_oea.c projects/pciehp/sys/powerpc/aim/mmu_oea64.c projects/pciehp/sys/powerpc/aim/trap.c projects/pciehp/sys/powerpc/booke/pmap.c projects/pciehp/sys/powerpc/include/endian.h projects/pciehp/sys/powerpc/include/spr.h projects/pciehp/sys/powerpc/powerpc/cpu.c projects/pciehp/sys/powerpc/powerpc/dump_machdep.c projects/pciehp/sys/powerpc/powerpc/elf32_machdep.c projects/pciehp/sys/powerpc/powerpc/mem.c projects/pciehp/sys/powerpc/powerpc/mmu_if.m projects/pciehp/sys/powerpc/powerpc/pmap_dispatch.c projects/pciehp/sys/powerpc/powerpc/sigcode32.S projects/pciehp/sys/powerpc/powerpc/sigcode64.S projects/pciehp/sys/powerpc/ps3/platform_ps3.c projects/pciehp/sys/powerpc/ps3/ps3_syscons.c projects/pciehp/sys/rpc/krpc.h projects/pciehp/sys/rpc/svc.c projects/pciehp/sys/rpc/svc.h projects/pciehp/sys/rpc/svc_generic.c projects/pciehp/sys/rpc/svc_vc.c projects/pciehp/sys/security/mac_biba/mac_biba.c projects/pciehp/sys/security/mac_bsdextended/mac_bsdextended.c projects/pciehp/sys/security/mac_ifoff/mac_ifoff.c projects/pciehp/sys/security/mac_lomac/mac_lomac.c projects/pciehp/sys/security/mac_mls/mac_mls.c projects/pciehp/sys/security/mac_portacl/mac_portacl.c projects/pciehp/sys/sparc64/conf/GENERIC projects/pciehp/sys/sparc64/pci/psycho.c projects/pciehp/sys/sparc64/sparc64/dump_machdep.c projects/pciehp/sys/sparc64/sparc64/pmap.c projects/pciehp/sys/sys/buf.h projects/pciehp/sys/sys/bus.h projects/pciehp/sys/sys/capsicum.h projects/pciehp/sys/sys/cdefs.h projects/pciehp/sys/sys/conf.h projects/pciehp/sys/sys/cons.h projects/pciehp/sys/sys/cpuctl.h projects/pciehp/sys/sys/cpuset.h projects/pciehp/sys/sys/disklabel.h projects/pciehp/sys/sys/dtrace_bsd.h projects/pciehp/sys/sys/efi.h projects/pciehp/sys/sys/elf_common.h projects/pciehp/sys/sys/event.h projects/pciehp/sys/sys/fbio.h projects/pciehp/sys/sys/filedesc.h projects/pciehp/sys/sys/fnv_hash.h projects/pciehp/sys/sys/gpt.h projects/pciehp/sys/sys/kerneldump.h projects/pciehp/sys/sys/link_elf.h projects/pciehp/sys/sys/linker_set.h projects/pciehp/sys/sys/malloc.h projects/pciehp/sys/sys/mbpool.h projects/pciehp/sys/sys/mbuf.h projects/pciehp/sys/sys/mman.h projects/pciehp/sys/sys/param.h projects/pciehp/sys/sys/pmc.h projects/pciehp/sys/sys/proc.h projects/pciehp/sys/sys/procdesc.h projects/pciehp/sys/sys/rman.h projects/pciehp/sys/sys/sdt.h projects/pciehp/sys/sys/sf_buf.h projects/pciehp/sys/sys/signalvar.h projects/pciehp/sys/sys/sysctl.h projects/pciehp/sys/sys/sysent.h projects/pciehp/sys/sys/taskqueue.h projects/pciehp/sys/sys/terminal.h projects/pciehp/sys/sys/time.h projects/pciehp/sys/sys/vnode.h projects/pciehp/sys/tools/fdt/make_dtb.sh projects/pciehp/sys/ufs/ffs/ffs_rawread.c projects/pciehp/sys/ufs/ffs/ffs_vfsops.c projects/pciehp/sys/ufs/ufs/ufs_vnops.c projects/pciehp/sys/vm/memguard.c projects/pciehp/sys/vm/pmap.h projects/pciehp/sys/vm/redzone.c projects/pciehp/sys/vm/uma_core.c projects/pciehp/sys/vm/vm_extern.h projects/pciehp/sys/vm/vm_fault.c projects/pciehp/sys/vm/vm_glue.c projects/pciehp/sys/vm/vm_init.c projects/pciehp/sys/vm/vm_kern.c projects/pciehp/sys/vm/vm_map.c projects/pciehp/sys/vm/vm_map.h projects/pciehp/sys/vm/vm_mmap.c projects/pciehp/sys/vm/vm_object.c projects/pciehp/sys/vm/vm_object.h projects/pciehp/sys/vm/vm_page.c projects/pciehp/sys/vm/vm_page.h projects/pciehp/sys/vm/vm_pageout.c projects/pciehp/sys/vm/vm_phys.c projects/pciehp/sys/vm/vm_radix.c projects/pciehp/sys/vm/vm_reserv.c projects/pciehp/sys/vm/vm_unix.c projects/pciehp/sys/vm/vm_zeroidle.c projects/pciehp/sys/x86/acpica/madt.c projects/pciehp/sys/x86/cpufreq/hwpstate.c projects/pciehp/sys/x86/include/apicvar.h projects/pciehp/sys/x86/include/segments.h projects/pciehp/sys/x86/include/specialreg.h projects/pciehp/sys/x86/iommu/intel_drv.c projects/pciehp/sys/x86/iommu/intel_utils.c projects/pciehp/sys/x86/isa/isa.c projects/pciehp/sys/x86/pci/pci_bus.c projects/pciehp/sys/x86/x86/busdma_bounce.c projects/pciehp/sys/x86/x86/dump_machdep.c projects/pciehp/sys/x86/x86/io_apic.c projects/pciehp/sys/x86/x86/local_apic.c projects/pciehp/sys/x86/x86/mca.c projects/pciehp/sys/x86/x86/tsc.c projects/pciehp/sys/x86/xen/hvm.c projects/pciehp/sys/x86/xen/pv.c projects/pciehp/sys/xen/gnttab.c projects/pciehp/sys/xen/gnttab.h projects/pciehp/sys/xen/xenstore/xenstore.c projects/pciehp/tests/sys/netinet/fibs_test.sh projects/pciehp/tests/sys/netinet/udp_dontroute.c projects/pciehp/tools/bsdbox/Makefile projects/pciehp/tools/build/mk/OptionalObsoleteFiles.inc projects/pciehp/tools/build/options/WITHOUT_DOCCOMPRESS projects/pciehp/tools/build/options/WITHOUT_GNU_GREP_COMPAT projects/pciehp/tools/build/options/WITHOUT_MANCOMPRESS projects/pciehp/tools/build/options/WITH_FMAKE projects/pciehp/tools/regression/README projects/pciehp/tools/regression/file/flock/flock.c projects/pciehp/tools/regression/filemon/Makefile projects/pciehp/tools/regression/lib/libc/stdio/test-fmemopen.c projects/pciehp/tools/regression/net80211/ccmp/test_ccmp.c projects/pciehp/tools/regression/net80211/wep/test_wep.c projects/pciehp/tools/test/dtrace/Makefile projects/pciehp/tools/test/netfibs/reflect.c projects/pciehp/tools/tools/README projects/pciehp/tools/tools/cxgbetool/cxgbetool.c projects/pciehp/tools/tools/ether_reflect/ether_reflect.1 projects/pciehp/tools/tools/fixwhite/fixwhite.1 projects/pciehp/tools/tools/mcgrab/mcgrab.1 projects/pciehp/tools/tools/mctest/mctest.1 projects/pciehp/tools/tools/nanobsd/dhcpd/README projects/pciehp/tools/tools/nanobsd/nanobsd.sh projects/pciehp/tools/tools/nanobsd/rescue/build.sh projects/pciehp/tools/tools/nanobsd/rescue/common projects/pciehp/tools/tools/nanobsd/rescue/merge.sh projects/pciehp/tools/tools/nanobsd/rescue/rescue_amd64.conf projects/pciehp/tools/tools/nanobsd/rescue/rescue_i386.conf projects/pciehp/tools/tools/net80211/stumbler/Makefile projects/pciehp/tools/tools/sysbuild/README projects/pciehp/tools/tools/sysdoc/sysdoc.sh projects/pciehp/tools/tools/vimage/vimage.8 projects/pciehp/tools/tools/vt/fontcvt/terminus.sh projects/pciehp/tools/tools/vt/mkkfont/mkkfont.c projects/pciehp/usr.bin/Makefile projects/pciehp/usr.bin/ar/ar.1 projects/pciehp/usr.bin/at/at.man projects/pciehp/usr.bin/bluetooth/bthost/bthost.1 projects/pciehp/usr.bin/bluetooth/btsockstat/btsockstat.1 projects/pciehp/usr.bin/bluetooth/rfcomm_sppd/rfcomm_sppd.1 projects/pciehp/usr.bin/bmake/Makefile projects/pciehp/usr.bin/bmake/config.h projects/pciehp/usr.bin/brandelf/brandelf.1 projects/pciehp/usr.bin/bsdiff/bsdiff/bsdiff.1 projects/pciehp/usr.bin/bsdiff/bspatch/bspatch.1 projects/pciehp/usr.bin/calendar/Makefile projects/pciehp/usr.bin/calendar/calendars/calendar.freebsd projects/pciehp/usr.bin/calendar/calendars/calendar.holiday projects/pciehp/usr.bin/clang/clang-tblgen/Makefile projects/pciehp/usr.bin/clang/clang.prog.mk projects/pciehp/usr.bin/clang/tblgen/Makefile projects/pciehp/usr.bin/compile_et/Makefile projects/pciehp/usr.bin/cpuset/cpuset.1 projects/pciehp/usr.bin/ctlstat/ctlstat.8 projects/pciehp/usr.bin/dtc/dtc.cc projects/pciehp/usr.bin/dtc/fdt.cc projects/pciehp/usr.bin/dtc/input_buffer.cc projects/pciehp/usr.bin/ee/Makefile projects/pciehp/usr.bin/elf2aout/elf2aout.1 projects/pciehp/usr.bin/elfdump/elfdump.1 projects/pciehp/usr.bin/elfdump/elfdump.c projects/pciehp/usr.bin/fetch/fetch.1 projects/pciehp/usr.bin/file/Makefile projects/pciehp/usr.bin/fstat/fuser.1 projects/pciehp/usr.bin/ftp/Makefile projects/pciehp/usr.bin/gcore/Makefile projects/pciehp/usr.bin/gcore/elfcore.c projects/pciehp/usr.bin/getconf/getconf.1 projects/pciehp/usr.bin/gprof/gprof.h projects/pciehp/usr.bin/grep/grep.c projects/pciehp/usr.bin/grep/queue.c projects/pciehp/usr.bin/grep/util.c projects/pciehp/usr.bin/gzip/gzip.1 projects/pciehp/usr.bin/gzip/zuncompress.c projects/pciehp/usr.bin/iconv/iconv.c projects/pciehp/usr.bin/ipcs/ipcs.1 projects/pciehp/usr.bin/iscsictl/iscsictl.8 projects/pciehp/usr.bin/iscsictl/iscsictl.c projects/pciehp/usr.bin/ktrdump/ktrdump.8 projects/pciehp/usr.bin/ldd/ldd.1 projects/pciehp/usr.bin/less/Makefile projects/pciehp/usr.bin/lockf/lockf.1 projects/pciehp/usr.bin/logins/logins.1 projects/pciehp/usr.bin/look/look.1 projects/pciehp/usr.bin/look/look.c projects/pciehp/usr.bin/m4/Makefile projects/pciehp/usr.bin/m4/eval.c projects/pciehp/usr.bin/m4/extern.h projects/pciehp/usr.bin/m4/gnum4.c projects/pciehp/usr.bin/m4/lib/ohash.h projects/pciehp/usr.bin/m4/lib/ohash_init.3 projects/pciehp/usr.bin/m4/lib/ohash_interval.3 projects/pciehp/usr.bin/m4/look.c projects/pciehp/usr.bin/m4/m4.1 projects/pciehp/usr.bin/m4/main.c projects/pciehp/usr.bin/m4/misc.c projects/pciehp/usr.bin/make/Makefile projects/pciehp/usr.bin/mandoc/Makefile projects/pciehp/usr.bin/mkcsmapper/mkcsmapper.1 projects/pciehp/usr.bin/mkesdb/mkesdb.1 projects/pciehp/usr.bin/mkimg/Makefile projects/pciehp/usr.bin/mkimg/apm.c projects/pciehp/usr.bin/mkimg/bsd.c projects/pciehp/usr.bin/mkimg/gpt.c projects/pciehp/usr.bin/mkimg/image.c projects/pciehp/usr.bin/mkimg/image.h projects/pciehp/usr.bin/mkimg/mkimg.1 projects/pciehp/usr.bin/mkimg/mkimg.c projects/pciehp/usr.bin/mkimg/mkimg.h projects/pciehp/usr.bin/mkimg/raw.c projects/pciehp/usr.bin/mkimg/scheme.c projects/pciehp/usr.bin/mkimg/vmdk.c projects/pciehp/usr.bin/mkimg/vtoc8.c projects/pciehp/usr.bin/mkulzma/mkulzma.8 projects/pciehp/usr.bin/mkuzip/mkuzip.8 projects/pciehp/usr.bin/msgs/Makefile projects/pciehp/usr.bin/ncal/Makefile projects/pciehp/usr.bin/ncal/ncal.1 projects/pciehp/usr.bin/netstat/inet.c projects/pciehp/usr.bin/netstat/main.c projects/pciehp/usr.bin/netstat/netstat.1 projects/pciehp/usr.bin/netstat/netstat.h projects/pciehp/usr.bin/netstat/route.c projects/pciehp/usr.bin/patch/patch.1 projects/pciehp/usr.bin/patch/patch.c projects/pciehp/usr.bin/patch/pch.c projects/pciehp/usr.bin/patch/pch.h projects/pciehp/usr.bin/printf/printf.c projects/pciehp/usr.bin/printf/tests/Makefile projects/pciehp/usr.bin/printf/tests/regress.m2.out projects/pciehp/usr.bin/printf/tests/regress.sh projects/pciehp/usr.bin/procstat/procstat.1 projects/pciehp/usr.bin/procstat/procstat_files.c projects/pciehp/usr.bin/procstat/procstat_vm.c projects/pciehp/usr.bin/rctl/rctl.8 projects/pciehp/usr.bin/revoke/revoke.1 projects/pciehp/usr.bin/rpcgen/rpc_main.c projects/pciehp/usr.bin/rpcgen/rpc_sample.c projects/pciehp/usr.bin/sed/main.c projects/pciehp/usr.bin/sed/process.c projects/pciehp/usr.bin/sed/sed.1 projects/pciehp/usr.bin/showmount/showmount.8 projects/pciehp/usr.bin/sockstat/sockstat.1 projects/pciehp/usr.bin/sort/sort.1.in projects/pciehp/usr.bin/ssh-copy-id/ssh-copy-id.1 projects/pciehp/usr.bin/stat/stat.1 projects/pciehp/usr.bin/svn/lib/libapr/Makefile projects/pciehp/usr.bin/svn/lib/libapr/apr.h projects/pciehp/usr.bin/svn/lib/libapr/apr_private.h projects/pciehp/usr.bin/svn/svn/Makefile projects/pciehp/usr.bin/svn/svn_private_config.h projects/pciehp/usr.bin/svn/svnadmin/Makefile projects/pciehp/usr.bin/svn/svndumpfilter/Makefile projects/pciehp/usr.bin/svn/svnlook/Makefile projects/pciehp/usr.bin/svn/svnmucc/Makefile projects/pciehp/usr.bin/svn/svnrdump/Makefile projects/pciehp/usr.bin/svn/svnserve/Makefile projects/pciehp/usr.bin/svn/svnsync/Makefile projects/pciehp/usr.bin/svn/svnversion/Makefile projects/pciehp/usr.bin/systat/systat.1 projects/pciehp/usr.bin/tabs/Makefile projects/pciehp/usr.bin/telnet/Makefile projects/pciehp/usr.bin/tftp/Makefile projects/pciehp/usr.bin/top/machine.c projects/pciehp/usr.bin/tput/Makefile projects/pciehp/usr.bin/truncate/Makefile projects/pciehp/usr.bin/truncate/truncate.1 projects/pciehp/usr.bin/truncate/truncate.c projects/pciehp/usr.bin/truss/extern.h projects/pciehp/usr.bin/truss/main.c projects/pciehp/usr.bin/tset/Makefile projects/pciehp/usr.bin/ul/Makefile projects/pciehp/usr.bin/unifdef/unifdef.1 projects/pciehp/usr.bin/units/Makefile projects/pciehp/usr.bin/units/units.1 projects/pciehp/usr.bin/units/units.c projects/pciehp/usr.bin/units/units.lib projects/pciehp/usr.bin/unzip/unzip.1 projects/pciehp/usr.bin/users/Makefile (contents, props changed) projects/pciehp/usr.bin/vacation/Makefile projects/pciehp/usr.bin/vi/Makefile projects/pciehp/usr.bin/vmstat/vmstat.c projects/pciehp/usr.bin/which/which.1 projects/pciehp/usr.bin/whois/whois.c projects/pciehp/usr.bin/xlint/lint1/param.h projects/pciehp/usr.bin/yacc/tests/Makefile projects/pciehp/usr.bin/yes/yes.1 projects/pciehp/usr.bin/ypcat/ypcat.1 projects/pciehp/usr.bin/ypmatch/ypmatch.1 projects/pciehp/usr.sbin/acpi/acpiconf/acpiconf.8 projects/pciehp/usr.sbin/acpi/acpidb/acpidb.8 projects/pciehp/usr.sbin/acpi/acpidump/acpidump.8 projects/pciehp/usr.sbin/adduser/adduser.8 projects/pciehp/usr.sbin/adduser/adduser.conf.5 projects/pciehp/usr.sbin/amd/amd/Makefile projects/pciehp/usr.sbin/amd/amq/Makefile projects/pciehp/usr.sbin/amd/fixmount/Makefile projects/pciehp/usr.sbin/amd/fsinfo/Makefile projects/pciehp/usr.sbin/amd/hlfsd/Makefile projects/pciehp/usr.sbin/amd/mk-amd-map/Makefile projects/pciehp/usr.sbin/amd/pawd/Makefile projects/pciehp/usr.sbin/amd/wire-test/Makefile projects/pciehp/usr.sbin/ancontrol/ancontrol.8 projects/pciehp/usr.sbin/apm/apm.8 projects/pciehp/usr.sbin/apmd/apmd.8 projects/pciehp/usr.sbin/asf/asf.8 projects/pciehp/usr.sbin/bhyve/Makefile projects/pciehp/usr.sbin/bhyve/atkbdc.c projects/pciehp/usr.sbin/bhyve/bhyve.8 projects/pciehp/usr.sbin/bhyve/bhyverun.c projects/pciehp/usr.sbin/bhyve/bhyverun.h projects/pciehp/usr.sbin/bhyve/block_if.c projects/pciehp/usr.sbin/bhyve/block_if.h projects/pciehp/usr.sbin/bhyve/inout.c projects/pciehp/usr.sbin/bhyve/inout.h projects/pciehp/usr.sbin/bhyve/mem.c projects/pciehp/usr.sbin/bhyve/mem.h projects/pciehp/usr.sbin/bhyve/pci_ahci.c projects/pciehp/usr.sbin/bhyve/pci_emul.c projects/pciehp/usr.sbin/bhyve/pci_lpc.c projects/pciehp/usr.sbin/bhyve/pci_virtio_block.c projects/pciehp/usr.sbin/bhyve/pm.c projects/pciehp/usr.sbin/bhyve/rtc.c projects/pciehp/usr.sbin/bhyve/smbiostbl.c projects/pciehp/usr.sbin/bhyve/virtio.c projects/pciehp/usr.sbin/bhyve/virtio.h projects/pciehp/usr.sbin/bhyvectl/bhyvectl.c projects/pciehp/usr.sbin/bhyveload/bhyveload.8 projects/pciehp/usr.sbin/bhyveload/bhyveload.c projects/pciehp/usr.sbin/binmiscctl/binmiscctl.8 projects/pciehp/usr.sbin/bluetooth/ath3kfw/ath3kfw.8 projects/pciehp/usr.sbin/bluetooth/bcmfw/bcmfw.8 projects/pciehp/usr.sbin/bluetooth/bt3cfw/bt3cfw.8 projects/pciehp/usr.sbin/bluetooth/bthidcontrol/bthidcontrol.8 projects/pciehp/usr.sbin/bluetooth/bthidd/bthidd.8 projects/pciehp/usr.sbin/bluetooth/hccontrol/hccontrol.8 projects/pciehp/usr.sbin/bluetooth/hcsecd/hcsecd.8 projects/pciehp/usr.sbin/bluetooth/hcsecd/hcsecd.conf.5 projects/pciehp/usr.sbin/bluetooth/hcseriald/hcseriald.8 projects/pciehp/usr.sbin/bluetooth/l2control/l2control.8 projects/pciehp/usr.sbin/bluetooth/l2ping/l2ping.8 projects/pciehp/usr.sbin/bluetooth/rfcomm_pppd/rfcomm_pppd.8 projects/pciehp/usr.sbin/bluetooth/sdpcontrol/sdpcontrol.8 projects/pciehp/usr.sbin/bluetooth/sdpd/sdpd.8 projects/pciehp/usr.sbin/boot0cfg/boot0cfg.8 projects/pciehp/usr.sbin/bootparamd/bootparamd/bootparamd.8 projects/pciehp/usr.sbin/bsdconfig/bsdconfig.8 projects/pciehp/usr.sbin/bsdconfig/dot/dot projects/pciehp/usr.sbin/bsdconfig/dot/include/messages.subr projects/pciehp/usr.sbin/bsdconfig/examples/Makefile projects/pciehp/usr.sbin/bsdconfig/examples/browse_packages_http.sh projects/pciehp/usr.sbin/bsdconfig/include/messages.subr projects/pciehp/usr.sbin/bsdconfig/share/common.subr projects/pciehp/usr.sbin/bsdconfig/share/dialog.subr projects/pciehp/usr.sbin/bsdconfig/share/media/http.subr projects/pciehp/usr.sbin/bsdconfig/share/media/httpproxy.subr projects/pciehp/usr.sbin/bsdconfig/share/packages/Makefile projects/pciehp/usr.sbin/bsdconfig/share/packages/index.subr (contents, props changed) projects/pciehp/usr.sbin/bsdconfig/share/packages/packages.subr (contents, props changed) projects/pciehp/usr.sbin/bsdinstall/bsdinstall.8 projects/pciehp/usr.sbin/bsdinstall/partedit/partedit_powerpc.c projects/pciehp/usr.sbin/bsdinstall/partedit/partedit_x86.c projects/pciehp/usr.sbin/bsdinstall/partedit/sade.8 projects/pciehp/usr.sbin/bsdinstall/scripts/mirrorselect projects/pciehp/usr.sbin/bsdinstall/scripts/zfsboot projects/pciehp/usr.sbin/bsnmpd/modules/Makefile projects/pciehp/usr.sbin/bsnmpd/modules/snmp_bridge/bridge_sys.c projects/pciehp/usr.sbin/bsnmpd/modules/snmp_bridge/snmp_bridge.3 projects/pciehp/usr.sbin/bsnmpd/modules/snmp_hast/snmp_hast.3 projects/pciehp/usr.sbin/bsnmpd/modules/snmp_hostres/snmp_hostres.3 projects/pciehp/usr.sbin/bsnmpd/modules/snmp_netgraph/snmp_netgraph.3 projects/pciehp/usr.sbin/bsnmpd/modules/snmp_wlan/snmp_wlan.3 projects/pciehp/usr.sbin/bsnmpd/tools/bsnmptools/bsnmpget.1 projects/pciehp/usr.sbin/btxld/Makefile projects/pciehp/usr.sbin/btxld/btxld.8 projects/pciehp/usr.sbin/cdcontrol/Makefile projects/pciehp/usr.sbin/chkgrp/chkgrp.8 projects/pciehp/usr.sbin/chown/Makefile projects/pciehp/usr.sbin/config/config.5 projects/pciehp/usr.sbin/config/config.8 projects/pciehp/usr.sbin/cpucontrol/cpucontrol.8 projects/pciehp/usr.sbin/cpucontrol/cpucontrol.c projects/pciehp/usr.sbin/cron/cron/Makefile projects/pciehp/usr.sbin/cron/cron/cron.8 projects/pciehp/usr.sbin/cron/crontab/Makefile projects/pciehp/usr.sbin/cron/crontab/crontab.1 projects/pciehp/usr.sbin/cron/crontab/crontab.5 projects/pciehp/usr.sbin/crunch/crunchgen/Makefile projects/pciehp/usr.sbin/crunch/crunchgen/crunchgen.1 projects/pciehp/usr.sbin/crunch/crunchide/Makefile projects/pciehp/usr.sbin/crunch/crunchide/crunchide.1 projects/pciehp/usr.sbin/crunch/crunchide/exec_elf32.c projects/pciehp/usr.sbin/ctladm/ctladm.8 projects/pciehp/usr.sbin/ctladm/ctladm.c projects/pciehp/usr.sbin/ctld/ctl.conf.5 projects/pciehp/usr.sbin/ctld/ctld.8 projects/pciehp/usr.sbin/ctld/ctld.c projects/pciehp/usr.sbin/ctld/ctld.h projects/pciehp/usr.sbin/ctld/discovery.c projects/pciehp/usr.sbin/ctld/kernel.c projects/pciehp/usr.sbin/ctld/login.c projects/pciehp/usr.sbin/ctld/parse.y projects/pciehp/usr.sbin/ctld/token.l projects/pciehp/usr.sbin/ctm/ctm/ctm.1 projects/pciehp/usr.sbin/ctm/ctm/ctm.5 projects/pciehp/usr.sbin/ctm/ctm_rmail/ctm_rmail.1 projects/pciehp/usr.sbin/dconschat/dconschat.8 projects/pciehp/usr.sbin/devinfo/devinfo.8 projects/pciehp/usr.sbin/dumpcis/dumpcis.8 projects/pciehp/usr.sbin/editmap/Makefile projects/pciehp/usr.sbin/eeprom/eeprom.8 projects/pciehp/usr.sbin/etcupdate/etcupdate.8 projects/pciehp/usr.sbin/fdwrite/fdwrite.1 projects/pciehp/usr.sbin/fifolog/fifolog_create/Makefile projects/pciehp/usr.sbin/fifolog/fifolog_reader/Makefile projects/pciehp/usr.sbin/fifolog/fifolog_writer/Makefile projects/pciehp/usr.sbin/flowctl/flowctl.8 projects/pciehp/usr.sbin/freebsd-update/freebsd-update.8 projects/pciehp/usr.sbin/ftp-proxy/ftp-proxy/Makefile projects/pciehp/usr.sbin/fwcontrol/fwcontrol.8 projects/pciehp/usr.sbin/gpioctl/gpioctl.8 projects/pciehp/usr.sbin/gssd/gssd.8 projects/pciehp/usr.sbin/gstat/gstat.8 projects/pciehp/usr.sbin/gstat/gstat.c projects/pciehp/usr.sbin/i2c/i2c.8 projects/pciehp/usr.sbin/iostat/iostat.8 projects/pciehp/usr.sbin/ipfwpcap/ipfwpcap.8 projects/pciehp/usr.sbin/iscsid/iscsid.8 projects/pciehp/usr.sbin/iscsid/iscsid.c projects/pciehp/usr.sbin/iscsid/iscsid.h projects/pciehp/usr.sbin/iscsid/login.c projects/pciehp/usr.sbin/jail/jail.8 projects/pciehp/usr.sbin/kbdcontrol/kbdcontrol.1 projects/pciehp/usr.sbin/kbdcontrol/kbdcontrol.c projects/pciehp/usr.sbin/kbdcontrol/path.h projects/pciehp/usr.sbin/kbdmap/kbdmap.1 projects/pciehp/usr.sbin/kgzip/kgzip.8 projects/pciehp/usr.sbin/kldxref/kldxref.8 projects/pciehp/usr.sbin/lmcconfig/lmcconfig.8 projects/pciehp/usr.sbin/lpr/chkprintcap/Makefile projects/pciehp/usr.sbin/lpr/chkprintcap/chkprintcap.8 projects/pciehp/usr.sbin/lpr/lpc/Makefile projects/pciehp/usr.sbin/lpr/lpd/Makefile projects/pciehp/usr.sbin/lpr/lpq/Makefile projects/pciehp/usr.sbin/lpr/lpr/Makefile projects/pciehp/usr.sbin/lpr/lprm/Makefile projects/pciehp/usr.sbin/lpr/pac/Makefile projects/pciehp/usr.sbin/mailstats/Makefile projects/pciehp/usr.sbin/mailwrapper/mailwrapper.8 projects/pciehp/usr.sbin/makefs/Makefile projects/pciehp/usr.sbin/makefs/ffs/mkfs.c projects/pciehp/usr.sbin/makefs/makefs.8 projects/pciehp/usr.sbin/makemap/Makefile projects/pciehp/usr.sbin/mergemaster/mergemaster.8 projects/pciehp/usr.sbin/mergemaster/mergemaster.sh projects/pciehp/usr.sbin/mixer/mixer.8 projects/pciehp/usr.sbin/mlxcontrol/mlxcontrol.8 projects/pciehp/usr.sbin/moused/moused.8 projects/pciehp/usr.sbin/mptable/mptable.1 projects/pciehp/usr.sbin/nandsim/nandsim.8 projects/pciehp/usr.sbin/ndiscvt/ndiscvt.8 projects/pciehp/usr.sbin/ndiscvt/ndisgen.8 projects/pciehp/usr.sbin/ndp/ndp.c projects/pciehp/usr.sbin/newsyslog/newsyslog.8 projects/pciehp/usr.sbin/nfsd/nfsd.8 projects/pciehp/usr.sbin/ngctl/Makefile projects/pciehp/usr.sbin/ngctl/ngctl.8 projects/pciehp/usr.sbin/nghook/nghook.8 projects/pciehp/usr.sbin/nmtree/Makefile projects/pciehp/usr.sbin/nscd/nscd.8 projects/pciehp/usr.sbin/nscd/nscd.conf.5 projects/pciehp/usr.sbin/ntp/config.h projects/pciehp/usr.sbin/ntp/ntp-keygen/Makefile projects/pciehp/usr.sbin/ntp/ntpd/Makefile projects/pciehp/usr.sbin/ntp/ntpdate/Makefile projects/pciehp/usr.sbin/ntp/ntpdc/Makefile projects/pciehp/usr.sbin/ntp/ntpq/Makefile projects/pciehp/usr.sbin/ntp/ntptime/Makefile projects/pciehp/usr.sbin/nvram/nvram.8 projects/pciehp/usr.sbin/ofwdump/ofwdump.8 projects/pciehp/usr.sbin/pc-sysinstall/pc-sysinstall/pc-sysinstall.8 projects/pciehp/usr.sbin/pciconf/pciconf.c projects/pciehp/usr.sbin/periodic/periodic.8 projects/pciehp/usr.sbin/pkg/elf_tables.h projects/pciehp/usr.sbin/pkg/pkg.c projects/pciehp/usr.sbin/pmcannotate/pmcannotate.8 projects/pciehp/usr.sbin/pmccontrol/pmccontrol.8 projects/pciehp/usr.sbin/pmcstat/Makefile projects/pciehp/usr.sbin/pmcstat/pmcstat.8 projects/pciehp/usr.sbin/pmcstat/pmcstat.h projects/pciehp/usr.sbin/portsnap/portsnap/portsnap.8 projects/pciehp/usr.sbin/ppp/Makefile projects/pciehp/usr.sbin/ppp/ppp.8 projects/pciehp/usr.sbin/pppctl/Makefile projects/pciehp/usr.sbin/praliases/Makefile projects/pciehp/usr.sbin/pw/pw_user.c projects/pciehp/usr.sbin/pw/pwupd.c projects/pciehp/usr.sbin/rarpd/rarpd.8 projects/pciehp/usr.sbin/rpc.umntall/rpc.umntall.8 projects/pciehp/usr.sbin/rpc.yppasswdd/rpc.yppasswdd.8 projects/pciehp/usr.sbin/rpc.ypxfrd/rpc.ypxfrd.8 projects/pciehp/usr.sbin/rtadvctl/rtadvctl.8 projects/pciehp/usr.sbin/rtprio/rtprio.1 projects/pciehp/usr.sbin/rwhod/rwhod.c projects/pciehp/usr.sbin/sa/sa.8 projects/pciehp/usr.sbin/sendmail/Makefile projects/pciehp/usr.sbin/service/service.8 projects/pciehp/usr.sbin/service/service.sh projects/pciehp/usr.sbin/sicontrol/sicontrol.8 projects/pciehp/usr.sbin/snapinfo/snapinfo.8 projects/pciehp/usr.sbin/sysrc/sysrc projects/pciehp/usr.sbin/sysrc/sysrc.8 projects/pciehp/usr.sbin/tcpdrop/tcpdrop.8 projects/pciehp/usr.sbin/tcpdump/tcpdump/Makefile projects/pciehp/usr.sbin/uhsoctl/uhsoctl.c projects/pciehp/usr.sbin/unbound/local-setup/local-unbound-setup.sh projects/pciehp/usr.sbin/usbdump/usbdump.8 projects/pciehp/usr.sbin/usbdump/usbdump.c projects/pciehp/usr.sbin/utx/utx.8 projects/pciehp/usr.sbin/vidcontrol/path.h projects/pciehp/usr.sbin/vidcontrol/vidcontrol.1 projects/pciehp/usr.sbin/vidcontrol/vidcontrol.c projects/pciehp/usr.sbin/wake/wake.8 projects/pciehp/usr.sbin/watch/Makefile projects/pciehp/usr.sbin/watch/watch.8 projects/pciehp/usr.sbin/watchdogd/watchdog.8 projects/pciehp/usr.sbin/watchdogd/watchdogd.8 projects/pciehp/usr.sbin/wpa/hostapd/Makefile projects/pciehp/usr.sbin/wpa/hostapd/hostapd.8 projects/pciehp/usr.sbin/wpa/hostapd/hostapd.conf.5 projects/pciehp/usr.sbin/wpa/hostapd_cli/Makefile projects/pciehp/usr.sbin/wpa/hostapd_cli/hostapd_cli.8 projects/pciehp/usr.sbin/wpa/ndis_events/ndis_events.8 projects/pciehp/usr.sbin/wpa/wpa_cli/Makefile projects/pciehp/usr.sbin/wpa/wpa_cli/wpa_cli.8 projects/pciehp/usr.sbin/wpa/wpa_passphrase/Makefile projects/pciehp/usr.sbin/wpa/wpa_passphrase/wpa_passphrase.8 projects/pciehp/usr.sbin/wpa/wpa_supplicant/Makefile projects/pciehp/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.8 projects/pciehp/usr.sbin/wpa/wpa_supplicant/wpa_supplicant.conf.5 projects/pciehp/usr.sbin/yp_mkdb/yp_mkdb.8 projects/pciehp/usr.sbin/ypbind/ypbind.8 projects/pciehp/usr.sbin/yppush/yppush.8 projects/pciehp/usr.sbin/ypserv/ypinit.8 projects/pciehp/usr.sbin/ypserv/ypserv.8 projects/pciehp/usr.sbin/zzz/zzz.8 Directory Properties: projects/pciehp/ (props changed) projects/pciehp/cddl/ (props changed) projects/pciehp/cddl/contrib/opensolaris/ (props changed) projects/pciehp/cddl/contrib/opensolaris/cmd/dtrace/test/tst/common/print/ (props changed) projects/pciehp/cddl/contrib/opensolaris/cmd/zfs/ (props changed) projects/pciehp/cddl/contrib/opensolaris/lib/libzfs/ (props changed) projects/pciehp/contrib/apr/ (props changed) projects/pciehp/contrib/atf/ (props changed) projects/pciehp/contrib/bmake/ (props changed) projects/pciehp/contrib/byacc/ (props changed) projects/pciehp/contrib/file/ (props changed) projects/pciehp/contrib/gcc/ (props changed) projects/pciehp/contrib/ipfilter/ (props changed) projects/pciehp/contrib/libstdc++/ (props changed) projects/pciehp/contrib/libucl/ (props changed) projects/pciehp/contrib/llvm/ (props changed) projects/pciehp/contrib/llvm/tools/clang/ (props changed) projects/pciehp/contrib/llvm/tools/lldb/ (props changed) projects/pciehp/contrib/openbsm/ (props changed) projects/pciehp/contrib/openpam/ (props changed) projects/pciehp/contrib/sendmail/ (props changed) projects/pciehp/contrib/serf/ (props changed) projects/pciehp/contrib/subversion/ (props changed) projects/pciehp/contrib/tzdata/ (props changed) projects/pciehp/contrib/unbound/ (props changed) projects/pciehp/contrib/wpa/ (props changed) projects/pciehp/crypto/openssh/ (props changed) projects/pciehp/crypto/openssl/ (props changed) projects/pciehp/etc/ (props changed) projects/pciehp/gnu/lib/ (props changed) projects/pciehp/gnu/usr.bin/binutils/ (props changed) projects/pciehp/gnu/usr.bin/gdb/ (props changed) projects/pciehp/include/ (props changed) projects/pciehp/lib/libc/ (props changed) projects/pciehp/lib/libc/stdtime/ (props changed) projects/pciehp/lib/libutil/ (props changed) projects/pciehp/lib/libvmmapi/ (props changed) projects/pciehp/lib/libz/ (props changed) projects/pciehp/sbin/ (props changed) projects/pciehp/sbin/ipfw/ (props changed) projects/pciehp/share/ (props changed) projects/pciehp/share/man/man4/ (props changed) projects/pciehp/sys/ (props changed) projects/pciehp/sys/amd64/vmm/ (props changed) projects/pciehp/sys/boot/ (props changed) projects/pciehp/sys/cddl/contrib/opensolaris/ (props changed) projects/pciehp/sys/conf/ (props changed) projects/pciehp/sys/contrib/dev/acpica/ (props changed) projects/pciehp/sys/contrib/ipfilter/ (props changed) projects/pciehp/sys/contrib/x86emu/ (props changed) projects/pciehp/usr.bin/calendar/ (props changed) projects/pciehp/usr.bin/mkimg/ (props changed) projects/pciehp/usr.bin/procstat/ (props changed) projects/pciehp/usr.sbin/bhyve/ (props changed) projects/pciehp/usr.sbin/bhyvectl/ (props changed) projects/pciehp/usr.sbin/bhyveload/ (props changed) projects/pciehp/usr.sbin/bsdconfig/share/packages/categories.subr (props changed) projects/pciehp/usr.sbin/jail/ (props changed) projects/pciehp/usr.sbin/ndiscvt/ (props changed) projects/pciehp/usr.sbin/rtadvctl/ (props changed) Modified: projects/pciehp/.arcconfig ============================================================================== --- projects/pciehp/.arcconfig Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/.arcconfig Fri Aug 1 17:24:36 2014 (r269389) @@ -1,4 +1,5 @@ { "project.name": "S", - "phabricator.uri" : "https://phabric.freebsd.org/" + "phabricator.uri" : "https://phabric.freebsd.org/", + "history.immutable" : true } Copied: projects/pciehp/.arclint (from r269363, head/.arclint) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ projects/pciehp/.arclint Fri Aug 1 17:24:36 2014 (r269389, copy of r269363, head/.arclint) @@ -0,0 +1,9 @@ +{ + "linters": { + "python": { + "type": "pep8", + "exclude": "(contrib)", + "include": "(\\.py$)" + } + } +} Modified: projects/pciehp/MAINTAINERS ============================================================================== --- projects/pciehp/MAINTAINERS Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/MAINTAINERS Fri Aug 1 17:24:36 2014 (r269389) @@ -102,13 +102,12 @@ linux emul emulation Please discuss chan bs{diff,patch} cperciva Pre-commit review requested. portsnap cperciva Pre-commit review requested. freebsd-update cperciva Pre-commit review requested. -openssl benl Pre-commit review requested. +openssl benl,jkim Pre-commit review requested. sys/netgraph/bluetooth emax Pre-commit review preferred. lib/libbluetooth emax Pre-commit review preferred. lib/libsdp emax Pre-commit review preferred. usr.bin/bluetooth emax Pre-commit review preferred. usr.sbin/bluetooth emax Pre-commit review preferred. -gnu/usr.bin/send-pr bugmaster Pre-commit review requested. *env(3) secteam Due to the problematic security history of this code, please have patches reviewed by secteam. share/zoneinfo edwin Heads-up appreciated, since our data is coming Modified: projects/pciehp/Makefile ============================================================================== --- projects/pciehp/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -36,6 +36,7 @@ # specified with XDEV and XDEV_ARCH. # xdev-build - Build cross-development tools. # xdev-install - Install cross-development tools. +# xdev-links - Create traditional links in /usr/bin for cc, etc # # "quick" way to test all kernel builds: # _jflag=`sysctl -n hw.ncpu` @@ -82,7 +83,7 @@ # # See src/UPDATING `COMMON ITEMS' for more complete information. # -# If TARGET=machine (e.g. ia64, sparc64, ...) is specified you can +# If TARGET=machine (e.g. powerpc, sparc64, ...) is specified you can # cross build world for other machine types using the buildworld target, # and once the world is built you can cross build a kernel using the # buildkernel target. @@ -110,6 +111,7 @@ TGTS= all all-man buildenv buildenvvars _worldtmp _legacy _bootstrap-tools _cleanobj _obj \ _build-tools _cross-tools _includes _libraries _depend \ build32 builddtb distribute32 install32 xdev xdev-build xdev-install \ + xdev-links \ TGTS+= ${SUBDIR_TARGETS} @@ -172,6 +174,13 @@ _TARGET=${TARGET} .if defined(TARGET_ARCH) && !defined(_TARGET_ARCH) _TARGET_ARCH=${TARGET_ARCH} .endif +# for historical compatibility for xdev targets +.if defined(XDEV) +_TARGET= ${XDEV} +.endif +.if defined(XDEV_ARCH) +_TARGET_ARCH= ${XDEV_ARCH} +.endif # Otherwise, default to current machine type and architecture. _TARGET?= ${MACHINE} _TARGET_ARCH?= ${MACHINE_ARCH} @@ -329,6 +338,7 @@ MMAKEENV= MAKEOBJDIRPREFIX=${MYMAKE:H} \ MMAKE= ${MMAKEENV} ${MAKE} \ -DNO_MAN -DNO_SHARED \ -DNO_CPU_CFLAGS -DNO_WERROR \ + MK_TESTS=no \ DESTDIR= PROGNAME=${MYMAKE:T} bmake: .PHONY @@ -361,7 +371,7 @@ kernel-toolchains: # existing system is. # .if make(universe) || make(universe_kernels) || make(tinderbox) || make(targets) -TARGETS?=amd64 arm i386 ia64 mips pc98 powerpc sparc64 +TARGETS?=amd64 arm i386 mips pc98 powerpc sparc64 TARGET_ARCHES_arm?= arm armeb armv6 armv6hf TARGET_ARCHES_mips?= mipsel mips mips64el mips64 mipsn32 TARGET_ARCHES_powerpc?= powerpc powerpc64 Modified: projects/pciehp/Makefile.inc1 ============================================================================== --- projects/pciehp/Makefile.inc1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/Makefile.inc1 Fri Aug 1 17:24:36 2014 (r269389) @@ -17,6 +17,7 @@ # -DNO_DOCUPDATE do not update doc in ${MAKE} update # -DWITHOUT_CTF do not run the DTrace CTF conversion tools on built objects # LOCAL_DIRS="list of dirs" to add additional dirs to the SUBDIR list +# LOCAL_ITOOLS="list of tools" to add additional tools to the ITOOLS list # LOCAL_LIB_DIRS="list of dirs" to add additional dirs to libraries target # LOCAL_MTREE="list of mtree files" to process to allow local directories # to be created before files are installed @@ -139,7 +140,7 @@ SRCRELDATE!= awk '/^\#define[[:space:]]* VERSION= FreeBSD ${REVISION}-${BRANCH:C/-p[0-9]+$//} ${TARGET_ARCH} ${SRCRELDATE} .endif -KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm armv6hf/arm i386 i386/pc98 ia64 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 +KNOWN_ARCHES?= amd64 arm armeb/arm armv6/arm armv6hf/arm i386 i386/pc98 mips mipsel/mips mips64el/mips mips64/mips mipsn32el/mips mipsn32/mips powerpc powerpc64/powerpc sparc64 .if ${TARGET} == ${TARGET_ARCH} _t= ${TARGET} .else @@ -245,7 +246,7 @@ BMAKE= MAKEOBJDIRPREFIX=${WORLDTMP} \ ${BMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ - SSP_CFLAGS= \ + SSP_CFLAGS= MK_PIE=no \ MK_HTML=no MK_INFO=no NO_LINT=yes MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no \ @@ -257,7 +258,7 @@ TMAKE= MAKEOBJDIRPREFIX=${OBJTREE} \ TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ - SSP_CFLAGS= \ + SSP_CFLAGS= MK_PIE=no \ -DNO_LINT \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no MK_CLANG_FULL=no MK_LLDB=no MK_TESTS=no @@ -275,7 +276,7 @@ KTMAKE= TOOLS_PREFIX=${WORLDTMP} MAKEOB ${KTMAKEENV} ${MAKE} ${WORLD_FLAGS} -f Makefile.inc1 \ DESTDIR= \ BOOTSTRAPPING=${OSRELDATE} \ - SSP_CFLAGS= \ + SSP_CFLAGS= MK_PIE=no \ MK_HTML=no MK_INFO=no -DNO_LINT MK_MAN=no \ -DNO_PIC MK_PROFILE=no -DNO_SHARED \ -DNO_CPU_CFLAGS MK_WARNS=no MK_CTF=no @@ -756,7 +757,8 @@ _zoneinfo= zic tzsetup ITOOLS= [ awk cap_mkdb cat chflags chmod chown \ date echo egrep find grep id install ${_install-info} \ ln lockf make mkdir mtree mv pwd_mkdb \ - rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} + rm sed services_mkdb sh sysctl test true uname wc ${_zoneinfo} \ + ${LOCAL_ITOOLS} # # distributeworld @@ -776,6 +778,14 @@ EXTRA_DISTRIBUTIONS+= games .if defined(LIB32TMP) && ${MK_LIB32} != "no" EXTRA_DISTRIBUTIONS+= lib32 .endif +.if ${MK_TESTS} != "no" +EXTRA_DISTRIBUTIONS+= tests +.endif + +DEBUG_DISTRIBUTIONS= +.if ${MK_DEBUG_FILES} != "no" +DEBUG_DISTRIBUTIONS+= base ${EXTRA_DISTRIBUTIONS:S,doc,,} +.endif MTREE_MAGIC?= mtree 2.0 @@ -817,6 +827,10 @@ distributeworld installworld: _installch mtree -deU -f ${.CURDIR}/etc/mtree/BSD.debug.dist \ -p ${DESTDIR}/${DISTDIR}/${dist}/usr/lib >/dev/null .endif +.if ${MK_TESTS} != "no" && ${dist} == "tests" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ + -p ${DESTDIR}/${DISTDIR}/${dist}/usr >/dev/null +.endif .if defined(NO_ROOT) ${IMAKEENV} mtree -C -f ${.CURDIR}/etc/mtree/BSD.root.dist | \ sed -e 's#^\./#./${dist}/#' >> ${METALOG} @@ -849,8 +863,7 @@ distributeworld installworld: _installch awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \ ${DESTDIR}/${DISTDIR}/${dist}.meta .endfor -.if ${MK_DEBUG_FILES} != "no" -. for dist in base ${EXTRA_DISTRIBUTIONS} +.for dist in ${DEBUG_DISTRIBUTIONS} @# For each file that exists in this dist, print the corresponding @# line from the METALOG. This relies on the fact that @# a line containing only the filename will sort immediatly before @@ -859,8 +872,7 @@ distributeworld installworld: _installch find ./${dist}/usr/lib/debug | sort -u ${METALOG} - | \ awk 'BEGIN { print "#${MTREE_MAGIC}" } !/ type=/ { file = $$1 } / type=/ { if ($$1 == file) { sub(/^\.\/${dist}\//, "./"); print } }' > \ ${DESTDIR}/${DISTDIR}/${dist}.debug.meta -. endfor -.endif +.endfor .endif .endif @@ -878,19 +890,17 @@ packageworld: .endif .endfor -.if ${MK_DEBUG_FILES} != "no" -. for dist in base ${EXTRA_DISTRIBUTIONS} -. if defined(NO_ROOT) +.for dist in ${DEBUG_DISTRIBUTIONS} +. if defined(NO_ROOT) ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ - tar cvJf ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \ + tar cvJf ${DESTDIR}/${DISTDIR}/${dist}-dbg.txz \ @${DESTDIR}/${DISTDIR}/${dist}.debug.meta -. else +. else ${_+_}cd ${DESTDIR}/${DISTDIR}/${dist}; \ - tar cvJfL ${DESTDIR}/${DISTDIR}/${dist}.debug.txz \ + tar cvJfL ${DESTDIR}/${DISTDIR}/${dist}-dbg.txz \ usr/lib/debug -. endif -. endfor -.endif +. endif +.endfor # # reinstall @@ -1189,6 +1199,10 @@ _gperf= gnu/usr.bin/gperf _groff= gnu/usr.bin/groff .endif +.if ${MK_VT} != "no" +_vtfontcvt= usr.bin/vtfontcvt +.endif + .if ${BOOTSTRAPPING} < 900002 _sed= usr.bin/sed .endif @@ -1238,9 +1252,8 @@ _clang_tblgen= \ .endif # dtrace tools are required for older bootstrap env and cross-build -.if ${MK_CDDL} != "no" && \ - ((${BOOTSTRAPPING} < 1000034 && \ - !(${BOOTSTRAPPING} >= 901505 && ${BOOTSTRAPPING} < 999999)) \ +# pre libdwarf +.if ${MK_CDDL} != "no" && (${BOOTSTRAPPING} < 1100006 \ || (${MACHINE} != ${TARGET} || ${MACHINE_ARCH} != ${TARGET_ARCH})) _dtrace_tools= cddl/usr.bin/sgsmsg cddl/lib/libctf lib/libelf \ lib/libdwarf cddl/usr.bin/ctfconvert cddl/usr.bin/ctfmerge @@ -1289,7 +1302,8 @@ bootstrap-tools: .MAKE ${_gensnmptree} \ usr.sbin/config \ ${_crunch} \ - ${_nmtree} + ${_nmtree} \ + ${_vtfontcvt} ${_+_}@${ECHODIR} "===> ${_tool} (obj,depend,all,install)"; \ cd ${.CURDIR}/${_tool} && \ ${MAKE} DIRPRFX=${_tool}/ obj && \ @@ -1352,9 +1366,6 @@ kernel-tools: .MAKE # # cross-tools: Build cross-building tools # -.if !defined(TARGET_ARCH) && defined(XDEV_ARCH) -TARGET_ARCH= ${XDEV_ARCH} -.endif .if ${TARGET_ARCH} != ${MACHINE_ARCH} .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" _btxld= usr.sbin/btxld @@ -1475,13 +1486,15 @@ _prebuild_libs= ${_kerberos5_lib_libasn1 lib/libopie lib/libpam ${_lib_libthr} \ lib/libradius lib/libsbuf lib/libtacplus \ ${_cddl_lib_libumem} ${_cddl_lib_libnvpair} \ + ${_cddl_lib_libavl} \ ${_cddl_lib_libzfs_core} \ lib/libutil lib/libpjdlog ${_lib_libypclnt} lib/libz lib/msun \ ${_secure_lib_libcrypto} ${_lib_libldns} \ ${_secure_lib_libssh} ${_secure_lib_libssl} -.if ${MK_GNUCXX} != "no" && ${MK_CXX} != "no" +.if ${MK_GNUCXX} != "no" _prebuild_libs+= gnu/lib/libstdc++ gnu/lib/libsupc++ gnu/lib/libstdc++__L: lib/msun__L +gnu/lib/libsupc++__L: gnu/lib/libstdc++__L .endif .if defined(WITH_ATF) || ${MK_TESTS} != "no" @@ -1520,6 +1533,7 @@ lib/libopie__L lib/libtacplus__L: lib/li .if ${MK_CDDL} != "no" _cddl_lib_libumem= cddl/lib/libumem _cddl_lib_libnvpair= cddl/lib/libnvpair +_cddl_lib_libavl= cddl/lib/libavl _cddl_lib_libzfs_core= cddl/lib/libzfs_core _cddl_lib= cddl/lib cddl/lib/libzfs_core__L: cddl/lib/libnvpair__L @@ -1837,9 +1851,9 @@ builddtb: ############### -.if defined(XDEV) && defined(XDEV_ARCH) +.if defined(TARGET) && defined(TARGET_ARCH) -.if ${XDEV} == ${MACHINE} && ${XDEV_ARCH} == ${MACHINE_ARCH} +.if ${TARGET} == ${MACHINE} && ${TARGET_ARCH} == ${MACHINE_ARCH} XDEV_CPUTYPE?=${CPUTYPE} .else XDEV_CPUTYPE?=${TARGET_CPUTYPE} @@ -1848,10 +1862,10 @@ XDEV_CPUTYPE?=${TARGET_CPUTYPE} NOFUN=-DNO_FSCHG MK_HTML=no MK_INFO=no -DNO_LINT \ MK_MAN=no MK_NLS=no MK_PROFILE=no \ MK_KERBEROS=no MK_RESCUE=no MK_TESTS=no MK_WARNS=no \ - TARGET=${XDEV} TARGET_ARCH=${XDEV_ARCH} \ + TARGET=${TARGET} TARGET_ARCH=${TARGET_ARCH} \ CPUTYPE=${XDEV_CPUTYPE} -XDDIR=${XDEV_ARCH}-freebsd +XDDIR=${TARGET_ARCH}-freebsd XDTP?=/usr/${XDDIR} .if ${XDTP:N/*} .error XDTP variable should be an absolute path @@ -1867,7 +1881,7 @@ CD2CFLAGS=-isystem ${XDDESTDIR}/usr/incl -B${XDDESTDIR}/usr/bin -B${XDDESTDIR}/usr/lib CD2ENV=${CDENV} CC="${CC} ${CD2CFLAGS}" CXX="${CXX} ${CD2CFLAGS}" \ CPP="${CPP} ${CD2CFLAGS}" \ - MACHINE=${XDEV} MACHINE_ARCH=${XDEV_ARCH} + MACHINE=${TARGET} MACHINE_ARCH=${TARGET_ARCH} CDTMP= ${MAKEOBJDIRPREFIX}/${XDDIR}/${.CURDIR}/tmp CDMAKE=${CDENV} PATH=${CDTMP}/usr/bin:${PATH} ${MAKE} ${NOFUN} @@ -1877,7 +1891,7 @@ XDDESTDIR=${DESTDIR}/${XDTP} OSREL!= uname -r | sed -e 's/[-(].*//' .endif -.ORDER: xdev-build xdev-install +.ORDER: xdev-build xdev-install xdev-links xdev: xdev-build xdev-install .ORDER: _xb-worldtmp _xb-bootstrap-tools _xb-build-tools _xb-cross-tools @@ -1926,9 +1940,13 @@ _xi-mtree: -p ${XDDESTDIR}/usr >/dev/null mtree -deU -f ${.CURDIR}/etc/mtree/BSD.include.dist \ -p ${XDDESTDIR}/usr/include >/dev/null +.if ${MK_TESTS} != "no" + mtree -deU -f ${.CURDIR}/etc/mtree/BSD.tests.dist \ + -p ${XDDESTDIR}/usr >/dev/null +.endif -.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links -xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-links +.ORDER: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries +xdev-install: xdev-build _xi-mtree _xi-cross-tools _xi-includes _xi-libraries _xi-cross-tools: @echo "_xi-cross-tools" @@ -1951,9 +1969,9 @@ _xi-libraries: ${_+_}cd ${.CURDIR}; ${CD2MAKE} -f Makefile.inc1 libraries \ DESTDIR=${XDDESTDIR} -_xi-links: +xdev-links: ${_+_}cd ${XDDESTDIR}/usr/bin; \ - mkdir -p ../../../../usr/bin; \ + mkdir -p ../../../../usr/bin; \ for i in *; do \ ln -sf ../../${XDTP}/usr/bin/$$i \ ../../../../usr/bin/${XDDIR}-$$i; \ @@ -1961,6 +1979,6 @@ _xi-links: ../../../../usr/bin/${XDDIR}${OSREL}-$$i; \ done .else -xdev xdev-build xdev-install: - @echo "*** Error: Both XDEV and XDEV_ARCH must be defined for \"${.TARGET}\" target" +xdev xdev-build xdev-install xdev-links: + @echo "*** Error: Both TARGET and TARGET_ARCH must be defined for \"${.TARGET}\" target" .endif Modified: projects/pciehp/ObsoleteFiles.inc ============================================================================== --- projects/pciehp/ObsoleteFiles.inc Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/ObsoleteFiles.inc Fri Aug 1 17:24:36 2014 (r269389) @@ -38,6 +38,61 @@ # xargs -n1 | sort | uniq -d; # done +# 20140728: libsbuf restored to old version. +OLD_LIBS+=lib/libsbuf.so.7 +# 20140728: Remove an obsolete man page +OLD_FILES+=usr/share/man/man9/VOP_GETVOBJECT.9.gz +OLD_FILES+=usr/share/man/man9/VOP_CREATEVOBJECT.9.gz +OLD_FILES+=usr/share/man/man9/VOP_DESTROYVOBJECT.9.gz +# 20140723: renamed to PCBGROUP.9 +OLD_FILES+=usr/share/man/man9/PCBGROUPS.9.gz +# 20140718: Remove obsolete man pages +OLD_FILES+=usr/share/man/man9/zero_copy.9.gz +OLD_FILES+=usr/share/man/man9/zero_copy_sockets.9.gz +# 20140718: Remove an obsolete man page +OLD_FILES+=usr/share/man/man9/pmap_page_protect.9.gz +# 20140717: Remove an obsolete man page +OLD_FILES+=usr/share/man/man9/pmap_clear_reference.9.gz +# 20140716: Remove an incorrectly named man page +OLD_FILES+=usr/share/man/man9/pmap_ts_modified.9.gz +# 20140712: Removal of bsd.dtrace.mk +OLD_FILES+=usr/share/mk/bsd.dtrace.mk +# 20140705: turn libreadline into an internal lib +OLD_LIBS+=lib/libreadline.so.8 +OLD_FILES+=usr/lib/libreadline.a +OLD_FILES+=usr/lib/libreadline_p.a +OLD_FILES+=usr/lib/libreadline.so +OLD_FILES+=usr/lib/libhistory.a +OLD_FILES+=usr/lib/libhistory_p.a +OLD_FILES+=usr/lib/libhistory.so +OLD_LIBS+=usr/lib/libhistory.so.8 +OLD_FILES+=usr/include/readline/chardefs.h +OLD_FILES+=usr/include/readline/history.h +OLD_FILES+=usr/include/readline/keymaps.h +OLD_FILES+=usr/include/readline/readline.h +OLD_FILES+=usr/include/readline/rlconf.h +OLD_FILES+=usr/include/readline/rlstdc.h +OLD_FILES+=usr/include/readline/rltypedefs.h +OLD_FILES+=usr/include/readline/rltypedefs.h +OLD_FILES+=usr/share/info/readline.info.gz +OLD_FILES+=usr/share/man/man3/readline.3.gz +# 20140625: csup removal +OLD_FILES+=usr/bin/csup +OLD_FILES+=usr/bin/cpasswd +OLD_FILES+=usr/share/man/man1/csup.1.gz +OLD_FILES+=usr/share/man/man1/cpasswd.1.gz +OLD_FILES+=usr/share/examples/cvsup/README +OLD_FILES+=usr/share/examples/cvsup/cvs-supfile +OLD_FILES+=usr/share/examples/cvsup/stable-supfile +OLD_FILES+=usr/share/examples/cvsup/standard-supfile +OLD_DIRS+=usr/share/examples/cvsup +# 20140614: send-pr removal +OLD_FILES+=usr/bin/sendbug +OLD_FILES+=usr/share/info/send-pr.info.gz +OLD_FILES+=usr/share/man/man1/send-pr.1.gz +OLD_FILES+=usr/share/man/man1/sendbug.1.gz +OLD_FILES+=etc/gnats/freefall +OLD_DIRS+=etc/gnats # 20140512: new clang import which bumps version from 3.4 to 3.4.1. OLD_FILES+=usr/include/clang/3.4/__wmmintrin_aes.h OLD_FILES+=usr/include/clang/3.4/__wmmintrin_pclmul.h @@ -544,6 +599,7 @@ OLD_FILES+=usr/share/man/man9/vfs_mount. OLD_FILES+=usr/bin/cvs OLD_FILES+=usr/bin/cvsbug OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ascii.gz +OLD_FILES+=usr/share/doc/psd/28.cvs/paper.ps.gz OLD_DIRS+=usr/share/doc/psd/28.cvs OLD_FILES+=usr/share/examples/cvs/contrib/README OLD_FILES+=usr/share/examples/cvs/contrib/clmerge @@ -1164,9 +1220,6 @@ OLD_FILES+=usr/include/xmmintrin.h .if ${TARGET_ARCH} == "amd64" || ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "arm" OLD_FILES+=usr/include/mmintrin.h .endif -.if ${TARGET_ARCH} == "ia64" -OLD_FILES+=usr/include/ia64intrin.h -.endif .if ${TARGET_ARCH} == "powerpc" OLD_FILES+=usr/include/altivec.h OLD_FILES+=usr/include/ppc-asm.h @@ -1184,10 +1237,6 @@ OLD_FILES+=usr/include/machine/rm7000.h OLD_FILES+=usr/include/machine/defs.h OLD_FILES+=usr/include/machine/queue.h .endif -# 20100326: [ia64] removed -.if ${TARGET_ARCH} == "ia64" -OLD_FILES+=usr/include/machine/nexusvar.h -.endif # 20100326: gcpio removal OLD_FILES+=usr/bin/gcpio OLD_FILES+=usr/share/info/cpio.info.gz @@ -1201,11 +1250,6 @@ OLD_FILES+=usr/share/man/man3/regexp.3.g OLD_FILES+=usr/share/man/man3/regsub.3.gz # 20100303: actual removal of utmp.h OLD_FILES+=usr/include/utmp.h -# 20100227: [ia64] removed and -.if ${TARGET_ARCH} == "ia64" -OLD_FILES+=usr/include/machine/sapicreg.h -OLD_FILES+=usr/include/machine/sapicvar.h -.endif # 20100208: man pages moved .if ${TARGET_ARCH} == "i386" OLD_FILES+=usr/share/man/man4/i386/alpm.4.gz @@ -1898,14 +1942,6 @@ OLD_FILES+=usr/share/man/man8/arlcontrol OLD_FILES+=sbin/sunlabel OLD_FILES+=usr/share/man/man8/sunlabel.8.gz .endif -# 20080703: bsdlabel & fdisk removed on ia64 -.if ${TARGET_ARCH} == "ia64" -OLD_FILES+=sbin/bsdlabel -OLD_FILES+=usr/share/man/man8/bsdlabel.8.gz -OLD_FILES+=usr/share/man/man8/disklabel.8.gz -OLD_FILES+=sbin/fdisk -OLD_FILES+=usr/share/man/man8/fdisk.8.gz -.endif # 20080701: wpa_supplicant.conf moved to share/examples/etc/ OLD_FILES+=usr/share/examples/wpa_supplicant/wpa_supplicant.conf OLD_DIRS+=usr/share/examples/wpa_supplicant @@ -2114,12 +2150,6 @@ OLD_FILES+=usr/include/sys/_elf_solaris. OLD_FILES+=usr/share/man/man3/pmc_x86_get_msr.3.gz # 20071108: Removed very crunch OLDCARD support file OLD_FILES+=etc/defaults/pccard.conf -# 20071104: Removed bsdlabel, fdisk and gpt from rescue on ia64. -.if ${TARGET_ARCH} == "ia64" -OLD_FILES+=rescue/bsdlabel -OLD_FILES+=rescue/fdisk -OLD_FILES+=rescue/gpt -.endif # 20071025: rc.d/nfslocking superceeded by rc.d/lockd and rc.d/statd OLD_FILES+=etc/rc.d/nfslocking # 20070930: rename of cached to nscd @@ -2780,10 +2810,6 @@ OLD_FILES+=usr/share/man/man8/mount_std. OLD_FILES+=usr/share/man/man4/uhidev.4.gz # 20061106: archive_write_prepare.3 removed OLD_FILES+=usr/share/man/man3/archive_write_prepare.3.gz -.if ${TARGET_ARCH} == "ia64" -# 20061104: skiload.help removed -OLD_FILES+=boot/skiload.help -.endif # 20061018: pccardc removed OLD_FILES+=usr/sbin/pccardc usr/share/man/man8/pccardc.8.gz # 20060930: demangle.h from contrib/libstdc++/include/ext/ @@ -2854,7 +2880,6 @@ OLD_DIRS+=usr/share/misc/pcvtfonts OLD_FILES+=usr/share/misc/keycap.pcvt OLD_FILES+=usr/share/man/man8/ispcvt.8.gz OLD_FILES+=usr/share/man/man5/keycap.5.gz -OLD_FILES+=usr/share/man/man4/vt.4.gz OLD_FILES+=usr/share/man/man4/pcvt.4.gz OLD_FILES+=usr/share/man/man3/kgetstr.3.gz OLD_FILES+=usr/share/man/man3/kgetnum.3.gz Modified: projects/pciehp/UPDATING ============================================================================== --- projects/pciehp/UPDATING Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/UPDATING Fri Aug 1 17:24:36 2014 (r269389) @@ -1,4 +1,4 @@ -Updating Information for FreeBSD current users +Updating Information for FreeBSD current users. This file is maintained and copyrighted by M. Warner Losh . See end of file for further details. For commonly done items, please see the @@ -31,6 +31,80 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 disable the most expensive debugging functionality run "ln -s 'abort:false,junk:false' /etc/malloc.conf".) +20140729: + The ofwfb driver, used to provide a graphics console on PowerPC when + using vt(4), no longer allows mmap() of all of physical memory. This + will prevent Xorg on PowerPC with some ATI graphics cards from + initializing properly unless x11-servers/xorg-server is updated to + 1.12.4_8 or newer. + +20140723: + The xdev targets have been converted to using TARGET and + TARGET_ARCH instead of XDEV and XDEV_ARCH. + +20140719: + The default unbound configuration has been modified to address + issues with reverse lookups on networks that use private + address ranges. If you use the local_unbound service, run + "service local_unbound setup" as root to regenerate your + configuration, then "service local_unbound reload" to load the + new configuration. + +20140709: + The GNU texinfo and GNU info pages are not built and installed + anymore, WITH_INFO knob has been added to allow to built and install + them again. + +20140708: + The GNU readline library is now an INTERNALLIB - that is, it is + statically linked into consumers (GDB and variants) in the base + system, and the shared library is no longer installed. The + devel/readline port is available for third party software that + requires readline. + +20140702: + The Itanium architecture (ia64) has been removed from the list of + known architectures. This is the first step in the removal of the + architecture. + +20140701: + Commit r268115 has added NFSv4.1 server support, merged from + projects/nfsv4.1-server. Since this includes changes to the + internal interfaces between the NFS related modules, a full + build of the kernel and modules will be necessary. + __FreeBSD_version has been bumped. + +20140629: + The WITHOUT_VT_SUPPORT kernel config knob has been renamed + WITHOUT_VT. (The other _SUPPORT knobs have a consistent meaning + which differs from the behaviour controlled by this knob.) + +20140619: + Maximal length of the serial number in CTL was increased from 16 to + 64 chars, that breaks ABI. All CTL-related tools, such as ctladm + and ctld, need to be rebuilt to work with a new kernel. + +20140606: + The libatf-c and libatf-c++ major versions were downgraded to 0 and + 1 respectively to match the upstream numbers. They were out of + sync because, when they were originally added to FreeBSD, the + upstream versions were not respected. These libraries are private + and not yet built by default, so renumbering them should be a + non-issue. However, unclean source trees will yield broken test + programs once the operator executes "make delete-old-libs" after a + "make installworld". + + Additionally, the atf-sh binary was made private by moving it into + /usr/libexec/. Already-built shell test programs will keep the + path to the old binary so they will break after "make delete-old" + is run. + + If you are using WITH_TESTS=yes (not the default), wipe the object + tree and rebuild from scratch to prevent spurious test failures. + This is only needed once: the misnumbered libraries and misplaced + binaries have been added to OptionalObsoleteFiles.inc so they will + be removed during a clean upgrade. + 20140512: Clang and llvm have been upgraded to 3.4.1 release. @@ -50,7 +124,8 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11 Although this has survived make universe and some upgrade scenarios, other upgrade scenarios may have broken. At least one form of temporary breakage was fixed with MAKESYSPATH settings for buildworld - as well... + as well... In cases where MAKESYSPATH isn't working with this + setting, you'll need to set it to the full path to your tree. One side effect of all this cleaning up is that bsd.compiler.mk is no longer implicitly included by bsd.own.mk. If you wish to Modified: projects/pciehp/bin/chio/chio.1 ============================================================================== --- projects/pciehp/bin/chio/chio.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/chio/chio.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -151,7 +151,6 @@ This command will query the status of th will move it to the element specified in its source attribute. This is a convenient way to return media from a drive or portal to its previous element in the changer. -.Pp .It Ic position Xo .Ar .Op Cm inv @@ -173,7 +172,6 @@ Report which picker unit the changer is .Xc Configure the changer to use picker .Ar . -.Pp .It Ic ielem Xo .Op Ar .Xc @@ -292,13 +290,11 @@ Configure the changer to use picker 2 (t The .Nm program and SCSI changer driver were written by -.An Jason R. Thorpe Aq thorpej@and.com +.An Jason R. Thorpe Aq Mt thorpej@and.com for And Communications, .Pa http://www.and.com/ . .Pp Additional work by -.An Hans Huebner -.Aq hans@artcom.de +.An Hans Huebner Aq Mt hans@artcom.de and -.An Steve Gunn -.Aq csg@waterspout.com . +.An Steve Gunn Aq Mt csg@waterspout.com . Modified: projects/pciehp/bin/csh/Makefile ============================================================================== --- projects/pciehp/bin/csh/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/csh/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -40,8 +40,8 @@ MLINKS= csh.1 tcsh.1 # utilities of the same name are handled with the associated manpage, # builtin.1 in share/man/man1/. -DPADD= ${LIBTERMCAP} ${LIBCRYPT} -LDADD= -ltermcap -lcrypt +DPADD= ${LIBTERMCAPW} ${LIBCRYPT} +LDADD= -ltermcapw -lcrypt LINKS= ${BINDIR}/csh ${BINDIR}/tcsh Modified: projects/pciehp/bin/ed/Makefile ============================================================================== --- projects/pciehp/bin/ed/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/ed/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -7,9 +7,7 @@ SRCS= buf.c cbc.c glbl.c io.c main.c re. LINKS= ${BINDIR}/ed ${BINDIR}/red MLINKS= ed.1 red.1 -.if !defined(RELEASE_CRUNCH) && \ - ${MK_OPENSSL} != "no" && \ - ${MK_ED_CRYPTO} != "no" +.if ${MK_OPENSSL} != "no" && ${MK_ED_CRYPTO} != "no" CFLAGS+=-DDES DPADD= ${LIBCRYPTO} LDADD= -lcrypto Modified: projects/pciehp/bin/freebsd-version/freebsd-version.1 ============================================================================== --- projects/pciehp/bin/freebsd-version/freebsd-version.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/freebsd-version/freebsd-version.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -121,4 +121,4 @@ command appeared in The .Nm utility and this manual page were written by -.An Dag-Erling Sm\(/orgrav Aq des@FreeBSD.org . +.An Dag-Erling Sm\(/orgrav Aq Mt des@FreeBSD.org . Modified: projects/pciehp/bin/ls/Makefile ============================================================================== --- projects/pciehp/bin/ls/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/ls/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -11,8 +11,8 @@ LDADD= -lutil .if !defined(RELEASE_CRUNCH) && \ ${MK_LS_COLORS} != no CFLAGS+= -DCOLORLS -DPADD+= ${LIBTERMCAP} -LDADD+= -ltermcap +DPADD+= ${LIBTERMCAPW} +LDADD+= -ltermcapw .endif .include Modified: projects/pciehp/bin/mv/mv.c ============================================================================== --- projects/pciehp/bin/mv/mv.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/mv/mv.c Fri Aug 1 17:24:36 2014 (r269389) @@ -278,6 +278,7 @@ fastcopy(const char *from, const char *t static char *bp = NULL; mode_t oldmode; int nread, from_fd, to_fd; + struct stat tsb; if ((from_fd = open(from, O_RDONLY, 0)) < 0) { warn("fastcopy: open() failed (from): %s", from); @@ -336,10 +337,18 @@ err: if (unlink(to)) * if the server supports flags and we were trying to *remove* flags * on a file that we copied, i.e., that we didn't create.) */ - errno = 0; - if (fchflags(to_fd, sbp->st_flags)) - if (errno != EOPNOTSUPP || sbp->st_flags != 0) - warn("%s: set flags (was: 0%07o)", to, sbp->st_flags); + if (fstat(to_fd, &tsb) == 0) { + if ((sbp->st_flags & ~UF_ARCHIVE) != + (tsb.st_flags & ~UF_ARCHIVE)) { + if (fchflags(to_fd, + sbp->st_flags | (tsb.st_flags & UF_ARCHIVE))) + if (errno != EOPNOTSUPP || + ((sbp->st_flags & ~UF_ARCHIVE) != 0)) + warn("%s: set flags (was: 0%07o)", + to, sbp->st_flags); + } + } else + warn("%s: cannot stat", to); tval[0].tv_sec = sbp->st_atime; tval[1].tv_sec = sbp->st_mtime; Modified: projects/pciehp/bin/pkill/pkill.1 ============================================================================== --- projects/pciehp/bin/pkill/pkill.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/pkill/pkill.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -291,5 +291,4 @@ Solaris 7. They made their first appearance in .Fx 5.3 . .Sh AUTHORS -.An Andrew Doran -.Aq ad@NetBSD.org +.An Andrew Doran Aq Mt ad@NetBSD.org Modified: projects/pciehp/bin/ps/keyword.c ============================================================================== --- projects/pciehp/bin/ps/keyword.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/ps/keyword.c Fri Aug 1 17:24:36 2014 (r269389) @@ -87,8 +87,10 @@ static VAR var[] = { {"etimes", "ELAPSED", NULL, USER, elapseds, 0, CHAR, NULL, 0}, {"euid", "", "uid", 0, NULL, 0, CHAR, NULL, 0}, {"f", "F", NULL, 0, kvar, KOFF(ki_flag), INT, "x", 0}, + {"f2", "F2", NULL, 0, kvar, KOFF(ki_flag2), INT, "08x", 0}, {"fib", "FIB", NULL, 0, kvar, KOFF(ki_fibnum), INT, "d", 0}, {"flags", "", "f", 0, NULL, 0, CHAR, NULL, 0}, + {"flags2", "", "f2", 0, NULL, 0, CHAR, NULL, 0}, {"gid", "GID", NULL, 0, kvar, KOFF(ki_groups), UINT, UIDFMT, 0}, {"group", "GROUP", NULL, LJUST, egroupname, 0, CHAR, NULL, 0}, {"ignored", "", "sigignore", 0, NULL, 0, CHAR, NULL, 0}, Modified: projects/pciehp/bin/ps/ps.1 ============================================================================== --- projects/pciehp/bin/ps/ps.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/ps/ps.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd May 2, 2014 +.Dd June 6, 2014 .Dt PS 1 .Os .Sh NAME @@ -340,6 +340,15 @@ the include file .It Dv "P_SWAPPINGIN" Ta No "0x40000000" Ta "Process is being swapped in" .It Dv "P_PPTRACE" Ta No "0x80000000" Ta "Vforked child issued ptrace(PT_TRACEME)" .El +.It Cm flags2 +The flags kept in +.Va p_flag2 +associated with the process as in +the include file +.In sys/proc.h : +.Bl -column P2_INHERIT_PROTECTED 0x00000001 +.It Dv "P2_INHERIT_PROTECTED" Ta No "0x00000001" Ta "New children get P_PROTECTED" +.El .It Cm label The MAC label of the process. .It Cm lim @@ -534,6 +543,9 @@ default FIB number, see .It Cm flags the process flags, in hexadecimal (alias .Cm f ) +.It Cm flags2 +the additional set of process flags, in hexadecimal (alias +.Cm f2 ) .It Cm gid effective group ID (alias .Cm egid ) Modified: projects/pciehp/bin/rm/rm.1 ============================================================================== --- projects/pciehp/bin/rm/rm.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/rm/rm.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -121,7 +121,6 @@ each directory's contents are processed is made to remove the directory). If the user does not respond affirmatively, the file hierarchy rooted in that directory is skipped. -.Pp .It Fl r Equivalent to .Fl R . Modified: projects/pciehp/bin/rm/rm.c ============================================================================== --- projects/pciehp/bin/rm/rm.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/rm/rm.c Fri Aug 1 17:24:36 2014 (r269389) @@ -335,7 +335,7 @@ err: warn("%s", p->fts_path); eval = 1; } - if (errno) + if (!fflag && errno) err(1, "fts_read"); fts_close(fts); } Modified: projects/pciehp/bin/rmail/Makefile ============================================================================== --- projects/pciehp/bin/rmail/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/rmail/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -14,6 +14,8 @@ MAN= rmail.8 WARNS?= 2 CFLAGS+=-I${SENDMAIL_DIR}/include -I. +NO_PIE= yes + LIBSMDIR= ${.OBJDIR}/../../lib/libsm LIBSM= ${LIBSMDIR}/libsm.a Modified: projects/pciehp/bin/setfacl/setfacl.1 ============================================================================== --- projects/pciehp/bin/setfacl/setfacl.1 Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/setfacl/setfacl.1 Fri Aug 1 17:24:36 2014 (r269389) @@ -485,6 +485,6 @@ NFSv4 ACL support was introduced in The .Nm utility was written by -.An Chris D. Faulhaber Aq jedgar@fxp.org . +.An Chris D. Faulhaber Aq Mt jedgar@fxp.org . NFSv4 ACL support was implemented by -.An Edward Tomasz Napierala Aq trasz@FreeBSD.org . +.An Edward Tomasz Napierala Aq Mt trasz@FreeBSD.org . Modified: projects/pciehp/bin/sh/Makefile ============================================================================== --- projects/pciehp/bin/sh/Makefile Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/Makefile Fri Aug 1 17:24:36 2014 (r269389) @@ -18,8 +18,8 @@ SRCS= ${SHSRCS} ${GENSRCS} ${GENHDRS} # utilities of the same name are handled with the associated manpage, # builtin.1 in share/man/man1/. -DPADD= ${LIBEDIT} ${LIBTERMCAP} -LDADD= -ledit -ltermcap +DPADD= ${LIBEDIT} ${LIBTERMCAPW} +LDADD= -ledit -ltermcapw CFLAGS+=-DSHELL -I. -I${.CURDIR} # for debug: Modified: projects/pciehp/bin/sh/arith_yacc.c ============================================================================== --- projects/pciehp/bin/sh/arith_yacc.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/arith_yacc.c Fri Aug 1 17:24:36 2014 (r269389) @@ -139,7 +139,7 @@ static arith_t do_binop(int op, arith_t case ARITH_SUB: return (uintmax_t)a - (uintmax_t)b; case ARITH_LSHIFT: - return a << b; + return (uintmax_t)a << b; case ARITH_RSHIFT: return a >> b; case ARITH_LT: Modified: projects/pciehp/bin/sh/eval.c ============================================================================== --- projects/pciehp/bin/sh/eval.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/eval.c Fri Aug 1 17:24:36 2014 (r269389) @@ -1250,8 +1250,16 @@ bltincmd(int argc, char **argv) int breakcmd(int argc, char **argv) { - int n = argc > 1 ? number(argv[1]) : 1; + long n; + char *end; + if (argc > 1) { + /* Allow arbitrarily large numbers. */ + n = strtol(argv[1], &end, 10); + if (!is_digit(argv[1][0]) || *end != '\0') + error("Illegal number: %s", argv[1]); + } else + n = 1; if (n > loopnest) n = loopnest; if (n > 0) { Modified: projects/pciehp/bin/sh/exec.c ============================================================================== --- projects/pciehp/bin/sh/exec.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/exec.c Fri Aug 1 17:24:36 2014 (r269389) @@ -362,15 +362,13 @@ find_command(const char *name, struct cm e = ENOENT; idx = -1; -loop: - while ((fullname = padvance(&path, name)) != NULL) { - stunalloc(fullname); + for (;(fullname = padvance(&path, name)) != NULL; stunalloc(fullname)) { idx++; if (pathopt) { - if (prefix("func", pathopt)) { + if (strncmp(pathopt, "func", 4) == 0) { /* handled below */ } else { - goto loop; /* ignore unimplemented options */ + continue; /* ignore unimplemented options */ } } if (fullname[0] != '/') @@ -378,13 +376,12 @@ loop: if (stat(fullname, &statb) < 0) { if (errno != ENOENT && errno != ENOTDIR) e = errno; - goto loop; + continue; } e = EACCES; /* if we fail, this will be the error */ if (!S_ISREG(statb.st_mode)) - goto loop; + continue; if (pathopt) { /* this is a %func directory */ - stalloc(strlen(fullname) + 1); readcmdfile(fullname); if ((cmdp = cmdlookup(name, 0)) == NULL || cmdp->cmdtype != CMDFUNCTION) error("%s not defined in %s", name, fullname); @@ -405,6 +402,7 @@ loop: #endif TRACE(("searchexec \"%s\" returns \"%s\"\n", name, fullname)); INTOFF; + stunalloc(fullname); cmdp = cmdlookup(name, 1); if (cmdp->cmdtype == CMDFUNCTION) cmdp = &loc_cmd; Modified: projects/pciehp/bin/sh/expand.c ============================================================================== --- projects/pciehp/bin/sh/expand.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/expand.c Fri Aug 1 17:24:36 2014 (r269389) @@ -846,9 +846,11 @@ varisset(const char *name, int nulok) } } else if (is_digit(*name)) { char *ap; - int num = atoi(name); + long num; - if (num > shellparam.nparam) + errno = 0; + num = strtol(name, NULL, 10); + if (errno != 0 || num > shellparam.nparam) return 0; if (num == 0) @@ -928,17 +930,16 @@ numvar: STPUTC(sep, expdest); } break; - case '0': - p = arg0; - strtodest(p, flag, subtype, quoted); - break; default: if (is_digit(*name)) { num = atoi(name); - if (num > 0 && num <= shellparam.nparam) { + if (num == 0) + p = arg0; + else if (num > 0 && num <= shellparam.nparam) p = shellparam.p[num - 1]; - strtodest(p, flag, subtype, quoted); - } + else + break; + strtodest(p, flag, subtype, quoted); } break; } Modified: projects/pciehp/bin/sh/jobs.c ============================================================================== --- projects/pciehp/bin/sh/jobs.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/jobs.c Fri Aug 1 17:24:36 2014 (r269389) @@ -562,6 +562,7 @@ getjob_nonotfound(const char *name) { int jobno; struct job *found, *jp; + size_t namelen; pid_t pid; int i; @@ -603,10 +604,12 @@ currentjob: if ((jp = getcurjob(NULL)) = if (found != NULL) return (found); } else { + namelen = strlen(name); found = NULL; for (jp = jobtab, i = njobs ; --i >= 0 ; jp++) { if (jp->used && jp->nprocs > 0 - && prefix(name + 1, jp->ps[0].cmd)) { + && strncmp(jp->ps[0].cmd, name + 1, + namelen - 1) == 0) { if (found) error("%s: ambiguous", name); found = jp; Modified: projects/pciehp/bin/sh/miscbltin.c ============================================================================== --- projects/pciehp/bin/sh/miscbltin.c Fri Aug 1 17:09:50 2014 (r269388) +++ projects/pciehp/bin/sh/miscbltin.c Fri Aug 1 17:24:36 2014 (r269389) @@ -411,13 +411,32 @@ static const struct limits limits[] = { { (char *) 0, (char *)0, 0, 0, '\0' } }; *** DIFF OUTPUT TRUNCATED AT 1000 LINES *** From owner-svn-src-projects@FreeBSD.ORG Sat Aug 2 17:18:48 2014 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id B90E43F1; Sat, 2 Aug 2014 17:18:48 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id A55AC27D2; Sat, 2 Aug 2014 17:18:48 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s72HImPr073260; Sat, 2 Aug 2014 17:18:48 GMT (envelope-from melifaro@svn.freebsd.org) Received: (from melifaro@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s72HIllo073252; Sat, 2 Aug 2014 17:18:47 GMT (envelope-from melifaro@svn.freebsd.org) Message-Id: <201408021718.s72HIllo073252@svn.freebsd.org> From: "Alexander V. Chernikov" Date: Sat, 2 Aug 2014 17:18:47 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r269435 - projects/ipfw/sys/netpfil/ipfw X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 02 Aug 2014 17:18:48 -0000 Author: melifaro Date: Sat Aug 2 17:18:47 2014 New Revision: 269435 URL: http://svnweb.freebsd.org/changeset/base/269435 Log: * Fix case when returning more that 4096 bytes of data * Use different approach to ensure algo has enough space to store N elements: - explicitly ask algo (under UH_WLOCK) before/after insertion. This (along with existing reallocation callbacks) really guarantees us that it is safe to insert N elements at once while holding UH_WLOCK+WLOCK. - remove old aflags/flags approach Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Sat Aug 2 16:45:55 2014 (r269434) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_private.h Sat Aug 2 17:18:47 2014 (r269435) @@ -305,6 +305,7 @@ struct sockopt_data { size_t kavail; /* number of bytes available */ size_t ktotal; /* total bytes pushed */ struct sockopt *sopt; /* socket data */ + caddr_t sopt_val; /* sopt user buffer */ size_t valsize; /* original data size */ }; Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Sat Aug 2 16:45:55 2014 (r269434) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_sockopt.c Sat Aug 2 17:18:47 2014 (r269435) @@ -1807,6 +1807,7 @@ ipfw_ctl3(struct sockopt *sopt) } sdata.sopt = sopt; + sdata.sopt_val = sopt->sopt_val; sdata.valsize = valsize; /* @@ -1906,6 +1907,9 @@ ipfw_ctl3(struct sockopt *sopt) else ipfw_flush_sopt_data(&sdata); + /* Restore original pointer and set number of bytes written */ + sopt->sopt_val = sdata.sopt_val; + sopt->sopt_valsize = sdata.ktotal; if (sdata.kbuf != xbuf) free(sdata.kbuf, M_TEMP); @@ -2113,8 +2117,8 @@ ipfw_ctl(struct sockopt *sopt) ti.type = IPFW_TABLE_CIDR; error = (opt == IP_FW_TABLE_ADD) ? - add_table_entry(chain, &ti, &tei) : - del_table_entry(chain, &ti, &tei); + add_table_entry(chain, &ti, &tei, 1) : + del_table_entry(chain, &ti, &tei, 1); } break; @@ -2239,12 +2243,13 @@ static int ipfw_flush_sopt_data(struct sockopt_data *sd) { int error; + size_t sz; - if (sd->koff == 0) + if ((sz = sd->koff) == 0) return (0); if (sd->sopt->sopt_dir == SOPT_GET) { - error = sooptcopyout(sd->sopt, sd->kbuf, sd->koff); + error = sooptcopyout(sd->sopt, sd->kbuf, sz); if (error != 0) return (error); } @@ -2257,6 +2262,10 @@ ipfw_flush_sopt_data(struct sockopt_data else sd->kavail = sd->valsize - sd->ktotal; + /* Update sopt buffer */ + sd->sopt->sopt_valsize = sd->kavail; + sd->sopt->sopt_val = sd->sopt_val + sd->ktotal; + return (0); } Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Sat Aug 2 16:45:55 2014 (r269434) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.c Sat Aug 2 17:18:47 2014 (r269435) @@ -81,7 +81,6 @@ struct table_config { uint8_t spare; uint32_t count; /* Number of records */ uint32_t limit; /* Max number of records */ - uint64_t flags; /* state flags */ char tablename[64]; /* table name */ struct table_algo *ta; /* Callbacks for given algo */ void *astate; /* algorithm state */ @@ -121,8 +120,8 @@ static int ipfw_manage_table_ent_v0(stru static int ipfw_manage_table_ent_v1(struct ip_fw_chain *ch, ip_fw3_opheader *op3, struct sockopt_data *sd); -static int modify_table(struct ip_fw_chain *ch, struct table_config *tc, - struct table_algo *ta, void *ta_buf, uint64_t pflags); +static int check_table_space(struct ip_fw_chain *ch, struct table_config *tc, + struct table_info *ti, uint32_t count); static int destroy_table(struct ip_fw_chain *ch, struct tid_info *ti); static struct table_algo *find_table_algo(struct tables_config *tableconf, @@ -132,10 +131,12 @@ static struct table_algo *find_table_alg #define CHAIN_TO_NI(chain) (CHAIN_TO_TCFG(chain)->namehash) #define KIDX_TO_TI(ch, k) (&(((struct table_info *)(ch)->tablestate)[k])) +#define TA_BUF_SZ 128 /* On-stack buffer for add/delete state */ + int add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, - struct tentry_info *tei) + struct tentry_info *tei, uint32_t count) { struct table_config *tc; struct table_algo *ta; @@ -143,9 +144,8 @@ add_table_entry(struct ip_fw_chain *ch, uint16_t kidx; int error; uint32_t num; - uint64_t aflags; - ipfw_xtable_info xi; - char ta_buf[128]; + ipfw_xtable_info *xi; + char ta_buf[TA_BUF_SZ]; IPFW_UH_WLOCK(ch); ni = CHAIN_TO_NI(ch); @@ -171,7 +171,6 @@ add_table_entry(struct ip_fw_chain *ch, /* Reference and unlock */ tc->no.refcnt++; ta = tc->ta; - aflags = tc->flags; } IPFW_UH_WUNLOCK(ch); @@ -180,10 +179,11 @@ add_table_entry(struct ip_fw_chain *ch, if ((tei->flags & TEI_FLAGS_COMPAT) == 0) return (ESRCH); - memset(&xi, 0, sizeof(xi)); - xi.vtype = IPFW_VTYPE_U32; + xi = malloc(sizeof(ipfw_xtable_info), M_TEMP, M_WAITOK|M_ZERO); + xi->vtype = IPFW_VTYPE_U32; - error = create_table_internal(ch, ti, NULL, &xi); + error = create_table_internal(ch, ti, NULL, xi); + free(xi, M_TEMP); if (error != 0) return (error); @@ -203,22 +203,10 @@ add_table_entry(struct ip_fw_chain *ch, /* Reference and unlock */ tc->no.refcnt++; ta = tc->ta; - aflags = tc->flags; IPFW_UH_WUNLOCK(ch); } - if (aflags != 0) { - - /* - * Previous add/delete call returned non-zero state. - * Run appropriate handler. - */ - error = modify_table(ch, tc, ta, &ta_buf, aflags); - if (error != 0) - return (error); - } - /* Prepare record (allocate memory) */ memset(&ta_buf, 0, sizeof(ta_buf)); error = ta->prepare_add(ch, tei, &ta_buf); @@ -227,17 +215,28 @@ add_table_entry(struct ip_fw_chain *ch, IPFW_UH_WLOCK(ch); + /* + * Ensure we are able to add all entries without additional + * memory allocations. May release/reacquire UH_WLOCK. + */ + kidx = tc->no.kidx; + error = check_table_space(ch, tc, KIDX_TO_TI(ch, kidx), count); + if (error != 0) { + IPFW_UH_WUNLOCK(ch); + ta->flush_entry(ch, tei, &ta_buf); + return (error); + } + ni = CHAIN_TO_NI(ch); /* Drop reference we've used in first search */ tc->no.refcnt--; - /* Update aflags since it can be changed after previous read */ - aflags = tc->flags; /* Check limit before adding */ if (tc->limit != 0 && tc->count == tc->limit) { if ((tei->flags & TEI_FLAGS_UPDATE) == 0) { IPFW_UH_WUNLOCK(ch); + ta->flush_entry(ch, tei, &ta_buf); return (EFBIG); } @@ -256,15 +255,15 @@ add_table_entry(struct ip_fw_chain *ch, num = 0; IPFW_WLOCK(ch); - error = ta->add(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, - &aflags, &num); + error = ta->add(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, &num); IPFW_WUNLOCK(ch); /* Update number of records. */ - if (error == 0) + if (error == 0) { tc->count += num; - - tc->flags = aflags; + /* Permit post-add algorithm grow/rehash. */ + error = check_table_space(ch, tc, KIDX_TO_TI(ch, kidx), 0); + } IPFW_UH_WUNLOCK(ch); @@ -276,7 +275,7 @@ add_table_entry(struct ip_fw_chain *ch, int del_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, - struct tentry_info *tei) + struct tentry_info *tei, uint32_t count) { struct table_config *tc; struct table_algo *ta; @@ -284,8 +283,7 @@ del_table_entry(struct ip_fw_chain *ch, uint16_t kidx; int error; uint32_t num; - uint64_t aflags; - char ta_buf[128]; + char ta_buf[TA_BUF_SZ]; IPFW_UH_WLOCK(ch); ni = CHAIN_TO_NI(ch); @@ -299,33 +297,23 @@ del_table_entry(struct ip_fw_chain *ch, return (EINVAL); } - aflags = tc->flags; ta = tc->ta; - if (aflags != 0) { - - /* - * Give the chance to algo to shrink its state. - */ - tc->no.refcnt++; + /* + * Give a chance for algorithm to shrink. + * May release/reacquire UH_WLOCK. + */ + kidx = tc->no.kidx; + error = check_table_space(ch, tc, KIDX_TO_TI(ch, kidx), 0); + if (error != 0) { IPFW_UH_WUNLOCK(ch); - memset(&ta_buf, 0, sizeof(ta_buf)); - - error = modify_table(ch, tc, ta, &ta_buf, aflags); - - IPFW_UH_WLOCK(ch); - tc->no.refcnt--; - aflags = tc->flags; - - if (error != 0) { - IPFW_UH_WUNLOCK(ch); - return (error); - } + ta->flush_entry(ch, tei, &ta_buf); + return (error); } /* * We assume ta_buf size is enough for storing - * prepare_del() key, so we're running under UH_LOCK here. + * prepare_del() key, so we're running under UH_WLOCK here. */ memset(&ta_buf, 0, sizeof(ta_buf)); if ((error = ta->prepare_del(ch, tei, &ta_buf)) != 0) { @@ -337,13 +325,14 @@ del_table_entry(struct ip_fw_chain *ch, num = 0; IPFW_WLOCK(ch); - error = ta->del(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, - &aflags, &num); + error = ta->del(tc->astate, KIDX_TO_TI(ch, kidx), tei, &ta_buf, &num); IPFW_WUNLOCK(ch); - if (error == 0) + if (error == 0) { tc->count -= num; - tc->flags = aflags; + /* Run post-del hook to permit shrinking */ + error = check_table_space(ch, tc, KIDX_TO_TI(ch, kidx), 0); + } IPFW_UH_WUNLOCK(ch); @@ -353,49 +342,88 @@ del_table_entry(struct ip_fw_chain *ch, } /* - * Runs callbacks to modify algo state (typically, table resize). + * Ensure that table @tc has enough space to add @count entries without + * need for reallocation. * * Callbacks order: + * 0) has_space() (UH_WLOCK) - checks if @count items can be added w/o resize. + * * 1) alloc_modify (no locks, M_WAITOK) - alloc new state based on @pflags. * 2) prepare_modifyt (UH_WLOCK) - copy old data into new storage * 3) modify (UH_WLOCK + WLOCK) - switch pointers - * 4) flush_modify (no locks) - free state, if needed + * 4) flush_modify (UH_WLOCK) - free state, if needed + * + * Returns 0 on success. */ static int -modify_table(struct ip_fw_chain *ch, struct table_config *tc, - struct table_algo *ta, void *ta_buf, uint64_t pflags) +check_table_space(struct ip_fw_chain *ch, struct table_config *tc, + struct table_info *ti, uint32_t count) { - struct table_info *ti; + struct table_algo *ta; + uint64_t pflags; + char ta_buf[TA_BUF_SZ]; int error; - error = ta->prepare_mod(ta_buf, &pflags); - if (error != 0) - return (error); - - IPFW_UH_WLOCK(ch); - ti = KIDX_TO_TI(ch, tc->no.kidx); + IPFW_UH_WLOCK_ASSERT(ch); - error = ta->fill_mod(tc->astate, ti, ta_buf, &pflags); + error = 0; + ta = tc->ta; + /* Acquire reference not to loose @tc between locks/unlocks */ + tc->no.refcnt++; /* - * prepare_mofify may return zero in @pflags to - * indicate that modifications are not unnesessary. + * TODO: think about avoiding race between large add/large delete + * operation on algorithm which implements shrinking along with + * growing. */ + while (true) { + pflags = 0; + if (ta->has_space(tc->astate, ti, count, &pflags) != 0) { + tc->no.refcnt--; + return (0); + } - if (error == 0 && pflags != 0) { - /* Do actual modification */ - IPFW_WLOCK(ch); - ta->modify(tc->astate, ti, ta_buf, pflags); - IPFW_WUNLOCK(ch); - } + /* We have to shrink/grow table */ + IPFW_UH_WUNLOCK(ch); + memset(&ta_buf, 0, sizeof(ta_buf)); + + if ((error = ta->prepare_mod(ta_buf, &pflags)) != 0) { + IPFW_UH_WLOCK(ch); + break; + } - IPFW_UH_WUNLOCK(ch); + IPFW_UH_WLOCK(ch); - ta->flush_mod(ta_buf); + /* Check if we still need to alter table */ + ti = KIDX_TO_TI(ch, tc->no.kidx); + if (ta->has_space(tc->astate, ti, count, &pflags) != 0) { + /* + * Other threads has already performed resize. + * Flush our state and return/ + */ + ta->flush_mod(ta_buf); + break; + } + + error = ta->fill_mod(tc->astate, ti, ta_buf, &pflags); + if (error == 0) { + /* Do actual modification */ + IPFW_WLOCK(ch); + ta->modify(tc->astate, ti, ta_buf, pflags); + IPFW_WUNLOCK(ch); + } + + /* Anyway, flush data and retry */ + ta->flush_mod(ta_buf); + } + + tc->no.refcnt--; return (error); } + + int ipfw_manage_table_ent(struct ip_fw_chain *ch, ip_fw3_opheader *op3, struct sockopt_data *sd) @@ -463,8 +491,8 @@ ipfw_manage_table_ent_v0(struct ip_fw_ch ti.type = xent->type; error = (op3->opcode == IP_FW_TABLE_XADD) ? - add_table_entry(ch, &ti, &tei) : - del_table_entry(ch, &ti, &tei); + add_table_entry(ch, &ti, &tei, 1) : + del_table_entry(ch, &ti, &tei, 1); return (error); } @@ -538,8 +566,8 @@ ipfw_manage_table_ent_v1(struct ip_fw_ch ti.uidx = tent->idx; error = (oh->opheader.opcode == IP_FW_TABLE_XADD) ? - add_table_entry(ch, &ti, &tei) : - del_table_entry(ch, &ti, &tei); + add_table_entry(ch, &ti, &tei, 1) : + del_table_entry(ch, &ti, &tei, 1); return (error); } @@ -1614,16 +1642,28 @@ find_table_algo(struct tables_config *tc return (tcfg->def_algo[ti->type]); } +/* + * Register new table algo @ta. + * Stores algo id iside @idx. + * + * Returns 0 on success. + */ int ipfw_add_table_algo(struct ip_fw_chain *ch, struct table_algo *ta, size_t size, int *idx) { struct tables_config *tcfg; struct table_algo *ta_new; + size_t sz; if (size > sizeof(struct table_algo)) return (EINVAL); + /* Check for the required on-stack size for add/del */ + sz = roundup2(ta->ta_buf_size, sizeof(void *)); + if (sz > TA_BUF_SZ) + return (EINVAL); + KASSERT(ta->type >= IPFW_TABLE_MAXTYPE,("Increase IPFW_TABLE_MAXTYPE")); ta_new = malloc(sizeof(struct table_algo), M_IPFW, M_WAITOK | M_ZERO); @@ -1646,6 +1686,9 @@ ipfw_add_table_algo(struct ip_fw_chain * return (0); } +/* + * Unregisters table algo using @idx as id. + */ void ipfw_del_table_algo(struct ip_fw_chain *ch, int idx) { @@ -1654,8 +1697,8 @@ ipfw_del_table_algo(struct ip_fw_chain * tcfg = CHAIN_TO_TCFG(ch); - KASSERT(idx <= tcfg->algo_count, ("algo idx %d out of rage 1..%d", idx, - tcfg->algo_count)); + KASSERT(idx <= tcfg->algo_count, ("algo idx %d out of range 1..%d", + idx, tcfg->algo_count)); ta = tcfg->algo[idx]; KASSERT(ta != NULL, ("algo idx %d is NULL", idx)); Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Sat Aug 2 16:45:55 2014 (r269434) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table.h Sat Aug 2 17:18:47 2014 (r269435) @@ -71,12 +71,14 @@ typedef int (ta_prepare_add)(struct ip_f typedef int (ta_prepare_del)(struct ip_fw_chain *ch, struct tentry_info *tei, void *ta_buf); typedef int (ta_add)(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags, uint32_t *pnum); + struct tentry_info *tei, void *ta_buf, uint32_t *pnum); typedef int (ta_del)(void *ta_state, struct table_info *ti, - struct tentry_info *tei, void *ta_buf, uint64_t *pflags, uint32_t *pnum); + struct tentry_info *tei, void *ta_buf, uint32_t *pnum); typedef void (ta_flush_entry)(struct ip_fw_chain *ch, struct tentry_info *tei, void *ta_buf); +typedef int (ta_has_space)(void *ta_state, struct table_info *ti, + uint32_t count, uint64_t *pflags); typedef int (ta_prepare_mod)(void *ta_buf, uint64_t *pflags); typedef int (ta_fill_mod)(void *ta_state, struct table_info *ti, void *ta_buf, uint64_t *pflags); @@ -113,6 +115,7 @@ struct table_algo { ta_del *del; ta_flush_entry *flush_entry; ta_find_tentry *find_tentry; + ta_has_space *has_space; ta_prepare_mod *prepare_mod; ta_fill_mod *fill_mod; ta_modify *modify; @@ -151,9 +154,9 @@ int ipfw_flush_table(struct ip_fw_chain int ipfw_list_table_algo(struct ip_fw_chain *ch, struct sockopt_data *sd); /* Exported to support legacy opcodes */ int add_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, - struct tentry_info *tei); + struct tentry_info *tei, uint32_t count); int del_table_entry(struct ip_fw_chain *ch, struct tid_info *ti, - struct tentry_info *tei); + struct tentry_info *tei, uint32_t count); int flush_table(struct ip_fw_chain *ch, struct tid_info *ti); int ipfw_rewrite_table_uidx(struct ip_fw_chain *chain, Modified: projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c ============================================================================== --- projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Sat Aug 2 16:45:55 2014 (r269434) +++ projects/ipfw/sys/netpfil/ipfw/ip_fw_table_algo.c Sat Aug 2 17:18:47 2014 (r269435) @@ -397,7 +397,7 @@ ta_prepare_add_cidr(struct ip_fw_chain * static int ta_add_cidr(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct radix_node_head *rnh; struct radix_node *rn; @@ -489,7 +489,7 @@ ta_prepare_del_cidr(struct ip_fw_chain * static int ta_del_cidr(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct radix_node_head *rnh; struct radix_node *rn; @@ -526,6 +526,20 @@ ta_flush_cidr_entry(struct ip_fw_chain * free(tb->ent_ptr, M_IPFW_TBL); } +static int +ta_has_space_radix(void *ta_state, struct table_info *ti, uint32_t count, + uint64_t *pflags) +{ + + /* + * radix does not not require additional memory allocations + * other than nodes itself. Adding new masks to the tree do + * but we don't have any API to call (and we don't known which + * sizes do we need). + */ + return (1); +} + struct table_algo cidr_radix = { .name = "cidr:radix", .type = IPFW_TABLE_CIDR, @@ -541,6 +555,7 @@ struct table_algo cidr_radix = { .foreach = ta_foreach_radix, .dump_tentry = ta_dump_radix_tentry, .find_tentry = ta_find_radix_tentry, + .has_space = ta_has_space_radix, }; @@ -1115,7 +1130,7 @@ ta_prepare_add_chash(struct ip_fw_chain static int ta_add_chash(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct chash_cfg *ccfg; struct chashbhead *head; @@ -1172,16 +1187,11 @@ ta_add_chash(void *ta_state, struct tabl tb->ent_ptr = NULL; *pnum = 1; - /* Update counters and check if we need to grow hash */ - if (tei->subtype == AF_INET) { + /* Update counters */ + if (tei->subtype == AF_INET) ccfg->items4++; - if (ccfg->items4 > ccfg->size4 && ccfg->size4 < 65536) - *pflags = (ccfg->size4 * 2) | (1UL << 32); - } else { + else ccfg->items6++; - if (ccfg->items6 > ccfg->size6 && ccfg->size6 < 65536) - *pflags = ccfg->size6 * 2; - } } return (0); @@ -1200,7 +1210,7 @@ ta_prepare_del_chash(struct ip_fw_chain static int ta_del_chash(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct chash_cfg *ccfg; struct chashbhead *head; @@ -1263,8 +1273,39 @@ ta_flush_chash_entry(struct ip_fw_chain struct mod_item { void *main_ptr; size_t size; + void *main_ptr6; + size_t size6; }; +static int +ta_has_space_chash(void *ta_state, struct table_info *ti, uint32_t count, + uint64_t *pflags) +{ + struct chash_cfg *cfg; + uint64_t data; + + /* + * Since we don't know exact number of IPv4/IPv6 records in @count, + * ignore non-zero @count value at all. Check current hash sizes + * and return appropriate data. + */ + + cfg = (struct chash_cfg *)ta_state; + + data = 0; + if (cfg->items4 > cfg->size4 && cfg->size4 < 65536) + data |= (cfg->size4 * 2) << 16; + if (cfg->items6 > cfg->size6 && cfg->size6 < 65536) + data |= cfg->size6 * 2; + + if (data != 0) { + *pflags = data; + return (0); + } + + return (1); +} + /* * Allocate new, larger chash. */ @@ -1278,13 +1319,23 @@ ta_prepare_mod_chash(void *ta_buf, uint6 mi = (struct mod_item *)ta_buf; memset(mi, 0, sizeof(struct mod_item)); - mi->size = *pflags & 0xFFFFFFFF; - head = malloc(sizeof(struct chashbhead) * mi->size, M_IPFW, - M_WAITOK | M_ZERO); - for (i = 0; i < mi->size; i++) - SLIST_INIT(&head[i]); - - mi->main_ptr = head; + mi->size = (*pflags >> 16) & 0xFFFF; + mi->size6 = *pflags & 0xFFFF; + if (mi->size > 0) { + head = malloc(sizeof(struct chashbhead) * mi->size, + M_IPFW, M_WAITOK | M_ZERO); + for (i = 0; i < mi->size; i++) + SLIST_INIT(&head[i]); + mi->main_ptr = head; + } + + if (mi->size6 > 0) { + head = malloc(sizeof(struct chashbhead) * mi->size6, + M_IPFW, M_WAITOK | M_ZERO); + for (i = 0; i < mi->size6; i++) + SLIST_INIT(&head[i]); + mi->main_ptr6 = head; + } return (0); } @@ -1301,7 +1352,6 @@ ta_fill_mod_chash(void *ta_state, struct return (0); } - /* * Switch old & new arrays. */ @@ -1310,54 +1360,62 @@ ta_modify_chash(void *ta_state, struct t uint64_t pflags) { struct mod_item *mi; - struct chash_cfg *ccfg; + struct chash_cfg *cfg; struct chashbhead *old_head, *new_head; struct chashentry *ent, *ent_next; int af, i, mlen; uint32_t nhash; - size_t old_size; + size_t old_size, new_size; mi = (struct mod_item *)ta_buf; - ccfg = (struct chash_cfg *)ta_state; + cfg = (struct chash_cfg *)ta_state; /* Check which hash we need to grow and do we still need that */ - if ((pflags >> 32) == 1) { - old_size = ccfg->size4; + if (mi->size > 0 && cfg->size4 < mi->size) { + new_head = (struct chashbhead *)mi->main_ptr; + new_size = mi->size; + old_size = cfg->size4; old_head = ti->state; - mlen = ccfg->mask4; + mlen = cfg->mask4; af = AF_INET; - } else { - old_size = ccfg->size6; + + for (i = 0; i < old_size; i++) { + SLIST_FOREACH_SAFE(ent, &old_head[i], next, ent_next) { + nhash = hash_ent(ent, af, mlen, new_size); + SLIST_INSERT_HEAD(&new_head[nhash], ent, next); + } + } + + ti->state = new_head; + cfg->head4 = new_head; + cfg->size4 = mi->size; + mi->main_ptr = old_head; + } + + if (mi->size6 > 0 && cfg->size6 < mi->size6) { + new_head = (struct chashbhead *)mi->main_ptr6; + new_size = mi->size6; + old_size = cfg->size6; old_head = ti->xstate; - mlen = ccfg->mask6; + mlen = cfg->mask6; af = AF_INET6; - } - if (old_size >= mi->size) - return (0); - - new_head = (struct chashbhead *)mi->main_ptr; - for (i = 0; i < old_size; i++) { - SLIST_FOREACH_SAFE(ent, &old_head[i], next, ent_next) { - nhash = hash_ent(ent, af, mlen, mi->size); - SLIST_INSERT_HEAD(&new_head[nhash], ent, next); + for (i = 0; i < old_size; i++) { + SLIST_FOREACH_SAFE(ent, &old_head[i], next, ent_next) { + nhash = hash_ent(ent, af, mlen, new_size); + SLIST_INSERT_HEAD(&new_head[nhash], ent, next); + } } - } - if (af == AF_INET) { - ti->state = new_head; - ccfg->head4 = new_head; - ccfg->size4 = mi->size; - } else { ti->xstate = new_head; - ccfg->head6 = new_head; - ccfg->size6 = mi->size; + cfg->head6 = new_head; + cfg->size6 = mi->size6; + mi->main_ptr6 = old_head; } - ti->data = (ti->data & 0xFFFFFFFF00000000) | log2(ccfg->size4) << 8 | - log2(ccfg->size6); - - mi->main_ptr = old_head; + /* Update lower 32 bits with new values */ + ti->data &= 0xFFFFFFFF00000000; + ti->data |= log2(cfg->size4) << 8 | log2(cfg->size6); return (0); } @@ -1373,6 +1431,8 @@ ta_flush_mod_chash(void *ta_buf) mi = (struct mod_item *)ta_buf; if (mi->main_ptr != NULL) free(mi->main_ptr, M_IPFW); + if (mi->main_ptr6 != NULL) + free(mi->main_ptr6, M_IPFW); } struct table_algo cidr_hash = { @@ -1390,6 +1450,7 @@ struct table_algo cidr_hash = { .dump_tentry = ta_dump_chash_tentry, .find_tentry = ta_find_chash_tentry, .print_config = ta_print_chash_config, + .has_space = ta_has_space_chash, .prepare_mod = ta_prepare_mod_chash, .fill_mod = ta_fill_mod_chash, .modify = ta_modify_chash, @@ -1678,7 +1739,7 @@ ta_prepare_add_ifidx(struct ip_fw_chain static int ta_add_ifidx(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct iftable_cfg *icfg; struct ifentry *ife, *tmp; @@ -1726,11 +1787,6 @@ ta_add_ifidx(void *ta_state, struct tabl ipfw_iface_add_notify(icfg->ch, &ife->ic); icfg->count++; - if (icfg->count + 1 == icfg->size) { - /* Notify core we need to grow */ - *pflags = icfg->size + IFIDX_CHUNK; - } - tb->ife = NULL; *pnum = 1; @@ -1764,7 +1820,7 @@ ta_prepare_del_ifidx(struct ip_fw_chain */ static int ta_del_ifidx(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct iftable_cfg *icfg; struct ifentry *ife; @@ -1883,6 +1939,22 @@ struct mod_ifidx { size_t size; }; +static int +ta_has_space_ifidx(void *ta_state, struct table_info *ti, uint32_t count, + uint64_t *pflags) +{ + struct iftable_cfg *cfg; + + cfg = (struct iftable_cfg *)ta_state; + + if (cfg->count + count > cfg->size) { + *pflags = roundup2(cfg->count + count, IFIDX_CHUNK); + return (0); + } + + return (1); +} + /* * Allocate ned, larger runtime ifidx array. */ @@ -2049,6 +2121,7 @@ struct table_algo iface_idx = { .foreach = ta_foreach_ifidx, .dump_tentry = ta_dump_ifidx_tentry, .find_tentry = ta_find_ifidx_tentry, + .has_space = ta_has_space_ifidx, .prepare_mod = ta_prepare_mod_ifidx, .fill_mod = ta_fill_mod_ifidx, .modify = ta_modify_ifidx, @@ -2186,7 +2259,7 @@ ta_prepare_add_numarray(struct ip_fw_cha static int ta_add_numarray(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct numarray_cfg *cfg; struct ta_buf_numarray *tb; @@ -2219,11 +2292,6 @@ ta_add_numarray(void *ta_state, struct t KASSERT(res == 1, ("number %d already exists", tb->na.number)); cfg->used++; ti->data = cfg->used; - - if (cfg->used + 1 == cfg->size) { - /* Notify core we need to grow */ - *pflags = cfg->size + NUMARRAY_CHUNK; - } *pnum = 1; return (0); @@ -2235,7 +2303,7 @@ ta_add_numarray(void *ta_state, struct t */ static int ta_del_numarray(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct numarray_cfg *cfg; struct ta_buf_numarray *tb; @@ -2255,7 +2323,6 @@ ta_del_numarray(void *ta_state, struct t KASSERT(res == 1, ("number %u does not exist", tb->na.number)); cfg->used--; ti->data = cfg->used; - *pnum = 1; return (0); @@ -2274,8 +2341,24 @@ ta_flush_numarray_entry(struct ip_fw_cha * Table growing callbacks. */ +static int +ta_has_space_numarray(void *ta_state, struct table_info *ti, uint32_t count, + uint64_t *pflags) +{ + struct numarray_cfg *cfg; + + cfg = (struct numarray_cfg *)ta_state; + + if (cfg->used + count > cfg->size) { + *pflags = roundup2(cfg->used + count, NUMARRAY_CHUNK); + return (0); + } + + return (1); +} + /* - * Allocate ned, larger runtime numarray array. + * Allocate new, larger runtime array. */ static int ta_prepare_mod_numarray(void *ta_buf, uint64_t *pflags) @@ -2415,6 +2498,7 @@ struct table_algo number_array = { .foreach = ta_foreach_numarray, .dump_tentry = ta_dump_numarray_tentry, .find_tentry = ta_find_numarray_tentry, + .has_space = ta_has_space_numarray, .prepare_mod = ta_prepare_mod_numarray, .fill_mod = ta_fill_mod_numarray, .modify = ta_modify_numarray, @@ -2437,8 +2521,8 @@ struct table_algo number_array = { * * * pflags: - * [v4=1/v6=0][hsize] - * [ 32][ 32] + * [hsize4][hsize6] + * [ 16][ 16] */ struct fhashentry; @@ -2858,7 +2942,7 @@ ta_prepare_add_fhash(struct ip_fw_chain static int ta_add_fhash(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct fhash_cfg *cfg; struct fhashbhead *head; @@ -2907,8 +2991,6 @@ ta_add_fhash(void *ta_state, struct tabl /* Update counters and check if we need to grow hash */ cfg->items++; - if (cfg->items > cfg->size && cfg->size < 65536) - *pflags = cfg->size * 2; } return (0); @@ -2927,7 +3009,7 @@ ta_prepare_del_fhash(struct ip_fw_chain static int ta_del_fhash(void *ta_state, struct table_info *ti, struct tentry_info *tei, - void *ta_buf, uint64_t *pflags, uint32_t *pnum) + void *ta_buf, uint32_t *pnum) { struct fhash_cfg *cfg; struct fhashbhead *head; @@ -2977,6 +3059,22 @@ ta_flush_fhash_entry(struct ip_fw_chain * Hash growing callbacks. */ +static int +ta_has_space_fhash(void *ta_state, struct table_info *ti, uint32_t count, + uint64_t *pflags) +{ + struct fhash_cfg *cfg; + + cfg = (struct fhash_cfg *)ta_state; + + if (cfg->items > cfg->size && cfg->size < 65536) { + *pflags = cfg->size * 2; + return (0); + } + + return (1); +} + /* * Allocate new, larger fhash. */ @@ -3085,6 +3183,7 @@ struct table_algo flow_hash = { .foreach = ta_foreach_fhash, .dump_tentry = ta_dump_fhash_tentry, .find_tentry = ta_find_fhash_tentry, + .has_space = ta_has_space_fhash, .prepare_mod = ta_prepare_mod_fhash, .fill_mod = ta_fill_mod_fhash, .modify = ta_modify_fhash,