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 dnLength = strlen ( dn );
30 op->o_suffixAliased = NULL;
32 be->be_suffixAlias != NULL && be->be_suffixAlias[i] != NULL;
34 int aliasLength = strlen (be->be_suffixAlias[i]);
35 if (aliasLength > dnLength) {
39 if (!strcasecmp(be->be_suffixAlias[i],
40 dn + (dnLength - aliasLength))) {
42 op->o_suffixAliased = ch_strdup ( be->be_suffixAlias[i] );
43 dn = ch_malloc ( (dnLength - aliasLength) +
44 strlen (be->be_suffixAlias[ i+1 ]) + 1);
45 strncpy (dn, oldDN, dnLength - aliasLength);
46 strcpy (dn + (dnLength - aliasLength), be->be_suffixAlias[ i+1 ]);
47 op->o_suffix = ch_strdup (dn);
48 Debug( LDAP_DEBUG_ARGS, "ALIAS: converted %s to %s", oldDN, dn, 0);