RTEMS CPU Kit with SuperCore
4.11.3
Main Page
Related Pages
Modules
+
Data Structures
Data Structures
+
Data Fields
+
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
+
Files
File List
+
Globals
+
All
_
a
b
c
d
e
f
g
h
i
j
l
m
n
o
p
q
r
s
t
u
v
w
x
+
Functions
_
a
b
c
d
e
f
g
i
j
l
m
n
o
p
q
r
s
t
u
v
w
+
Variables
_
b
c
d
i
r
+
Typedefs
a
b
c
d
f
h
i
m
o
p
q
r
s
t
u
w
x
+
Enumerations
b
c
d
e
h
i
m
o
p
r
s
t
w
+
Enumerator
c
i
m
p
r
s
t
w
+
Macros
_
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
w
mnt
data0
chrisj
rtems
releases
rtems-release.git
4.11.3
ws-rtems
rtems-4.11.3
cpukit
libnetworking
netinet
in_pcb.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 1982, 1986, 1990, 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
* 4. Neither the name of the University nor the names of its contributors
14
* may be used to endorse or promote products derived from this software
15
* without specific prior written permission.
16
*
17
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
18
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
21
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27
* SUCH DAMAGE.
28
*
29
* @(#)in_pcb.h 8.1 (Berkeley) 6/10/93
30
* $FreeBSD: src/sys/netinet/in_pcb.h,v 1.89 2006/07/18 22:34:27 ups Exp $
31
*/
32
33
34
#ifndef _NETINET_IN_PCB_H_
35
#define _NETINET_IN_PCB_H_
36
37
#include <sys/queue.h>
38
#include <
netinet/in.h
>
/* struct in_addr */
39
#include <
net/route.h
>
/* struct route */
40
41
/*
42
* Common structure pcb for internet protocol implementation.
43
* Here are stored pointers to local and foreign host table
44
* entries, local and foreign socket numbers, and pointers
45
* up (to a socket structure) and down (to a protocol-specific)
46
* control block.
47
*/
48
LIST_HEAD(inpcbhead,
inpcb
);
49
50
typedef
u_int64_t inp_gen_t;
51
52
struct
inpcb
{
53
LIST_ENTRY(
inpcb
) inp_hash;
/* hash list */
54
LIST_ENTRY(
inpcb
) inp_list;
/* list for all PCBs of this proto */
55
struct
inpcbinfo
*inp_pcbinfo;
/* PCB list info */
56
struct
in_addr
inp_faddr;
/* foreign host table entry */
57
struct
in_addr
inp_laddr;
/* local host table entry */
58
u_short inp_fport;
/* foreign port */
59
u_short inp_lport;
/* local port */
60
caddr_t inp_ppcb;
/* pointer to per-protocol pcb */
61
struct
socket
*inp_socket;
/* back pointer to socket */
62
struct
route
inp_route;
/* placeholder for routing entry */
63
int
inp_flags;
/* generic IP/datagram flags */
64
u_char inp_vflag;
/* IP version flag (v4/v6) */
65
u_char inp_ip_ttl;
/* time to live proto */
66
u_char inp_ip_p;
/* protocol proto */
67
u_char inp_ip_minttl;
/* minimum TTL or drop */
68
69
/* protocol dependent part; options */
70
struct
{
71
u_char inp4_ip_tos;
/* type of service proto */
72
struct
mbuf
*inp4_options;
/* IP options */
73
struct
ip_moptions
*inp4_moptions;
/* IP multicast options */
74
} inp_depend4;
75
#define inp_ip_tos inp_depend4.inp4_ip_tos
76
#define inp_options inp_depend4.inp4_options
77
#define inp_moptions inp_depend4.inp4_moptions
78
inp_gen_t inp_gencnt;
/* generation count of this instance */
79
};
80
81
/*
82
* Interface exported to userland by various protocols which use
83
* inpcbs. Hack alert -- only define if struct xsocket is in scope.
84
*/
85
#ifdef _SYS_SOCKETVAR_H_
86
struct
xinpcb {
87
size_t
xi_len;
/* length of this structure */
88
struct
inpcb
xi_inp;
89
/* struct xsocket xi_socket; ccj removed */
90
u_int64_t xi_alignment_hack;
91
};
92
93
struct
xinpgen {
94
size_t
xig_len;
/* length of this structure */
95
u_int xig_count;
/* number of PCBs at this time */
96
inp_gen_t xig_gen;
/* generation count at this time */
97
so_gen_t xig_sogen;
/* socket generation count at this time */
98
};
99
#endif
/* _SYS_SOCKETVAR_H_ */
100
101
struct
inpcbinfo
{
/* XXX documentation, prefixes */
102
struct
inpcbhead *listhead;
103
struct
inpcbhead *hashbase;
104
unsigned
long
hashmask;
105
unsigned
short
lastport;
106
unsigned
short
lastlow;
107
unsigned
short
lasthi;
108
u_int ipi_count;
/* number of pcbs in this list */
109
u_int64_t ipi_gencnt;
/* current generation count */
110
};
111
112
#define INP_PCBHASH(faddr, lport, fport, mask) \
113
(((faddr) ^ ((faddr) >> 16) ^ (lport) ^ (fport)) & (mask))
114
115
/* flags in inp_flags: */
116
#define INP_RECVOPTS 0x01
/* receive incoming IP options */
117
#define INP_RECVRETOPTS 0x02
/* receive IP options for reply */
118
#define INP_RECVDSTADDR 0x04
/* receive IP dst address */
119
#define INP_HDRINCL 0x08
/* user supplies entire IP header */
120
#define INP_HIGHPORT 0x10
/* user wants "high" port binding */
121
#define INP_LOWPORT 0x20
/* user wants "low" port binding */
122
#define INP_ANONPORT 0x40
/* port chosen for user */
123
#define INP_RECVIF 0x80
/* receive incoming interface */
124
#define INP_CONTROLOPTS (INP_RECVOPTS|INP_RECVRETOPTS|INP_RECVDSTADDR|\
125
INP_RECVIF)
126
127
#define INPLOOKUP_WILDCARD 1
128
#define sotoinpcb(so) ((struct inpcb *)(so)->so_pcb)
129
130
#ifdef _KERNEL
131
void
in_losing(
struct
inpcb
*);
132
int
in_pcballoc(
struct
socket
*,
struct
inpcbinfo
*);
133
int
in_pcbbind(
struct
inpcb
*,
struct
mbuf
*);
134
int
in_pcbconnect(
struct
inpcb
*,
struct
mbuf
*);
135
void
in_pcbdetach(
struct
inpcb
*);
136
void
in_pcbdisconnect(
struct
inpcb
*);
137
int
in_pcbladdr(
struct
inpcb
*,
struct
mbuf
*,
138
struct
sockaddr_in
**);
139
struct
inpcb
*
140
in_pcblookup(
struct
inpcbinfo
*,
141
struct
in_addr
, u_int,
struct
in_addr
, u_int,
int
);
142
struct
inpcb
*
143
in_pcblookuphash(
struct
inpcbinfo
*,
144
struct
in_addr
, u_int,
struct
in_addr
, u_int,
int
);
145
void
in_pcbnotify(
struct
inpcbhead *,
struct
sockaddr
*,
146
u_int,
struct
in_addr
, u_int,
int
,
void
(*)(
struct
inpcb
*,
int
));
147
void
in_pcbrehash(
struct
inpcb
*);
148
void
in_setpeeraddr(
struct
inpcb
*,
struct
mbuf
*);
149
void
in_setsockaddr(
struct
inpcb
*,
struct
mbuf
*);
150
#endif
/* _KERNEL */
151
152
#endif
/* !_NETINET_IN_PCB_H_ */
sockaddr_in
Definition:
in.h:74
socket
Definition:
socketvar.h:49
in.h
route.h
inpcb
Definition:
in_pcb.h:53
route
Definition:
route.h:51
inpcbinfo
Definition:
in_pcb.h:102
sockaddr
Definition:
socket.h:180
in_addr
Definition:
inet.h:93
mbuf
Definition:
mbuf.h:103
ip_moptions
Definition:
ip_var.h:116
Generated by
1.8.13