VirtualBox

source: vbox/trunk/src/VBox/Devices/Network/slirp/udp.h@ 1033

Last change on this file since 1033 was 1033, checked in by vboxsync, 18 years ago

Big change to make slirp fully instantiatable (replace all global
variables with local ones, passing a reference to the state/config
structure to all places which are interested). You can now have as many
cards in the guest configured for NAT networking as you want.

  • Property svn:eol-style set to native
File size: 5.1 KB
Line 
1/*
2 * Copyright (c) 1982, 1986, 1993
3 * The Regents of the University of California. All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
13 * 3. All advertising materials mentioning features or use of this software
14 * must display the following acknowledgement:
15 * This product includes software developed by the University of
16 * California, Berkeley and its contributors.
17 * 4. Neither the name of the University nor the names of its contributors
18 * may be used to endorse or promote products derived from this software
19 * without specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31 * SUCH DAMAGE.
32 *
33 * @(#)udp.h 8.1 (Berkeley) 6/10/93
34 * udp.h,v 1.3 1994/08/21 05:27:41 paul Exp
35 */
36
37#ifndef _UDP_H_
38#define _UDP_H_
39
40#define UDP_TTL 0x60
41#define UDP_UDPDATALEN 16192
42
43extern struct socket *udp_last_so;
44
45/*
46 * Udp protocol header.
47 * Per RFC 768, September, 1981.
48 */
49struct udphdr {
50 u_int16_t uh_sport; /* source port */
51 u_int16_t uh_dport; /* destination port */
52 int16_t uh_ulen; /* udp length */
53 u_int16_t uh_sum; /* udp checksum */
54};
55
56/*
57 * UDP kernel structures and variables.
58 */
59struct udpiphdr {
60 struct ipovly ui_i; /* overlaid ip structure */
61 struct udphdr ui_u; /* udp header */
62};
63#define ui_next ui_i.ih_next
64#define ui_prev ui_i.ih_prev
65#define ui_x1 ui_i.ih_x1
66#define ui_pr ui_i.ih_pr
67#define ui_len ui_i.ih_len
68#define ui_src ui_i.ih_src
69#define ui_dst ui_i.ih_dst
70#define ui_sport ui_u.uh_sport
71#define ui_dport ui_u.uh_dport
72#define ui_ulen ui_u.uh_ulen
73#define ui_sum ui_u.uh_sum
74
75#ifdef VBOX
76struct udpstat_t {
77#else /* !VBOX */
78struct udpstat {
79#endif /* !VBOX */
80 /* input statistics: */
81 u_long udps_ipackets; /* total input packets */
82 u_long udps_hdrops; /* packet shorter than header */
83 u_long udps_badsum; /* checksum error */
84 u_long udps_badlen; /* data length larger than packet */
85 u_long udps_noport; /* no socket on port */
86 u_long udps_noportbcast; /* of above, arrived as broadcast */
87 u_long udps_fullsock; /* not delivered, input socket full */
88 u_long udpps_pcbcachemiss; /* input packets missing pcb cache */
89 /* output statistics: */
90 u_long udps_opackets; /* total output packets */
91};
92
93/*
94 * Names for UDP sysctl objects
95 */
96#define UDPCTL_CHECKSUM 1 /* checksum UDP packets */
97#define UDPCTL_MAXID 2
98
99extern struct udpstat udpstat;
100extern struct socket udb;
101struct mbuf;
102
103#ifdef VBOX
104void udp_init _P((PNATState));
105void udp_input _P((PNATState, register struct mbuf *, int));
106int udp_output _P((PNATState, struct socket *, struct mbuf *, struct sockaddr_in *));
107int udp_attach _P((PNATState, struct socket *));
108void udp_detach _P((PNATState, struct socket *));
109#else /* !VBOX */
110void udp_init _P((void));
111void udp_input _P((register struct mbuf *, int));
112int udp_output _P((struct socket *, struct mbuf *, struct sockaddr_in *));
113int udp_attach _P((struct socket *));
114void udp_detach _P((struct socket *));
115#endif /* !VBOX */
116u_int8_t udp_tos _P((struct socket *));
117#ifdef VBOX
118#else /* !VBOX */
119#endif /* !VBOX */
120#ifdef VBOX
121void udp_emu _P((PNATState, struct socket *, struct mbuf *));
122struct socket * udp_listen _P((PNATState, u_int, u_int32_t, u_int, int));
123int udp_output2(PNATState pData, struct socket *so, struct mbuf *m,
124 struct sockaddr_in *saddr, struct sockaddr_in *daddr,
125 int iptos);
126#else /* !VBOX */
127void udp_emu _P((struct socket *, struct mbuf *));
128struct socket * udp_listen _P((u_int, u_int32_t, u_int, int));
129int udp_output2(struct socket *so, struct mbuf *m,
130 struct sockaddr_in *saddr, struct sockaddr_in *daddr,
131 int iptos);
132#endif /* !VBOX */
133
134#endif
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette