/* * Copyright 1997 Massachusetts Institute of Technology * * Permission to use, copy, modify, and distribute this software and * its documentation for any purpose and without fee is hereby * granted, provided that both the above copyright notice and this * permission notice appear in all copies, that both the above * copyright notice and this permission notice appear in all * supporting documentation, and that the name of M.I.T. not be used * in advertising or publicity pertaining to distribution of the * software without specific, written prior permission. M.I.T. makes * no representations about the suitability of this software for any * purpose. It is provided "as is" without express or implied * warranty. * * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE, * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT * SHALL M.I.T. 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: src/sys/netinet/in_hostcache.h,v 1.3 1999/12/29 04:40:59 peter Exp $ * $DragonFly: src/sys/netinet/Attic/in_hostcache.h,v 1.2 2003/06/17 04:28:51 dillon Exp $ */ #ifndef _NETINET_IN_HOSTCACHE_H #define _NETINET_IN_HOSTCACHE_H 1 /* * This file defines the particular structures contained in the host cache * for the use of IP. */ /* * An IP host cache entry. Note that we include the srtt/var here, * with the expectation that it might be used to keep a persistent, * cross-connection view of this statistic. */ struct in_hcentry { struct hcentry inhc_hc; u_long inhc_pmtu; u_long inhc_recvpipe; u_long inhc_sendpipe; u_long inhc_pksent; u_long inhc_flags; u_long inhc_ssthresh; int inhc_srtt; /* VJ RTT estimator */ int inhc_srttvar; /* VJ */ u_int inhc_rttmin; /* VJ */ int inhc_rxt; /* TCP retransmit timeout */ u_long inhc_cc; /* deliberate type pun with tcp_cc */ u_long inhc_ccsent; /* as above */ u_short inhc_mssopt; }; #define inhc_addr(inhc) ((struct sockaddr_in *)(inhc)->inhc_hc.hc_host) /* Flags for inhc_flags... */ #define INHC_LOCAL 0x0001 /* this address is local */ #define INHC_BROADCAST 0x0002 /* this address is broadcast */ #define INHC_MULTICAST 0x0004 /* this address is multicast */ #define INHC_REDUCEDMTU 0x0008 /* we reduced the mtu via PMTU discovery */ #ifdef _KERNEL /* * inhc_alloc can block while adding a new entry to the cache; * inhc_lookup will does not add new entries and so can be called * in non-process context. */ struct in_hcentry *inhc_alloc(struct sockaddr_in *sin); int inhc_init(void); struct in_hcentry *inhc_lookup(struct sockaddr_in *sin); #define inhc_ref(inhc) (hc_ref(&(inhc)->inhc_hc)) #define inhc_rele(inhc) (hc_rele(&(inhc)->inhc_hc)) #endif #endif /* _NETINET_IN_HOSTCACHE_H */