summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGuy Harris <guy@alum.mit.edu>2018-06-22 17:19:18 -0700
committerGuy Harris <guy@alum.mit.edu>2018-06-22 17:19:18 -0700
commit19671cc62f08c8b13933cf7e1293fa3bd21b34db (patch)
treeae73c29d97722468197fae18c5810e34a9a1fcb3
parent279bd14fc59ef9d84f350c3df12d37de6495662d (diff)
downloadtcpdump-19671cc62f08c8b13933cf7e1293fa3bd21b34db.tar.gz
Use nd_uint types for structures used to overlay packets.
-rw-r--r--nfs.h146
-rw-r--r--print-nfs.c144
2 files changed, 149 insertions, 141 deletions
diff --git a/nfs.h b/nfs.h
index 2e55569d..269a0384 100644
--- a/nfs.h
+++ b/nfs.h
@@ -118,7 +118,6 @@
#define NFSX_V3FHMAX 64 /* max. allowed by protocol */
#define NFSX_V3FATTR 84
#define NFSX_V3SATTR 60 /* max. all fields filled in */
-#define NFSX_V3SRVSATTR (sizeof (struct nfsv3_sattr))
#define NFSX_V3POSTOPATTR (NFSX_V3FATTR + NFSX_UNSIGNED)
#define NFSX_V3WCCDATA (NFSX_V3POSTOPATTR + 8 * NFSX_UNSIGNED)
#define NFSX_V3COOKIEVERF 8
@@ -139,7 +138,6 @@
NFSX_V2FATTR)
#define NFSX_WCCDATA(v3) ((v3) ? NFSX_V3WCCDATA : 0)
#define NFSX_WCCORFATTR(v3) ((v3) ? NFSX_V3WCCDATA : NFSX_V2FATTR)
-#define NFSX_SATTR(v3) ((v3) ? NFSX_V3SATTR : NFSX_V2SATTR)
#define NFSX_COOKIEVERF(v3) ((v3) ? NFSX_V3COOKIEVERF : 0)
#define NFSX_WRITEVERF(v3) ((v3) ? NFSX_V3WRITEVERF : 0)
#define NFSX_READDIR(v3) ((v3) ? (5 * NFSX_UNSIGNED) : \
@@ -274,14 +272,14 @@ union nfsfh {
typedef union nfsfh nfsfh_t;
struct nfsv2_time {
- uint32_t nfsv2_sec;
- uint32_t nfsv2_usec;
+ nd_uint32_t nfsv2_sec;
+ nd_uint32_t nfsv2_usec;
};
typedef struct nfsv2_time nfstime2;
struct nfsv3_time {
- uint32_t nfsv3_sec;
- uint32_t nfsv3_nsec;
+ nd_uint32_t nfsv3_sec;
+ nd_uint32_t nfsv3_nsec;
};
typedef struct nfsv3_time nfstime3;
@@ -290,7 +288,7 @@ typedef struct nfsv3_time nfstime3;
* protocol and to facilitate xdr conversion.
*/
struct nfs_uquad {
- uint32_t nfsuquad[2];
+ nd_uint32_t nfsuquad[2];
};
typedef struct nfs_uquad nfsuint64;
@@ -298,8 +296,8 @@ typedef struct nfs_uquad nfsuint64;
* NFS Version 3 special file number.
*/
struct nfsv3_spec {
- uint32_t specdata1;
- uint32_t specdata2;
+ nd_uint32_t specdata1;
+ nd_uint32_t specdata2;
};
typedef struct nfsv3_spec nfsv3spec;
@@ -313,32 +311,32 @@ typedef struct nfsv3_spec nfsv3spec;
* NFSX_FATTR(v3) macro.
*/
struct nfs_fattr {
- uint32_t fa_type;
- uint32_t fa_mode;
- uint32_t fa_nlink;
- uint32_t fa_uid;
- uint32_t fa_gid;
+ nd_uint32_t fa_type;
+ nd_uint32_t fa_mode;
+ nd_uint32_t fa_nlink;
+ nd_uint32_t fa_uid;
+ nd_uint32_t fa_gid;
union {
struct {
- uint32_t nfsv2fa_size;
- uint32_t nfsv2fa_blocksize;
- uint32_t nfsv2fa_rdev;
- uint32_t nfsv2fa_blocks;
- uint32_t nfsv2fa_fsid;
- uint32_t nfsv2fa_fileid;
- nfstime2 nfsv2fa_atime;
- nfstime2 nfsv2fa_mtime;
- nfstime2 nfsv2fa_ctime;
+ nd_uint32_t nfsv2fa_size;
+ nd_uint32_t nfsv2fa_blocksize;
+ nd_uint32_t nfsv2fa_rdev;
+ nd_uint32_t nfsv2fa_blocks;
+ nd_uint32_t nfsv2fa_fsid;
+ nd_uint32_t nfsv2fa_fileid;
+ nfstime2 nfsv2fa_atime;
+ nfstime2 nfsv2fa_mtime;
+ nfstime2 nfsv2fa_ctime;
} fa_nfsv2;
struct {
- nfsuint64 nfsv3fa_size;
- nfsuint64 nfsv3fa_used;
- nfsv3spec nfsv3fa_rdev;
- nfsuint64 nfsv3fa_fsid;
- nfsuint64 nfsv3fa_fileid;
- nfstime3 nfsv3fa_atime;
- nfstime3 nfsv3fa_mtime;
- nfstime3 nfsv3fa_ctime;
+ nd_uint64_t nfsv3fa_size;
+ nd_uint64_t nfsv3fa_used;
+ nfsv3spec nfsv3fa_rdev;
+ nd_uint64_t nfsv3fa_fsid;
+ nd_uint64_t nfsv3fa_fileid;
+ nfstime3 nfsv3fa_atime;
+ nfstime3 nfsv3fa_mtime;
+ nfstime3 nfsv3fa_ctime;
} fa_nfsv3;
} fa_un;
};
@@ -363,49 +361,31 @@ struct nfs_fattr {
#define fa3_ctime fa_un.fa_nfsv3.nfsv3fa_ctime
struct nfsv2_sattr {
- uint32_t sa_mode;
- uint32_t sa_uid;
- uint32_t sa_gid;
- uint32_t sa_size;
- nfstime2 sa_atime;
- nfstime2 sa_mtime;
-};
-
-/*
- * NFS Version 3 sattr structure for the new node creation case.
- */
-struct nfsv3_sattr {
- uint32_t sa_modeset;
- uint32_t sa_mode;
- uint32_t sa_uidset;
- uint32_t sa_uid;
- uint32_t sa_gidset;
- uint32_t sa_gid;
- uint32_t sa_sizeset;
- uint32_t sa_size;
- uint32_t sa_atimetype;
- nfstime3 sa_atime;
- uint32_t sa_mtimetype;
- nfstime3 sa_mtime;
+ nd_uint32_t sa_mode;
+ nd_uint32_t sa_uid;
+ nd_uint32_t sa_gid;
+ nd_uint32_t sa_size;
+ nfstime2 sa_atime;
+ nfstime2 sa_mtime;
};
struct nfs_statfs {
union {
struct {
- uint32_t nfsv2sf_tsize;
- uint32_t nfsv2sf_bsize;
- uint32_t nfsv2sf_blocks;
- uint32_t nfsv2sf_bfree;
- uint32_t nfsv2sf_bavail;
+ nd_uint32_t nfsv2sf_tsize;
+ nd_uint32_t nfsv2sf_bsize;
+ nd_uint32_t nfsv2sf_blocks;
+ nd_uint32_t nfsv2sf_bfree;
+ nd_uint32_t nfsv2sf_bavail;
} sf_nfsv2;
struct {
- nfsuint64 nfsv3sf_tbytes;
- nfsuint64 nfsv3sf_fbytes;
- nfsuint64 nfsv3sf_abytes;
- nfsuint64 nfsv3sf_tfiles;
- nfsuint64 nfsv3sf_ffiles;
- nfsuint64 nfsv3sf_afiles;
- uint32_t nfsv3sf_invarsec;
+ nd_uint64_t nfsv3sf_tbytes;
+ nd_uint64_t nfsv3sf_fbytes;
+ nd_uint64_t nfsv3sf_abytes;
+ nd_uint64_t nfsv3sf_tfiles;
+ nd_uint64_t nfsv3sf_ffiles;
+ nd_uint64_t nfsv3sf_afiles;
+ nd_uint32_t nfsv3sf_invarsec;
} sf_nfsv3;
} sf_un;
};
@@ -424,23 +404,23 @@ struct nfs_statfs {
#define sf_invarsec sf_un.sf_nfsv3.nfsv3sf_invarsec
struct nfsv3_fsinfo {
- uint32_t fs_rtmax;
- uint32_t fs_rtpref;
- uint32_t fs_rtmult;
- uint32_t fs_wtmax;
- uint32_t fs_wtpref;
- uint32_t fs_wtmult;
- uint32_t fs_dtpref;
- nfsuint64 fs_maxfilesize;
- nfstime3 fs_timedelta;
- uint32_t fs_properties;
+ nd_uint32_t fs_rtmax;
+ nd_uint32_t fs_rtpref;
+ nd_uint32_t fs_rtmult;
+ nd_uint32_t fs_wtmax;
+ nd_uint32_t fs_wtpref;
+ nd_uint32_t fs_wtmult;
+ nd_uint32_t fs_dtpref;
+ nd_uint64_t fs_maxfilesize;
+ nfstime3 fs_timedelta;
+ nd_uint32_t fs_properties;
};
struct nfsv3_pathconf {
- uint32_t pc_linkmax;
- uint32_t pc_namemax;
- uint32_t pc_notrunc;
- uint32_t pc_chownrestricted;
- uint32_t pc_caseinsensitive;
- uint32_t pc_casepreserving;
+ nd_uint32_t pc_linkmax;
+ nd_uint32_t pc_namemax;
+ nd_uint32_t pc_notrunc;
+ nd_uint32_t pc_chownrestricted;
+ nd_uint32_t pc_caseinsensitive;
+ nd_uint32_t pc_casepreserving;
};
diff --git a/print-nfs.c b/print-nfs.c
index 9b5d459b..92c87fc4 100644
--- a/print-nfs.c
+++ b/print-nfs.c
@@ -228,6 +228,34 @@ print_nfsaddr(netdissect_options *ndo,
ND_PRINT("%s.%s > %s.%s: ", srcaddr, s, dstaddr, d);
}
+/*
+ * NFS Version 3 sattr3 structure for the new node creation case.
+ * This does not have a fixed layout on the network, so this
+ * structure does not correspond to the layout of the data on
+ * the network; it's used to store the data when the sattr3
+ * is parsed for use when it's later printed.
+ */
+struct nfsv3_sattr {
+ uint32_t sa_modeset;
+ uint32_t sa_mode;
+ uint32_t sa_uidset;
+ uint32_t sa_uid;
+ uint32_t sa_gidset;
+ uint32_t sa_gid;
+ uint32_t sa_sizeset;
+ uint32_t sa_size;
+ uint32_t sa_atimetype;
+ struct {
+ uint32_t nfsv3_sec;
+ uint32_t nfsv3_nsec;
+ } sa_atime;
+ uint32_t sa_mtimetype;
+ struct {
+ uint32_t nfsv3_sec;
+ uint32_t nfsv3_nsec;
+ } sa_mtime;
+};
+
static const uint32_t *
parse_sattr3(netdissect_options *ndo,
const uint32_t *dp, struct nfsv3_sattr *sa3)
@@ -1113,7 +1141,7 @@ parsefattr(netdissect_options *ndo,
const struct nfs_fattr *fap;
fap = (const struct nfs_fattr *)dp;
- ND_TCHECK_4(&fap->fa_gid);
+ ND_TCHECK_4(fap->fa_gid);
if (verbose) {
/*
* XXX - UIDs and GIDs are unsigned in NFS and in
@@ -1123,17 +1151,17 @@ parsefattr(netdissect_options *ndo,
*/
ND_PRINT(" %s %o ids %d/%d",
tok2str(type2str, "unk-ft %u ",
- EXTRACT_BE_U_4(&fap->fa_type)),
- EXTRACT_BE_U_4(&fap->fa_mode),
- EXTRACT_BE_S_4(&fap->fa_uid),
- EXTRACT_BE_S_4(&fap->fa_gid));
+ EXTRACT_BE_U_4(fap->fa_type)),
+ EXTRACT_BE_U_4(fap->fa_mode),
+ EXTRACT_BE_S_4(fap->fa_uid),
+ EXTRACT_BE_S_4(fap->fa_gid));
if (v3) {
- ND_TCHECK_8(&fap->fa3_size);
+ ND_TCHECK_8(fap->fa3_size);
ND_PRINT(" sz %" PRIu64,
- EXTRACT_BE_U_8((const uint32_t *)&fap->fa3_size));
+ EXTRACT_BE_U_8(fap->fa3_size));
} else {
- ND_TCHECK_4(&fap->fa2_size);
- ND_PRINT(" sz %u", EXTRACT_BE_U_4(&fap->fa2_size));
+ ND_TCHECK_4(fap->fa2_size);
+ ND_PRINT(" sz %u", EXTRACT_BE_U_4(fap->fa2_size));
}
}
/* print lots more stuff */
@@ -1141,38 +1169,38 @@ parsefattr(netdissect_options *ndo,
if (v3) {
ND_TCHECK_8(&fap->fa3_ctime);
ND_PRINT(" nlink %u rdev %u/%u",
- EXTRACT_BE_U_4(&fap->fa_nlink),
- EXTRACT_BE_U_4(&fap->fa3_rdev.specdata1),
- EXTRACT_BE_U_4(&fap->fa3_rdev.specdata2));
+ EXTRACT_BE_U_4(fap->fa_nlink),
+ EXTRACT_BE_U_4(fap->fa3_rdev.specdata1),
+ EXTRACT_BE_U_4(fap->fa3_rdev.specdata2));
ND_PRINT(" fsid %" PRIx64,
- EXTRACT_BE_U_8((const uint32_t *)&fap->fa3_fsid));
+ EXTRACT_BE_U_8(fap->fa3_fsid));
ND_PRINT(" fileid %" PRIx64,
- EXTRACT_BE_U_8((const uint32_t *)&fap->fa3_fileid));
+ EXTRACT_BE_U_8(fap->fa3_fileid));
ND_PRINT(" a/m/ctime %u.%06u",
- EXTRACT_BE_U_4(&fap->fa3_atime.nfsv3_sec),
- EXTRACT_BE_U_4(&fap->fa3_atime.nfsv3_nsec));
+ EXTRACT_BE_U_4(fap->fa3_atime.nfsv3_sec),
+ EXTRACT_BE_U_4(fap->fa3_atime.nfsv3_nsec));
ND_PRINT(" %u.%06u",
- EXTRACT_BE_U_4(&fap->fa3_mtime.nfsv3_sec),
- EXTRACT_BE_U_4(&fap->fa3_mtime.nfsv3_nsec));
+ EXTRACT_BE_U_4(fap->fa3_mtime.nfsv3_sec),
+ EXTRACT_BE_U_4(fap->fa3_mtime.nfsv3_nsec));
ND_PRINT(" %u.%06u",
- EXTRACT_BE_U_4(&fap->fa3_ctime.nfsv3_sec),
- EXTRACT_BE_U_4(&fap->fa3_ctime.nfsv3_nsec));
+ EXTRACT_BE_U_4(fap->fa3_ctime.nfsv3_sec),
+ EXTRACT_BE_U_4(fap->fa3_ctime.nfsv3_nsec));
} else {
ND_TCHECK_8(&fap->fa2_ctime);
ND_PRINT(" nlink %u rdev 0x%x fsid 0x%x nodeid 0x%x a/m/ctime",
- EXTRACT_BE_U_4(&fap->fa_nlink),
- EXTRACT_BE_U_4(&fap->fa2_rdev),
- EXTRACT_BE_U_4(&fap->fa2_fsid),
- EXTRACT_BE_U_4(&fap->fa2_fileid));
+ EXTRACT_BE_U_4(fap->fa_nlink),
+ EXTRACT_BE_U_4(fap->fa2_rdev),
+ EXTRACT_BE_U_4(fap->fa2_fsid),
+ EXTRACT_BE_U_4(fap->fa2_fileid));
ND_PRINT(" %u.%06u",
- EXTRACT_BE_U_4(&fap->fa2_atime.nfsv2_sec),
- EXTRACT_BE_U_4(&fap->fa2_atime.nfsv2_usec));
+ EXTRACT_BE_U_4(fap->fa2_atime.nfsv2_sec),
+ EXTRACT_BE_U_4(fap->fa2_atime.nfsv2_usec));
ND_PRINT(" %u.%06u",
- EXTRACT_BE_U_4(&fap->fa2_mtime.nfsv2_sec),
- EXTRACT_BE_U_4(&fap->fa2_mtime.nfsv2_usec));
+ EXTRACT_BE_U_4(fap->fa2_mtime.nfsv2_sec),
+ EXTRACT_BE_U_4(fap->fa2_mtime.nfsv2_usec));
ND_PRINT(" %u.%06u",
- EXTRACT_BE_U_4(&fap->fa2_ctime.nfsv2_sec),
- EXTRACT_BE_U_4(&fap->fa2_ctime.nfsv2_usec));
+ EXTRACT_BE_U_4(fap->fa2_ctime.nfsv2_sec),
+ EXTRACT_BE_U_4(fap->fa2_ctime.nfsv2_usec));
}
}
return ((const uint32_t *)((const unsigned char *)dp +
@@ -1260,23 +1288,23 @@ parsestatfs(netdissect_options *ndo,
if (v3) {
ND_PRINT(" tbytes %" PRIu64 " fbytes %" PRIu64 " abytes %" PRIu64,
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_tbytes),
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_fbytes),
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_abytes));
+ EXTRACT_BE_U_8(sfsp->sf_tbytes),
+ EXTRACT_BE_U_8(sfsp->sf_fbytes),
+ EXTRACT_BE_U_8(sfsp->sf_abytes));
if (ndo->ndo_vflag) {
ND_PRINT(" tfiles %" PRIu64 " ffiles %" PRIu64 " afiles %" PRIu64 " invar %u",
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_tfiles),
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_ffiles),
- EXTRACT_BE_U_8((const uint32_t *)&sfsp->sf_afiles),
- EXTRACT_BE_U_4(&sfsp->sf_invarsec));
+ EXTRACT_BE_U_8(sfsp->sf_tfiles),
+ EXTRACT_BE_U_8(sfsp->sf_ffiles),
+ EXTRACT_BE_U_8(sfsp->sf_afiles),
+ EXTRACT_BE_U_4(sfsp->sf_invarsec));
}
} else {
ND_PRINT(" tsize %u bsize %u blocks %u bfree %u bavail %u",
- EXTRACT_BE_U_4(&sfsp->sf_tsize),
- EXTRACT_BE_U_4(&sfsp->sf_bsize),
- EXTRACT_BE_U_4(&sfsp->sf_blocks),
- EXTRACT_BE_U_4(&sfsp->sf_bfree),
- EXTRACT_BE_U_4(&sfsp->sf_bavail));
+ EXTRACT_BE_U_4(sfsp->sf_tsize),
+ EXTRACT_BE_U_4(sfsp->sf_bsize),
+ EXTRACT_BE_U_4(sfsp->sf_blocks),
+ EXTRACT_BE_U_4(sfsp->sf_bfree),
+ EXTRACT_BE_U_4(sfsp->sf_bavail));
}
return (1);
@@ -1466,19 +1494,19 @@ parsefsinfo(netdissect_options *ndo,
sfp = (const struct nfsv3_fsinfo *)dp;
ND_TCHECK_SIZE(sfp);
ND_PRINT(" rtmax %u rtpref %u wtmax %u wtpref %u dtpref %u",
- EXTRACT_BE_U_4(&sfp->fs_rtmax),
- EXTRACT_BE_U_4(&sfp->fs_rtpref),
- EXTRACT_BE_U_4(&sfp->fs_wtmax),
- EXTRACT_BE_U_4(&sfp->fs_wtpref),
- EXTRACT_BE_U_4(&sfp->fs_dtpref));
+ EXTRACT_BE_U_4(sfp->fs_rtmax),
+ EXTRACT_BE_U_4(sfp->fs_rtpref),
+ EXTRACT_BE_U_4(sfp->fs_wtmax),
+ EXTRACT_BE_U_4(sfp->fs_wtpref),
+ EXTRACT_BE_U_4(sfp->fs_dtpref));
if (ndo->ndo_vflag) {
ND_PRINT(" rtmult %u wtmult %u maxfsz %" PRIu64,
- EXTRACT_BE_U_4(&sfp->fs_rtmult),
- EXTRACT_BE_U_4(&sfp->fs_wtmult),
- EXTRACT_BE_U_8((const uint32_t *)&sfp->fs_maxfilesize));
+ EXTRACT_BE_U_4(sfp->fs_rtmult),
+ EXTRACT_BE_U_4(sfp->fs_wtmult),
+ EXTRACT_BE_U_8(sfp->fs_maxfilesize));
ND_PRINT(" delta %u.%06u ",
- EXTRACT_BE_U_4(&sfp->fs_timedelta.nfsv3_sec),
- EXTRACT_BE_U_4(&sfp->fs_timedelta.nfsv3_nsec));
+ EXTRACT_BE_U_4(sfp->fs_timedelta.nfsv3_sec),
+ EXTRACT_BE_U_4(sfp->fs_timedelta.nfsv3_nsec));
}
return (1);
trunc:
@@ -1505,12 +1533,12 @@ parsepathconf(netdissect_options *ndo,
ND_TCHECK_SIZE(spp);
ND_PRINT(" linkmax %u namemax %u %s %s %s %s",
- EXTRACT_BE_U_4(&spp->pc_linkmax),
- EXTRACT_BE_U_4(&spp->pc_namemax),
- EXTRACT_BE_U_4(&spp->pc_notrunc) ? "notrunc" : "",
- EXTRACT_BE_U_4(&spp->pc_chownrestricted) ? "chownres" : "",
- EXTRACT_BE_U_4(&spp->pc_caseinsensitive) ? "igncase" : "",
- EXTRACT_BE_U_4(&spp->pc_casepreserving) ? "keepcase" : "");
+ EXTRACT_BE_U_4(spp->pc_linkmax),
+ EXTRACT_BE_U_4(spp->pc_namemax),
+ EXTRACT_BE_U_4(spp->pc_notrunc) ? "notrunc" : "",
+ EXTRACT_BE_U_4(spp->pc_chownrestricted) ? "chownres" : "",
+ EXTRACT_BE_U_4(spp->pc_caseinsensitive) ? "igncase" : "",
+ EXTRACT_BE_U_4(spp->pc_casepreserving) ? "keepcase" : "");
return (1);
trunc:
return (0);