mirror of
https://github.com/the-tcpdump-group/tcpdump.git
synced 2024-11-27 03:53:53 +08:00
OpenFlow 1.0: Get snapend right for nested frames. [skip ci]
The current and the nested packets can and do have different snapend, implement and comment that in of10_packet_data_print() to fix an issue discovered by Francois-Xavier Le Bail.
This commit is contained in:
parent
fd60dce545
commit
f39bd6851f
1
CHANGES
1
CHANGES
@ -14,6 +14,7 @@ Monthday, Month DD, YYYY by gharris and denis
|
||||
AppleTalk: Declutter appletalk.h.
|
||||
Introduce new ND_LCHECK*() macros to deduplicate more code.
|
||||
IEEE 802.11: Simplify handle_action().
|
||||
OpenFlow 1.0: Get snapend right for nested frames.
|
||||
|
||||
Monthday, Month DD, YYYY by gharris
|
||||
Summary for 4.99.1 tcpdump release (so far!)
|
||||
|
@ -1017,7 +1017,19 @@ of10_packet_data_print(netdissect_options *ndo,
|
||||
}
|
||||
ndo->ndo_vflag -= 3;
|
||||
ND_PRINT(", frame decoding below\n");
|
||||
/*
|
||||
* The encapsulated Ethernet frame is not necessarily the last
|
||||
* data of this packet (i.e. there may be more OpenFlow messages
|
||||
* after the current OFPT_PACKET_IN/OFPT_PACKET_OUT message, in
|
||||
* which case the current (outer) packet's snapshot end is not
|
||||
* what ether_print() needs to decode an Ethernet frame nested in
|
||||
* the middle of a TCP payload.
|
||||
*/
|
||||
if (!nd_push_snapend(ndo, cp + len))
|
||||
(*ndo->ndo_error)(ndo, S_ERR_ND_MEM_ALLOC,
|
||||
"%s: failed to adjust snapend", __func__);
|
||||
ether_print(ndo, cp, len, ND_BYTES_AVAILABLE_AFTER(cp), NULL, NULL);
|
||||
nd_pop_packet_info(ndo);
|
||||
ndo->ndo_vflag += 3;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user