xref: /csrg-svn/sys/netns/ns_pcb.h (revision 33371)
1 /*
2  * Copyright (c) 1984, 1985, 1986, 1987 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  *      @(#)ns_pcb.h	7.2 (Berkeley) 01/20/88
13  */
14 
15 /*
16  * Ns protocol interface control block.
17  */
18 struct nspcb {
19 	struct	nspcb *nsp_next;	/* doubly linked list */
20 	struct	nspcb *nsp_prev;
21 	struct	nspcb *nsp_head;
22 	struct	socket *nsp_socket;	/* back pointer to socket */
23 	struct	ns_addr nsp_faddr;	/* destination address */
24 	struct	ns_addr nsp_laddr;	/* socket's address */
25 	caddr_t	nsp_pcb;		/* protocol specific stuff */
26 	struct	route nsp_route;	/* routing information */
27 	struct	ns_addr nsp_lastdst;	/* validate cached route for dg socks*/
28 	long	nsp_notify_param;	/* extra info passed via ns_pcbnotify*/
29 	short	nsp_flags;
30 	u_char	nsp_dpt;		/* default packet type for idp_output*/
31 	u_char	nsp_rpt;		/* last received packet type by
32 								idp_input() */
33 };
34 
35 /* possible flags */
36 
37 #define NSP_IN_ABORT	0x1		/* calling abort through socket */
38 #define NSP_RAWIN	0x2		/* show headers on input */
39 #define NSP_RAWOUT	0x4		/* show header on output */
40 #define NSP_ALL_PACKETS	0x8		/* Turn off higher proto processing */
41 
42 #define	NS_WILDCARD	1
43 
44 #define nsp_lport nsp_laddr.x_port
45 #define nsp_fport nsp_faddr.x_port
46 
47 #define	sotonspcb(so)		((struct nspcb *)((so)->so_pcb))
48 
49 /*
50  * Nominal space allocated to a ns socket.
51  */
52 #define	NSSNDQ		2048
53 #define	NSRCVQ		2048
54 
55 
56 #ifdef KERNEL
57 struct	nspcb nspcb;			/* head of list */
58 struct	nspcb *ns_pcblookup();
59 #endif
60