June 4, 1993 ISO_ADDR 3

### NAME

iso_addr, iso_ntoa - elementary network address conversion routines for Open System Interconnection

### LIBRARY

Standard C Library (libc, -lc)

### SYNOPSIS

```struct` `iso_addr``*` iso_addr(```const char *cp`)
```char``*` iso_ntoa(```struct iso_addr *isoa`)

### DESCRIPTION

The routine iso_addr(``) interprets character strings representing OSI addresses, returning binary information suitable for use in system calls. The routine iso_ntoa(``) takes OSI addresses and returns ASCII strings representing NSAPs (network service access points) in a notation inverse to that accepted by iso_addr(``).

Unfortunately, no universal standard exists for representing OSI network addresses.

The format employed by iso_addr(``) is a sequence of hexadecimal ``digits'' (optionally separated by periods), of the form:

      <hex digits>.<hex digits>.<hex digits>

Each pair of hexadecimal digits represents a byte with the leading digit indicating the higher-ordered bits. A period following an even number of bytes has no effect (but may be used to increase legibility). A period following an odd number of bytes has the effect of causing the byte of address being translated to have its higher order bits filled with zeros.

### RETURN VALUES

iso_ntoa(``) always returns a null terminated string. iso_addr(``) always returns a pointer to a struct iso_addr. (See BUGS.)

### SEE ALSO

iso(4)

### HISTORY

The iso_addr(``) and iso_ntoa(``) functions appeared in 4.3BSDReno.

### BUGS

The returned values reside in a static memory area.

The function iso_addr(``) should diagnose improperly formed input, and there should be an unambiguous way to recognize this.