date and time created 88/12/14 15:29:27 by sklower
[unix-history] / usr / src / sys / net / raw_cb.h
CommitLineData
cb1c44c2 1/*
1810611d 2 * Copyright (c) 1980, 1986 Regents of the University of California.
5b519e94 3 * All rights reserved.
cb1c44c2 4 *
5b519e94 5 * Redistribution and use in source and binary forms are permitted
50c7758a
KB
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.
5b519e94 16 *
50c7758a 17 * @(#)raw_cb.h 7.3 (Berkeley) %G%
cb1c44c2 18 */
16287509
BJ
19
20/*
21 * Raw protocol interface control block. Used
22 * to tie a socket to the generic raw interface.
23 */
24struct rawcb {
25 struct rawcb *rcb_next; /* doubly linked list */
26 struct rawcb *rcb_prev;
27 struct socket *rcb_socket; /* back pointer to socket */
126472ab
SL
28 struct sockaddr rcb_faddr; /* destination address */
29 struct sockaddr rcb_laddr; /* socket's address */
829f867e 30 struct sockproto rcb_proto; /* protocol family, protocol */
16287509 31 caddr_t rcb_pcb; /* protocol specific stuff */
82acad77 32 struct mbuf *rcb_options; /* protocol specific options */
71fb71a3 33 struct route rcb_route; /* routing information */
16287509
BJ
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 */
126472ab
SL
41#define RAW_LADDR 01
42#define RAW_FADDR 02
71fb71a3 43#define RAW_DONTROUTE 04 /* no routing, default */
16287509
BJ
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/*
a7d16889
SL
54 * Format of raw interface header prepended by
55 * raw_input after call from protocol specific
56 * input routine.
16287509
BJ
57 */
58struct raw_header {
126472ab 59 struct sockproto raw_proto; /* format of packet */
faad37c0
SL
60 struct sockaddr raw_dst; /* dst address for rawintr */
61 struct sockaddr raw_src; /* src address for sbappendaddr */
16287509
BJ
62};
63
64#ifdef KERNEL
65struct rawcb rawcb; /* head of list */
66#endif