xref: /original-bsd/sys/deprecated/bbnnet/net.h (revision 2c497c00)
1 #define RCSNETHDR	"$Header: net.h,v 1.14 85/07/31 09:32:54 walsh Exp $"
2 
3 /*
4  * dummy protocol number(s) for raw input.  Not real like UDPROTO/TCPROTO/...
5  */
6 #define NETLOG_PROTO	62
7 
8 
9 #define TRUE  1
10 #define FALSE 0
11 
12 /*
13  * Software interrupt version
14  *
15  * This version of the network code runs off software interrupts rather than
16  * as a separate process.  The software interrupt level for the network is
17  * higher than the software level for the clock (so you can enter the network
18  * in routines called from timeouts).  User process routines switch into
19  * network code by doing splnet().
20  */
21 
22 /* splnet is defined in ../sys/asm.sed */
23 #define setsoftnet()	mtpr(SIRR, 12)
24 
25 #ifndef LOCORE
26 
27 typedef unsigned short n_short; /* short as received from the net */
28 typedef u_long n_long;   	/* long as received from the net */
29 typedef u_long sequence; 	/* sequence numbers in tcp */
30 typedef	u_long net_t;		/* network number */
31 
32 /*
33  * This structure describes the work that the finite state machine
34  * procedure is supposed to do.  At one time, these were chained
35  * together and batch processing performed on them.  Code would need
36  * reworking to go back to that method since work entry has pointer
37  * to tcpcb, which may have been closed and freed.
38  */
39 struct work {
40 	short w_type;                   /* what to do with entry */
41 	short w_stype;                  /* subtype for timer names */
42 	struct tcpcb *w_tcb;            /* -> tcb for entry */
43 	char *w_dat;                    /* -> work data chain */
44 };
45 
46 /*
47  * No need to spl when enter network via action, since network is only
48  * accessed via softare interrupt [splnet], tcp_usrreq(), and tcp_timeo()
49  * which splnet().
50  */
51 #define w_alloc(type, stype, tp, m)					\
52 {									\
53 	struct work w;							\
54 									\
55 	w.w_type = type; w.w_stype = stype; w.w_tcb = tp; 		\
56 	w.w_dat = (char *)m;						\
57 	(void) action(&w);						\
58 }
59 
60 #define NETHASH(x)  ((u_long) iptonet(x))
61 #define HOSTHASH(x) ((u_long) htonl((u_long) (x)))
62 
63 /* make an ip addr */
64 #define ipaddr(w,x,y,z) ((long)(((z)<<24)|((y)<<16)|((x)<<8)|(w)))
65 
66 
67 struct dfilter {
68 	struct in_addr	foreign_host;
69 	struct in_addr	local_host;
70 	u_short		foreign_port;
71 	u_short		local_port;
72 	int		matches;
73 };
74 
75 #ifdef KERNEL
76 u_long iptime();
77 
78 extern struct dfilter tcp_dfilter;
79 
80 extern struct in_addr icmp_addr();
81 extern struct in_addr redir_addr();
82 
83 #endif KERNEL
84 
85 /* replace with dynamic estimate of remote send buffering */
86 #define MINTCPBUF	256
87 #endif LOCORE
88