One looks up the FIB attached to the interface the packet arrives on. The other 
checks whether a previous node indicated which FIB this packet should be 
forwarded via. Many nodes have documented how they use sw_if_index[], see 
https://docs.fd.io/vpp/18.01/dc/da9/ip4__forward_8c.html#a981572b77836b7b06de0d93847867180

Chris.

From: vpp-dev-boun...@lists.fd.io [mailto:vpp-dev-boun...@lists.fd.io] On 
Behalf Of yao.chen...@zte.com.cn
Sent: Saturday, November 4, 2017 1:45
To: vpp-dev@lists.fd.io
Cc: lou.fangli...@zte.com.cn; wan.jun...@zte.com.cn
Subject: [vpp-dev] Ask a question, thanks!


 Hi,

        in below  fun ip4_lookup_inline,i have a question,  please see also the 
following red part.

        always_inline uword

        ip4_lookup_inline (vlib_main_t * vm,

                         vlib_node_runtime_t * node,

                         vlib_frame_t * frame,

                         int lookup_for_responses_to_locally_received_packets)



            fib_index0 =

              vec_elt (im->fib_index_by_sw_if_index,

                           vnet_buffer (p0)->sw_if_index[VLIB_RX]);

            //above code ,get fib table index from vnet_buffer 
(p0)->sw_if_index[VLIB_RX] by vec_elt



            fib_index0 =

              (vnet_buffer (p0)->sw_if_index[VLIB_TX] ==

               (u32) ~ 0) ? fib_index0 : vnet_buffer (p0)->sw_if_index[VLIB_TX];

          // here my question:if vnet_buffer (p0)->sw_if_index[VLIB_TX] is 
valid(not -1) , direct use vnet_buffer (p0)->sw_if_index[VLIB_TX] as fib table  
                     index  .why direct use  vnet_buffer 
(p0)->sw_if_index[VLIB_TX]  instead of use vec_elt to get ?


regards,

chenghu yao
_______________________________________________
vpp-dev mailing list
vpp-dev@lists.fd.io
https://lists.fd.io/mailman/listinfo/vpp-dev

Reply via email to