URL: https://code.wireshark.org/review/gitweb?p=wireshark.git;a=commit;h=f4ab3f492f5b2dfef55a65900ec256655c110e23
Submitter: Alexis La Goutte (alexis.lagoutte@xxxxxxxxx)
Changed: branch: master
Repository: wireshark
Commits:
f4ab3f4 by Jeff Layton (jlayton@xxxxxxxxxx):
ceph: distingush between client and server by checking for a second entity_addr_t
The current ceph dissector assumes that the server will always send its
initial connection negotiation first, but that's not necessarily the
case, especially with the kernel client which sends its banner as soon
as the socket is created.
So, we need a better mechanism to determine which end is client and
which is the server. The server sends its own address and then the
address of the client, but the client only sends its own address. We
can determine whether the initial negotiation message is from the client
or server by looking at the data after the first entity addr and seeing
whether it also looks like an entity addr.
This patch takes that approach. It just grabs the address family from
the second address and sees whether it's IPv4 or IPv6. If it's not one
of those, then it assumes that it's not an entity_addr_t at all and is
therefore a request from the client.
We could go farther and try to verify the port and address as well, but
that's probably overkill. The address family is at the same offset as
the host_type field in the client's Connect request, but it's big endian
and the host_type is little endian. As long as we don't end up with
host_types that are 0x200 or 0xA00, this scheme should be OK.
Change-Id: I161d02da86d978272eff95497c6df66766b02ebc
Signed-off-by: Jeff Layton <jlayton@xxxxxxxxxx>
Reviewed-on: https://code.wireshark.org/review/16043
Petri-Dish: Alexis La Goutte <alexis.lagoutte@xxxxxxxxx>
Tested-by: Petri Dish Buildbot <buildbot-no-reply@xxxxxxxxxxxxx>
Reviewed-by: Michael Mann <mmann78@xxxxxxxxxxxx>
Reviewed-by: Alexis La Goutte <alexis.lagoutte@xxxxxxxxx>
Actions performed:
from 2e879e2 Generic Protocol Extension support for VxLAN
adds f4ab3f4 ceph: distingush between client and server by checking for a second entity_addr_t
Summary of changes:
epan/dissectors/packet-ceph.c | 76 +++++++++++++++++++++++++++++------------
1 file changed, 54 insertions(+), 22 deletions(-)