1 /* 2 * Copyright (c) 1980 Regents of the University of California. 3 * All rights reserved. The Berkeley software License Agreement 4 * specifies the terms and conditions for redistribution. 5 * 6 * @(#)raw_cb.h 6.4 (Berkeley) 02/02/86 7 */ 8 9 /* 10 * Raw protocol interface control block. Used 11 * to tie a socket to the generic raw interface. 12 */ 13 struct rawcb { 14 struct rawcb *rcb_next; /* doubly linked list */ 15 struct rawcb *rcb_prev; 16 struct socket *rcb_socket; /* back pointer to socket */ 17 struct sockaddr rcb_faddr; /* destination address */ 18 struct sockaddr rcb_laddr; /* socket's address */ 19 struct sockproto rcb_proto; /* protocol family, protocol */ 20 caddr_t rcb_pcb; /* protocol specific stuff */ 21 struct mbuf *rcb_options; /* protocol specific options */ 22 struct route rcb_route; /* routing information */ 23 short rcb_flags; 24 }; 25 26 /* 27 * Since we can't interpret canonical addresses, 28 * we mark an address present in the flags field. 29 */ 30 #define RAW_LADDR 01 31 #define RAW_FADDR 02 32 #define RAW_DONTROUTE 04 /* no routing, default */ 33 34 #define sotorawcb(so) ((struct rawcb *)(so)->so_pcb) 35 36 /* 37 * Nominal space allocated to a raw socket. 38 */ 39 #define RAWSNDQ 2048 40 #define RAWRCVQ 2048 41 42 /* 43 * Format of raw interface header prepended by 44 * raw_input after call from protocol specific 45 * input routine. 46 */ 47 struct raw_header { 48 struct sockproto raw_proto; /* format of packet */ 49 struct sockaddr raw_dst; /* dst address for rawintr */ 50 struct sockaddr raw_src; /* src address for sbappendaddr */ 51 }; 52 53 #ifdef KERNEL 54 struct rawcb rawcb; /* head of list */ 55 #endif 56