Platform SDK: Windows Sockets

Using the ATM_ADDRESS Structure

/* 
 *  values used for AddressType in struct ATM_ADDRESS
 */
#define ATM_E164               0x01   /* E.164 addressing scheme */
#define ATM_NSAP               0x02   /* NSAP-style ATM Endsystem Address scheme */
#define ATM_AESA               0x02   /* NSAP-style ATM Endsystem Address scheme */

typedef struct {
    DWORD AddressType;       /* E.164 or NSAP-style ATM Endsystem Address */
    DWORD NumofDigits;       /* number of digits; */
    UCHAR Addr[20];          /* IA5 digits for E164, BCD encoding for NSAP */
                             /* format as defined in the ATM Forum UNI 3.1 */
} ATM_ADDRESS;

For ATM_E164, enter the numbered digits in the same order in which they would be entered on a numeric keypad; that is, the number digit that would be entered first is located in addr. Digits are coded in IA5 characters. Bit 8 is set to zero.

For ATM_NSAP, code the address using Binary Coded Decimal (BCD) as defined in the ATM Forum UNI 3.1. The NumofDigits field are ignored in this case, and the NSAP-style address always contains 20 bytes.

A value of SAP_FIELD_ANY in AddressType indicates that the satm_number field is a wildcard. There are two more specialized wildcard values: SAP_FIELD_ANY_AESA_SEL and SAP_FIELD_ANY_AESA_REST. SAP_FIELD_ANY_AESA_SEL means that this is an NSAP-style ATM Endsystem Address and the selector octet is set as a wildcard. SAP_FIELD_ANY_AESA_REST means that this is an NSAP-style ATM Endsystem Address and all the octets except for the selector octet are set as wildcards.