Ignore:
Timestamp:
Apr 25, 2007, 9:44:55 AM (14 years ago)
Author:
Paul Smedley
Message:

Code updated to Samba 3.0.25rc2 level

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/samba/source/nsswitch/idmap_ldap.c

    r22 r30  
    152152
    153153        if (rc != LDAP_SUCCESS) {
     154                DEBUG(1, ("Unable to verify the idpool, cannot continue initialization!\n"));
    154155                return NT_STATUS_UNSUCCESSFUL;
    155156        }
     
    210211        gid_t high_gid = 0;
    211212
     213        /* Only do init if we are online */
     214        if (idmap_is_offline()) {
     215                return NT_STATUS_FILE_IS_OFFLINE;
     216        }
     217
    212218        idmap_alloc_ldap = talloc_zero(NULL, struct idmap_ldap_alloc_context);
    213219        CHECK_ALLOC_DONE( idmap_alloc_ldap );
     
    345351        const char *type;
    346352
     353        /* Only do query if we are online */
     354        if (idmap_is_offline()) {
     355                return NT_STATUS_FILE_IS_OFFLINE;
     356        }
     357
    347358        if ( ! idmap_alloc_ldap) {
    348359                return NT_STATUS_UNSUCCESSFUL;
     
    490501        const char **attr_list;
    491502        const char *type;
     503
     504        /* Only do query if we are online */
     505        if (idmap_is_offline()) {
     506                return NT_STATUS_FILE_IS_OFFLINE;
     507        }
    492508
    493509        if ( ! idmap_alloc_ldap) {
     
    581597        const char *type;
    582598
     599        /* Only do query if we are online */
     600        if (idmap_is_offline()) {
     601                return NT_STATUS_FILE_IS_OFFLINE;
     602        }
     603
    583604        if ( ! idmap_alloc_ldap) {
    584605                return NT_STATUS_UNSUCCESSFUL;
     
    701722********************************/
    702723
    703 static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom, const char *params)
     724static NTSTATUS idmap_ldap_db_init(struct idmap_domain *dom)
    704725{
    705726        NTSTATUS ret;
     
    708729        const char *range = NULL;
    709730        const char *tmp = NULL;
    710        
     731
     732        /* Only do init if we are online */
     733        if (idmap_is_offline()) {
     734                return NT_STATUS_FILE_IS_OFFLINE;
     735        }
     736
    711737        ctx = talloc_zero(dom, struct idmap_ldap_context);
    712738        if ( ! ctx) {
     
    733759        }
    734760
    735         if (params && *params) {
     761        if (dom->params && *(dom->params)) {
    736762                /* assume location is the only parameter */
    737                 ctx->url = talloc_strdup(ctx, params);
     763                ctx->url = talloc_strdup(ctx, dom->params);
    738764        } else {
    739765                tmp = lp_parm_const_string(-1, config_option, "ldap_url", NULL);
     
    838864        int i;
    839865
     866        /* Only do query if we are online */
     867        if (idmap_is_offline()) {
     868                return NT_STATUS_FILE_IS_OFFLINE;
     869        }
     870
     871        /* Initilization my have been deferred because we were offline */
     872        if ( ! dom->initialized) {
     873                ret = idmap_ldap_db_init(dom);
     874                if ( ! NT_STATUS_IS_OK(ret)) {
     875                        return ret;
     876                }
     877        }
     878
    840879        ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);   
    841880
     
    9921031        ret = NT_STATUS_OK;
    9931032
    994 
    995         /* mark all unknwon ones as unmapped */
     1033        /* mark all unknwon/expired ones as unmapped */
    9961034        for (i = 0; ids[i]; i++) {
    997                 if (ids[i]->status == ID_UNKNOWN) ids[i]->status = ID_UNMAPPED;
     1035                if (ids[i]->status != ID_MAPPED)
     1036                        ids[i]->status = ID_UNMAPPED;
    9981037        }
    9991038
     
    10261065static NTSTATUS idmap_ldap_sids_to_unixids(struct idmap_domain *dom, struct id_map **ids)
    10271066{
     1067        LDAPMessage *entry = NULL;
    10281068        NTSTATUS ret;
    10291069        TALLOC_CTX *memctx;
     
    10411081        int i;
    10421082
     1083        /* Only do query if we are online */
     1084        if (idmap_is_offline()) {
     1085                return NT_STATUS_FILE_IS_OFFLINE;
     1086        }
     1087
     1088        /* Initilization my have been deferred because we were offline */
     1089        if ( ! dom->initialized) {
     1090                ret = idmap_ldap_db_init(dom);
     1091                if ( ! NT_STATUS_IS_OK(ret)) {
     1092                        return ret;
     1093                }
     1094        }
     1095
    10431096        ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);   
    10441097
     
    11061159
    11071160        for (i = 0; i < count; i++) {
    1108                 LDAPMessage *entry = NULL;
    11091161                char *sidstr = NULL;
    11101162                char *tmp = NULL;
     
    11931245        ret = NT_STATUS_OK;
    11941246
    1195         /* mark all unknwon ones as unmapped */
     1247        /* mark all unknwon/expired ones as unmapped */
    11961248        for (i = 0; ids[i]; i++) {
    1197                 if (ids[i]->status == ID_UNKNOWN) ids[i]->status = ID_UNMAPPED;
     1249                if (ids[i]->status != ID_MAPPED)
     1250                        ids[i]->status = ID_UNMAPPED;
    11981251        }
    11991252
     
    12221275        int rc = -1;
    12231276
     1277        /* Only do query if we are online */
     1278        if (idmap_is_offline()) {
     1279                return NT_STATUS_FILE_IS_OFFLINE;
     1280        }
     1281
     1282        /* Initilization my have been deferred because we were offline */
     1283        if ( ! dom->initialized) {
     1284                ret = idmap_ldap_db_init(dom);
     1285                if ( ! NT_STATUS_IS_OK(ret)) {
     1286                        return ret;
     1287                }
     1288        }
     1289
    12241290        ctx = talloc_get_type(dom->private_data, struct idmap_ldap_context);   
    12251291
     
    13021368
    13031369/**********************************
    1304  remove a mapping.
    1305 **********************************/
    1306 
    1307 static NTSTATUS idmap_ldap_remove_mapping(struct idmap_domain *dom, const struct id_map *map)
    1308 {
    1309         return NT_STATUS_UNSUCCESSFUL;
    1310 }
    1311 
    1312 /**********************************
    13131370 Close the idmap ldap instance
    13141371**********************************/
     
    13341391        .sids_to_unixids = idmap_ldap_sids_to_unixids,
    13351392        .set_mapping = idmap_ldap_set_mapping,
    1336         .remove_mapping = idmap_ldap_remove_mapping,
    1337         /* .dump_data = TODO */
    13381393        .close_fn = idmap_ldap_close
    13391394};
Note: See TracChangeset for help on using the changeset viewer.