- if ((dp = parsereq(ndo, rp, length)) != NULL &&
- (dp = parsefh(ndo, dp, v3)) != NULL) {
- ND_TCHECK(dp[0]);
- access_flags = EXTRACT_32BITS(&dp[0]);
- if (access_flags & ~NFSV3ACCESS_FULL) {
- /* NFSV3ACCESS definitions aren't up to date */
- ND_PRINT((ndo, " %04x", access_flags));
- } else if ((access_flags & NFSV3ACCESS_FULL) == NFSV3ACCESS_FULL) {
- ND_PRINT((ndo, " NFS_ACCESS_FULL"));
- } else {
- char separator = ' ';
- if (access_flags & NFSV3ACCESS_READ) {
- ND_PRINT((ndo, " NFS_ACCESS_READ"));
- separator = '|';
- }
- if (access_flags & NFSV3ACCESS_LOOKUP) {
- ND_PRINT((ndo, "%cNFS_ACCESS_LOOKUP", separator));
- separator = '|';
- }
- if (access_flags & NFSV3ACCESS_MODIFY) {
- ND_PRINT((ndo, "%cNFS_ACCESS_MODIFY", separator));
- separator = '|';
- }
- if (access_flags & NFSV3ACCESS_EXTEND) {
- ND_PRINT((ndo, "%cNFS_ACCESS_EXTEND", separator));
- separator = '|';
- }
- if (access_flags & NFSV3ACCESS_DELETE) {
- ND_PRINT((ndo, "%cNFS_ACCESS_DELETE", separator));
- separator = '|';
- }
- if (access_flags & NFSV3ACCESS_EXECUTE)
- ND_PRINT((ndo, "%cNFS_ACCESS_EXECUTE", separator));
+ dp = parsereq(ndo, rp, length);
+ if (dp == NULL)
+ goto trunc;
+ dp = parsefh(ndo, dp, v3);
+ if (dp == NULL)
+ goto trunc;
+ access_flags = GET_BE_U_4(dp);
+ if (access_flags & ~NFSV3ACCESS_FULL) {
+ /* NFSV3ACCESS definitions aren't up to date */
+ ND_PRINT(" %04x", access_flags);
+ } else if ((access_flags & NFSV3ACCESS_FULL) == NFSV3ACCESS_FULL) {
+ ND_PRINT(" NFS_ACCESS_FULL");
+ } else {
+ char separator = ' ';
+ if (access_flags & NFSV3ACCESS_READ) {
+ ND_PRINT(" NFS_ACCESS_READ");
+ separator = '|';