Samba4/LDB/Partition

From SambaWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Source Code

The source code is located at source4/dsdb/samdb/ldb_modules/partition.c.

Structures

dsdb_partition

struct dsdb_partition {
    struct ldb_module *module;
    struct dsdb_control_current_partition *ctrl;
};

part_request

struct part_request {
    struct ldb_module *module;
    struct ldb_request *req;
};

partition_context

struct partition_context {
    struct ldb_module *module;
    struct ldb_request *req;
    bool got_success;

    struct part_request *part_req;
    int num_requests;
    int finished_requests;
};

Methods

partition_init()

This method reads the partition configuration from the SAM database, connects to the backends, registers the partitions, load modules, and register controls.

The configuration is stored in the @PARTITION entry in the following attributes:

  • partition: Base DN and URL of the partition.
  • replicateEntries: Entries to replicate to all partitions.
  • modules: Base DN and modules for the partition.

This method registers the following controls:

  • domain scope (1.2.840.113556.1.4.1339)
  • search options (1.2.840.113556.1.4.1340)

partition_search()

This method intercepts search requests, removes domain scope and search options controls, and redirects the request to the appropriate partitions.