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):