2 * Copyright (c) 1998 Will Ballantyne, ITSD, Government of BC
5 * Redistribution and use in source and binary forms are permitted
6 * provided that this notice is preserved and that due credit is given
7 * to ITSD, Government of BC. The name of ITSD
8 * may not be used to endorse or promote products derived from this
9 * software without specific prior written permission. This software
10 * is provided ``as is'' without express or implied warranty.
17 #include <ac/socket.h> /* Get struct sockaddr for slap.h */
21 * given a dn (or root part), return an aliased dn if any of the
22 * alias suffixes match
24 char *suffixAlias (char *dn, Operation *op, Backend *be)
28 if(dn == NULL) return NULL;
30 dnLength = strlen ( dn );
32 op->o_suffixAliased = NULL;
34 be->be_suffixAlias != NULL && be->be_suffixAlias[i] != NULL;
36 int aliasLength = strlen (be->be_suffixAlias[i]);
37 if (aliasLength > dnLength) {
41 if (!strcasecmp(be->be_suffixAlias[i],
42 dn + (dnLength - aliasLength))) {
44 op->o_suffixAliased = ch_strdup ( be->be_suffixAlias[i] );
45 dn = ch_malloc ( (dnLength - aliasLength) +
46 strlen (be->be_suffixAlias[ i+1 ]) + 1);
47 strncpy (dn, oldDN, dnLength - aliasLength);
48 strcpy (dn + (dnLength - aliasLength), be->be_suffixAlias[ i+1 ]);
49 op->o_suffix = ch_strdup (dn);
50 Debug( LDAP_DEBUG_ARGS, "ALIAS: converted %s to %s", oldDN, dn, 0);