[PATCH] KCC intrasite topology generator advancement

Dave Craft wimberosa at gmail.com
Sun Dec 4 14:02:35 MST 2011

Tridge, Samba Team,

The patchsets available at
are now available for review and integration if acceptable.

The crux of these changes gets samba_kcc to properly commit
repsFrom for each NC replica that is implied by an NTDS Connection.
All attributes (e.g. DRS options, schedules, etc.) are now properly
maintained in repsFrom creations.

Additionally the samba_kcc is now invocable from the daemon and
can be configured instead of kccsrv_simple_update (e.g. can be
invoked instead of the older kcc topology generator).  More detail
noted in the check in comments appended below:

Next work items:

At this point I've drained enough info from the database and built
sufficient classes such that I have a substantively complete intrasite kcc.
My plan is to now add an (--export) and (--import) option
to samba_kcc so that I can dump an ldif representation from any
dsa database and run the topology generator against it.   This is
in line with prior conversations I've had with tridge for being able
to debug this against any customer configuration (as well as
add ldif databases to the samba test directory).

Here are the checkin comments:

   1) samba_kcc NTDSConnection translation …

    This is an advancement of samba_kcc to compute and
    commit the modification of a repsFrom on an NC Replica.
    The repsFrom is computed according to the MS tech spec
    for implied replicas of NTDSConnections.  Proper maintenance
    of (DRS options, schedules, etc) from a NTDSConnection are now
    all present.  New classes for inter-site transports, sites,
    and repsFrom) are now present in kcc_utils.py.  Substantively
    this gets intra-site topology generation functional by committing
    the repsFrom that were computed from the DSA graph implemented in
    prior drops of samba_kcc

    2) Invocation of samba_kcc from KCC task …

    Modification to periodic and explicit invocation
    paths of the KCC topology generation code.  Managed
    via samba_runcmd_send() API.  The samba_kcc script
    is invoked if (kccsrv:samba_kcc = true) appears in smb.conf

    3) Add subreq and status to kcc_service struct …

    The subreq and status fields in the kcc_service struct
    are added for execution management of the external samba_kcc
    python script.

    4) Add DRSUAPI_DRS_UPDATE_(x) flags …

    DRSUAPI_DRS_UPDATE flags are used in
    DRS_MSG_REPMOD_V1 message structure when repsFrom
    is modified via RPC.  The RPCs are currently uncoded but
    samba_kcc maintains the flags (and uses them to identify
    what repsFrom changes are to be executed).  These are currently
    helpful to samba_kcc and are intended to ultimately be used in

    5) Add NTDSConnection schedule attr blob …

    Add schedule blob to drsblobs to allow
    NDR unpacking into a python class.

    6) Add samba_kcc load parameter …

    Configures parameter to enumerate name of python KCC
    topology generator for subsequent use by samba_runcmd_send()
    invocation from kcc task
Regards, Dave Craft
Cut the headlights and put it in neutral.

More information about the samba-technical mailing list