Add in names for NDS verbs, from a list found by a Web search that found

the source to an "ipxdump" utility from the Linux ncpfs package.

The NetworkAddress field in a 23/26 GetInternetAddress reply appears
to be big-endian; we assume it's big-endian in all messages.

The NetworkSocket field in that reply also appears to be big-endian;
it was already set up to be big-endian in other messages.

Put in comments noting other things seen in captures.

svn path=/trunk/; revision=5658
This commit is contained in:
Guy Harris 2002-06-09 01:36:43 +00:00
parent c5f400ed77
commit b406d462b7
1 changed files with 103 additions and 5 deletions

View File

@ -24,7 +24,7 @@ http://developer.novell.com/ndk/doc/docui/index.htm#../ncp/ncp__enu/data/
for a badly-formatted HTML version of the same PDF.
$Id: ncp2222.py,v 1.27 2002/06/07 15:33:37 gram Exp $
$Id: ncp2222.py,v 1.28 2002/06/09 01:36:43 guy Exp $
Copyright (c) 2000-2002 by Gilbert Ramirez <gram@alumni.rice.edu>
@ -2780,6 +2780,81 @@ NDSRequestFlags = bitfield16("nds_request_flags", "NDS Request Flags", [
bf_boolean16(0x0800, "nds_request_flags_dn_ref", "Down Referral"),
])
NDSVerb = val_string16("nds_verb", "NDS Verb", [
[ 1, "Resolve Name" ],
[ 2, "Read Entry Information" ],
[ 3, "Read" ],
[ 4, "Compare" ],
[ 5, "List" ],
[ 6, "Search Entries" ],
[ 7, "Add Entry" ],
[ 8, "Remove Entry" ],
[ 9, "Modify Entry" ],
[ 10, "Modify RDN" ],
[ 11, "Create Attribute" ],
[ 12, "Read Attribute Definition" ],
[ 13, "Remove Attribute Definition" ],
[ 14, "Define Class" ],
[ 15, "Read Class Definition" ],
[ 16, "Modify Class Definition" ],
[ 17, "Remove Class Definition" ],
[ 18, "List Containable Classes" ],
[ 19, "Get Effective Rights" ],
[ 20, "Add Partition" ],
[ 21, "Remove Partition" ],
[ 22, "List Partitions" ],
[ 23, "Split Partition" ],
[ 24, "Join Partitions" ],
[ 25, "Add Replica" ],
[ 26, "Remove Replica" ],
[ 27, "Open Stream" ],
[ 28, "Search Filter" ],
[ 29, "Create Subordinate Reference" ],
[ 30, "Link Replica" ],
[ 31, "Change Replica Type" ],
[ 32, "Start Update Schema" ],
[ 33, "End Update Schema" ],
[ 34, "Update Schema" ],
[ 35, "Start Update Replica" ],
[ 36, "End Update Replica" ],
[ 37, "Update Replica" ],
[ 38, "Synchronize Partition" ],
[ 39, "Synchronize Schema" ],
[ 40, "Read Syntaxes" ],
[ 41, "Get Replica Root ID" ],
[ 42, "Begin Move Entry" ],
[ 43, "Finish Move Entry" ],
[ 44, "Release Moved Entry" ],
[ 45, "Backup Entry" ],
[ 46, "Restore Entry" ],
[ 47, "Save DIB" ],
[ 50, "Close Iteration" ],
[ 51, "Unused" ],
[ 52, "Audit Skulking" ],
[ 53, "Get Server Address" ],
[ 54, "Set Keys" ],
[ 55, "Change Password" ],
[ 56, "Verify Password" ],
[ 57, "Begin Login" ],
[ 58, "Finish Login" ],
[ 59, "Begin Authentication" ],
[ 60, "Finish Authentication" ],
[ 61, "Logout" ],
[ 62, "Repair Ring" ],
[ 63, "Repair Timestamps" ],
[ 64, "Create Back Link" ],
[ 65, "Delete External Reference" ],
[ 66, "Rename External Reference" ],
[ 67, "Create Directory Entry" ],
[ 68, "Remove Directory Entry" ],
[ 69, "Designate New Master" ],
[ 70, "Change Tree Name" ],
[ 71, "Partition Entry Count" ],
[ 72, "Check Login Restrictions" ],
[ 73, "Start Join" ],
[ 74, "Low Level Split" ],
[ 75, "Low Level Join" ],
[ 76, "Abort Low Level Join" ],
[ 77, "Get All Servers" ],
])
NDSNewVerb = val_string16("nds_new_verb", "NDS Verb", [
])
@ -2799,6 +2874,10 @@ NetworkAddress.Display("BASE_HEX")
NetworkNodeAddress = bytes("network_node_address", "Network Node Address", 6)
NetworkNumber = uint32("network_number", "Network Number")
NetworkNumber.Display("BASE_HEX")
#
# XXX - this should have the "ipx_socket_vals" value_string table
# from "packet-ipx.c".
#
NetworkSocket = uint16("network_socket", "Network Socket")
NetworkSocket.Display("BASE_HEX")
NewAccessRights = bitfield16("new_access_rights_mask", "New Access Rights", [
@ -7150,7 +7229,7 @@ def define_ncp2222():
rec( 10, 1, TargetConnectionNumber ),
])
pkt.Reply(20, [
rec( 8, 4, NetworkAddress ),
rec( 8, 4, NetworkAddress, BE ),
rec( 12, 6, NetworkNodeAddress ),
rec( 18, 2, NetworkSocket, BE ),
])
@ -7206,14 +7285,23 @@ def define_ncp2222():
pkt.CompletionCodes([0x0000, 0x9602, 0xc101, 0xc200, 0xc500, 0xd900, 0xda00,
0xdb00, 0xdc00, 0xde00])
# 2222/171A, 23/26
#
# XXX - for NCP-over-IP, the NetworkAddress field appears to be
# an IP address, rather than an IPX network address, and should
# be dissected as an FT_IPv4 value; the NetworkNodeAddress and
# NetworkSocket are 0.
#
# For NCP-over-IPX, it should probably be dissected as an
# FT_IPXNET value.
#
pkt = NCP(0x171A, "Get Internet Address", 'fileserver')
pkt.Request(11, [
rec( 10, 1, TargetConnectionNumber ),
])
pkt.Reply(21, [
rec( 8, 4, NetworkAddress ),
rec( 8, 4, NetworkAddress, BE ),
rec( 12, 6, NetworkNodeAddress ),
rec( 18, 2, NetworkSocket ),
rec( 18, 2, NetworkSocket, BE ),
rec( 20, 1, ConnectionType ),
])
pkt.CompletionCodes([0x0000])
@ -8490,7 +8578,7 @@ def define_ncp2222():
rec( 10, 1, LANDriverNumber ),
])
pkt.Reply(180, [
rec( 8, 4, NetworkAddress ),
rec( 8, 4, NetworkAddress, BE ),
rec( 12, 6, HostAddress ),
rec( 18, 1, BoardInstalled ),
rec( 19, 1, OptionNumber ),
@ -11396,6 +11484,16 @@ def define_ncp2222():
])
pkt.CompletionCodes([0x0000, 0x8100, 0xfb04, 0xfe0c])
# 2222/6802, 104/02
#
# XXX - if FraggerHandle is not 0xffffffff, this is not the
# first fragment, so we can only dissect this by reassembling;
# the fields after "Fragment Handle" are bogus for non-0xffffffff
# fragments, so we shouldn't dissect them.
#
# XXX - are there TotalRequest requests in the packet, and
# does each of them have NDSFlags and NDSVerb fields, or
# does only the first one have it?
#
pkt = NCP(0x6802, "Send NDS Fragmented Request/Reply", "nds", has_length=0)
pkt.Request(26, [
rec( 8, 4, FraggerHandle ),