diff options
Diffstat (limited to 'cpukit/libnetworking/netinet/in_pcb.h')
-rw-r--r-- | cpukit/libnetworking/netinet/in_pcb.h | 152 |
1 files changed, 0 insertions, 152 deletions
diff --git a/cpukit/libnetworking/netinet/in_pcb.h b/cpukit/libnetworking/netinet/in_pcb.h deleted file mode 100644 index ad8b99cf09..0000000000 --- a/cpukit/libnetworking/netinet/in_pcb.h +++ /dev/null @@ -1,152 +0,0 @@ -/* - * Copyright (c) 1982, 1986, 1990, 1993 - * The Regents of the University of California. 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. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS 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 REGENTS 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. - * - * @(#)in_pcb.h 8.1 (Berkeley) 6/10/93 - * $FreeBSD: src/sys/netinet/in_pcb.h,v 1.89 2006/07/18 22:34:27 ups Exp $ - */ - - -#ifndef _NETINET_IN_PCB_H_ -#define _NETINET_IN_PCB_H_ - -#include <sys/queue.h> -#include <netinet/in.h> /* struct in_addr */ -#include <net/route.h> /* struct route */ - -/* - * Common structure pcb for internet protocol implementation. - * Here are stored pointers to local and foreign host table - * entries, local and foreign socket numbers, and pointers - * up (to a socket structure) and down (to a protocol-specific) - * control block. - */ -LIST_HEAD(inpcbhead, inpcb); - -typedef u_int64_t inp_gen_t; - -struct inpcb { - LIST_ENTRY(inpcb) inp_hash; /* hash list */ - LIST_ENTRY(inpcb) inp_list; /* list for all PCBs of this proto */ - struct inpcbinfo *inp_pcbinfo; /* PCB list info */ - struct in_addr inp_faddr; /* foreign host table entry */ - struct in_addr inp_laddr; /* local host table entry */ - u_short inp_fport; /* foreign port */ - u_short inp_lport; /* local port */ - caddr_t inp_ppcb; /* pointer to per-protocol pcb */ - struct socket *inp_socket; /* back pointer to socket */ - struct route inp_route; /* placeholder for routing entry */ - int inp_flags; /* generic IP/datagram flags */ - u_char inp_vflag; /* IP version flag (v4/v6) */ - u_char inp_ip_ttl; /* time to live proto */ - u_char inp_ip_p; /* protocol proto */ - u_char inp_ip_minttl; /* minimum TTL or drop */ - - /* protocol dependent part; options */ - struct { - u_char inp4_ip_tos; /* type of service proto */ - struct mbuf *inp4_options; /* IP options */ - struct ip_moptions *inp4_moptions; /* IP multicast options */ - } inp_depend4; -#define inp_ip_tos inp_depend4.inp4_ip_tos -#define inp_options inp_depend4.inp4_options -#define inp_moptions inp_depend4.inp4_moptions - inp_gen_t inp_gencnt; /* generation count of this instance */ -}; - -/* - * Interface exported to userland by various protocols which use - * inpcbs. Hack alert -- only define if struct xsocket is in scope. - */ -#ifdef _SYS_SOCKETVAR_H_ -struct xinpcb { - size_t xi_len; /* length of this structure */ - struct inpcb xi_inp; -/* struct xsocket xi_socket; ccj removed */ - u_int64_t xi_alignment_hack; -}; - -struct xinpgen { - size_t xig_len; /* length of this structure */ - u_int xig_count; /* number of PCBs at this time */ - inp_gen_t xig_gen; /* generation count at this time */ - so_gen_t xig_sogen; /* socket generation count at this time */ -}; -#endif /* _SYS_SOCKETVAR_H_ */ - -struct inpcbinfo { /* XXX documentation, prefixes */ - struct inpcbhead *listhead; - struct inpcbhead *hashbase; - unsigned long hashmask; - unsigned short lastport; - unsigned short lastlow; - unsigned short lasthi; - u_int ipi_count; /* number of pcbs in this list */ - u_int64_t ipi_gencnt; /* current generation count */ -}; - -#define INP_PCBHASH(faddr, lport, fport, mask) \ - (((faddr) ^ ((faddr) >> 16) ^ (lport) ^ (fport)) & (mask)) - -/* flags in inp_flags: */ -#define INP_RECVOPTS 0x01 /* receive incoming IP options */ -#define INP_RECVRETOPTS 0x02 /* receive IP options for reply */ -#define INP_RECVDSTADDR 0x04 /* receive IP dst address */ -#define INP_HDRINCL 0x08 /* user supplies entire IP header */ -#define INP_HIGHPORT 0x10 /* user wants "high" port binding */ -#define INP_LOWPORT 0x20 /* user wants "low" port binding */ -#define INP_ANONPORT 0x40 /* port chosen for user */ -#define INP_RECVIF 0x80 /* receive incoming interface */ -#define INP_CONTROLOPTS (INP_RECVOPTS|INP_RECVRETOPTS|INP_RECVDSTADDR|\ - INP_RECVIF) - -#define INPLOOKUP_WILDCARD 1 -#define sotoinpcb(so) ((struct inpcb *)(so)->so_pcb) - -#ifdef _KERNEL -void in_losing(struct inpcb *); -int in_pcballoc(struct socket *, struct inpcbinfo *); -int in_pcbbind(struct inpcb *, struct mbuf *); -int in_pcbconnect(struct inpcb *, struct mbuf *); -void in_pcbdetach(struct inpcb *); -void in_pcbdisconnect(struct inpcb *); -int in_pcbladdr(struct inpcb *, struct mbuf *, - struct sockaddr_in **); -struct inpcb * - in_pcblookup(struct inpcbinfo *, - struct in_addr, u_int, struct in_addr, u_int, int); -struct inpcb * - in_pcblookuphash(struct inpcbinfo *, - struct in_addr, u_int, struct in_addr, u_int, int); -void in_pcbnotify(struct inpcbhead *, struct sockaddr *, - u_int, struct in_addr, u_int, int, void (*)(struct inpcb *, int)); -void in_pcbrehash(struct inpcb *); -void in_setpeeraddr(struct inpcb *, struct mbuf *); -void in_setsockaddr(struct inpcb *, struct mbuf *); -#endif /* _KERNEL */ - -#endif /* !_NETINET_IN_PCB_H_ */ |