xref: /csrg-svn/sys/netns/ns.h (revision 21482)
1*21482Ssklower /*      ns.h     6.1     85/05/30     */
2*21482Ssklower 
3*21482Ssklower /*
4*21482Ssklower  * Constants and Structures defined by the Xerox Network Software
5*21482Ssklower  * per "Internet Transport Protocols", XSIS 028112, December 1981
6*21482Ssklower  */
7*21482Ssklower 
8*21482Ssklower /*
9*21482Ssklower  * Protocols
10*21482Ssklower  */
11*21482Ssklower #define NSPROTO_RI	1		/* Routing Information */
12*21482Ssklower #define NSPROTO_ECHO	2		/* Echo Protocol */
13*21482Ssklower #define NSPROTO_ERROR	3		/* Error Protocol */
14*21482Ssklower #define NSPROTO_PE	4		/* Packet Exchange */
15*21482Ssklower #define NSPROTO_SPP	5		/* Sequenced Packet */
16*21482Ssklower #define NSPROTO_RAW	255		/* Placemarker*/
17*21482Ssklower #define NSPROTO_MAX	256		/* Placemarker*/
18*21482Ssklower 
19*21482Ssklower 
20*21482Ssklower /*
21*21482Ssklower  * Port/Socket numbers: network standard functions
22*21482Ssklower  */
23*21482Ssklower 
24*21482Ssklower #define NSPORT_RI	1		/* Routing Information */
25*21482Ssklower #define NSPORT_ECHO	2		/* Echo */
26*21482Ssklower #define NSPORT_RE	3		/* Router Error */
27*21482Ssklower 
28*21482Ssklower /*
29*21482Ssklower  * Ports < NSPORT_RESERVED are reserved for priveleged
30*21482Ssklower  * processes (e.g. root).
31*21482Ssklower  */
32*21482Ssklower #define NSPORT_RESERVED		3000
33*21482Ssklower 
34*21482Ssklower /* flags passed to ns_output as last parameter */
35*21482Ssklower 
36*21482Ssklower #define	NS_FORWARDING		0x1	/* most of idp header exists */
37*21482Ssklower #define	NS_ROUTETOIF		0x10	/* same as SO_DONTROUTE */
38*21482Ssklower #define	NS_ALLOWBROADCAST	SS_PRIV	/* can send broadcast packets */
39*21482Ssklower 
40*21482Ssklower #define NS_MAXHOPS		15
41*21482Ssklower 
42*21482Ssklower /* flags passed to get/set socket option */
43*21482Ssklower #define	SO_HEADERS_ON_INPUT	1
44*21482Ssklower #define	SO_HEADERS_ON_OUTPUT	2
45*21482Ssklower #define	SO_DEFAULT_HEADERS	3
46*21482Ssklower #define	SO_LAST_HEADER		4
47*21482Ssklower #define	SO_NSIP_ROUTE		5
48*21482Ssklower 
49*21482Ssklower 
50*21482Ssklower /*
51*21482Ssklower  * NS addressing
52*21482Ssklower  */
53*21482Ssklower union ns_host {
54*21482Ssklower 	u_char	c_host[6];
55*21482Ssklower 	u_short	s_host[3];
56*21482Ssklower };
57*21482Ssklower 
58*21482Ssklower union ns_net {
59*21482Ssklower 	u_char	c_net[4];
60*21482Ssklower 	u_short	s_net[2];
61*21482Ssklower };
62*21482Ssklower 
63*21482Ssklower struct ns_addr {
64*21482Ssklower 	union ns_net	x_net;
65*21482Ssklower 	union ns_host	x_host;
66*21482Ssklower 	u_short	x_port;
67*21482Ssklower };
68*21482Ssklower 
69*21482Ssklower /*
70*21482Ssklower  * Socket address, Xerox style
71*21482Ssklower  */
72*21482Ssklower struct sockaddr_ns {
73*21482Ssklower 	short		sns_family;
74*21482Ssklower 	struct ns_addr	sns_addr;
75*21482Ssklower 	char		sns_zero[4];
76*21482Ssklower };
77*21482Ssklower #define sns_port sns_addr.x_port
78*21482Ssklower 
79*21482Ssklower #define ns_netof(a) (*(long *) & ((a).x_net))
80*21482Ssklower #define satons_addr(sa)	(((struct sockaddr_ns *)&(sa))->sns_addr)
81*21482Ssklower #define ns_hosteqnh(s,t) ((s).s_host[0] == (t).s_host[0] && \
82*21482Ssklower 	(s).s_host[1] == (t).s_host[1] && (s).s_host[2] == (t).s_host[2])
83*21482Ssklower #define ns_hosteq(s,t) (ns_hosteqnh((s).x_host,(t).x_host))
84*21482Ssklower #define ns_nullhost(x) (((x).x_host.s_host[0]==0) && \
85*21482Ssklower 	((x).x_host.s_host[1]==0) && ((x).x_host.s_host[2]==0))
86*21482Ssklower 
87*21482Ssklower #if !defined(vax)
88*21482Ssklower #if !defined(INET)
89*21482Ssklower /*
90*21482Ssklower  * Macros for number representation conversion.
91*21482Ssklower  */
92*21482Ssklower #define	ntohl(x)	(x)
93*21482Ssklower #define	ntohs(x)	(x)
94*21482Ssklower #define	htonl(x)	(x)
95*21482Ssklower #define	htons(x)	(x)
96*21482Ssklower #endif
97*21482Ssklower #endif
98*21482Ssklower 
99*21482Ssklower #ifdef KERNEL
100*21482Ssklower extern struct domain nsdomain;
101*21482Ssklower extern union ns_host ns_thishost;
102*21482Ssklower extern union ns_host ns_zerohost;
103*21482Ssklower extern union ns_host ns_broadhost;
104*21482Ssklower u_short ns_cksum();
105*21482Ssklower #endif
106