[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [dna] Pseudocode for Simple DNA (Providing text to resolve issue#10)



> Hi Folks,
>
>  I propose to add the following text to a new section called
> "Pseudocode for Simple DNA" to resolve issue #10. The pseudocode is written
> in an imaginary language and any resemblance to real programming languages
> is unintentional.
>
>
> 6.  Pseudocode for Simple DNA
>
>       /* Link up indication received on INTERFACE */
>       /* Start Simple DNA process */
>
>       /* Mark All Addresses as deprecated */
>       Configured_Address_List=Get_Address_List(INTERFACE);
>       foreach Configured_Address in Configured_Address_List
>       {
>         if (Get_Address_State(Configured_Address)!=AS_TENTATIVE)
>         {
>           Set_Address_State(Configured_Address,AS_DEPRECATED);
>         }
>       }
>
>       /* Mark all routers' NC entries as STALE to speed up */
>       /* acquisition of new router if link change has occurred */
>       foreach Router_Address in DEFAULT_ROUTER_LIST
>       {
>         NCEntry=Get_Neighbor_Cache_Entry(Router_Address);
>         Set_Neighbor_Cache_Entry_State(NCEntry,NCS_STALE);
>       }
>
>       /* Thread A : Send Router Solicitation */
>       RS_Target_Address=FF02::2;
>       RS_Source_Address=Get_Any_Link_Local_Address(INTERFACE);
>       Send_Router_Solicitation(RS_Source_Address,RS_Target_Address);
>
>       /* Thread B : Send Neighbor Solicitation(s) */
>       Previously_Known_Router_List=Get_Router_List_from_SDAT();
>       NS_Source_Address=Get_Any_Link_Local_Address(INTERFACE);
>
>       foreach Router_Address in Previously_Known_Router_List
>       {
>         if (Get_Any_Valid_Address_from_SDAT(Router_Address))
>         {
>           Send_Neighbor_Solicitation(NS_Source_Address,Router_Address);
>         }
>       }
>
>       /* Thread C : Response collection */
>
>       /* Received Router Advertisement processing */
>       /* Only for RAs received as response to DNA RSs */
>
>       L3_Source=Get_L3_Source(RECEIVED_MESSAGE);
>       L2_Source=Get_L2_Source(RECEIVED_MESSAGE);
>       SDAT_Entry_List=Get_Entries_from_SDAT_L2L3(L3_Source,L2_Source));
>       foreach SDAT_Entry in SDAT_Entry_List
>       {
>         if (Exists_PIO(RECEIVED_MESSAGE,Get_Prefix(SDAT_Entry)))
>         {
>           /* Address is operable. Configure on Interface */
>           /* Rejoin solicited-node multicast group for address */
>         }
>         else
>         {
>           /* If address is configured on interface, remove it */
>           /* This could be because of a NA arriving before RA */
>         }
>       }
>
>       /* Mark router as reachable */
>       NCEntry=Get_Neighbor_Cache_Entry(L3_Source);
>       if (NCEntry is not NULL)
>       {
>         Set_Neighbor_Cache_Entry_State(NCEntry,NCS_REACHABLE);
>       }
>       else
>       {
>         Create_Neighbor_Cache_Entry(L3_Source,NCS_REACHABLE);
>       }
>
>       /* Ignore further NAs from this router */
>       Add_Router_to_NA_Ignore_List(L3_Source);
>
>
>       /* Received Neighbor Advertisement processing */
>       /* Only for NAs received as response to DNA NSs */
>
>       L3_Source=Get_L3_Source(RECEIVED_MESSAGE);
>       L2_Source=Get_L2_Source(RECEIVED_MESSAGE);
>
>       if (Is_Router_on_NA_Ignore_List(L3_Source)) {
>         /* Ignore message and wait for next message */
>         continue;
>       }
>
>       SDAT_Entry_List=Get_Entries_from_SDAT_L2L3(L3_Source,L2_Source));
>
>       foreach SDAT_Entry in SDAT_Entry_List
>       {
>           /* Address is operable. Configure on Interface */
>       }
>
>
> If you have any issues with this text, please respond to this mail on list.

thanks for your works. I'm struggling to decipher the codes.

Before making further comments, I'd like to ask one clarifying question.

When does DNA procedure stop?

What if NA arrives before RA?
Upon an NA's arrival,
does DNA procedure stop or keep waiting for an RA's arrival?

best regards

JinHyeock
_______________________________________________
dna mailing list
dna@ietf.org
https://www.ietf.org/mailman/listinfo/dna