/*
* Copyright (c) 1993, 1994 Jeffrey C. Mogul, Digital Equipment Corporation,
* Western Research Laboratory. All rights reserved.
* Copyright (c) 2001 Compaq Computer Corporation. All rights reserved.
*
*  Permission to use, copy, and modify this software and its
*  documentation is hereby granted only under the following terms and
*  conditions.  Both the above copyright notice and this permission
*  notice must appear in all copies of the software, derivative works
*  or modified versions, and any portions thereof, and both notices
*  must appear in supporting documentation.
*
*  Redistribution and use in source and binary forms, with or without
*  modification, are permitted provided that the following conditions
*  are met:
*    1. Redistributions of source code must retain the above copyright
*    notice, this list of conditions and the following disclaimer.
*    2. Redistributions in binary form must reproduce the above copyright
*    notice, this list of conditions and the following disclaimer in
*    the documentation and/or other materials provided with the
*    distribution.
*
*  THE SOFTWARE IS PROVIDED "AS IS" AND COMPAQ COMPUTER CORPORATION
*  DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
*  ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.   IN NO
*  EVENT SHALL COMPAQ COMPUTER CORPORATION BE LIABLE FOR ANY
*  SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
*  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
*  AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
*  OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
*  SOFTWARE.
*/

/*
* nfsfh.h - NFS file handle definitions (for portable use)
*
* Jeffrey C. Mogul
* Digital Equipment Corporation
* Western Research Laboratory
*/

/*
* Internal representation of dev_t, because different NFS servers
* that we might be spying upon use different external representations.
*/
typedef struct {
       uint32_t Minor; /* upper case to avoid clashing with macro names */
       uint32_t Major;
} my_devt;

#define dev_eq(a,b)     ((a.Minor == b.Minor) && (a.Major == b.Major))

/*
* Many file servers now use a large file system ID.  This is
* our internal representation of that.
*/
typedef struct {
       my_devt Fsid_dev;               /* XXX avoid name conflict with AIX */
       char Opaque_Handle[2 * 32 + 1];
       uint32_t fsid_code;
} my_fsid;

#define fsid_eq(a,b)    ((a.fsid_code == b.fsid_code) &&\
                        dev_eq(a.Fsid_dev, b.Fsid_dev))

extern void Parse_fh(netdissect_options *, const unsigned char *, u_int, my_fsid *, uint32_t *, const char **, const char **, int);