Hi all,
I want to introduce a new network entity, Location Server (LS) for some reason, 
and have MNs and PITRs interact with it as follows:
   
   - When an MN detects its interface signal dropping (which is going to be 
determined by an external program), MN should issue Map-Reply(LS) to PITR, and 
Map-Reply(NULL) to LS.
   - When an MN's interface comes back up after binding to a new address RLOC, 
and the MN (eventually) issues Map-Reply(RLOC) to PITR, MN should also issue 
Map-Reply(RLOC) to LS.
As we know, a Solicit-Map-Request (SMR) is sent to PITR at interface up, and 
the PITR sends a Map-Request to the MN, which then sends a Map-Reply with its 
new RLOC.  tr_recv_map_request() in control/lisp_xtr.c appears to handle the 
incoming Map-Request and respond with a Map-Reply, so I intend to modify this 
function to deal with both interaction, and supply it through the lisp_xtr_r 
structure with a flag to distinguish the two behaviours, and the LS address.  
The flag will be set if the signal drop has been detected, and cleared if the 
interface has come back up.  There are two modifications:
   
   - If the flag is set, Map-Reply(LS) will be sent to PITR instead of 
Map-Reply(RLOC).
   - An additional Map-Reply(flag ? NULL : RLOC) will be sent to LS.
For the first change, can someone explain how the RLOC currently gets set in 
the new message?  Is it uc->la, for example?  Or do I need to build a new 
mapping_t?

For the second change, I don't strictly have to use a Map-Reply, as my code 
will be talking to my LS, but it would be nice to re-use the message type.  
What could I do to express some sort of Map-Reply(NULL)?  Use 
lisp_msg_put_neg_mapping, perhaps?  Or just an all-zero IP address?


It looks like send_all_smr_and_reg() sends SMR, so that will result in a later 
invocation of tr_recv_map_request().  It is only invoked from 
send_all_smr_cb(), which appears to be invoked by a timer.  Is that timer set 
as a result of a new binding, i.e., so that SMR will be sent a short moment 
after the new binding is established?  IOW, does the invocation of 
send_all_smr_cb() imply that the lisp_xtr object has learned of the new 
binding?  If so, I intend to clear the flag inside send_all_smr_cb(), so that 
the subsequent (indirect) invocation of tr_recv_map_request() will behave 
normally to PITR (as well as send an additional message to LS).  I will also 
add a non-static function to set the flag, and then call 
send_all_smr_and_reg().  I will later arrange to call this new function when 
the signal drop is detected.

Regards, Musab Isah
Research Student,School of Computing and Communications,D29, InfoLab21Lancaster 
University

Reply via email to