Wireshark mailing list archives
NDMP V4 and SnapShot Management Extensions dissector support
From: "Jesse Lala" <jessel () bakbone com>
Date: Fri, 23 Apr 2010 10:58:43 -0700
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;
Attachment:
snapshot_managementv4.trc
Description: snapshot_managementv4.trc
___________________________________________________________________________ Sent via: Wireshark-dev mailing list <wireshark-dev () wireshark org> Archives: http://www.wireshark.org/lists/wireshark-dev Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev mailto:wireshark-dev-request () wireshark org?subject=unsubscribe
Current thread:
- NDMP V4 and SnapShot Management Extensions dissector support Jesse Lala (Apr 24)
- Re: NDMP V4 and SnapShot Management Extensions dissector support Maynard, Chris (Apr 25)