Wireshark-dev: Re: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support
From: "Maynard, Chris" <Christopher.Maynard@xxxxxxxxx>
Date: Sun, 25 Apr 2010 14:47:22 -0400
You might want to open an enhancement bug request in bugzilla for this. - Chris ________________________________ From: wireshark-dev-bounces@xxxxxxxxxxxxx [wireshark-dev-bounces@xxxxxxxxxxxxx] On Behalf Of Jesse Lala [jessel@xxxxxxxxxxx] Sent: Friday, April 23, 2010 1:58 PM To: wireshark-dev@xxxxxxxxxxxxx Subject: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support Hello, Looking to see if we could add the NDMP headers for the NDMP v4 Snapshot manager extension. NDMP V4 SnapShot Management Extensions Appendix A: XDR Definitions Although there are certainly many very different XDR files that could define an NDMP specification, one is included below for purposes of reference. struct ndmp_u_quad { u_long high; u_long low; }; struct ndmp_pval { string name<>; string value<>; }; enum ndmp_snap_message { NDMP_SNAP_CREATE = 0x20500100, NDMP_SNAP_DELETE = 0x20500101, NDMP_SNAP_RECOVER = 0x20500102, NDMP_SNAP_RENAME = 0x20500103, NDMP_SNAP_GET_SERVER_INFO = 0x20500104, NDMP_SNAP_GET_SNAPSHOT_NAMES = 0x20500105, NDMP_SNAP_GET_SNAPSHOT_STATE = 0x20500106, NDMP_SNAP_GET_CDR_OP_STATE = 0x20500107, NDMP_SNAP_GET_SNAPSHOT_PATH = 0x20500108, NDMP_SNAP_SET_RESERVE = 0x20500109, NDMP_SNAP_GET_RESERVE_INFO = 0x2050010a, NDMP_SNAP_SET_SCHEDULE = 0x2050010b, NDMP_SNAP_GET_SCHEDULE_INFO = 0x2050010c, NDMP_SNAP_DIR_LIST = 0x2050010d, NDMP_SNAP_NOTIFY_CREATE_END = 0x20500180, NDMP_SNAP_NOTIFY_DELETE_END = 0x20500181, NDMP_SNAP_NOTIFY_RECOVER_END = 0x20500182 }; enum ndmp_snap_error { NDMP_NO_ERR = 0, NDMP_PERMISSION_ERR = 5, NDMP_IO_ERR = 7, NDMP_ILLEGAL_ARGS_ERR = 9, NDMP_ILLEGAL_STATE_ERR = 19, NDMP_NO_MEM_ERR = 22, NDMP_SNAP_EXISTS_ERR = 0x20500100, NDMP_SNAP_NOT_FOUND_ERR = 0x20500101, NDMP_SNAP_READ_ONLY_FS_ERR = 0x20500102, NDMP_SNAP_INVALID_PATH_ERR = 0x20500103, NDMP_SNAP_NO_SPACE_ERR = 0x20500104, NDMP_SNAP_BUSY_ERR = 0x20500105, NDMP_SNAP_INTERNAL_ERR = 0x20500106, NDMP_SNAP_NO_DISK_SPACE = 0x20500107 }; /* NDMP_SNAP_CREATE */ struct ndmp_snap_create_request { string pathname<>; string snapname<>; }; struct ndmp_snap_create_reply { ndmp_snap_error error; }; /* NDMP_SNAP_DELETE */ struct ndmp_snap_delete_request { string snapname<>; }; struct ndmp_snap_delete_reply { ndmp_snap_error error; }; /* NDMP SNAP RECOVER FLAGS BITMASK BITS */ const NDMP_SNAP_RECOVER_DIR_ONLY_FLAG = 0x00000001; const NDMP_SNAP_RECOVER_DIR_DATA_FLAG = 0x00000002; const NDMP_SNAP_RECOVER_EXCEPTION_LOGGING_FLAG = 0x00000004; /* NDMP_SNAP_RECOVER */ struct ndmp_name { string original_path<>; string destination_dir<>; string name<>; string other_name<>; ndmp_u_quad node; ndmp_u_quad fh_info; }; struct ndmp_snap_recover_request { string snapname<>; ndmp_name nlist<>; u_long flags; }; struct ndmp_snap_recover_reply { ndmp_snap_error error; }; /* NDMP_SNAP_RENAME */ struct ndmp_snap_rename_request { string snapname<>; string new_snapname<>; }; struct ndmp_snap_rename_reply { ndmp_snap_error error; }; /* NDMP_SNAP_GET_SERVER_INFO */ /* snap_get_server_info_reply create, recover, reserve support */ const NDMP_SNAP_VOLUME_ALLOWED = 0x00000001; const NDMP_SNAP_SUBVOLUME_ALLOWED = 0x00000002; const NDMP_SNAP_DRIVE_ALLOWED = 0x00000004; const NDMP_SNAP_DIRECTORY_ALLOWED = 0x00000008; const NDMP_SNAP_FILE_ALLOWED = 0x00000010; const NDMP_SNAP_OTHER_ALLOWED = 0x00000020; /* snap_get_server_info_reply scheduled snapshot support */ const NDMP_SNAP_SCHED_WEEKLY_ALLOWED = 0x00000001; const NDMP_SNAP_SCHED_DAILY_ALLOWED = 0x00000002; const NDMP_SNAP_SCHED_HOURLY_ALLOWED = 0x00000004; const NDMP_SNAP_SCHED_SET_TOD_ALLOWED = 0x00000008; const NDMP_SNAP_SCHED_SET_DOW_ALLOWED = 0x00000010; const NDMP_SNAP_SCHED_SET_HL_ALLOWED = 0x00000020; const NDMP_SNAP_SCHED_SET_PATH_ALLOWED = 0x00000040; /* snap_get_server_info_reply recover relocation support */ const NDMP_SNAP_RELOC_VOLUME_ALLOWED = 0x00000001; const NDMP_SNAP_RELOC_SUBVOLUME_ALLOWED = 0x00000002; const NDMP_SNAP_RELOC_DRIVE_ALLOWED = 0x00000004; const NDMP_SNAP_RELOC_DIRECTORY_ALLOWED = 0x00000008; const NDMP_SNAP_RELOC_FILE_ALLOWED = 0x00000010; struct ndmp_snap_get_server_info_reply { ndmp_snap_error error; u_long create_support; u_long recover_support; u_long reserve_support; u_long schedule_support; u_long relocation_support; }; /* NDMP_SNAP_GET_SNAPSHOT_NAMES */ struct ndmp_snap_get_snapshot_names_request { string pathname<>; }; struct sname { string name<>; }; struct ndmp_snap_get_snapshot_names_reply { ndmp_snap_error error; sname snapnames<>; }; /* NDMP_SNAP_GET_SNAPSHOT_STATE */ struct ndmp_snap_get_snapshot_state_request { string snapname<>; }; /* snap_get_snapshot_state_reply unsupported bits */ const NDMP_SNAP_SNAPSHOT_STATE_PATHNAME_UNS = 0x00000001; const NDMP_SNAP_SNAPSHOT_STATE_USED_UNS = 0x00000002; const NDMP_SNAP_SNAPSHOT_STATE_TOTAL_UNS = 0x00000004; const NDMP_SNAP_SNAPSHOT_STATE_DATE_UNS = 0x00000008; const NDMP_SNAP_SNAPSHOT_STATE_BUSY_UNS = 0x00000010; const NDMP_SNAP_SNAPSHOT_STATE_DEPENDENCY_UNS = 0x00000020; struct ndmp_snap_get_snapshot_state_reply { ndmp_snap_error error; u_long unsupported; string pathname<>; u_short used_percent; u_short total_percent; u_long date; opaque snapid[64]; u_short busy; u_short dependency; }; /* NDMP_SNAP_GET_CDR_OP_STATE */ struct ndmp_snap_get_cdr_op_state_request { ndmp_snap_message operation_type; }; /* snap_get_cdr_op_state_reply unsupported bits */ const NDMP_SNAP_GET_CDR_OP_STATE_TOTAL_FILES_UNS =0x00000001; const NDMP_SNAP_GET_CDR_OP_STATE_PROCESSED_FILES_UNS =0x00000002; const NDMP_SNAP_GET_CDR_OP_STATE_EXCEPTION_FILES_UNS =0x00000004; const NDMP_SNAP_GET_CDR_OP_STATE_DATE_UNS =0x00000008; struct ndmp_snap_get_cdr_op_state_reply { ndmp_snap_error error; u_long unsupported; ndmp_u_quad total_files; ndmp_u_quad processed_files; ndmp_u_quad exception_files; u_long date; }; /* NDMP_SNAP_GET_SNAPSHOT_PATH */ /* snap_get_snapshot path_types */ enum ndmp_snap_path_types { NDMP_SNAP_PATH_TYPE_UNCONSTRAINED = 1, NDMP_SNAP_PATH_TYPE_PARTIALLY_CONSTRAINED = 2, NDMP_SNAP_PATH_TYPE_FULLY_CONSTRAINED = 3 }; struct ndmp_snap_get_snapshot_path_request { string pathname<>; }; struct ndmp_snap_get_snapshot_path_reply { ndmp_snap_error error; u_short max_snapshots; ndmp_snap_path_types path_type; string snappath<>; }; /* NDMP_SNAP_SET_RESERVE */ struct ndmp_snap_set_reserve_request { string pathame<>; u_short percent; }; struct ndmp_snap_set_reserve_reply { ndmp_snap_error error; }; /* NDMP_SNAP_GET_RESERVE_INFO */ struct ndmp_snap_get_reserve_info_request { string pathname<>; }; struct ndmp_snap_get_reserve_info_reply { ndmp_snap_error error; ndmp_u_quad kb; u_short percent; }; /* NDMP_SNAP_SET_SCHEDULE */ enum ndmp_snap_days { NDMP_SNAP_SCHED_CREATE_NA = 0, NDMP_SNAP_SCHED_CREATE_SUNDAY = 1, NDMP_SNAP_SCHED_CREATE_MONDAY = 2, NDMP_SNAP_SCHED_CREATE_TUESDAY = 3, NDMP_SNAP_SCHED_CREATE_WEDNESDAY = 4, NDMP_SNAP_SCHED_CREATE_THURSDAY = 5, NDMP_SNAP_SCHED_CREATE_FRIDAY = 6, NDMP_SNAP_SCHED_CREATE_SATURDAY = 7 }; struct ndmp_snap_set_schedule_request { string pathname<>; u_short week; u_short day; u_short hour; u_short hourlist<>; ndmp_snap_days day_of_week; u_short time_of_day; string snappath<>; }; struct ndmp_snap_set_schedule_reply { ndmp_snap_error error; }; /* NDMP_SNAP_GET_SCHEDULE_INFO */ struct ndmp_snap_get_schedule_info_request { string pathname<>; }; struct ndmp_snap_get_schedule_info_reply { ndmp_snap_error error; u_short week; u_short day; u_short hour; u_short hourlist<>; ndmp_snap_days day_of_week; u_short time_of_day; string snappath<>; }; /* NDMP SNAP DIR_LIST REQUEST FLAGS BITMASK BITS */ const NDMP_SNAP_DIR_LIST_ABORT_FLAG = 0x00000001; /* NDMP SNAP DIR_LIST REPLY STATUS BITMASK BITS */ const NDMP_SNAP_DIR_LIST_MORE_STATUS = 0x00000001; /* NDMP_SNAP_DIR_LIST */ /* NDMP SNAP DIR LIST NODE BITMASK BITS */ const NDMP_SNAP_DIR_LIST_NODE_PRIMAL = 0x00000001; const NDMP_SNAP_DIR_LIST_NODE_VOLUME = 0x00000002; const NDMP_SNAP_DIR_LIST_NODE_SUBVOLUME = 0x00000004; const NDMP_SNAP_DIR_LIST_NODE_DRIVE = 0x00000008; const NDMP_SNAP_DIR_LIST_NODE_SNAPSHOT = 0x00000010; const NDMP_SNAP_DIR_LIST_NODE_SNAPSHOT_ALLOWED = 0x00010000; enum ndmp_fs_type { NDMP_FS_UNIX = 0, NDMP_FS_NT = 1, NDMP_FS_OTHER = 2 }; typedef string ndmp_path<>; struct ndmp_nt_path { ndmp_path nt_path; ndmp_path dos_path; }; union ndmp_file_name switch (ndmp_fs_type fs_type) { case NDMP_FS_UNIX: ndmp_path unix_name; case NDMP_FS_NT: ndmp_nt_path nt_name; default: ndmp_path other_name; }; enum ndmp_file_type { NDMP_FILE_DIR = 0, NDMP_FILE_FIFO = 1, NDMP_FILE_CSPEC = 2, NDMP_FILE_BSPEC = 3, NDMP_FILE_REG = 4, NDMP_FILE_SLINK = 5, NDMP_FILE_SOCK = 6, NDMP_FILE_REGISTRY = 7, NDMP_FILE_OTHER = 8 }; const NDMP_FILE_STAT_ATIME_UNS = 0x00000001; const NDMP_FILE_STAT_CTIME_UNS = 0x00000002; const NDMP_FILE_STAT_GROUP_UNS = 0x00000004; struct ndmp_file_stat { u_long unsupported; ndmp_fs_type fs_type; ndmp_file_type ftype; u_long mtime; u_long atime; u_long ctime; u_long owner; u_long group; u_long fattr; ndmp_u_quad size; u_long links; }; struct ndmp_file { ndmp_file_name name<>; ndmp_file_stat stat<>; ndmp_u_quad node; ndmp_u_quad fh_info; }; struct ndmp_snap_dir_list_request { string pathname<>; u_long flags; u_long max_entries; }; struct ndmp_snap_dir_list_reply { ndmp_snap_error error; ndmp_file dir_list<>; u_long status; }; enum ndmp_snap_end_reason { NDMP_SNAP_END_REASON_NA = 0, NDMP_SNAP_END_REASON_SUCCESS = 1, NDMP_SNAP_END_REASON_EXCEPTIONS = 2, NDMP_SNAP_END_REASON_FAILURE = 3, NDMP_SNAP_END_REASON_INTERNAL_ERROR = 4 }; /* NDMP_SNAP_NOTIFY_CREATE_END */ struct ndmp_snap_notify_create_end_post { ndmp_snap_end_reason reason; ndmp_snap_error error; opaque snapid[64]; }; /* NDMP_SNAP_NOTIFY_DELETE_END */ struct ndmp_snap_notify_delete_end_post { ndmp_snap_end_reason reason; ndmp_snap_error error; }; /* NDMP_SNAP_NOTIFY_RECOVER_END */ struct ndmp_snap_notify_recover_end_post { ndmp_snap_end_reason reason; ndmp_snap_error error; CONFIDENTIALITY NOTICE: The contents of this email are confidential and for the exclusive use of the intended recipient. If you receive this email in error, please delete it from your system immediately and notify us either by email, telephone or fax. You should not copy, forward, or otherwise disclose the content of the email.
- References:
- Prev by Date: Re: [Wireshark-dev] DISSECTOR_SUPPORT_SRC in another directory in Windows
- Next by Date: Re: [Wireshark-dev] Pidl patch for ABSOLUTE_TIMEs
- Previous by thread: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support
- Next by thread: [Wireshark-dev] Pidl patch for ABSOLUTE_TIMEs
- Index(es):