In the following macro definitions, which are used by a sec_attr_schema_entry_t and its equivalent dce_attr_sch data type, B is a pointer to sec_attr_bind_info_t.
#define SA_BND_AUTH_INFO(B) (B)->auth_info
#define SA_BND_AUTH_INFO_TYPE(B) (SA_BND_AUTH_INFO(B)).info_type
#define SA_BND_AUTH_SVR_PNAME_P(B) \
(SA_BND_AUTH_DCE_INFO(B)).svr_princ_name
#define SA_BND_AUTH_PROT_LEVEL(B) \
(SA_BND_AUTH_DCE_INFO(B)).protect_level
#define SA_BND_AUTH_AUTHN_SVC(B) \
(SA_BND_AUTH_DCE_INFO(B)).authn_svc
#define SA_BND_AUTH_AUTHZ_SVC(B) \
(SA_BND_AUTH_DCE_INFO(B)).authz_svc
#define SA_BND_NUM(B) (B)->num_bindings
#define SA_BND_ARRAY(B,I) (B)->bindings[I]
#define SA_BND_TYPE(B,I) (SA_BND_ARRAY(B,I)).bind_type
#define SA_BND_STRING_P(B,I) \
(SA_BND_ARRAY(B,I)).tagged_union.string_binding
#define SA_BND_SVRNAME_P(B,I) \
(SA_BND_ARRAY(B,I)).tagged_union.svrname
#define SA_BND_SVRNAME_SYNTAX(B,I) \
(SA_BND_SVRNAME_P(B,I))->name_syntax
#define SA_BND_SVRNAME_NAME_P(B,I) \
(SA_BND_SVRNAME_P(B,I))->name
#define SA_BND_TWRSET_P(B,I) \
(SA_BND_ARRAY(B,I)).tagged_union.twr_set
#define SA_BND_TWRSET_COUNT(B,I) (SA_BND_TWRSET_P(B,I))->count
#define SA_BND_TWR_P(B,I,J) (SA_BND_TWRSET_P(B,I))->towers[J]
#define SA_BND_TWR_LEN(B,I,J) (SA_BND_TWR_P(B,I,J))->tower_length
#define SA_BND_TWR_OCTETS(B,I,J) \
(SA_BND_TWR_P(B,I,J))->tower_octet_string