|
|
1.1 root 1: /*
2: * Copyright (c) 2000 Apple Computer, Inc. All rights reserved.
3: *
4: * @APPLE_LICENSE_HEADER_START@
5: *
6: * The contents of this file constitute Original Code as defined in and
7: * are subject to the Apple Public Source License Version 1.1 (the
8: * "License"). You may not use this file except in compliance with the
9: * License. Please obtain a copy of the License at
10: * http://www.apple.com/publicsource and read it before using this file.
11: *
12: * This Original Code and all software distributed under the License are
13: * distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
14: * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
15: * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
16: * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT. Please see the
17: * License for the specific language governing rights and limitations
18: * under the License.
19: *
20: * @APPLE_LICENSE_HEADER_END@
21: */
22: /*
23: * Copyright 1997 Massachusetts Institute of Technology
24: *
25: * Permission to use, copy, modify, and distribute this software and
26: * its documentation for any purpose and without fee is hereby
27: * granted, provided that both the above copyright notice and this
28: * permission notice appear in all copies, that both the above
29: * copyright notice and this permission notice appear in all
30: * supporting documentation, and that the name of M.I.T. not be used
31: * in advertising or publicity pertaining to distribution of the
32: * software without specific, written prior permission. M.I.T. makes
33: * no representations about the suitability of this software for any
34: * purpose. It is provided "as is" without express or implied
35: * warranty.
36: *
37: * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
38: * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
39: * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
40: * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
41: * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
42: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
43: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
44: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
45: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
46: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
47: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
48: * SUCH DAMAGE.
49: *
50: */
51:
52: #ifndef _NETINET_IN_HOSTCACHE_H
53: #define _NETINET_IN_HOSTCACHE_H 1
54:
55: /*
56: * This file defines the particular structures contained in the host cache
57: * for the use of IP.
58: */
59:
60: /*
61: * An IP host cache entry. Note that we include the srtt/var here,
62: * with the expectation that it might be used to keep a persistent,
63: * cross-connection view of this statistic.
64: */
65: struct in_hcentry {
66: struct hcentry inhc_hc;
67: u_long inhc_pmtu;
68: u_long inhc_recvpipe;
69: u_long inhc_sendpipe;
70: u_long inhc_pksent;
71: u_long inhc_flags;
72: u_long inhc_ssthresh;
73: int inhc_srtt; /* VJ RTT estimator */
74: int inhc_srttvar; /* VJ */
75: u_int inhc_rttmin; /* VJ */
76: int inhc_rxt; /* TCP retransmit timeout */
77: u_long inhc_cc; /* deliberate type pun with tcp_cc */
78: u_long inhc_ccsent; /* as above */
79: u_short inhc_mssopt;
80: };
81:
82: #define inhc_addr(inhc) ((struct sockaddr_in *)(inhc)->inhc_hc.hc_host)
83:
84: /* Flags for inhc_flags... */
85: #define INHC_LOCAL 0x0001 /* this address is local */
86: #define INHC_BROADCAST 0x0002 /* this address is broadcast */
87: #define INHC_MULTICAST 0x0004 /* this address is multicast */
88: #define INHC_REDUCEDMTU 0x0008 /* we reduced the mtu via PMTU discovery */
89:
90: #ifdef KERNEL
91: /*
92: * inhc_alloc can block while adding a new entry to the cache;
93: * inhc_lookup will does not add new entries and so can be called
94: * in non-process context.
95: */
96: struct in_hcentry *inhc_alloc(struct sockaddr_in *sin);
97: int inhc_init(void);
98: struct in_hcentry *inhc_lookup(struct sockaddr_in *sin);
99: #define inhc_ref(inhc) (hc_ref(&(inhc)->inhc_hc))
100: #define inhc_rele(inhc) (hc_rele(&(inhc)->inhc_hc))
101: #endif /* KERNEL */
102:
103: #endif /* _NETINET_IN_HOSTCACHE_H */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.