dissect-wireshark: recognize CanBePrefix, HopLimit, Parameters

refs #4517

Change-Id: I9ea61a070286bbc460ff7f64fb66092a891dcadb
This commit is contained in:
Junxiao Shi committed 2018-04-17 02:26:17 +00:00
1 parent b54aabdb89
commit ac4b546be8
4 files changed
+94 -33

No files matched your search

+13
View File
@@ -140,3 +140,16 @@ Expected results of the dissection:
- the dissection results include Fragment (Interest/Data), Sequence (number), FragIndex (number),
FragCount (number), Nack (various reasons), NextHopFaceId, IncomingFaceId, CachingPolicy, and
unknown fields
### 11. NDN Packet Format v0.3
Trace file: `packet03.pcap`
Trace summary: Hand-crafted packets in NDN Packet Format v0.3
(`xxd -p -r < packet03.hex > packet03.pcap`).
All packets are valid and do not contain unrecognized TLV elements.
Expected results of the dissection:
- Packet 1 is recognized as "Interest" type, and has "CanBePrefix: Yes", "MustBeFresh: Yes",
"HopLimit: 214", and "Parameters" field.
- Packet 3 is recognized as "Data" type.
+52
View File
@@ -0,0 +1,52 @@
A1B2C3D4
00020004
00000000
00000000
00010000
00000001
00000000
00000000
00000039
00000039
01005E0017AA
000000000000
8624
0529
0703080149
2100
1200
1E0B 1F09 1E023E15 0703080148
0A044ACB1E4C
0C0276A1
2201D6
2304C0C1C2C3
00000000
00000000
00000050
00000050
01005E0017AA
000000000000
8624
0540
0738 020141 070142 080143 FC0144 FD01000145 FDFFFF0145 0120EE357C5791DCAA4494D9B301047B875D8833CAA76DADA3E95837BBC3EAF7B300
0A044ACB1E4C
00000000
00000000
00000039
00000039
01005E0017AA
000000000000
8624
0629
0700
16031B0100
1720612A79399E60304A9F701C1ECAC7956BF2F1B046E6C6F0D6C29B3FE3A29BAD76
Binary file not shown.
+29 -33
View File
@@ -159,51 +159,38 @@ end
-----------------------------------------------------
local NDN_DICT = {
-- Interest or Data packets
[5] = {name = "Interest" , summary = true},
[6] = {name = "Data" , summary = true},
-- Name field
-- Name and NameComponent
[7] = {name = "Name" , field = ProtoField.string("ndn.name", "Name") , value = getUriFromName},
[1] = {name = "ImplicitSha256DigestComponent", field = ProtoField.string("ndn.implicitsha256", "ImplicitSha256DigestComponent"), value = getUriFromNameComponent},
[8] = {name = "NameComponent" , field = ProtoField.string("ndn.namecomponent", "NameComponent") , value = getUriFromNameComponent},
[8] = {name = "GenericNameComponent" , field = ProtoField.string("ndn.namecomponent", "NameComponent") , value = getUriFromNameComponent},
-- Sub-fields of Interest packet
[9] = {name = "Selectors" , summary = true},
-- Interest and its sub-elements in Packet Format v0.3
[5] = {name = "Interest" , summary = true},
[33] = {name = "CanBePrefix" , field = ProtoField.string("ndn.canbeprefix", "CanBePrefix") , value = getTrue},
[18] = {name = "MustBeFresh" , field = ProtoField.string("ndn.mustbefresh", "MustBeFresh") , value = getTrue},
-- [30] = {name = "ForwardingHint" , summary = true},
-- ForwardingHint and LinkPreference have the same TLV-TYPE number, so we can't recognize both for now (see #4185).
[31] = {name = "LinkDelegation" , summary = true},
[30] = {name = "LinkPreference" , field = ProtoField.uint32("ndn.link_preference", "LinkPreference", base.DEC) , value = getNonNegativeInteger},
[10] = {name = "Nonce" , field = ProtoField.uint32("ndn.nonce", "Nonce", base.HEX) , value = getNonce},
[12] = {name = "InterestLifetime" , field = ProtoField.uint32("ndn.interestlifetime", "InterestLifetime", base.DEC) , value = getNonNegativeInteger},
[34] = {name = "HopLimit" , field = ProtoField.uint32("ndn.hoplimit", "HopLimit", base.DEC) , value = getNonNegativeInteger},
[35] = {name = "Parameters" , field = ProtoField.string("ndn.parameters", "Parameters")},
-- Sub-fields of Interest/Selector field
[13] = {name = "MinSuffixComponents" , field = ProtoField.uint32("ndn.minsuffix", "MinSuffixComponents") , value = getNonNegativeInteger},
[14] = {name = "MaxSuffixComponents" , field = ProtoField.uint32("ndn.maxsuffix", "MaxSuffixComponents") , value = getNonNegativeInteger},
[15] = {name = "PublisherPublicKeyLocator" , summary = true},
[16] = {name = "Exclude" , field = ProtoField.string("ndn.exclude", "Exclude") , value = getUriFromExclude},
[17] = {name = "ChildSelector" , field = ProtoField.uint32("ndn.childselector", "ChildSelector", base.DEC) , value = getNonNegativeInteger},
[18] = {name = "MustBeFresh" , field = ProtoField.string("ndn.mustbefresh", "MustBeFresh") , value = getTrue},
[19] = {name = "Any" , field = ProtoField.string("ndn.any", "Any") , value = getTrue},
-- Sub-fields of Data packet
-- Data and its sub-elements in Packet Format v0.3
[6] = {name = "Data" , summary = true},
[20] = {name = "MetaInfo" , summary = true},
[21] = {name = "Content" , field = ProtoField.string("ndn.content", "Content")},
[22] = {name = "SignatureInfo" , summary = true},
[23] = {name = "SignatureValue" , field = ProtoField.bytes("ndn.signaturevalue", "SignatureValue")},
-- Sub-fields of Data/MetaInfo field
[24] = {name = "ContentType" , field = ProtoField.uint32("ndn.contenttype", "Content Type", base.DEC) , value = getNonNegativeInteger},
[25] = {name = "FreshnessPeriod" , field = ProtoField.uint32("ndn.freshnessperiod", "FreshnessPeriod", base.DEC) , value = getNonNegativeInteger},
[26] = {name = "FinalBlockId" , field = ProtoField.string("ndn.finalblockid", "FinalBlockId") , value = getUriFromNameComponent},
-- Sub-fields of Data/Signature field
[21] = {name = "Content" , field = ProtoField.string("ndn.content", "Content")},
[22] = {name = "SignatureInfo" , summary = true},
[27] = {name = "SignatureType" , field = ProtoField.uint32("ndn.signaturetype", "SignatureType", base.DEC) , value = getNonNegativeInteger},
[28] = {name = "KeyLocator" , summary = true},
[29] = {name = "KeyDigest" , field = ProtoField.bytes("ndn.keydigest", "KeyDigest")},
[23] = {name = "SignatureValue" , field = ProtoField.bytes("ndn.signaturevalue", "SignatureValue")},
-- Other fields
[30] = {name = "LinkPreference" , field = ProtoField.uint32("ndn.link_preference", "LinkPreference", base.DEC) , value = getNonNegativeInteger},
[31] = {name = "LinkDelegation" , summary = true},
[32] = {name = "SelectedDelegation" , field = ProtoField.uint32("ndn.selected_delegation", "SelectedDelegation", base.DEC), value = getNonNegativeInteger},
-- NDNLPv2 Packet field
-- NDNLPv2 headers
[80] = {name = "Fragment" },
[81] = {name = "Sequence" , field = ProtoField.uint32("ndn.sequence", "Sequence", base.DEC), value = getNonNegativeInteger},
[82] = {name = "FragIndex" , field = ProtoField.uint32("ndn.fragindex", "FragIndex", base.DEC), value = getNonNegativeInteger},
@@ -215,6 +202,16 @@ local NDN_DICT = {
[817] = {name = "IncomingFaceId" , field = ProtoField.uint32("ndn.incoming_faceid", "IncomingFaceId", base.DEC), value = getNonNegativeInteger},
[820] = {name = "CachePolicy" , summary = true},
[821] = {name = "CachePolicyType" , field = ProtoField.string("ndn.cachepolicy_type", "CachePolicyType"), value = getCachePolicyDetail},
-- Deprecated elements
[9] = {name = "Selectors" , summary = true},
[13] = {name = "MinSuffixComponents" , field = ProtoField.uint32("ndn.minsuffix", "MinSuffixComponents") , value = getNonNegativeInteger},
[14] = {name = "MaxSuffixComponents" , field = ProtoField.uint32("ndn.maxsuffix", "MaxSuffixComponents") , value = getNonNegativeInteger},
[15] = {name = "PublisherPublicKeyLocator" , summary = true},
[16] = {name = "Exclude" , field = ProtoField.string("ndn.exclude", "Exclude") , value = getUriFromExclude},
[17] = {name = "ChildSelector" , field = ProtoField.uint32("ndn.childselector", "ChildSelector", base.DEC) , value = getNonNegativeInteger},
[19] = {name = "Any" , field = ProtoField.string("ndn.any", "Any") , value = getTrue},
[32] = {name = "SelectedDelegation" , field = ProtoField.uint32("ndn.selected_delegation", "SelectedDelegation", base.DEC), value = getNonNegativeInteger},
}
-- -- Add protofields in NDN protocol
@@ -508,5 +505,4 @@ websocketDissectorTable:add("1-65535", ndn)
local ethernetDissectorTable = DissectorTable.get("ethertype")
ethernetDissectorTable:add(0x8624, ndn)
io.stderr:write("ndn.lua is successfully loaded\n")
io.stderr:write("NDN dissector successfully loaded\n")