Wireshark-bugs: [Wireshark-bugs] [Bug 8240] Dissector for the OpenVPN Protocol
Date: Sun, 20 Jan 2013 19:07:05 +0000
Bill Meier changed bug 8240
What | Removed | Added |
---|---|---|
Status | IN_PROGRESS | INCOMPLETE |
Comment # 7
on bug 8240
from Bill Meier
Ok. Looks like a solid base, altho some work needed.... Some comments (in no particular order); 1. global protocol_tcp is referenced in dissect_openvpn() before being set in dissect_openvpn_msg(0. It would seem to me that dissect_openvpn() needs to use the same test as in dissect_openvpn_msg(). Also, if so, then protocol_tcp need not be a global. 2. __attribute__ is for gcc. For portability (e.g., to compile on Windows) use _U_ instead. _U_ is defined appropriately for different platforms. 3. ssl_handle = find_dissector("ssl"); should be done only once with ssl_handle being a static global. 4. It would be appreciated if you would strip trailing whitespace. 5. Please provide a reference to the protocol specification (in a comment in the source). 6. Copyright: - You should add a date (year). - I'm guessing that the copyright is by the 5 individuals named and does not include the University. Is this correct ? If any case, the " * Semester Project ... " text should probably be more clearly separated from the (c) paragraph. 7. issues detected by fix-encoding-args: proto_tree_add_item(data_tree, hf_openvpn_data, next_tvb, offset, -1, \ [[ENC_BIG_ENDIAN]-->[ENC_NA]]); proto_tree_add_item(openvpn_tree, hf_openvpn_hmac, tvb, offset, \ tls_auth_hmac_size, [[ENC_BIG_ENDIAN]-->[ENC_NA]]); tvb_get_bits32(tvb, offset*8+32, 32, [[FALSE]-->[ENC_BIG_ENDIAN]]); tvb_get_bits32(tvb, offset*8, 32, [[FALSE]-->[ENC_BIG_ENDIAN]]); 8. @ ~ line 305 tvb_length_remaining() is called 3x. It would be a bit nicer to call it once to call it just once). 9. The following statement bothered me a bit: msg_lastframe = (tvb_length_remaining(tvb, offset) == 100 ? FALSE : TRUE); I believe tt works because the tvb (either UDP or TCP) will have exactly one openvpn PDU; (UDP: by definition; TCP: because of the use of tcp_dissect_pdus()). I suggest adding a comment so that a casual reader of the code will understand why the test works. 10. Only prefs vars should be under the /* Preferences */ comment. The other stuff, ett vars, etc should be moved separately as appropiate. 11. proto_tree_add_item(data_tree, hf_openvpn_data, next_tvb, offset, \ tvb_length_remaining(next_tvb, offset), ENC_BIG_ENDIAN); -1 can be used instead of tvb_length_remaining() 12. fragment_msgid use looks problematical: - never initialized to zero (except after a PDU is re-assembled and for the initial use of the dissector). (This presumably might be handled by initializing the variable to 0 in the init routine) . - *However*: storing fragment_msgid as a global would seem to me to be a non-starter. Reason: I presume multiple UDP (?sessions) each with a different msg_sessionid value can occur simultaneously. If so, you'll need to keep the fragment_msgid separately for each sessionid (maybe per sessionid using a hash table or maybe per UDP "conversation" if the UDP src/dest addr/port quadruple will always be unique for a session). 14. tvb_new_subset(tvb, offset, -1, -1) --> tvb_new_subset_remaining(...) 15. Relevant comments in Bug %8239 (wiki update, modelines, AUTHORS...) also apply to this dissector. That's it for now. If you have any questions please let us now.
You are receiving this mail because:
- You are watching all bug changes.
- References:
- [Wireshark-bugs] [Bug 8240] New: Dissector for the OpenVPN Protocol
- From: bugzilla-daemon
- [Wireshark-bugs] [Bug 8240] New: Dissector for the OpenVPN Protocol
- Prev by Date: [Wireshark-bugs] [Bug 8243] Update the FeliCa dissector to identify FeliCa Standard commands
- Next by Date: [Wireshark-bugs] [Bug 8240] Dissector for the OpenVPN Protocol
- Previous by thread: [Wireshark-bugs] [Bug 8240] Dissector for the OpenVPN Protocol
- Next by thread: [Wireshark-bugs] [Bug 8240] Dissector for the OpenVPN Protocol
- Index(es):