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