[cifs-protocol] [REG:115071012931908] MS-ADTS 6.2.2.3.4.3 KCC ColorVertices

Douglas Bagnall douglas.bagnall at catalyst.net.nz
Sat Jul 11 11:07:08 UTC 2015


hi Edgar,

Sorry for the excessive musing -- I just want to be sure that the
section highlighted section really intends to be using localSiteVertex
and not v.

thanks,
Douglas

On 11/07/15 08:00, Edgar Olougouna wrote:
> Douglas,
> I will assist you on this inquiry. Can you clarify whether you'd like me to review your comments on the algorithm?
> Sorry I am trying scope this to a precise question.
> 
> Thanks,
> Edgar
> 
> -----Original Message-----
> From: Tarun Chopra 
> Sent: Friday, July 10, 2015 11:13 AM
> To: Douglas Bagnall
> Cc: cifs-protocol at lists.samba.org; MSSolve Case Email; Edgar Olougouna
> Subject: [REG:115071012931908] MS-ADTS 6.2.2.3.4.3 KCC ColorVertices
> 
> Hello Douglas
> 
> We have created a case; 115071012931908, to track your inquiry and Edgar (lopped in Cc) will be assisting you further.
> 
> Best Regards,
> Tarun Chopra | Sr. Escalation Engineer
> Open Specifications Support Team
> Work +1-425-705-5042
> Email  tarun.chopra at microsoft.com
> Monday-Friday 9:00a-6:00p Pacific Timezone
> 
> 
> -----Original Message-----
> From: Douglas Bagnall [mailto:douglas.bagnall at catalyst.net.nz] 
> Sent: Thursday, July 9, 2015 6:28 PM
> To: Interoperability Documentation Help
> Cc: cifs-protocol at lists.samba.org
> Subject: MS-ADTS 6.2.2.3.4.3 KCC ColorVertices
> 
> hi Dochelp,
> 
> In the ColorVertices function:
> 
>    LET localSiteVertex be the vertex in graph.Vertices such that
>    localSiteVertex.ID = objectGUID of the local DC's site object
>    FOR each v in g.Vertices
>      FOR each interSiteTransport object t that is a child of the
>      CN=Inter-Site Transports child of the CN=Sites child of the
>      config NC
>        IF localSiteVertex.Color = COLOR.RED and t!name ≠ "IP"
>        and FLAG_CR_NTDS_DOMAIN bit is set in cr!systemFlags
>          Skip t
>        ENDIF
>        IF no edge e exists in g.Edges such that e.VertexIDs
>        contains v.ID
>          Skip t
>        ENDIF
>        LET partialReplicaOkay be TRUE if and only if
>        localSiteVertex.Color = COLOR.BLACK
> 
>        LET bh be the result of GetBridgeheadDC(
>        localSiteVertex.ID, cr, t, partialReplicaOkay,
>        detectFailedDCs)
>        IF bh = null
>          /* No bridgehead DC is currently available. */
>          SET foundFailedDCs to TRUE
>          Skip t
>        ENDIF
>        APPEND t!objectGUID to v.AcceptRedRed
>        APPEND t!objectGUID to v.AcceptBlack
>      ENDFOR
>    ENDFOR
> 
> ... GetBridgeheadDC() is being called for the localSiteVertex in a loop over all the graph vertices. That's this bit in the middle:
> 
>        LET partialReplicaOkay be TRUE if and only if
>        localSiteVertex.Color = COLOR.BLACK
> 
>        LET bh be the result of GetBridgeheadDC(
>        localSiteVertex.ID, cr, t, partialReplicaOkay,
>        detectFailedDCs)
> 
> which seems invariant with regard to the outer loop -- it will produce the same answers for each vertex -- and somewhat irrelevant for the
> Accept* lists on the remote vertex. It looks to me like it would make sense to use the vertex v in place of localSiteVertex in this part.
> However, the spec is very determined to generate the localSiteVertex variable for something, so this doesn't look like a simple typo. In effect this looks like a roundabout way of saying nothing gets added to anyone's Accept* lists when there is no local bridgehead.
> 
> regards,
> Douglas
> 




More information about the cifs-protocol mailing list