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
- Follow-Ups:
- Re: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support
- From: Maynard, Chris
- Re: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support
- Prev by Date: [Wireshark-dev] LTE S1 decode bug?
- Next by Date: [Wireshark-dev] buildbot failure in Wireshark (development) on Windows-XP-x86
- Previous by thread: Re: [Wireshark-dev] LTE S1 decode bug?
- Next by thread: Re: [Wireshark-dev] NDMP V4 and SnapShot Management Extensions dissector support
- Index(es):