Hi,all:<br>      Recently, I am reading the pluto source code and I am confused by the following code.<br><br>In init_demux(), we can see the following comment:<br> /* fill ike_microcode_index:<br> * make ike_microcode_index[s] point to first entry in<br> * state_microcode_table for state s (backward scan makes this easier).<br> * Check that table is in order -- catch coding errors.<br> * For what it's worth, this routine is idempotent.<br> */<br>So after we call init_demux(), ike_microcode_index[s]point to first entry in <br><br>state_microcode_table for state s. But, for a certain state there may be more than one entry <br><br>in state_microcode_table. For example, there are two entries for STATE_AGGR_R0 in <br><br>state_microcode_table,as follows:<br>.....<br>    { STATE_AGGR_R0, STATE_AGGR_R1,<br>      SMF_PSK_AUTH| SMF_REPLY,<br>      P(SA) | P(KE) | P(NONCE) | P(ID), P(VID), PT(NONE),<br>      EVENT_RETRANSMIT, aggr_inI1_outR1_psk },<br><br>    { STATE_AGGR_R0, STATE_AGGR_R1,<br>      SMF_DS_AUTH | SMF_REPLY,<br>      P(SA) | P(KE) | P(NONCE) | P(ID), P(VID), PT(NONE),<br>      EVENT_RETRANSMIT, aggr_inI1_outR1_rsasig },<br>.....<br><br>After calling init_demux(), the pointer in ike_microcode_index[] for STATE_AGGR_R0 will point to the following entry:<br>    { STATE_AGGR_R0, STATE_AGGR_R1,<br>      SMF_PSK_AUTH| SMF_REPLY,<br>      P(SA) | P(KE) | P(NONCE) | P(ID), P(VID), PT(NONE),<br>      EVENT_RETRANSMIT, aggr_inI1_outR1_psk },<br><br>My question is: What if I use RSASIG authentication in IKE phase 1? It SHOULD call aggr_inI1_outR1_rsasig() not aggr_inI1_outR1_psk() to process the packet. <br>Jacky<br><!-- footer --><br><hr>
<a style="font-size:14px;line-height:15px; color:#000; text-decoration:none" href="http://www.126.com/" target="_blank"><span style="text-decoration:underline; color:blue">抢注!网易隆重推出新一代免费邮箱</span><span style="font-family:Tahoma; text-decoration:underline; color:blue">>></span> </a>