1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
|
NS(3) BSD Library Functions Manual NS(3)
NAME
ns_addr, ns_ntoa -- Xerox NS(tm) address conversion routines
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <sys/types.h>
#include <netns/ns.h>
struct ns_addr
ns_addr(char *cp);
char *
ns_ntoa(struct ns_addr ns);
DESCRIPTION
The routine ns_addr() interprets character strings representing XNS addresses, returning bi-
nary information suitable for use in system calls. The routine ns_ntoa() takes XNS ad-
dresses and returns ASCII strings representing the address in a notation in common use in
the Xerox Development Environment:
<network number>.<host number>.<port number>
Trailing zero fields are suppressed, and each number is printed in hexadecimal, in a format
suitable for input to ns_addr(). Any fields lacking super-decimal digits will have a trail-
ing 'H' appended.
Unfortunately, no universal standard exists for representing XNS addresses. An effort has
been made to insure that ns_addr() be compatible with most formats in common use. It will
first separate an address into 1 to 3 fields using a single delimiter chosen from period
'.', colon ':' or pound-sign '#'. Each field is then examined for byte separators (colon or
period). If there are byte separators, each subfield separated is taken to be a small hexa-
decimal number, and the entirety is taken as a network-byte-ordered quantity to be zero ex-
tended in the high-network-order bytes. Next, the field is inspected for hyphens, in which
case the field is assumed to be a number in decimal notation with hyphens separating the
millenia. Next, the field is assumed to be a number: It is interpreted as hexadecimal if
there is a leading '0x' (as in C), a trailing 'H' (as in Mesa), or there are any super-deci-
mal digits present. It is interpreted as octal is there is a leading '0' and there are no
super-octal digits. Otherwise, it is converted as a decimal number.
RETURN VALUES
None. (See BUGS.)
SEE ALSO
hosts(5), networks(5)
HISTORY
The ns_addr() and ns_toa() functions appeared in 4.3BSD.
BUGS
The string returned by ns_ntoa() resides in a static memory area. The function ns_addr()
should diagnose improperly formed input, and there should be an unambiguous way to recognize
this.
BSD June 4, 1993 BSD
|