diff options
Diffstat (limited to 'epan/dissectors')
-rw-r--r-- | epan/dissectors/packet-exported_pdu.c | 1 | ||||
-rw-r--r-- | epan/dissectors/packet-iwarp-mpa.c | 3 | ||||
-rw-r--r-- | epan/dissectors/packet-rpc.c | 13 |
3 files changed, 13 insertions, 4 deletions
diff --git a/epan/dissectors/packet-exported_pdu.c b/epan/dissectors/packet-exported_pdu.c index ca08a1a8bb..f978636046 100644 --- a/epan/dissectors/packet-exported_pdu.c +++ b/epan/dissectors/packet-exported_pdu.c @@ -118,6 +118,7 @@ static const value_string exported_pdu_port_type_vals[] = { { EXP_PDU_PT_IBQP, "IBQP" }, { EXP_PDU_PT_BLUETOOTH,"BLUETOOTH" }, { EXP_PDU_PT_TDMOP, "TDMOP" }, + { EXP_PDU_PT_IWARP_MPA,"IWARP_MPA" }, { 0, NULL } }; diff --git a/epan/dissectors/packet-iwarp-mpa.c b/epan/dissectors/packet-iwarp-mpa.c index ce1a0db6f7..a86cc2073e 100644 --- a/epan/dissectors/packet-iwarp-mpa.c +++ b/epan/dissectors/packet-iwarp-mpa.c @@ -920,6 +920,9 @@ dissect_iwarp_mpa_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void return FALSE; } + /* Set the port type for this packet to be iWarp MPA */ + pinfo->ptype = PT_IWARP_MPA; + tcp_dissect_pdus(tvb, pinfo, tree, TRUE, /* proto_desegment*/ MPA_SMALLEST_FPDU_LEN, diff --git a/epan/dissectors/packet-rpc.c b/epan/dissectors/packet-rpc.c index 4b406b8707..9155a663ba 100644 --- a/epan/dissectors/packet-rpc.c +++ b/epan/dissectors/packet-rpc.c @@ -1677,7 +1677,7 @@ get_conversation_for_call(packet_info *pinfo) * might send retransmissions from a different port from * the original request. */ - if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP) { + if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP || pinfo->ptype == PT_IWARP_MPA) { conversation = find_conversation_pinfo(pinfo, 0); } else { /* @@ -1691,7 +1691,7 @@ get_conversation_for_call(packet_info *pinfo) } if (conversation == NULL) { - if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP) { + if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP || pinfo->ptype == PT_IWARP_MPA) { conversation = conversation_new(pinfo->num, &pinfo->src, &pinfo->dst, conversation_pt_to_endpoint_type(pinfo->ptype), pinfo->srcport, pinfo->destport, 0); @@ -1729,7 +1729,7 @@ find_conversation_for_reply(packet_info *pinfo) * to the original call and a retransmission of the call * might be sent to different ports. */ - if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP) { + if (pinfo->ptype == PT_TCP || pinfo->ptype == PT_IBQP || pinfo->ptype == PT_IWARP_MPA) { conversation = find_conversation_pinfo(pinfo, 0); } else { /* @@ -1761,6 +1761,11 @@ new_conversation_for_reply(packet_info *pinfo) &pinfo->src, &pinfo->dst, ENDPOINT_IBQP, pinfo->srcport, pinfo->destport, 0); break; + case PT_IWARP_MPA: + conversation = conversation_new(pinfo->num, + &pinfo->src, &pinfo->dst, ENDPOINT_IWARP_MPA, + pinfo->srcport, pinfo->destport, 0); + break; default: conversation = conversation_new(pinfo->num, &pinfo->dst, &null_address, conversation_pt_to_endpoint_type(pinfo->ptype), @@ -2147,7 +2152,7 @@ looks_like_rpc_reply(tvbuff_t *tvb, packet_info *pinfo, int offset) * and this is a connection-oriented transport, * give up. */ - if (((! rpc_find_fragment_start) || (pinfo->ptype != PT_TCP)) && (pinfo->ptype != PT_IBQP)) { + if (((! rpc_find_fragment_start) || (pinfo->ptype != PT_TCP)) && (pinfo->ptype != PT_IBQP) && (pinfo->ptype != PT_IWARP_MPA)) { return NULL; } |