Comment # 5
on bug 13202
from Parav Pandit
Hi Chuck,
I debugged further there are X issues.
1. packet-rpcrdma.c invokes upper level dissector (nfs), which performs
conversation lookup based on bidirectional property (tuple of sip, dip, sport,
dport). This tuple is not setup by packet-infiniband.c because src_qp doesn't
exist in packet.
So NFS dissector fails to load. Thats why you see Infiniband packets showing
up.
2. packet-rpcrdma.c is calling find_or_create_conversation(pinfo) during
dissect_rpcordma_heur(), which is incorrect for Infiniband. Because for
proto_ib conversation, we store service_id etc for a conversation. Creating
conversation by upper protocol without setting protocol data won't find it.
This issue got exposed because duplicate conversation entries doesn't exist
anymore.
So now to avoid every dissectors above infiniband to perform lookup based on
out-of-band src_qp, (which I am doing in nvme dissector), it needs to move to
packet-infiniband.c
By doing so, pinfo sport will contain src_qp and tuple lookup by nfs, and
dissectors above infiniband can succeed.
I have tested this in local sandbox.
I will send patch soon for packet-infiniband.c and packet-rpcrdma.c
You are receiving this mail because:
- You are watching all bug changes.