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