aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors/packet-atalk.c
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2014-04-06 12:12:59 -0700
committerGuy Harris <guy@alum.mit.edu>2014-04-06 19:13:48 +0000
commit70ad7d8fd3a40bd9a5e30860c6bbbd0ab801ebe2 (patch)
tree3b26e116058d52777baf812490065f52df5b93bf /epan/dissectors/packet-atalk.c
parent5a67479bff973df068301e5d07ec8918a58f3ce8 (diff)
Move the status dissecting code to the AFP dissector.
The ASP and DSI dissectors had almost-identical dissection of the ASP and DSI "status" responses. What's being dissected is defined by the AFP specification (and might be different for protocols *other* than AFP running atop AFP or DSI), so move that dissection to the AFP dissector. Note that, at least for AFP-over-DSI, the spec isn't being followed in at least one capture. Change-Id: Idb1013483f3a3bdf2b7eb0618e48fc178a338642 Reviewed-on: https://code.wireshark.org/review/987 Reviewed-by: Guy Harris <guy@alum.mit.edu>
Diffstat (limited to 'epan/dissectors/packet-atalk.c')
-rw-r--r--epan/dissectors/packet-atalk.c403
1 files changed, 10 insertions, 393 deletions
diff --git a/epan/dissectors/packet-atalk.c b/epan/dissectors/packet-atalk.c
index a9acf9a089..d3ff449d5a 100644
--- a/epan/dissectors/packet-atalk.c
+++ b/epan/dissectors/packet-atalk.c
@@ -35,7 +35,6 @@
#include <epan/arcnet_pids.h>
#include <epan/atalk-utils.h>
#include <epan/conversation.h>
-#include <epan/to_str.h>
#include <wiretap/wtap.h>
#include <epan/prefs.h>
@@ -55,6 +54,7 @@ static reassembly_table atp_reassembly_table;
static gboolean atp_defragment = TRUE;
static dissector_handle_t afp_handle;
+static dissector_handle_t afp_server_status_handle;
static int proto_llap = -1;
static int hf_llap_dst = -1;
@@ -225,43 +225,6 @@ static int hf_asp_attn_code = -1;
static int hf_asp_seq = -1;
static int hf_asp_size = -1;
-/* status stuff same for asp and afp */
-static int hf_asp_server_name = -1;
-static int hf_asp_server_type = -1;
-static int hf_asp_server_vers = -1;
-static int hf_asp_server_uams = -1;
-static int hf_asp_server_icon = -1;
-static int hf_asp_server_directory = -1;
-
-static int hf_asp_server_flag = -1;
-static int hf_asp_server_flag_copyfile = -1;
-static int hf_asp_server_flag_passwd = -1;
-static int hf_asp_server_flag_no_save_passwd = -1;
-static int hf_asp_server_flag_srv_msg = -1;
-static int hf_asp_server_flag_srv_sig = -1;
-static int hf_asp_server_flag_tcpip = -1;
-static int hf_asp_server_flag_notify = -1;
-static int hf_asp_server_flag_reconnect = -1;
-static int hf_asp_server_flag_directory = -1;
-static int hf_asp_server_flag_utf8_name = -1;
-static int hf_asp_server_flag_fast_copy = -1;
-static int hf_asp_server_signature = -1;
-static int hf_asp_server_utf8_name_len = -1;
-static int hf_asp_server_utf8_name = -1;
-
-static int hf_asp_server_addr_len = -1;
-static int hf_asp_server_addr_type = -1;
-static int hf_asp_server_addr_value = -1;
-
-static gint ett_asp_status = -1;
-static gint ett_asp_uams = -1;
-static gint ett_asp_vers = -1;
-static gint ett_asp_addr = -1;
-static gint ett_asp_addr_line = -1;
-static gint ett_asp_directory = -1;
-static gint ett_asp_utf8_name = -1;
-static gint ett_asp_status_server_flag = -1;
-
typedef struct {
guint32 conversation;
guint8 src[4];
@@ -951,228 +914,6 @@ dissect_atp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree) {
return;
}
-/*
- copy and paste from dsi
- XXX - is the format of this reply dependent on the type of server,
- with this format being the format for AFP servers?
-*/
-static gint
-dissect_asp_reply_get_status(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree, gint offset)
-{
- proto_tree *sub_tree;
- proto_item *ti;
-
- guint16 ofs;
- guint16 flag;
- guint16 machine_ofs;
- guint16 sign_ofs = 0;
- guint16 adr_ofs = 0;
- guint16 dir_ofs = 0;
- guint16 utf_ofs = 0;
- guint8 nbe;
- guint len;
- guint i;
-
- proto_tree *adr_tree;
- char *tmp;
- guint16 net;
- guint8 node;
- guint16 port;
-
- guint16 ulen;
-
- if (!tree)
- return offset;
-
- ti = proto_tree_add_text(tree, tvb, offset, -1, "Get Status");
- tree = proto_item_add_subtree(ti, ett_asp_status);
-
- machine_ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_MACHOFF);
- proto_tree_add_text(tree, tvb, offset +AFPSTATUS_MACHOFF, 2, "Machine offset: %u", machine_ofs);
- if (machine_ofs)
- machine_ofs += offset;
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
- proto_tree_add_text(tree, tvb, offset +AFPSTATUS_VERSOFF, 2, "Version offset: %u", ofs);
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
- proto_tree_add_text(tree, tvb, offset +AFPSTATUS_UAMSOFF, 2, "UAMS offset: %u", ofs);
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
- proto_tree_add_text(tree, tvb, offset +AFPSTATUS_ICONOFF, 2, "Icon offset: %u", ofs);
-
- ofs = offset +AFPSTATUS_FLAGOFF;
- ti = proto_tree_add_item(tree, hf_asp_server_flag, tvb, ofs, 2, ENC_BIG_ENDIAN);
- sub_tree = proto_item_add_subtree(ti, ett_asp_status_server_flag);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_copyfile , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_passwd , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_no_save_passwd, tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_srv_msg , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_srv_sig , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_tcpip , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_notify , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_reconnect , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_directory , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_utf8_name , tvb, ofs, 2, ENC_BIG_ENDIAN);
- proto_tree_add_item(sub_tree, hf_asp_server_flag_fast_copy , tvb, ofs, 2, ENC_BIG_ENDIAN);
-
- proto_tree_add_item(tree, hf_asp_server_name, tvb, offset +AFPSTATUS_PRELEN, 1, ENC_ASCII|ENC_NA);
-
- flag = tvb_get_ntohs(tvb, ofs);
- if ((flag & AFPSRVRINFO_SRVSIGNATURE)) {
- ofs = offset +AFPSTATUS_PRELEN +tvb_get_guint8(tvb, offset +AFPSTATUS_PRELEN) +1;
- if ((ofs & 1))
- ofs++;
-
- sign_ofs = tvb_get_ntohs(tvb, ofs);
- proto_tree_add_text(tree, tvb, ofs, 2, "Signature offset: %u", sign_ofs);
- sign_ofs += offset;
- ofs += 2;
-
- if ((flag & AFPSRVRINFO_TCPIP) && ofs < machine_ofs ) {
- adr_ofs = tvb_get_ntohs(tvb, ofs);
- proto_tree_add_text(tree, tvb, ofs, 2, "Network address offset: %u", adr_ofs);
- adr_ofs += offset;
- ofs += 2;
- }
-
- if ((flag & AFPSRVRINFO_SRVDIRECTORY) && ofs < machine_ofs) {
- dir_ofs = tvb_get_ntohs(tvb, ofs);
- proto_tree_add_text(tree, tvb, ofs, 2, "Directory services offset: %u", dir_ofs);
- dir_ofs += offset;
- ofs += 2;
- }
-
- if ((flag & AFPSRVRINFO_SRVUTF8) && ofs < machine_ofs) {
- utf_ofs = tvb_get_ntohs(tvb, ofs);
- proto_tree_add_text(tree, tvb, ofs, 2, "UTF-8 server name offset: %u", utf_ofs);
- utf_ofs += offset;
- }
- }
-
- if (machine_ofs)
- proto_tree_add_item(tree, hf_asp_server_type, tvb, machine_ofs, 1, ENC_ASCII|ENC_NA);
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_VERSOFF);
- if (ofs) {
- ofs += offset;
- nbe = tvb_get_guint8(tvb, ofs);
- ti = proto_tree_add_text(tree, tvb, ofs, 1, "Version list: %u", nbe);
- ofs++;
- sub_tree = proto_item_add_subtree(ti, ett_asp_vers);
- for (i = 0; i < nbe; i++) {
- len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_vers, tvb, ofs, 1, ENC_ASCII|ENC_NA);
- ofs += len + 1;
- }
- }
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_UAMSOFF);
- if (ofs) {
- ofs += offset;
- nbe = tvb_get_guint8(tvb, ofs);
- ti = proto_tree_add_text(tree, tvb, ofs, 1, "UAMS list: %u", nbe);
- ofs++;
- sub_tree = proto_item_add_subtree(ti, ett_asp_uams);
- for (i = 0; i < nbe; i++) {
- len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_uams, tvb, ofs, 1, ENC_ASCII|ENC_NA);
- ofs += len + 1;
- }
- }
-
- ofs = tvb_get_ntohs(tvb, offset +AFPSTATUS_ICONOFF);
- if (ofs) {
- ofs += offset;
- proto_tree_add_item(tree, hf_asp_server_icon, tvb, ofs, 256, ENC_NA);
- }
-
- if (sign_ofs) {
- proto_tree_add_item(tree, hf_asp_server_signature, tvb, sign_ofs, 16, ENC_NA);
- }
-
- if (adr_ofs) {
-
- ofs = adr_ofs;
- nbe = tvb_get_guint8(tvb, ofs);
- ti = proto_tree_add_text(tree, tvb, ofs, 1, "Address list: %u", nbe);
- ofs++;
- adr_tree = proto_item_add_subtree(ti, ett_asp_addr);
- for (i = 0; i < nbe; i++) {
- guint8 type;
-
- len = tvb_get_guint8(tvb, ofs);
- type = tvb_get_guint8(tvb, ofs +1);
- switch (type) {
- case 1: /* IP */
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len, "IP: %s", tvb_ip_to_str(tvb, ofs+2));
- break;
- case 2: /* IP + port */
- port = tvb_get_ntohs(tvb, ofs+6);
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len, "IP: %s:%u",
- tvb_ip_to_str(tvb, ofs+2), port);
- break;
- case 3: /* DDP, atalk_addr_to_str want host order not network */
- net = tvb_get_ntohs(tvb, ofs+2);
- node = tvb_get_guint8(tvb, ofs +4);
- port = tvb_get_guint8(tvb, ofs +5);
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len, "DDP: %u.%u:%u",
- net, node, port);
- break;
- case 5: /* IP + port ssh tunnel */
- port = tvb_get_ntohs(tvb, ofs+6);
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len, "IP (SSH tunnel): %s:%u",
- tvb_ip_to_str(tvb, ofs+2), port);
- break;
- case 4: /* DNS */
- if (len > 2) {
- tmp = (gchar*)tvb_get_string(wmem_packet_scope(), tvb, ofs +2, len -2);
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len, "DNS: %s", tmp);
- break;
- }
- /* else fall to default malformed record */
- default:
- ti = proto_tree_add_text(adr_tree, tvb, ofs, len,"Unknown type : %u", type);
- break;
- }
- len -= 2;
- sub_tree = proto_item_add_subtree(ti,ett_asp_addr_line);
- proto_tree_add_item(sub_tree, hf_asp_server_addr_len, tvb, ofs, 1, ENC_BIG_ENDIAN);
- ofs++;
- proto_tree_add_item(sub_tree, hf_asp_server_addr_type, tvb, ofs, 1, ENC_BIG_ENDIAN);
- ofs++;
- proto_tree_add_item(sub_tree, hf_asp_server_addr_value,tvb, ofs, len, ENC_NA);
- ofs += len;
- }
- }
-
- if (dir_ofs) {
- ofs = dir_ofs;
- nbe = tvb_get_guint8(tvb, ofs);
- ti = proto_tree_add_text(tree, tvb, ofs, 1, "Directory services list: %u", nbe);
- ofs++;
- sub_tree = proto_item_add_subtree(ti, ett_asp_directory);
- for (i = 0; i < nbe; i++) {
- len = tvb_get_guint8(tvb, ofs);
- proto_tree_add_item(sub_tree, hf_asp_server_directory, tvb, ofs, 1, ENC_ASCII|ENC_NA);
- ofs += len + 1;
- }
- }
- if (utf_ofs) {
-
- ofs = utf_ofs;
- ulen = tvb_get_ntohs(tvb, ofs);
- tmp = (gchar*)tvb_get_string(wmem_packet_scope(), tvb, ofs + 2, ulen);
- ti = proto_tree_add_text(tree, tvb, ofs, ulen +2, "UTF-8 server name: %s", tmp);
- sub_tree = proto_item_add_subtree(ti, ett_asp_utf8_name);
- proto_tree_add_uint(sub_tree, hf_asp_server_utf8_name_len, tvb, ofs, 2, ulen);
- ofs += 2;
- proto_tree_add_string(sub_tree, hf_asp_server_utf8_name, tvb, ofs, ulen, tmp);
- ofs += ulen;
- }
- return ofs;
-}
-
/* -----------------------------
PAP protocol cf. inside appletalk chap. 10
*/
@@ -1186,7 +927,6 @@ dissect_pap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
guint8 connID;
proto_tree *pap_tree = NULL;
proto_item *ti;
- int len;
col_set_str(pinfo->cinfo, COL_PROTOCOL, "PAP");
col_clear(pinfo->cinfo, COL_INFO);
@@ -1239,8 +979,7 @@ dissect_pap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data _U_)
offset++;
PAD(1);
/* follow by data */
- len = tvb_reported_length_remaining(tvb,offset);
- call_dissector(data_handle,tvb_new_subset(tvb, offset,-1,len), pinfo, tree);
+ call_dissector(data_handle,tvb_new_subset_remaining(tvb, offset), pinfo, tree);
break;
case PAPTickle:
@@ -1317,7 +1056,6 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
proto_tree *asp_tree = NULL;
proto_item *ti;
guint8 fn;
- int len;
/* Reject the packet if data is NULL */
if (data == NULL)
@@ -1381,8 +1119,7 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
offset++;
proto_tree_add_item(asp_tree, hf_asp_seq, tvb, offset, 2, ENC_BIG_ENDIAN);
offset += 2;
- len = tvb_reported_length_remaining(tvb,offset);
- new_tvb = tvb_new_subset(tvb, offset,-1,len);
+ new_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_with_data(afp_handle, new_tvb, pinfo, tree, aspinfo);
break;
case ASPFUNC_WRTCONT:
@@ -1396,8 +1133,7 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
default:
proto_item_set_len(asp_tree, 4);
offset += 3;
- len = tvb_reported_length_remaining(tvb,offset);
- call_dissector(data_handle,tvb_new_subset(tvb, offset,-1,len), pinfo, tree);
+ call_dissector(data_handle,tvb_new_subset_remaining(tvb, offset), pinfo, tree);
break;
}
}
@@ -1425,7 +1161,9 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
case ASPFUNC_STAT:
proto_tree_add_item(asp_tree, hf_asp_zero_value, tvb, offset, 4, ENC_NA);
offset += 4;
- dissect_asp_reply_get_status(tvb, pinfo, asp_tree, offset);
+ /* XXX - what if something other than AFP is running atop ASP? */
+ new_tvb = tvb_new_subset_remaining(tvb, offset);
+ call_dissector(afp_server_status_handle, new_tvb, pinfo, asp_tree);
break;
case ASPFUNC_CMD:
case ASPFUNC_WRITE:
@@ -1433,8 +1171,7 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
aspinfo->code = tvb_get_ntohl(tvb, offset);
proto_tree_add_item(asp_tree, hf_asp_error, tvb, offset, 4, ENC_BIG_ENDIAN);
offset += 4;
- len = tvb_reported_length_remaining(tvb,offset);
- new_tvb = tvb_new_subset(tvb, offset,-1,len);
+ new_tvb = tvb_new_subset_remaining(tvb, offset);
call_dissector_with_data(afp_handle, new_tvb, pinfo, tree, aspinfo);
break;
case ASPFUNC_TICKLE:
@@ -1445,8 +1182,7 @@ dissect_asp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data)
default:
proto_item_set_len(asp_tree, 4);
offset += 4;
- len = tvb_reported_length_remaining(tvb,offset);
- call_dissector(data_handle,tvb_new_subset(tvb, offset,-1,len), pinfo, tree);
+ call_dissector(data_handle,tvb_new_subset_remaining(tvb, offset), pinfo, tree);
break;
}
}
@@ -2139,116 +1875,6 @@ proto_register_atalk(void)
{ "Pad (0)", "asp.zero_value",
FT_BYTES, BASE_NONE, NULL, 0x0,
"Pad", HFILL }},
-
- /* asp ,dsi, afp */
- { &hf_asp_server_name,
- { "Server name", "asp.server_name",
- FT_UINT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_type,
- { "Server type", "asp.server_type",
- FT_UINT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_vers,
- { "AFP version", "asp.server_vers",
- FT_UINT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_uams,
- { "UAM", "asp.server_uams",
- FT_UINT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_icon,
- { "Icon bitmap", "asp.server_icon",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Server icon bitmap", HFILL }},
-
- { &hf_asp_server_directory,
- { "Directory service", "asp.server_directory",
- FT_UINT_STRING, BASE_NONE, NULL, 0x0,
- "Server directory service", HFILL }},
-
- { &hf_asp_server_signature,
- { "Server signature", "asp.server_signature",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_flag,
- { "Flag", "asp.server_flag",
- FT_UINT16, BASE_HEX, NULL, 0x0,
- "Server capabilities flag", HFILL }},
- { &hf_asp_server_flag_copyfile,
- { "Support copyfile", "asp.server_flag.copyfile",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_COPY,
- "Server supports copyfile", HFILL }},
- { &hf_asp_server_flag_passwd,
- { "Support change password", "asp.server_flag.passwd",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_PASSWD,
- "Server supports change password", HFILL }},
- { &hf_asp_server_flag_no_save_passwd,
- { "Don't allow save password", "asp.server_flag.no_save_passwd",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_NOSAVEPASSWD,
- NULL, HFILL }},
- { &hf_asp_server_flag_srv_msg,
- { "Support server message", "asp.server_flag.srv_msg",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVMSGS,
- NULL, HFILL }},
- { &hf_asp_server_flag_srv_sig,
- { "Support server signature", "asp.server_flag.srv_sig",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVSIGNATURE,
- NULL, HFILL }},
- { &hf_asp_server_flag_tcpip,
- { "Support TCP/IP", "asp.server_flag.tcpip",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_TCPIP,
- "Server supports TCP/IP", HFILL }},
- { &hf_asp_server_flag_notify,
- { "Support server notifications", "asp.server_flag.notify",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVNOTIFY,
- "Server supports notifications", HFILL }},
- { &hf_asp_server_flag_reconnect,
- { "Support server reconnect", "asp.server_flag.reconnect",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVRECONNECT,
- "Server supports reconnect", HFILL }},
- { &hf_asp_server_flag_directory,
- { "Support directory services", "asp.server_flag.directory",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVDIRECTORY,
- "Server supports directory services", HFILL }},
- { &hf_asp_server_flag_utf8_name,
- { "Support UTF-8 server name", "asp.server_flag.utf8_name",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_SRVUTF8,
- "Server supports UTF-8 server name", HFILL }},
- { &hf_asp_server_flag_fast_copy,
- { "Support fast copy", "asp.server_flag.fast_copy",
- FT_BOOLEAN, 16, NULL, AFPSRVRINFO_FASTBOZO,
- "Server supports fast copy", HFILL }},
-
- { &hf_asp_server_addr_len,
- { "Length", "asp.server_addr.len",
- FT_UINT8, BASE_DEC, NULL, 0x0,
- "Address length.", HFILL }},
-
- { &hf_asp_server_addr_type,
- { "Type", "asp.server_addr.type",
- FT_UINT8, BASE_DEC|BASE_EXT_STRING, &afp_server_addr_type_vals_ext, 0x0,
- "Address type.", HFILL }},
-
- { &hf_asp_server_addr_value,
- { "Value", "asp.server_addr.value",
- FT_BYTES, BASE_NONE, NULL, 0x0,
- "Address value", HFILL }},
-
- { &hf_asp_server_utf8_name_len,
- { "UTF-8 server name length", "asp.server_utf8_name_len",
- FT_UINT16, BASE_DEC, NULL, 0x0,
- NULL, HFILL }},
-
- { &hf_asp_server_utf8_name,
- { "UTF-8 server name", "asp.server_utf8_name",
- FT_STRING, BASE_NONE, NULL, 0x0,
- NULL, HFILL }},
};
static hf_register_info hf_zip[] = {
@@ -2378,16 +2004,6 @@ proto_register_atalk(void)
&ett_asp,
&ett_pap,
- /* asp dsi afp */
- &ett_asp_status,
- &ett_asp_status_server_flag,
- &ett_asp_vers,
- &ett_asp_uams,
- &ett_asp_addr,
- &ett_asp_addr_line,
- &ett_asp_directory,
- &ett_asp_utf8_name,
-
&ett_nbp,
&ett_nbp_info,
&ett_nbp_node,
@@ -2481,6 +2097,7 @@ proto_reg_handoff_atalk(void)
register_init_routine( &asp_reinit);
afp_handle = find_dissector("afp");
+ afp_server_status_handle = find_dissector("afp_server_status");
data_handle = find_dissector("data");
}