1 /* 2 * Copyright (c) 1982, 1986 Regents of the University of California. 3 * All rights reserved. 4 * 5 * Redistribution and use in source and binary forms are permitted 6 * provided that this notice is preserved and that due credit is given 7 * to the University of California at Berkeley. The name of the University 8 * may not be used to endorse or promote products derived from this 9 * software without specific prior written permission. This software 10 * is provided ``as is'' without express or implied warranty. 11 * 12 * @(#)in_pcb.h 7.2 (Berkeley) 12/07/87 13 */ 14 15 /* 16 * Common structure pcb for internet protocol implementation. 17 * Here are stored pointers to local and foreign host table 18 * entries, local and foreign socket numbers, and pointers 19 * up (to a socket structure) and down (to a protocol-specific) 20 * control block. 21 */ 22 struct inpcb { 23 struct inpcb *inp_next,*inp_prev; 24 /* pointers to other pcb's */ 25 struct inpcb *inp_head; /* pointer back to chain of inpcb's 26 for this protocol */ 27 struct in_addr inp_faddr; /* foreign host table entry */ 28 u_short inp_fport; /* foreign port */ 29 struct in_addr inp_laddr; /* local host table entry */ 30 u_short inp_lport; /* local port */ 31 struct socket *inp_socket; /* back pointer to socket */ 32 caddr_t inp_ppcb; /* pointer to per-protocol pcb */ 33 struct route inp_route; /* placeholder for routing entry */ 34 struct mbuf *inp_options; /* IP options */ 35 }; 36 37 #define INPLOOKUP_WILDCARD 1 38 #define INPLOOKUP_SETLOCAL 2 39 40 #define sotoinpcb(so) ((struct inpcb *)(so)->so_pcb) 41 42 #ifdef KERNEL 43 struct inpcb *in_pcblookup(); 44 #endif 45