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