The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "pack.h"
#include "util.h"

void
pack_bind_response_args(SV *dest, I32 result,
			     SV *matched_dn, SV *message, SV *referrals,
			     SV *sasl_credentials) {

    STRLEN offset = start_constructed(dest, ASN1_APPLICATION|ASN1_CONSTRUCTED, LDAP_OP_BIND_RESPONSE);
    pack_result_response_nowrap(dest, result, matched_dn, message, referrals);
    if (sasl_credentials && SvOK(sasl_credentials))
	pack_raw_utf8(dest, ASN1_CONTEXT_SPECIFIC|ASN1_PRIMITIVE, 7, sasl_credentials);

    end_constructed(dest, offset);
}

void
pack_bind_response_ref(SV *dest, HV *hv) {
    pack_bind_response_args(dest,
				 SvIV(hv_fetchs_def_no(hv, "result")),
				 hv_fetchs_def_no(hv, "matched_dn"),
				 hv_fetchs_def_no(hv, "message"),
				 hv_fetchs_def_undef(hv, "referrals"),
				 hv_fetchs_def_undef(hv, "sasl_credentials"));
}