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