1d11b170bStron // $OpenLDAP$
22de962bdSlukem /*
3*e670fd5cSchristos * Copyright 2000-2021 The OpenLDAP Foundation, All Rights Reserved.
42de962bdSlukem * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
52de962bdSlukem */
62de962bdSlukem
72de962bdSlukem
82de962bdSlukem #include "debug.h"
92de962bdSlukem #include "config.h"
102de962bdSlukem #include "ac/time.h"
112de962bdSlukem #include "LDAPConstraints.h"
122de962bdSlukem #include "LDAPControlSet.h"
132de962bdSlukem
142de962bdSlukem using namespace std;
152de962bdSlukem
LDAPConstraints()162de962bdSlukem LDAPConstraints::LDAPConstraints(){
172de962bdSlukem DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPConstraints::LDAPConstraints()" << endl);
182de962bdSlukem m_aliasDeref=LDAPConstraints::DEREF_NEVER;
192de962bdSlukem m_maxTime=LDAP_NO_LIMIT;
202de962bdSlukem m_maxSize=LDAP_NO_LIMIT;
212de962bdSlukem m_referralChase=false;
222de962bdSlukem m_HopLimit=7;
232de962bdSlukem m_serverControls=0;
242de962bdSlukem m_clientControls=0;
252de962bdSlukem m_refRebind=0;
262de962bdSlukem }
272de962bdSlukem
LDAPConstraints(const LDAPConstraints & c)282de962bdSlukem LDAPConstraints::LDAPConstraints(const LDAPConstraints& c){
292de962bdSlukem DEBUG(LDAP_DEBUG_CONSTRUCT,"LDAPConstraints::LDAPConstraints(&)" << endl);
302de962bdSlukem m_aliasDeref=c.m_aliasDeref;
312de962bdSlukem m_maxTime=c.m_maxTime;
322de962bdSlukem m_maxSize=c.m_maxSize;
332de962bdSlukem m_referralChase=c.m_referralChase;
342de962bdSlukem m_HopLimit=c.m_HopLimit;
352de962bdSlukem m_deref=c.m_deref;
362de962bdSlukem if(c.m_serverControls){
372de962bdSlukem m_serverControls=new LDAPControlSet(*c.m_serverControls);
382de962bdSlukem }else{
392de962bdSlukem m_serverControls=0;
402de962bdSlukem }
412de962bdSlukem if(c.m_clientControls){
422de962bdSlukem m_clientControls=new LDAPControlSet(*c.m_clientControls);
432de962bdSlukem }else{
442de962bdSlukem m_clientControls=0;
452de962bdSlukem }
462de962bdSlukem m_refRebind=c.m_refRebind;
472de962bdSlukem }
482de962bdSlukem
~LDAPConstraints()492de962bdSlukem LDAPConstraints::~LDAPConstraints(){
502de962bdSlukem DEBUG(LDAP_DEBUG_DESTROY,"LDAPConstraints::~LDAPConstraints()" << endl);
512de962bdSlukem delete m_clientControls;
522de962bdSlukem delete m_serverControls;
532de962bdSlukem }
542de962bdSlukem
setAliasDeref(int deref)552de962bdSlukem void LDAPConstraints::setAliasDeref(int deref){
562de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setAliasDeref()" << endl);
572de962bdSlukem DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER,
582de962bdSlukem " deref:" << deref << endl);
592de962bdSlukem if( (deref == LDAPConstraints::DEREF_NEVER) ||
602de962bdSlukem (deref == LDAPConstraints::DEREF_SEARCHING) ||
612de962bdSlukem (deref == LDAPConstraints::DEREF_FINDING) ||
622de962bdSlukem (deref == LDAPConstraints::DEREF_ALWAYS)
632de962bdSlukem ){
642de962bdSlukem m_aliasDeref=deref;
652de962bdSlukem }
662de962bdSlukem }
672de962bdSlukem
682de962bdSlukem
setMaxTime(int t)692de962bdSlukem void LDAPConstraints::setMaxTime(int t){
702de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setMaxTime()" << endl);
712de962bdSlukem DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER," time:" << t << endl);
722de962bdSlukem m_maxTime=t;
732de962bdSlukem }
742de962bdSlukem
setSizeLimit(int s)752de962bdSlukem void LDAPConstraints::setSizeLimit(int s){
762de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setSizeLimit()" << endl);
772de962bdSlukem DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER," size:" << s << endl);
782de962bdSlukem m_maxSize=s;
792de962bdSlukem }
802de962bdSlukem
setReferralChase(bool rc)812de962bdSlukem void LDAPConstraints::setReferralChase(bool rc){
822de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setReferralChase()" << endl);
832de962bdSlukem DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER," rc:" << rc << endl);
842de962bdSlukem m_referralChase=rc;
852de962bdSlukem }
862de962bdSlukem
setHopLimit(int limit)872de962bdSlukem void LDAPConstraints::setHopLimit(int limit){
882de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setHopLimit()" << endl);
892de962bdSlukem DEBUG(LDAP_DEBUG_TRACE | LDAP_DEBUG_PARAMETER,
902de962bdSlukem " limit:" << limit << endl);
912de962bdSlukem m_HopLimit=limit;
922de962bdSlukem }
932de962bdSlukem
setReferralRebind(const LDAPRebind * rebind)942de962bdSlukem void LDAPConstraints::setReferralRebind(const LDAPRebind* rebind){
952de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setReferralRebind()" << endl);
962de962bdSlukem m_refRebind = rebind;
972de962bdSlukem }
982de962bdSlukem
setServerControls(const LDAPControlSet * ctrls)992de962bdSlukem void LDAPConstraints::setServerControls(const LDAPControlSet* ctrls){
1002de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setServerControls()" << endl);
1012de962bdSlukem m_serverControls=new LDAPControlSet(*ctrls);
1022de962bdSlukem }
1032de962bdSlukem
setClientControls(const LDAPControlSet * ctrls)1042de962bdSlukem void LDAPConstraints::setClientControls(const LDAPControlSet* ctrls){
1052de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::setClientControls()" << endl);
1062de962bdSlukem m_clientControls=new LDAPControlSet(*ctrls);
1072de962bdSlukem }
1082de962bdSlukem
getAliasDeref() const1092de962bdSlukem int LDAPConstraints::getAliasDeref() const {
1102de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getAliasDeref()" << endl);
1112de962bdSlukem return m_aliasDeref;
1122de962bdSlukem }
1132de962bdSlukem
getMaxTime() const1142de962bdSlukem int LDAPConstraints::getMaxTime() const {
1152de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getMaxTime()" << endl);
1162de962bdSlukem return m_maxTime;
1172de962bdSlukem }
1182de962bdSlukem
getSizeLimit() const1192de962bdSlukem int LDAPConstraints::getSizeLimit() const {
1202de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getSizeLimit()" << endl);
1212de962bdSlukem return m_maxSize;
1222de962bdSlukem }
1232de962bdSlukem
getReferralRebind() const1242de962bdSlukem const LDAPRebind* LDAPConstraints::getReferralRebind() const{
1252de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getReferralRebind()" << endl);
1262de962bdSlukem return m_refRebind;
1272de962bdSlukem }
1282de962bdSlukem
getServerControls() const1292de962bdSlukem const LDAPControlSet* LDAPConstraints::getServerControls() const{
1302de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getServerControls()" << endl);
1312de962bdSlukem return m_serverControls;
1322de962bdSlukem }
1332de962bdSlukem
getClientControls() const1342de962bdSlukem const LDAPControlSet* LDAPConstraints::getClientControls() const{
1352de962bdSlukem DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getClientControls()" << endl);
1362de962bdSlukem return m_clientControls;
1372de962bdSlukem }
1382de962bdSlukem
getSrvCtrlsArray() const1392de962bdSlukem LDAPControl** LDAPConstraints::getSrvCtrlsArray() const {
140*e670fd5cSchristos DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getSrvCtrlsArray()" << endl);
1412de962bdSlukem if(m_serverControls){
1422de962bdSlukem return m_serverControls->toLDAPControlArray();
1432de962bdSlukem }else{
1442de962bdSlukem return 0;
1452de962bdSlukem }
1462de962bdSlukem }
1472de962bdSlukem
getClCtrlsArray() const1482de962bdSlukem LDAPControl** LDAPConstraints::getClCtrlsArray() const {
149*e670fd5cSchristos DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getClCtrlsArray()" << endl);
1502de962bdSlukem if(m_clientControls){
1512de962bdSlukem return m_clientControls->toLDAPControlArray();
1522de962bdSlukem }else{
1532de962bdSlukem return 0;
1542de962bdSlukem }
1552de962bdSlukem }
1562de962bdSlukem
getTimeoutStruct() const1572de962bdSlukem timeval* LDAPConstraints::getTimeoutStruct() const {
158*e670fd5cSchristos DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getTimeoutStruct()" << endl);
1592de962bdSlukem if(m_maxTime == LDAP_NO_LIMIT){
1602de962bdSlukem return 0;
1612de962bdSlukem }else{
1622de962bdSlukem timeval *ret = new timeval;
1632de962bdSlukem ret->tv_sec=m_maxTime;
1642de962bdSlukem ret->tv_usec=0;
1652de962bdSlukem return ret;
1662de962bdSlukem }
1672de962bdSlukem }
1682de962bdSlukem
getReferralChase() const1692de962bdSlukem bool LDAPConstraints::getReferralChase() const {
170*e670fd5cSchristos DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getReferralChase()" << endl);
1712de962bdSlukem return m_referralChase;
1722de962bdSlukem }
1732de962bdSlukem
getHopLimit() const1742de962bdSlukem int LDAPConstraints::getHopLimit() const{
175*e670fd5cSchristos DEBUG(LDAP_DEBUG_TRACE,"LDAPConstraints::getHopLimit()" << endl);
1762de962bdSlukem return m_HopLimit;
1772de962bdSlukem }
1782de962bdSlukem
179