Net-LDAP-Gateway

 view release on metacpan or  search on metacpan

Gateway.xs  view on Meta::CPAN

ldap_dn_normalize(dn)
    SV * dn
CODE:
    RETVAL = dn_normalize(dn);
OUTPUT:
    RETVAL

SV *
ldap_peek_message(buffer)
    SV *buffer
PPCODE:
{
    int n = 0;
    STRLEN bytes, request_len, src_len;
    const char *start, *src, *max;
    sv_utf8_downgrade(buffer, 0);
    start = src = SvPV(buffer, src_len);
    max = start + src_len;
    if (peek_sequence(&src, max, &request_len)) {
	mXPUSHu((src - start) + request_len);
	n++;

Gateway.xs  view on Meta::CPAN

		    }
		}
	    }
	}
    }
    XSRETURN(n);
}

void
ldap_shift_message(SV *buffer)
PPCODE:
{
    STRLEN src_len, message_len;
    const char *start = SvPV(buffer, src_len);
    const char *src = start;
    const char *max = start + src_len;
    const char *save_max = max;
    U32 msgid, op;
    HV *out = newHV();
    SV *out_ref = sv_2mortal(newRV_noinc((SV*)out));
    AV *controls;

Gateway.xs  view on Meta::CPAN

    else
	XSRETURN(3);
}

void
ldap_pack_message_ref(msgid, op, data, controls = 0)
    U32 msgid
    U32 op
    HV *data
    SV *controls
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    ldap_pack_message_ref(dest, op, data, controls);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void

Gateway.xs  view on Meta::CPAN

    ldap_pack_delete_request_ref = LDAP_OP_DELETE_REQUEST
    ldap_pack_delete_response_ref = LDAP_OP_DELETE_RESPONSE
    ldap_pack_modify_dn_request_ref = LDAP_OP_MODIFY_DN_REQUEST
    ldap_pack_modify_dn_response_ref = LDAP_OP_MODIFY_DN_RESPONSE
    ldap_pack_compare_request_ref = LDAP_OP_COMPARE_REQUEST
    ldap_pack_compare_response_ref = LDAP_OP_COMPARE_RESPONSE
    ldap_pack_abandon_request_ref = LDAP_OP_ABANDON_REQUEST
    ldap_pack_extended_request_ref = LDAP_OP_EXTENDED_REQUEST
    ldap_pack_extended_response_ref = LDAP_OP_EXTENDED_RESPONSE
    ldap_pack_intermediate_response_ref = LDAP_OP_INTERMEDIATE_RESPONSE
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    ldap_pack_message_ref(dest, ix, data, controls);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_bind_request(msgid, version = 3, dn = 0, method = LDAP_AUTH_SIMPLE, arg1 = 0, arg2 = 0)
    U32 msgid
    U32 version
    SV *dn
    U32 method
    SV *arg1
    SV *arg2
PPCODE:
{
    SV *dest = new_message_sv();
    if (version > 3)
	croak("bad LDAP protocol version %u", (unsigned int)version);
    start_ldap_message(dest, msgid);
    pack_bind_request_args(dest, version, dn, method, arg1, arg2);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_unbind_request(msgid)
    U32 msgid
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_unbind_request_args(dest);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void

Gateway.xs  view on Meta::CPAN

			 attributes = 0)
    U32 msgid
    SV *base_dn
    U32 scope
    U32 deref
    U32 size_limit
    U32 time_limit
    U32 types_only
    AV_opt *filter
    SV *attributes
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_search_request_args(dest,
				  base_dn, scope, deref,
				  size_limit, time_limit, types_only,
				  filter, attributes);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_search_entry_response(msgid, dn, ...)
    U32 msgid
    SV *dn
PPCODE:
{
    SV *dest = new_message_sv();
    if (items & 1)
	croak("Usage: Net::LDAP::Gateway::search_entry_response("
	      "$msgid, $dn, attr => \\@values, attr => \\@values, ...)");
    start_ldap_message(dest, msgid);
    pack_search_entry_response_args(dest, dn, &(ST(2)), items - 2);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_search_reference_response(msgid, ...)
    U32 msgid
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_search_reference_response_args(dest, &(ST(1)), items - 1);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_modify_request(msgid, dn, ...)
    U32 msgid
    SV *dn
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_modify_request_args(dest, dn, &(ST(2)), items - 2);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_add_request(msgid, dn, ...)
    U32 msgid
    SV *dn
PPCODE:
{
    SV *dest = new_message_sv();
    if (items & 1)
	croak("Usage: Net::LDAP::Gateway::add_request("
	      "$msgid, $dn, attr => \\@values, attr => \\@values, ...)");
    start_ldap_message(dest, msgid);
    pack_add_request_args(dest, dn, &(ST(2)), items - 2);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void 
ldap_pack_delete_request(msgid, dn)
    U32 msgid
    SV *dn
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_delete_request_args(dest, dn);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_modify_dn_request(msgid, dn, new_rdn, delete_old_rdn = 0, new_superior = 0)
    U32 msgid
    SV *dn
    SV *new_rdn
    I32 delete_old_rdn
    SV *new_superior
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_modify_dn_request_args(dest, dn, new_rdn, delete_old_rdn, new_superior);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_compare_request(msgid, dn, attribute, value)
    U32 msgid
    SV *dn
    SV *attribute
    SV *value
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_compare_request_args(dest, dn, attribute, value);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_abandon_request(msgid, target_msgid)
    U32 msgid
    U32 target_msgid
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_abandon_request_args(dest, target_msgid);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
_ldap_pack_extended_request(msgid, oid, value = 0)
    U32 msgid
    SV *oid
    SV *value
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_extended_request_args(dest, oid, value);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_extended_response(msgid, result = 0, matched_dn = 0, \
			    message = 0, referrals = 0, \
			    name = 0, value = 0)
    U32 msgid
    I32 result
    SV *matched_dn
    SV *message
    SV *referrals
    SV *name
    SV *value
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_extended_response_args(dest, result, matched_dn, message,
				     referrals, name, value);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void
ldap_pack_intermediate_response(msgid, oid = 0, value = 0)
    U32 msgid
    SV *oid
    SV *value
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_intermediate_response_args(dest, oid, value);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}

void

Gateway.xs  view on Meta::CPAN

    SV *message
    SV *referrals
ALIAS:
    ldap_pack_bind_response = LDAP_OP_BIND_RESPONSE
    ldap_pack_search_done_response = LDAP_OP_SEARCH_DONE_RESPONSE
    ldap_pack_modify_response = LDAP_OP_MODIFY_RESPONSE
    ldap_pack_add_response = LDAP_OP_ADD_RESPONSE
    ldap_pack_delete_response = LDAP_OP_DELETE_RESPONSE
    ldap_pack_modify_dn_response = LDAP_OP_MODIFY_DN_RESPONSE
    ldap_pack_compare_response = LDAP_OP_COMPARE_RESPONSE
PPCODE:
{
    SV *dest = new_message_sv();
    start_ldap_message(dest, msgid);
    pack_result_response_args(dest, ix, result, matched_dn, message, referrals);
    end_ldap_message(dest);
    XPUSHs(dest);
    XSRETURN(1);
}



( run in 0.809 second using v1.01-cache-2.11-cpan-5511b514fd6 )