xref: /original-bsd/sys/net/raw_cb.h (revision 6cca134b)
1 /*
2  * Copyright (c) 1980, 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 the above copyright notice and this paragraph are
7  * duplicated in all such forms and that any documentation,
8  * advertising materials, and other materials related to such
9  * distribution and use acknowledge that the software was developed
10  * by the University of California, Berkeley.  The name of the
11  * University may not be used to endorse or promote products derived
12  * from this software without specific prior written permission.
13  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
14  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
15  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
16  *
17  *	@(#)raw_cb.h	7.3 (Berkeley) 06/27/88
18  */
19 
20 /*
21  * Raw protocol interface control block.  Used
22  * to tie a socket to the generic raw interface.
23  */
24 struct rawcb {
25 	struct	rawcb *rcb_next;	/* doubly linked list */
26 	struct	rawcb *rcb_prev;
27 	struct	socket *rcb_socket;	/* back pointer to socket */
28 	struct	sockaddr rcb_faddr;	/* destination address */
29 	struct	sockaddr rcb_laddr;	/* socket's address */
30 	struct	sockproto rcb_proto;	/* protocol family, protocol */
31 	caddr_t	rcb_pcb;		/* protocol specific stuff */
32 	struct	mbuf *rcb_options;	/* protocol specific options */
33 	struct	route rcb_route;	/* routing information */
34 	short	rcb_flags;
35 };
36 
37 /*
38  * Since we can't interpret canonical addresses,
39  * we mark an address present in the flags field.
40  */
41 #define	RAW_LADDR	01
42 #define	RAW_FADDR	02
43 #define	RAW_DONTROUTE	04		/* no routing, default */
44 
45 #define	sotorawcb(so)		((struct rawcb *)(so)->so_pcb)
46 
47 /*
48  * Nominal space allocated to a raw socket.
49  */
50 #define	RAWSNDQ		2048
51 #define	RAWRCVQ		2048
52 
53 /*
54  * Format of raw interface header prepended by
55  * raw_input after call from protocol specific
56  * input routine.
57  */
58 struct raw_header {
59 	struct	sockproto raw_proto;	/* format of packet */
60 	struct	sockaddr raw_dst;	/* dst address for rawintr */
61 	struct	sockaddr raw_src;	/* src address for sbappendaddr */
62 };
63 
64 #ifdef KERNEL
65 struct rawcb rawcb;			/* head of list */
66 #endif
67