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; i.e., the number digit which would be entered first is located in addr[0]. Digits are coded in IA5 characters. Bit 8 is set to 0.

For ATM_NSAP, code the address using Binary Coded Decimal (BCD) as defined in the ATM Forum UNI 3.1. The NumofDigits field will be 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 a NSAP-style ATM Endsystem Address and the selector octet is "wildcarded". "SAP_FIELD_ANY_AESA_REST" means that this is a NSAP-style ATM Endsystem Address and all the octets except for the selector octet are "wildcarded".